Skip to content

Commit 2b04770

Browse files
committed
feat: added query preset sharing
added presests to previews in readme increased version
1 parent 0fcddb5 commit 2b04770

File tree

2 files changed

+74
-9
lines changed

2 files changed

+74
-9
lines changed

README.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,17 @@ This is a highly customizable animated Matrix wallpaper for Wallpaper Engine (We
1212

1313
## Preview [(Web Demo)](https://ipdotsetaf.github.io/NeoMatrix/)
1414

15+
Click on each preview to watch live
16+
1517
<p>
16-
<img src="preview.gif" width=270px height=270px/>
17-
<img src="images/preview2.gif" width=270px height=270px/>
18-
<img src="images/preview3.gif" width=270px height=270px/>
18+
<a href="https://ipdotsetaf.github.io/NeoMatrix/?preset=eyJjb250cm9sbGVycyI6e30sImZvbGRlcnMiOnsiUmFpbiI6eyJjb250cm9sbGVycyI6eyJNYXRyaXggU3BlZWQiOjI0LCJUcmFpbCBMZW5ndGgiOjAuODYsIkRyb3AgQ291bnQvQ29sdW1uIjoxLCJJbml0aWFsIEFuaW1hdGlvbiI6IjEifSwiZm9sZGVycyI6e319LCJDb2xvciI6eyJjb250cm9sbGVycyI6eyJDb2xvciBNb2RlIjoiMiIsIk1hdHJpeCBDb2xvciI6IiMwMGZmMDAiLCJDb2xvciBBbmltYXRpb24gU3BlZWQiOjAuNSwiSGlnaGxpZ2h0IEZpcnN0IENoYXJhY3RlciI6dHJ1ZX0sImZvbGRlcnMiOnt9fSwiQ2hhcmFjdGVycyI6eyJjb250cm9sbGVycyI6eyJDaGFyIHNldCI6IjQiLCJDdXN0b20gQ2hhciBTZXQiOiIwMTIzNDU2Nzg5QUJDREVGIn0sImZvbGRlcnMiOnt9fSwiRm9udCI6eyJjb250cm9sbGVycyI6eyJGb250IFNpemUiOjE1LCJGb250IjoiMSIsIkN1c3RvbSBGb250IjoibW9ub3NwYWNlIn0sImZvbGRlcnMiOnt9fSwiQXVkaW8gKG5vdCBhdmFpbGFibGUgaW4gd2ViIHZlcnNpb24pIjp7ImNvbnRyb2xsZXJzIjp7fSwiZm9sZGVycyI6e319LCJMb2dvIjp7ImNvbnRyb2xsZXJzIjp7IkxvZ28iOiIwIiwiQ3VzdG9tIExvZ28gVVJMIChTVkcpIjoiIiwiUHJlc2VydmUgTG9nbyBDb2xvciI6ZmFsc2UsIlNjYWxlIjoxfSwiZm9sZGVycyI6eyJQb3NpdGlvbiI6eyJjb250cm9sbGVycyI6eyJYIjowLCJZIjowfSwiZm9sZGVycyI6e319fX0sIkNsb2NrIjp7ImNvbnRyb2xsZXJzIjp7IkNsb2NrIjoiMCIsIjI0IEhvdXIgZm9ybWF0Ijp0cnVlLCJEYXktbGlnaHQgU2F2aW5nIjowLCJTY2FsZSI6MX0sImZvbGRlcnMiOnsiUG9zaXRpb24iOnsiY29udHJvbGxlcnMiOnsiWCI6MCwiWSI6MH0sImZvbGRlcnMiOnt9fX19LCJNZXNzYWdlIjp7ImNvbnRyb2xsZXJzIjp7Ik1lc3NhZ2UiOiIwIiwiTWVzc2FnZSBUZXh0IjoiVEhFIE1BVFJJWCIsIlNjYWxlIjoxfSwiZm9sZGVycyI6eyJQb3NpdGlvbiI6eyJjb250cm9sbGVycyI6eyJYIjowLCJZIjowfSwiZm9sZGVycyI6e319fX0sIk90aGVyIjp7ImNvbnRyb2xsZXJzIjp7IkNvZGVzIChDb21tYSBzZXBhcmF0ZWQpIjoiVEhFIE1BVFJJWCJ9LCJmb2xkZXJzIjp7fX19fQ%3D%3D"><img src="preview.gif" width=270px height=270px/></a>
19+
<a href="https://ipdotsetaf.github.io/NeoMatrix/?preset=eyJjb250cm9sbGVycyI6e30sImZvbGRlcnMiOnsiUmFpbiI6eyJjb250cm9sbGVycyI6eyJNYXRyaXggU3BlZWQiOjI0LCJUcmFpbCBMZW5ndGgiOjAuODYsIkRyb3AgQ291bnQvQ29sdW1uIjoxLCJJbml0aWFsIEFuaW1hdGlvbiI6IjEifSwiZm9sZGVycyI6e319LCJDb2xvciI6eyJjb250cm9sbGVycyI6eyJDb2xvciBNb2RlIjoiMCIsIk1hdHJpeCBDb2xvciI6IiMwMGIzZmYiLCJDb2xvciBBbmltYXRpb24gU3BlZWQiOjAuNSwiSGlnaGxpZ2h0IEZpcnN0IENoYXJhY3RlciI6dHJ1ZX0sImZvbGRlcnMiOnt9fSwiQ2hhcmFjdGVycyI6eyJjb250cm9sbGVycyI6eyJDaGFyIHNldCI6IjQiLCJDdXN0b20gQ2hhciBTZXQiOiIwMTIzNDU2Nzg5QUJDREVGIn0sImZvbGRlcnMiOnt9fSwiRm9udCI6eyJjb250cm9sbGVycyI6eyJGb250IFNpemUiOjE1LCJGb250IjoiMSIsIkN1c3RvbSBGb250IjoibW9ub3NwYWNlIn0sImZvbGRlcnMiOnt9fSwiQXVkaW8gKG5vdCBhdmFpbGFibGUgaW4gd2ViIHZlcnNpb24pIjp7ImNvbnRyb2xsZXJzIjp7fSwiZm9sZGVycyI6e319LCJMb2dvIjp7ImNvbnRyb2xsZXJzIjp7IkxvZ28iOiIzIiwiQ3VzdG9tIExvZ28gVVJMIChTVkcpIjoiIiwiUHJlc2VydmUgTG9nbyBDb2xvciI6ZmFsc2UsIlNjYWxlIjoxLjJ9LCJmb2xkZXJzIjp7IlBvc2l0aW9uIjp7ImNvbnRyb2xsZXJzIjp7IlgiOjAsIlkiOjB9LCJmb2xkZXJzIjp7fX19fSwiQ2xvY2siOnsiY29udHJvbGxlcnMiOnsiQ2xvY2siOiIwIiwiMjQgSG91ciBmb3JtYXQiOnRydWUsIkRheS1saWdodCBTYXZpbmciOjAsIlNjYWxlIjoxfSwiZm9sZGVycyI6eyJQb3NpdGlvbiI6eyJjb250cm9sbGVycyI6eyJYIjowLCJZIjowfSwiZm9sZGVycyI6e319fX0sIk1lc3NhZ2UiOnsiY29udHJvbGxlcnMiOnsiTWVzc2FnZSI6IjAiLCJNZXNzYWdlIFRleHQiOiJUSEUgTUFUUklYIiwiU2NhbGUiOjF9LCJmb2xkZXJzIjp7IlBvc2l0aW9uIjp7ImNvbnRyb2xsZXJzIjp7IlgiOjAsIlkiOjB9LCJmb2xkZXJzIjp7fX19fSwiT3RoZXIiOnsiY29udHJvbGxlcnMiOnsiQ29kZXMgKENvbW1hIHNlcGFyYXRlZCkiOiJUSEUgTUFUUklYLEtBTEkifSwiZm9sZGVycyI6e319fX0%3D"><img src="images/preview2.gif" width=270px height=270px/></a>
20+
<a href="https://ipdotsetaf.github.io/NeoMatrix/?preset=eyJjb250cm9sbGVycyI6e30sImZvbGRlcnMiOnsiUmFpbiI6eyJjb250cm9sbGVycyI6eyJNYXRyaXggU3BlZWQiOjI0LCJUcmFpbCBMZW5ndGgiOjAuODYsIkRyb3AgQ291bnQvQ29sdW1uIjoxLCJJbml0aWFsIEFuaW1hdGlvbiI6IjEifSwiZm9sZGVycyI6e319LCJDb2xvciI6eyJjb250cm9sbGVycyI6eyJDb2xvciBNb2RlIjoiMCIsIk1hdHJpeCBDb2xvciI6IiMwMGZmMDAiLCJDb2xvciBBbmltYXRpb24gU3BlZWQiOjAuNSwiSGlnaGxpZ2h0IEZpcnN0IENoYXJhY3RlciI6dHJ1ZX0sImZvbGRlcnMiOnt9fSwiQ2hhcmFjdGVycyI6eyJjb250cm9sbGVycyI6eyJDaGFyIHNldCI6IjQiLCJDdXN0b20gQ2hhciBTZXQiOiIwMTIzNDU2Nzg5QUJDREVGIn0sImZvbGRlcnMiOnt9fSwiRm9udCI6eyJjb250cm9sbGVycyI6eyJGb250IFNpemUiOjE3LCJGb250IjoiMSIsIkN1c3RvbSBGb250IjoibW9ub3NwYWNlIn0sImZvbGRlcnMiOnt9fSwiQXVkaW8gKG5vdCBhdmFpbGFibGUgaW4gd2ViIHZlcnNpb24pIjp7ImNvbnRyb2xsZXJzIjp7fSwiZm9sZGVycyI6e319LCJMb2dvIjp7ImNvbnRyb2xsZXJzIjp7IkxvZ28iOiIwIiwiQ3VzdG9tIExvZ28gVVJMIChTVkcpIjoiIiwiUHJlc2VydmUgTG9nbyBDb2xvciI6ZmFsc2UsIlNjYWxlIjoxfSwiZm9sZGVycyI6eyJQb3NpdGlvbiI6eyJjb250cm9sbGVycyI6eyJYIjowLCJZIjowfSwiZm9sZGVycyI6e319fX0sIkNsb2NrIjp7ImNvbnRyb2xsZXJzIjp7IkNsb2NrIjoiMCIsIjI0IEhvdXIgZm9ybWF0Ijp0cnVlLCJEYXktbGlnaHQgU2F2aW5nIjowLCJTY2FsZSI6MX0sImZvbGRlcnMiOnsiUG9zaXRpb24iOnsiY29udHJvbGxlcnMiOnsiWCI6MCwiWSI6MH0sImZvbGRlcnMiOnt9fX19LCJNZXNzYWdlIjp7ImNvbnRyb2xsZXJzIjp7Ik1lc3NhZ2UiOiIwIiwiTWVzc2FnZSBUZXh0IjoiVEhFIE1BVFJJWCIsIlNjYWxlIjoxfSwiZm9sZGVycyI6eyJQb3NpdGlvbiI6eyJjb250cm9sbGVycyI6eyJYIjowLCJZIjowfSwiZm9sZGVycyI6e319fX0sIk90aGVyIjp7ImNvbnRyb2xsZXJzIjp7IkNvZGVzIChDb21tYSBzZXBhcmF0ZWQpIjoiVEhFIE1BVFJJWCJ9LCJmb2xkZXJzIjp7fX19fQ%3D%3D"><img src="images/preview3.gif" width=270px height=270px/></a>
1921
</p>
2022
<p>
21-
<img src="images/preview4.gif" width=270px height=270px/>
22-
<img src="images/preview5.gif" width=270px height=270px/>
23-
<img src="images/preview6.gif" width=270px height=270px/>
23+
<a href="https://ipdotsetaf.github.io/NeoMatrix/?preset=eyJjb250cm9sbGVycyI6e30sImZvbGRlcnMiOnsiUmFpbiI6eyJjb250cm9sbGVycyI6eyJNYXRyaXggU3BlZWQiOjI0LCJUcmFpbCBMZW5ndGgiOjAuODYsIkRyb3AgQ291bnQvQ29sdW1uIjoxLCJJbml0aWFsIEFuaW1hdGlvbiI6IjEifSwiZm9sZGVycyI6e319LCJDb2xvciI6eyJjb250cm9sbGVycyI6eyJDb2xvciBNb2RlIjoiMCIsIk1hdHJpeCBDb2xvciI6IiMwMGZmMDAiLCJDb2xvciBBbmltYXRpb24gU3BlZWQiOjAuNSwiSGlnaGxpZ2h0IEZpcnN0IENoYXJhY3RlciI6dHJ1ZX0sImZvbGRlcnMiOnt9fSwiQ2hhcmFjdGVycyI6eyJjb250cm9sbGVycyI6eyJDaGFyIHNldCI6IjMiLCJDdXN0b20gQ2hhciBTZXQiOiIwMTIzNDU2Nzg5QUJDREVGIn0sImZvbGRlcnMiOnt9fSwiRm9udCI6eyJjb250cm9sbGVycyI6eyJGb250IFNpemUiOjE1LCJGb250IjoiMyIsIkN1c3RvbSBGb250IjoibW9ub3NwYWNlIn0sImZvbGRlcnMiOnt9fSwiQXVkaW8gKG5vdCBhdmFpbGFibGUgaW4gd2ViIHZlcnNpb24pIjp7ImNvbnRyb2xsZXJzIjp7fSwiZm9sZGVycyI6e319LCJMb2dvIjp7ImNvbnRyb2xsZXJzIjp7IkxvZ28iOiI4IiwiQ3VzdG9tIExvZ28gVVJMIChTVkcpIjoiIiwiUHJlc2VydmUgTG9nbyBDb2xvciI6dHJ1ZSwiU2NhbGUiOjAuOH0sImZvbGRlcnMiOnsiUG9zaXRpb24iOnsiY29udHJvbGxlcnMiOnsiWCI6MCwiWSI6LTEzMH0sImZvbGRlcnMiOnt9fX19LCJDbG9jayI6eyJjb250cm9sbGVycyI6eyJDbG9jayI6IjMiLCIyNCBIb3VyIGZvcm1hdCI6dHJ1ZSwiRGF5LWxpZ2h0IFNhdmluZyI6MCwiU2NhbGUiOjJ9LCJmb2xkZXJzIjp7IlBvc2l0aW9uIjp7ImNvbnRyb2xsZXJzIjp7IlgiOjAsIlkiOjE0fSwiZm9sZGVycyI6e319fX0sIk1lc3NhZ2UiOnsiY29udHJvbGxlcnMiOnsiTWVzc2FnZSI6IjAiLCJNZXNzYWdlIFRleHQiOiJUSEUgTUFUUklYIiwiU2NhbGUiOjF9LCJmb2xkZXJzIjp7IlBvc2l0aW9uIjp7ImNvbnRyb2xsZXJzIjp7IlgiOjAsIlkiOjB9LCJmb2xkZXJzIjp7fX19fSwiT3RoZXIiOnsiY29udHJvbGxlcnMiOnsiQ29kZXMgKENvbW1hIHNlcGFyYXRlZCkiOiJUSEUgTUFUUklYIn0sImZvbGRlcnMiOnt9fX19"><img src="images/preview4.gif" width=270px height=270px/></a>
24+
<a href="https://ipdotsetaf.github.io/NeoMatrix/?preset=eyJjb250cm9sbGVycyI6e30sImZvbGRlcnMiOnsiUmFpbiI6eyJjb250cm9sbGVycyI6eyJNYXRyaXggU3BlZWQiOjI0LCJUcmFpbCBMZW5ndGgiOjAuODYsIkRyb3AgQ291bnQvQ29sdW1uIjoxLCJJbml0aWFsIEFuaW1hdGlvbiI6IjIifSwiZm9sZGVycyI6e319LCJDb2xvciI6eyJjb250cm9sbGVycyI6eyJDb2xvciBNb2RlIjoiMSIsIk1hdHJpeCBDb2xvciI6IiMwMGZmMDAiLCJDb2xvciBBbmltYXRpb24gU3BlZWQiOjAuMDcsIkhpZ2hsaWdodCBGaXJzdCBDaGFyYWN0ZXIiOnRydWV9LCJmb2xkZXJzIjp7fX0sIkNoYXJhY3RlcnMiOnsiY29udHJvbGxlcnMiOnsiQ2hhciBzZXQiOiIzIiwiQ3VzdG9tIENoYXIgU2V0IjoiMDEyMzQ1Njc4OUFCQ0RFRiJ9LCJmb2xkZXJzIjp7fX0sIkZvbnQiOnsiY29udHJvbGxlcnMiOnsiRm9udCBTaXplIjoxNSwiRm9udCI6IjMiLCJDdXN0b20gRm9udCI6Im1vbm9zcGFjZSJ9LCJmb2xkZXJzIjp7fX0sIkF1ZGlvIChub3QgYXZhaWxhYmxlIGluIHdlYiB2ZXJzaW9uKSI6eyJjb250cm9sbGVycyI6e30sImZvbGRlcnMiOnt9fSwiTG9nbyI6eyJjb250cm9sbGVycyI6eyJMb2dvIjoiMiIsIkN1c3RvbSBMb2dvIFVSTCAoU1ZHKSI6IiIsIlByZXNlcnZlIExvZ28gQ29sb3IiOmZhbHNlLCJTY2FsZSI6MX0sImZvbGRlcnMiOnsiUG9zaXRpb24iOnsiY29udHJvbGxlcnMiOnsiWCI6MTU2LCJZIjowfSwiZm9sZGVycyI6e319fX0sIkNsb2NrIjp7ImNvbnRyb2xsZXJzIjp7IkNsb2NrIjoiNCIsIjI0IEhvdXIgZm9ybWF0Ijp0cnVlLCJEYXktbGlnaHQgU2F2aW5nIjowLCJTY2FsZSI6MX0sImZvbGRlcnMiOnsiUG9zaXRpb24iOnsiY29udHJvbGxlcnMiOnsiWCI6LTEzLCJZIjowfSwiZm9sZGVycyI6e319fX0sIk1lc3NhZ2UiOnsiY29udHJvbGxlcnMiOnsiTWVzc2FnZSI6IjAiLCJNZXNzYWdlIFRleHQiOiJUSEUgTUFUUklYIiwiU2NhbGUiOjF9LCJmb2xkZXJzIjp7IlBvc2l0aW9uIjp7ImNvbnRyb2xsZXJzIjp7IlgiOjAsIlkiOjB9LCJmb2xkZXJzIjp7fX19fSwiT3RoZXIiOnsiY29udHJvbGxlcnMiOnsiQ29kZXMgKENvbW1hIHNlcGFyYXRlZCkiOiJUSEUgTUFUUklYIn0sImZvbGRlcnMiOnt9fX19"><img src="images/preview5.gif" width=270px height=270px/></a>
25+
<a href="https://ipdotsetaf.github.io/NeoMatrix/?preset=eyJjb250cm9sbGVycyI6e30sImZvbGRlcnMiOnsiUmFpbiI6eyJjb250cm9sbGVycyI6eyJNYXRyaXggU3BlZWQiOjI0LCJUcmFpbCBMZW5ndGgiOjAuODYsIkRyb3AgQ291bnQvQ29sdW1uIjoxLCJJbml0aWFsIEFuaW1hdGlvbiI6IjEifSwiZm9sZGVycyI6e319LCJDb2xvciI6eyJjb250cm9sbGVycyI6eyJDb2xvciBNb2RlIjoiMCIsIk1hdHJpeCBDb2xvciI6IiMwMGZmMDAiLCJDb2xvciBBbmltYXRpb24gU3BlZWQiOjAuNSwiSGlnaGxpZ2h0IEZpcnN0IENoYXJhY3RlciI6ZmFsc2V9LCJmb2xkZXJzIjp7fX0sIkNoYXJhY3RlcnMiOnsiY29udHJvbGxlcnMiOnsiQ2hhciBzZXQiOiI0IiwiQ3VzdG9tIENoYXIgU2V0IjoiMDEyMzQ1Njc4OUFCQ0RFRiJ9LCJmb2xkZXJzIjp7fX0sIkZvbnQiOnsiY29udHJvbGxlcnMiOnsiRm9udCBTaXplIjoxNSwiRm9udCI6IjMiLCJDdXN0b20gRm9udCI6Im1vbm9zcGFjZSJ9LCJmb2xkZXJzIjp7fX0sIkF1ZGlvIChub3QgYXZhaWxhYmxlIGluIHdlYiB2ZXJzaW9uKSI6eyJjb250cm9sbGVycyI6e30sImZvbGRlcnMiOnt9fSwiTG9nbyI6eyJjb250cm9sbGVycyI6eyJMb2dvIjoiMCIsIkN1c3RvbSBMb2dvIFVSTCAoU1ZHKSI6IiIsIlByZXNlcnZlIExvZ28gQ29sb3IiOmZhbHNlLCJTY2FsZSI6MX0sImZvbGRlcnMiOnsiUG9zaXRpb24iOnsiY29udHJvbGxlcnMiOnsiWCI6MCwiWSI6MH0sImZvbGRlcnMiOnt9fX19LCJDbG9jayI6eyJjb250cm9sbGVycyI6eyJDbG9jayI6IjMiLCIyNCBIb3VyIGZvcm1hdCI6dHJ1ZSwiRGF5LWxpZ2h0IFNhdmluZyI6MCwiU2NhbGUiOjJ9LCJmb2xkZXJzIjp7IlBvc2l0aW9uIjp7ImNvbnRyb2xsZXJzIjp7IlgiOjAsIlkiOi0xMX0sImZvbGRlcnMiOnt9fX19LCJNZXNzYWdlIjp7ImNvbnRyb2xsZXJzIjp7Ik1lc3NhZ2UiOiIzIiwiTWVzc2FnZSBUZXh0IjoiVEhFIE1BVFJJWCIsIlNjYWxlIjoyfSwiZm9sZGVycyI6eyJQb3NpdGlvbiI6eyJjb250cm9sbGVycyI6eyJYIjoyNCwiWSI6MzV9LCJmb2xkZXJzIjp7fX19fSwiT3RoZXIiOnsiY29udHJvbGxlcnMiOnsiQ29kZXMgKENvbW1hIHNlcGFyYXRlZCkiOiJUSEUgTUFUUklYIn0sImZvbGRlcnMiOnt9fX19"><img src="images/preview6.gif" width=270px height=270px/></a>
2426
</p>
2527

2628
##
@@ -122,7 +124,11 @@ This is a highly customizable animated Matrix wallpaper for Wallpaper Engine (We
122124
- Codes (these will be shown as decrypted Messages)
123125

124126
### ✔️ Web Browser Compatible
125-
- Preset save/load
127+
- Preset
128+
- Share (URL)
129+
- Save
130+
- Load
131+
- Reset
126132

127133
## Are you ready to be free?
128134

index.js

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
window.onload = function () {
22
//MARK: Update
3-
const version = "v5.0.0";
3+
const version = "v5.1.0";
44

55
checkForUpdates = async () => {
66
const url = 'https://api.github.com/repos/IPdotSetAF/NeoMatrix/tags';
@@ -15,6 +15,7 @@ window.onload = function () {
1515

1616
//MARK: Options
1717
var gui;
18+
var defaultOptions;
1819
var options = {
1920
ui_rain_matrixSpeed: 24,
2021
fpsInterval: calculateFpsInterval(24),
@@ -56,6 +57,10 @@ window.onload = function () {
5657
ui_message_scale: 1,
5758
ui_message_positionX: 0,
5859
ui_message_positionY: 0,
60+
Share() {
61+
copyToClipboard(paramsToUrl({ preset: btoa(JSON.stringify(gui.save())) }, {}, []));
62+
Log("Copied Preset URL to clipboard.");
63+
},
5964
Save() {
6065
window.localStorage.setItem("preset", JSON.stringify(gui.save()));
6166
Log("Saved preset.");
@@ -71,6 +76,14 @@ window.onload = function () {
7176
Reset() {
7277
gui.reset();
7378
Log("Settings reset to default.");
79+
},
80+
LoadFrom(params) {
81+
let preset = gui.load(JSON.parse(atob(params.preset)));
82+
if (preset) {
83+
gui.load(preset);
84+
Log("Loaded preset from URL.");
85+
} else
86+
Log("Preset URl is not correct.");
7487
}
7588
}
7689

@@ -83,6 +96,9 @@ window.onload = function () {
8396

8497
//MARK: GUI
8598
function drawGui() {
99+
defaultOptions = JSON.parse(JSON.stringify(options));
100+
const params = getUrlParams();
101+
86102
readProjectConfig().then((config) => {
87103
gui = new lil.GUI({ autoPlace: false, width: 300 });
88104

@@ -156,14 +172,18 @@ window.onload = function () {
156172
initialAnimation();
157173
});
158174

175+
gui.add(options, "Share");
159176
gui.add(options, "Save");
160177
gui.add(options, "Load");
161178
gui.add(options, "Reset");
162179

163180
customContainer = document.getElementById('gui');
164181
customContainer.appendChild(gui.domElement);
165182

166-
options.Load();
183+
if (params)
184+
options.LoadFrom(params);
185+
else
186+
options.Load();
167187
});
168188
}
169189

@@ -707,5 +727,44 @@ window.onload = function () {
707727
return acc;
708728
}, {});
709729
}
730+
731+
function paramsToUrl(urlParams, paramDefaults, filter) {
732+
var defaults = new URLSearchParams(paramDefaults)
733+
var params = new URLSearchParams(urlParams)
734+
735+
filter.forEach(key => {
736+
params.delete(key);
737+
defaults.delete(key);
738+
});
739+
740+
defaults.forEach((value, key) => {
741+
if (params.get(key) === value)
742+
params.delete(key);
743+
});
744+
745+
return window.location.protocol + "//" + window.location.host + "/?" + params.toString();
746+
}
747+
748+
function copyToClipboard(text) {
749+
const el = document.createElement('textarea');
750+
el.value = text;
751+
el.setAttribute('readonly', '');
752+
document.body.appendChild(el);
753+
el.select();
754+
document.execCommand('copy');
755+
document.body.removeChild(el);
756+
}
757+
758+
function getUrlParams() {
759+
urlParams = new URLSearchParams(window.location.search);
760+
if (urlParams.size == 0)
761+
return null;
762+
763+
params = {};
764+
for (const [key, value] of urlParams)
765+
params[key] = value;
766+
767+
return params;
768+
}
710769
};
711770

0 commit comments

Comments
 (0)