From 36e053f4f0a2f63c08f7c28b9492c067f1ca42bc Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Wed, 27 May 2026 00:53:18 -0700 Subject: migrate pinapelz.moe -> pinapelz.com --- sticker.pinapelz.moe/esinstall.js | 23 - sticker.pinapelz.moe/index.html | 23 - sticker.pinapelz.moe/lib/htm/preact.js | 7 - sticker.pinapelz.moe/package.json | 19 - sticker.pinapelz.moe/packs/.gitkeep | 0 sticker.pinapelz.moe/packs/dank.json | 1 - sticker.pinapelz.moe/packs/index.json | 7 - .../packs/thumbnails/APyHPuZmyRfUwwsEHijRGdjP | Bin 47309 -> 0 bytes .../packs/thumbnails/ASWmCLdLLTVqLwXptdkBMtws | Bin 29637 -> 0 bytes .../packs/thumbnails/CLkWhgAkDubZmahPWinNMaSc | Bin 31164 -> 0 bytes .../packs/thumbnails/DlLllEJSQYkOCBBzqVzdxuwR | Bin 35734 -> 0 bytes .../packs/thumbnails/MjoQgqCbNmTRuQfDngBPPoOC | Bin 52103 -> 0 bytes .../packs/thumbnails/OddXtQLRutxvLZWWxNicguMc | Bin 28353 -> 0 bytes .../packs/thumbnails/PdyEJxgwOfBCxySfSFYlgPzP | Bin 90928 -> 0 bytes .../packs/thumbnails/QURUNgNThYmIdzyasFdcLJnr | Bin 17080 -> 0 bytes .../packs/thumbnails/SzxfhuJJdFPYzoPvSDIBhWxb | Bin 37322 -> 0 bytes .../packs/thumbnails/XmPidyRFUqsIUfMJXlyMqKTg | Bin 58621 -> 0 bytes .../packs/thumbnails/ZBxiNUARoFZGoETjySzbKoAc | Bin 26042 -> 0 bytes .../packs/thumbnails/ZTckkllzHDrGCbrXBEqzDUYB | Bin 45997 -> 0 bytes .../packs/thumbnails/aUBbgTfxxfWapJXDzOGsGWGx | Bin 39863 -> 0 bytes .../packs/thumbnails/xpwjfgHzxJFTiJWIXMEvBBck | Bin 89762 -> 0 bytes .../packs/thumbnails/yLAyUjCErrmXBfcAAUxYygsP | Bin 93010 -> 0 bytes sticker.pinapelz.moe/packs/weeb.json | 1 - sticker.pinapelz.moe/res/favorite.svg | 1 - sticker.pinapelz.moe/res/giphy-dark.svg | 55 -- sticker.pinapelz.moe/res/giphy-light.svg | 54 -- sticker.pinapelz.moe/res/powered-by-giphy.png | Bin 7741 -> 0 bytes sticker.pinapelz.moe/res/recent.svg | 1 - sticker.pinapelz.moe/res/search.svg | 1 - sticker.pinapelz.moe/res/settings.svg | 1 - sticker.pinapelz.moe/src/frequently-used.js | 34 - sticker.pinapelz.moe/src/giphy.js | 107 --- sticker.pinapelz.moe/src/index.js | 400 ------------ sticker.pinapelz.moe/src/search-box.js | 26 - sticker.pinapelz.moe/src/spinner.js | 41 -- sticker.pinapelz.moe/src/widget-api.js | 77 --- sticker.pinapelz.moe/style/index.css | 1 - sticker.pinapelz.moe/style/index.sass | 227 ------- sticker.pinapelz.moe/style/spinner.css | 1 - sticker.pinapelz.moe/style/spinner.sass | 68 -- sticker.pinapelz.moe/yarn.lock | 719 --------------------- 41 files changed, 1895 deletions(-) delete mode 100644 sticker.pinapelz.moe/esinstall.js delete mode 100644 sticker.pinapelz.moe/index.html delete mode 100644 sticker.pinapelz.moe/lib/htm/preact.js delete mode 100644 sticker.pinapelz.moe/package.json delete mode 100644 sticker.pinapelz.moe/packs/.gitkeep delete mode 100644 sticker.pinapelz.moe/packs/dank.json delete mode 100644 sticker.pinapelz.moe/packs/index.json delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/APyHPuZmyRfUwwsEHijRGdjP delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/ASWmCLdLLTVqLwXptdkBMtws delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/CLkWhgAkDubZmahPWinNMaSc delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/DlLllEJSQYkOCBBzqVzdxuwR delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/MjoQgqCbNmTRuQfDngBPPoOC delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/OddXtQLRutxvLZWWxNicguMc delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/PdyEJxgwOfBCxySfSFYlgPzP delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/QURUNgNThYmIdzyasFdcLJnr delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/SzxfhuJJdFPYzoPvSDIBhWxb delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/XmPidyRFUqsIUfMJXlyMqKTg delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/ZBxiNUARoFZGoETjySzbKoAc delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/ZTckkllzHDrGCbrXBEqzDUYB delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/aUBbgTfxxfWapJXDzOGsGWGx delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/xpwjfgHzxJFTiJWIXMEvBBck delete mode 100644 sticker.pinapelz.moe/packs/thumbnails/yLAyUjCErrmXBfcAAUxYygsP delete mode 100644 sticker.pinapelz.moe/packs/weeb.json delete mode 100644 sticker.pinapelz.moe/res/favorite.svg delete mode 100644 sticker.pinapelz.moe/res/giphy-dark.svg delete mode 100644 sticker.pinapelz.moe/res/giphy-light.svg delete mode 100644 sticker.pinapelz.moe/res/powered-by-giphy.png delete mode 100644 sticker.pinapelz.moe/res/recent.svg delete mode 100644 sticker.pinapelz.moe/res/search.svg delete mode 100644 sticker.pinapelz.moe/res/settings.svg delete mode 100644 sticker.pinapelz.moe/src/frequently-used.js delete mode 100644 sticker.pinapelz.moe/src/giphy.js delete mode 100644 sticker.pinapelz.moe/src/index.js delete mode 100644 sticker.pinapelz.moe/src/search-box.js delete mode 100644 sticker.pinapelz.moe/src/spinner.js delete mode 100644 sticker.pinapelz.moe/src/widget-api.js delete mode 100644 sticker.pinapelz.moe/style/index.css delete mode 100644 sticker.pinapelz.moe/style/index.sass delete mode 100644 sticker.pinapelz.moe/style/spinner.css delete mode 100644 sticker.pinapelz.moe/style/spinner.sass delete mode 100644 sticker.pinapelz.moe/yarn.lock (limited to 'sticker.pinapelz.moe') diff --git a/sticker.pinapelz.moe/esinstall.js b/sticker.pinapelz.moe/esinstall.js deleted file mode 100644 index 8cb5682..0000000 --- a/sticker.pinapelz.moe/esinstall.js +++ /dev/null @@ -1,23 +0,0 @@ -const { install, printStats } = require("esinstall") - -install( - [{ - specifier: "htm/preact", - all: false, - default: false, - namespace: false, - named: ["html", "render", "Component"], - }], - { - dest: "./lib", - sourceMap: false, - treeshake: true, - verbose: true, - } -).then(data => { - const oldPrefix = "web_modules/" - const newPrefix = "lib/" - const spaces = " ".repeat(oldPrefix.length - newPrefix.length) - console.log("Installation complete") - console.log(printStats(data.stats).replace(oldPrefix, newPrefix + spaces)) -}) diff --git a/sticker.pinapelz.moe/index.html b/sticker.pinapelz.moe/index.html deleted file mode 100644 index 527ea7b..0000000 --- a/sticker.pinapelz.moe/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - Maunium sticker picker - - - - - - - - - - - - - - - - - diff --git a/sticker.pinapelz.moe/lib/htm/preact.js b/sticker.pinapelz.moe/lib/htm/preact.js deleted file mode 100644 index ebf36ea..0000000 --- a/sticker.pinapelz.moe/lib/htm/preact.js +++ /dev/null @@ -1,7 +0,0 @@ -var n,l,u,i,o,r,f,e,c,s,h={},p=[],v=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,y=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function w(n){var l=n.parentNode;l&&l.removeChild(n);}function _(l,u,t){var i,o,r,f={};for(r in u)"key"==r?i=u[r]:"ref"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),"function"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return g(l,f,i,o,null)}function g(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++u:r,__i:-1,__u:0};return null==r&&null!=l.vnode&&l.vnode(f),f}function k(n){return n.children}function b(n,l){this.props=n,this.context=l;}function x(n,l){if(null==l)return n.__?x(n.__,n.__i+1):null;for(var u;lu&&i.sort(f));P.__r=0;}function S(n,l,u,t,i,o,r,f,e,c,s){var a,v,y,d,w,_=t&&t.__k||p,g=l.length;for(u.__d=e,$(u,l,_),e=u.__d,a=0;a0?g(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):i)?(i.__=n,i.__b=n.__b+1,f=L(i,u,r,s),i.__i=f,o=null,-1!==f&&(s--,(o=u[f])&&(o.__u|=131072)),null==o||null===o.__v?(-1==f&&a--,"function"!=typeof i.type&&(i.__u|=65536)):f!==r&&(f===r+1?a++:f>r?s>e-r?a+=f-r:a--:f(null!=e&&0==(131072&e.__u)?1:0))for(;r>=0||f=0){if((e=l[r])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return r;r--;}if(f=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e="";},a=0;a"===t?(r=1,e=""):e=t+e[0]:u?t===u?u="":e+=t:'"'===t||"'"===t?u=t:">"===t?(p(),r=1):r&&("="===t?(r=5,s=e,e=""):"/"===t&&(r<5||">"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(p(),r=2):e+=t),3===r&&"!--"===e&&(r=4,h=h[0]);}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]} - -var m=e$1.bind(_); - -export { b as Component, m as html, B as render }; diff --git a/sticker.pinapelz.moe/package.json b/sticker.pinapelz.moe/package.json deleted file mode 100644 index 44fe1ea..0000000 --- a/sticker.pinapelz.moe/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "maunium-stickerpicker", - "version": "0.1.0", - "description": "A fast and simple Matrix sticker picker widget", - "repository": "https://github.com/maunium/stickerpicker", - "author": "Tulir Asokan ", - "license": "AGPL-3.0-or-later", - "private": true, - "scripts": { - "esinstall": "node ./esinstall.js", - "sass": "sass --no-source-map --style=compressed style/" - }, - "dependencies": { - "esinstall": "^1.1.7", - "htm": "^3.1.0", - "preact": "^10.5.14", - "sass": "^1.42.1" - } -} diff --git a/sticker.pinapelz.moe/packs/.gitkeep b/sticker.pinapelz.moe/packs/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/sticker.pinapelz.moe/packs/dank.json b/sticker.pinapelz.moe/packs/dank.json deleted file mode 100644 index e5f2766..0000000 --- a/sticker.pinapelz.moe/packs/dank.json +++ /dev/null @@ -1 +0,0 @@ -{"title": "dank", "id": "dank", "stickers": [{"body": "aware", "url": "mxc://chat.moekyun.me/QURUNgNThYmIdzyasFdcLJnr", "info": {"w": 112, "h": 112, "size": 17080, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/QURUNgNThYmIdzyasFdcLJnr", "thumbnail_info": {"w": 112, "h": 112, "size": 17080, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:3f0e3edace04fed69af1606f7c3c74591e4b1e3d1a296ad7340dd2b39214f099"}, {"body": "classic", "url": "mxc://chat.moekyun.me/ZBxiNUARoFZGoETjySzbKoAc", "info": {"w": 128, "h": 128, "size": 26042, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/ZBxiNUARoFZGoETjySzbKoAc", "thumbnail_info": {"w": 128, "h": 128, "size": 26042, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:b9bec6f6748663456f72c7689db38e0f76e64a0e0496529d9515139fee067922"}, {"body": "smiley_good", "url": "mxc://chat.moekyun.me/PdyEJxgwOfBCxySfSFYlgPzP", "info": {"w": 256, "h": 256, "size": 90928, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/PdyEJxgwOfBCxySfSFYlgPzP", "thumbnail_info": {"w": 256, "h": 256, "size": 90928, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:57878fa8ccf13f58320c8cf07b266130984b4ed5ad35cfc87b67bc78fb2f7625"}, {"body": "smiley_grrr", "url": "mxc://chat.moekyun.me/xpwjfgHzxJFTiJWIXMEvBBck", "info": {"w": 256, "h": 256, "size": 89762, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/xpwjfgHzxJFTiJWIXMEvBBck", "thumbnail_info": {"w": 256, "h": 256, "size": 89762, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:76efdc3e86754261cfb6c93afe9ff5d25f2d4adbd45235a9670f5dbea6e1f74e"}, {"body": "smiley_no_no", "url": "mxc://chat.moekyun.me/yLAyUjCErrmXBfcAAUxYygsP", "info": {"w": 256, "h": 256, "size": 93010, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/yLAyUjCErrmXBfcAAUxYygsP", "thumbnail_info": {"w": 256, "h": 256, "size": 93010, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:1071abbf8e31ed12d226d5f078630d46b13ae377c9a3276e27f458076e42759a"}, {"body": "smiley_whatever", "url": "mxc://chat.moekyun.me/XmPidyRFUqsIUfMJXlyMqKTg", "info": {"w": 256, "h": 256, "size": 58621, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/XmPidyRFUqsIUfMJXlyMqKTg", "thumbnail_info": {"w": 256, "h": 256, "size": 58621, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:0f22af4ab47f63fcb9676537aa74aa3d0b6c8f606fe9e956f52b7ddfdc67ebf7"}, {"body": "xqc_ok", "url": "mxc://chat.moekyun.me/ZTckkllzHDrGCbrXBEqzDUYB", "info": {"w": 160, "h": 160, "size": 45997, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/ZTckkllzHDrGCbrXBEqzDUYB", "thumbnail_info": {"w": 160, "h": 160, "size": 45997, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:bb49d28ed249cd3f01023ecfa99e2be2af901f737a0249aefbe53b31203197f5"}]} \ No newline at end of file diff --git a/sticker.pinapelz.moe/packs/index.json b/sticker.pinapelz.moe/packs/index.json deleted file mode 100644 index cdb8d7d..0000000 --- a/sticker.pinapelz.moe/packs/index.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "packs": [ - "weeb.json", - "dank.json" - ], - "homeserver_url": "https://chat.moekyun.me" -} \ No newline at end of file diff --git a/sticker.pinapelz.moe/packs/thumbnails/APyHPuZmyRfUwwsEHijRGdjP b/sticker.pinapelz.moe/packs/thumbnails/APyHPuZmyRfUwwsEHijRGdjP deleted file mode 100644 index 931a057..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/APyHPuZmyRfUwwsEHijRGdjP and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/ASWmCLdLLTVqLwXptdkBMtws b/sticker.pinapelz.moe/packs/thumbnails/ASWmCLdLLTVqLwXptdkBMtws deleted file mode 100644 index cdf240a..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/ASWmCLdLLTVqLwXptdkBMtws and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/CLkWhgAkDubZmahPWinNMaSc b/sticker.pinapelz.moe/packs/thumbnails/CLkWhgAkDubZmahPWinNMaSc deleted file mode 100644 index 20ab20f..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/CLkWhgAkDubZmahPWinNMaSc and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/DlLllEJSQYkOCBBzqVzdxuwR b/sticker.pinapelz.moe/packs/thumbnails/DlLllEJSQYkOCBBzqVzdxuwR deleted file mode 100644 index e486283..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/DlLllEJSQYkOCBBzqVzdxuwR and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/MjoQgqCbNmTRuQfDngBPPoOC b/sticker.pinapelz.moe/packs/thumbnails/MjoQgqCbNmTRuQfDngBPPoOC deleted file mode 100644 index a912611..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/MjoQgqCbNmTRuQfDngBPPoOC and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/OddXtQLRutxvLZWWxNicguMc b/sticker.pinapelz.moe/packs/thumbnails/OddXtQLRutxvLZWWxNicguMc deleted file mode 100644 index 5a12b37..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/OddXtQLRutxvLZWWxNicguMc and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/PdyEJxgwOfBCxySfSFYlgPzP b/sticker.pinapelz.moe/packs/thumbnails/PdyEJxgwOfBCxySfSFYlgPzP deleted file mode 100644 index 4ce4ec4..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/PdyEJxgwOfBCxySfSFYlgPzP and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/QURUNgNThYmIdzyasFdcLJnr b/sticker.pinapelz.moe/packs/thumbnails/QURUNgNThYmIdzyasFdcLJnr deleted file mode 100644 index f161e15..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/QURUNgNThYmIdzyasFdcLJnr and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/SzxfhuJJdFPYzoPvSDIBhWxb b/sticker.pinapelz.moe/packs/thumbnails/SzxfhuJJdFPYzoPvSDIBhWxb deleted file mode 100644 index 706c10d..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/SzxfhuJJdFPYzoPvSDIBhWxb and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/XmPidyRFUqsIUfMJXlyMqKTg b/sticker.pinapelz.moe/packs/thumbnails/XmPidyRFUqsIUfMJXlyMqKTg deleted file mode 100644 index 2cdcf19..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/XmPidyRFUqsIUfMJXlyMqKTg and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/ZBxiNUARoFZGoETjySzbKoAc b/sticker.pinapelz.moe/packs/thumbnails/ZBxiNUARoFZGoETjySzbKoAc deleted file mode 100644 index 11f60e7..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/ZBxiNUARoFZGoETjySzbKoAc and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/ZTckkllzHDrGCbrXBEqzDUYB b/sticker.pinapelz.moe/packs/thumbnails/ZTckkllzHDrGCbrXBEqzDUYB deleted file mode 100644 index e6e259b..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/ZTckkllzHDrGCbrXBEqzDUYB and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/aUBbgTfxxfWapJXDzOGsGWGx b/sticker.pinapelz.moe/packs/thumbnails/aUBbgTfxxfWapJXDzOGsGWGx deleted file mode 100644 index 79a10b8..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/aUBbgTfxxfWapJXDzOGsGWGx and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/xpwjfgHzxJFTiJWIXMEvBBck b/sticker.pinapelz.moe/packs/thumbnails/xpwjfgHzxJFTiJWIXMEvBBck deleted file mode 100644 index 581048b..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/xpwjfgHzxJFTiJWIXMEvBBck and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/thumbnails/yLAyUjCErrmXBfcAAUxYygsP b/sticker.pinapelz.moe/packs/thumbnails/yLAyUjCErrmXBfcAAUxYygsP deleted file mode 100644 index 2b949b8..0000000 Binary files a/sticker.pinapelz.moe/packs/thumbnails/yLAyUjCErrmXBfcAAUxYygsP and /dev/null differ diff --git a/sticker.pinapelz.moe/packs/weeb.json b/sticker.pinapelz.moe/packs/weeb.json deleted file mode 100644 index 80550cf..0000000 --- a/sticker.pinapelz.moe/packs/weeb.json +++ /dev/null @@ -1 +0,0 @@ -{"title": "weeb", "id": "weeb", "stickers": [{"body": "erina_i_may_be_dumb", "url": "mxc://chat.moekyun.me/SzxfhuJJdFPYzoPvSDIBhWxb", "info": {"w": 146, "h": 160, "size": 37322, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/SzxfhuJJdFPYzoPvSDIBhWxb", "thumbnail_info": {"w": 146, "h": 160, "size": 37322, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:a8e636aef053b1b3214e7afeb8f2539a3fc5dee9a011fabe0c9e4300f73da242"}, {"body": "miku_honest_reaction", "url": "mxc://chat.moekyun.me/OddXtQLRutxvLZWWxNicguMc", "info": {"w": 160, "h": 112, "size": 28353, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/OddXtQLRutxvLZWWxNicguMc", "thumbnail_info": {"w": 160, "h": 112, "size": 28353, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:d4dde21efae2eab7be830a3d65bc78176d898052c8bfaf96d784083b58668ef2"}, {"body": "not_bad", "url": "mxc://chat.moekyun.me/CLkWhgAkDubZmahPWinNMaSc", "info": {"w": 160, "h": 160, "size": 31164, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/CLkWhgAkDubZmahPWinNMaSc", "thumbnail_info": {"w": 160, "h": 160, "size": 31164, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:575e12e9e5452bb44270f13c1942c1ec3c5598a1a59f35358fbf90cb4e1cc71d"}, {"body": "peko_interesting", "url": "mxc://chat.moekyun.me/DlLllEJSQYkOCBBzqVzdxuwR", "info": {"w": 160, "h": 156, "size": 35734, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/DlLllEJSQYkOCBBzqVzdxuwR", "thumbnail_info": {"w": 160, "h": 156, "size": 35734, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:752763fa8f4d19f77b131267ca2a35ed233d62335bafb27b165ca248d00e0b84"}, {"body": "peko_unbelievable", "url": "mxc://chat.moekyun.me/MjoQgqCbNmTRuQfDngBPPoOC", "info": {"w": 160, "h": 160, "size": 52103, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/MjoQgqCbNmTRuQfDngBPPoOC", "thumbnail_info": {"w": 160, "h": 160, "size": 52103, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:618e4ea2b509bdb2c761f8fcafdbe42f56690b028edaa68e510843bd8859d5f1"}, {"body": "senmei_caught_4k", "url": "mxc://chat.moekyun.me/aUBbgTfxxfWapJXDzOGsGWGx", "info": {"w": 160, "h": 160, "size": 39863, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/aUBbgTfxxfWapJXDzOGsGWGx", "thumbnail_info": {"w": 160, "h": 160, "size": 39863, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:04e25a3a8de7d9da6eac994c013c831ada8c674b6dc5d61628ec0a082a45dc4c"}, {"body": "tsukasa_lewd", "url": "mxc://chat.moekyun.me/ASWmCLdLLTVqLwXptdkBMtws", "info": {"w": 160, "h": 160, "size": 29637, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/ASWmCLdLLTVqLwXptdkBMtws", "thumbnail_info": {"w": 160, "h": 160, "size": 29637, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:8dac5d9222770fe41ad4a120042416cb5db9e76501561942e0c0ffcbc78681dc"}, {"body": "weeb_fuck_everything", "url": "mxc://chat.moekyun.me/APyHPuZmyRfUwwsEHijRGdjP", "info": {"w": 140, "h": 160, "size": 47309, "mimetype": "image/png", "thumbnail_url": "mxc://chat.moekyun.me/APyHPuZmyRfUwwsEHijRGdjP", "thumbnail_info": {"w": 140, "h": 160, "size": 47309, "mimetype": "image/png"}}, "msgtype": "m.sticker", "id": "sha256:53246fc04cf8899b6311be5c8ca25673012d061b5f9245e13bc6e3271ef53892"}]} \ No newline at end of file diff --git a/sticker.pinapelz.moe/res/favorite.svg b/sticker.pinapelz.moe/res/favorite.svg deleted file mode 100644 index 4af2b49..0000000 --- a/sticker.pinapelz.moe/res/favorite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sticker.pinapelz.moe/res/giphy-dark.svg b/sticker.pinapelz.moe/res/giphy-dark.svg deleted file mode 100644 index 9b47567..0000000 --- a/sticker.pinapelz.moe/res/giphy-dark.svg +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/sticker.pinapelz.moe/res/giphy-light.svg b/sticker.pinapelz.moe/res/giphy-light.svg deleted file mode 100644 index 8016e2c..0000000 --- a/sticker.pinapelz.moe/res/giphy-light.svg +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/sticker.pinapelz.moe/res/powered-by-giphy.png b/sticker.pinapelz.moe/res/powered-by-giphy.png deleted file mode 100644 index 41861e6..0000000 Binary files a/sticker.pinapelz.moe/res/powered-by-giphy.png and /dev/null differ diff --git a/sticker.pinapelz.moe/res/recent.svg b/sticker.pinapelz.moe/res/recent.svg deleted file mode 100644 index 59be87d..0000000 --- a/sticker.pinapelz.moe/res/recent.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sticker.pinapelz.moe/res/search.svg b/sticker.pinapelz.moe/res/search.svg deleted file mode 100644 index 7be3396..0000000 --- a/sticker.pinapelz.moe/res/search.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sticker.pinapelz.moe/res/settings.svg b/sticker.pinapelz.moe/res/settings.svg deleted file mode 100644 index 51f966f..0000000 --- a/sticker.pinapelz.moe/res/settings.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sticker.pinapelz.moe/src/frequently-used.js b/sticker.pinapelz.moe/src/frequently-used.js deleted file mode 100644 index a754e9a..0000000 --- a/sticker.pinapelz.moe/src/frequently-used.js +++ /dev/null @@ -1,34 +0,0 @@ -// maunium-stickerpicker - A fast and simple Matrix sticker picker widget. -// Copyright (C) 2020 Tulir Asokan -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -const FREQUENTLY_USED = JSON.parse(window.localStorage.mauFrequentlyUsedStickerIDs || "{}") -let FREQUENTLY_USED_SORTED = null - -export const add = id => { - const [count] = FREQUENTLY_USED[id] || [0] - FREQUENTLY_USED[id] = [count + 1, Date.now()] - window.localStorage.mauFrequentlyUsedStickerIDs = JSON.stringify(FREQUENTLY_USED) - FREQUENTLY_USED_SORTED = null -} - -export const get = (limit = 16) => { - if (FREQUENTLY_USED_SORTED === null) { - FREQUENTLY_USED_SORTED = Object.entries(FREQUENTLY_USED) - .sort(([, [count1, date1]], [, [count2, date2]]) => - count2 === count1 ? date2 - date1 : count2 - count1) - .map(([emoji]) => emoji) - } - return FREQUENTLY_USED_SORTED.slice(0, limit) -} diff --git a/sticker.pinapelz.moe/src/giphy.js b/sticker.pinapelz.moe/src/giphy.js deleted file mode 100644 index 35172bb..0000000 --- a/sticker.pinapelz.moe/src/giphy.js +++ /dev/null @@ -1,107 +0,0 @@ -import {Component, html} from "../lib/htm/preact.js"; -import * as widgetAPI from "./widget-api.js"; -import {SearchBox} from "./search-box.js"; - -const GIPHY_SEARCH_DEBOUNCE = 1000 -let GIPHY_API_KEY = "HQku8974Uq5MZn3MZns46kXn2R4GDm75" -let GIPHY_MXC_PREFIX = "mxc://giphy.mau.dev/" - -export function giphyIsEnabled() { - return GIPHY_API_KEY !== "" -} - -export function setGiphyAPIKey(apiKey, mxcPrefix) { - GIPHY_API_KEY = apiKey - if (mxcPrefix) { - GIPHY_MXC_PREFIX = mxcPrefix - } -} - -export class GiphySearchTab extends Component { - constructor(props) { - super(props) - this.state = { - searchTerm: "", - gifs: [], - loading: false, - error: null, - } - this.handleGifClick = this.handleGifClick.bind(this) - this.searchKeyUp = this.searchKeyUp.bind(this) - this.updateGifSearchQuery = this.updateGifSearchQuery.bind(this) - this.searchTimeout = null - } - - async makeGifSearchRequest() { - try { - const resp = await fetch(`https://api.giphy.com/v1/gifs/search?q=${this.state.searchTerm}&api_key=${GIPHY_API_KEY}`) - // TODO handle error responses properly? - const data = await resp.json() - if (data.data.length === 0) { - this.setState({gifs: [], error: "No results"}) - } else { - this.setState({gifs: data.data, error: null}) - } - } catch (error) { - this.setState({error}) - } - } - - componentWillUnmount() { - clearTimeout(this.searchTimeout) - } - - searchKeyUp(event) { - if (event.key === "Enter") { - clearTimeout(this.searchTimeout) - this.makeGifSearchRequest() - } - } - - updateGifSearchQuery(event) { - this.setState({searchTerm: event.target.value}) - clearTimeout(this.searchTimeout) - this.searchTimeout = setTimeout(() => this.makeGifSearchRequest(), GIPHY_SEARCH_DEBOUNCE) - } - - handleGifClick(gif) { - widgetAPI.sendSticker({ - "body": gif.title, - "info": { - "h": +gif.images.original.height, - "w": +gif.images.original.width, - "size": +gif.images.original.size, - "mimetype": "image/webp", - }, - "msgtype": "m.image", - "url": GIPHY_MXC_PREFIX + gif.id, - - "id": gif.id, - "filename": gif.id + ".webp", - }) - } - - render() { - // TODO display loading state? - return html` - <${SearchBox} onInput=${this.updateGifSearchQuery} onKeyUp=${this.searchKeyUp} value=${this.state.searchTerm} placeholder="Find GIFs"/> -
-
-
- ${this.state.error} -
-
- ${this.state.gifs.map((gif) => html` -
this.handleGifClick(gif)} data-gif-id=${gif.id}> - ${gif.title} -
- `)} -
- -
-
- ` - } -} diff --git a/sticker.pinapelz.moe/src/index.js b/sticker.pinapelz.moe/src/index.js deleted file mode 100644 index 9f545b8..0000000 --- a/sticker.pinapelz.moe/src/index.js +++ /dev/null @@ -1,400 +0,0 @@ -// maunium-stickerpicker - A fast and simple Matrix sticker picker widget. -// Copyright (C) 2020 Tulir Asokan -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -import {html, render, Component} from "../lib/htm/preact.js" -import {Spinner} from "./spinner.js" -import {SearchBox} from "./search-box.js" -import {giphyIsEnabled, GiphySearchTab, setGiphyAPIKey} from "./giphy.js" -import * as widgetAPI from "./widget-api.js" -import * as frequent from "./frequently-used.js" - -// The base URL for fetching packs. The app will first fetch ${PACK_BASE_URL}/index.json, -// then ${PACK_BASE_URL}/${packFile} for each packFile in the packs object of the index.json file. -const PACKS_BASE_URL = "packs" - -let INDEX = `${PACKS_BASE_URL}/index.json` -const params = new URLSearchParams(document.location.search) -if (params.has('config')) { - INDEX = params.get("config") -} - -const makeThumbnailURL = mxc => `${PACKS_BASE_URL}/thumbnails/${mxc.split("/").slice(-1)[0]}` - -// We need to detect iOS webkit because it has a bug related to scrolling non-fixed divs -// This is also used to fix scrolling to sections on Element iOS -const isMobileSafari = navigator.userAgent.match(/(iPod|iPhone|iPad)/) && navigator.userAgent.match(/AppleWebKit/) - -const supportedThemes = ["light", "dark", "black"] - -const defaultState = { - packs: [], - filtering: { - searchTerm: "", - packs: [], - }, -} - -class App extends Component { - constructor(props) { - super(props) - this.defaultTheme = params.get("theme") - this.state = { - viewingGifs: false, - packs: defaultState.packs, - loading: true, - error: null, - stickersPerRow: parseInt(localStorage.mauStickersPerRow || "4"), - theme: localStorage.mauStickerThemeOverride || this.defaultTheme, - frequentlyUsed: { - id: "frequently-used", - title: "Frequently used", - stickerIDs: frequent.get(), - stickers: [], - }, - filtering: defaultState.filtering, - } - if (!supportedThemes.includes(this.state.theme)) { - this.state.theme = "light" - } - if (!supportedThemes.includes(this.defaultTheme)) { - this.defaultTheme = "light" - } - this.stickersByID = new Map(JSON.parse(localStorage.mauFrequentlyUsedStickerCache || "[]")) - this.state.frequentlyUsed.stickers = this._getStickersByID(this.state.frequentlyUsed.stickerIDs) - this.imageObserver = null - this.packListRef = null - this.navRef = null - this.searchStickers = this.searchStickers.bind(this) - this.sendSticker = this.sendSticker.bind(this) - this.navScroll = this.navScroll.bind(this) - this.reloadPacks = this.reloadPacks.bind(this) - this.observeSectionIntersections = this.observeSectionIntersections.bind(this) - this.observeImageIntersections = this.observeImageIntersections.bind(this) - } - - _getStickersByID(ids) { - return ids.map(id => this.stickersByID.get(id)).filter(sticker => !!sticker) - } - - updateFrequentlyUsed() { - const stickerIDs = frequent.get() - const stickers = this._getStickersByID(stickerIDs) - this.setState({ - frequentlyUsed: { - ...this.state.frequentlyUsed, - stickerIDs, - stickers, - }, - }) - localStorage.mauFrequentlyUsedStickerCache = JSON.stringify(stickers.map(sticker => [sticker.id, sticker])) - } - - searchStickers(e) { - const sanitizeString = s => s.toLowerCase().trim() - const searchTerm = sanitizeString(e.target.value) - - const allPacks = [this.state.frequentlyUsed, ...this.state.packs] - const packsWithFilteredStickers = allPacks.map(pack => ({ - ...pack, - stickers: pack.stickers.filter(sticker => - sanitizeString(sticker.body).includes(searchTerm) || - sanitizeString(sticker.id).includes(searchTerm) - ), - })) - - this.setState({ - filtering: { - ...this.state.filtering, - searchTerm, - packs: packsWithFilteredStickers.filter(({stickers}) => !!stickers.length), - }, - }) - } - - setStickersPerRow(val) { - localStorage.mauStickersPerRow = val - document.documentElement.style.setProperty("--stickers-per-row", localStorage.mauStickersPerRow) - this.setState({ - stickersPerRow: val, - }) - this.packListRef.scrollTop = this.packListRef.scrollHeight - } - - setTheme(theme) { - if (theme === "default") { - delete localStorage.mauStickerThemeOverride - this.setState({theme: this.defaultTheme}) - } else { - localStorage.mauStickerThemeOverride = theme - this.setState({theme: theme}) - } - } - - reloadPacks() { - this.imageObserver.disconnect() - this.sectionObserver.disconnect() - this.setState({ - packs: defaultState.packs, - filtering: defaultState.filtering, - }) - this._loadPacks(true) - } - - _loadPacks(disableCache = false) { - const cache = disableCache ? "no-cache" : undefined - fetch(INDEX, {cache}).then(async indexRes => { - if (indexRes.status >= 400) { - this.setState({ - loading: false, - error: indexRes.status !== 404 ? indexRes.statusText : null, - }) - return - } - const indexData = await indexRes.json() - if (indexData.giphy_api_key !== undefined) { - setGiphyAPIKey(indexData.giphy_api_key, indexData.giphy_mxc_prefix) - } - // TODO only load pack metadata when scrolled into view? - for (const packFile of indexData.packs) { - let packRes - if (packFile.startsWith("https://") || packFile.startsWith("http://")) { - packRes = await fetch(packFile, {cache}) - } else { - packRes = await fetch(`${PACKS_BASE_URL}/${packFile}`, {cache}) - } - const packData = await packRes.json() - for (const sticker of packData.stickers) { - this.stickersByID.set(sticker.id, sticker) - } - this.setState({ - packs: [...this.state.packs, packData], - loading: false, - }) - } - this.updateFrequentlyUsed() - }, error => this.setState({loading: false, error})) - } - - componentDidMount() { - document.documentElement.style.setProperty("--stickers-per-row", this.state.stickersPerRow.toString()) - this._loadPacks() - this.imageObserver = new IntersectionObserver(this.observeImageIntersections, { - rootMargin: "100px", - }) - this.sectionObserver = new IntersectionObserver(this.observeSectionIntersections) - } - - observeImageIntersections(intersections) { - for (const entry of intersections) { - const img = entry.target.children.item(0) - if (entry.isIntersecting) { - img.setAttribute("src", img.getAttribute("data-src")) - img.classList.add("visible") - } else { - img.removeAttribute("src") - img.classList.remove("visible") - } - } - } - - observeSectionIntersections(intersections) { - const navWidth = this.navRef.getBoundingClientRect().width - let minX = 0, maxX = navWidth - let minXElem = null - let maxXElem = null - for (const entry of intersections) { - const packID = entry.target.getAttribute("data-pack-id") - if (!packID) { - continue - } - const navElement = document.getElementById(`nav-${packID}`) - if (entry.isIntersecting) { - navElement.classList.add("visible") - const bb = navElement.getBoundingClientRect() - if (bb.x < minX) { - minX = bb.x - minXElem = navElement - } else if (bb.right > maxX) { - maxX = bb.right - maxXElem = navElement - } - } else { - navElement.classList.remove("visible") - } - } - if (minXElem !== null) { - minXElem.scrollIntoView({inline: "start"}) - } else if (maxXElem !== null) { - maxXElem.scrollIntoView({inline: "end"}) - } - } - - componentDidUpdate() { - if (this.packListRef === null) { - return - } - for (const elem of this.packListRef.getElementsByClassName("sticker")) { - this.imageObserver.observe(elem) - } - for (const elem of this.packListRef.children) { - this.sectionObserver.observe(elem) - } - } - - componentWillUnmount() { - this.imageObserver.disconnect() - this.sectionObserver.disconnect() - } - - sendSticker(evt) { - const id = evt.currentTarget.getAttribute("data-sticker-id") - const sticker = this.stickersByID.get(id) - frequent.add(id) - this.updateFrequentlyUsed() - widgetAPI.sendSticker(sticker) - } - - navScroll(evt) { - this.navRef.scrollLeft += evt.deltaY - } - - render() { - const theme = `theme-${this.state.theme}` - const filterActive = !!this.state.filtering.searchTerm - const packs = filterActive - ? this.state.filtering.packs - : [this.state.frequentlyUsed, ...this.state.packs] - - if (this.state.loading) { - return html` -
- <${Spinner} size=${80} green/> -
- ` - } else if (this.state.error) { - return html` -
-

Failed to load packs

-

${this.state.error}

-
- ` - } else if (this.state.packs.length === 0) { - return html` -

No packs found 😿

- ` - } - - const onClickOverride = this.state.viewingGifs - ? (evt, packID) => { - evt.preventDefault() - this.setState({viewingGifs: false}, () => { - scrollToSection(null, packID) - }) - } : null - const switchToGiphy = () => this.setState({viewingGifs: true, filtering: defaultState.filtering}) - - return html` -
- - - ${this.state.viewingGifs ? html` - <${GiphySearchTab}/> - ` : html` - <${SearchBox} onInput=${this.searchStickers} value=${this.state.filtering.searchTerm ?? ""}/> -
(this.packListRef = elem)}> - ${filterActive && packs.length === 0 - ? html`

No stickers match your search

` - : null} - ${packs.map((pack) => html`<${Pack} id=${pack.id} pack=${pack} send=${this.sendSticker}/>`)} - <${Settings} app=${this}/> -
- `} -
` - } -} - -const Settings = ({app}) => html` -
-

Settings

-
- -
- - app.setStickersPerRow(evt.target.value)}/> -
-
- - -
-
-
-` - -// By default we just let the browser handle scrolling to sections, but webviews on Element iOS -// open the link in the browser instead of just scrolling there, so we need to scroll manually: -const scrollToSection = (evt, id) => { - const pack = document.getElementById(`pack-${id}`) - if (pack) { - pack.scrollIntoView({block: "start", behavior: "instant"}) - } - evt?.preventDefault() -} - -const NavBarItem = ({pack, iconOverride = null, onClickOverride = null, extraClass = null}) => html` - onClickOverride(evt, pack.id)) : (isMobileSafari ? (evt => scrollToSection(evt, pack.id)) : undefined)}> -
- ${iconOverride ? html` - - ` : html` - ${pack.stickers[0].body} - `} -
-
-` - -const Pack = ({pack, send}) => html` -
-

${pack.title}

-
- ${pack.stickers.map(sticker => html` - <${Sticker} key=${sticker.id} content=${sticker} send=${send}/> - `)} -
-
-` - -const Sticker = ({content, send}) => html` -
- ${content.body} -
-` - -render(html`<${App}/>`, document.body) diff --git a/sticker.pinapelz.moe/src/search-box.js b/sticker.pinapelz.moe/src/search-box.js deleted file mode 100644 index b25769f..0000000 --- a/sticker.pinapelz.moe/src/search-box.js +++ /dev/null @@ -1,26 +0,0 @@ -// maunium-stickerpicker - A fast and simple Matrix sticker picker widget. -// Copyright (C) 2020 Tulir Asokan -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -import {html} from "../lib/htm/preact.js" - -export const SearchBox = ({onInput, onKeyUp, value, placeholder = 'Find stickers'}) => { - const component = html` - - ` - return component -} diff --git a/sticker.pinapelz.moe/src/spinner.js b/sticker.pinapelz.moe/src/spinner.js deleted file mode 100644 index e89dd02..0000000 --- a/sticker.pinapelz.moe/src/spinner.js +++ /dev/null @@ -1,41 +0,0 @@ -// maunium-stickerpicker - A fast and simple Matrix sticker picker widget. -// Copyright (C) 2020 Tulir Asokan -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -import { html } from "../lib/htm/preact.js" - -export const Spinner = ({ size = 40, noCenter = false, noMargin = false, green = false }) => { - let margin = 0 - if (!isNaN(+size)) { - size = +size - margin = noMargin ? 0 : `${Math.round(size / 6)}px` - size = `${size}px` - } - const noInnerMargin = !noCenter || !margin - const comp = html` -
-
-
-
-
-
-
-
- ` - if (!noCenter) { - return html`
${comp}
` - } - return comp -} diff --git a/sticker.pinapelz.moe/src/widget-api.js b/sticker.pinapelz.moe/src/widget-api.js deleted file mode 100644 index d9964a7..0000000 --- a/sticker.pinapelz.moe/src/widget-api.js +++ /dev/null @@ -1,77 +0,0 @@ -// maunium-stickerpicker - A fast and simple Matrix sticker picker widget. -// Copyright (C) 2020 Tulir Asokan -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -let widgetId = null - -window.onmessage = event => { - if (!window.parent || !event.data) { - return - } - - const request = event.data - if (!request.requestId || !request.widgetId || !request.action || request.api !== "toWidget") { - return - } - - if (widgetId) { - if (widgetId !== request.widgetId) { - return - } - } else { - widgetId = request.widgetId - } - - let response - - if (request.action === "visibility") { - response = {} - } else if (request.action === "capabilities") { - response = { capabilities: ["m.sticker"] } - } else { - response = { error: { message: "Action not supported" } } - } - - window.parent.postMessage({ ...request, response }, event.origin) -} - -export function sendSticker(content) { - const data = { - content: { ...content }, - // `name` is for Element Web (and also the spec) - // Element Android uses content -> body as the name - name: content.body, - } - // Custom field that stores the ID even for non-telegram stickers - delete data.content.id - - // This is for Element iOS - const widgetData = { - ...data, - description: content.body, - file: content.filename ?? `${content.id}.png`, - } - delete widgetData.content.filename - // Element iOS explodes if there are extra fields present - delete widgetData.content["net.maunium.telegram.sticker"] - - window.parent.postMessage({ - api: "fromWidget", - action: "m.sticker", - requestId: `sticker-${Date.now()}`, - widgetId, - data, - widgetData, - }, "*") -} diff --git a/sticker.pinapelz.moe/style/index.css b/sticker.pinapelz.moe/style/index.css deleted file mode 100644 index f73124e..0000000 --- a/sticker.pinapelz.moe/style/index.css +++ /dev/null @@ -1 +0,0 @@ -*{font-family:sans-serif}body{margin:0}h1{font-size:1rem}:root{--stickers-per-row: 4;--sticker-size: calc(100vw / var(--stickers-per-row))}main{color:var(--text-color)}main.spinner{margin-top:5rem}main.error,main.empty{margin:2rem}main.empty{text-align:center}main.has-content{position:fixed;top:0;left:0;right:0;bottom:0;display:grid;grid-template-rows:calc(12vw + 2px) min-content auto}main.theme-light{--highlight-color: #eee;--search-box-color: var(--highlight-color);--text-color: black;background-color:#fff}main.theme-dark{--highlight-color: #444;--search-box-color: #383e4b;--text-color: white;background-color:#22262e}main.theme-dark .icon.icon-giphy{background-image:url(../res/giphy-dark.svg)}main.theme-black{--highlight-color: #222;--search-box-color: var(--highlight-color);--text-color: white;background-color:#000}main.theme-black .icon.icon-giphy{background-image:url(../res/giphy-dark.svg)}div.powered-by-giphy{padding:1rem}div.powered-by-giphy>img{width:100%}.icon{width:100%;height:100%;background-color:var(--text-color);mask-size:contain;-webkit-mask-size:contain;mask-image:var(--icon-image);-webkit-mask-image:var(--icon-image)}.icon.icon-settings{--icon-image: url(../res/settings.svg)}.icon.icon-recent{--icon-image: url(../res/recent.svg)}.icon.icon.icon-search{--icon-image: url(../res/search.svg)}.icon.icon.icon-giphy{background:center/contain no-repeat url(../res/giphy-light.svg);mask:unset}nav{display:flex;overflow-x:auto}nav>a{border-bottom:2px solid rgba(0,0,0,0)}nav>a.visible{border-bottom-color:green}nav>a>div.sticker{width:12vw;height:12vw}div.pack-list,nav{scrollbar-width:none}div.pack-list::-webkit-scrollbar,nav::-webkit-scrollbar{display:none}div.pack-list{overflow-y:auto}div.pack-list.ios-safari-hack{position:fixed;top:calc(calc(12vw + 2px) + calc(2 * 0.7rem + 2 * 0.5rem + 1rem));bottom:0;left:0;right:0;-webkit-overflow-scrolling:touch}div.search-empty{margin:1.2rem;text-align:center}section.stickerpack{margin-top:.75rem}section.stickerpack>div.sticker-list{display:flex;flex-wrap:wrap}section.stickerpack>h1{margin:0 0 0 .75rem}section.stickerpack#pack-giphy{display:flex;justify-content:space-between;flex-direction:column;min-height:100%}div.sticker{display:flex;padding:4px;cursor:pointer;position:relative;width:var(--sticker-size);height:var(--sticker-size);box-sizing:border-box}div.sticker:hover{background-color:var(--highlight-color)}div.sticker>img{display:none;width:100%;object-fit:contain}div.sticker>img.visible{display:initial}div.sticker>.icon{width:70%;height:70%;margin:15%}div.search-box{position:relative;display:flex}div.search-box>input[type=text]{flex-grow:1;background-color:var(--search-box-color);outline:none;border:none;border-radius:.25rem;height:1rem;padding:.7rem;padding-right:calc(1rem + 0.7rem);margin:.5rem;font-size:1rem;color:var(--text-color)}div.search-box>span.icon{display:flex;position:absolute;top:calc(50% - 1rem/2);right:1rem;width:1rem;height:1rem;box-sizing:border-box}div.settings-list{display:flex;flex-direction:column}div.settings-list>*{margin:.5rem}div.settings-list button{padding:.5rem;border-radius:.25rem}div.settings-list input{width:100%} diff --git a/sticker.pinapelz.moe/style/index.sass b/sticker.pinapelz.moe/style/index.sass deleted file mode 100644 index 1269be5..0000000 --- a/sticker.pinapelz.moe/style/index.sass +++ /dev/null @@ -1,227 +0,0 @@ -// maunium-stickerpicker - A fast and simple Matrix sticker picker widget. -// Copyright (C) 2020 Tulir Asokan -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -* - font-family: sans-serif - -body - margin: 0 - -h1 - font-size: 1rem - -\:root - --stickers-per-row: 4 - --sticker-size: calc(100vw / var(--stickers-per-row)) - -$nav-sticker-size: 12vw -$nav-bottom-highlight: 2px -$nav-height: calc(#{$nav-sticker-size} + #{$nav-bottom-highlight}) -$nav-height-inverse: calc(-#{$nav-sticker-size} - #{$nav-bottom-highlight}) - -$search-box-icon-size: 1rem -$search-box-input-height: 1rem -$search-box-input-padding: .7rem -$search-box-input-margin: .5rem -$search-box-height: calc(2 * #{$search-box-input-padding} + 2 * #{$search-box-input-margin} + #{$search-box-input-height}) - -main - color: var(--text-color) - - &.spinner - margin-top: 5rem - - &.error, &.empty - margin: 2rem - - &.empty - text-align: center - - &.has-content - position: fixed - top: 0 - left: 0 - right: 0 - bottom: 0 - display: grid - grid-template-rows: $nav-height min-content auto - -main.theme-light - --highlight-color: #eee - --search-box-color: var(--highlight-color) - --text-color: black - background-color: white - -main.theme-dark - --highlight-color: #444 - --search-box-color: #383e4b - --text-color: white - background-color: #22262e - - .icon.icon-giphy - background-image: url(../res/giphy-dark.svg) - -main.theme-black - --highlight-color: #222 - --search-box-color: var(--highlight-color) - --text-color: white - background-color: black - - .icon.icon-giphy - background-image: url(../res/giphy-dark.svg) - -div.powered-by-giphy - padding: 1rem - > img - width: 100% - -.icon - width: 100% - height: 100% - background-color: var(--text-color) - mask-size: contain - -webkit-mask-size: contain - mask-image: var(--icon-image) - -webkit-mask-image: var(--icon-image) - - &.icon-settings - --icon-image: url(../res/settings.svg) - - &.icon-recent - --icon-image: url(../res/recent.svg) - - &.icon.icon-search - --icon-image: url(../res/search.svg) - - &.icon.icon-giphy - background: center / contain no-repeat url(../res/giphy-light.svg) - mask: unset - -nav - display: flex - overflow-x: auto - - > a - border-bottom: $nav-bottom-highlight solid transparent - - &.visible - border-bottom-color: green - - > div.sticker - width: $nav-sticker-size - height: $nav-sticker-size - -div.pack-list, nav - scrollbar-width: none - - &::-webkit-scrollbar - display: none - -div.pack-list - overflow-y: auto - -div.pack-list.ios-safari-hack - position: fixed - top: calc(#{$nav-height} + #{$search-box-height}) - bottom: 0 - left: 0 - right: 0 - -webkit-overflow-scrolling: touch - -div.search-empty - margin: 1.2rem - text-align: center - -section.stickerpack - margin-top: .75rem - - > div.sticker-list - display: flex - flex-wrap: wrap - - > h1 - margin: 0 0 0 .75rem - -section.stickerpack#pack-giphy - display: flex - justify-content: space-between - flex-direction: column - min-height: 100% - -div.sticker - display: flex - padding: 4px - cursor: pointer - position: relative - width: var(--sticker-size) - height: var(--sticker-size) - box-sizing: border-box - - &:hover - background-color: var(--highlight-color) - - > img - display: none - width: 100% - object-fit: contain - - &.visible - display: initial - - > .icon - width: 70% - height: 70% - margin: 15% - -div.search-box - position: relative - display: flex - - >input[type="text"] - flex-grow: 1 - background-color: var(--search-box-color) - outline: none - border: none - border-radius: .25rem - height: $search-box-input-height - padding: $search-box-input-padding - padding-right: calc(#{$search-box-icon-size} + #{$search-box-input-padding}) - margin: $search-box-input-margin - font-size: 1rem - color: var(--text-color) - - >span.icon - display: flex - position: absolute - top: calc(50% - #{$search-box-icon-size} / 2) - right: $search-box-icon-size - width: $search-box-icon-size - height: $search-box-icon-size - box-sizing: border-box - -div.settings-list - display: flex - flex-direction: column - - > * - margin: .5rem - - button - padding: .5rem - border-radius: .25rem - - input - width: 100% diff --git a/sticker.pinapelz.moe/style/spinner.css b/sticker.pinapelz.moe/style/spinner.css deleted file mode 100644 index de03d9c..0000000 --- a/sticker.pinapelz.moe/style/spinner.css +++ /dev/null @@ -1 +0,0 @@ -.sk-center-wrapper{width:100%;display:flex;justify-content:space-around}.sk-chase{position:relative;animation:sk-chase 2.5s infinite linear both}.sk-chase.green>.sk-chase-dot:before{background-color:#00c853}.sk-chase>.sk-chase-dot{width:100%;height:100%;position:absolute;left:0;top:0;animation:sk-chase-dot 2s infinite ease-in-out both}.sk-chase>.sk-chase-dot:before{content:"";display:block;width:25%;height:25%;border-radius:100%;animation:sk-chase-dot-before 2s infinite ease-in-out both;background-color:#fff}.sk-chase>.sk-chase-dot:nth-child(1){animation-delay:-1.1s}.sk-chase>.sk-chase-dot:nth-child(2){animation-delay:-1s}.sk-chase>.sk-chase-dot:nth-child(3){animation-delay:-0.9s}.sk-chase>.sk-chase-dot:nth-child(4){animation-delay:-0.8s}.sk-chase>.sk-chase-dot:nth-child(5){animation-delay:-0.7s}.sk-chase>.sk-chase-dot:nth-child(6){animation-delay:-0.6s}.sk-chase>.sk-chase-dot:nth-child(1):before{animation-delay:-1.1s}.sk-chase>.sk-chase-dot:nth-child(2):before{animation-delay:-1s}.sk-chase>.sk-chase-dot:nth-child(3):before{animation-delay:-0.9s}.sk-chase>.sk-chase-dot:nth-child(4):before{animation-delay:-0.8s}.sk-chase>.sk-chase-dot:nth-child(5):before{animation-delay:-0.7s}.sk-chase>.sk-chase-dot:nth-child(6):before{animation-delay:-0.6s}@keyframes sk-chase{100%{transform:rotate(360deg)}}@keyframes sk-chase-dot{80%,100%{transform:rotate(360deg)}}@keyframes sk-chase-dot-before{50%{transform:scale(0.4)}100%,0%{transform:scale(1)}} diff --git a/sticker.pinapelz.moe/style/spinner.sass b/sticker.pinapelz.moe/style/spinner.sass deleted file mode 100644 index cbc9042..0000000 --- a/sticker.pinapelz.moe/style/spinner.sass +++ /dev/null @@ -1,68 +0,0 @@ -// Chase spinner from https://tobiasahlin.com/spinkit/. MIT license -.sk-center-wrapper - width: 100% - display: flex - justify-content: space-around - -.sk-chase - position: relative - animation: sk-chase 2.5s infinite linear both - - &.green > .sk-chase-dot:before - background-color: #00C853 - - > .sk-chase-dot - width: 100% - height: 100% - position: absolute - left: 0 - top: 0 - animation: sk-chase-dot 2.0s infinite ease-in-out both - - &:before - content: '' - display: block - width: 25% - height: 25% - border-radius: 100% - animation: sk-chase-dot-before 2.0s infinite ease-in-out both - background-color: #FFF - - &:nth-child(1) - animation-delay: -1.1s - &:nth-child(2) - animation-delay: -1.0s - &:nth-child(3) - animation-delay: -0.9s - &:nth-child(4) - animation-delay: -0.8s - &:nth-child(5) - animation-delay: -0.7s - &:nth-child(6) - animation-delay: -0.6s - &:nth-child(1):before - animation-delay: -1.1s - &:nth-child(2):before - animation-delay: -1.0s - &:nth-child(3):before - animation-delay: -0.9s - &:nth-child(4):before - animation-delay: -0.8s - &:nth-child(5):before - animation-delay: -0.7s - &:nth-child(6):before - animation-delay: -0.6s - -@keyframes sk-chase - 100% - transform: rotate(360deg) - -@keyframes sk-chase-dot - 80%, 100% - transform: rotate(360deg) - -@keyframes sk-chase-dot-before - 50% - transform: scale(0.4) - 100%, 0% - transform: scale(1.0) diff --git a/sticker.pinapelz.moe/yarn.lock b/sticker.pinapelz.moe/yarn.lock deleted file mode 100644 index de00773..0000000 --- a/sticker.pinapelz.moe/yarn.lock +++ /dev/null @@ -1,719 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@rollup/plugin-commonjs@^16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz#169004d56cd0f0a1d0f35915d31a036b0efe281f" - integrity sha512-LuNyypCP3msCGVQJ7ki8PqYdpjfEkE/xtFa5DqlF+7IBD0JsfMZ87C58heSwIMint58sAUZbt3ITqOmdQv/dXw== - dependencies: - "@rollup/pluginutils" "^3.1.0" - commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" - -"@rollup/plugin-inject@^4.0.0", "@rollup/plugin-inject@^4.0.2": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz#fbeee66e9a700782c4f65c8b0edbafe58678fbc2" - integrity sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ== - dependencies: - "@rollup/pluginutils" "^3.1.0" - estree-walker "^2.0.1" - magic-string "^0.25.7" - -"@rollup/plugin-json@^4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" - integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== - dependencies: - "@rollup/pluginutils" "^3.0.8" - -"@rollup/plugin-node-resolve@^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz#44064a2b98df7530e66acf8941ff262fc9b4ead8" - integrity sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.17.0" - -"@rollup/plugin-replace@^2.4.2": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" - integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@types/estree@*": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/node@*": - version "20.12.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" - integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== - dependencies: - undici-types "~5.26.4" - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -acorn-walk@^8.2.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" - integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== - -acorn@^8.7.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -assert@^1.4.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.1.tgz#038ab248e4ff078e7bc2485ba6e6388466c78f76" - integrity sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A== - dependencies: - object.assign "^4.1.4" - util "^0.10.4" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -builtin-modules@^3.1.0, builtin-modules@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== - -call-bind@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - -"chokidar@>=3.0.0 <4.0.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -cjs-module-lexer@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" - integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -define-data-property@^1.0.1, define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.6.0.tgz#e72ab05b7412e62b9be37c37a09bdb6000d706f0" - integrity sha512-f8kcHX1ArhllUtb/wVSyvygoKCznIjnxhLxy7TCvIiMdT7fL4ZDTIKaadMe6eLvOXg6Wk02UeoFgUoZ2EKZZUA== - -esinstall@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/esinstall/-/esinstall-1.1.7.tgz#ceabeb4b8685bf48c805a503e292dfafe4e0cb22" - integrity sha512-irDsrIF7fZ5BCQEAV5gmH+4nsK6JhnkI9C9VloXdmzJLbM1EcshPw8Ap95UUGc4ZJdzGeOrjV+jgKjQ/Z7Q3pg== - dependencies: - "@rollup/plugin-commonjs" "^16.0.0" - "@rollup/plugin-inject" "^4.0.2" - "@rollup/plugin-json" "^4.0.0" - "@rollup/plugin-node-resolve" "^10.0.0" - "@rollup/plugin-replace" "^2.4.2" - builtin-modules "^3.2.0" - cjs-module-lexer "^1.2.1" - es-module-lexer "^0.6.0" - execa "^5.1.1" - is-valid-identifier "^2.0.2" - kleur "^4.1.1" - mkdirp "^1.0.3" - picomatch "^2.3.0" - resolve "^1.20.0" - rimraf "^3.0.0" - rollup "~2.37.1" - rollup-plugin-polyfill-node "^0.6.2" - slash "~3.0.0" - validate-npm-package-name "^3.0.0" - vm2 "^3.9.2" - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -execa@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@^7.1.3, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -hasown@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -htm@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/htm/-/htm-3.1.1.tgz#49266582be0dc66ed2235d5ea892307cc0c24b78" - integrity sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -immutable@^4.0.0: - version "4.3.6" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.6.tgz#6a05f7858213238e587fb83586ffa3b4b27f0447" - integrity sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.13.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-reference@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-valid-identifier@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-valid-identifier/-/is-valid-identifier-2.0.2.tgz#146d9dbf29821b8118580b039d2203aa4bd1da4b" - integrity sha512-mpS5EGqXOwzXtKAg6I44jIAqeBfntFLxpAth1rrKbxtKyI6LPktyDYpHBI+tHlduhhX/SF26mFXmxQu995QVqg== - dependencies: - assert "^1.4.1" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -kleur@^4.1.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" - integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== - -magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -preact@^10.5.14: - version "10.22.0" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.22.0.tgz#a50f38006ae438d255e2631cbdaf7488e6dd4e16" - integrity sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw== - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -resolve@^1.17.0, resolve@^1.20.0: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rollup-plugin-polyfill-node@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.6.2.tgz#dea62e00f5cc2c174e4b4654b5daab79b1a92fc3" - integrity sha512-gMCVuR0zsKq0jdBn8pSXN1Ejsc458k2QsFFvQdbHoM0Pot5hEnck+pBP/FDwFS6uAi77pD3rDTytsaUStsOMlA== - dependencies: - "@rollup/plugin-inject" "^4.0.0" - -rollup@~2.37.1: - version "2.37.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.37.1.tgz#aa7aadffd75c80393f9314f9857e851b0ffd34e7" - integrity sha512-V3ojEeyGeSdrMSuhP3diBb06P+qV4gKQeanbDv+Qh/BZbhdZ7kHV0xAt8Yjk4GFshq/WjO7R4c7DFM20AwTFVQ== - optionalDependencies: - fsevents "~2.1.2" - -sass@^1.42.1: - version "1.77.2" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.2.tgz#18d4ed2eefc260cdc8099c5439ec1303fd5863aa" - integrity sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^3.0.3: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -slash@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -"source-map-js@>=0.6.2 <2.0.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== - -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -util@^0.10.4: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - dependencies: - inherits "2.0.3" - -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== - dependencies: - builtins "^1.0.3" - -vm2@^3.9.2: - version "3.9.19" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.19.tgz#be1e1d7a106122c6c492b4d51c2e8b93d3ed6a4a" - integrity sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg== - dependencies: - acorn "^8.7.0" - acorn-walk "^8.2.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -- cgit v1.2.3