diff --git a/.eslintrc.cjs b/.eslintrc.cjs index bead363d..eb55c333 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -12,5 +12,8 @@ module.exports = { "vue/require-default-prop": 0, "indent": ["error", 4], "quotes": ["error", "double"], + "object-curly-spacing": ["error", "always"], + "semi": ["error", "always"], + "comma-spacing": ["error", { "before": false, "after": true }] } -} \ No newline at end of file +}; \ No newline at end of file diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 81d78519..95f8965b 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -10,9 +10,10 @@ jobs: matrix: php: [8.1, 8.0] laravel: [9.*] + ssr: [true, false] dependency-version: [prefer-lowest, prefer-stable] - name: P${{ matrix.php }} - ${{ matrix.dependency-version }} + name: Test P${{ matrix.php }} - L${{ matrix.laravel }} - SSR ${{ matrix.ssr }} - ${{ matrix.dependency-version }} steps: - name: Checkout code @@ -75,12 +76,24 @@ jobs: cd app php artisan websockets:serve & + - name: Start SSR server + run: | + cd app + sed -i -e "s|SPLADE_SSR_ENABLED=false|SPLADE_SSR_ENABLED=true|g" .env + node bootstrap/ssr/ssr.js & + if: matrix.ssr == true + - name: Run Laravel Server run: | cd app php artisan serve & - - name: Execute tests + - name: Execute Feature/Unit tests + run: | + cd app + php artisan test + + - name: Execute Dusk tests run: | cd app php artisan dusk @@ -112,3 +125,56 @@ jobs: with: name: logs path: app/storage/logs + + stub-tests: + runs-on: ubuntu-latest + + strategy: + fail-fast: true + matrix: + php: [8.1, 8.0] + laravel: [9.*] + dependency-version: [prefer-lowest, prefer-stable] + + name: Test Stubs P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }} + + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, mysql, mysqli, pdo_mysql + coverage: none + + - name: Setup Laravel + run: | + composer create-project laravel/laravel:^9 . + composer require protonemedia/laravel-splade + rm -rf vendor/protonemedia/laravel-splade + + - name: Checkout code + uses: actions/checkout@v2 + with: + path: "vendor/protonemedia/laravel-splade" + + - name: Install Splade + run: | + composer dump + php artisan splade:install + + - name: Install NPM dependencies + run: | + npm i + rm -rf node_modules/@protonemedia/laravel-splade/dist + cp -R vendor/protonemedia/laravel-splade/dist node_modules/@protonemedia/laravel-splade/ + + - name: Compile assets + run: npm run build + + - name: Start SSR server + run: | + echo "SPLADE_SSR_ENABLED=true" >> .env + node bootstrap/ssr/ssr.mjs & + + - name: Run Test command + run: php artisan splade:ssr-test diff --git a/.gitignore b/.gitignore index 5bcc033c..32adfa20 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ testbench.yaml vendor node_modules protonemedia-laravel-splade-*.tgz +app/bootstrap/ssr* diff --git a/app/.env.example b/app/.env.example index 5be53091..3bcabcec 100644 --- a/app/.env.example +++ b/app/.env.example @@ -45,3 +45,5 @@ VITE_PUSHER_PORT="${PUSHER_PORT}" VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" VITE_PUSHER_HOST="${PUSHER_HOST}" VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +SPLADE_SSR_ENABLED=false \ No newline at end of file diff --git a/app/app/Http/Controllers/EventController.php b/app/app/Http/Controllers/EventController.php deleted file mode 100644 index 61d5d07e..00000000 --- a/app/app/Http/Controllers/EventController.php +++ /dev/null @@ -1,36 +0,0 @@ -=10" @@ -1526,9 +1526,9 @@ } }, "node_modules/rollup": { - "version": "2.77.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.0.tgz", - "integrity": "sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==", + "version": "2.77.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.2.tgz", + "integrity": "sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -1814,7 +1814,7 @@ }, "@protonemedia/laravel-splade": { "version": "file:../protonemedia-laravel-splade-0.1.2.tgz", - "integrity": "sha512-TRrXHCF0iEFt6BzUfmRsVRNYjV42cne5+GLv0o5NqntajAlFwS2BIOQyIm8NvO+Oj7GQ+x4oWC/IukJXN41tQg==", + "integrity": "sha512-Fkn1KER2VZtCgnh6Gh7MK+N76zVvGg49CcobSh6ZgchVs6o/bWwX01qcQQU1Tddc0xzStli7fc+AInviePN/Og==", "dev": true, "requires": {} }, @@ -2039,15 +2039,15 @@ } }, "browserslist": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", - "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001366", - "electron-to-chromium": "^1.4.188", + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.4" + "update-browserslist-db": "^1.0.5" } }, "camelcase-css": { @@ -2152,9 +2152,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.199", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.199.tgz", - "integrity": "sha512-WIGME0Cs7oob3mxsJwHbeWkH0tYkIE/sjkJ8ML2BYmuRcjhRl/q5kVDXG7W9LOOKwzPU5M0LBlXRq9rlSgnNlg==", + "version": "1.4.202", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.202.tgz", + "integrity": "sha512-JYsK2ex9lmQD27kj19fhXYxzFJ/phLAkLKHv49A5UY6kMRV2xED3qMMLg/voW/+0AR6wMiI+VxlmK9NDtdxlPA==", "dev": true }, "esbuild": { @@ -2473,9 +2473,9 @@ "dev": true }, "laravel-echo": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/laravel-echo/-/laravel-echo-1.12.1.tgz", - "integrity": "sha512-zLI5z1Q+ipqsT4XInFMmHXHmk2Mh5KBH6+l8GAZg+tWc3IKSiOHni7XA8ndJAQCNqrDupnDX+TAk5P0XjwLjGA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/laravel-echo/-/laravel-echo-1.13.0.tgz", + "integrity": "sha512-KWcr9Sthr8DUfrFtCKNMGq4IRTmswW+Xu92eL1yH2V7/C/3XGOxrTgzTB98jnk423gy+1DMyaavnujG9HeY3Jg==", "dev": true }, "laravel-vite-plugin": { @@ -2746,9 +2746,9 @@ "dev": true }, "rollup": { - "version": "2.77.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.0.tgz", - "integrity": "sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==", + "version": "2.77.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.2.tgz", + "integrity": "sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==", "dev": true, "requires": { "fsevents": "~2.3.2" diff --git a/app/package.json b/app/package.json index 94c03fa0..8948a7c6 100644 --- a/app/package.json +++ b/app/package.json @@ -2,9 +2,10 @@ "private": true, "scripts": { "dev": "vite", - "build": "vite build" + "build": "vite build && vite build --ssr" }, "devDependencies": { + "@protonemedia/laravel-splade": "file:../protonemedia-laravel-splade-0.1.2.tgz", "@tailwindcss/forms": "^0.5.2", "@tailwindcss/typography": "^0.5.2", "@vitejs/plugin-vue": "^2.3.3", @@ -17,7 +18,6 @@ "pusher-js": "^7.2.0", "tailwindcss": "^3.1.0", "vite": "^2.9.11", - "vue": "^3.2.37", - "@protonemedia/laravel-splade": "file:../protonemedia-laravel-splade-0.1.2.tgz" + "vue": "^3.2.37" } } \ No newline at end of file diff --git a/app/phpunit.xml.dist b/app/phpunit.xml.dist new file mode 100644 index 00000000..38b5f726 --- /dev/null +++ b/app/phpunit.xml.dist @@ -0,0 +1,26 @@ + + + + + ./tests/Unit + + + ./tests/Feature + + + + + ./app + + + + + + + + + + + + + diff --git a/app/resources/js/app.js b/app/resources/js/app.js index b695a01f..721dd8b7 100644 --- a/app/resources/js/app.js +++ b/app/resources/js/app.js @@ -1,21 +1,21 @@ -import './bootstrap'; -import '../css/app.css'; +import "./bootstrap"; +import "../css/app.css"; -import { createApp } from 'vue' +import { createApp } from "vue"; // for dev -// import { renderSpladeApp, SpladePlugin } from '../../../dist/protone-media-laravel-splade' +// import { renderSpladeApp, SpladePlugin } from "../../../dist/protone-media-laravel-splade"; // for build -import { renderSpladeApp, SpladePlugin } from '@protonemedia/laravel-splade' +import { renderSpladeApp, SpladePlugin } from "@protonemedia/laravel-splade"; -const el = document.getElementById('app') +const el = document.getElementById("app"); createApp({ render: renderSpladeApp({ el }) }) .use(SpladePlugin, { - 'max_keep_alive': 10, - 'transform_anchors': false, + "max_keep_alive": 10, + "transform_anchors": false, }) .mount(el); diff --git a/app/resources/js/bootstrap.js b/app/resources/js/bootstrap.js index 3d53a141..9ee06b1a 100644 --- a/app/resources/js/bootstrap.js +++ b/app/resources/js/bootstrap.js @@ -1,4 +1,4 @@ -import _ from 'lodash'; +import _ from "lodash"; window._ = _; /** @@ -7,10 +7,10 @@ window._ = _; * CSRF token as a header based on the value of the "XSRF" token cookie. */ -import axios from 'axios'; +import axios from "axios"; window.axios = axios; -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; +window.axios.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"; /** * Echo exposes an expressive API for subscribing to channels and listening @@ -18,20 +18,20 @@ window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; * allows your team to easily build robust real-time web applications. */ -import Echo from 'laravel-echo'; +import Echo from "laravel-echo"; -import Pusher from 'pusher-js'; +import Pusher from "pusher-js"; window.Pusher = Pusher; const echoConfig = { - broadcaster: 'pusher', - cluster: 'eu', + broadcaster: "pusher", + cluster: "eu", key: import.meta.env.VITE_PUSHER_APP_KEY, wsHost: import.meta.env.VITE_PUSHER_HOST ?? `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, - forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', - enabledTransports: ['ws', 'wss'], + forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? "https") === "https", + enabledTransports: ["ws", "wss"], }; window.Echo = new Echo(echoConfig); diff --git a/app/resources/js/ssr.js b/app/resources/js/ssr.js new file mode 100644 index 00000000..320cdb45 --- /dev/null +++ b/app/resources/js/ssr.js @@ -0,0 +1,16 @@ +import { createServer } from "http"; +import { createSSRApp } from "vue"; +import { renderToString } from "vue/server-renderer"; + +// for dev +// import { renderSpladeApp, SpladePlugin, startServer } from "../../../dist/protone-media-laravel-splade"; + +// for build +import { renderSpladeApp, SpladePlugin, startServer } from "@protonemedia/laravel-splade"; + +startServer(createServer, renderToString, (props) => { + return createSSRApp({ + render: renderSpladeApp(props) + }) + .use(SpladePlugin); +}); \ No newline at end of file diff --git a/app/tests/Feature/SsrTest.php b/app/tests/Feature/SsrTest.php new file mode 100644 index 00000000..fe23aee8 --- /dev/null +++ b/app/tests/Feature/SsrTest.php @@ -0,0 +1,32 @@ +markTestSkipped('SSR not enabled'); + } + + $data = (new Ssr)->render( + components: SpladeMiddleware::renderedComponents(), + html: view('form.default')->render(), + splade: (object) [], + ); + + $this->assertArrayHasKey('body', $data); + + // evaluated form + $this->assertStringContainsString('
', $data['body']); + + // rendered components + $this->assertStringContainsString('grid grid-cols-3 grid-flow-row-3', $data['body']); + } +} diff --git a/app/tests/Unit/.gitkeep b/app/tests/Unit/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/app/vite.config.js b/app/vite.config.js index cd8734f6..6aedad37 100644 --- a/app/vite.config.js +++ b/app/vite.config.js @@ -1,11 +1,12 @@ -import { defineConfig } from 'vite'; -import laravel from 'laravel-vite-plugin'; -import vue from '@vitejs/plugin-vue'; +import { defineConfig } from "vite"; +import laravel from "laravel-vite-plugin"; +import vue from "@vitejs/plugin-vue"; export default defineConfig({ plugins: [ laravel({ - input: 'resources/js/app.js', + input: "resources/js/app.js", + ssr: "resources/js/ssr.js", refresh: true, }), vue({ @@ -22,7 +23,7 @@ export default defineConfig({ }, resolve: { alias: { - vue: 'vue/dist/vue.esm-bundler.js' + vue: "vue/dist/vue.esm-bundler.js" } - }, + } }); \ No newline at end of file diff --git a/config/splade.php b/config/splade.php index 17acce19..ad22868f 100644 --- a/config/splade.php +++ b/config/splade.php @@ -8,4 +8,15 @@ 'blade' => [ 'component_prefix' => 'splade', ], + + 'ssr' => [ + + 'enabled' => env('SPLADE_SSR_ENABLED', false), + + 'server' => 'http://127.0.0.1:9000/', + + 'blade_fallback' => true, + + ], + ]; diff --git a/dist/protone-media-laravel-splade.js b/dist/protone-media-laravel-splade.js index e0586792..761ce46d 100644 --- a/dist/protone-media-laravel-splade.js +++ b/dist/protone-media-laravel-splade.js @@ -1,344 +1,339 @@ -import or from "axios"; -import { ref as v, computed as O, createApp as rn, watch as Ee, openBlock as z, createBlock as Se, unref as ee, h as x, compile as nn, onMounted as R, createElementBlock as He, createElementVNode as an, provide as U, inject as q, nextTick as ir, Fragment as ke, KeepAlive as on, normalizeClass as sn, createVNode as ln, renderList as un, createCommentVNode as cn, cloneVNode as fn, watchEffect as G, defineComponent as B, onUnmounted as ve, Teleport as dn, reactive as pn, withModifiers as hn, renderSlot as mn } from "vue"; -function vn(e, t) { +import ar from "axios"; +import { ref as h, computed as w, watch as Se, openBlock as N, createBlock as ge, unref as X, h as $, onMounted as P, createElementBlock as je, createElementVNode as sn, provide as L, inject as B, nextTick as ir, resolveDynamicComponent as ln, withCtx as un, normalizeClass as cn, createVNode as fn, Fragment as ut, renderList as dn, createCommentVNode as pn, cloneVNode as hn, watchEffect as M, defineComponent as A, onUnmounted as pe, Teleport as vn, reactive as mn, withModifiers as gn, renderSlot as yn } from "vue"; +function bn(e, t) { for (var r = -1, n = e == null ? 0 : e.length; ++r < n && t(e[r], r, e) !== !1; ) ; return e; } -function gn(e) { +function wn(e) { return function(t, r, n) { - for (var a = -1, o = Object(t), i = n(t), l = i.length; l--; ) { - var s = i[e ? l : ++a]; - if (r(o[s], s, o) === !1) + for (var a = -1, i = Object(t), o = n(t), l = o.length; l--; ) { + var s = o[e ? l : ++a]; + if (r(i[s], s, i) === !1) break; } return t; }; } -var yn = gn(); -const bn = yn; -function wn(e, t) { +var Sn = wn(); +const _n = Sn; +function On(e, t) { for (var r = -1, n = Array(e); ++r < e; ) n[r] = t(r); return n; } -var _n = typeof global == "object" && global && global.Object === Object && global; -const sr = _n; -var Sn = typeof self == "object" && self && self.Object === Object && self, $n = sr || Sn || Function("return this")(); -const J = $n; -var On = J.Symbol; -const re = On; -var lr = Object.prototype, Tn = lr.hasOwnProperty, En = lr.toString, we = re ? re.toStringTag : void 0; -function An(e) { - var t = Tn.call(e, we), r = e[we]; +var $n = typeof global == "object" && global && global.Object === Object && global; +const or = $n; +var Tn = typeof self == "object" && self && self.Object === Object && self, En = or || Tn || Function("return this")(); +const G = En; +var Pn = G.Symbol; +const Q = Pn; +var sr = Object.prototype, An = sr.hasOwnProperty, xn = sr.toString, ve = Q ? Q.toStringTag : void 0; +function Dn(e) { + var t = An.call(e, ve), r = e[ve]; try { - e[we] = void 0; + e[ve] = void 0; var n = !0; } catch { } - var a = En.call(e); - return n && (t ? e[we] = r : delete e[we]), a; + var a = xn.call(e); + return n && (t ? e[ve] = r : delete e[ve]), a; } -var Pn = Object.prototype, xn = Pn.toString; -function Dn(e) { - return xn.call(e); +var Cn = Object.prototype, Fn = Cn.toString; +function jn(e) { + return Fn.call(e); } -var Fn = "[object Null]", Cn = "[object Undefined]", Ct = re ? re.toStringTag : void 0; -function ae(e) { - return e == null ? e === void 0 ? Cn : Fn : Ct && Ct in Object(e) ? An(e) : Dn(e); +var Rn = "[object Null]", Bn = "[object Undefined]", Ct = Q ? Q.toStringTag : void 0; +function ee(e) { + return e == null ? e === void 0 ? Bn : Rn : Ct && Ct in Object(e) ? Dn(e) : jn(e); } -function ne(e) { +function Z(e) { return e != null && typeof e == "object"; } -var jn = "[object Arguments]"; -function jt(e) { - return ne(e) && ae(e) == jn; +var In = "[object Arguments]"; +function Ft(e) { + return Z(e) && ee(e) == In; } -var ur = Object.prototype, Rn = ur.hasOwnProperty, Bn = ur.propertyIsEnumerable, Ln = jt(function() { +var lr = Object.prototype, Ln = lr.hasOwnProperty, Mn = lr.propertyIsEnumerable, qn = Ft(function() { return arguments; -}()) ? jt : function(e) { - return ne(e) && Rn.call(e, "callee") && !Bn.call(e, "callee"); +}()) ? Ft : function(e) { + return Z(e) && Ln.call(e, "callee") && !Mn.call(e, "callee"); }; -const cr = Ln; -var In = Array.isArray; -const M = In; -function Mn() { +const ur = qn; +var Nn = Array.isArray; +const R = Nn; +function Hn() { return !1; } -var fr = typeof exports == "object" && exports && !exports.nodeType && exports, Rt = fr && typeof module == "object" && module && !module.nodeType && module, qn = Rt && Rt.exports === fr, Bt = qn ? J.Buffer : void 0, Nn = Bt ? Bt.isBuffer : void 0, Hn = Nn || Mn; -const et = Hn; -var kn = 9007199254740991, Un = /^(?:0|[1-9]\d*)$/; -function mt(e, t) { +var cr = typeof exports == "object" && exports && !exports.nodeType && exports, jt = cr && typeof module == "object" && module && !module.nodeType && module, kn = jt && jt.exports === cr, Rt = kn ? G.Buffer : void 0, Un = Rt ? Rt.isBuffer : void 0, Gn = Un || Hn; +const We = Gn; +var Kn = 9007199254740991, zn = /^(?:0|[1-9]\d*)$/; +function ct(e, t) { var r = typeof e; - return t = t == null ? kn : t, !!t && (r == "number" || r != "symbol" && Un.test(e)) && e > -1 && e % 1 == 0 && e < t; + return t = t == null ? Kn : t, !!t && (r == "number" || r != "symbol" && zn.test(e)) && e > -1 && e % 1 == 0 && e < t; } -var Gn = 9007199254740991; -function vt(e) { - return typeof e == "number" && e > -1 && e % 1 == 0 && e <= Gn; +var Wn = 9007199254740991; +function ft(e) { + return typeof e == "number" && e > -1 && e % 1 == 0 && e <= Wn; } -var Kn = "[object Arguments]", zn = "[object Array]", Wn = "[object Boolean]", Xn = "[object Date]", Jn = "[object Error]", Yn = "[object Function]", Vn = "[object Map]", Qn = "[object Number]", Zn = "[object Object]", ea = "[object RegExp]", ta = "[object Set]", ra = "[object String]", na = "[object WeakMap]", aa = "[object ArrayBuffer]", oa = "[object DataView]", ia = "[object Float32Array]", sa = "[object Float64Array]", la = "[object Int8Array]", ua = "[object Int16Array]", ca = "[object Int32Array]", fa = "[object Uint8Array]", da = "[object Uint8ClampedArray]", pa = "[object Uint16Array]", ha = "[object Uint32Array]", w = {}; -w[ia] = w[sa] = w[la] = w[ua] = w[ca] = w[fa] = w[da] = w[pa] = w[ha] = !0; -w[Kn] = w[zn] = w[aa] = w[Wn] = w[oa] = w[Xn] = w[Jn] = w[Yn] = w[Vn] = w[Qn] = w[Zn] = w[ea] = w[ta] = w[ra] = w[na] = !1; -function ma(e) { - return ne(e) && vt(e.length) && !!w[ae(e)]; +var Jn = "[object Arguments]", Xn = "[object Array]", Yn = "[object Boolean]", Vn = "[object Date]", Qn = "[object Error]", Zn = "[object Function]", ea = "[object Map]", ta = "[object Number]", ra = "[object Object]", na = "[object RegExp]", aa = "[object Set]", ia = "[object String]", oa = "[object WeakMap]", sa = "[object ArrayBuffer]", la = "[object DataView]", ua = "[object Float32Array]", ca = "[object Float64Array]", fa = "[object Int8Array]", da = "[object Int16Array]", pa = "[object Int32Array]", ha = "[object Uint8Array]", va = "[object Uint8ClampedArray]", ma = "[object Uint16Array]", ga = "[object Uint32Array]", y = {}; +y[ua] = y[ca] = y[fa] = y[da] = y[pa] = y[ha] = y[va] = y[ma] = y[ga] = !0; +y[Jn] = y[Xn] = y[sa] = y[Yn] = y[la] = y[Vn] = y[Qn] = y[Zn] = y[ea] = y[ta] = y[ra] = y[na] = y[aa] = y[ia] = y[oa] = !1; +function ya(e) { + return Z(e) && ft(e.length) && !!y[ee(e)]; } -function va(e) { +function ba(e) { return function(t) { return e(t); }; } -var dr = typeof exports == "object" && exports && !exports.nodeType && exports, $e = dr && typeof module == "object" && module && !module.nodeType && module, ga = $e && $e.exports === dr, Je = ga && sr.process, ya = function() { +var fr = typeof exports == "object" && exports && !exports.nodeType && exports, ye = fr && typeof module == "object" && module && !module.nodeType && module, wa = ye && ye.exports === fr, He = wa && or.process, Sa = function() { try { - var e = $e && $e.require && $e.require("util").types; - return e || Je && Je.binding && Je.binding("util"); + var e = ye && ye.require && ye.require("util").types; + return e || He && He.binding && He.binding("util"); } catch { } }(); -const Lt = ya; -var It = Lt && Lt.isTypedArray, ba = It ? va(It) : ma; -const pr = ba; -var wa = Object.prototype, _a = wa.hasOwnProperty; -function Sa(e, t) { - var r = M(e), n = !r && cr(e), a = !r && !n && et(e), o = !r && !n && !a && pr(e), i = r || n || a || o, l = i ? wn(e.length, String) : [], s = l.length; +const Bt = Sa; +var It = Bt && Bt.isTypedArray, _a = It ? ba(It) : ya; +const dr = _a; +var Oa = Object.prototype, $a = Oa.hasOwnProperty; +function Ta(e, t) { + var r = R(e), n = !r && ur(e), a = !r && !n && We(e), i = !r && !n && !a && dr(e), o = r || n || a || i, l = o ? On(e.length, String) : [], s = l.length; for (var u in e) - (t || _a.call(e, u)) && !(i && (u == "length" || a && (u == "offset" || u == "parent") || o && (u == "buffer" || u == "byteLength" || u == "byteOffset") || mt(u, s))) && l.push(u); + (t || $a.call(e, u)) && !(o && (u == "length" || a && (u == "offset" || u == "parent") || i && (u == "buffer" || u == "byteLength" || u == "byteOffset") || ct(u, s))) && l.push(u); return l; } -var $a = Object.prototype; -function Oa(e) { - var t = e && e.constructor, r = typeof t == "function" && t.prototype || $a; +var Ea = Object.prototype; +function Pa(e) { + var t = e && e.constructor, r = typeof t == "function" && t.prototype || Ea; return e === r; } -function Ta(e, t) { +function Aa(e, t) { return function(r) { return e(t(r)); }; } -var Ea = Ta(Object.keys, Object); -const Aa = Ea; -var Pa = Object.prototype, xa = Pa.hasOwnProperty; -function Da(e) { - if (!Oa(e)) - return Aa(e); +var xa = Aa(Object.keys, Object); +const Da = xa; +var Ca = Object.prototype, Fa = Ca.hasOwnProperty; +function ja(e) { + if (!Pa(e)) + return Da(e); var t = []; for (var r in Object(e)) - xa.call(e, r) && r != "constructor" && t.push(r); + Fa.call(e, r) && r != "constructor" && t.push(r); return t; } -function me(e) { +function ce(e) { var t = typeof e; return e != null && (t == "object" || t == "function"); } -var Fa = "[object AsyncFunction]", Ca = "[object Function]", ja = "[object GeneratorFunction]", Ra = "[object Proxy]"; -function hr(e) { - if (!me(e)) +var Ra = "[object AsyncFunction]", Ba = "[object Function]", Ia = "[object GeneratorFunction]", La = "[object Proxy]"; +function pr(e) { + if (!ce(e)) return !1; - var t = ae(e); - return t == Ca || t == ja || t == Fa || t == Ra; + var t = ee(e); + return t == Ba || t == Ia || t == Ra || t == La; } -function mr(e) { - return e != null && vt(e.length) && !hr(e); +function hr(e) { + return e != null && ft(e.length) && !pr(e); } -function gt(e) { - return mr(e) ? Sa(e) : Da(e); +function dt(e) { + return hr(e) ? Ta(e) : ja(e); } -function yt(e, t) { - return e && bn(e, t, gt); +function pt(e, t) { + return e && _n(e, t, dt); } -function Ba(e, t) { +function Ma(e, t) { return function(r, n) { if (r == null) return r; - if (!mr(r)) + if (!hr(r)) return e(r, n); - for (var a = r.length, o = t ? a : -1, i = Object(r); (t ? o-- : ++o < a) && n(i[o], o, i) !== !1; ) + for (var a = r.length, i = t ? a : -1, o = Object(r); (t ? i-- : ++i < a) && n(o[i], i, o) !== !1; ) ; return r; }; } -var La = Ba(yt); -const Ia = La; +var qa = Ma(pt); +const Na = qa; function vr(e) { return e; } -function gr(e) { +function mr(e) { return typeof e == "function" ? e : vr; } -function Ma(e, t) { - var r = M(e) ? vn : Ia; - return r(e, gr(t)); -} -var qa = Array.prototype, Na = qa.reverse; -function Ha(e) { - return e == null ? e : Na.call(e); -} -const ka = { - __name: "SpladeCore", - setup(e, { expose: t }) { - const r = v(1); - function n(c, $) { - window.addEventListener("popstate", a.bind(this)), S($), P(c); - const D = o(location.href, c, {}, r.value); - l(D); - } - function a(c) { - s.value = c.state, f.value = 0, P(s.value.html, s.value.rememberedState.scrollY); - } - function o(c, $, D, be) { - const Q = { - url: c, - html: $, - rememberedState: D, - pageVisitId: be - }; - return s.value = Q, Q; - } - function i(c) { - window.history.pushState(c, "", c.url); - } - function l(c) { - window.history.replaceState(c, "", c.url); - } - const s = v({}); - function u(c) { - const $ = c.request.responseURL; - if (c.data.splade.modal && f.value++, S(c.data.splade), c.data.splade.modal) - return Re(c.data.html, c.data.splade.modal); - ($ !== s.value.url || c.data.splade.refresh || f.value > 0) && (f.value = 0, r.value++, P(c.data.html, 0)); - const D = o($, c.data.html, s.value.rememberedState ? { ...s.value.rememberedState } : {}, r.value); - i(D); - } - const f = v(0); - function p() { - f.value--; - } - const d = v({}), g = v({}), h = (c) => g.value[c], T = (c) => Object.keys(h.value[c]).length > 0, E = v({}), F = (c) => E.value[c], A = v([]), K = O(() => Ha(A.value)); - function N(c) { - A.value.push(c); - } - function C(c) { - A.value[c].dismissed = !0, A.value[c].html = null; - } - const j = v(null); - function _(c, $, D, be) { - let Q, H; - const Ie = new Promise((en, tn) => { - Q = en, H = tn; - }); - return j.value = { - title: c, - text: $, - confirmButton: D, - cancelButton: be, - resolvePromise: Q, - rejectPromise: H - }, Ie; - } - function b() { - j.value = null; - } - function S(c) { - d.value = c.shared ? c.shared : {}, E.value[f.value] = c.flash ? c.flash : {}, Ma(c.toasts ? c.toasts : [], ($) => { - A.value.push($); - }), g.value[f.value] = c.errors ? c.errors : {}; - } - function y(c) { - Ft.value(c); - } - function P(c, $) { - xt.value(c, $); - } - function Re(c, $) { - Dt.value(c, $); - } - const ye = v({}); - function pe(c, $, D) { - ye.value[c] = $, D && Be(c, $); - } - function Be(c, $) { - let D = JSON.parse(localStorage.getItem("splade") || "{}") || {}; - D[c] = $, localStorage.setItem("splade", JSON.stringify(D)); - } - function Le(c, $) { - return $ ? (JSON.parse(localStorage.getItem("splade") || "{}") || {})[c] : ye.value[c]; - } - function oe(c, $, D, be) { - pe("scrollY", window.scrollY); - const Q = or({ - method: $, - url: c, - data: D, - headers: { - "X-Splade": !0, - "X-Requested-With": "XMLHttpRequest", - Accept: "text/html, application/xhtml+xml", - ...be - } - }); - return Q.then((H) => { - u(H); - }).catch((H) => { - const Ie = H.response.data.splade; - Ie && S(Ie), H.response.status != 422 && y(H.response.data.html ? H.response.data.html : H.response.data); - }), Q; - } - function Yr(c) { - oe(c, "GET", {}, {}); - } - function Vr(c) { - oe(c, "GET", {}, { "X-Splade-Modal": "modal" }); - } - function Qr(c) { - oe(c, "GET", {}, { "X-Splade-Modal": "slideover" }); - } - function Zr() { - oe(s.value.url, "GET", {}, { "X-Splade-Refresh": !0 }); +function Ha(e, t) { + var r = R(e) ? bn : Na; + return r(e, mr(t)); +} +var ka = Array.prototype, Ua = ka.reverse; +function Ga(e) { + return e == null ? e : Ua.call(e); +} +const Je = h(1), fe = typeof window > "u"; +function Ka(e, t) { + fe || window.addEventListener("popstate", za.bind(this)), vt(t), mt(e); + const r = fe ? "" : location.href, n = gr(r, e, {}, Je.value); + Ja(n); +} +function za(e) { + H.value = e.state, V.value = 0, mt(H.value.html, H.value.rememberedState.scrollY); +} +function gr(e, t, r, n) { + const a = { + url: e, + html: t, + rememberedState: r, + pageVisitId: n + }; + return H.value = a, a; +} +function Wa(e) { + fe || window.history.pushState(e, "", e.url); +} +function Ja(e) { + fe || window.history.replaceState(e, "", e.url); +} +const H = h({}); +function Xa(e) { + const t = e.request.responseURL; + if (e.data.splade.modal && V.value++, vt(e.data.splade), e.data.splade.modal) + return ii(e.data.html, e.data.splade.modal); + (t !== H.value.url || e.data.splade.refresh || V.value > 0) && (V.value = 0, Je.value++, mt(e.data.html, 0)); + const r = gr(t, e.data.html, H.value.rememberedState ? { ...H.value.rememberedState } : {}, Je.value); + Wa(r); +} +const V = h(0); +function Ya() { + V.value--; +} +const yr = h({}), br = h({}), wr = (e) => br.value[e], Va = (e) => Object.keys(wr.value[e]).length > 0, Sr = h({}), Qa = (e) => Sr.value[e], de = h([]), Za = w(() => Ga(de.value)); +function ei(e) { + de.value.push(e); +} +function ti(e) { + de.value[e].dismissed = !0, de.value[e].html = null; +} +const ht = h(null); +function ri(e, t, r, n) { + let a, i; + const o = new Promise((l, s) => { + a = l, i = s; + }); + return ht.value = { + title: e, + text: t, + confirmButton: r, + cancelButton: n, + resolvePromise: a, + rejectPromise: i + }, o; +} +function ni() { + ht.value = null; +} +function vt(e) { + yr.value = e.shared ? e.shared : {}, Sr.value[V.value] = e.flash ? e.flash : {}, Ha(e.toasts ? e.toasts : [], (t) => { + de.value.push(t); + }), br.value[V.value] = e.errors ? e.errors : {}; +} +function ai(e) { + Er.value(e); +} +function mt(e, t) { + $r.value(e, t); +} +function ii(e, t) { + Tr.value(e, t); +} +const _r = h({}); +function Or(e, t, r) { + _r.value[e] = t, r && oi(e, t); +} +function oi(e, t) { + let r = JSON.parse(localStorage.getItem("splade") || "{}") || {}; + r[e] = t, localStorage.setItem("splade", JSON.stringify(r)); +} +function si(e, t) { + return t ? (JSON.parse(localStorage.getItem("splade") || "{}") || {})[e] : _r.value[e]; +} +function Te(e, t, r, n) { + fe || Or("scrollY", window.scrollY); + const a = ar({ + method: t, + url: e, + data: r, + headers: { + "X-Splade": !0, + "X-Requested-With": "XMLHttpRequest", + Accept: "text/html, application/xhtml+xml", + ...n } - const xt = v(() => { - }), Dt = v(() => { - }), Ft = v(() => { - }); - return t({ - init: n, - visit: Yr, - modal: Vr, - slideover: Qr, - refresh: Zr, - request: oe, - setOnHtml(c) { - xt.value = c; - }, - setOnModal(c) { - Dt.value = c; - }, - setOnServerError(c) { - Ft.value = c; - }, - hasValidationErrors: T, - validationErrors: h, - sharedData: d, - flashData: F, - toasts: A, - toastsReversed: K, - confirmModal: j, - confirm: _, - clearConfirmModal: b, - pushToast: N, - dismissToast: C, - restore: Le, - remember: pe, - popStack: p, - currentStack: f, - pageVisitId: O(() => s.value.pageVisitId) - }), () => { - }; - } -}, Ua = document.createElement("div"), m = rn(ka).mount(Ua); -var Ga = "[object String]"; -function Ka(e) { - return typeof e == "string" || !M(e) && ne(e) && ae(e) == Ga; + }); + return a.then((i) => { + Xa(i); + }).catch((i) => { + console.log(i); + const o = i.response.data.splade; + o && vt(o), i.response.status != 422 && ai(i.response.data.html ? i.response.data.html : i.response.data); + }), a; } -const Oe = { +function li(e) { + Te(e, "GET", {}, {}); +} +function ui(e) { + Te(e, "GET", {}, { "X-Splade-Modal": "modal" }); +} +function ci(e) { + Te(e, "GET", {}, { "X-Splade-Modal": "slideover" }); +} +function fi() { + Te(H.value.url, "GET", {}, { "X-Splade-Refresh": !0 }); +} +const $r = h(() => { +}), Tr = h(() => { +}), Er = h(() => { +}), d = { + init: Ka, + visit: li, + modal: ui, + slideover: ci, + refresh: fi, + request: Te, + setOnHtml(e) { + $r.value = e; + }, + setOnModal(e) { + Tr.value = e; + }, + setOnServerError(e) { + Er.value = e; + }, + hasValidationErrors: Va, + validationErrors: wr, + sharedData: yr, + flashData: Qa, + toasts: de, + toastsReversed: Za, + confirmModal: ht, + confirm: ri, + clearConfirmModal: ni, + pushToast: ei, + dismissToast: ti, + restore: si, + remember: Or, + popStack: Ya, + currentStack: V, + pageVisitId: w(() => H.value.pageVisitId), + isSsr: fe +}; +var di = "[object String]"; +function ke(e) { + return typeof e == "string" || !R(e) && Z(e) && ee(e) == di; +} +const be = { __name: "Render", props: { html: { @@ -348,15 +343,15 @@ const Oe = { } }, setup(e) { - const t = e, r = v(null); + const t = e, r = h(null); function n() { - r.value = x({ - render: nn(t.html) + r.value = $({ + template: t.html }); } - return Ee(() => t.html, n, { immediate: !0 }), (a, o) => (z(), Se(ee(r))); + return Se(() => t.html, n, { immediate: !0 }), (a, i) => (N(), ge(X(r))); } -}, za = { +}, pi = { __name: "ServerError", props: { html: { @@ -368,123 +363,157 @@ const Oe = { setup(e, { emit: t }) { const r = e; function n() { - document.body.style.overflow = "visible", document.removeEventListener("keydown", i), t("close"); + document.body.style.overflow = "visible", document.removeEventListener("keydown", o), t("close"); } - const a = v(null); - function o() { + const a = h(null); + function i() { const l = document.createElement("html"); l.innerHTML = r.html, l.querySelectorAll("a").forEach((u) => u.setAttribute("target", "_top")), document.body.style.overflow = "hidden"; const s = a.value; if (!s.contentWindow) throw new Error("iframe not yet ready."); - s.contentWindow.document.open(), s.contentWindow.document.write(l.outerHTML), s.contentWindow.document.close(), document.addEventListener("keydown", i); + s.contentWindow.document.open(), s.contentWindow.document.write(l.outerHTML), s.contentWindow.document.close(), document.addEventListener("keydown", o); } - function i(l) { + function o(l) { l.keyCode === 27 && n(); } - return R(() => o()), (l, s) => (z(), He("div", { + return P(() => i()), (l, s) => (N(), je("div", { class: "w-screen h-screen fixed p-8 bg-black bg-opacity-75 inset-0 z-[200000] box-border", onClick: n }, [ - an("iframe", { + sn("iframe", { ref_key: "iframeElement", ref: a, class: "bg-white w-full h-full" }, null, 512) ])); } -}, Wa = { +}, hi = { __name: "SpladeApp", props: { el: { type: [String, Object], - required: !0 + required: !1, + default: "" + }, + components: { + type: String, + required: !1, + default: (e) => { + if (!d.isSsr) { + const t = ke(e.el) ? document.getElementById(e.el) : e.el; + return JSON.parse(t.dataset.components) || ""; + } + } + }, + initialHtml: { + type: String, + required: !1, + default: (e) => { + if (!d.isSsr) { + const t = ke(e.el) ? document.getElementById(e.el) : e.el; + return JSON.parse(t.dataset.html) || ""; + } + } + }, + initialSpladeData: { + type: Object, + required: !1, + default: (e) => { + if (!d.isSsr) { + const t = ke(e.el) ? document.getElementById(e.el) : e.el; + return JSON.parse(t.dataset.splade) || {}; + } + } } }, setup(e) { - const t = e, r = Ka(t.el) ? document.getElementById(t.el) : t.el, n = JSON.parse(r.dataset.components), a = JSON.parse(r.dataset.html), o = JSON.parse(r.dataset.splade); - U("stack", 0); - const i = v(), l = v([]), s = v(null); - function u() { - s.value = null; - } - function f(d) { - l[d] = null, m.popStack(); - } - const p = q("$spladeOptions"); - return m.setOnHtml((d, g) => { - l.value = [], i.value = d, ir(() => { - window.scrollTo(0, g), p.transform_anchors && [...document.querySelectorAll("a")].forEach((h) => { - h.href == "" || h.href.charAt(0) == "#" || h.__vnode.dynamicProps === null && (h.hasAttribute("download") || (h.onclick = function(T) { - T.preventDefault(), m.visit(h.href); + const t = e; + L("stack", 0); + const r = h(), n = h([]), a = h(null); + function i() { + a.value = null; + } + function o(s) { + n[s] = null, d.popStack(); + } + const l = B("$spladeOptions") || {}; + return d.setOnHtml((s, u) => { + n.value = [], r.value = s, ir(() => { + d.isSsr || window.scrollTo(0, u), l.transform_anchors && [...document.querySelectorAll("a")].forEach((c) => { + c.href == "" || c.href.charAt(0) == "#" || c.__vnode.dynamicProps === null && (c.hasAttribute("download") || (c.onclick = function(f) { + f.preventDefault(), d.visit(c.href); })); }); }); - }), m.setOnModal(function(d, g) { - l.value[m.currentStack] = { html: d, type: g }; - }), m.setOnServerError(function(d) { - s.value = d; - }), m.init(a, o), (d, g) => (z(), He(ke, null, [ - (z(), Se(on, { - max: ee(p).max_keep_alive - }, [ - (z(), Se(Oe, { - key: `visit.${ee(m).pageVisitId}`, - class: sn({ - "transition ease-in-out blur-sm": ee(m).currentStack > 0 - }), - html: i.value - }, null, 8, ["class", "html"])) - ], 1032, ["max"])), - ln(Oe, { html: ee(n) }, null, 8, ["html"]), - (z(!0), He(ke, null, un(ee(m).currentStack, (h) => (z(), Se(Oe, { - key: `modal.${h}`, - type: l.value[h].type, - html: l.value[h].html, - stack: h, - "on-top-of-stack": ee(m).currentStack === h, - onClose: (T) => f(h) + }), d.setOnModal(function(s, u) { + n.value[d.currentStack.value] = { html: s, type: u }; + }), d.setOnServerError(function(s) { + a.value = s; + }), d.init(t.initialHtml, t.initialSpladeData), (s, u) => (N(), je("div", null, [ + (N(), ge(ln(X(d).isSsr ? "div" : "keep-alive"), { + max: X(l).max_keep_alive + }, { + default: un(() => [ + (N(), ge(be, { + key: `visit.${X(d).pageVisitId.value}`, + class: cn({ + "transition ease-in-out blur-sm": X(d).currentStack > 0 + }), + html: r.value + }, null, 8, ["class", "html"])) + ]), + _: 1 + }, 8, ["max"])), + fn(be, { html: e.components }, null, 8, ["html"]), + (N(!0), je(ut, null, dn(X(d).currentStack.value, (c) => (N(), ge(be, { + key: `modal.${c}`, + type: n.value[c].type, + html: n.value[c].html, + stack: c, + "on-top-of-stack": X(d).currentStack.value === c, + onClose: (f) => o(c) }, null, 8, ["type", "html", "stack", "on-top-of-stack", "onClose"]))), 128)), - s.value ? (z(), Se(za, { + a.value ? (N(), ge(pi, { key: 0, - html: s.value, - onClose: u - }, null, 8, ["html"])) : cn("", !0) - ], 64)); + html: a.value, + onClose: i + }, null, 8, ["html"])) : pn("", !0) + ])); } }; -function vl(e) { - return () => x(Wa, e); +function Ll(e) { + return () => $(hi, e); } -var Xa = Object.prototype, Ja = Xa.hasOwnProperty; -function Ya(e, t) { - return e != null && Ja.call(e, t); +var vi = Object.prototype, mi = vi.hasOwnProperty; +function gi(e, t) { + return e != null && mi.call(e, t); } -var Va = "[object Symbol]"; -function bt(e) { - return typeof e == "symbol" || ne(e) && ae(e) == Va; +var yi = "[object Symbol]"; +function gt(e) { + return typeof e == "symbol" || Z(e) && ee(e) == yi; } -var Qa = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, Za = /^\w*$/; -function wt(e, t) { - if (M(e)) +var bi = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, wi = /^\w*$/; +function yt(e, t) { + if (R(e)) return !1; var r = typeof e; - return r == "number" || r == "symbol" || r == "boolean" || e == null || bt(e) ? !0 : Za.test(e) || !Qa.test(e) || t != null && e in Object(t); + return r == "number" || r == "symbol" || r == "boolean" || e == null || gt(e) ? !0 : wi.test(e) || !bi.test(e) || t != null && e in Object(t); } -var eo = J["__core-js_shared__"]; -const Ye = eo; -var Mt = function() { - var e = /[^.]+$/.exec(Ye && Ye.keys && Ye.keys.IE_PROTO || ""); +var Si = G["__core-js_shared__"]; +const Ue = Si; +var Lt = function() { + var e = /[^.]+$/.exec(Ue && Ue.keys && Ue.keys.IE_PROTO || ""); return e ? "Symbol(src)_1." + e : ""; }(); -function to(e) { - return !!Mt && Mt in e; +function _i(e) { + return !!Lt && Lt in e; } -var ro = Function.prototype, no = ro.toString; -function ce(e) { +var Oi = Function.prototype, $i = Oi.toString; +function oe(e) { if (e != null) { try { - return no.call(e); + return $i.call(e); } catch { } try { @@ -494,261 +523,261 @@ function ce(e) { } return ""; } -var ao = /[\\^$.*+?()[\]{}|]/g, oo = /^\[object .+?Constructor\]$/, io = Function.prototype, so = Object.prototype, lo = io.toString, uo = so.hasOwnProperty, co = RegExp("^" + lo.call(uo).replace(ao, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"); -function fo(e) { - if (!me(e) || to(e)) +var Ti = /[\\^$.*+?()[\]{}|]/g, Ei = /^\[object .+?Constructor\]$/, Pi = Function.prototype, Ai = Object.prototype, xi = Pi.toString, Di = Ai.hasOwnProperty, Ci = RegExp("^" + xi.call(Di).replace(Ti, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"); +function Fi(e) { + if (!ce(e) || _i(e)) return !1; - var t = hr(e) ? co : oo; - return t.test(ce(e)); + var t = pr(e) ? Ci : Ei; + return t.test(oe(e)); } -function po(e, t) { +function ji(e, t) { return e == null ? void 0 : e[t]; } -function fe(e, t) { - var r = po(e, t); - return fo(r) ? r : void 0; +function se(e, t) { + var r = ji(e, t); + return Fi(r) ? r : void 0; } -var ho = fe(Object, "create"); -const Ae = ho; -function mo() { - this.__data__ = Ae ? Ae(null) : {}, this.size = 0; +var Ri = se(Object, "create"); +const _e = Ri; +function Bi() { + this.__data__ = _e ? _e(null) : {}, this.size = 0; } -function vo(e) { +function Ii(e) { var t = this.has(e) && delete this.__data__[e]; return this.size -= t ? 1 : 0, t; } -var go = "__lodash_hash_undefined__", yo = Object.prototype, bo = yo.hasOwnProperty; -function wo(e) { +var Li = "__lodash_hash_undefined__", Mi = Object.prototype, qi = Mi.hasOwnProperty; +function Ni(e) { var t = this.__data__; - if (Ae) { + if (_e) { var r = t[e]; - return r === go ? void 0 : r; + return r === Li ? void 0 : r; } - return bo.call(t, e) ? t[e] : void 0; + return qi.call(t, e) ? t[e] : void 0; } -var _o = Object.prototype, So = _o.hasOwnProperty; -function $o(e) { +var Hi = Object.prototype, ki = Hi.hasOwnProperty; +function Ui(e) { var t = this.__data__; - return Ae ? t[e] !== void 0 : So.call(t, e); + return _e ? t[e] !== void 0 : ki.call(t, e); } -var Oo = "__lodash_hash_undefined__"; -function To(e, t) { +var Gi = "__lodash_hash_undefined__"; +function Ki(e, t) { var r = this.__data__; - return this.size += this.has(e) ? 0 : 1, r[e] = Ae && t === void 0 ? Oo : t, this; + return this.size += this.has(e) ? 0 : 1, r[e] = _e && t === void 0 ? Gi : t, this; } -function le(e) { +function ae(e) { var t = -1, r = e == null ? 0 : e.length; for (this.clear(); ++t < r; ) { var n = e[t]; this.set(n[0], n[1]); } } -le.prototype.clear = mo; -le.prototype.delete = vo; -le.prototype.get = wo; -le.prototype.has = $o; -le.prototype.set = To; -function Eo() { +ae.prototype.clear = Bi; +ae.prototype.delete = Ii; +ae.prototype.get = Ni; +ae.prototype.has = Ui; +ae.prototype.set = Ki; +function zi() { this.__data__ = [], this.size = 0; } -function _t(e, t) { +function bt(e, t) { return e === t || e !== e && t !== t; } -function ze(e, t) { +function Le(e, t) { for (var r = e.length; r--; ) - if (_t(e[r][0], t)) + if (bt(e[r][0], t)) return r; return -1; } -var Ao = Array.prototype, Po = Ao.splice; -function xo(e) { - var t = this.__data__, r = ze(t, e); +var Wi = Array.prototype, Ji = Wi.splice; +function Xi(e) { + var t = this.__data__, r = Le(t, e); if (r < 0) return !1; var n = t.length - 1; - return r == n ? t.pop() : Po.call(t, r, 1), --this.size, !0; + return r == n ? t.pop() : Ji.call(t, r, 1), --this.size, !0; } -function Do(e) { - var t = this.__data__, r = ze(t, e); +function Yi(e) { + var t = this.__data__, r = Le(t, e); return r < 0 ? void 0 : t[r][1]; } -function Fo(e) { - return ze(this.__data__, e) > -1; +function Vi(e) { + return Le(this.__data__, e) > -1; } -function Co(e, t) { - var r = this.__data__, n = ze(r, e); +function Qi(e, t) { + var r = this.__data__, n = Le(r, e); return n < 0 ? (++this.size, r.push([e, t])) : r[n][1] = t, this; } -function Y(e) { +function K(e) { var t = -1, r = e == null ? 0 : e.length; for (this.clear(); ++t < r; ) { var n = e[t]; this.set(n[0], n[1]); } } -Y.prototype.clear = Eo; -Y.prototype.delete = xo; -Y.prototype.get = Do; -Y.prototype.has = Fo; -Y.prototype.set = Co; -var jo = fe(J, "Map"); -const Pe = jo; -function Ro() { +K.prototype.clear = zi; +K.prototype.delete = Xi; +K.prototype.get = Yi; +K.prototype.has = Vi; +K.prototype.set = Qi; +var Zi = se(G, "Map"); +const Oe = Zi; +function eo() { this.size = 0, this.__data__ = { - hash: new le(), - map: new (Pe || Y)(), - string: new le() + hash: new ae(), + map: new (Oe || K)(), + string: new ae() }; } -function Bo(e) { +function to(e) { var t = typeof e; return t == "string" || t == "number" || t == "symbol" || t == "boolean" ? e !== "__proto__" : e === null; } -function We(e, t) { +function Me(e, t) { var r = e.__data__; - return Bo(t) ? r[typeof t == "string" ? "string" : "hash"] : r.map; + return to(t) ? r[typeof t == "string" ? "string" : "hash"] : r.map; } -function Lo(e) { - var t = We(this, e).delete(e); +function ro(e) { + var t = Me(this, e).delete(e); return this.size -= t ? 1 : 0, t; } -function Io(e) { - return We(this, e).get(e); +function no(e) { + return Me(this, e).get(e); } -function Mo(e) { - return We(this, e).has(e); +function ao(e) { + return Me(this, e).has(e); } -function qo(e, t) { - var r = We(this, e), n = r.size; +function io(e, t) { + var r = Me(this, e), n = r.size; return r.set(e, t), this.size += r.size == n ? 0 : 1, this; } -function V(e) { +function z(e) { var t = -1, r = e == null ? 0 : e.length; for (this.clear(); ++t < r; ) { var n = e[t]; this.set(n[0], n[1]); } } -V.prototype.clear = Ro; -V.prototype.delete = Lo; -V.prototype.get = Io; -V.prototype.has = Mo; -V.prototype.set = qo; -var No = "Expected a function"; -function St(e, t) { +z.prototype.clear = eo; +z.prototype.delete = ro; +z.prototype.get = no; +z.prototype.has = ao; +z.prototype.set = io; +var oo = "Expected a function"; +function wt(e, t) { if (typeof e != "function" || t != null && typeof t != "function") - throw new TypeError(No); + throw new TypeError(oo); var r = function() { - var n = arguments, a = t ? t.apply(this, n) : n[0], o = r.cache; - if (o.has(a)) - return o.get(a); - var i = e.apply(this, n); - return r.cache = o.set(a, i) || o, i; + var n = arguments, a = t ? t.apply(this, n) : n[0], i = r.cache; + if (i.has(a)) + return i.get(a); + var o = e.apply(this, n); + return r.cache = i.set(a, o) || i, o; }; - return r.cache = new (St.Cache || V)(), r; + return r.cache = new (wt.Cache || z)(), r; } -St.Cache = V; -var Ho = 500; -function ko(e) { - var t = St(e, function(n) { - return r.size === Ho && r.clear(), n; +wt.Cache = z; +var so = 500; +function lo(e) { + var t = wt(e, function(n) { + return r.size === so && r.clear(), n; }), r = t.cache; return t; } -var Uo = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, Go = /\\(\\)?/g, Ko = ko(function(e) { +var uo = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, co = /\\(\\)?/g, fo = lo(function(e) { var t = []; - return e.charCodeAt(0) === 46 && t.push(""), e.replace(Uo, function(r, n, a, o) { - t.push(a ? o.replace(Go, "$1") : n || r); + return e.charCodeAt(0) === 46 && t.push(""), e.replace(uo, function(r, n, a, i) { + t.push(a ? i.replace(co, "$1") : n || r); }), t; }); -const zo = Ko; -function Wo(e, t) { +const po = fo; +function ho(e, t) { for (var r = -1, n = e == null ? 0 : e.length, a = Array(n); ++r < n; ) a[r] = t(e[r], r, e); return a; } -var Xo = 1 / 0, qt = re ? re.prototype : void 0, Nt = qt ? qt.toString : void 0; -function yr(e) { +var vo = 1 / 0, Mt = Q ? Q.prototype : void 0, qt = Mt ? Mt.toString : void 0; +function Pr(e) { if (typeof e == "string") return e; - if (M(e)) - return Wo(e, yr) + ""; - if (bt(e)) - return Nt ? Nt.call(e) : ""; + if (R(e)) + return ho(e, Pr) + ""; + if (gt(e)) + return qt ? qt.call(e) : ""; var t = e + ""; - return t == "0" && 1 / e == -Xo ? "-0" : t; + return t == "0" && 1 / e == -vo ? "-0" : t; } -function Jo(e) { - return e == null ? "" : yr(e); +function mo(e) { + return e == null ? "" : Pr(e); } -function $t(e, t) { - return M(e) ? e : wt(e, t) ? [e] : zo(Jo(e)); +function St(e, t) { + return R(e) ? e : yt(e, t) ? [e] : po(mo(e)); } -var Yo = 1 / 0; -function De(e) { - if (typeof e == "string" || bt(e)) +var go = 1 / 0; +function Ee(e) { + if (typeof e == "string" || gt(e)) return e; var t = e + ""; - return t == "0" && 1 / e == -Yo ? "-0" : t; + return t == "0" && 1 / e == -go ? "-0" : t; } -function br(e, t, r) { - t = $t(t, e); - for (var n = -1, a = t.length, o = !1; ++n < a; ) { - var i = De(t[n]); - if (!(o = e != null && r(e, i))) +function Ar(e, t, r) { + t = St(t, e); + for (var n = -1, a = t.length, i = !1; ++n < a; ) { + var o = Ee(t[n]); + if (!(i = e != null && r(e, o))) break; - e = e[i]; + e = e[o]; } - return o || ++n != a ? o : (a = e == null ? 0 : e.length, !!a && vt(a) && mt(i, a) && (M(e) || cr(e))); + return i || ++n != a ? i : (a = e == null ? 0 : e.length, !!a && ft(a) && ct(o, a) && (R(e) || ur(e))); } -function k(e, t) { - return e != null && br(e, t, Ya); +function I(e, t) { + return e != null && Ar(e, t, gi); } -function I(e, t, ...r) { +function j(e, t, ...r) { if (e in t) { let a = t[e]; return typeof a == "function" ? a(...r) : a; } let n = new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map((a) => `"${a}"`).join(", ")}.`); - throw Error.captureStackTrace && Error.captureStackTrace(n, I), n; -} -var Ue = ((e) => (e[e.None = 0] = "None", e[e.RenderStrategy = 1] = "RenderStrategy", e[e.Static = 2] = "Static", e))(Ue || {}), te = ((e) => (e[e.Unmount = 0] = "Unmount", e[e.Hidden = 1] = "Hidden", e))(te || {}); -function L({ visible: e = !0, features: t = 0, ourProps: r, theirProps: n, ...a }) { - var o; - let i = Vo(n, r), l = Object.assign(a, { props: i }); - if (e || t & 2 && i.static) - return Ve(l); + throw Error.captureStackTrace && Error.captureStackTrace(n, j), n; +} +var Re = ((e) => (e[e.None = 0] = "None", e[e.RenderStrategy = 1] = "RenderStrategy", e[e.Static = 2] = "Static", e))(Re || {}), Y = ((e) => (e[e.Unmount = 0] = "Unmount", e[e.Hidden = 1] = "Hidden", e))(Y || {}); +function x({ visible: e = !0, features: t = 0, ourProps: r, theirProps: n, ...a }) { + var i; + let o = yo(n, r), l = Object.assign(a, { props: o }); + if (e || t & 2 && o.static) + return Ge(l); if (t & 1) { - let s = (o = i.unmount) == null || o ? 0 : 1; - return I(s, { [0]() { + let s = (i = o.unmount) == null || i ? 0 : 1; + return j(s, { [0]() { return null; }, [1]() { - return Ve({ ...a, props: { ...i, hidden: !0, style: { display: "none" } } }); + return Ge({ ...a, props: { ...o, hidden: !0, style: { display: "none" } } }); } }); } - return Ve(l); -} -function Ve({ props: e, attrs: t, slots: r, slot: n, name: a }) { - var o; - let { as: i, ...l } = _r(e, ["unmount", "static"]), s = (o = r.default) == null ? void 0 : o.call(r, n), u = {}; - if (i === "template") { - if (s = wr(s), Object.keys(l).length > 0 || Object.keys(t).length > 0) { - let [f, ...p] = s != null ? s : []; - if (!Qo(f) || p.length > 0) - throw new Error(['Passing props on "template"!', "", `The current component <${a} /> is rendering a "template".`, "However we need to passthrough the following props:", Object.keys(l).concat(Object.keys(t)).sort((d, g) => d.localeCompare(g)).map((d) => ` - ${d}`).join(` -`), "", "You can apply a few solutions:", ['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".', "Render a single element as the child so that we can forward the props onto that element."].map((d) => ` - ${d}`).join(` + return Ge(l); +} +function Ge({ props: e, attrs: t, slots: r, slot: n, name: a }) { + var i; + let { as: o, ...l } = Dr(e, ["unmount", "static"]), s = (i = r.default) == null ? void 0 : i.call(r, n), u = {}; + if (o === "template") { + if (s = xr(s), Object.keys(l).length > 0 || Object.keys(t).length > 0) { + let [c, ...f] = s != null ? s : []; + if (!bo(c) || f.length > 0) + throw new Error(['Passing props on "template"!', "", `The current component <${a} /> is rendering a "template".`, "However we need to passthrough the following props:", Object.keys(l).concat(Object.keys(t)).sort((p, v) => p.localeCompare(v)).map((p) => ` - ${p}`).join(` +`), "", "You can apply a few solutions:", ['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".', "Render a single element as the child so that we can forward the props onto that element."].map((p) => ` - ${p}`).join(` `)].join(` `)); - return fn(f, Object.assign({}, l, u)); + return hn(c, Object.assign({}, l, u)); } return Array.isArray(s) && s.length === 1 ? s[0] : s; } - return x(i, Object.assign({}, l, u), s); + return $(o, Object.assign({}, l, u), s); } -function wr(e) { - return e.flatMap((t) => t.type === ke ? wr(t.children) : [t]); +function xr(e) { + return e.flatMap((t) => t.type === ut ? xr(t.children) : [t]); } -function Vo(...e) { +function yo(...e) { if (e.length === 0) return {}; if (e.length === 1) @@ -760,100 +789,100 @@ function Vo(...e) { if (t.disabled || t["aria-disabled"]) return Object.assign(t, Object.fromEntries(Object.keys(r).map((n) => [n, void 0]))); for (let n in r) - Object.assign(t, { [n](a, ...o) { - let i = r[n]; - for (let l of i) { + Object.assign(t, { [n](a, ...i) { + let o = r[n]; + for (let l of o) { if (a != null && a.defaultPrevented) return; - l(a, ...o); + l(a, ...i); } } }); return t; } -function _r(e, t = []) { +function Dr(e, t = []) { let r = Object.assign({}, e); for (let n of t) n in r && delete r[n]; return r; } -function Qo(e) { +function bo(e) { return e == null ? !1 : typeof e.type == "string" || typeof e.type == "object" || typeof e.type == "function"; } -let Zo = 0; -function ei() { - return ++Zo; +let wo = 0; +function So() { + return ++wo; } -function de() { - return ei(); +function le() { + return So(); } -var Sr = ((e) => (e.Space = " ", e.Enter = "Enter", e.Escape = "Escape", e.Backspace = "Backspace", e.Delete = "Delete", e.ArrowLeft = "ArrowLeft", e.ArrowUp = "ArrowUp", e.ArrowRight = "ArrowRight", e.ArrowDown = "ArrowDown", e.Home = "Home", e.End = "End", e.PageUp = "PageUp", e.PageDown = "PageDown", e.Tab = "Tab", e))(Sr || {}); -function X(e) { +var Cr = ((e) => (e.Space = " ", e.Enter = "Enter", e.Escape = "Escape", e.Backspace = "Backspace", e.Delete = "Delete", e.ArrowLeft = "ArrowLeft", e.ArrowUp = "ArrowUp", e.ArrowRight = "ArrowRight", e.ArrowDown = "ArrowDown", e.Home = "Home", e.End = "End", e.PageUp = "PageUp", e.PageDown = "PageDown", e.Tab = "Tab", e))(Cr || {}); +function U(e) { var t; return e == null || e.value == null ? null : (t = e.value.$el) != null ? t : e.value; } -let $r = Symbol("Context"); -var ue = ((e) => (e[e.Open = 0] = "Open", e[e.Closed = 1] = "Closed", e))(ue || {}); -function ti() { - return Ot() !== null; +let Fr = Symbol("Context"); +var ie = ((e) => (e[e.Open = 0] = "Open", e[e.Closed = 1] = "Closed", e))(ie || {}); +function _o() { + return _t() !== null; } -function Ot() { - return q($r, null); +function _t() { + return B(Fr, null); } -function ri(e) { - U($r, e); +function Oo(e) { + L(Fr, e); } -function ge(e) { +function he(e) { if (typeof window > "u") return null; if (e instanceof Node) return e.ownerDocument; if (e != null && e.hasOwnProperty("value")) { - let t = X(e); + let t = U(e); if (t) return t.ownerDocument; } return document; } -let tt = ["[contentEditable=true]", "[tabindex]", "a[href]", "area[href]", "button:not([disabled])", "iframe", "input:not([disabled])", "select:not([disabled])", "textarea:not([disabled])"].map((e) => `${e}:not([tabindex='-1'])`).join(","); -var xe = ((e) => (e[e.First = 1] = "First", e[e.Previous = 2] = "Previous", e[e.Next = 4] = "Next", e[e.Last = 8] = "Last", e[e.WrapAround = 16] = "WrapAround", e[e.NoScroll = 32] = "NoScroll", e))(xe || {}), Or = ((e) => (e[e.Error = 0] = "Error", e[e.Overflow = 1] = "Overflow", e[e.Success = 2] = "Success", e[e.Underflow = 3] = "Underflow", e))(Or || {}), ni = ((e) => (e[e.Previous = -1] = "Previous", e[e.Next = 1] = "Next", e))(ni || {}); -function ai(e = document.body) { - return e == null ? [] : Array.from(e.querySelectorAll(tt)); +let Xe = ["[contentEditable=true]", "[tabindex]", "a[href]", "area[href]", "button:not([disabled])", "iframe", "input:not([disabled])", "select:not([disabled])", "textarea:not([disabled])"].map((e) => `${e}:not([tabindex='-1'])`).join(","); +var $e = ((e) => (e[e.First = 1] = "First", e[e.Previous = 2] = "Previous", e[e.Next = 4] = "Next", e[e.Last = 8] = "Last", e[e.WrapAround = 16] = "WrapAround", e[e.NoScroll = 32] = "NoScroll", e))($e || {}), jr = ((e) => (e[e.Error = 0] = "Error", e[e.Overflow = 1] = "Overflow", e[e.Success = 2] = "Success", e[e.Underflow = 3] = "Underflow", e))(jr || {}), $o = ((e) => (e[e.Previous = -1] = "Previous", e[e.Next = 1] = "Next", e))($o || {}); +function To(e = document.body) { + return e == null ? [] : Array.from(e.querySelectorAll(Xe)); } -var Tr = ((e) => (e[e.Strict = 0] = "Strict", e[e.Loose = 1] = "Loose", e))(Tr || {}); -function oi(e, t = 0) { +var Rr = ((e) => (e[e.Strict = 0] = "Strict", e[e.Loose = 1] = "Loose", e))(Rr || {}); +function Eo(e, t = 0) { var r; - return e === ((r = ge(e)) == null ? void 0 : r.body) ? !1 : I(t, { [0]() { - return e.matches(tt); + return e === ((r = he(e)) == null ? void 0 : r.body) ? !1 : j(t, { [0]() { + return e.matches(Xe); }, [1]() { let n = e; for (; n !== null; ) { - if (n.matches(tt)) + if (n.matches(Xe)) return !0; n = n.parentElement; } return !1; } }); } -function Te(e) { +function we(e) { e == null || e.focus({ preventScroll: !0 }); } -let ii = ["textarea", "input"].join(","); -function si(e) { +let Po = ["textarea", "input"].join(","); +function Ao(e) { var t, r; - return (r = (t = e == null ? void 0 : e.matches) == null ? void 0 : t.call(e, ii)) != null ? r : !1; + return (r = (t = e == null ? void 0 : e.matches) == null ? void 0 : t.call(e, Po)) != null ? r : !1; } -function li(e, t = (r) => r) { +function xo(e, t = (r) => r) { return e.slice().sort((r, n) => { - let a = t(r), o = t(n); - if (a === null || o === null) + let a = t(r), i = t(n); + if (a === null || i === null) return 0; - let i = a.compareDocumentPosition(o); - return i & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : i & Node.DOCUMENT_POSITION_PRECEDING ? 1 : 0; + let o = a.compareDocumentPosition(i); + return o & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : o & Node.DOCUMENT_POSITION_PRECEDING ? 1 : 0; }); } -function rt(e, t, r = !0) { +function Ye(e, t, r = !0) { var n; - let a = (n = Array.isArray(e) ? e.length > 0 ? e[0].ownerDocument : document : e == null ? void 0 : e.ownerDocument) != null ? n : document, o = Array.isArray(e) ? r ? li(e) : e : ai(e), i = a.activeElement, l = (() => { + let a = (n = Array.isArray(e) ? e.length > 0 ? e[0].ownerDocument : document : e == null ? void 0 : e.ownerDocument) != null ? n : document, i = Array.isArray(e) ? r ? xo(e) : e : To(e), o = a.activeElement, l = (() => { if (t & 5) return 1; if (t & 10) @@ -863,40 +892,40 @@ function rt(e, t, r = !0) { if (t & 1) return 0; if (t & 2) - return Math.max(0, o.indexOf(i)) - 1; + return Math.max(0, i.indexOf(o)) - 1; if (t & 4) - return Math.max(0, o.indexOf(i)) + 1; + return Math.max(0, i.indexOf(o)) + 1; if (t & 8) - return o.length - 1; + return i.length - 1; throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last"); - })(), u = t & 32 ? { preventScroll: !0 } : {}, f = 0, p = o.length, d; + })(), u = t & 32 ? { preventScroll: !0 } : {}, c = 0, f = i.length, p; do { - if (f >= p || f + p <= 0) + if (c >= f || c + f <= 0) return 0; - let g = s + f; + let v = s + c; if (t & 16) - g = (g + p) % p; + v = (v + f) % f; else { - if (g < 0) + if (v < 0) return 3; - if (g >= p) + if (v >= f) return 1; } - d = o[g], d == null || d.focus(u), f += l; - } while (d !== a.activeElement); - return d.hasAttribute("tabindex") || d.setAttribute("tabindex", "0"), t & 6 && si(d) && d.select(), 2; + p = i[v], p == null || p.focus(u), c += l; + } while (p !== a.activeElement); + return p.hasAttribute("tabindex") || p.setAttribute("tabindex", "0"), t & 6 && Ao(p) && p.select(), 2; } -function nt(e, t, r) { - typeof window < "u" && G((n) => { +function Ve(e, t, r) { + typeof window < "u" && M((n) => { window.addEventListener(e, t, r), n(() => window.removeEventListener(e, t, r)); }); } -function ui(e, t, r = O(() => !0)) { - function n(a, o) { +function Do(e, t, r = w(() => !0)) { + function n(a, i) { if (!r.value || a.defaultPrevented) return; - let i = o(a); - if (i === null || !i.ownerDocument.documentElement.contains(i)) + let o = i(a); + if (o === null || !o.ownerDocument.documentElement.contains(o)) return; let l = function s(u) { return typeof u == "function" ? s(u()) : Array.isArray(u) || u instanceof Set ? u : [u]; @@ -904,91 +933,91 @@ function ui(e, t, r = O(() => !0)) { for (let s of l) { if (s === null) continue; - let u = s instanceof HTMLElement ? s : X(s); - if (u != null && u.contains(i)) + let u = s instanceof HTMLElement ? s : U(s); + if (u != null && u.contains(o)) return; } - return !oi(i, Tr.Loose) && i.tabIndex !== -1 && a.preventDefault(), t(a, i); + return !Eo(o, Rr.Loose) && o.tabIndex !== -1 && a.preventDefault(), t(a, o); } - nt("click", (a) => n(a, (o) => o.target), !0), nt("blur", (a) => n(a, () => window.document.activeElement instanceof HTMLIFrameElement ? window.document.activeElement : null), !0); + Ve("click", (a) => n(a, (i) => i.target), !0), Ve("blur", (a) => n(a, () => window.document.activeElement instanceof HTMLIFrameElement ? window.document.activeElement : null), !0); } -var Ge = ((e) => (e[e.None = 1] = "None", e[e.Focusable = 2] = "Focusable", e[e.Hidden = 4] = "Hidden", e))(Ge || {}); -let at = B({ name: "Hidden", props: { as: { type: [Object, String], default: "div" }, features: { type: Number, default: 1 } }, setup(e, { slots: t, attrs: r }) { +var Be = ((e) => (e[e.None = 1] = "None", e[e.Focusable = 2] = "Focusable", e[e.Hidden = 4] = "Hidden", e))(Be || {}); +let Qe = A({ name: "Hidden", props: { as: { type: [Object, String], default: "div" }, features: { type: Number, default: 1 } }, setup(e, { slots: t, attrs: r }) { return () => { - let { features: n, ...a } = e, o = { "aria-hidden": (n & 2) === 2 ? !0 : void 0, style: { position: "absolute", width: 1, height: 1, padding: 0, margin: -1, overflow: "hidden", clip: "rect(0, 0, 0, 0)", whiteSpace: "nowrap", borderWidth: "0", ...(n & 4) === 4 && (n & 2) !== 2 && { display: "none" } } }; - return L({ ourProps: o, theirProps: a, slot: {}, attrs: r, slots: t, name: "Hidden" }); + let { features: n, ...a } = e, i = { "aria-hidden": (n & 2) === 2 ? !0 : void 0, style: { position: "absolute", width: 1, height: 1, padding: 0, margin: -1, overflow: "hidden", clip: "rect(0, 0, 0, 0)", whiteSpace: "nowrap", borderWidth: "0", ...(n & 4) === 4 && (n & 2) !== 2 && { display: "none" } } }; + return x({ ourProps: i, theirProps: a, slot: {}, attrs: r, slots: t, name: "Hidden" }); }; } }); -var ot = ((e) => (e[e.Forwards = 0] = "Forwards", e[e.Backwards = 1] = "Backwards", e))(ot || {}); -function ci() { - let e = v(0); - return nt("keydown", (t) => { +var Ze = ((e) => (e[e.Forwards = 0] = "Forwards", e[e.Backwards = 1] = "Backwards", e))(Ze || {}); +function Co() { + let e = h(0); + return Ve("keydown", (t) => { t.key === "Tab" && (e.value = t.shiftKey ? 1 : 0); }), e; } -function Er(e, t, r, n) { - typeof window < "u" && G((a) => { +function Br(e, t, r, n) { + typeof window < "u" && M((a) => { e = e != null ? e : window, e.addEventListener(t, r, n), a(() => e.removeEventListener(t, r, n)); }); } -var Ar = ((e) => (e[e.None = 1] = "None", e[e.InitialFocus = 2] = "InitialFocus", e[e.TabLock = 4] = "TabLock", e[e.FocusLock = 8] = "FocusLock", e[e.RestoreFocus = 16] = "RestoreFocus", e[e.All = 30] = "All", e))(Ar || {}); -let _e = Object.assign(B({ name: "FocusTrap", props: { as: { type: [Object, String], default: "div" }, initialFocus: { type: Object, default: null }, features: { type: Number, default: 30 }, containers: { type: Object, default: v(/* @__PURE__ */ new Set()) } }, inheritAttrs: !1, setup(e, { attrs: t, slots: r, expose: n }) { - let a = v(null); +var Ir = ((e) => (e[e.None = 1] = "None", e[e.InitialFocus = 2] = "InitialFocus", e[e.TabLock = 4] = "TabLock", e[e.FocusLock = 8] = "FocusLock", e[e.RestoreFocus = 16] = "RestoreFocus", e[e.All = 30] = "All", e))(Ir || {}); +let me = Object.assign(A({ name: "FocusTrap", props: { as: { type: [Object, String], default: "div" }, initialFocus: { type: Object, default: null }, features: { type: Number, default: 30 }, containers: { type: Object, default: h(/* @__PURE__ */ new Set()) } }, inheritAttrs: !1, setup(e, { attrs: t, slots: r, expose: n }) { + let a = h(null); n({ el: a, $el: a }); - let o = O(() => ge(a)); - fi({ ownerDocument: o }, O(() => Boolean(e.features & 16))); - let i = di({ ownerDocument: o, container: a, initialFocus: O(() => e.initialFocus) }, O(() => Boolean(e.features & 2))); - pi({ ownerDocument: o, container: a, containers: e.containers, previousActiveElement: i }, O(() => Boolean(e.features & 8))); - let l = ci(); + let i = w(() => he(a)); + Fo({ ownerDocument: i }, w(() => Boolean(e.features & 16))); + let o = jo({ ownerDocument: i, container: a, initialFocus: w(() => e.initialFocus) }, w(() => Boolean(e.features & 2))); + Ro({ ownerDocument: i, container: a, containers: e.containers, previousActiveElement: o }, w(() => Boolean(e.features & 8))); + let l = Co(); function s() { - let u = X(a); - !u || I(l.value, { [ot.Forwards]: () => rt(u, xe.First), [ot.Backwards]: () => rt(u, xe.Last) }); + let u = U(a); + !u || j(l.value, { [Ze.Forwards]: () => Ye(u, $e.First), [Ze.Backwards]: () => Ye(u, $e.Last) }); } return () => { - let u = {}, f = { ref: a }, { features: p, initialFocus: d, containers: g, ...h } = e; - return x(ke, [Boolean(p & 4) && x(at, { as: "button", type: "button", onFocus: s, features: Ge.Focusable }), L({ ourProps: f, theirProps: { ...t, ...h }, slot: u, attrs: t, slots: r, name: "FocusTrap" }), Boolean(p & 4) && x(at, { as: "button", type: "button", onFocus: s, features: Ge.Focusable })]); + let u = {}, c = { ref: a }, { features: f, initialFocus: p, containers: v, ...m } = e; + return $(ut, [Boolean(f & 4) && $(Qe, { as: "button", type: "button", onFocus: s, features: Be.Focusable }), x({ ourProps: c, theirProps: { ...t, ...m }, slot: u, attrs: t, slots: r, name: "FocusTrap" }), Boolean(f & 4) && $(Qe, { as: "button", type: "button", onFocus: s, features: Be.Focusable })]); }; -} }), { features: Ar }); -function fi({ ownerDocument: e }, t) { - let r = v(null), n = { value: !1 }; - R(() => { - Ee(t, (a, o) => { - var i; - a !== o && (!t.value || (n.value = !0, r.value || (r.value = (i = e.value) == null ? void 0 : i.activeElement))); - }, { immediate: !0 }), Ee(t, (a, o, i) => { - a !== o && (!t.value || i(() => { - n.value !== !1 && (n.value = !1, Te(r.value), r.value = null); +} }), { features: Ir }); +function Fo({ ownerDocument: e }, t) { + let r = h(null), n = { value: !1 }; + P(() => { + Se(t, (a, i) => { + var o; + a !== i && (!t.value || (n.value = !0, r.value || (r.value = (o = e.value) == null ? void 0 : o.activeElement))); + }, { immediate: !0 }), Se(t, (a, i, o) => { + a !== i && (!t.value || o(() => { + n.value !== !1 && (n.value = !1, we(r.value), r.value = null); })); }, { immediate: !0 }); }); } -function di({ ownerDocument: e, container: t, initialFocus: r }, n) { - let a = v(null); - return R(() => { - Ee([t, r, n], (o, i) => { - if (o.every((s, u) => (i == null ? void 0 : i[u]) === s) || !n.value) +function jo({ ownerDocument: e, container: t, initialFocus: r }, n) { + let a = h(null); + return P(() => { + Se([t, r, n], (i, o) => { + if (i.every((s, u) => (o == null ? void 0 : o[u]) === s) || !n.value) return; - let l = X(t); + let l = U(t); !l || requestAnimationFrame(() => { var s, u; - let f = X(r), p = (s = e.value) == null ? void 0 : s.activeElement; - if (f) { - if (f === p) { - a.value = p; + let c = U(r), f = (s = e.value) == null ? void 0 : s.activeElement; + if (c) { + if (c === f) { + a.value = f; return; } - } else if (l.contains(p)) { - a.value = p; + } else if (l.contains(f)) { + a.value = f; return; } - f ? Te(f) : rt(l, xe.First | xe.NoScroll) === Or.Error && console.warn("There are no focusable elements inside the "), a.value = (u = e.value) == null ? void 0 : u.activeElement; + c ? we(c) : Ye(l, $e.First | $e.NoScroll) === jr.Error && console.warn("There are no focusable elements inside the "), a.value = (u = e.value) == null ? void 0 : u.activeElement; }); }, { immediate: !0, flush: "post" }); }), a; } -function pi({ ownerDocument: e, container: t, containers: r, previousActiveElement: n }, a) { - var o; - Er((o = e.value) == null ? void 0 : o.defaultView, "focus", (i) => { +function Ro({ ownerDocument: e, container: t, containers: r, previousActiveElement: n }, a) { + var i; + Br((i = e.value) == null ? void 0 : i.defaultView, "focus", (o) => { if (!a.value) return; let l = new Set(r == null ? void 0 : r.value); @@ -996,70 +1025,70 @@ function pi({ ownerDocument: e, container: t, containers: r, previousActiveEleme let s = n.value; if (!s) return; - let u = i.target; - u && u instanceof HTMLElement ? hi(l, u) ? (n.value = u, Te(u)) : (i.preventDefault(), i.stopPropagation(), Te(s)) : Te(n.value); + let u = o.target; + u && u instanceof HTMLElement ? Bo(l, u) ? (n.value = u, we(u)) : (o.preventDefault(), o.stopPropagation(), we(s)) : we(n.value); }, !0); } -function hi(e, t) { +function Bo(e, t) { var r; for (let n of e) if ((r = n.value) != null && r.contains(t)) return !0; return !1; } -let Ht = "body > *", he = /* @__PURE__ */ new Set(), Z = /* @__PURE__ */ new Map(); -function kt(e) { +let Nt = "body > *", ue = /* @__PURE__ */ new Set(), J = /* @__PURE__ */ new Map(); +function Ht(e) { e.setAttribute("aria-hidden", "true"), e.inert = !0; } -function Ut(e) { - let t = Z.get(e); +function kt(e) { + let t = J.get(e); !t || (t["aria-hidden"] === null ? e.removeAttribute("aria-hidden") : e.setAttribute("aria-hidden", t["aria-hidden"]), e.inert = t.inert); } -function mi(e, t = v(!0)) { - G((r) => { +function Io(e, t = h(!0)) { + M((r) => { if (!t.value || !e.value) return; - let n = e.value, a = ge(n); + let n = e.value, a = he(n); if (a) { - he.add(n); - for (let o of Z.keys()) - o.contains(n) && (Ut(o), Z.delete(o)); - a.querySelectorAll(Ht).forEach((o) => { - if (o instanceof HTMLElement) { - for (let i of he) - if (o.contains(i)) + ue.add(n); + for (let i of J.keys()) + i.contains(n) && (kt(i), J.delete(i)); + a.querySelectorAll(Nt).forEach((i) => { + if (i instanceof HTMLElement) { + for (let o of ue) + if (i.contains(o)) return; - he.size === 1 && (Z.set(o, { "aria-hidden": o.getAttribute("aria-hidden"), inert: o.inert }), kt(o)); + ue.size === 1 && (J.set(i, { "aria-hidden": i.getAttribute("aria-hidden"), inert: i.inert }), Ht(i)); } }), r(() => { - if (he.delete(n), he.size > 0) - a.querySelectorAll(Ht).forEach((o) => { - if (o instanceof HTMLElement && !Z.has(o)) { - for (let i of he) - if (o.contains(i)) + if (ue.delete(n), ue.size > 0) + a.querySelectorAll(Nt).forEach((i) => { + if (i instanceof HTMLElement && !J.has(i)) { + for (let o of ue) + if (i.contains(o)) return; - Z.set(o, { "aria-hidden": o.getAttribute("aria-hidden"), inert: o.inert }), kt(o); + J.set(i, { "aria-hidden": i.getAttribute("aria-hidden"), inert: i.inert }), Ht(i); } }); else - for (let o of Z.keys()) - Ut(o), Z.delete(o); + for (let i of J.keys()) + kt(i), J.delete(i); }); } }); } -let Pr = Symbol("ForcePortalRootContext"); -function vi() { - return q(Pr, !1); +let Lr = Symbol("ForcePortalRootContext"); +function Lo() { + return B(Lr, !1); } -let it = B({ name: "ForcePortalRoot", props: { as: { type: [Object, String], default: "template" }, force: { type: Boolean, default: !1 } }, setup(e, { slots: t, attrs: r }) { - return U(Pr, e.force), () => { +let et = A({ name: "ForcePortalRoot", props: { as: { type: [Object, String], default: "template" }, force: { type: Boolean, default: !1 } }, setup(e, { slots: t, attrs: r }) { + return L(Lr, e.force), () => { let { force: n, ...a } = e; - return L({ theirProps: a, ourProps: {}, slot: {}, slots: t, attrs: r, name: "ForcePortalRoot" }); + return x({ theirProps: a, ourProps: {}, slot: {}, slots: t, attrs: r, name: "ForcePortalRoot" }); }; } }); -function gi(e) { - let t = ge(e); +function Mo(e) { + let t = he(e); if (!t) { if (e === null) return null; @@ -1071,184 +1100,184 @@ function gi(e) { let n = t.createElement("div"); return n.setAttribute("id", "headlessui-portal-root"), t.body.appendChild(n); } -let xr = B({ name: "Portal", props: { as: { type: [Object, String], default: "div" } }, setup(e, { slots: t, attrs: r }) { - let n = v(null), a = O(() => ge(n)), o = vi(), i = q(Dr, null), l = v(o === !0 || i == null ? gi(n.value) : i.resolveTarget()); - return G(() => { - o || i != null && (l.value = i.resolveTarget()); - }), ve(() => { +let Mr = A({ name: "Portal", props: { as: { type: [Object, String], default: "div" } }, setup(e, { slots: t, attrs: r }) { + let n = h(null), a = w(() => he(n)), i = Lo(), o = B(qr, null), l = h(i === !0 || o == null ? Mo(n.value) : o.resolveTarget()); + return M(() => { + i || o != null && (l.value = o.resolveTarget()); + }), pe(() => { var s, u; - let f = (s = a.value) == null ? void 0 : s.getElementById("headlessui-portal-root"); - !f || l.value === f && l.value.children.length <= 0 && ((u = l.value.parentElement) == null || u.removeChild(l.value)); + let c = (s = a.value) == null ? void 0 : s.getElementById("headlessui-portal-root"); + !c || l.value === c && l.value.children.length <= 0 && ((u = l.value.parentElement) == null || u.removeChild(l.value)); }), () => { if (l.value === null) return null; let s = { ref: n, "data-headlessui-portal": "" }; - return x(dn, { to: l.value }, L({ ourProps: s, theirProps: e, slot: {}, attrs: r, slots: t, name: "Portal" })); + return $(vn, { to: l.value }, x({ ourProps: s, theirProps: e, slot: {}, attrs: r, slots: t, name: "Portal" })); }; -} }), Dr = Symbol("PortalGroupContext"), yi = B({ name: "PortalGroup", props: { as: { type: [Object, String], default: "template" }, target: { type: Object, default: null } }, setup(e, { attrs: t, slots: r }) { - let n = pn({ resolveTarget() { +} }), qr = Symbol("PortalGroupContext"), qo = A({ name: "PortalGroup", props: { as: { type: [Object, String], default: "template" }, target: { type: Object, default: null } }, setup(e, { attrs: t, slots: r }) { + let n = mn({ resolveTarget() { return e.target; } }); - return U(Dr, n), () => { - let { target: a, ...o } = e; - return L({ theirProps: o, ourProps: {}, slot: {}, attrs: t, slots: r, name: "PortalGroup" }); + return L(qr, n), () => { + let { target: a, ...i } = e; + return x({ theirProps: i, ourProps: {}, slot: {}, attrs: t, slots: r, name: "PortalGroup" }); }; -} }), Fr = Symbol("StackContext"); -var st = ((e) => (e[e.Add = 0] = "Add", e[e.Remove = 1] = "Remove", e))(st || {}); -function bi() { - return q(Fr, () => { +} }), Nr = Symbol("StackContext"); +var tt = ((e) => (e[e.Add = 0] = "Add", e[e.Remove = 1] = "Remove", e))(tt || {}); +function No() { + return B(Nr, () => { }); } -function wi({ type: e, element: t, onUpdate: r }) { - let n = bi(); - function a(...o) { - r == null || r(...o), n(...o); +function Ho({ type: e, element: t, onUpdate: r }) { + let n = No(); + function a(...i) { + r == null || r(...i), n(...i); } - R(() => { - a(0, e, t), ve(() => { + P(() => { + a(0, e, t), pe(() => { a(1, e, t); }); - }), U(Fr, a); + }), L(Nr, a); } -let Cr = Symbol("DescriptionContext"); -function _i() { - let e = q(Cr, null); +let Hr = Symbol("DescriptionContext"); +function ko() { + let e = B(Hr, null); if (e === null) throw new Error("Missing parent"); return e; } -function Si({ slot: e = v({}), name: t = "Description", props: r = {} } = {}) { - let n = v([]); - function a(o) { - return n.value.push(o), () => { - let i = n.value.indexOf(o); - i !== -1 && n.value.splice(i, 1); +function Uo({ slot: e = h({}), name: t = "Description", props: r = {} } = {}) { + let n = h([]); + function a(i) { + return n.value.push(i), () => { + let o = n.value.indexOf(i); + o !== -1 && n.value.splice(o, 1); }; } - return U(Cr, { register: a, slot: e, name: t, props: r }), O(() => n.value.length > 0 ? n.value.join(" ") : void 0); + return L(Hr, { register: a, slot: e, name: t, props: r }), w(() => n.value.length > 0 ? n.value.join(" ") : void 0); } -let gl = B({ name: "Description", props: { as: { type: [Object, String], default: "p" } }, setup(e, { attrs: t, slots: r }) { - let n = _i(), a = `headlessui-description-${de()}`; - return R(() => ve(n.register(a))), () => { - let { name: o = "Description", slot: i = v({}), props: l = {} } = n, s = e, u = { ...Object.entries(l).reduce((f, [p, d]) => Object.assign(f, { [p]: ee(d) }), {}), id: a }; - return L({ ourProps: u, theirProps: s, slot: i.value, attrs: t, slots: r, name: o }); +let Ml = A({ name: "Description", props: { as: { type: [Object, String], default: "p" } }, setup(e, { attrs: t, slots: r }) { + let n = ko(), a = `headlessui-description-${le()}`; + return P(() => pe(n.register(a))), () => { + let { name: i = "Description", slot: o = h({}), props: l = {} } = n, s = e, u = { ...Object.entries(l).reduce((c, [f, p]) => Object.assign(c, { [f]: X(p) }), {}), id: a }; + return x({ ourProps: u, theirProps: s, slot: o.value, attrs: t, slots: r, name: i }); }; } }); -var $i = ((e) => (e[e.Open = 0] = "Open", e[e.Closed = 1] = "Closed", e))($i || {}); -let lt = Symbol("DialogContext"); -function Fe(e) { - let t = q(lt, null); +var Go = ((e) => (e[e.Open = 0] = "Open", e[e.Closed = 1] = "Closed", e))(Go || {}); +let rt = Symbol("DialogContext"); +function Pe(e) { + let t = B(rt, null); if (t === null) { let r = new Error(`<${e} /> is missing a parent component.`); - throw Error.captureStackTrace && Error.captureStackTrace(r, Fe), r; + throw Error.captureStackTrace && Error.captureStackTrace(r, Pe), r; } return t; } -let Me = "DC8F892D-2EBD-447C-A4C8-A03058436FF4", jr = B({ name: "Dialog", inheritAttrs: !1, props: { as: { type: [Object, String], default: "div" }, static: { type: Boolean, default: !1 }, unmount: { type: Boolean, default: !0 }, open: { type: [Boolean, String], default: Me }, initialFocus: { type: Object, default: null } }, emits: { close: (e) => !0 }, setup(e, { emit: t, attrs: r, slots: n, expose: a }) { - var o; - let i = v(!1); - R(() => { - i.value = !0; +let De = "DC8F892D-2EBD-447C-A4C8-A03058436FF4", kr = A({ name: "Dialog", inheritAttrs: !1, props: { as: { type: [Object, String], default: "div" }, static: { type: Boolean, default: !1 }, unmount: { type: Boolean, default: !0 }, open: { type: [Boolean, String], default: De }, initialFocus: { type: Object, default: null } }, emits: { close: (e) => !0 }, setup(e, { emit: t, attrs: r, slots: n, expose: a }) { + var i; + let o = h(!1); + P(() => { + o.value = !0; }); - let l = v(0), s = Ot(), u = O(() => e.open === Me && s !== null ? I(s.value, { [ue.Open]: !0, [ue.Closed]: !1 }) : e.open), f = v(/* @__PURE__ */ new Set()), p = v(null), d = v(null), g = O(() => ge(p)); - if (a({ el: p, $el: p }), !(e.open !== Me || s !== null)) + let l = h(0), s = _t(), u = w(() => e.open === De && s !== null ? j(s.value, { [ie.Open]: !0, [ie.Closed]: !1 }) : e.open), c = h(/* @__PURE__ */ new Set()), f = h(null), p = h(null), v = w(() => he(f)); + if (a({ el: f, $el: f }), !(e.open !== De || s !== null)) throw new Error("You forgot to provide an `open` prop to the `Dialog`."); if (typeof u.value != "boolean") - throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${u.value === Me ? void 0 : e.open}`); - let h = O(() => i.value && u.value ? 0 : 1), T = O(() => h.value === 0), E = O(() => l.value > 1), F = q(lt, null) !== null, A = O(() => E.value ? "parent" : "leaf"); - mi(p, O(() => E.value ? T.value : !1)), wi({ type: "Dialog", element: p, onUpdate: (_, b, S) => { + throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${u.value === De ? void 0 : e.open}`); + let m = w(() => o.value && u.value ? 0 : 1), O = w(() => m.value === 0), T = w(() => l.value > 1), D = B(rt, null) !== null, C = w(() => T.value ? "parent" : "leaf"); + Io(f, w(() => T.value ? O.value : !1)), Ho({ type: "Dialog", element: f, onUpdate: (S, b, _) => { if (b === "Dialog") - return I(_, { [st.Add]() { - f.value.add(S), l.value += 1; - }, [st.Remove]() { - f.value.delete(S), l.value -= 1; + return j(S, { [tt.Add]() { + c.value.add(_), l.value += 1; + }, [tt.Remove]() { + c.value.delete(_), l.value -= 1; } }); } }); - let K = Si({ name: "DialogDescription", slot: O(() => ({ open: u.value })) }), N = `headlessui-dialog-${de()}`, C = v(null), j = { titleId: C, panelRef: v(null), dialogState: h, setTitleId(_) { - C.value !== _ && (C.value = _); + let te = Uo({ name: "DialogDescription", slot: w(() => ({ open: u.value })) }), W = `headlessui-dialog-${le()}`, F = h(null), q = { titleId: F, panelRef: h(null), dialogState: m, setTitleId(S) { + F.value !== S && (F.value = S); }, close() { t("close", !1); } }; - return U(lt, j), ui(() => { - var _, b, S; - return [...Array.from((b = (_ = g.value) == null ? void 0 : _.querySelectorAll("body > *, [data-headlessui-portal]")) != null ? b : []).filter((y) => !(!(y instanceof HTMLElement) || y.contains(X(d)) || j.panelRef.value && y.contains(j.panelRef.value))), (S = j.panelRef.value) != null ? S : p.value]; - }, (_, b) => { - j.close(), ir(() => b == null ? void 0 : b.focus()); - }, O(() => h.value === 0 && !E.value)), Er((o = g.value) == null ? void 0 : o.defaultView, "keydown", (_) => { - _.defaultPrevented || _.key === Sr.Escape && h.value === 0 && (E.value || (_.preventDefault(), _.stopPropagation(), j.close())); - }), G((_) => { + return L(rt, q), Do(() => { + var S, b, _; + return [...Array.from((b = (S = v.value) == null ? void 0 : S.querySelectorAll("body > *, [data-headlessui-portal]")) != null ? b : []).filter((g) => !(!(g instanceof HTMLElement) || g.contains(U(p)) || q.panelRef.value && g.contains(q.panelRef.value))), (_ = q.panelRef.value) != null ? _ : f.value]; + }, (S, b) => { + q.close(), ir(() => b == null ? void 0 : b.focus()); + }, w(() => m.value === 0 && !T.value)), Br((i = v.value) == null ? void 0 : i.defaultView, "keydown", (S) => { + S.defaultPrevented || S.key === Cr.Escape && m.value === 0 && (T.value || (S.preventDefault(), S.stopPropagation(), q.close())); + }), M((S) => { var b; - if (h.value !== 0 || F) + if (m.value !== 0 || D) return; - let S = g.value; - if (!S) + let _ = v.value; + if (!_) return; - let y = S == null ? void 0 : S.documentElement, P = (b = S.defaultView) != null ? b : window, Re = y.style.overflow, ye = y.style.paddingRight, pe = P.innerWidth - y.clientWidth; - if (y.style.overflow = "hidden", pe > 0) { - let Be = y.clientWidth - y.offsetWidth, Le = pe - Be; - y.style.paddingRight = `${Le}px`; + let g = _ == null ? void 0 : _.documentElement, E = (b = _.defaultView) != null ? b : window, Pt = g.style.overflow, At = g.style.paddingRight, Ne = E.innerWidth - g.clientWidth; + if (g.style.overflow = "hidden", Ne > 0) { + let xt = g.clientWidth - g.offsetWidth, Dt = Ne - xt; + g.style.paddingRight = `${Dt}px`; } - _(() => { - y.style.overflow = Re, y.style.paddingRight = ye; + S(() => { + g.style.overflow = Pt, g.style.paddingRight = At; }); - }), G((_) => { - if (h.value !== 0) + }), M((S) => { + if (m.value !== 0) return; - let b = X(p); + let b = U(f); if (!b) return; - let S = new IntersectionObserver((y) => { - for (let P of y) - P.boundingClientRect.x === 0 && P.boundingClientRect.y === 0 && P.boundingClientRect.width === 0 && P.boundingClientRect.height === 0 && j.close(); + let _ = new IntersectionObserver((g) => { + for (let E of g) + E.boundingClientRect.x === 0 && E.boundingClientRect.y === 0 && E.boundingClientRect.width === 0 && E.boundingClientRect.height === 0 && q.close(); }); - S.observe(b), _(() => S.disconnect()); + _.observe(b), S(() => _.disconnect()); }), () => { - let _ = { ...r, ref: p, id: N, role: "dialog", "aria-modal": h.value === 0 ? !0 : void 0, "aria-labelledby": C.value, "aria-describedby": K.value }, { open: b, initialFocus: S, ...y } = e, P = { open: h.value === 0 }; - return x(it, { force: !0 }, () => [x(xr, () => x(yi, { target: p.value }, () => x(it, { force: !1 }, () => x(_e, { initialFocus: S, containers: f, features: T.value ? I(A.value, { parent: _e.features.RestoreFocus, leaf: _e.features.All & ~_e.features.FocusLock }) : _e.features.None }, () => L({ ourProps: _, theirProps: y, slot: P, attrs: r, slots: n, visible: h.value === 0, features: Ue.RenderStrategy | Ue.Static, name: "Dialog" }))))), x(at, { features: Ge.Hidden, ref: d })]); + let S = { ...r, ref: f, id: W, role: "dialog", "aria-modal": m.value === 0 ? !0 : void 0, "aria-labelledby": F.value, "aria-describedby": te.value }, { open: b, initialFocus: _, ...g } = e, E = { open: m.value === 0 }; + return $(et, { force: !0 }, () => [$(Mr, () => $(qo, { target: f.value }, () => $(et, { force: !1 }, () => $(me, { initialFocus: _, containers: c, features: O.value ? j(C.value, { parent: me.features.RestoreFocus, leaf: me.features.All & ~me.features.FocusLock }) : me.features.None }, () => x({ ourProps: S, theirProps: g, slot: E, attrs: r, slots: n, visible: m.value === 0, features: Re.RenderStrategy | Re.Static, name: "Dialog" }))))), $(Qe, { features: Be.Hidden, ref: p })]); }; } }); -B({ name: "DialogOverlay", props: { as: { type: [Object, String], default: "div" } }, setup(e, { attrs: t, slots: r }) { - let n = Fe("DialogOverlay"), a = `headlessui-dialog-overlay-${de()}`; - function o(i) { - i.target === i.currentTarget && (i.preventDefault(), i.stopPropagation(), n.close()); +A({ name: "DialogOverlay", props: { as: { type: [Object, String], default: "div" } }, setup(e, { attrs: t, slots: r }) { + let n = Pe("DialogOverlay"), a = `headlessui-dialog-overlay-${le()}`; + function i(o) { + o.target === o.currentTarget && (o.preventDefault(), o.stopPropagation(), n.close()); } - return () => L({ ourProps: { id: a, "aria-hidden": !0, onClick: o }, theirProps: e, slot: { open: n.dialogState.value === 0 }, attrs: t, slots: r, name: "DialogOverlay" }); + return () => x({ ourProps: { id: a, "aria-hidden": !0, onClick: i }, theirProps: e, slot: { open: n.dialogState.value === 0 }, attrs: t, slots: r, name: "DialogOverlay" }); } }); -B({ name: "DialogBackdrop", props: { as: { type: [Object, String], default: "div" } }, inheritAttrs: !1, setup(e, { attrs: t, slots: r, expose: n }) { - let a = Fe("DialogBackdrop"), o = `headlessui-dialog-backdrop-${de()}`, i = v(null); - return n({ el: i, $el: i }), R(() => { +A({ name: "DialogBackdrop", props: { as: { type: [Object, String], default: "div" } }, inheritAttrs: !1, setup(e, { attrs: t, slots: r, expose: n }) { + let a = Pe("DialogBackdrop"), i = `headlessui-dialog-backdrop-${le()}`, o = h(null); + return n({ el: o, $el: o }), P(() => { if (a.panelRef.value === null) throw new Error("A component is being used, but a component is missing."); }), () => { - let l = e, s = { id: o, ref: i, "aria-hidden": !0 }; - return x(it, { force: !0 }, () => x(xr, () => L({ ourProps: s, theirProps: { ...t, ...l }, slot: { open: a.dialogState.value === 0 }, attrs: t, slots: r, name: "DialogBackdrop" }))); + let l = e, s = { id: i, ref: o, "aria-hidden": !0 }; + return $(et, { force: !0 }, () => $(Mr, () => x({ ourProps: s, theirProps: { ...t, ...l }, slot: { open: a.dialogState.value === 0 }, attrs: t, slots: r, name: "DialogBackdrop" }))); }; } }); -let Rr = B({ name: "DialogPanel", props: { as: { type: [Object, String], default: "div" } }, setup(e, { attrs: t, slots: r, expose: n }) { - let a = Fe("DialogPanel"), o = `headlessui-dialog-panel-${de()}`; +let Ur = A({ name: "DialogPanel", props: { as: { type: [Object, String], default: "div" } }, setup(e, { attrs: t, slots: r, expose: n }) { + let a = Pe("DialogPanel"), i = `headlessui-dialog-panel-${le()}`; n({ el: a.panelRef, $el: a.panelRef }); - function i(l) { + function o(l) { l.stopPropagation(); } return () => { - let l = { id: o, ref: a.panelRef, onClick: i }; - return L({ ourProps: l, theirProps: e, slot: { open: a.dialogState.value === 0 }, attrs: t, slots: r, name: "DialogPanel" }); + let l = { id: i, ref: a.panelRef, onClick: o }; + return x({ ourProps: l, theirProps: e, slot: { open: a.dialogState.value === 0 }, attrs: t, slots: r, name: "DialogPanel" }); }; } }); -B({ name: "DialogTitle", props: { as: { type: [Object, String], default: "h2" } }, setup(e, { attrs: t, slots: r }) { - let n = Fe("DialogTitle"), a = `headlessui-dialog-title-${de()}`; - return R(() => { - n.setTitleId(a), ve(() => n.setTitleId(null)); - }), () => L({ ourProps: { id: a }, theirProps: e, slot: { open: n.dialogState.value === 0 }, attrs: t, slots: r, name: "DialogTitle" }); +A({ name: "DialogTitle", props: { as: { type: [Object, String], default: "h2" } }, setup(e, { attrs: t, slots: r }) { + let n = Pe("DialogTitle"), a = `headlessui-dialog-title-${le()}`; + return P(() => { + n.setTitleId(a), pe(() => n.setTitleId(null)); + }), () => x({ ourProps: { id: a }, theirProps: e, slot: { open: n.dialogState.value === 0 }, attrs: t, slots: r, name: "DialogTitle" }); } }); -function Oi(e) { +function Ko(e) { let t = { called: !1 }; return (...r) => { if (!t.called) return t.called = !0, e(...r); }; } -function Br() { +function Gr() { let e = [], t = [], r = { enqueue(n) { t.push(n); }, requestAnimationFrame(...n) { @@ -1272,136 +1301,136 @@ function Br() { } }; return r; } -function Qe(e, ...t) { +function Ke(e, ...t) { e && t.length > 0 && e.classList.add(...t); } -function qe(e, ...t) { +function Ce(e, ...t) { e && t.length > 0 && e.classList.remove(...t); } -var ut = ((e) => (e.Finished = "finished", e.Cancelled = "cancelled", e))(ut || {}); -function Ti(e, t) { - let r = Br(); +var nt = ((e) => (e.Finished = "finished", e.Cancelled = "cancelled", e))(nt || {}); +function zo(e, t) { + let r = Gr(); if (!e) return r.dispose; - let { transitionDuration: n, transitionDelay: a } = getComputedStyle(e), [o, i] = [n, a].map((l) => { - let [s = 0] = l.split(",").filter(Boolean).map((u) => u.includes("ms") ? parseFloat(u) : parseFloat(u) * 1e3).sort((u, f) => f - u); + let { transitionDuration: n, transitionDelay: a } = getComputedStyle(e), [i, o] = [n, a].map((l) => { + let [s = 0] = l.split(",").filter(Boolean).map((u) => u.includes("ms") ? parseFloat(u) : parseFloat(u) * 1e3).sort((u, c) => c - u); return s; }); - return o !== 0 ? r.setTimeout(() => t("finished"), o + i) : t("finished"), r.add(() => t("cancelled")), r.dispose; + return i !== 0 ? r.setTimeout(() => t("finished"), i + o) : t("finished"), r.add(() => t("cancelled")), r.dispose; } -function Gt(e, t, r, n, a, o) { - let i = Br(), l = o !== void 0 ? Oi(o) : () => { +function Ut(e, t, r, n, a, i) { + let o = Gr(), l = i !== void 0 ? Ko(i) : () => { }; - return qe(e, ...a), Qe(e, ...t, ...r), i.nextFrame(() => { - qe(e, ...r), Qe(e, ...n), i.add(Ti(e, (s) => (qe(e, ...n, ...t), Qe(e, ...a), l(s)))); - }), i.add(() => qe(e, ...t, ...r, ...n, ...a)), i.add(() => l("cancelled")), i.dispose; + return Ce(e, ...a), Ke(e, ...t, ...r), o.nextFrame(() => { + Ce(e, ...r), Ke(e, ...n), o.add(zo(e, (s) => (Ce(e, ...n, ...t), Ke(e, ...a), l(s)))); + }), o.add(() => Ce(e, ...t, ...r, ...n, ...a)), o.add(() => l("cancelled")), o.dispose; } -function ie(e = "") { +function re(e = "") { return e.split(" ").filter((t) => t.trim().length > 1); } -let Tt = Symbol("TransitionContext"); -var Ei = ((e) => (e.Visible = "visible", e.Hidden = "hidden", e))(Ei || {}); -function Ai() { - return q(Tt, null) !== null; +let Ot = Symbol("TransitionContext"); +var Wo = ((e) => (e.Visible = "visible", e.Hidden = "hidden", e))(Wo || {}); +function Jo() { + return B(Ot, null) !== null; } -function Pi() { - let e = q(Tt, null); +function Xo() { + let e = B(Ot, null); if (e === null) throw new Error("A is used but it is missing a parent ."); return e; } -function xi() { - let e = q(Et, null); +function Yo() { + let e = B($t, null); if (e === null) throw new Error("A is used but it is missing a parent ."); return e; } -let Et = Symbol("NestingContext"); -function Xe(e) { - return "children" in e ? Xe(e.children) : e.value.filter(({ state: t }) => t === "visible").length > 0; +let $t = Symbol("NestingContext"); +function qe(e) { + return "children" in e ? qe(e.children) : e.value.filter(({ state: t }) => t === "visible").length > 0; } -function Lr(e) { - let t = v([]), r = v(!1); - R(() => r.value = !0), ve(() => r.value = !1); - function n(o, i = te.Hidden) { - let l = t.value.findIndex(({ id: s }) => s === o); - l !== -1 && (I(i, { [te.Unmount]() { +function Kr(e) { + let t = h([]), r = h(!1); + P(() => r.value = !0), pe(() => r.value = !1); + function n(i, o = Y.Hidden) { + let l = t.value.findIndex(({ id: s }) => s === i); + l !== -1 && (j(o, { [Y.Unmount]() { t.value.splice(l, 1); - }, [te.Hidden]() { + }, [Y.Hidden]() { t.value[l].state = "hidden"; - } }), !Xe(t) && r.value && (e == null || e())); + } }), !qe(t) && r.value && (e == null || e())); } - function a(o) { - let i = t.value.find(({ id: l }) => l === o); - return i ? i.state !== "visible" && (i.state = "visible") : t.value.push({ id: o, state: "visible" }), () => n(o, te.Unmount); + function a(i) { + let o = t.value.find(({ id: l }) => l === i); + return o ? o.state !== "visible" && (o.state = "visible") : t.value.push({ id: i, state: "visible" }), () => n(i, Y.Unmount); } return { children: t, register: a, unregister: n }; } -let Ir = Ue.RenderStrategy, Ce = B({ props: { as: { type: [Object, String], default: "div" }, show: { type: [Boolean], default: null }, unmount: { type: [Boolean], default: !0 }, appear: { type: [Boolean], default: !1 }, enter: { type: [String], default: "" }, enterFrom: { type: [String], default: "" }, enterTo: { type: [String], default: "" }, entered: { type: [String], default: "" }, leave: { type: [String], default: "" }, leaveFrom: { type: [String], default: "" }, leaveTo: { type: [String], default: "" } }, emits: { beforeEnter: () => !0, afterEnter: () => !0, beforeLeave: () => !0, afterLeave: () => !0 }, setup(e, { emit: t, attrs: r, slots: n, expose: a }) { - if (!Ai() && ti()) - return () => x(je, { ...e, onBeforeEnter: () => t("beforeEnter"), onAfterEnter: () => t("afterEnter"), onBeforeLeave: () => t("beforeLeave"), onAfterLeave: () => t("afterLeave") }, n); - let o = v(null), i = v("visible"), l = O(() => e.unmount ? te.Unmount : te.Hidden); - a({ el: o, $el: o }); - let { show: s, appear: u } = Pi(), { register: f, unregister: p } = xi(), d = { value: !0 }, g = de(), h = { value: !1 }, T = Lr(() => { - h.value || (i.value = "hidden", p(g), t("afterLeave")); +let zr = Re.RenderStrategy, Ae = A({ props: { as: { type: [Object, String], default: "div" }, show: { type: [Boolean], default: null }, unmount: { type: [Boolean], default: !0 }, appear: { type: [Boolean], default: !1 }, enter: { type: [String], default: "" }, enterFrom: { type: [String], default: "" }, enterTo: { type: [String], default: "" }, entered: { type: [String], default: "" }, leave: { type: [String], default: "" }, leaveFrom: { type: [String], default: "" }, leaveTo: { type: [String], default: "" } }, emits: { beforeEnter: () => !0, afterEnter: () => !0, beforeLeave: () => !0, afterLeave: () => !0 }, setup(e, { emit: t, attrs: r, slots: n, expose: a }) { + if (!Jo() && _o()) + return () => $(xe, { ...e, onBeforeEnter: () => t("beforeEnter"), onAfterEnter: () => t("afterEnter"), onBeforeLeave: () => t("beforeLeave"), onAfterLeave: () => t("afterLeave") }, n); + let i = h(null), o = h("visible"), l = w(() => e.unmount ? Y.Unmount : Y.Hidden); + a({ el: i, $el: i }); + let { show: s, appear: u } = Xo(), { register: c, unregister: f } = Yo(), p = { value: !0 }, v = le(), m = { value: !1 }, O = Kr(() => { + m.value || (o.value = "hidden", f(v), t("afterLeave")); }); - R(() => { - let b = f(g); - ve(b); - }), G(() => { - if (l.value === te.Hidden && !!g) { - if (s && i.value !== "visible") { - i.value = "visible"; + P(() => { + let b = c(v); + pe(b); + }), M(() => { + if (l.value === Y.Hidden && !!v) { + if (s && o.value !== "visible") { + o.value = "visible"; return; } - I(i.value, { hidden: () => p(g), visible: () => f(g) }); + j(o.value, { hidden: () => f(v), visible: () => c(v) }); } }); - let E = ie(e.enter), F = ie(e.enterFrom), A = ie(e.enterTo), K = ie(e.entered), N = ie(e.leave), C = ie(e.leaveFrom), j = ie(e.leaveTo); - R(() => { - G(() => { - if (i.value === "visible") { - let b = X(o); + let T = re(e.enter), D = re(e.enterFrom), C = re(e.enterTo), te = re(e.entered), W = re(e.leave), F = re(e.leaveFrom), q = re(e.leaveTo); + P(() => { + M(() => { + if (o.value === "visible") { + let b = U(i); if (b instanceof Comment && b.data === "") throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?"); } }); }); - function _(b) { - let S = d.value && !u.value, y = X(o); - !y || !(y instanceof HTMLElement) || S || (h.value = !0, s.value && t("beforeEnter"), s.value || t("beforeLeave"), b(s.value ? Gt(y, E, F, A, K, (P) => { - h.value = !1, P === ut.Finished && t("afterEnter"); - }) : Gt(y, N, C, j, K, (P) => { - h.value = !1, P === ut.Finished && (Xe(T) || (i.value = "hidden", p(g), t("afterLeave"))); + function S(b) { + let _ = p.value && !u.value, g = U(i); + !g || !(g instanceof HTMLElement) || _ || (m.value = !0, s.value && t("beforeEnter"), s.value || t("beforeLeave"), b(s.value ? Ut(g, T, D, C, te, (E) => { + m.value = !1, E === nt.Finished && t("afterEnter"); + }) : Ut(g, W, F, q, te, (E) => { + m.value = !1, E === nt.Finished && (qe(O) || (o.value = "hidden", f(v), t("afterLeave"))); }))); } - return R(() => { - Ee([s], (b, S, y) => { - _(y), d.value = !1; + return P(() => { + Se([s], (b, _, g) => { + S(g), p.value = !1; }, { immediate: !0 }); - }), U(Et, T), ri(O(() => I(i.value, { visible: ue.Open, hidden: ue.Closed }))), () => { - let { appear: b, show: S, enter: y, enterFrom: P, enterTo: Re, entered: ye, leave: pe, leaveFrom: Be, leaveTo: Le, ...oe } = e; - return L({ theirProps: oe, ourProps: { ref: o }, slot: {}, slots: n, attrs: r, features: Ir, visible: i.value === "visible", name: "TransitionChild" }); + }), L($t, O), Oo(w(() => j(o.value, { visible: ie.Open, hidden: ie.Closed }))), () => { + let { appear: b, show: _, enter: g, enterFrom: E, enterTo: Pt, entered: At, leave: Ne, leaveFrom: xt, leaveTo: Dt, ...on } = e; + return x({ theirProps: on, ourProps: { ref: i }, slot: {}, slots: n, attrs: r, features: zr, visible: o.value === "visible", name: "TransitionChild" }); }; -} }), Di = Ce, je = B({ inheritAttrs: !1, props: { as: { type: [Object, String], default: "div" }, show: { type: [Boolean], default: null }, unmount: { type: [Boolean], default: !0 }, appear: { type: [Boolean], default: !1 }, enter: { type: [String], default: "" }, enterFrom: { type: [String], default: "" }, enterTo: { type: [String], default: "" }, entered: { type: [String], default: "" }, leave: { type: [String], default: "" }, leaveFrom: { type: [String], default: "" }, leaveTo: { type: [String], default: "" } }, emits: { beforeEnter: () => !0, afterEnter: () => !0, beforeLeave: () => !0, afterLeave: () => !0 }, setup(e, { emit: t, attrs: r, slots: n }) { - let a = Ot(), o = O(() => e.show === null && a !== null ? I(a.value, { [ue.Open]: !0, [ue.Closed]: !1 }) : e.show); - G(() => { - if (![!0, !1].includes(o.value)) +} }), Vo = Ae, xe = A({ inheritAttrs: !1, props: { as: { type: [Object, String], default: "div" }, show: { type: [Boolean], default: null }, unmount: { type: [Boolean], default: !0 }, appear: { type: [Boolean], default: !1 }, enter: { type: [String], default: "" }, enterFrom: { type: [String], default: "" }, enterTo: { type: [String], default: "" }, entered: { type: [String], default: "" }, leave: { type: [String], default: "" }, leaveFrom: { type: [String], default: "" }, leaveTo: { type: [String], default: "" } }, emits: { beforeEnter: () => !0, afterEnter: () => !0, beforeLeave: () => !0, afterLeave: () => !0 }, setup(e, { emit: t, attrs: r, slots: n }) { + let a = _t(), i = w(() => e.show === null && a !== null ? j(a.value, { [ie.Open]: !0, [ie.Closed]: !1 }) : e.show); + M(() => { + if (![!0, !1].includes(i.value)) throw new Error('A is used but it is missing a `:show="true | false"` prop.'); }); - let i = v(o.value ? "visible" : "hidden"), l = Lr(() => { - i.value = "hidden"; - }), s = v(!0), u = { show: o, appear: O(() => e.appear || !s.value) }; - return R(() => { - G(() => { - s.value = !1, o.value ? i.value = "visible" : Xe(l) || (i.value = "hidden"); + let o = h(i.value ? "visible" : "hidden"), l = Kr(() => { + o.value = "hidden"; + }), s = h(!0), u = { show: i, appear: w(() => e.appear || !s.value) }; + return P(() => { + M(() => { + s.value = !1, i.value ? o.value = "visible" : qe(l) || (o.value = "hidden"); }); - }), U(Et, l), U(Tt, u), () => { - let f = _r(e, ["show", "appear", "unmount", "onBeforeEnter", "onBeforeLeave", "onAfterEnter", "onAfterLeave"]), p = { unmount: e.unmount }; - return L({ ourProps: { ...p, as: "template" }, theirProps: {}, slot: {}, slots: { ...n, default: () => [x(Di, { onBeforeEnter: () => t("beforeEnter"), onAfterEnter: () => t("afterEnter"), onBeforeLeave: () => t("beforeLeave"), onAfterLeave: () => t("afterLeave"), ...r, ...p, ...f }, n.default)] }, attrs: {}, features: Ir, visible: i.value === "visible", name: "Transition" }); + }), L($t, l), L(Ot, u), () => { + let c = Dr(e, ["show", "appear", "unmount", "onBeforeEnter", "onBeforeLeave", "onAfterEnter", "onAfterLeave"]), f = { unmount: e.unmount }; + return x({ ourProps: { ...f, as: "template" }, theirProps: {}, slot: {}, slots: { ...n, default: () => [$(Vo, { onBeforeEnter: () => t("beforeEnter"), onAfterEnter: () => t("afterEnter"), onBeforeLeave: () => t("beforeLeave"), onAfterLeave: () => t("afterLeave"), ...r, ...f, ...c }, n.default)] }, attrs: {}, features: zr, visible: o.value === "visible", name: "Transition" }); }; } }); -const Fi = { +const Qo = { props: { defaultTitle: { type: String, @@ -1430,22 +1459,22 @@ const Fi = { }; }, computed: { - hasConfirmModal: () => !!m.confirmModal, + hasConfirmModal: () => !!d.confirmModal.value, title: function() { var e; - return (e = m.confirmModal) != null && e.title ? m.confirmModal.title : this.defaultTitle; + return (e = d.confirmModal.value) != null && e.title ? d.confirmModal.value.title : this.defaultTitle; }, text: function() { var e; - return (e = m.confirmModal) != null && e.text ? m.confirmModal.text : this.defaultText; + return (e = d.confirmModal.value) != null && e.text ? d.confirmModal.value.text : this.defaultText; }, confirmButton: function() { var e; - return (e = m.confirmModal) != null && e.confirmButton ? m.confirmModal.confirmButton : this.defaultConfirmButton; + return (e = d.confirmModal.value) != null && e.confirmButton ? d.confirmModal.value.confirmButton : this.defaultConfirmButton; }, cancelButton: function() { var e; - return (e = m.confirmModal) != null && e.cancelButton ? m.confirmModal.cancelButton : this.defaultCancelButton; + return (e = d.confirmModal.value) != null && e.cancelButton ? d.confirmModal.value.cancelButton : this.defaultCancelButton; } }, watch: { @@ -1455,16 +1484,16 @@ const Fi = { }, methods: { cancel() { - m.confirmModal.rejectPromise(), this.setIsOpen(!1); + d.confirmModal.value.rejectPromise(), this.setIsOpen(!1); }, confirm() { - m.confirmModal.resolvePromise(), this.setIsOpen(!1); + d.confirmModal.value.resolvePromise(), this.setIsOpen(!1); }, setIsOpen(e) { this.isOpen = e; }, emitClose() { - m.clearConfirmModal(); + d.clearConfirmModal(); } }, render() { @@ -1478,64 +1507,64 @@ const Fi = { cancel: this.cancel, confirm: this.confirm, emitClose: this.emitClose, - Dialog: jr, - DialogPanel: Rr, - TransitionRoot: je, - TransitionChild: Ce + Dialog: kr, + DialogPanel: Ur, + TransitionRoot: xe, + TransitionChild: Ae }); } }; -function Mr(e, t) { - t = $t(t, e); +function Wr(e, t) { + t = St(t, e); for (var r = 0, n = t.length; e != null && r < n; ) - e = e[De(t[r++])]; + e = e[Ee(t[r++])]; return r && r == n ? e : void 0; } -function At(e, t, r) { - var n = e == null ? void 0 : Mr(e, t); +function Tt(e, t, r) { + var n = e == null ? void 0 : Wr(e, t); return n === void 0 ? r : n; } -var Ci = function() { +var Zo = function() { try { - var e = fe(Object, "defineProperty"); + var e = se(Object, "defineProperty"); return e({}, "", {}), e; } catch { } }(); -const Kt = Ci; -function qr(e, t, r) { - t == "__proto__" && Kt ? Kt(e, t, { +const Gt = Zo; +function Jr(e, t, r) { + t == "__proto__" && Gt ? Gt(e, t, { configurable: !0, enumerable: !0, value: r, writable: !0 }) : e[t] = r; } -var ji = Object.prototype, Ri = ji.hasOwnProperty; -function Bi(e, t, r) { +var es = Object.prototype, ts = es.hasOwnProperty; +function rs(e, t, r) { var n = e[t]; - (!(Ri.call(e, t) && _t(n, r)) || r === void 0 && !(t in e)) && qr(e, t, r); + (!(ts.call(e, t) && bt(n, r)) || r === void 0 && !(t in e)) && Jr(e, t, r); } -function Li(e, t, r, n) { - if (!me(e)) +function ns(e, t, r, n) { + if (!ce(e)) return e; - t = $t(t, e); - for (var a = -1, o = t.length, i = o - 1, l = e; l != null && ++a < o; ) { - var s = De(t[a]), u = r; + t = St(t, e); + for (var a = -1, i = t.length, o = i - 1, l = e; l != null && ++a < i; ) { + var s = Ee(t[a]), u = r; if (s === "__proto__" || s === "constructor" || s === "prototype") return e; - if (a != i) { - var f = l[s]; - u = n ? n(f, s, l) : void 0, u === void 0 && (u = me(f) ? f : mt(t[a + 1]) ? [] : {}); + if (a != o) { + var c = l[s]; + u = n ? n(c, s, l) : void 0, u === void 0 && (u = ce(c) ? c : ct(t[a + 1]) ? [] : {}); } - Bi(l, s, u), l = l[s]; + rs(l, s, u), l = l[s]; } return e; } -function Nr(e, t, r) { - return e == null ? e : Li(e, t, r); +function Xr(e, t, r) { + return e == null ? e : ns(e, t, r); } -const Ii = { +const as = { props: { default: { type: Object, @@ -1560,13 +1589,13 @@ const Ii = { }, mounted() { if (this.remember) { - let e = m.restore(this.remember, this.localStorage); + let e = d.restore(this.remember, this.localStorage); e || (e = {}), this.values = Object.assign({}, { ...this.default, ...e }); } else this.values = Object.assign({}, { ...this.default }); }, updated() { - this.remember && m.remember(this.remember, { ...this.values }, this.localStorage); + this.remember && d.remember(this.remember, { ...this.values }, this.localStorage); }, render() { const e = this; @@ -1575,14 +1604,14 @@ const Ii = { return Object.keys(e.values); }, get(t, r) { - return At(e.values, r); + return Tt(e.values, r); }, set(t, r, n) { - Nr(e.values, r, n); + Xr(e.values, r, n); } })); } -}, Mi = { +}, is = { props: { url: { type: String, @@ -1633,7 +1662,7 @@ const Ii = { Accept: this.acceptHeader } }; - Object.keys(this.request).length > 0 && (e.data = this.request), or(e).then((t) => { + Object.keys(this.request).length > 0 && (e.data = this.request), ar(e).then((t) => { this.response = t.data, this.processing = !1; }).catch(() => { this.processing = !1; @@ -1650,34 +1679,34 @@ const Ii = { }); } }; -function Hr(e) { +function Yr(e) { return e && e.length ? e[0] : void 0; } -const qi = { +const os = { inject: ["stack"], computed: { values() { - return m.validationErrors(this.stack); + return d.validationErrors(this.stack); } }, render() { const e = this; return this.$slots.default({ has(t) { - return k(e.values, t); + return I(e.values, t); }, first(t) { - return Hr(e.values[t] || []); + return Yr(e.values[t] || []); }, all: { ...this.values }, ...this.values }); } }; -function Ni(e, t) { - return e && yt(e, gr(t)); +function ss(e, t) { + return e && pt(e, mr(t)); } -const Hi = { +const ls = { props: { private: { type: Boolean, @@ -1709,12 +1738,12 @@ const Hi = { this.subscribed = !0; }), this.listeners.forEach((e) => { const t = this.subscription.listen(e, (r) => { - const n = "splade.redirect", a = "splade.refresh", o = "splade.toast"; - let i = null, l = !1, s = []; - Ni(r, (u) => { - !me(u) || (n in u && (i = u[n]), a in u && (l = u[a]), o in u && s.push(u)); - }), i ? m.visit(i) : l ? m.refresh() : this.events.push({ name: e, data: r }), s.length > 0 && s.forEach((u) => { - m.pushToast(u); + const n = "splade.redirect", a = "splade.refresh", i = "splade.toast"; + let o = null, l = !1, s = []; + ss(r, (u) => { + !ce(u) || (n in u && (o = u[n]), a in u && (l = u[a]), i in u && s.push(u)); + }), o ? d.visit(o) : l ? d.refresh() : this.events.push({ name: e, data: r }), s.length > 0 && s.forEach((u) => { + d.pushToast(u); }), this.$root.$emit(`event.${e}`, r); }); this.subscriptions.push(t); @@ -1726,39 +1755,39 @@ const Hi = { events: this.events }); } -}, ki = { +}, us = { inject: ["stack"], computed: { values() { - return m.flashData(this.stack); + return d.flashData(this.stack); } }, render() { const e = this; return this.$slots.default({ has(t) { - return k(e.values, t); + return I(e.values, t); }, ...this.values }); } }; -function ct(e) { - return e instanceof File || e instanceof Blob || e instanceof FileList && e.length > 0 || e instanceof FormData && Array.from(e.values()).some((t) => ct(t)) || typeof e == "object" && e !== null && Object.values(e).some((t) => ct(t)); +function at(e) { + return e instanceof File || e instanceof Blob || e instanceof FileList && e.length > 0 || e instanceof FormData && Array.from(e.values()).some((t) => at(t)) || typeof e == "object" && e !== null && Object.values(e).some((t) => at(t)); } -function kr(e) { +function Vr(e) { e = e || {}; let t = new FormData(); for (const r in e) - Object.prototype.hasOwnProperty.call(e, r) && Gr(t, Ur(null, r), e[r]); + Object.prototype.hasOwnProperty.call(e, r) && Zr(t, Qr(null, r), e[r]); return t; } -function Ur(e, t) { +function Qr(e, t) { return e ? e + "[" + t + "]" : t; } -function Gr(e, t, r) { +function Zr(e, t, r) { if (Array.isArray(r)) - return Array.from(r.keys()).forEach((n) => Gr(e, Ur(t, n.toString()), r[n])); + return Array.from(r.keys()).forEach((n) => Zr(e, Qr(t, n.toString()), r[n])); if (r instanceof Date) return e.append(t, r.toISOString()); if (r instanceof File) @@ -1773,353 +1802,353 @@ function Gr(e, t, r) { return e.append(t, `${r}`); if (r == null) return e.append(t, ""); - kr(r); + Vr(r); } -var Ui = "[object Boolean]"; -function Kr(e) { - return e === !0 || e === !1 || ne(e) && ae(e) == Ui; +var cs = "[object Boolean]"; +function en(e) { + return e === !0 || e === !1 || Z(e) && ee(e) == cs; } -function Gi() { - this.__data__ = new Y(), this.size = 0; +function fs() { + this.__data__ = new K(), this.size = 0; } -function Ki(e) { +function ds(e) { var t = this.__data__, r = t.delete(e); return this.size = t.size, r; } -function zi(e) { +function ps(e) { return this.__data__.get(e); } -function Wi(e) { +function hs(e) { return this.__data__.has(e); } -var Xi = 200; -function Ji(e, t) { +var vs = 200; +function ms(e, t) { var r = this.__data__; - if (r instanceof Y) { + if (r instanceof K) { var n = r.__data__; - if (!Pe || n.length < Xi - 1) + if (!Oe || n.length < vs - 1) return n.push([e, t]), this.size = ++r.size, this; - r = this.__data__ = new V(n); + r = this.__data__ = new z(n); } return r.set(e, t), this.size = r.size, this; } -function W(e) { - var t = this.__data__ = new Y(e); +function k(e) { + var t = this.__data__ = new K(e); this.size = t.size; } -W.prototype.clear = Gi; -W.prototype.delete = Ki; -W.prototype.get = zi; -W.prototype.has = Wi; -W.prototype.set = Ji; -var Yi = "__lodash_hash_undefined__"; -function Vi(e) { - return this.__data__.set(e, Yi), this; +k.prototype.clear = fs; +k.prototype.delete = ds; +k.prototype.get = ps; +k.prototype.has = hs; +k.prototype.set = ms; +var gs = "__lodash_hash_undefined__"; +function ys(e) { + return this.__data__.set(e, gs), this; } -function Qi(e) { +function bs(e) { return this.__data__.has(e); } -function Ke(e) { +function Ie(e) { var t = -1, r = e == null ? 0 : e.length; - for (this.__data__ = new V(); ++t < r; ) + for (this.__data__ = new z(); ++t < r; ) this.add(e[t]); } -Ke.prototype.add = Ke.prototype.push = Vi; -Ke.prototype.has = Qi; -function Zi(e, t) { +Ie.prototype.add = Ie.prototype.push = ys; +Ie.prototype.has = bs; +function ws(e, t) { for (var r = -1, n = e == null ? 0 : e.length; ++r < n; ) if (t(e[r], r, e)) return !0; return !1; } -function es(e, t) { +function Ss(e, t) { return e.has(t); } -var ts = 1, rs = 2; -function zr(e, t, r, n, a, o) { - var i = r & ts, l = e.length, s = t.length; - if (l != s && !(i && s > l)) +var _s = 1, Os = 2; +function tn(e, t, r, n, a, i) { + var o = r & _s, l = e.length, s = t.length; + if (l != s && !(o && s > l)) return !1; - var u = o.get(e), f = o.get(t); - if (u && f) - return u == t && f == e; - var p = -1, d = !0, g = r & rs ? new Ke() : void 0; - for (o.set(e, t), o.set(t, e); ++p < l; ) { - var h = e[p], T = t[p]; + var u = i.get(e), c = i.get(t); + if (u && c) + return u == t && c == e; + var f = -1, p = !0, v = r & Os ? new Ie() : void 0; + for (i.set(e, t), i.set(t, e); ++f < l; ) { + var m = e[f], O = t[f]; if (n) - var E = i ? n(T, h, p, t, e, o) : n(h, T, p, e, t, o); - if (E !== void 0) { - if (E) + var T = o ? n(O, m, f, t, e, i) : n(m, O, f, e, t, i); + if (T !== void 0) { + if (T) continue; - d = !1; + p = !1; break; } - if (g) { - if (!Zi(t, function(F, A) { - if (!es(g, A) && (h === F || a(h, F, r, n, o))) - return g.push(A); + if (v) { + if (!ws(t, function(D, C) { + if (!Ss(v, C) && (m === D || a(m, D, r, n, i))) + return v.push(C); })) { - d = !1; + p = !1; break; } - } else if (!(h === T || a(h, T, r, n, o))) { - d = !1; + } else if (!(m === O || a(m, O, r, n, i))) { + p = !1; break; } } - return o.delete(e), o.delete(t), d; + return i.delete(e), i.delete(t), p; } -var ns = J.Uint8Array; -const zt = ns; -function as(e) { +var $s = G.Uint8Array; +const Kt = $s; +function Ts(e) { var t = -1, r = Array(e.size); return e.forEach(function(n, a) { r[++t] = [a, n]; }), r; } -function os(e) { +function Es(e) { var t = -1, r = Array(e.size); return e.forEach(function(n) { r[++t] = n; }), r; } -var is = 1, ss = 2, ls = "[object Boolean]", us = "[object Date]", cs = "[object Error]", fs = "[object Map]", ds = "[object Number]", ps = "[object RegExp]", hs = "[object Set]", ms = "[object String]", vs = "[object Symbol]", gs = "[object ArrayBuffer]", ys = "[object DataView]", Wt = re ? re.prototype : void 0, Ze = Wt ? Wt.valueOf : void 0; -function bs(e, t, r, n, a, o, i) { +var Ps = 1, As = 2, xs = "[object Boolean]", Ds = "[object Date]", Cs = "[object Error]", Fs = "[object Map]", js = "[object Number]", Rs = "[object RegExp]", Bs = "[object Set]", Is = "[object String]", Ls = "[object Symbol]", Ms = "[object ArrayBuffer]", qs = "[object DataView]", zt = Q ? Q.prototype : void 0, ze = zt ? zt.valueOf : void 0; +function Ns(e, t, r, n, a, i, o) { switch (r) { - case ys: + case qs: if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1; e = e.buffer, t = t.buffer; - case gs: - return !(e.byteLength != t.byteLength || !o(new zt(e), new zt(t))); - case ls: - case us: - case ds: - return _t(+e, +t); - case cs: + case Ms: + return !(e.byteLength != t.byteLength || !i(new Kt(e), new Kt(t))); + case xs: + case Ds: + case js: + return bt(+e, +t); + case Cs: return e.name == t.name && e.message == t.message; - case ps: - case ms: + case Rs: + case Is: return e == t + ""; - case fs: - var l = as; - case hs: - var s = n & is; - if (l || (l = os), e.size != t.size && !s) + case Fs: + var l = Ts; + case Bs: + var s = n & Ps; + if (l || (l = Es), e.size != t.size && !s) return !1; - var u = i.get(e); + var u = o.get(e); if (u) return u == t; - n |= ss, i.set(e, t); - var f = zr(l(e), l(t), n, a, o, i); - return i.delete(e), f; - case vs: - if (Ze) - return Ze.call(e) == Ze.call(t); + n |= As, o.set(e, t); + var c = tn(l(e), l(t), n, a, i, o); + return o.delete(e), c; + case Ls: + if (ze) + return ze.call(e) == ze.call(t); } return !1; } -function ws(e, t) { +function Hs(e, t) { for (var r = -1, n = t.length, a = e.length; ++r < n; ) e[a + r] = t[r]; return e; } -function _s(e, t, r) { +function ks(e, t, r) { var n = t(e); - return M(e) ? n : ws(n, r(e)); + return R(e) ? n : Hs(n, r(e)); } -function Ss(e, t) { - for (var r = -1, n = e == null ? 0 : e.length, a = 0, o = []; ++r < n; ) { - var i = e[r]; - t(i, r, e) && (o[a++] = i); +function Us(e, t) { + for (var r = -1, n = e == null ? 0 : e.length, a = 0, i = []; ++r < n; ) { + var o = e[r]; + t(o, r, e) && (i[a++] = o); } - return o; + return i; } -function $s() { +function Gs() { return []; } -var Os = Object.prototype, Ts = Os.propertyIsEnumerable, Xt = Object.getOwnPropertySymbols, Es = Xt ? function(e) { - return e == null ? [] : (e = Object(e), Ss(Xt(e), function(t) { - return Ts.call(e, t); +var Ks = Object.prototype, zs = Ks.propertyIsEnumerable, Wt = Object.getOwnPropertySymbols, Ws = Wt ? function(e) { + return e == null ? [] : (e = Object(e), Us(Wt(e), function(t) { + return zs.call(e, t); })); -} : $s; -const As = Es; +} : Gs; +const Js = Ws; function Jt(e) { - return _s(e, gt, As); + return ks(e, dt, Js); } -var Ps = 1, xs = Object.prototype, Ds = xs.hasOwnProperty; -function Fs(e, t, r, n, a, o) { - var i = r & Ps, l = Jt(e), s = l.length, u = Jt(t), f = u.length; - if (s != f && !i) +var Xs = 1, Ys = Object.prototype, Vs = Ys.hasOwnProperty; +function Qs(e, t, r, n, a, i) { + var o = r & Xs, l = Jt(e), s = l.length, u = Jt(t), c = u.length; + if (s != c && !o) return !1; - for (var p = s; p--; ) { - var d = l[p]; - if (!(i ? d in t : Ds.call(t, d))) + for (var f = s; f--; ) { + var p = l[f]; + if (!(o ? p in t : Vs.call(t, p))) return !1; } - var g = o.get(e), h = o.get(t); - if (g && h) - return g == t && h == e; - var T = !0; - o.set(e, t), o.set(t, e); - for (var E = i; ++p < s; ) { - d = l[p]; - var F = e[d], A = t[d]; + var v = i.get(e), m = i.get(t); + if (v && m) + return v == t && m == e; + var O = !0; + i.set(e, t), i.set(t, e); + for (var T = o; ++f < s; ) { + p = l[f]; + var D = e[p], C = t[p]; if (n) - var K = i ? n(A, F, d, t, e, o) : n(F, A, d, e, t, o); - if (!(K === void 0 ? F === A || a(F, A, r, n, o) : K)) { - T = !1; + var te = o ? n(C, D, p, t, e, i) : n(D, C, p, e, t, i); + if (!(te === void 0 ? D === C || a(D, C, r, n, i) : te)) { + O = !1; break; } - E || (E = d == "constructor"); + T || (T = p == "constructor"); } - if (T && !E) { - var N = e.constructor, C = t.constructor; - N != C && "constructor" in e && "constructor" in t && !(typeof N == "function" && N instanceof N && typeof C == "function" && C instanceof C) && (T = !1); + if (O && !T) { + var W = e.constructor, F = t.constructor; + W != F && "constructor" in e && "constructor" in t && !(typeof W == "function" && W instanceof W && typeof F == "function" && F instanceof F) && (O = !1); } - return o.delete(e), o.delete(t), T; -} -var Cs = fe(J, "DataView"); -const ft = Cs; -var js = fe(J, "Promise"); -const dt = js; -var Rs = fe(J, "Set"); -const pt = Rs; -var Bs = fe(J, "WeakMap"); -const ht = Bs; -var Yt = "[object Map]", Ls = "[object Object]", Vt = "[object Promise]", Qt = "[object Set]", Zt = "[object WeakMap]", er = "[object DataView]", Is = ce(ft), Ms = ce(Pe), qs = ce(dt), Ns = ce(pt), Hs = ce(ht), se = ae; -(ft && se(new ft(new ArrayBuffer(1))) != er || Pe && se(new Pe()) != Yt || dt && se(dt.resolve()) != Vt || pt && se(new pt()) != Qt || ht && se(new ht()) != Zt) && (se = function(e) { - var t = ae(e), r = t == Ls ? e.constructor : void 0, n = r ? ce(r) : ""; + return i.delete(e), i.delete(t), O; +} +var Zs = se(G, "DataView"); +const it = Zs; +var el = se(G, "Promise"); +const ot = el; +var tl = se(G, "Set"); +const st = tl; +var rl = se(G, "WeakMap"); +const lt = rl; +var Xt = "[object Map]", nl = "[object Object]", Yt = "[object Promise]", Vt = "[object Set]", Qt = "[object WeakMap]", Zt = "[object DataView]", al = oe(it), il = oe(Oe), ol = oe(ot), sl = oe(st), ll = oe(lt), ne = ee; +(it && ne(new it(new ArrayBuffer(1))) != Zt || Oe && ne(new Oe()) != Xt || ot && ne(ot.resolve()) != Yt || st && ne(new st()) != Vt || lt && ne(new lt()) != Qt) && (ne = function(e) { + var t = ee(e), r = t == nl ? e.constructor : void 0, n = r ? oe(r) : ""; if (n) switch (n) { - case Is: - return er; - case Ms: + case al: + return Zt; + case il: + return Xt; + case ol: return Yt; - case qs: + case sl: return Vt; - case Ns: + case ll: return Qt; - case Hs: - return Zt; } return t; }); -const tr = se; -var ks = 1, rr = "[object Arguments]", nr = "[object Array]", Ne = "[object Object]", Us = Object.prototype, ar = Us.hasOwnProperty; -function Gs(e, t, r, n, a, o) { - var i = M(e), l = M(t), s = i ? nr : tr(e), u = l ? nr : tr(t); - s = s == rr ? Ne : s, u = u == rr ? Ne : u; - var f = s == Ne, p = u == Ne, d = s == u; - if (d && et(e)) { - if (!et(t)) +const er = ne; +var ul = 1, tr = "[object Arguments]", rr = "[object Array]", Fe = "[object Object]", cl = Object.prototype, nr = cl.hasOwnProperty; +function fl(e, t, r, n, a, i) { + var o = R(e), l = R(t), s = o ? rr : er(e), u = l ? rr : er(t); + s = s == tr ? Fe : s, u = u == tr ? Fe : u; + var c = s == Fe, f = u == Fe, p = s == u; + if (p && We(e)) { + if (!We(t)) return !1; - i = !0, f = !1; + o = !0, c = !1; } - if (d && !f) - return o || (o = new W()), i || pr(e) ? zr(e, t, r, n, a, o) : bs(e, t, s, r, n, a, o); - if (!(r & ks)) { - var g = f && ar.call(e, "__wrapped__"), h = p && ar.call(t, "__wrapped__"); - if (g || h) { - var T = g ? e.value() : e, E = h ? t.value() : t; - return o || (o = new W()), a(T, E, r, n, o); + if (p && !c) + return i || (i = new k()), o || dr(e) ? tn(e, t, r, n, a, i) : Ns(e, t, s, r, n, a, i); + if (!(r & ul)) { + var v = c && nr.call(e, "__wrapped__"), m = f && nr.call(t, "__wrapped__"); + if (v || m) { + var O = v ? e.value() : e, T = m ? t.value() : t; + return i || (i = new k()), a(O, T, r, n, i); } } - return d ? (o || (o = new W()), Fs(e, t, r, n, a, o)) : !1; + return p ? (i || (i = new k()), Qs(e, t, r, n, a, i)) : !1; } -function Pt(e, t, r, n, a) { - return e === t ? !0 : e == null || t == null || !ne(e) && !ne(t) ? e !== e && t !== t : Gs(e, t, r, n, Pt, a); +function Et(e, t, r, n, a) { + return e === t ? !0 : e == null || t == null || !Z(e) && !Z(t) ? e !== e && t !== t : fl(e, t, r, n, Et, a); } -var Ks = 1, zs = 2; -function Ws(e, t, r, n) { - var a = r.length, o = a, i = !n; +var dl = 1, pl = 2; +function hl(e, t, r, n) { + var a = r.length, i = a, o = !n; if (e == null) - return !o; + return !i; for (e = Object(e); a--; ) { var l = r[a]; - if (i && l[2] ? l[1] !== e[l[0]] : !(l[0] in e)) + if (o && l[2] ? l[1] !== e[l[0]] : !(l[0] in e)) return !1; } - for (; ++a < o; ) { + for (; ++a < i; ) { l = r[a]; - var s = l[0], u = e[s], f = l[1]; - if (i && l[2]) { + var s = l[0], u = e[s], c = l[1]; + if (o && l[2]) { if (u === void 0 && !(s in e)) return !1; } else { - var p = new W(); + var f = new k(); if (n) - var d = n(u, f, s, e, t, p); - if (!(d === void 0 ? Pt(f, u, Ks | zs, n, p) : d)) + var p = n(u, c, s, e, t, f); + if (!(p === void 0 ? Et(c, u, dl | pl, n, f) : p)) return !1; } } return !0; } -function Wr(e) { - return e === e && !me(e); +function rn(e) { + return e === e && !ce(e); } -function Xs(e) { - for (var t = gt(e), r = t.length; r--; ) { +function vl(e) { + for (var t = dt(e), r = t.length; r--; ) { var n = t[r], a = e[n]; - t[r] = [n, a, Wr(a)]; + t[r] = [n, a, rn(a)]; } return t; } -function Xr(e, t) { +function nn(e, t) { return function(r) { return r == null ? !1 : r[e] === t && (t !== void 0 || e in Object(r)); }; } -function Js(e) { - var t = Xs(e); - return t.length == 1 && t[0][2] ? Xr(t[0][0], t[0][1]) : function(r) { - return r === e || Ws(r, e, t); +function ml(e) { + var t = vl(e); + return t.length == 1 && t[0][2] ? nn(t[0][0], t[0][1]) : function(r) { + return r === e || hl(r, e, t); }; } -function Ys(e, t) { +function gl(e, t) { return e != null && t in Object(e); } -function Vs(e, t) { - return e != null && br(e, t, Ys); +function yl(e, t) { + return e != null && Ar(e, t, gl); } -var Qs = 1, Zs = 2; -function el(e, t) { - return wt(e) && Wr(t) ? Xr(De(e), t) : function(r) { - var n = At(r, e); - return n === void 0 && n === t ? Vs(r, e) : Pt(t, n, Qs | Zs); +var bl = 1, wl = 2; +function Sl(e, t) { + return yt(e) && rn(t) ? nn(Ee(e), t) : function(r) { + var n = Tt(r, e); + return n === void 0 && n === t ? yl(r, e) : Et(t, n, bl | wl); }; } -function tl(e) { +function _l(e) { return function(t) { return t == null ? void 0 : t[e]; }; } -function rl(e) { +function Ol(e) { return function(t) { - return Mr(t, e); + return Wr(t, e); }; } -function nl(e) { - return wt(e) ? tl(De(e)) : rl(e); +function $l(e) { + return yt(e) ? _l(Ee(e)) : Ol(e); } -function al(e) { - return typeof e == "function" ? e : e == null ? vr : typeof e == "object" ? M(e) ? el(e[0], e[1]) : Js(e) : nl(e); +function Tl(e) { + return typeof e == "function" ? e : e == null ? vr : typeof e == "object" ? R(e) ? Sl(e[0], e[1]) : ml(e) : $l(e); } -function Jr(e, t) { +function an(e, t) { var r = {}; - return t = al(t), yt(e, function(n, a, o) { - qr(r, a, t(n, a, o)); + return t = Tl(t), pt(e, function(n, a, i) { + Jr(r, a, t(n, a, i)); }), r; } -const ol = { +const El = { inject: ["stack"], props: { action: { type: String, required: !1, default() { - return location ? location.href : ""; + return d.isSsr ? "" : location.href; } }, method: { @@ -2180,16 +2209,16 @@ const ol = { }, computed: { rawErrors() { - return m.validationErrors(this.stack); + return d.validationErrors(this.stack); }, errors() { - return Jr(this.rawErrors, (e) => e.join(` + return an(this.rawErrors, (e) => e.join(` `)); } }, methods: { hasError(e) { - return k(this.errors, e); + return I(this.errors, e); }, reset() { this.values = {}; @@ -2200,15 +2229,15 @@ const ol = { submit() { if (!this.confirm) return this.request(); - m.confirm(Kr(this.confirm) ? "" : this.confirm, this.confirmText, this.confirmButton, this.cancelButton).then(() => { + d.confirm(en(this.confirm) ? "" : this.confirm, this.confirmText, this.confirmButton, this.cancelButton).then(() => { this.request(); }).catch(() => { }); }, request() { this.processing = !0, this.wasSuccessful = !1, this.recentlySuccessful = !1, clearTimeout(this.recentlySuccessfulTimeoutId); - const e = this.forceFormData || ct(this.values) ? kr(this.values) : this.values; - m.request(this.action, this.method.toUpperCase(), e, { + const e = this.forceFormData || at(this.values) ? Vr(this.values) : this.values; + d.request(this.action, this.method.toUpperCase(), e, { Accept: "application/json" }).then((t) => { this.$emit("success", t), this.restoreOnSuccess && this.restore(), this.resetOnSuccess && this.reset(), this.processing = !1, this.wasSuccessful = !0, this.recentlySuccessful = !0, this.recentlySuccessfulTimeoutId = setTimeout(() => this.recentlySuccessful = !1, 2e3); @@ -2234,14 +2263,14 @@ const ol = { "submit", "wasSuccessful", "recentlySuccessful" - ].includes(r) ? e[r] : At(e.values, r); + ].includes(r) ? e[r] : Tt(e.values, r); }, set(t, r, n) { - Nr(e.values, r, n); + Xr(e.values, r, n); } })); } -}, il = ["href", "onClick"], sl = { +}, Pl = ["href", "onClick"], Al = { __name: "Link", props: { href: { @@ -2284,26 +2313,26 @@ const ol = { function r() { if (!t.confirm) return n(); - m.confirm(Kr(t.confirm) ? "" : t.confirm, t.confirmText, t.confirmButton, t.cancelButton).then(() => { + d.confirm(en(t.confirm) ? "" : t.confirm, t.confirmText, t.confirmButton, t.cancelButton).then(() => { n(); }).catch(() => { }); } function n() { if (t.modal) - return m.modal(t.href); + return d.modal(t.href); if (t.slideover) - return m.slideover(t.href); - m.visit(t.href); + return d.slideover(t.href); + d.visit(t.href); } - return (a, o) => (z(), He("a", { + return (a, i) => (N(), je("a", { href: e.href, - onClick: hn(r, ["prevent"]) + onClick: gn(r, ["prevent"]) }, [ - mn(a.$slots, "default") - ], 8, il)); + yn(a.$slots, "default") + ], 8, Pl)); } -}, ll = { +}, xl = { provide() { return { stack: this.stack @@ -2358,16 +2387,16 @@ const ol = { onTopOfStack: this.onTopOfStack, maxWidth: this.maxWidth, emitClose: this.emitClose, - Dialog: jr, - DialogPanel: Rr, - TransitionRoot: je, - TransitionChild: Ce + Dialog: kr, + DialogPanel: Ur, + TransitionRoot: xe, + TransitionChild: Ae }); } -}, ul = { +}, Dl = { inject: ["stack"], render() { - const e = m.validationErrors(this.stack), t = m.flashData(this.stack), r = m.sharedData, n = Jr(e, (a) => a.join(` + const e = d.validationErrors(this.stack), t = d.flashData(this.stack), r = d.sharedData.value, n = an(e, (a) => a.join(` `)); return this.$slots.default({ flash: t, @@ -2375,18 +2404,18 @@ const ol = { rawErrors: e, shared: r, hasError(a) { - return k(e, a); + return I(e, a); }, hasFlash(a) { - return k(t, a); + return I(t, a); }, hasShared(a) { - return k(r, a); + return I(r, a); }, hasErrors: Object.keys(e).length > 0 }); } -}, cl = { +}, Cl = { props: { toastKey: { type: Number, @@ -2423,11 +2452,11 @@ const ol = { show: this.show, setShow: this.setShow, emitDismiss: this.emitDismiss, - TransitionRoot: je, - TransitionChild: Ce + TransitionRoot: xe, + TransitionChild: Ae }); } -}, fl = [ +}, Fl = [ "left-top", "center-top", "right-top", @@ -2437,32 +2466,32 @@ const ol = { "left-bottom", "center-bottom", "right-bottom" -], dl = { +], jl = { computed: { toasts: function() { - return m.toastsReversed; + return d.toastsReversed.value; }, hasBackdrop: function() { - return m.toasts.filter((e) => !e.dismissed && e.backdrop && e.html).length > 0; + return d.toasts.value.filter((e) => !e.dismissed && e.backdrop && e.html).length > 0; } }, methods: { dismissToast(e) { - m.dismissToast(e); + d.dismissToast(e); } }, render() { return this.$slots.default({ - positions: fl, + positions: Fl, toasts: this.toasts, dismissToast: this.dismissToast, hasBackdrop: this.hasBackdrop, - Render: Oe, - TransitionRoot: je, - TransitionChild: Ce + Render: be, + TransitionRoot: xe, + TransitionChild: Ae }); } -}, pl = { +}, Rl = { props: { default: { type: Object, @@ -2494,7 +2523,7 @@ const ol = { }, get(t, r) { const n = Object.keys(e.toggles); - if (n.length === 1 && Hr(n) === "default") { + if (n.length === 1 && Yr(n) === "default") { if (r === "toggled") return e.toggled("default"); if (r === "setToggle") @@ -2506,23 +2535,46 @@ const ol = { e.toggle("default"); }; } - return r === "setToggle" ? (a, o) => { - e.setToggle(a, o); + return r === "setToggle" ? (a, i) => { + e.setToggle(a, i); } : r === "toggle" ? (a) => { e.toggle(a); } : e.toggled(r); } })); } -}, yl = { +}, ql = { install: (e, t) => { - t = t || {}, t.max_keep_alive = k(t, "max_keep_alive") ? t.max_keep_alive : 10, t.prefix = k(t, "prefix") ? t.prefix : "Splade", t.transform_anchors = k(t, "transform_anchors") ? t.transform_anchors : !1, t.link_component = k(t, "link_component") ? t.link_component : "Link"; + t = t || {}, t.max_keep_alive = I(t, "max_keep_alive") ? t.max_keep_alive : 10, t.prefix = I(t, "prefix") ? t.prefix : "Splade", t.transform_anchors = I(t, "transform_anchors") ? t.transform_anchors : !1, t.link_component = I(t, "link_component") ? t.link_component : "Link"; const r = t.prefix; - e.component(`${r}Confirm`, Fi).component(`${r}Data`, Ii).component(`${r}Defer`, Mi).component(`${r}Errors`, qi).component(`${r}Event`, Hi).component(`${r}Flash`, ki).component(`${r}Form`, ol).component(`${r}Modal`, ll).component(`${r}Render`, Oe).component(`${r}State`, ul).component(`${r}Toast`, cl).component(`${r}Toasts`, dl).component(`${r}Toggle`, pl).component(t.link_component, sl), Object.defineProperty(e.config.globalProperties, "$splade", { get: () => m }), Object.defineProperty(e.config.globalProperties, "$spladeOptions", { get: () => Object.assign({}, { ...t }) }), e.provide("$splade", e.config.globalProperties.$splade), e.provide("$spladeOptions", e.config.globalProperties.$spladeOptions); + e.component(`${r}Confirm`, Qo).component(`${r}Data`, as).component(`${r}Defer`, is).component(`${r}Errors`, os).component(`${r}Event`, ls).component(`${r}Flash`, us).component(`${r}Form`, El).component(`${r}Modal`, xl).component(`${r}Render`, be).component(`${r}State`, Dl).component(`${r}Toast`, Cl).component(`${r}Toasts`, jl).component(`${r}Toggle`, Rl).component(t.link_component, Al), Object.defineProperty(e.config.globalProperties, "$splade", { get: () => d }), Object.defineProperty(e.config.globalProperties, "$spladeOptions", { get: () => Object.assign({}, { ...t }) }), e.provide("$splade", e.config.globalProperties.$splade), e.provide("$spladeOptions", e.config.globalProperties.$spladeOptions); } }; +function Nl(e, t, r) { + const n = {}; + process.argv.slice(2).forEach((i) => { + const o = i.replace(/^-+/, "").split("="); + n[o[0]] = o.length === 2 ? o[1] : !0; + }); + const a = n.port || 9e3; + e(async (i, o) => { + if (i.method == "POST") { + let l = ""; + i.on("data", (s) => l += s), i.on("end", async () => { + const s = JSON.parse(l), u = r({ + components: s.components, + initialHtml: s.html, + initialSpladeData: s.splade + }), c = await t(u); + o.writeHead(200, { "Content-Type": "application/json", Server: "Splade SSR" }), o.write(JSON.stringify({ body: c })), o.end(); + }); + } + }).listen(a, () => console.log(`Splade SSR server started on port ${a}.`)); +} export { - m as Splade, - yl as SpladePlugin, - vl as renderSpladeApp + d as Splade, + hi as SpladeApp, + ql as SpladePlugin, + Ll as renderSpladeApp, + Nl as startServer }; diff --git a/dist/protone-media-laravel-splade.umd.cjs b/dist/protone-media-laravel-splade.umd.cjs index 449de40c..7845520d 100644 --- a/dist/protone-media-laravel-splade.umd.cjs +++ b/dist/protone-media-laravel-splade.umd.cjs @@ -1,6 +1,6 @@ -(function($,ue){typeof exports=="object"&&typeof module<"u"?ue(exports,require("axios"),require("vue")):typeof define=="function"&&define.amd?define(["exports","axios","vue"],ue):($=typeof globalThis<"u"?globalThis:$||self,ue($.ProtoneMediaLaravelSplade={},$.axios,$.Vue))})(this,function($,ue,a){"use strict";const yt=(e=>e&&typeof e=="object"&&"default"in e?e:{default:e})(ue);function Rr(e,t){for(var r=-1,n=e==null?0:e.length;++r-1&&e%1==0&&e-1&&e%1==0&&e<=dn}var pn="[object Arguments]",hn="[object Array]",mn="[object Boolean]",gn="[object Date]",yn="[object Error]",vn="[object Function]",bn="[object Map]",wn="[object Number]",_n="[object Object]",Sn="[object RegExp]",Tn="[object Set]",On="[object String]",$n="[object WeakMap]",En="[object ArrayBuffer]",Pn="[object DataView]",An="[object Float32Array]",Cn="[object Float64Array]",Dn="[object Int8Array]",Fn="[object Int16Array]",jn="[object Int32Array]",xn="[object Uint8Array]",Bn="[object Uint8ClampedArray]",Mn="[object Uint16Array]",Ln="[object Uint32Array]",b={};b[An]=b[Cn]=b[Dn]=b[Fn]=b[jn]=b[xn]=b[Bn]=b[Mn]=b[Ln]=!0,b[pn]=b[hn]=b[En]=b[mn]=b[Pn]=b[gn]=b[yn]=b[vn]=b[bn]=b[wn]=b[_n]=b[Sn]=b[Tn]=b[On]=b[$n]=!1;function Rn(e){return W(e)&&qe(e.length)&&!!b[z(e)]}function In(e){return function(t){return e(t)}}var Pt=typeof $=="object"&&$&&!$.nodeType&&$,fe=Pt&&typeof module=="object"&&module&&!module.nodeType&&module,qn=fe&&fe.exports===Pt,Ne=qn&&vt.process,Nn=function(){try{var e=fe&&fe.require&&fe.require("util").types;return e||Ne&&Ne.binding&&Ne.binding("util")}catch{}}();const At=Nn;var Ct=At&&At.isTypedArray,kn=Ct?In(Ct):Rn;const Dt=kn;var Hn=Object.prototype,Un=Hn.hasOwnProperty;function Gn(e,t){var r=B(e),n=!r&&Tt(e),o=!r&&!n&&Re(e),i=!r&&!n&&!o&&Dt(e),s=r||n||o||i,u=s?kr(e.length,String):[],l=u.length;for(var c in e)(t||Un.call(e,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Ie(c,l)))&&u.push(c);return u}var Kn=Object.prototype;function zn(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||Kn;return e===r}function Wn(e,t){return function(r){return e(t(r))}}var Xn=Wn(Object.keys,Object);const Jn=Xn;var Yn=Object.prototype,Vn=Yn.hasOwnProperty;function Qn(e){if(!zn(e))return Jn(e);var t=[];for(var r in Object(e))Vn.call(e,r)&&r!="constructor"&&t.push(r);return t}function ae(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Zn="[object AsyncFunction]",eo="[object Function]",to="[object GeneratorFunction]",ro="[object Proxy]";function Ft(e){if(!ae(e))return!1;var t=z(e);return t==eo||t==to||t==Zn||t==ro}function jt(e){return e!=null&&qe(e.length)&&!Ft(e)}function ke(e){return jt(e)?Gn(e):Qn(e)}function He(e,t){return e&&Nr(e,t,ke)}function no(e,t){return function(r,n){if(r==null)return r;if(!jt(r))return e(r,n);for(var o=r.length,i=t?o:-1,s=Object(r);(t?i--:++i0)&&(d.value=0,r.value++,A(f.data.html,0));const C=i(T,f.data.html,l.value.rememberedState?{...l.value.rememberedState}:{},r.value);s(C)}const d=a.ref(0);function h(){d.value--}const p=a.ref({}),y=a.ref({}),m=f=>y.value[f],O=f=>Object.keys(m.value[f]).length>0,E=a.ref({}),F=f=>E.value[f],P=a.ref([]),G=a.computed(()=>uo(P.value));function R(f){P.value.push(f)}function j(f){P.value[f].dismissed=!0,P.value[f].html=null}const x=a.ref(null);function _(f,T,C,Te){let Y,I;const Le=new Promise((Us,Gs)=>{Y=Us,I=Gs});return x.value={title:f,text:T,confirmButton:C,cancelButton:Te,resolvePromise:Y,rejectPromise:I},Le}function w(){x.value=null}function S(f){p.value=f.shared?f.shared:{},E.value[d.value]=f.flash?f.flash:{},io(f.toasts?f.toasts:[],T=>{P.value.push(T)}),y.value[d.value]=f.errors?f.errors:{}}function v(f){Lr.value(f)}function A(f,T){Br.value(f,T)}function xe(f,T){Mr.value(f,T)}const Se=a.ref({});function le(f,T,C){Se.value[f]=T,C&&Be(f,T)}function Be(f,T){let C=JSON.parse(localStorage.getItem("splade")||"{}")||{};C[f]=T,localStorage.setItem("splade",JSON.stringify(C))}function Me(f,T){return T?(JSON.parse(localStorage.getItem("splade")||"{}")||{})[f]:Se.value[f]}function oe(f,T,C,Te){le("scrollY",window.scrollY);const Y=yt.default({method:T,url:f,data:C,headers:{"X-Splade":!0,"X-Requested-With":"XMLHttpRequest",Accept:"text/html, application/xhtml+xml",...Te}});return Y.then(I=>{c(I)}).catch(I=>{const Le=I.response.data.splade;Le&&S(Le),I.response.status!=422&&v(I.response.data.html?I.response.data.html:I.response.data)}),Y}function qs(f){oe(f,"GET",{},{})}function Ns(f){oe(f,"GET",{},{"X-Splade-Modal":"modal"})}function ks(f){oe(f,"GET",{},{"X-Splade-Modal":"slideover"})}function Hs(){oe(l.value.url,"GET",{},{"X-Splade-Refresh":!0})}const Br=a.ref(()=>{}),Mr=a.ref(()=>{}),Lr=a.ref(()=>{});return t({init:n,visit:qs,modal:Ns,slideover:ks,refresh:Hs,request:oe,setOnHtml(f){Br.value=f},setOnModal(f){Mr.value=f},setOnServerError(f){Lr.value=f},hasValidationErrors:O,validationErrors:m,sharedData:p,flashData:F,toasts:P,toastsReversed:G,confirmModal:x,confirm:_,clearConfirmModal:w,pushToast:R,dismissToast:j,restore:Me,remember:le,popStack:h,currentStack:d,pageVisitId:a.computed(()=>l.value.pageVisitId)}),()=>{}}},fo=document.createElement("div"),g=a.createApp(co).mount(fo);var po="[object String]";function ho(e){return typeof e=="string"||!B(e)&&W(e)&&z(e)==po}const de={__name:"Render",props:{html:{type:String,required:!1,default:""}},setup(e){const t=e,r=a.ref(null);function n(){r.value=a.h({render:a.compile(t.html)})}return a.watch(()=>t.html,n,{immediate:!0}),(o,i)=>(a.openBlock(),a.createBlock(a.unref(r)))}},mo={__name:"ServerError",props:{html:{type:String,required:!0}},emits:["close"],setup(e,{emit:t}){const r=e;function n(){document.body.style.overflow="visible",document.removeEventListener("keydown",s),t("close")}const o=a.ref(null);function i(){const u=document.createElement("html");u.innerHTML=r.html,u.querySelectorAll("a").forEach(c=>c.setAttribute("target","_top")),document.body.style.overflow="hidden";const l=o.value;if(!l.contentWindow)throw new Error("iframe not yet ready.");l.contentWindow.document.open(),l.contentWindow.document.write(u.outerHTML),l.contentWindow.document.close(),document.addEventListener("keydown",s)}function s(u){u.keyCode===27&&n()}return a.onMounted(()=>i()),(u,l)=>(a.openBlock(),a.createElementBlock("div",{class:"w-screen h-screen fixed p-8 bg-black bg-opacity-75 inset-0 z-[200000] box-border",onClick:n},[a.createElementVNode("iframe",{ref_key:"iframeElement",ref:o,class:"bg-white w-full h-full"},null,512)]))}},go={__name:"SpladeApp",props:{el:{type:[String,Object],required:!0}},setup(e){const t=e,r=ho(t.el)?document.getElementById(t.el):t.el,n=JSON.parse(r.dataset.components),o=JSON.parse(r.dataset.html),i=JSON.parse(r.dataset.splade);a.provide("stack",0);const s=a.ref(),u=a.ref([]),l=a.ref(null);function c(){l.value=null}function d(p){u[p]=null,g.popStack()}const h=a.inject("$spladeOptions");return g.setOnHtml((p,y)=>{u.value=[],s.value=p,a.nextTick(()=>{window.scrollTo(0,y),h.transform_anchors&&[...document.querySelectorAll("a")].forEach(m=>{m.href==""||m.href.charAt(0)=="#"||m.__vnode.dynamicProps===null&&(m.hasAttribute("download")||(m.onclick=function(O){O.preventDefault(),g.visit(m.href)}))})})}),g.setOnModal(function(p,y){u.value[g.currentStack]={html:p,type:y}}),g.setOnServerError(function(p){l.value=p}),g.init(o,i),(p,y)=>(a.openBlock(),a.createElementBlock(a.Fragment,null,[(a.openBlock(),a.createBlock(a.KeepAlive,{max:a.unref(h).max_keep_alive},[(a.openBlock(),a.createBlock(de,{key:`visit.${a.unref(g).pageVisitId}`,class:a.normalizeClass({"transition ease-in-out blur-sm":a.unref(g).currentStack>0}),html:s.value},null,8,["class","html"]))],1032,["max"])),a.createVNode(de,{html:a.unref(n)},null,8,["html"]),(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(a.unref(g).currentStack,m=>(a.openBlock(),a.createBlock(de,{key:`modal.${m}`,type:u.value[m].type,html:u.value[m].html,stack:m,"on-top-of-stack":a.unref(g).currentStack===m,onClose:O=>d(m)},null,8,["type","html","stack","on-top-of-stack","onClose"]))),128)),l.value?(a.openBlock(),a.createBlock(mo,{key:0,html:l.value,onClose:c},null,8,["html"])):a.createCommentVNode("",!0)],64))}};function yo(e){return()=>a.h(go,e)}var vo=Object.prototype,bo=vo.hasOwnProperty;function wo(e,t){return e!=null&&bo.call(e,t)}var _o="[object Symbol]";function Ue(e){return typeof e=="symbol"||W(e)&&z(e)==_o}var So=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,To=/^\w*$/;function Ge(e,t){if(B(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Ue(e)?!0:To.test(e)||!So.test(e)||t!=null&&e in Object(t)}var Oo=q["__core-js_shared__"];const Ke=Oo;var Mt=function(){var e=/[^.]+$/.exec(Ke&&Ke.keys&&Ke.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function $o(e){return!!Mt&&Mt in e}var Eo=Function.prototype,Po=Eo.toString;function V(e){if(e!=null){try{return Po.call(e)}catch{}try{return e+""}catch{}}return""}var Ao=/[\\^$.*+?()[\]{}|]/g,Co=/^\[object .+?Constructor\]$/,Do=Function.prototype,Fo=Object.prototype,jo=Do.toString,xo=Fo.hasOwnProperty,Bo=RegExp("^"+jo.call(xo).replace(Ao,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Mo(e){if(!ae(e)||$o(e))return!1;var t=Ft(e)?Bo:Co;return t.test(V(e))}function Lo(e,t){return e==null?void 0:e[t]}function Q(e,t){var r=Lo(e,t);return Mo(r)?r:void 0}var Ro=Q(Object,"create");const pe=Ro;function Io(){this.__data__=pe?pe(null):{},this.size=0}function qo(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var No="__lodash_hash_undefined__",ko=Object.prototype,Ho=ko.hasOwnProperty;function Uo(e){var t=this.__data__;if(pe){var r=t[e];return r===No?void 0:r}return Ho.call(t,e)?t[e]:void 0}var Go=Object.prototype,Ko=Go.hasOwnProperty;function zo(e){var t=this.__data__;return pe?t[e]!==void 0:Ko.call(t,e)}var Wo="__lodash_hash_undefined__";function Xo(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=pe&&t===void 0?Wo:t,this}function Z(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t-1}function ta(e,t){var r=this.__data__,n=Oe(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function N(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t`"${o}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(n,M),n}var Ee=(e=>(e[e.None=0]="None",e[e.RenderStrategy=1]="RenderStrategy",e[e.Static=2]="Static",e))(Ee||{}),X=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(X||{});function D({visible:e=!0,features:t=0,ourProps:r,theirProps:n,...o}){var i;let s=wa(n,r),u=Object.assign(o,{props:s});if(e||t&2&&s.static)return Je(u);if(t&1){let l=(i=s.unmount)==null||i?0:1;return M(l,{[0](){return null},[1](){return Je({...o,props:{...s,hidden:!0,style:{display:"none"}}})}})}return Je(u)}function Je({props:e,attrs:t,slots:r,slot:n,name:o}){var i;let{as:s,...u}=kt(e,["unmount","static"]),l=(i=r.default)==null?void 0:i.call(r,n),c={};if(s==="template"){if(l=Nt(l),Object.keys(u).length>0||Object.keys(t).length>0){let[d,...h]=l!=null?l:[];if(!_a(d)||h.length>0)throw new Error(['Passing props on "template"!',"",`The current component <${o} /> is rendering a "template".`,"However we need to passthrough the following props:",Object.keys(u).concat(Object.keys(t)).sort((p,y)=>p.localeCompare(y)).map(p=>` - ${p}`).join(` -`),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".',"Render a single element as the child so that we can forward the props onto that element."].map(p=>` - ${p}`).join(` +(function(S,ie){typeof exports=="object"&&typeof module<"u"?ie(exports,require("axios"),require("vue")):typeof define=="function"&&define.amd?define(["exports","axios","vue"],ie):(S=typeof globalThis<"u"?globalThis:S||self,ie(S.ProtoneMediaLaravelSplade={},S.axios,S.Vue))})(this,function(S,ie,i){"use strict";const mt=(e=>e&&typeof e=="object"&&"default"in e?e:{default:e})(ie);function Jn(e,t){for(var n=-1,r=e==null?0:e.length;++n-1&&e%1==0&&e-1&&e%1==0&&e<=_r}var Or="[object Arguments]",Tr="[object Array]",$r="[object Boolean]",Er="[object Date]",Pr="[object Error]",Ar="[object Function]",Cr="[object Map]",Dr="[object Number]",jr="[object Object]",Fr="[object RegExp]",xr="[object Set]",Br="[object String]",Mr="[object WeakMap]",Rr="[object ArrayBuffer]",Lr="[object DataView]",Ir="[object Float32Array]",qr="[object Float64Array]",Nr="[object Int8Array]",kr="[object Int16Array]",Hr="[object Int32Array]",Ur="[object Uint8Array]",Gr="[object Uint8ClampedArray]",Kr="[object Uint16Array]",zr="[object Uint32Array]",y={};y[Ir]=y[qr]=y[Nr]=y[kr]=y[Hr]=y[Ur]=y[Gr]=y[Kr]=y[zr]=!0,y[Or]=y[Tr]=y[Rr]=y[$r]=y[Lr]=y[Er]=y[Pr]=y[Ar]=y[Cr]=y[Dr]=y[jr]=y[Fr]=y[xr]=y[Br]=y[Mr]=!1;function Wr(e){return H(e)&&je(e.length)&&!!y[k(e)]}function Jr(e){return function(t){return e(t)}}var $t=typeof S=="object"&&S&&!S.nodeType&&S,le=$t&&typeof module=="object"&&module&&!module.nodeType&&module,Xr=le&&le.exports===$t,Fe=Xr&>.process,Yr=function(){try{var e=le&&le.require&&le.require("util").types;return e||Fe&&Fe.binding&&Fe.binding("util")}catch{}}();const Et=Yr;var Pt=Et&&Et.isTypedArray,Vr=Pt?Jr(Pt):Wr;const At=Vr;var Qr=Object.prototype,Zr=Qr.hasOwnProperty;function eo(e,t){var n=P(e),r=!n&&St(e),o=!n&&!r&&Ce(e),a=!n&&!r&&!o&&At(e),s=n||r||o||a,u=s?Qn(e.length,String):[],l=u.length;for(var f in e)(t||Zr.call(e,f))&&!(s&&(f=="length"||o&&(f=="offset"||f=="parent")||a&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||De(f,l)))&&u.push(f);return u}var to=Object.prototype;function no(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||to;return e===n}function ro(e,t){return function(n){return e(t(n))}}var oo=ro(Object.keys,Object);const ao=oo;var io=Object.prototype,so=io.hasOwnProperty;function lo(e){if(!no(e))return ao(e);var t=[];for(var n in Object(e))so.call(e,n)&&n!="constructor"&&t.push(n);return t}function te(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var uo="[object AsyncFunction]",fo="[object Function]",co="[object GeneratorFunction]",po="[object Proxy]";function Ct(e){if(!te(e))return!1;var t=k(e);return t==fo||t==co||t==uo||t==po}function Dt(e){return e!=null&&je(e.length)&&!Ct(e)}function xe(e){return Dt(e)?eo(e):lo(e)}function Be(e,t){return e&&Vn(e,t,xe)}function ho(e,t){return function(n,r){if(n==null)return n;if(!Dt(n))return e(n,r);for(var o=n.length,a=t?o:-1,s=Object(n);(t?a--:++a"u";function So(e,t){ne||window.addEventListener("popstate",_o.bind(this)),Le(t),Ie(e);const n=ne?"":location.href,r=xt(n,e,{},Me.value);To(r)}function _o(e){B.value=e.state,U.value=0,Ie(B.value.html,B.value.rememberedState.scrollY)}function xt(e,t,n,r){const o={url:e,html:t,rememberedState:n,pageVisitId:r};return B.value=o,o}function Oo(e){ne||window.history.pushState(e,"",e.url)}function To(e){ne||window.history.replaceState(e,"",e.url)}const B=i.ref({});function $o(e){const t=e.request.responseURL;if(e.data.splade.modal&&U.value++,Le(e.data.splade),e.data.splade.modal)return Mo(e.data.html,e.data.splade.modal);(t!==B.value.url||e.data.splade.refresh||U.value>0)&&(U.value=0,Me.value++,Ie(e.data.html,0));const n=xt(t,e.data.html,B.value.rememberedState?{...B.value.rememberedState}:{},Me.value);Oo(n)}const U=i.ref(0);function Eo(){U.value--}const Bt=i.ref({}),Mt=i.ref({}),Rt=e=>Mt.value[e],Po=e=>Object.keys(Rt.value[e]).length>0,Lt=i.ref({}),Ao=e=>Lt.value[e],re=i.ref([]),Co=i.computed(()=>wo(re.value));function Do(e){re.value.push(e)}function jo(e){re.value[e].dismissed=!0,re.value[e].html=null}const Re=i.ref(null);function Fo(e,t,n,r){let o,a;const s=new Promise((u,l)=>{o=u,a=l});return Re.value={title:e,text:t,confirmButton:n,cancelButton:r,resolvePromise:o,rejectPromise:a},s}function xo(){Re.value=null}function Le(e){Bt.value=e.shared?e.shared:{},Lt.value[U.value]=e.flash?e.flash:{},yo(e.toasts?e.toasts:[],t=>{re.value.push(t)}),Mt.value[U.value]=e.errors?e.errors:{}}function Bo(e){Ht.value(e)}function Ie(e,t){Nt.value(e,t)}function Mo(e,t){kt.value(e,t)}const It=i.ref({});function qt(e,t,n){It.value[e]=t,n&&Ro(e,t)}function Ro(e,t){let n=JSON.parse(localStorage.getItem("splade")||"{}")||{};n[e]=t,localStorage.setItem("splade",JSON.stringify(n))}function Lo(e,t){return t?(JSON.parse(localStorage.getItem("splade")||"{}")||{})[e]:It.value[e]}function ue(e,t,n,r){ne||qt("scrollY",window.scrollY);const o=mt.default({method:t,url:e,data:n,headers:{"X-Splade":!0,"X-Requested-With":"XMLHttpRequest",Accept:"text/html, application/xhtml+xml",...r}});return o.then(a=>{$o(a)}).catch(a=>{console.log(a);const s=a.response.data.splade;s&&Le(s),a.response.status!=422&&Bo(a.response.data.html?a.response.data.html:a.response.data)}),o}function Io(e){ue(e,"GET",{},{})}function qo(e){ue(e,"GET",{},{"X-Splade-Modal":"modal"})}function No(e){ue(e,"GET",{},{"X-Splade-Modal":"slideover"})}function ko(){ue(B.value.url,"GET",{},{"X-Splade-Refresh":!0})}const Nt=i.ref(()=>{}),kt=i.ref(()=>{}),Ht=i.ref(()=>{}),p={init:So,visit:Io,modal:qo,slideover:No,refresh:ko,request:ue,setOnHtml(e){Nt.value=e},setOnModal(e){kt.value=e},setOnServerError(e){Ht.value=e},hasValidationErrors:Po,validationErrors:Rt,sharedData:Bt,flashData:Ao,toasts:re,toastsReversed:Co,confirmModal:Re,confirm:Fo,clearConfirmModal:xo,pushToast:Do,dismissToast:jo,restore:Lo,remember:qt,popStack:Eo,currentStack:U,pageVisitId:i.computed(()=>B.value.pageVisitId),isSsr:ne};var Ho="[object String]";function qe(e){return typeof e=="string"||!P(e)&&H(e)&&k(e)==Ho}const fe={__name:"Render",props:{html:{type:String,required:!1,default:""}},setup(e){const t=e,n=i.ref(null);function r(){n.value=i.h({template:t.html})}return i.watch(()=>t.html,r,{immediate:!0}),(o,a)=>(i.openBlock(),i.createBlock(i.unref(n)))}},Uo={__name:"ServerError",props:{html:{type:String,required:!0}},emits:["close"],setup(e,{emit:t}){const n=e;function r(){document.body.style.overflow="visible",document.removeEventListener("keydown",s),t("close")}const o=i.ref(null);function a(){const u=document.createElement("html");u.innerHTML=n.html,u.querySelectorAll("a").forEach(f=>f.setAttribute("target","_top")),document.body.style.overflow="hidden";const l=o.value;if(!l.contentWindow)throw new Error("iframe not yet ready.");l.contentWindow.document.open(),l.contentWindow.document.write(u.outerHTML),l.contentWindow.document.close(),document.addEventListener("keydown",s)}function s(u){u.keyCode===27&&r()}return i.onMounted(()=>a()),(u,l)=>(i.openBlock(),i.createElementBlock("div",{class:"w-screen h-screen fixed p-8 bg-black bg-opacity-75 inset-0 z-[200000] box-border",onClick:r},[i.createElementVNode("iframe",{ref_key:"iframeElement",ref:o,class:"bg-white w-full h-full"},null,512)]))}},Ut={__name:"SpladeApp",props:{el:{type:[String,Object],required:!1,default:""},components:{type:String,required:!1,default:e=>{if(!p.isSsr){const t=qe(e.el)?document.getElementById(e.el):e.el;return JSON.parse(t.dataset.components)||""}}},initialHtml:{type:String,required:!1,default:e=>{if(!p.isSsr){const t=qe(e.el)?document.getElementById(e.el):e.el;return JSON.parse(t.dataset.html)||""}}},initialSpladeData:{type:Object,required:!1,default:e=>{if(!p.isSsr){const t=qe(e.el)?document.getElementById(e.el):e.el;return JSON.parse(t.dataset.splade)||{}}}}},setup(e){const t=e;i.provide("stack",0);const n=i.ref(),r=i.ref([]),o=i.ref(null);function a(){o.value=null}function s(l){r[l]=null,p.popStack()}const u=i.inject("$spladeOptions")||{};return p.setOnHtml((l,f)=>{r.value=[],n.value=l,i.nextTick(()=>{p.isSsr||window.scrollTo(0,f),u.transform_anchors&&[...document.querySelectorAll("a")].forEach(c=>{c.href==""||c.href.charAt(0)=="#"||c.__vnode.dynamicProps===null&&(c.hasAttribute("download")||(c.onclick=function(d){d.preventDefault(),p.visit(c.href)}))})})}),p.setOnModal(function(l,f){r.value[p.currentStack.value]={html:l,type:f}}),p.setOnServerError(function(l){o.value=l}),p.init(t.initialHtml,t.initialSpladeData),(l,f)=>(i.openBlock(),i.createElementBlock("div",null,[(i.openBlock(),i.createBlock(i.resolveDynamicComponent(i.unref(p).isSsr?"div":"keep-alive"),{max:i.unref(u).max_keep_alive},{default:i.withCtx(()=>[(i.openBlock(),i.createBlock(fe,{key:`visit.${i.unref(p).pageVisitId.value}`,class:i.normalizeClass({"transition ease-in-out blur-sm":i.unref(p).currentStack>0}),html:n.value},null,8,["class","html"]))]),_:1},8,["max"])),i.createVNode(fe,{html:e.components},null,8,["html"]),(i.openBlock(!0),i.createElementBlock(i.Fragment,null,i.renderList(i.unref(p).currentStack.value,c=>(i.openBlock(),i.createBlock(fe,{key:`modal.${c}`,type:r.value[c].type,html:r.value[c].html,stack:c,"on-top-of-stack":i.unref(p).currentStack.value===c,onClose:d=>s(c)},null,8,["type","html","stack","on-top-of-stack","onClose"]))),128)),o.value?(i.openBlock(),i.createBlock(Uo,{key:0,html:o.value,onClose:a},null,8,["html"])):i.createCommentVNode("",!0)]))}};function Go(e){return()=>i.h(Ut,e)}var Ko=Object.prototype,zo=Ko.hasOwnProperty;function Wo(e,t){return e!=null&&zo.call(e,t)}var Jo="[object Symbol]";function Ne(e){return typeof e=="symbol"||H(e)&&k(e)==Jo}var Xo=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Yo=/^\w*$/;function ke(e,t){if(P(e))return!1;var n=typeof e;return n=="number"||n=="symbol"||n=="boolean"||e==null||Ne(e)?!0:Yo.test(e)||!Xo.test(e)||t!=null&&e in Object(t)}var Vo=x["__core-js_shared__"];const He=Vo;var Gt=function(){var e=/[^.]+$/.exec(He&&He.keys&&He.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Qo(e){return!!Gt&&Gt in e}var Zo=Function.prototype,ea=Zo.toString;function W(e){if(e!=null){try{return ea.call(e)}catch{}try{return e+""}catch{}}return""}var ta=/[\\^$.*+?()[\]{}|]/g,na=/^\[object .+?Constructor\]$/,ra=Function.prototype,oa=Object.prototype,aa=ra.toString,ia=oa.hasOwnProperty,sa=RegExp("^"+aa.call(ia).replace(ta,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function la(e){if(!te(e)||Qo(e))return!1;var t=Ct(e)?sa:na;return t.test(W(e))}function ua(e,t){return e==null?void 0:e[t]}function J(e,t){var n=ua(e,t);return la(n)?n:void 0}var fa=J(Object,"create");const ce=fa;function ca(){this.__data__=ce?ce(null):{},this.size=0}function da(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var pa="__lodash_hash_undefined__",ha=Object.prototype,ma=ha.hasOwnProperty;function ga(e){var t=this.__data__;if(ce){var n=t[e];return n===pa?void 0:n}return ma.call(t,e)?t[e]:void 0}var ya=Object.prototype,va=ya.hasOwnProperty;function ba(e){var t=this.__data__;return ce?t[e]!==void 0:va.call(t,e)}var wa="__lodash_hash_undefined__";function Sa(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=ce&&t===void 0?wa:t,this}function X(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t-1}function Aa(e,t){var n=this.__data__,r=we(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function M(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t`"${o}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,A),r}var _e=(e=>(e[e.None=0]="None",e[e.RenderStrategy=1]="RenderStrategy",e[e.Static=2]="Static",e))(_e||{}),G=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(G||{});function $({visible:e=!0,features:t=0,ourProps:n,theirProps:r,...o}){var a;let s=Wa(r,n),u=Object.assign(o,{props:s});if(e||t&2&&s.static)return ze(u);if(t&1){let l=(a=s.unmount)==null||a?0:1;return A(l,{[0](){return null},[1](){return ze({...o,props:{...s,hidden:!0,style:{display:"none"}}})}})}return ze(u)}function ze({props:e,attrs:t,slots:n,slot:r,name:o}){var a;let{as:s,...u}=Yt(e,["unmount","static"]),l=(a=n.default)==null?void 0:a.call(n,r),f={};if(s==="template"){if(l=Xt(l),Object.keys(u).length>0||Object.keys(t).length>0){let[c,...d]=l!=null?l:[];if(!Ja(c)||d.length>0)throw new Error(['Passing props on "template"!',"",`The current component <${o} /> is rendering a "template".`,"However we need to passthrough the following props:",Object.keys(u).concat(Object.keys(t)).sort((h,m)=>h.localeCompare(m)).map(h=>` - ${h}`).join(` +`),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".',"Render a single element as the child so that we can forward the props onto that element."].map(h=>` - ${h}`).join(` `)].join(` -`));return a.cloneVNode(d,Object.assign({},u,c))}return Array.isArray(l)&&l.length===1?l[0]:l}return a.h(s,Object.assign({},u,c),l)}function Nt(e){return e.flatMap(t=>t.type===a.Fragment?Nt(t.children):[t])}function wa(...e){if(e.length===0)return{};if(e.length===1)return e[0];let t={},r={};for(let n of e)for(let o in n)o.startsWith("on")&&typeof n[o]=="function"?(r[o]!=null||(r[o]=[]),r[o].push(n[o])):t[o]=n[o];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(r).map(n=>[n,void 0])));for(let n in r)Object.assign(t,{[n](o,...i){let s=r[n];for(let u of s){if(o!=null&&o.defaultPrevented)return;u(o,...i)}}});return t}function kt(e,t=[]){let r=Object.assign({},e);for(let n of t)n in r&&delete r[n];return r}function _a(e){return e==null?!1:typeof e.type=="string"||typeof e.type=="object"||typeof e.type=="function"}let Sa=0;function Ta(){return++Sa}function ee(){return Ta()}var Ht=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(Ht||{});function H(e){var t;return e==null||e.value==null?null:(t=e.value.$el)!=null?t:e.value}let Ut=Symbol("Context");var te=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(te||{});function Oa(){return Ye()!==null}function Ye(){return a.inject(Ut,null)}function $a(e){a.provide(Ut,e)}function ie(e){if(typeof window>"u")return null;if(e instanceof Node)return e.ownerDocument;if(e!=null&&e.hasOwnProperty("value")){let t=H(e);if(t)return t.ownerDocument}return document}let Ve=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(e=>`${e}:not([tabindex='-1'])`).join(",");var ge=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(ge||{}),Gt=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(Gt||{}),Ea=(e=>(e[e.Previous=-1]="Previous",e[e.Next=1]="Next",e))(Ea||{});function Pa(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(Ve))}var Kt=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(Kt||{});function Aa(e,t=0){var r;return e===((r=ie(e))==null?void 0:r.body)?!1:M(t,{[0](){return e.matches(Ve)},[1](){let n=e;for(;n!==null;){if(n.matches(Ve))return!0;n=n.parentElement}return!1}})}function ye(e){e==null||e.focus({preventScroll:!0})}let Ca=["textarea","input"].join(",");function Da(e){var t,r;return(r=(t=e==null?void 0:e.matches)==null?void 0:t.call(e,Ca))!=null?r:!1}function Fa(e,t=r=>r){return e.slice().sort((r,n)=>{let o=t(r),i=t(n);if(o===null||i===null)return 0;let s=o.compareDocumentPosition(i);return s&Node.DOCUMENT_POSITION_FOLLOWING?-1:s&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function Qe(e,t,r=!0){var n;let o=(n=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e==null?void 0:e.ownerDocument)!=null?n:document,i=Array.isArray(e)?r?Fa(e):e:Pa(e),s=o.activeElement,u=(()=>{if(t&5)return 1;if(t&10)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),l=(()=>{if(t&1)return 0;if(t&2)return Math.max(0,i.indexOf(s))-1;if(t&4)return Math.max(0,i.indexOf(s))+1;if(t&8)return i.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),c=t&32?{preventScroll:!0}:{},d=0,h=i.length,p;do{if(d>=h||d+h<=0)return 0;let y=l+d;if(t&16)y=(y+h)%h;else{if(y<0)return 3;if(y>=h)return 1}p=i[y],p==null||p.focus(c),d+=u}while(p!==o.activeElement);return p.hasAttribute("tabindex")||p.setAttribute("tabindex","0"),t&6&&Da(p)&&p.select(),2}function Ze(e,t,r){typeof window<"u"&&a.watchEffect(n=>{window.addEventListener(e,t,r),n(()=>window.removeEventListener(e,t,r))})}function ja(e,t,r=a.computed(()=>!0)){function n(o,i){if(!r.value||o.defaultPrevented)return;let s=i(o);if(s===null||!s.ownerDocument.documentElement.contains(s))return;let u=function l(c){return typeof c=="function"?l(c()):Array.isArray(c)||c instanceof Set?c:[c]}(e);for(let l of u){if(l===null)continue;let c=l instanceof HTMLElement?l:H(l);if(c!=null&&c.contains(s))return}return!Aa(s,Kt.Loose)&&s.tabIndex!==-1&&o.preventDefault(),t(o,s)}Ze("click",o=>n(o,i=>i.target),!0),Ze("blur",o=>n(o,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}var Pe=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(Pe||{});let et=a.defineComponent({name:"Hidden",props:{as:{type:[Object,String],default:"div"},features:{type:Number,default:1}},setup(e,{slots:t,attrs:r}){return()=>{let{features:n,...o}=e,i={"aria-hidden":(n&2)===2?!0:void 0,style:{position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...(n&4)===4&&(n&2)!==2&&{display:"none"}}};return D({ourProps:i,theirProps:o,slot:{},attrs:r,slots:t,name:"Hidden"})}}});var tt=(e=>(e[e.Forwards=0]="Forwards",e[e.Backwards=1]="Backwards",e))(tt||{});function xa(){let e=a.ref(0);return Ze("keydown",t=>{t.key==="Tab"&&(e.value=t.shiftKey?1:0)}),e}function zt(e,t,r,n){typeof window<"u"&&a.watchEffect(o=>{e=e!=null?e:window,e.addEventListener(t,r,n),o(()=>e.removeEventListener(t,r,n))})}var Wt=(e=>(e[e.None=1]="None",e[e.InitialFocus=2]="InitialFocus",e[e.TabLock=4]="TabLock",e[e.FocusLock=8]="FocusLock",e[e.RestoreFocus=16]="RestoreFocus",e[e.All=30]="All",e))(Wt||{});let ve=Object.assign(a.defineComponent({name:"FocusTrap",props:{as:{type:[Object,String],default:"div"},initialFocus:{type:Object,default:null},features:{type:Number,default:30},containers:{type:Object,default:a.ref(new Set)}},inheritAttrs:!1,setup(e,{attrs:t,slots:r,expose:n}){let o=a.ref(null);n({el:o,$el:o});let i=a.computed(()=>ie(o));Ba({ownerDocument:i},a.computed(()=>Boolean(e.features&16)));let s=Ma({ownerDocument:i,container:o,initialFocus:a.computed(()=>e.initialFocus)},a.computed(()=>Boolean(e.features&2)));La({ownerDocument:i,container:o,containers:e.containers,previousActiveElement:s},a.computed(()=>Boolean(e.features&8)));let u=xa();function l(){let c=H(o);!c||M(u.value,{[tt.Forwards]:()=>Qe(c,ge.First),[tt.Backwards]:()=>Qe(c,ge.Last)})}return()=>{let c={},d={ref:o},{features:h,initialFocus:p,containers:y,...m}=e;return a.h(a.Fragment,[Boolean(h&4)&&a.h(et,{as:"button",type:"button",onFocus:l,features:Pe.Focusable}),D({ourProps:d,theirProps:{...t,...m},slot:c,attrs:t,slots:r,name:"FocusTrap"}),Boolean(h&4)&&a.h(et,{as:"button",type:"button",onFocus:l,features:Pe.Focusable})])}}}),{features:Wt});function Ba({ownerDocument:e},t){let r=a.ref(null),n={value:!1};a.onMounted(()=>{a.watch(t,(o,i)=>{var s;o!==i&&(!t.value||(n.value=!0,r.value||(r.value=(s=e.value)==null?void 0:s.activeElement)))},{immediate:!0}),a.watch(t,(o,i,s)=>{o!==i&&(!t.value||s(()=>{n.value!==!1&&(n.value=!1,ye(r.value),r.value=null)}))},{immediate:!0})})}function Ma({ownerDocument:e,container:t,initialFocus:r},n){let o=a.ref(null);return a.onMounted(()=>{a.watch([t,r,n],(i,s)=>{if(i.every((l,c)=>(s==null?void 0:s[c])===l)||!n.value)return;let u=H(t);!u||requestAnimationFrame(()=>{var l,c;let d=H(r),h=(l=e.value)==null?void 0:l.activeElement;if(d){if(d===h){o.value=h;return}}else if(u.contains(h)){o.value=h;return}d?ye(d):Qe(u,ge.First|ge.NoScroll)===Gt.Error&&console.warn("There are no focusable elements inside the "),o.value=(c=e.value)==null?void 0:c.activeElement})},{immediate:!0,flush:"post"})}),o}function La({ownerDocument:e,container:t,containers:r,previousActiveElement:n},o){var i;zt((i=e.value)==null?void 0:i.defaultView,"focus",s=>{if(!o.value)return;let u=new Set(r==null?void 0:r.value);u.add(t);let l=n.value;if(!l)return;let c=s.target;c&&c instanceof HTMLElement?Ra(u,c)?(n.value=c,ye(c)):(s.preventDefault(),s.stopPropagation(),ye(l)):ye(n.value)},!0)}function Ra(e,t){var r;for(let n of e)if((r=n.value)!=null&&r.contains(t))return!0;return!1}let Xt="body > *",se=new Set,J=new Map;function Jt(e){e.setAttribute("aria-hidden","true"),e.inert=!0}function Yt(e){let t=J.get(e);!t||(t["aria-hidden"]===null?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",t["aria-hidden"]),e.inert=t.inert)}function Ia(e,t=a.ref(!0)){a.watchEffect(r=>{if(!t.value||!e.value)return;let n=e.value,o=ie(n);if(o){se.add(n);for(let i of J.keys())i.contains(n)&&(Yt(i),J.delete(i));o.querySelectorAll(Xt).forEach(i=>{if(i instanceof HTMLElement){for(let s of se)if(i.contains(s))return;se.size===1&&(J.set(i,{"aria-hidden":i.getAttribute("aria-hidden"),inert:i.inert}),Jt(i))}}),r(()=>{if(se.delete(n),se.size>0)o.querySelectorAll(Xt).forEach(i=>{if(i instanceof HTMLElement&&!J.has(i)){for(let s of se)if(i.contains(s))return;J.set(i,{"aria-hidden":i.getAttribute("aria-hidden"),inert:i.inert}),Jt(i)}});else for(let i of J.keys())Yt(i),J.delete(i)})}})}let Vt=Symbol("ForcePortalRootContext");function qa(){return a.inject(Vt,!1)}let rt=a.defineComponent({name:"ForcePortalRoot",props:{as:{type:[Object,String],default:"template"},force:{type:Boolean,default:!1}},setup(e,{slots:t,attrs:r}){return a.provide(Vt,e.force),()=>{let{force:n,...o}=e;return D({theirProps:o,ourProps:{},slot:{},slots:t,attrs:r,name:"ForcePortalRoot"})}}});function Na(e){let t=ie(e);if(!t){if(e===null)return null;throw new Error(`[Headless UI]: Cannot find ownerDocument for contextElement: ${e}`)}let r=t.getElementById("headlessui-portal-root");if(r)return r;let n=t.createElement("div");return n.setAttribute("id","headlessui-portal-root"),t.body.appendChild(n)}let Qt=a.defineComponent({name:"Portal",props:{as:{type:[Object,String],default:"div"}},setup(e,{slots:t,attrs:r}){let n=a.ref(null),o=a.computed(()=>ie(n)),i=qa(),s=a.inject(Zt,null),u=a.ref(i===!0||s==null?Na(n.value):s.resolveTarget());return a.watchEffect(()=>{i||s!=null&&(u.value=s.resolveTarget())}),a.onUnmounted(()=>{var l,c;let d=(l=o.value)==null?void 0:l.getElementById("headlessui-portal-root");!d||u.value===d&&u.value.children.length<=0&&((c=u.value.parentElement)==null||c.removeChild(u.value))}),()=>{if(u.value===null)return null;let l={ref:n,"data-headlessui-portal":""};return a.h(a.Teleport,{to:u.value},D({ourProps:l,theirProps:e,slot:{},attrs:r,slots:t,name:"Portal"}))}}}),Zt=Symbol("PortalGroupContext"),ka=a.defineComponent({name:"PortalGroup",props:{as:{type:[Object,String],default:"template"},target:{type:Object,default:null}},setup(e,{attrs:t,slots:r}){let n=a.reactive({resolveTarget(){return e.target}});return a.provide(Zt,n),()=>{let{target:o,...i}=e;return D({theirProps:i,ourProps:{},slot:{},attrs:t,slots:r,name:"PortalGroup"})}}}),er=Symbol("StackContext");var nt=(e=>(e[e.Add=0]="Add",e[e.Remove=1]="Remove",e))(nt||{});function Ha(){return a.inject(er,()=>{})}function Ua({type:e,element:t,onUpdate:r}){let n=Ha();function o(...i){r==null||r(...i),n(...i)}a.onMounted(()=>{o(0,e,t),a.onUnmounted(()=>{o(1,e,t)})}),a.provide(er,o)}let tr=Symbol("DescriptionContext");function Ga(){let e=a.inject(tr,null);if(e===null)throw new Error("Missing parent");return e}function Ka({slot:e=a.ref({}),name:t="Description",props:r={}}={}){let n=a.ref([]);function o(i){return n.value.push(i),()=>{let s=n.value.indexOf(i);s!==-1&&n.value.splice(s,1)}}return a.provide(tr,{register:o,slot:e,name:t,props:r}),a.computed(()=>n.value.length>0?n.value.join(" "):void 0)}let za=a.defineComponent({name:"Description",props:{as:{type:[Object,String],default:"p"}},setup(e,{attrs:t,slots:r}){let n=Ga(),o=`headlessui-description-${ee()}`;return a.onMounted(()=>a.onUnmounted(n.register(o))),()=>{let{name:i="Description",slot:s=a.ref({}),props:u={}}=n,l=e,c={...Object.entries(u).reduce((d,[h,p])=>Object.assign(d,{[h]:a.unref(p)}),{}),id:o};return D({ourProps:c,theirProps:l,slot:s.value,attrs:t,slots:r,name:i})}}});var Wa=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Wa||{});let ot=Symbol("DialogContext");function be(e){let t=a.inject(ot,null);if(t===null){let r=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,be),r}return t}let Ae="DC8F892D-2EBD-447C-A4C8-A03058436FF4",rr=a.defineComponent({name:"Dialog",inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},open:{type:[Boolean,String],default:Ae},initialFocus:{type:Object,default:null}},emits:{close:e=>!0},setup(e,{emit:t,attrs:r,slots:n,expose:o}){var i;let s=a.ref(!1);a.onMounted(()=>{s.value=!0});let u=a.ref(0),l=Ye(),c=a.computed(()=>e.open===Ae&&l!==null?M(l.value,{[te.Open]:!0,[te.Closed]:!1}):e.open),d=a.ref(new Set),h=a.ref(null),p=a.ref(null),y=a.computed(()=>ie(h));if(o({el:h,$el:h}),!(e.open!==Ae||l!==null))throw new Error("You forgot to provide an `open` prop to the `Dialog`.");if(typeof c.value!="boolean")throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${c.value===Ae?void 0:e.open}`);let m=a.computed(()=>s.value&&c.value?0:1),O=a.computed(()=>m.value===0),E=a.computed(()=>u.value>1),F=a.inject(ot,null)!==null,P=a.computed(()=>E.value?"parent":"leaf");Ia(h,a.computed(()=>E.value?O.value:!1)),Ua({type:"Dialog",element:h,onUpdate:(_,w,S)=>{if(w==="Dialog")return M(_,{[nt.Add](){d.value.add(S),u.value+=1},[nt.Remove](){d.value.delete(S),u.value-=1}})}});let G=Ka({name:"DialogDescription",slot:a.computed(()=>({open:c.value}))}),R=`headlessui-dialog-${ee()}`,j=a.ref(null),x={titleId:j,panelRef:a.ref(null),dialogState:m,setTitleId(_){j.value!==_&&(j.value=_)},close(){t("close",!1)}};return a.provide(ot,x),ja(()=>{var _,w,S;return[...Array.from((w=(_=y.value)==null?void 0:_.querySelectorAll("body > *, [data-headlessui-portal]"))!=null?w:[]).filter(v=>!(!(v instanceof HTMLElement)||v.contains(H(p))||x.panelRef.value&&v.contains(x.panelRef.value))),(S=x.panelRef.value)!=null?S:h.value]},(_,w)=>{x.close(),a.nextTick(()=>w==null?void 0:w.focus())},a.computed(()=>m.value===0&&!E.value)),zt((i=y.value)==null?void 0:i.defaultView,"keydown",_=>{_.defaultPrevented||_.key===Ht.Escape&&m.value===0&&(E.value||(_.preventDefault(),_.stopPropagation(),x.close()))}),a.watchEffect(_=>{var w;if(m.value!==0||F)return;let S=y.value;if(!S)return;let v=S==null?void 0:S.documentElement,A=(w=S.defaultView)!=null?w:window,xe=v.style.overflow,Se=v.style.paddingRight,le=A.innerWidth-v.clientWidth;if(v.style.overflow="hidden",le>0){let Be=v.clientWidth-v.offsetWidth,Me=le-Be;v.style.paddingRight=`${Me}px`}_(()=>{v.style.overflow=xe,v.style.paddingRight=Se})}),a.watchEffect(_=>{if(m.value!==0)return;let w=H(h);if(!w)return;let S=new IntersectionObserver(v=>{for(let A of v)A.boundingClientRect.x===0&&A.boundingClientRect.y===0&&A.boundingClientRect.width===0&&A.boundingClientRect.height===0&&x.close()});S.observe(w),_(()=>S.disconnect())}),()=>{let _={...r,ref:h,id:R,role:"dialog","aria-modal":m.value===0?!0:void 0,"aria-labelledby":j.value,"aria-describedby":G.value},{open:w,initialFocus:S,...v}=e,A={open:m.value===0};return a.h(rt,{force:!0},()=>[a.h(Qt,()=>a.h(ka,{target:h.value},()=>a.h(rt,{force:!1},()=>a.h(ve,{initialFocus:S,containers:d,features:O.value?M(P.value,{parent:ve.features.RestoreFocus,leaf:ve.features.All&~ve.features.FocusLock}):ve.features.None},()=>D({ourProps:_,theirProps:v,slot:A,attrs:r,slots:n,visible:m.value===0,features:Ee.RenderStrategy|Ee.Static,name:"Dialog"}))))),a.h(et,{features:Pe.Hidden,ref:p})])}}});a.defineComponent({name:"DialogOverlay",props:{as:{type:[Object,String],default:"div"}},setup(e,{attrs:t,slots:r}){let n=be("DialogOverlay"),o=`headlessui-dialog-overlay-${ee()}`;function i(s){s.target===s.currentTarget&&(s.preventDefault(),s.stopPropagation(),n.close())}return()=>D({ourProps:{id:o,"aria-hidden":!0,onClick:i},theirProps:e,slot:{open:n.dialogState.value===0},attrs:t,slots:r,name:"DialogOverlay"})}}),a.defineComponent({name:"DialogBackdrop",props:{as:{type:[Object,String],default:"div"}},inheritAttrs:!1,setup(e,{attrs:t,slots:r,expose:n}){let o=be("DialogBackdrop"),i=`headlessui-dialog-backdrop-${ee()}`,s=a.ref(null);return n({el:s,$el:s}),a.onMounted(()=>{if(o.panelRef.value===null)throw new Error("A component is being used, but a component is missing.")}),()=>{let u=e,l={id:i,ref:s,"aria-hidden":!0};return a.h(rt,{force:!0},()=>a.h(Qt,()=>D({ourProps:l,theirProps:{...t,...u},slot:{open:o.dialogState.value===0},attrs:t,slots:r,name:"DialogBackdrop"})))}}});let nr=a.defineComponent({name:"DialogPanel",props:{as:{type:[Object,String],default:"div"}},setup(e,{attrs:t,slots:r,expose:n}){let o=be("DialogPanel"),i=`headlessui-dialog-panel-${ee()}`;n({el:o.panelRef,$el:o.panelRef});function s(u){u.stopPropagation()}return()=>{let u={id:i,ref:o.panelRef,onClick:s};return D({ourProps:u,theirProps:e,slot:{open:o.dialogState.value===0},attrs:t,slots:r,name:"DialogPanel"})}}});a.defineComponent({name:"DialogTitle",props:{as:{type:[Object,String],default:"h2"}},setup(e,{attrs:t,slots:r}){let n=be("DialogTitle"),o=`headlessui-dialog-title-${ee()}`;return a.onMounted(()=>{n.setTitleId(o),a.onUnmounted(()=>n.setTitleId(null))}),()=>D({ourProps:{id:o},theirProps:e,slot:{open:n.dialogState.value===0},attrs:t,slots:r,name:"DialogTitle"})}});function Xa(e){let t={called:!1};return(...r)=>{if(!t.called)return t.called=!0,e(...r)}}function or(){let e=[],t=[],r={enqueue(n){t.push(n)},requestAnimationFrame(...n){let o=requestAnimationFrame(...n);r.add(()=>cancelAnimationFrame(o))},nextFrame(...n){r.requestAnimationFrame(()=>{r.requestAnimationFrame(...n)})},setTimeout(...n){let o=setTimeout(...n);r.add(()=>clearTimeout(o))},add(n){e.push(n)},dispose(){for(let n of e.splice(0))n()},async workQueue(){for(let n of t.splice(0))await n()}};return r}function at(e,...t){e&&t.length>0&&e.classList.add(...t)}function Ce(e,...t){e&&t.length>0&&e.classList.remove(...t)}var it=(e=>(e.Finished="finished",e.Cancelled="cancelled",e))(it||{});function Ja(e,t){let r=or();if(!e)return r.dispose;let{transitionDuration:n,transitionDelay:o}=getComputedStyle(e),[i,s]=[n,o].map(u=>{let[l=0]=u.split(",").filter(Boolean).map(c=>c.includes("ms")?parseFloat(c):parseFloat(c)*1e3).sort((c,d)=>d-c);return l});return i!==0?r.setTimeout(()=>t("finished"),i+s):t("finished"),r.add(()=>t("cancelled")),r.dispose}function ar(e,t,r,n,o,i){let s=or(),u=i!==void 0?Xa(i):()=>{};return Ce(e,...o),at(e,...t,...r),s.nextFrame(()=>{Ce(e,...r),at(e,...n),s.add(Ja(e,l=>(Ce(e,...n,...t),at(e,...o),u(l))))}),s.add(()=>Ce(e,...t,...r,...n,...o)),s.add(()=>u("cancelled")),s.dispose}function re(e=""){return e.split(" ").filter(t=>t.trim().length>1)}let st=Symbol("TransitionContext");var Ya=(e=>(e.Visible="visible",e.Hidden="hidden",e))(Ya||{});function Va(){return a.inject(st,null)!==null}function Qa(){let e=a.inject(st,null);if(e===null)throw new Error("A is used but it is missing a parent .");return e}function Za(){let e=a.inject(lt,null);if(e===null)throw new Error("A is used but it is missing a parent .");return e}let lt=Symbol("NestingContext");function De(e){return"children"in e?De(e.children):e.value.filter(({state:t})=>t==="visible").length>0}function ir(e){let t=a.ref([]),r=a.ref(!1);a.onMounted(()=>r.value=!0),a.onUnmounted(()=>r.value=!1);function n(i,s=X.Hidden){let u=t.value.findIndex(({id:l})=>l===i);u!==-1&&(M(s,{[X.Unmount](){t.value.splice(u,1)},[X.Hidden](){t.value[u].state="hidden"}}),!De(t)&&r.value&&(e==null||e()))}function o(i){let s=t.value.find(({id:u})=>u===i);return s?s.state!=="visible"&&(s.state="visible"):t.value.push({id:i,state:"visible"}),()=>n(i,X.Unmount)}return{children:t,register:o,unregister:n}}let sr=Ee.RenderStrategy,we=a.defineComponent({props:{as:{type:[Object,String],default:"div"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:""},enterFrom:{type:[String],default:""},enterTo:{type:[String],default:""},entered:{type:[String],default:""},leave:{type:[String],default:""},leaveFrom:{type:[String],default:""},leaveTo:{type:[String],default:""}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:r,slots:n,expose:o}){if(!Va()&&Oa())return()=>a.h(_e,{...e,onBeforeEnter:()=>t("beforeEnter"),onAfterEnter:()=>t("afterEnter"),onBeforeLeave:()=>t("beforeLeave"),onAfterLeave:()=>t("afterLeave")},n);let i=a.ref(null),s=a.ref("visible"),u=a.computed(()=>e.unmount?X.Unmount:X.Hidden);o({el:i,$el:i});let{show:l,appear:c}=Qa(),{register:d,unregister:h}=Za(),p={value:!0},y=ee(),m={value:!1},O=ir(()=>{m.value||(s.value="hidden",h(y),t("afterLeave"))});a.onMounted(()=>{let w=d(y);a.onUnmounted(w)}),a.watchEffect(()=>{if(u.value===X.Hidden&&!!y){if(l&&s.value!=="visible"){s.value="visible";return}M(s.value,{hidden:()=>h(y),visible:()=>d(y)})}});let E=re(e.enter),F=re(e.enterFrom),P=re(e.enterTo),G=re(e.entered),R=re(e.leave),j=re(e.leaveFrom),x=re(e.leaveTo);a.onMounted(()=>{a.watchEffect(()=>{if(s.value==="visible"){let w=H(i);if(w instanceof Comment&&w.data==="")throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")}})});function _(w){let S=p.value&&!c.value,v=H(i);!v||!(v instanceof HTMLElement)||S||(m.value=!0,l.value&&t("beforeEnter"),l.value||t("beforeLeave"),w(l.value?ar(v,E,F,P,G,A=>{m.value=!1,A===it.Finished&&t("afterEnter")}):ar(v,R,j,x,G,A=>{m.value=!1,A===it.Finished&&(De(O)||(s.value="hidden",h(y),t("afterLeave")))})))}return a.onMounted(()=>{a.watch([l],(w,S,v)=>{_(v),p.value=!1},{immediate:!0})}),a.provide(lt,O),$a(a.computed(()=>M(s.value,{visible:te.Open,hidden:te.Closed}))),()=>{let{appear:w,show:S,enter:v,enterFrom:A,enterTo:xe,entered:Se,leave:le,leaveFrom:Be,leaveTo:Me,...oe}=e;return D({theirProps:oe,ourProps:{ref:i},slot:{},slots:n,attrs:r,features:sr,visible:s.value==="visible",name:"TransitionChild"})}}}),ei=we,_e=a.defineComponent({inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:""},enterFrom:{type:[String],default:""},enterTo:{type:[String],default:""},entered:{type:[String],default:""},leave:{type:[String],default:""},leaveFrom:{type:[String],default:""},leaveTo:{type:[String],default:""}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:r,slots:n}){let o=Ye(),i=a.computed(()=>e.show===null&&o!==null?M(o.value,{[te.Open]:!0,[te.Closed]:!1}):e.show);a.watchEffect(()=>{if(![!0,!1].includes(i.value))throw new Error('A is used but it is missing a `:show="true | false"` prop.')});let s=a.ref(i.value?"visible":"hidden"),u=ir(()=>{s.value="hidden"}),l=a.ref(!0),c={show:i,appear:a.computed(()=>e.appear||!l.value)};return a.onMounted(()=>{a.watchEffect(()=>{l.value=!1,i.value?s.value="visible":De(u)||(s.value="hidden")})}),a.provide(lt,u),a.provide(st,c),()=>{let d=kt(e,["show","appear","unmount","onBeforeEnter","onBeforeLeave","onAfterEnter","onAfterLeave"]),h={unmount:e.unmount};return D({ourProps:{...h,as:"template"},theirProps:{},slot:{},slots:{...n,default:()=>[a.h(ei,{onBeforeEnter:()=>t("beforeEnter"),onAfterEnter:()=>t("afterEnter"),onBeforeLeave:()=>t("beforeLeave"),onAfterLeave:()=>t("afterLeave"),...r,...h,...d},n.default)]},attrs:{},features:sr,visible:s.value==="visible",name:"Transition"})}}});const ti={props:{defaultTitle:{type:String,required:!1,default:""},defaultText:{type:String,required:!1,default:""},defaultConfirmButton:{type:String,required:!1,default:""},defaultCancelButton:{type:String,required:!1,default:""}},data(){return{isOpen:!1}},computed:{hasConfirmModal:()=>!!g.confirmModal,title:function(){var e;return(e=g.confirmModal)!=null&&e.title?g.confirmModal.title:this.defaultTitle},text:function(){var e;return(e=g.confirmModal)!=null&&e.text?g.confirmModal.text:this.defaultText},confirmButton:function(){var e;return(e=g.confirmModal)!=null&&e.confirmButton?g.confirmModal.confirmButton:this.defaultConfirmButton},cancelButton:function(){var e;return(e=g.confirmModal)!=null&&e.cancelButton?g.confirmModal.cancelButton:this.defaultCancelButton}},watch:{hasConfirmModal(e){e&&(this.isOpen=!0)}},methods:{cancel(){g.confirmModal.rejectPromise(),this.setIsOpen(!1)},confirm(){g.confirmModal.resolvePromise(),this.setIsOpen(!1)},setIsOpen(e){this.isOpen=e},emitClose(){g.clearConfirmModal()}},render(){return this.$slots.default({title:this.title,text:this.text,confirmButton:this.confirmButton,cancelButton:this.cancelButton,isOpen:this.isOpen,setIsOpen:this.setIsOpen,cancel:this.cancel,confirm:this.confirm,emitClose:this.emitClose,Dialog:rr,DialogPanel:nr,TransitionRoot:_e,TransitionChild:we})}};function lr(e,t){t=Xe(t,e);for(var r=0,n=t.length;e!=null&&r({}),required:!1},remember:{type:String,default:null,required:!1},localStorage:{type:Boolean,default:!1,required:!1}},data(){return{values:{}}},mounted(){if(this.remember){let e=g.restore(this.remember,this.localStorage);e||(e={}),this.values=Object.assign({},{...this.default,...e})}else this.values=Object.assign({},{...this.default})},updated(){this.remember&&g.remember(this.remember,{...this.values},this.localStorage)},render(){const e=this;return this.$slots.default(new Proxy(this.values,{ownKeys(){return Object.keys(e.values)},get(t,r){return ut(e.values,r)},set(t,r,n){fr(e.values,r,n)}}))}},li={props:{url:{type:String,required:!0},method:{type:String,required:!1,default:"GET"},acceptHeader:{type:String,required:!1,default:"application/json"},poll:{type:Number,required:!1,default:null},default:{type:Object,required:!1,default:()=>({})},request:{type:Object,required:!1,default:()=>({})}},data(){return{response:Object.assign({},{...this.default}),processing:!1}},mounted(){this.$nextTick(this.performRequest)},methods:{performRequest(){this.processing=!0;const e={url:this.url,method:this.method,headers:{Accept:this.acceptHeader}};Object.keys(this.request).length>0&&(e.data=this.request),yt.default(e).then(t=>{this.response=t.data,this.processing=!1}).catch(()=>{this.processing=!1}),this.poll&&setTimeout(()=>{this.performRequest()},this.poll)}},render(){return this.$slots.default({processing:this.processing,response:this.response,reload:this.performRequest})}};function dr(e){return e&&e.length?e[0]:void 0}const ui={inject:["stack"],computed:{values(){return g.validationErrors(this.stack)}},render(){const e=this;return this.$slots.default({has(t){return L(e.values,t)},first(t){return dr(e.values[t]||[])},all:{...this.values},...this.values})}};function ci(e,t){return e&&He(e,Bt(t))}const fi={props:{private:{type:Boolean,required:!1,default:!1},channel:{type:String,required:!0},listeners:{type:Array,required:!0}},data(){return{subscribed:!1,subscription:null,subscriptions:[],events:[]}},beforeUnmount(){this.subscription&&(window.Echo.leave(this.subscription.subscription.name),this.subscription=null,this.subscriptions=[])},mounted(){this.subscription=this.private?window.Echo.private(this.channel):window.Echo.channel(this.channel),this.subscription.on("pusher:subscription_succeeded",()=>{this.subscribed=!0}),this.listeners.forEach(e=>{const t=this.subscription.listen(e,r=>{const n="splade.redirect",o="splade.refresh",i="splade.toast";let s=null,u=!1,l=[];ci(r,c=>{!ae(c)||(n in c&&(s=c[n]),o in c&&(u=c[o]),i in c&&l.push(c))}),s?g.visit(s):u?g.refresh():this.events.push({name:e,data:r}),l.length>0&&l.forEach(c=>{g.pushToast(c)}),this.$root.$emit(`event.${e}`,r)});this.subscriptions.push(t)})},render(){return this.$slots.default({subscribed:this.subscribed,events:this.events})}},di={inject:["stack"],computed:{values(){return g.flashData(this.stack)}},render(){const e=this;return this.$slots.default({has(t){return L(e.values,t)},...this.values})}};function ct(e){return e instanceof File||e instanceof Blob||e instanceof FileList&&e.length>0||e instanceof FormData&&Array.from(e.values()).some(t=>ct(t))||typeof e=="object"&&e!==null&&Object.values(e).some(t=>ct(t))}function pr(e){e=e||{};let t=new FormData;for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&mr(t,hr(null,r),e[r]);return t}function hr(e,t){return e?e+"["+t+"]":t}function mr(e,t,r){if(Array.isArray(r))return Array.from(r.keys()).forEach(n=>mr(e,hr(t,n.toString()),r[n]));if(r instanceof Date)return e.append(t,r.toISOString());if(r instanceof File)return e.append(t,r,r.name);if(r instanceof Blob)return e.append(t,r);if(typeof r=="boolean")return e.append(t,r?"1":"0");if(typeof r=="string")return e.append(t,r);if(typeof r=="number")return e.append(t,`${r}`);if(r==null)return e.append(t,"");pr(r)}var pi="[object Boolean]";function gr(e){return e===!0||e===!1||W(e)&&z(e)==pi}function hi(){this.__data__=new N,this.size=0}function mi(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}function gi(e){return this.__data__.get(e)}function yi(e){return this.__data__.has(e)}var vi=200;function bi(e,t){var r=this.__data__;if(r instanceof N){var n=r.__data__;if(!he||n.lengthu))return!1;var c=i.get(e),d=i.get(t);if(c&&d)return c==t&&d==e;var h=-1,p=!0,y=r&Ei?new Fe:void 0;for(i.set(e,t),i.set(t,e);++h({})},forceFormData:{type:Boolean,required:!1,default:!1},confirm:{type:[Boolean,String],required:!1,default:!1},confirmText:{type:String,required:!1,default:""},confirmButton:{type:String,required:!1,default:""},cancelButton:{type:String,required:!1,default:""},restoreOnSuccess:{type:Boolean,required:!1,default:!0},resetOnSuccess:{type:Boolean,required:!1,default:!1}},emits:["success","error"],data(){return{values:Object.assign({},{...this.default}),processing:!1,wasSuccessful:!1,recentlySuccessful:!1,recentlySuccessfulTimeoutId:null}},computed:{rawErrors(){return g.validationErrors(this.stack)},errors(){return xr(this.rawErrors,e=>e.join(` -`))}},methods:{hasError(e){return L(this.errors,e)},reset(){this.values={}},restore(){this.values=Object.assign({},{...this.default})},submit(){if(!this.confirm)return this.request();g.confirm(gr(this.confirm)?"":this.confirm,this.confirmText,this.confirmButton,this.cancelButton).then(()=>{this.request()}).catch(()=>{})},request(){this.processing=!0,this.wasSuccessful=!1,this.recentlySuccessful=!1,clearTimeout(this.recentlySuccessfulTimeoutId);const e=this.forceFormData||ct(this.values)?pr(this.values):this.values;g.request(this.action,this.method.toUpperCase(),e,{Accept:"application/json"}).then(t=>{this.$emit("success",t),this.restoreOnSuccess&&this.restore(),this.resetOnSuccess&&this.reset(),this.processing=!1,this.wasSuccessful=!0,this.recentlySuccessful=!0,this.recentlySuccessfulTimeoutId=setTimeout(()=>this.recentlySuccessful=!1,2e3)}).catch(t=>{this.processing=!1,this.$emit("error",t)})}},render(){const e=this;return this.$slots.default(new Proxy({},{ownKeys(){return Object.keys(e.values)},get(t,r){return["errors","restore","reset","hasError","processing","rawErrors","submit","wasSuccessful","recentlySuccessful"].includes(r)?e[r]:ut(e.values,r)},set(t,r,n){fr(e.values,r,n)}}))}},Ds=["href","onClick"],Fs={__name:"Link",props:{href:{type:String,required:!0},confirm:{type:[Boolean,String],required:!1,default:!1},confirmText:{type:String,required:!1,default:""},confirmButton:{type:String,required:!1,default:""},cancelButton:{type:String,required:!1,default:""},modal:{type:Boolean,required:!1,default:!1},slideover:{type:Boolean,required:!1,default:!1}},setup(e){const t=e;function r(){if(!t.confirm)return n();g.confirm(gr(t.confirm)?"":t.confirm,t.confirmText,t.confirmButton,t.cancelButton).then(()=>{n()}).catch(()=>{})}function n(){if(t.modal)return g.modal(t.href);if(t.slideover)return g.slideover(t.href);g.visit(t.href)}return(o,i)=>(a.openBlock(),a.createElementBlock("a",{href:e.href,onClick:a.withModifiers(r,["prevent"])},[a.renderSlot(o.$slots,"default")],8,Ds))}},js={provide(){return{stack:this.stack}},props:{type:{type:String,required:!0},stack:{type:Number,required:!0},onTopOfStack:{type:Boolean,required:!0},maxWidth:{type:String,required:!1,default:e=>e.type==="modal"?"2xl":"md"}},emits:["close"],data(){return{isOpen:!1}},mounted(){this.setIsOpen(!0)},methods:{emitClose(){this.$emit("close")},close(){this.setIsOpen(!1)},setIsOpen(e){this.isOpen=e}},render(){return this.$slots.default({type:this.type,isOpen:this.isOpen,setIsOpen:this.setIsOpen,close:this.close,stack:this.stack,onTopOfStack:this.onTopOfStack,maxWidth:this.maxWidth,emitClose:this.emitClose,Dialog:rr,DialogPanel:nr,TransitionRoot:_e,TransitionChild:we})}},xs={inject:["stack"],render(){const e=g.validationErrors(this.stack),t=g.flashData(this.stack),r=g.sharedData,n=xr(e,o=>o.join(` -`));return this.$slots.default({flash:t,errors:n,rawErrors:e,shared:r,hasError(o){return L(e,o)},hasFlash(o){return L(t,o)},hasShared(o){return L(r,o)},hasErrors:Object.keys(e).length>0})}},Bs={props:{toastKey:{type:Number,required:!0},autoDismiss:{type:Number,required:!1,default:0}},emits:["dismiss"],data(){return{show:!0}},mounted(){this.autoDismiss&&setTimeout(()=>{this.setShow(!1)},this.autoDismiss*1e3)},methods:{setShow(e){this.show=e},emitDismiss(){this.$emit("dismiss")}},render(){return this.$slots.default({key:this.toastKey,show:this.show,setShow:this.setShow,emitDismiss:this.emitDismiss,TransitionRoot:_e,TransitionChild:we})}},Ms=["left-top","center-top","right-top","left-center","center-center","right-center","left-bottom","center-bottom","right-bottom"],Ls={computed:{toasts:function(){return g.toastsReversed},hasBackdrop:function(){return g.toasts.filter(e=>!e.dismissed&&e.backdrop&&e.html).length>0}},methods:{dismissToast(e){g.dismissToast(e)}},render(){return this.$slots.default({positions:Ms,toasts:this.toasts,dismissToast:this.dismissToast,hasBackdrop:this.hasBackdrop,Render:de,TransitionRoot:_e,TransitionChild:we})}},Rs={props:{default:{type:Object,required:!0}},data(){return{toggles:{...this.default}}},methods:{toggled(e){var t;return(t=this.toggles[e])!=null?t:!1},toggle(e){this.setToggle(e,!this.toggled(e))},setToggle(e,t){this.toggles[e]=t}},render(){const e=this;return this.$slots.default(new Proxy({},{ownKeys(){return Object.keys(e.toggles)},get(t,r){const n=Object.keys(e.toggles);if(n.length===1&&dr(n)==="default"){if(r==="toggled")return e.toggled("default");if(r==="setToggle")return o=>{e.setToggle("default",o)};if(r==="toggle")return()=>{e.toggle("default")}}return r==="setToggle"?(o,i)=>{e.setToggle(o,i)}:r==="toggle"?o=>{e.toggle(o)}:e.toggled(r)}}))}},Is={install:(e,t)=>{t=t||{},t.max_keep_alive=L(t,"max_keep_alive")?t.max_keep_alive:10,t.prefix=L(t,"prefix")?t.prefix:"Splade",t.transform_anchors=L(t,"transform_anchors")?t.transform_anchors:!1,t.link_component=L(t,"link_component")?t.link_component:"Link";const r=t.prefix;e.component(`${r}Confirm`,ti).component(`${r}Data`,si).component(`${r}Defer`,li).component(`${r}Errors`,ui).component(`${r}Event`,fi).component(`${r}Flash`,di).component(`${r}Form`,Cs).component(`${r}Modal`,js).component(`${r}Render`,de).component(`${r}State`,xs).component(`${r}Toast`,Bs).component(`${r}Toasts`,Ls).component(`${r}Toggle`,Rs).component(t.link_component,Fs),Object.defineProperty(e.config.globalProperties,"$splade",{get:()=>g}),Object.defineProperty(e.config.globalProperties,"$spladeOptions",{get:()=>Object.assign({},{...t})}),e.provide("$splade",e.config.globalProperties.$splade),e.provide("$spladeOptions",e.config.globalProperties.$spladeOptions)}};$.Splade=g,$.SpladePlugin=Is,$.renderSpladeApp=yo,Object.defineProperties($,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}); +`));return i.cloneVNode(c,Object.assign({},u,f))}return Array.isArray(l)&&l.length===1?l[0]:l}return i.h(s,Object.assign({},u,f),l)}function Xt(e){return e.flatMap(t=>t.type===i.Fragment?Xt(t.children):[t])}function Wa(...e){if(e.length===0)return{};if(e.length===1)return e[0];let t={},n={};for(let r of e)for(let o in r)o.startsWith("on")&&typeof r[o]=="function"?(n[o]!=null||(n[o]=[]),n[o].push(r[o])):t[o]=r[o];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(n).map(r=>[r,void 0])));for(let r in n)Object.assign(t,{[r](o,...a){let s=n[r];for(let u of s){if(o!=null&&o.defaultPrevented)return;u(o,...a)}}});return t}function Yt(e,t=[]){let n=Object.assign({},e);for(let r of t)r in n&&delete n[r];return n}function Ja(e){return e==null?!1:typeof e.type=="string"||typeof e.type=="object"||typeof e.type=="function"}let Xa=0;function Ya(){return++Xa}function Y(){return Ya()}var Vt=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(Vt||{});function L(e){var t;return e==null||e.value==null?null:(t=e.value.$el)!=null?t:e.value}let Qt=Symbol("Context");var V=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(V||{});function Va(){return We()!==null}function We(){return i.inject(Qt,null)}function Qa(e){i.provide(Qt,e)}function oe(e){if(typeof window>"u")return null;if(e instanceof Node)return e.ownerDocument;if(e!=null&&e.hasOwnProperty("value")){let t=L(e);if(t)return t.ownerDocument}return document}let Je=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(e=>`${e}:not([tabindex='-1'])`).join(",");var he=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(he||{}),Zt=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(Zt||{}),Za=(e=>(e[e.Previous=-1]="Previous",e[e.Next=1]="Next",e))(Za||{});function ei(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(Je))}var en=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(en||{});function ti(e,t=0){var n;return e===((n=oe(e))==null?void 0:n.body)?!1:A(t,{[0](){return e.matches(Je)},[1](){let r=e;for(;r!==null;){if(r.matches(Je))return!0;r=r.parentElement}return!1}})}function me(e){e==null||e.focus({preventScroll:!0})}let ni=["textarea","input"].join(",");function ri(e){var t,n;return(n=(t=e==null?void 0:e.matches)==null?void 0:t.call(e,ni))!=null?n:!1}function oi(e,t=n=>n){return e.slice().sort((n,r)=>{let o=t(n),a=t(r);if(o===null||a===null)return 0;let s=o.compareDocumentPosition(a);return s&Node.DOCUMENT_POSITION_FOLLOWING?-1:s&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function Xe(e,t,n=!0){var r;let o=(r=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e==null?void 0:e.ownerDocument)!=null?r:document,a=Array.isArray(e)?n?oi(e):e:ei(e),s=o.activeElement,u=(()=>{if(t&5)return 1;if(t&10)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),l=(()=>{if(t&1)return 0;if(t&2)return Math.max(0,a.indexOf(s))-1;if(t&4)return Math.max(0,a.indexOf(s))+1;if(t&8)return a.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),f=t&32?{preventScroll:!0}:{},c=0,d=a.length,h;do{if(c>=d||c+d<=0)return 0;let m=l+c;if(t&16)m=(m+d)%d;else{if(m<0)return 3;if(m>=d)return 1}h=a[m],h==null||h.focus(f),c+=u}while(h!==o.activeElement);return h.hasAttribute("tabindex")||h.setAttribute("tabindex","0"),t&6&&ri(h)&&h.select(),2}function Ye(e,t,n){typeof window<"u"&&i.watchEffect(r=>{window.addEventListener(e,t,n),r(()=>window.removeEventListener(e,t,n))})}function ai(e,t,n=i.computed(()=>!0)){function r(o,a){if(!n.value||o.defaultPrevented)return;let s=a(o);if(s===null||!s.ownerDocument.documentElement.contains(s))return;let u=function l(f){return typeof f=="function"?l(f()):Array.isArray(f)||f instanceof Set?f:[f]}(e);for(let l of u){if(l===null)continue;let f=l instanceof HTMLElement?l:L(l);if(f!=null&&f.contains(s))return}return!ti(s,en.Loose)&&s.tabIndex!==-1&&o.preventDefault(),t(o,s)}Ye("click",o=>r(o,a=>a.target),!0),Ye("blur",o=>r(o,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}var Oe=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(Oe||{});let Ve=i.defineComponent({name:"Hidden",props:{as:{type:[Object,String],default:"div"},features:{type:Number,default:1}},setup(e,{slots:t,attrs:n}){return()=>{let{features:r,...o}=e,a={"aria-hidden":(r&2)===2?!0:void 0,style:{position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...(r&4)===4&&(r&2)!==2&&{display:"none"}}};return $({ourProps:a,theirProps:o,slot:{},attrs:n,slots:t,name:"Hidden"})}}});var Qe=(e=>(e[e.Forwards=0]="Forwards",e[e.Backwards=1]="Backwards",e))(Qe||{});function ii(){let e=i.ref(0);return Ye("keydown",t=>{t.key==="Tab"&&(e.value=t.shiftKey?1:0)}),e}function tn(e,t,n,r){typeof window<"u"&&i.watchEffect(o=>{e=e!=null?e:window,e.addEventListener(t,n,r),o(()=>e.removeEventListener(t,n,r))})}var nn=(e=>(e[e.None=1]="None",e[e.InitialFocus=2]="InitialFocus",e[e.TabLock=4]="TabLock",e[e.FocusLock=8]="FocusLock",e[e.RestoreFocus=16]="RestoreFocus",e[e.All=30]="All",e))(nn||{});let ge=Object.assign(i.defineComponent({name:"FocusTrap",props:{as:{type:[Object,String],default:"div"},initialFocus:{type:Object,default:null},features:{type:Number,default:30},containers:{type:Object,default:i.ref(new Set)}},inheritAttrs:!1,setup(e,{attrs:t,slots:n,expose:r}){let o=i.ref(null);r({el:o,$el:o});let a=i.computed(()=>oe(o));si({ownerDocument:a},i.computed(()=>Boolean(e.features&16)));let s=li({ownerDocument:a,container:o,initialFocus:i.computed(()=>e.initialFocus)},i.computed(()=>Boolean(e.features&2)));ui({ownerDocument:a,container:o,containers:e.containers,previousActiveElement:s},i.computed(()=>Boolean(e.features&8)));let u=ii();function l(){let f=L(o);!f||A(u.value,{[Qe.Forwards]:()=>Xe(f,he.First),[Qe.Backwards]:()=>Xe(f,he.Last)})}return()=>{let f={},c={ref:o},{features:d,initialFocus:h,containers:m,...g}=e;return i.h(i.Fragment,[Boolean(d&4)&&i.h(Ve,{as:"button",type:"button",onFocus:l,features:Oe.Focusable}),$({ourProps:c,theirProps:{...t,...g},slot:f,attrs:t,slots:n,name:"FocusTrap"}),Boolean(d&4)&&i.h(Ve,{as:"button",type:"button",onFocus:l,features:Oe.Focusable})])}}}),{features:nn});function si({ownerDocument:e},t){let n=i.ref(null),r={value:!1};i.onMounted(()=>{i.watch(t,(o,a)=>{var s;o!==a&&(!t.value||(r.value=!0,n.value||(n.value=(s=e.value)==null?void 0:s.activeElement)))},{immediate:!0}),i.watch(t,(o,a,s)=>{o!==a&&(!t.value||s(()=>{r.value!==!1&&(r.value=!1,me(n.value),n.value=null)}))},{immediate:!0})})}function li({ownerDocument:e,container:t,initialFocus:n},r){let o=i.ref(null);return i.onMounted(()=>{i.watch([t,n,r],(a,s)=>{if(a.every((l,f)=>(s==null?void 0:s[f])===l)||!r.value)return;let u=L(t);!u||requestAnimationFrame(()=>{var l,f;let c=L(n),d=(l=e.value)==null?void 0:l.activeElement;if(c){if(c===d){o.value=d;return}}else if(u.contains(d)){o.value=d;return}c?me(c):Xe(u,he.First|he.NoScroll)===Zt.Error&&console.warn("There are no focusable elements inside the "),o.value=(f=e.value)==null?void 0:f.activeElement})},{immediate:!0,flush:"post"})}),o}function ui({ownerDocument:e,container:t,containers:n,previousActiveElement:r},o){var a;tn((a=e.value)==null?void 0:a.defaultView,"focus",s=>{if(!o.value)return;let u=new Set(n==null?void 0:n.value);u.add(t);let l=r.value;if(!l)return;let f=s.target;f&&f instanceof HTMLElement?fi(u,f)?(r.value=f,me(f)):(s.preventDefault(),s.stopPropagation(),me(l)):me(r.value)},!0)}function fi(e,t){var n;for(let r of e)if((n=r.value)!=null&&n.contains(t))return!0;return!1}let rn="body > *",ae=new Set,K=new Map;function on(e){e.setAttribute("aria-hidden","true"),e.inert=!0}function an(e){let t=K.get(e);!t||(t["aria-hidden"]===null?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",t["aria-hidden"]),e.inert=t.inert)}function ci(e,t=i.ref(!0)){i.watchEffect(n=>{if(!t.value||!e.value)return;let r=e.value,o=oe(r);if(o){ae.add(r);for(let a of K.keys())a.contains(r)&&(an(a),K.delete(a));o.querySelectorAll(rn).forEach(a=>{if(a instanceof HTMLElement){for(let s of ae)if(a.contains(s))return;ae.size===1&&(K.set(a,{"aria-hidden":a.getAttribute("aria-hidden"),inert:a.inert}),on(a))}}),n(()=>{if(ae.delete(r),ae.size>0)o.querySelectorAll(rn).forEach(a=>{if(a instanceof HTMLElement&&!K.has(a)){for(let s of ae)if(a.contains(s))return;K.set(a,{"aria-hidden":a.getAttribute("aria-hidden"),inert:a.inert}),on(a)}});else for(let a of K.keys())an(a),K.delete(a)})}})}let sn=Symbol("ForcePortalRootContext");function di(){return i.inject(sn,!1)}let Ze=i.defineComponent({name:"ForcePortalRoot",props:{as:{type:[Object,String],default:"template"},force:{type:Boolean,default:!1}},setup(e,{slots:t,attrs:n}){return i.provide(sn,e.force),()=>{let{force:r,...o}=e;return $({theirProps:o,ourProps:{},slot:{},slots:t,attrs:n,name:"ForcePortalRoot"})}}});function pi(e){let t=oe(e);if(!t){if(e===null)return null;throw new Error(`[Headless UI]: Cannot find ownerDocument for contextElement: ${e}`)}let n=t.getElementById("headlessui-portal-root");if(n)return n;let r=t.createElement("div");return r.setAttribute("id","headlessui-portal-root"),t.body.appendChild(r)}let ln=i.defineComponent({name:"Portal",props:{as:{type:[Object,String],default:"div"}},setup(e,{slots:t,attrs:n}){let r=i.ref(null),o=i.computed(()=>oe(r)),a=di(),s=i.inject(un,null),u=i.ref(a===!0||s==null?pi(r.value):s.resolveTarget());return i.watchEffect(()=>{a||s!=null&&(u.value=s.resolveTarget())}),i.onUnmounted(()=>{var l,f;let c=(l=o.value)==null?void 0:l.getElementById("headlessui-portal-root");!c||u.value===c&&u.value.children.length<=0&&((f=u.value.parentElement)==null||f.removeChild(u.value))}),()=>{if(u.value===null)return null;let l={ref:r,"data-headlessui-portal":""};return i.h(i.Teleport,{to:u.value},$({ourProps:l,theirProps:e,slot:{},attrs:n,slots:t,name:"Portal"}))}}}),un=Symbol("PortalGroupContext"),hi=i.defineComponent({name:"PortalGroup",props:{as:{type:[Object,String],default:"template"},target:{type:Object,default:null}},setup(e,{attrs:t,slots:n}){let r=i.reactive({resolveTarget(){return e.target}});return i.provide(un,r),()=>{let{target:o,...a}=e;return $({theirProps:a,ourProps:{},slot:{},attrs:t,slots:n,name:"PortalGroup"})}}}),fn=Symbol("StackContext");var et=(e=>(e[e.Add=0]="Add",e[e.Remove=1]="Remove",e))(et||{});function mi(){return i.inject(fn,()=>{})}function gi({type:e,element:t,onUpdate:n}){let r=mi();function o(...a){n==null||n(...a),r(...a)}i.onMounted(()=>{o(0,e,t),i.onUnmounted(()=>{o(1,e,t)})}),i.provide(fn,o)}let cn=Symbol("DescriptionContext");function yi(){let e=i.inject(cn,null);if(e===null)throw new Error("Missing parent");return e}function vi({slot:e=i.ref({}),name:t="Description",props:n={}}={}){let r=i.ref([]);function o(a){return r.value.push(a),()=>{let s=r.value.indexOf(a);s!==-1&&r.value.splice(s,1)}}return i.provide(cn,{register:o,slot:e,name:t,props:n}),i.computed(()=>r.value.length>0?r.value.join(" "):void 0)}let bi=i.defineComponent({name:"Description",props:{as:{type:[Object,String],default:"p"}},setup(e,{attrs:t,slots:n}){let r=yi(),o=`headlessui-description-${Y()}`;return i.onMounted(()=>i.onUnmounted(r.register(o))),()=>{let{name:a="Description",slot:s=i.ref({}),props:u={}}=r,l=e,f={...Object.entries(u).reduce((c,[d,h])=>Object.assign(c,{[d]:i.unref(h)}),{}),id:o};return $({ourProps:f,theirProps:l,slot:s.value,attrs:t,slots:n,name:a})}}});var wi=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(wi||{});let tt=Symbol("DialogContext");function ye(e){let t=i.inject(tt,null);if(t===null){let n=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(n,ye),n}return t}let Te="DC8F892D-2EBD-447C-A4C8-A03058436FF4",dn=i.defineComponent({name:"Dialog",inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},open:{type:[Boolean,String],default:Te},initialFocus:{type:Object,default:null}},emits:{close:e=>!0},setup(e,{emit:t,attrs:n,slots:r,expose:o}){var a;let s=i.ref(!1);i.onMounted(()=>{s.value=!0});let u=i.ref(0),l=We(),f=i.computed(()=>e.open===Te&&l!==null?A(l.value,{[V.Open]:!0,[V.Closed]:!1}):e.open),c=i.ref(new Set),d=i.ref(null),h=i.ref(null),m=i.computed(()=>oe(d));if(o({el:d,$el:d}),!(e.open!==Te||l!==null))throw new Error("You forgot to provide an `open` prop to the `Dialog`.");if(typeof f.value!="boolean")throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${f.value===Te?void 0:e.open}`);let g=i.computed(()=>s.value&&f.value?0:1),O=i.computed(()=>g.value===0),T=i.computed(()=>u.value>1),C=i.inject(tt,null)!==null,D=i.computed(()=>T.value?"parent":"leaf");ci(d,i.computed(()=>T.value?O.value:!1)),gi({type:"Dialog",element:d,onUpdate:(w,b,_)=>{if(b==="Dialog")return A(w,{[et.Add](){c.value.add(_),u.value+=1},[et.Remove](){c.value.delete(_),u.value-=1}})}});let ee=vi({name:"DialogDescription",slot:i.computed(()=>({open:f.value}))}),z=`headlessui-dialog-${Y()}`,j=i.ref(null),q={titleId:j,panelRef:i.ref(null),dialogState:g,setTitleId(w){j.value!==w&&(j.value=w)},close(){t("close",!1)}};return i.provide(tt,q),ai(()=>{var w,b,_;return[...Array.from((b=(w=m.value)==null?void 0:w.querySelectorAll("body > *, [data-headlessui-portal]"))!=null?b:[]).filter(v=>!(!(v instanceof HTMLElement)||v.contains(L(h))||q.panelRef.value&&v.contains(q.panelRef.value))),(_=q.panelRef.value)!=null?_:d.value]},(w,b)=>{q.close(),i.nextTick(()=>b==null?void 0:b.focus())},i.computed(()=>g.value===0&&!T.value)),tn((a=m.value)==null?void 0:a.defaultView,"keydown",w=>{w.defaultPrevented||w.key===Vt.Escape&&g.value===0&&(T.value||(w.preventDefault(),w.stopPropagation(),q.close()))}),i.watchEffect(w=>{var b;if(g.value!==0||C)return;let _=m.value;if(!_)return;let v=_==null?void 0:_.documentElement,E=(b=_.defaultView)!=null?b:window,Gn=v.style.overflow,Kn=v.style.paddingRight,ht=E.innerWidth-v.clientWidth;if(v.style.overflow="hidden",ht>0){let zn=v.clientWidth-v.offsetWidth,Wn=ht-zn;v.style.paddingRight=`${Wn}px`}w(()=>{v.style.overflow=Gn,v.style.paddingRight=Kn})}),i.watchEffect(w=>{if(g.value!==0)return;let b=L(d);if(!b)return;let _=new IntersectionObserver(v=>{for(let E of v)E.boundingClientRect.x===0&&E.boundingClientRect.y===0&&E.boundingClientRect.width===0&&E.boundingClientRect.height===0&&q.close()});_.observe(b),w(()=>_.disconnect())}),()=>{let w={...n,ref:d,id:z,role:"dialog","aria-modal":g.value===0?!0:void 0,"aria-labelledby":j.value,"aria-describedby":ee.value},{open:b,initialFocus:_,...v}=e,E={open:g.value===0};return i.h(Ze,{force:!0},()=>[i.h(ln,()=>i.h(hi,{target:d.value},()=>i.h(Ze,{force:!1},()=>i.h(ge,{initialFocus:_,containers:c,features:O.value?A(D.value,{parent:ge.features.RestoreFocus,leaf:ge.features.All&~ge.features.FocusLock}):ge.features.None},()=>$({ourProps:w,theirProps:v,slot:E,attrs:n,slots:r,visible:g.value===0,features:_e.RenderStrategy|_e.Static,name:"Dialog"}))))),i.h(Ve,{features:Oe.Hidden,ref:h})])}}});i.defineComponent({name:"DialogOverlay",props:{as:{type:[Object,String],default:"div"}},setup(e,{attrs:t,slots:n}){let r=ye("DialogOverlay"),o=`headlessui-dialog-overlay-${Y()}`;function a(s){s.target===s.currentTarget&&(s.preventDefault(),s.stopPropagation(),r.close())}return()=>$({ourProps:{id:o,"aria-hidden":!0,onClick:a},theirProps:e,slot:{open:r.dialogState.value===0},attrs:t,slots:n,name:"DialogOverlay"})}}),i.defineComponent({name:"DialogBackdrop",props:{as:{type:[Object,String],default:"div"}},inheritAttrs:!1,setup(e,{attrs:t,slots:n,expose:r}){let o=ye("DialogBackdrop"),a=`headlessui-dialog-backdrop-${Y()}`,s=i.ref(null);return r({el:s,$el:s}),i.onMounted(()=>{if(o.panelRef.value===null)throw new Error("A component is being used, but a component is missing.")}),()=>{let u=e,l={id:a,ref:s,"aria-hidden":!0};return i.h(Ze,{force:!0},()=>i.h(ln,()=>$({ourProps:l,theirProps:{...t,...u},slot:{open:o.dialogState.value===0},attrs:t,slots:n,name:"DialogBackdrop"})))}}});let pn=i.defineComponent({name:"DialogPanel",props:{as:{type:[Object,String],default:"div"}},setup(e,{attrs:t,slots:n,expose:r}){let o=ye("DialogPanel"),a=`headlessui-dialog-panel-${Y()}`;r({el:o.panelRef,$el:o.panelRef});function s(u){u.stopPropagation()}return()=>{let u={id:a,ref:o.panelRef,onClick:s};return $({ourProps:u,theirProps:e,slot:{open:o.dialogState.value===0},attrs:t,slots:n,name:"DialogPanel"})}}});i.defineComponent({name:"DialogTitle",props:{as:{type:[Object,String],default:"h2"}},setup(e,{attrs:t,slots:n}){let r=ye("DialogTitle"),o=`headlessui-dialog-title-${Y()}`;return i.onMounted(()=>{r.setTitleId(o),i.onUnmounted(()=>r.setTitleId(null))}),()=>$({ourProps:{id:o},theirProps:e,slot:{open:r.dialogState.value===0},attrs:t,slots:n,name:"DialogTitle"})}});function Si(e){let t={called:!1};return(...n)=>{if(!t.called)return t.called=!0,e(...n)}}function hn(){let e=[],t=[],n={enqueue(r){t.push(r)},requestAnimationFrame(...r){let o=requestAnimationFrame(...r);n.add(()=>cancelAnimationFrame(o))},nextFrame(...r){n.requestAnimationFrame(()=>{n.requestAnimationFrame(...r)})},setTimeout(...r){let o=setTimeout(...r);n.add(()=>clearTimeout(o))},add(r){e.push(r)},dispose(){for(let r of e.splice(0))r()},async workQueue(){for(let r of t.splice(0))await r()}};return n}function nt(e,...t){e&&t.length>0&&e.classList.add(...t)}function $e(e,...t){e&&t.length>0&&e.classList.remove(...t)}var rt=(e=>(e.Finished="finished",e.Cancelled="cancelled",e))(rt||{});function _i(e,t){let n=hn();if(!e)return n.dispose;let{transitionDuration:r,transitionDelay:o}=getComputedStyle(e),[a,s]=[r,o].map(u=>{let[l=0]=u.split(",").filter(Boolean).map(f=>f.includes("ms")?parseFloat(f):parseFloat(f)*1e3).sort((f,c)=>c-f);return l});return a!==0?n.setTimeout(()=>t("finished"),a+s):t("finished"),n.add(()=>t("cancelled")),n.dispose}function mn(e,t,n,r,o,a){let s=hn(),u=a!==void 0?Si(a):()=>{};return $e(e,...o),nt(e,...t,...n),s.nextFrame(()=>{$e(e,...n),nt(e,...r),s.add(_i(e,l=>($e(e,...r,...t),nt(e,...o),u(l))))}),s.add(()=>$e(e,...t,...n,...r,...o)),s.add(()=>u("cancelled")),s.dispose}function Q(e=""){return e.split(" ").filter(t=>t.trim().length>1)}let ot=Symbol("TransitionContext");var Oi=(e=>(e.Visible="visible",e.Hidden="hidden",e))(Oi||{});function Ti(){return i.inject(ot,null)!==null}function $i(){let e=i.inject(ot,null);if(e===null)throw new Error("A is used but it is missing a parent .");return e}function Ei(){let e=i.inject(at,null);if(e===null)throw new Error("A is used but it is missing a parent .");return e}let at=Symbol("NestingContext");function Ee(e){return"children"in e?Ee(e.children):e.value.filter(({state:t})=>t==="visible").length>0}function gn(e){let t=i.ref([]),n=i.ref(!1);i.onMounted(()=>n.value=!0),i.onUnmounted(()=>n.value=!1);function r(a,s=G.Hidden){let u=t.value.findIndex(({id:l})=>l===a);u!==-1&&(A(s,{[G.Unmount](){t.value.splice(u,1)},[G.Hidden](){t.value[u].state="hidden"}}),!Ee(t)&&n.value&&(e==null||e()))}function o(a){let s=t.value.find(({id:u})=>u===a);return s?s.state!=="visible"&&(s.state="visible"):t.value.push({id:a,state:"visible"}),()=>r(a,G.Unmount)}return{children:t,register:o,unregister:r}}let yn=_e.RenderStrategy,ve=i.defineComponent({props:{as:{type:[Object,String],default:"div"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:""},enterFrom:{type:[String],default:""},enterTo:{type:[String],default:""},entered:{type:[String],default:""},leave:{type:[String],default:""},leaveFrom:{type:[String],default:""},leaveTo:{type:[String],default:""}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:n,slots:r,expose:o}){if(!Ti()&&Va())return()=>i.h(be,{...e,onBeforeEnter:()=>t("beforeEnter"),onAfterEnter:()=>t("afterEnter"),onBeforeLeave:()=>t("beforeLeave"),onAfterLeave:()=>t("afterLeave")},r);let a=i.ref(null),s=i.ref("visible"),u=i.computed(()=>e.unmount?G.Unmount:G.Hidden);o({el:a,$el:a});let{show:l,appear:f}=$i(),{register:c,unregister:d}=Ei(),h={value:!0},m=Y(),g={value:!1},O=gn(()=>{g.value||(s.value="hidden",d(m),t("afterLeave"))});i.onMounted(()=>{let b=c(m);i.onUnmounted(b)}),i.watchEffect(()=>{if(u.value===G.Hidden&&!!m){if(l&&s.value!=="visible"){s.value="visible";return}A(s.value,{hidden:()=>d(m),visible:()=>c(m)})}});let T=Q(e.enter),C=Q(e.enterFrom),D=Q(e.enterTo),ee=Q(e.entered),z=Q(e.leave),j=Q(e.leaveFrom),q=Q(e.leaveTo);i.onMounted(()=>{i.watchEffect(()=>{if(s.value==="visible"){let b=L(a);if(b instanceof Comment&&b.data==="")throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")}})});function w(b){let _=h.value&&!f.value,v=L(a);!v||!(v instanceof HTMLElement)||_||(g.value=!0,l.value&&t("beforeEnter"),l.value||t("beforeLeave"),b(l.value?mn(v,T,C,D,ee,E=>{g.value=!1,E===rt.Finished&&t("afterEnter")}):mn(v,z,j,q,ee,E=>{g.value=!1,E===rt.Finished&&(Ee(O)||(s.value="hidden",d(m),t("afterLeave")))})))}return i.onMounted(()=>{i.watch([l],(b,_,v)=>{w(v),h.value=!1},{immediate:!0})}),i.provide(at,O),Qa(i.computed(()=>A(s.value,{visible:V.Open,hidden:V.Closed}))),()=>{let{appear:b,show:_,enter:v,enterFrom:E,enterTo:Gn,entered:Kn,leave:ht,leaveFrom:zn,leaveTo:Wn,...pl}=e;return $({theirProps:pl,ourProps:{ref:a},slot:{},slots:r,attrs:n,features:yn,visible:s.value==="visible",name:"TransitionChild"})}}}),Pi=ve,be=i.defineComponent({inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:""},enterFrom:{type:[String],default:""},enterTo:{type:[String],default:""},entered:{type:[String],default:""},leave:{type:[String],default:""},leaveFrom:{type:[String],default:""},leaveTo:{type:[String],default:""}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:n,slots:r}){let o=We(),a=i.computed(()=>e.show===null&&o!==null?A(o.value,{[V.Open]:!0,[V.Closed]:!1}):e.show);i.watchEffect(()=>{if(![!0,!1].includes(a.value))throw new Error('A is used but it is missing a `:show="true | false"` prop.')});let s=i.ref(a.value?"visible":"hidden"),u=gn(()=>{s.value="hidden"}),l=i.ref(!0),f={show:a,appear:i.computed(()=>e.appear||!l.value)};return i.onMounted(()=>{i.watchEffect(()=>{l.value=!1,a.value?s.value="visible":Ee(u)||(s.value="hidden")})}),i.provide(at,u),i.provide(ot,f),()=>{let c=Yt(e,["show","appear","unmount","onBeforeEnter","onBeforeLeave","onAfterEnter","onAfterLeave"]),d={unmount:e.unmount};return $({ourProps:{...d,as:"template"},theirProps:{},slot:{},slots:{...r,default:()=>[i.h(Pi,{onBeforeEnter:()=>t("beforeEnter"),onAfterEnter:()=>t("afterEnter"),onBeforeLeave:()=>t("beforeLeave"),onAfterLeave:()=>t("afterLeave"),...n,...d,...c},r.default)]},attrs:{},features:yn,visible:s.value==="visible",name:"Transition"})}}});const Ai={props:{defaultTitle:{type:String,required:!1,default:""},defaultText:{type:String,required:!1,default:""},defaultConfirmButton:{type:String,required:!1,default:""},defaultCancelButton:{type:String,required:!1,default:""}},data(){return{isOpen:!1}},computed:{hasConfirmModal:()=>!!p.confirmModal.value,title:function(){var e;return(e=p.confirmModal.value)!=null&&e.title?p.confirmModal.value.title:this.defaultTitle},text:function(){var e;return(e=p.confirmModal.value)!=null&&e.text?p.confirmModal.value.text:this.defaultText},confirmButton:function(){var e;return(e=p.confirmModal.value)!=null&&e.confirmButton?p.confirmModal.value.confirmButton:this.defaultConfirmButton},cancelButton:function(){var e;return(e=p.confirmModal.value)!=null&&e.cancelButton?p.confirmModal.value.cancelButton:this.defaultCancelButton}},watch:{hasConfirmModal(e){e&&(this.isOpen=!0)}},methods:{cancel(){p.confirmModal.value.rejectPromise(),this.setIsOpen(!1)},confirm(){p.confirmModal.value.resolvePromise(),this.setIsOpen(!1)},setIsOpen(e){this.isOpen=e},emitClose(){p.clearConfirmModal()}},render(){return this.$slots.default({title:this.title,text:this.text,confirmButton:this.confirmButton,cancelButton:this.cancelButton,isOpen:this.isOpen,setIsOpen:this.setIsOpen,cancel:this.cancel,confirm:this.confirm,emitClose:this.emitClose,Dialog:dn,DialogPanel:pn,TransitionRoot:be,TransitionChild:ve})}};function vn(e,t){t=Ke(t,e);for(var n=0,r=t.length;e!=null&&n({}),required:!1},remember:{type:String,default:null,required:!1},localStorage:{type:Boolean,default:!1,required:!1}},data(){return{values:{}}},mounted(){if(this.remember){let e=p.restore(this.remember,this.localStorage);e||(e={}),this.values=Object.assign({},{...this.default,...e})}else this.values=Object.assign({},{...this.default})},updated(){this.remember&&p.remember(this.remember,{...this.values},this.localStorage)},render(){const e=this;return this.$slots.default(new Proxy(this.values,{ownKeys(){return Object.keys(e.values)},get(t,n){return it(e.values,n)},set(t,n,r){Sn(e.values,n,r)}}))}},Mi={props:{url:{type:String,required:!0},method:{type:String,required:!1,default:"GET"},acceptHeader:{type:String,required:!1,default:"application/json"},poll:{type:Number,required:!1,default:null},default:{type:Object,required:!1,default:()=>({})},request:{type:Object,required:!1,default:()=>({})}},data(){return{response:Object.assign({},{...this.default}),processing:!1}},mounted(){this.$nextTick(this.performRequest)},methods:{performRequest(){this.processing=!0;const e={url:this.url,method:this.method,headers:{Accept:this.acceptHeader}};Object.keys(this.request).length>0&&(e.data=this.request),mt.default(e).then(t=>{this.response=t.data,this.processing=!1}).catch(()=>{this.processing=!1}),this.poll&&setTimeout(()=>{this.performRequest()},this.poll)}},render(){return this.$slots.default({processing:this.processing,response:this.response,reload:this.performRequest})}};function _n(e){return e&&e.length?e[0]:void 0}const Ri={inject:["stack"],computed:{values(){return p.validationErrors(this.stack)}},render(){const e=this;return this.$slots.default({has(t){return F(e.values,t)},first(t){return _n(e.values[t]||[])},all:{...this.values},...this.values})}};function Li(e,t){return e&&Be(e,Ft(t))}const Ii={props:{private:{type:Boolean,required:!1,default:!1},channel:{type:String,required:!0},listeners:{type:Array,required:!0}},data(){return{subscribed:!1,subscription:null,subscriptions:[],events:[]}},beforeUnmount(){this.subscription&&(window.Echo.leave(this.subscription.subscription.name),this.subscription=null,this.subscriptions=[])},mounted(){this.subscription=this.private?window.Echo.private(this.channel):window.Echo.channel(this.channel),this.subscription.on("pusher:subscription_succeeded",()=>{this.subscribed=!0}),this.listeners.forEach(e=>{const t=this.subscription.listen(e,n=>{const r="splade.redirect",o="splade.refresh",a="splade.toast";let s=null,u=!1,l=[];Li(n,f=>{!te(f)||(r in f&&(s=f[r]),o in f&&(u=f[o]),a in f&&l.push(f))}),s?p.visit(s):u?p.refresh():this.events.push({name:e,data:n}),l.length>0&&l.forEach(f=>{p.pushToast(f)}),this.$root.$emit(`event.${e}`,n)});this.subscriptions.push(t)})},render(){return this.$slots.default({subscribed:this.subscribed,events:this.events})}},qi={inject:["stack"],computed:{values(){return p.flashData(this.stack)}},render(){const e=this;return this.$slots.default({has(t){return F(e.values,t)},...this.values})}};function st(e){return e instanceof File||e instanceof Blob||e instanceof FileList&&e.length>0||e instanceof FormData&&Array.from(e.values()).some(t=>st(t))||typeof e=="object"&&e!==null&&Object.values(e).some(t=>st(t))}function On(e){e=e||{};let t=new FormData;for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&$n(t,Tn(null,n),e[n]);return t}function Tn(e,t){return e?e+"["+t+"]":t}function $n(e,t,n){if(Array.isArray(n))return Array.from(n.keys()).forEach(r=>$n(e,Tn(t,r.toString()),n[r]));if(n instanceof Date)return e.append(t,n.toISOString());if(n instanceof File)return e.append(t,n,n.name);if(n instanceof Blob)return e.append(t,n);if(typeof n=="boolean")return e.append(t,n?"1":"0");if(typeof n=="string")return e.append(t,n);if(typeof n=="number")return e.append(t,`${n}`);if(n==null)return e.append(t,"");On(n)}var Ni="[object Boolean]";function En(e){return e===!0||e===!1||H(e)&&k(e)==Ni}function ki(){this.__data__=new M,this.size=0}function Hi(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function Ui(e){return this.__data__.get(e)}function Gi(e){return this.__data__.has(e)}var Ki=200;function zi(e,t){var n=this.__data__;if(n instanceof M){var r=n.__data__;if(!de||r.lengthu))return!1;var f=a.get(e),c=a.get(t);if(f&&c)return f==t&&c==e;var d=-1,h=!0,m=n&Zi?new Pe:void 0;for(a.set(e,t),a.set(t,e);++d({})},forceFormData:{type:Boolean,required:!1,default:!1},confirm:{type:[Boolean,String],required:!1,default:!1},confirmText:{type:String,required:!1,default:""},confirmButton:{type:String,required:!1,default:""},cancelButton:{type:String,required:!1,default:""},restoreOnSuccess:{type:Boolean,required:!1,default:!0},resetOnSuccess:{type:Boolean,required:!1,default:!1}},emits:["success","error"],data(){return{values:Object.assign({},{...this.default}),processing:!1,wasSuccessful:!1,recentlySuccessful:!1,recentlySuccessfulTimeoutId:null}},computed:{rawErrors(){return p.validationErrors(this.stack)},errors(){return Un(this.rawErrors,e=>e.join(` +`))}},methods:{hasError(e){return F(this.errors,e)},reset(){this.values={}},restore(){this.values=Object.assign({},{...this.default})},submit(){if(!this.confirm)return this.request();p.confirm(En(this.confirm)?"":this.confirm,this.confirmText,this.confirmButton,this.cancelButton).then(()=>{this.request()}).catch(()=>{})},request(){this.processing=!0,this.wasSuccessful=!1,this.recentlySuccessful=!1,clearTimeout(this.recentlySuccessfulTimeoutId);const e=this.forceFormData||st(this.values)?On(this.values):this.values;p.request(this.action,this.method.toUpperCase(),e,{Accept:"application/json"}).then(t=>{this.$emit("success",t),this.restoreOnSuccess&&this.restore(),this.resetOnSuccess&&this.reset(),this.processing=!1,this.wasSuccessful=!0,this.recentlySuccessful=!0,this.recentlySuccessfulTimeoutId=setTimeout(()=>this.recentlySuccessful=!1,2e3)}).catch(t=>{this.processing=!1,this.$emit("error",t)})}},render(){const e=this;return this.$slots.default(new Proxy({},{ownKeys(){return Object.keys(e.values)},get(t,n){return["errors","restore","reset","hasError","processing","rawErrors","submit","wasSuccessful","recentlySuccessful"].includes(n)?e[n]:it(e.values,n)},set(t,n,r){Sn(e.values,n,r)}}))}},rl=["href","onClick"],ol={__name:"Link",props:{href:{type:String,required:!0},confirm:{type:[Boolean,String],required:!1,default:!1},confirmText:{type:String,required:!1,default:""},confirmButton:{type:String,required:!1,default:""},cancelButton:{type:String,required:!1,default:""},modal:{type:Boolean,required:!1,default:!1},slideover:{type:Boolean,required:!1,default:!1}},setup(e){const t=e;function n(){if(!t.confirm)return r();p.confirm(En(t.confirm)?"":t.confirm,t.confirmText,t.confirmButton,t.cancelButton).then(()=>{r()}).catch(()=>{})}function r(){if(t.modal)return p.modal(t.href);if(t.slideover)return p.slideover(t.href);p.visit(t.href)}return(o,a)=>(i.openBlock(),i.createElementBlock("a",{href:e.href,onClick:i.withModifiers(n,["prevent"])},[i.renderSlot(o.$slots,"default")],8,rl))}},al={provide(){return{stack:this.stack}},props:{type:{type:String,required:!0},stack:{type:Number,required:!0},onTopOfStack:{type:Boolean,required:!0},maxWidth:{type:String,required:!1,default:e=>e.type==="modal"?"2xl":"md"}},emits:["close"],data(){return{isOpen:!1}},mounted(){this.setIsOpen(!0)},methods:{emitClose(){this.$emit("close")},close(){this.setIsOpen(!1)},setIsOpen(e){this.isOpen=e}},render(){return this.$slots.default({type:this.type,isOpen:this.isOpen,setIsOpen:this.setIsOpen,close:this.close,stack:this.stack,onTopOfStack:this.onTopOfStack,maxWidth:this.maxWidth,emitClose:this.emitClose,Dialog:dn,DialogPanel:pn,TransitionRoot:be,TransitionChild:ve})}},il={inject:["stack"],render(){const e=p.validationErrors(this.stack),t=p.flashData(this.stack),n=p.sharedData.value,r=Un(e,o=>o.join(` +`));return this.$slots.default({flash:t,errors:r,rawErrors:e,shared:n,hasError(o){return F(e,o)},hasFlash(o){return F(t,o)},hasShared(o){return F(n,o)},hasErrors:Object.keys(e).length>0})}},sl={props:{toastKey:{type:Number,required:!0},autoDismiss:{type:Number,required:!1,default:0}},emits:["dismiss"],data(){return{show:!0}},mounted(){this.autoDismiss&&setTimeout(()=>{this.setShow(!1)},this.autoDismiss*1e3)},methods:{setShow(e){this.show=e},emitDismiss(){this.$emit("dismiss")}},render(){return this.$slots.default({key:this.toastKey,show:this.show,setShow:this.setShow,emitDismiss:this.emitDismiss,TransitionRoot:be,TransitionChild:ve})}},ll=["left-top","center-top","right-top","left-center","center-center","right-center","left-bottom","center-bottom","right-bottom"],ul={computed:{toasts:function(){return p.toastsReversed.value},hasBackdrop:function(){return p.toasts.value.filter(e=>!e.dismissed&&e.backdrop&&e.html).length>0}},methods:{dismissToast(e){p.dismissToast(e)}},render(){return this.$slots.default({positions:ll,toasts:this.toasts,dismissToast:this.dismissToast,hasBackdrop:this.hasBackdrop,Render:fe,TransitionRoot:be,TransitionChild:ve})}},fl={props:{default:{type:Object,required:!0}},data(){return{toggles:{...this.default}}},methods:{toggled(e){var t;return(t=this.toggles[e])!=null?t:!1},toggle(e){this.setToggle(e,!this.toggled(e))},setToggle(e,t){this.toggles[e]=t}},render(){const e=this;return this.$slots.default(new Proxy({},{ownKeys(){return Object.keys(e.toggles)},get(t,n){const r=Object.keys(e.toggles);if(r.length===1&&_n(r)==="default"){if(n==="toggled")return e.toggled("default");if(n==="setToggle")return o=>{e.setToggle("default",o)};if(n==="toggle")return()=>{e.toggle("default")}}return n==="setToggle"?(o,a)=>{e.setToggle(o,a)}:n==="toggle"?o=>{e.toggle(o)}:e.toggled(n)}}))}},cl={install:(e,t)=>{t=t||{},t.max_keep_alive=F(t,"max_keep_alive")?t.max_keep_alive:10,t.prefix=F(t,"prefix")?t.prefix:"Splade",t.transform_anchors=F(t,"transform_anchors")?t.transform_anchors:!1,t.link_component=F(t,"link_component")?t.link_component:"Link";const n=t.prefix;e.component(`${n}Confirm`,Ai).component(`${n}Data`,Bi).component(`${n}Defer`,Mi).component(`${n}Errors`,Ri).component(`${n}Event`,Ii).component(`${n}Flash`,qi).component(`${n}Form`,nl).component(`${n}Modal`,al).component(`${n}Render`,fe).component(`${n}State`,il).component(`${n}Toast`,sl).component(`${n}Toasts`,ul).component(`${n}Toggle`,fl).component(t.link_component,ol),Object.defineProperty(e.config.globalProperties,"$splade",{get:()=>p}),Object.defineProperty(e.config.globalProperties,"$spladeOptions",{get:()=>Object.assign({},{...t})}),e.provide("$splade",e.config.globalProperties.$splade),e.provide("$spladeOptions",e.config.globalProperties.$spladeOptions)}};function dl(e,t,n){const r={};process.argv.slice(2).forEach(a=>{const s=a.replace(/^-+/,"").split("=");r[s[0]]=s.length===2?s[1]:!0});const o=r.port||9e3;e(async(a,s)=>{if(a.method=="POST"){let u="";a.on("data",l=>u+=l),a.on("end",async()=>{const l=JSON.parse(u),f=n({components:l.components,initialHtml:l.html,initialSpladeData:l.splade}),c=await t(f);s.writeHead(200,{"Content-Type":"application/json",Server:"Splade SSR"}),s.write(JSON.stringify({body:c})),s.end()})}}).listen(o,()=>console.log(`Splade SSR server started on port ${o}.`))}S.Splade=p,S.SpladeApp=Ut,S.SpladePlugin=cl,S.renderSpladeApp=Go,S.startServer=dl,Object.defineProperties(S,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}); diff --git a/lib/Components/Confirm.vue b/lib/Components/Confirm.vue index 2f058ece..817cfd13 100644 --- a/lib/Components/Confirm.vue +++ b/lib/Components/Confirm.vue @@ -40,30 +40,30 @@ export default { computed: { hasConfirmModal: () => { - return Splade.confirmModal ? true : false; + return Splade.confirmModal.value ? true : false; }, title: function () { - return Splade.confirmModal?.title - ? Splade.confirmModal.title + return Splade.confirmModal.value?.title + ? Splade.confirmModal.value.title : this.defaultTitle; }, text: function () { - return Splade.confirmModal?.text - ? Splade.confirmModal.text + return Splade.confirmModal.value?.text + ? Splade.confirmModal.value.text : this.defaultText; }, confirmButton: function () { - return Splade.confirmModal?.confirmButton - ? Splade.confirmModal.confirmButton + return Splade.confirmModal.value?.confirmButton + ? Splade.confirmModal.value.confirmButton : this.defaultConfirmButton; }, cancelButton: function () { - return Splade.confirmModal?.cancelButton - ? Splade.confirmModal.cancelButton + return Splade.confirmModal.value?.cancelButton + ? Splade.confirmModal.value.cancelButton : this.defaultCancelButton; }, }, @@ -78,12 +78,12 @@ export default { methods: { cancel() { - Splade.confirmModal.rejectPromise(); + Splade.confirmModal.value.rejectPromise(); this.setIsOpen(false); }, confirm() { - Splade.confirmModal.resolvePromise(); + Splade.confirmModal.value.resolvePromise(); this.setIsOpen(false); }, diff --git a/lib/Components/Data.vue b/lib/Components/Data.vue index 0c6db19b..77b607ee 100644 --- a/lib/Components/Data.vue +++ b/lib/Components/Data.vue @@ -58,7 +58,7 @@ export default { return this.$slots.default( new Proxy(this.values, { ownKeys() { - return Object.keys(self.values) + return Object.keys(self.values); }, get(target, name) { return get(self.values, name); diff --git a/lib/Components/Errors.vue b/lib/Components/Errors.vue index e41bf4ae..5a2b1d1d 100644 --- a/lib/Components/Errors.vue +++ b/lib/Components/Errors.vue @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/lib/SpladeCore.vue b/lib/SpladeCore.vue deleted file mode 100644 index 12092ed3..00000000 --- a/lib/SpladeCore.vue +++ /dev/null @@ -1,323 +0,0 @@ - \ No newline at end of file diff --git a/lib/SpladePlugin.js b/lib/SpladePlugin.js index 44bb5a41..f17c35bd 100644 --- a/lib/SpladePlugin.js +++ b/lib/SpladePlugin.js @@ -1,4 +1,4 @@ -import has from "lodash-es/has" +import has from "lodash-es/has"; import Confirm from "./Components/Confirm.vue"; import Data from "./Components/Data.vue"; import Defer from "./Components/Defer.vue"; @@ -13,7 +13,7 @@ import State from "./Components/State.vue"; import Toast from "./Components/Toast.vue"; import Toasts from "./Components/Toasts.vue"; import Toggle from "./Components/Toggle.vue"; -import { Splade } from "./Splade.js" +import { Splade } from "./Splade.js"; export default { install: (app, options) => { @@ -39,12 +39,12 @@ export default { .component(`${prefix}Toast`, Toast) .component(`${prefix}Toasts`, Toasts) .component(`${prefix}Toggle`, Toggle) - .component(options.link_component, Link) + .component(options.link_component, Link); - Object.defineProperty(app.config.globalProperties, "$splade", { get: () => Splade }) - Object.defineProperty(app.config.globalProperties, "$spladeOptions", { get: () => Object.assign({}, { ...options }) }) + Object.defineProperty(app.config.globalProperties, "$splade", { get: () => Splade }); + Object.defineProperty(app.config.globalProperties, "$spladeOptions", { get: () => Object.assign({}, { ...options }) }); app.provide("$splade", app.config.globalProperties.$splade); app.provide("$spladeOptions", app.config.globalProperties.$spladeOptions); } -} \ No newline at end of file +}; \ No newline at end of file diff --git a/lib/main.js b/lib/main.js index b584be04..a752d932 100644 --- a/lib/main.js +++ b/lib/main.js @@ -1,5 +1,7 @@ import { Splade } from "./Splade.js"; -import renderSpladeApp from "./renderSpladeApp.js" -import SpladePlugin from "./SpladePlugin.js" +import renderSpladeApp from "./renderSpladeApp.js"; +import SpladePlugin from "./SpladePlugin.js"; +import SpladeApp from "./SpladeApp.vue"; +import { startServer } from "./server.js"; -export { Splade, renderSpladeApp, SpladePlugin } \ No newline at end of file +export { Splade, SpladeApp, renderSpladeApp, SpladePlugin, startServer }; \ No newline at end of file diff --git a/lib/renderSpladeApp.js b/lib/renderSpladeApp.js index a7135f49..8ef2b456 100644 --- a/lib/renderSpladeApp.js +++ b/lib/renderSpladeApp.js @@ -1,8 +1,8 @@ -import { h } from "vue" -import SpladeApp from "./SpladeApp.vue" +import { h } from "vue"; +import SpladeApp from "./SpladeApp.vue"; export default function render(props) { return () => { - return h(SpladeApp, props) + return h(SpladeApp, props); }; } \ No newline at end of file diff --git a/lib/server.js b/lib/server.js new file mode 100644 index 00000000..63be8c22 --- /dev/null +++ b/lib/server.js @@ -0,0 +1,35 @@ +function startServer(createServer, renderToString, createApp) { + const args = {}; + + process.argv.slice(2).forEach((argument) => { + const splitted = argument.replace(/^-+/, "").split("="); + + args[splitted[0]] = (splitted.length === 2) ? splitted[1] : true; + }); + + const port = args.port || 9000; + + createServer(async (request, response) => { + if (request.method == "POST") { + let data = ""; + request.on("data", (chunk) => (data += chunk)); + request.on("end", async () => { + const json = JSON.parse(data); + + const app = createApp({ + components: json.components, + initialHtml: json.html, + initialSpladeData: json.splade + }); + + const body = await renderToString(app); + + response.writeHead(200, { "Content-Type": "application/json", "Server": "Splade SSR" }); + response.write(JSON.stringify({ body })); + response.end(); + }); + } + }).listen(port, () => console.log(`Splade SSR server started on port ${port}.`)); +} + +export { startServer }; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4e577b07..05dda463 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13 +1,16 @@ { "name": "@protonemedia/laravel-splade", - "version": "0.1.1", + "version": "0.1.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@protonemedia/laravel-splade", - "version": "0.1.1", + "version": "0.1.2", "license": "MIT", + "dependencies": { + "jsdom": "^20.0.0" + }, "devDependencies": { "@vitejs/plugin-vue": "^3.0.0", "eslint": "^8.20.0", @@ -85,6 +88,14 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "engines": { + "node": ">= 10" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.0.1.tgz", @@ -210,11 +221,35 @@ "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==", "peer": true }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, "node_modules/acorn": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "bin": { "acorn": "bin/acorn" }, @@ -231,6 +266,25 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -280,8 +334,7 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "peer": true + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { "version": "0.27.2", @@ -315,6 +368,11 @@ "concat-map": "0.0.1" } }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -362,7 +420,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "peer": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -402,17 +459,50 @@ "node": ">=4" } }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, "node_modules/csstype": { "version": "2.6.20", "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==", "peer": true }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -425,17 +515,20 @@ } } }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "peer": true, "engines": { "node": ">=0.4.0" } @@ -452,6 +545,28 @@ "node": ">=6.0.0" } }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/entities": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", + "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/esbuild": { "version": "0.14.49", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", @@ -819,6 +934,74 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/eslint": { "version": "8.20.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", @@ -955,6 +1138,18 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", @@ -983,7 +1178,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -998,7 +1192,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1018,8 +1211,7 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/file-entry-cache": { "version": "6.0.1", @@ -1076,7 +1268,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "peer": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -1186,6 +1377,53 @@ "node": ">=8" } }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -1269,6 +1507,11 @@ "node": ">=0.10.0" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1287,6 +1530,51 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsdom": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.0.tgz", + "integrity": "sha512-x4a6CKCgx00uCmP+QakBDFXwjAJ69IkkIWHmtmjd3wvXPcdOS44hfX2vqkOQrVrq8l9DhNNADZRXaCEWvgXtVA==", + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.7.1", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "^7.0.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.8.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -1355,7 +1643,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "peer": true, "engines": { "node": ">= 0.6" } @@ -1364,7 +1651,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -1387,8 +1673,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanoid": { "version": "3.3.4", @@ -1419,6 +1704,11 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/nwsapi": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==" + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1457,6 +1747,17 @@ "node": ">=6" } }, + "node_modules/parse5": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", + "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", + "dependencies": { + "entities": "^4.3.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1531,11 +1832,15 @@ "node": ">= 0.8.0" } }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, "engines": { "node": ">=6" } @@ -1608,6 +1913,22 @@ "fsevents": "~2.3.2" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -1648,7 +1969,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -1715,12 +2035,41 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -1745,6 +2094,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -1844,6 +2201,64 @@ "eslint": ">=6.0.0" } }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -1863,7 +2278,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1874,15 +2288,39 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/ws": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, "engines": { "node": ">=12" } }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -1938,6 +2376,11 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" + }, "@vitejs/plugin-vue": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.0.1.tgz", @@ -2054,11 +2497,31 @@ "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==", "peer": true }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, "acorn": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } + } }, "acorn-jsx": { "version": "5.3.2", @@ -2067,6 +2530,19 @@ "dev": true, "requires": {} }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -2103,8 +2579,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "peer": true + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "axios": { "version": "0.27.2", @@ -2138,6 +2613,11 @@ "concat-map": "0.0.1" } }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -2173,7 +2653,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "peer": true, "requires": { "delayed-stream": "~1.0.0" } @@ -2201,32 +2680,64 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, + "cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + } + } + }, "csstype": { "version": "2.6.20", "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==", "peer": true }, + "data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "requires": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + } + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "peer": true + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, "doctrine": { "version": "3.0.0", @@ -2237,6 +2748,19 @@ "esutils": "^2.0.2" } }, + "domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "requires": { + "webidl-conversions": "^7.0.0" + } + }, + "entities": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", + "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==" + }, "esbuild": { "version": "0.14.49", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", @@ -2411,6 +2935,55 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, "eslint": { "version": "8.20.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", @@ -2513,6 +3086,11 @@ "eslint-visitor-keys": "^3.3.0" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, "esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", @@ -2534,8 +3112,7 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, "estree-walker": { "version": "2.0.2", @@ -2546,8 +3123,7 @@ "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "fast-deep-equal": { "version": "3.1.3", @@ -2564,8 +3140,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "file-entry-cache": { "version": "6.0.1", @@ -2602,7 +3177,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "peer": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -2681,6 +3255,41 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -2743,6 +3352,11 @@ "is-extglob": "^2.1.1" } }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2758,6 +3372,40 @@ "argparse": "^2.0.1" } }, + "jsdom": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.0.tgz", + "integrity": "sha512-x4a6CKCgx00uCmP+QakBDFXwjAJ69IkkIWHmtmjd3wvXPcdOS44hfX2vqkOQrVrq8l9DhNNADZRXaCEWvgXtVA==", + "requires": { + "abab": "^2.0.6", + "acorn": "^8.7.1", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "^7.0.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.8.0", + "xml-name-validator": "^4.0.0" + } + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2819,14 +3467,12 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "peer": true + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "peer": true, "requires": { "mime-db": "1.52.0" } @@ -2843,8 +3489,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "nanoid": { "version": "3.3.4", @@ -2866,6 +3511,11 @@ "boolbase": "^1.0.0" } }, + "nwsapi": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2898,6 +3548,14 @@ "callsites": "^3.0.0" } }, + "parse5": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", + "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", + "requires": { + "entities": "^4.3.0" + } + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2947,11 +3605,15 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "regexpp": { "version": "3.2.0", @@ -2994,6 +3656,19 @@ "fsevents": "~2.3.2" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "requires": { + "xmlchars": "^2.2.0" + } + }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -3021,8 +3696,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-js": { "version": "1.0.2", @@ -3065,12 +3739,35 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "requires": { + "punycode": "^2.1.1" + } + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -3086,6 +3783,11 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3148,6 +3850,49 @@ "semver": "^7.3.6" } }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "requires": { + "xml-name-validator": "^4.0.0" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "requires": { + "iconv-lite": "0.6.3" + } + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3160,8 +3905,7 @@ "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, "wrappy": { "version": "1.0.2", @@ -3169,11 +3913,21 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "ws": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "requires": {} + }, "xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "yallist": { "version": "4.0.0", diff --git a/package.json b/package.json index ddf32eb5..b9193466 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "@protonemedia/laravel-splade", "version": "0.1.2", "description": "Laravel Splade: the magic of Inertia.js with the simplicity of Blade.", + "private": false, "author": "Pascal Baljet ", "license": "MIT", "type": "module", @@ -19,7 +20,7 @@ "scripts": { "dev": "vite build --watch", "build": "vite build", - "eslint": "./node_modules/.bin/eslint lib/ --ext .js,.vue --fix" + "eslint": "./node_modules/.bin/eslint app/resources/js/ lib/ stubs/ --ext .js,.vue --fix" }, "peerDependencies": { "@headlessui/vue": "^1.6.7", @@ -28,9 +29,9 @@ }, "devDependencies": { "@vitejs/plugin-vue": "^3.0.0", - "lodash-es": "^4.17.21", - "vite": "^3.0.0", "eslint": "^8.20.0", - "eslint-plugin-vue": "^9.2.0" + "eslint-plugin-vue": "^9.2.0", + "lodash-es": "^4.17.21", + "vite": "^3.0.0" } } \ No newline at end of file diff --git a/src/Commands/SpladeInstallCommand.php b/src/Commands/SpladeInstallCommand.php index 3d443937..77dd8a16 100644 --- a/src/Commands/SpladeInstallCommand.php +++ b/src/Commands/SpladeInstallCommand.php @@ -34,6 +34,9 @@ public function handle(): int ] + $packages; }); + // Add SSR build step... + $this->updateNodeScript(); + // Tailwind Configuration... copy(__DIR__ . '/../../stubs/tailwind.config.js', base_path('tailwind.config.js')); copy(__DIR__ . '/../../stubs/postcss.config.js', base_path('postcss.config.js')); @@ -61,6 +64,7 @@ public function handle(): int copy(__DIR__ . '/../../stubs/resources/views/root.blade.php', resource_path('views/root.blade.php')); copy(__DIR__ . '/../../stubs/resources/css/app.css', resource_path('css/app.css')); copy(__DIR__ . '/../../stubs/resources/js/app.js', resource_path('js/app.js')); + copy(__DIR__ . '/../../stubs/resources/js/ssr.js', resource_path('js/ssr.js')); $this->comment('All done'); $this->comment('Please execute "npm install && npm run dev" to build your assets.'); @@ -121,6 +125,20 @@ protected function installRouteMiddleware() ); } + protected function updateNodeScript() + { + if (!file_exists(base_path('package.json'))) { + return; + } + + $packageFile = file_get_contents(base_path('package.json')); + + file_put_contents( + base_path('package.json'), + str_replace('"vite build"', '"vite build && vite build --ssr"', $packageFile) + ); + } + /** * Update the "package.json" file. * diff --git a/src/Commands/SsrTestCommand.php b/src/Commands/SsrTestCommand.php new file mode 100644 index 00000000..1e7fad7a --- /dev/null +++ b/src/Commands/SsrTestCommand.php @@ -0,0 +1,44 @@ +info('Testing SSR server: ' . config('splade.ssr.server')); + + $bladePrefix = config('splade.blade.component_prefix'); + + if ($bladePrefix) { + $bladePrefix .= '-'; + } + + $html = Blade::render("

Test

"); + + $result = (new Ssr)->render( + '', + $html, + (object) [] + ); + + if (Str::contains($result['body'] ?? '', '

Test

')) { + $this->info('OK'); + + return 0; + } + + $this->error('Wrong response.'); + + return 1; + } +} diff --git a/src/Http/BladeDirectives.php b/src/Http/BladeDirectives.php new file mode 100644 index 00000000..62313eb3 --- /dev/null +++ b/src/Http/BladeDirectives.php @@ -0,0 +1,24 @@ +'; + $template[] = '{!! $ssrBody !!}'; + $template[] = ''; + + return implode(PHP_EOL, $template); + } +} diff --git a/src/Http/SpladeMiddleware.php b/src/Http/SpladeMiddleware.php index 18f862ab..0895cc51 100644 --- a/src/Http/SpladeMiddleware.php +++ b/src/Http/SpladeMiddleware.php @@ -4,12 +4,14 @@ use Closure; use Illuminate\Contracts\Session\Session; +use Illuminate\Contracts\Support\Htmlable; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Blade; use Illuminate\Support\Str; use Illuminate\Validation\ValidationException; use ProtoneMedia\Splade\SpladeCore; +use ProtoneMedia\Splade\Ssr; use Symfony\Component\HttpFoundation\Response; class SpladeMiddleware @@ -18,7 +20,7 @@ class SpladeMiddleware const FORCE_REFRESH_NEXT_REQUEST = 'splade.forceRefreshNextRequst'; - public function __construct(private SpladeCore $splade) + public function __construct(private SpladeCore $splade, private Ssr $ssr) { } @@ -58,13 +60,13 @@ public function handle(Request $request, Closure $next) ); if ($response->exception instanceof ValidationException) { - $newData['splade']['errors'] = $response->original['errors']; + $newData['splade']->errors = $response->original['errors']; } return $response->setData($newData); } - $content = $response->content() ?: ''; + $content = $response->getContent() ?: ''; return $response->setContent(json_encode([ 'html' => $this->splade->isModalRequest() ? $this->parseModalContent($content) : $content, @@ -73,19 +75,35 @@ public function handle(Request $request, Closure $next) } if ($response->isSuccessful()) { - $bladePrefix = config('splade.blade.component_prefix'); + $html = $response->original instanceof Htmlable + ? ($response->original->toHtml() ?: '') + : ''; - if ($bladePrefix) { - $bladePrefix .= '-'; + $viewData = [ + 'components' => static::renderedComponents(), + 'html' => $html, + 'splade' => $spladeData, + 'ssrHead' => null, + 'ssrBody' => null, + ]; + + if (config('splade.ssr.enabled')) { + $data = $this->ssr->render( + $viewData['components'], + $viewData['html'], + $viewData['splade'], + ); + + $viewData['ssrBody'] = $data['body'] ?? null; } - $rendered = view('root', [ - 'components' => Blade::render(""), - 'html' => $response->original ?: '', - 'splade' => $spladeData, - ])->render(); + if (!$viewData['ssrBody'] && config('splade.ssr.blade_fallback')) { + $viewData['ssrBody'] = $html; + } - return $response->setContent($rendered); + return $response->setContent( + view($this->splade->getRootView(), $viewData)->render() + ); } return $response; @@ -102,7 +120,7 @@ private function parseModalContent(string $content): ?string ); } - private function spladeData(Session $session): array + private function spladeData(Session $session): object { $flashData = config('splade.share_session_flash_data') ? collect($session->get('_flash.old', [])) @@ -112,7 +130,7 @@ private function spladeData(Session $session): array ->mapWithKeys(fn ($key) => [$key => $session->get($key)]) ->toArray(); - return [ + return (object) [ 'modal' => $this->splade->isModalRequest() ? $this->splade->modalType() : null, 'refresh' => $this->splade->isRefreshRequest() || (bool) $session->pull(static::FORCE_REFRESH_NEXT_REQUEST), 'flash' => (object) $flash, @@ -122,7 +140,17 @@ private function spladeData(Session $session): array $session->pull(static::FLASH_TOASTS, []), $this->splade->getToasts(), ), - ]; } + + public static function renderedComponents(): string + { + $bladePrefix = config('splade.blade.component_prefix'); + + if ($bladePrefix) { + $bladePrefix .= '-'; + } + + return Blade::render(""); + } } diff --git a/src/ServiceProvider.php b/src/ServiceProvider.php index 5a4f2447..c36249a9 100644 --- a/src/ServiceProvider.php +++ b/src/ServiceProvider.php @@ -8,6 +8,8 @@ use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider as BaseServiceProvider; use ProtoneMedia\Splade\Commands\SpladeInstallCommand; +use ProtoneMedia\Splade\Commands\SsrTestCommand; +use ProtoneMedia\Splade\Http\BladeDirectives; class ServiceProvider extends BaseServiceProvider { @@ -26,7 +28,10 @@ public function boot() ], 'views'); } - $this->commands([SpladeInstallCommand::class]); + $this->commands([ + SpladeInstallCommand::class, + SsrTestCommand::class, + ]); $this->loadViewsFrom(__DIR__ . '/../resources/views', 'splade'); @@ -42,9 +47,7 @@ public function boot() return $app->make(SpladeCore::class)->toastBuilder(); }); - Blade::directive('splade', function () { - return '
'; - }); + (new BladeDirectives)->registerHandlers(); Route::get(config('splade.event_redirect_route'), function ($uuid) { $data = Cache::pull(EventRedirect::class . $uuid); diff --git a/src/SpladeCore.php b/src/SpladeCore.php index 3d6f8f3d..60790bc2 100755 --- a/src/SpladeCore.php +++ b/src/SpladeCore.php @@ -27,6 +27,20 @@ class SpladeCore private array $toasts = []; + private string $rootView = 'root'; + + public function getRootView(): string + { + return $this->rootView; + } + + public function setRootView(string $view): self + { + $this->rootView = $view; + + return $this; + } + public function reset(): self { $this->modalKey = null; diff --git a/src/Ssr.php b/src/Ssr.php new file mode 100644 index 00000000..d8fedb4a --- /dev/null +++ b/src/Ssr.php @@ -0,0 +1,25 @@ + null]; + + $data = [ + 'components' => $components, + 'html' => $html, + 'splade' => $splade, + ]; + + return rescue( + callback: fn () => Http::post(config('splade.ssr.server'), $data)->throw()->json(), + rescue: $default, + report: false + ) ?: $default; + } +} diff --git a/stubs/postcss.config.js b/stubs/postcss.config.js index fef1b225..67cdf1a5 100644 --- a/stubs/postcss.config.js +++ b/stubs/postcss.config.js @@ -3,4 +3,4 @@ module.exports = { tailwindcss: {}, autoprefixer: {}, }, -} +}; diff --git a/stubs/resources/js/app.js b/stubs/resources/js/app.js index 0b4a2143..fcf2658d 100644 --- a/stubs/resources/js/app.js +++ b/stubs/resources/js/app.js @@ -1,16 +1,16 @@ -import './bootstrap'; -import '../css/app.css'; +import "./bootstrap"; +import "../css/app.css"; -import { createApp } from 'vue' -import { renderSpladeApp, SpladePlugin } from '@protonemedia/laravel-splade' +import { createApp } from "vue"; +import { renderSpladeApp, SpladePlugin } from "@protonemedia/laravel-splade"; -const el = document.getElementById('app') +const el = document.getElementById("app"); createApp({ render: renderSpladeApp({ el }) }) .use(SpladePlugin, { - 'max_keep_alive': 10, - 'transform_anchors': false, + "max_keep_alive": 10, + "transform_anchors": false, }) .mount(el); diff --git a/stubs/resources/js/ssr.js b/stubs/resources/js/ssr.js new file mode 100644 index 00000000..dd9a03e3 --- /dev/null +++ b/stubs/resources/js/ssr.js @@ -0,0 +1,11 @@ +import { createServer } from "http"; +import { createSSRApp } from "vue"; +import { renderToString } from "@vue/server-renderer"; +import { renderSpladeApp, SpladePlugin, startServer } from "@protonemedia/laravel-splade"; + +startServer(createServer, renderToString, (props) => { + return createSSRApp({ + render: renderSpladeApp(props) + }) + .use(SpladePlugin); +}); \ No newline at end of file diff --git a/stubs/tailwind.config.js b/stubs/tailwind.config.js index b4b288f6..02d6371b 100644 --- a/stubs/tailwind.config.js +++ b/stubs/tailwind.config.js @@ -1,19 +1,20 @@ -const defaultTheme = require('tailwindcss/defaultTheme'); - /** @type {import('tailwindcss').Config} */ module.exports = { content: [ - './vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php', - './vendor/protonemedia/laravel-splade/lib/**/*.vue', - './vendor/protonemedia/laravel-splade/resources/views/**/*.blade.php', - './storage/framework/views/*.php', - './resources/views/**/*.blade.php', - './resources/js/**/*.vue', + "./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php", + "./vendor/protonemedia/laravel-splade/lib/**/*.vue", + "./vendor/protonemedia/laravel-splade/resources/views/**/*.blade.php", + "./storage/framework/views/*.php", + "./resources/views/**/*.blade.php", + "./resources/js/**/*.vue", ], theme: { extend: {}, }, - plugins: [require('@tailwindcss/forms'), require('@tailwindcss/typography')], + plugins: [ + require("@tailwindcss/forms"), + require("@tailwindcss/typography") + ], }; \ No newline at end of file diff --git a/stubs/vite.config.js b/stubs/vite.config.js index b1ed363e..c5eb54d8 100644 --- a/stubs/vite.config.js +++ b/stubs/vite.config.js @@ -1,11 +1,12 @@ -import { defineConfig } from 'vite'; -import laravel from 'laravel-vite-plugin'; -import vue from '@vitejs/plugin-vue'; +import { defineConfig } from "vite"; +import laravel from "laravel-vite-plugin"; +import vue from "@vitejs/plugin-vue"; export default defineConfig({ plugins: [ laravel({ - input: 'resources/js/app.js', + input: "resources/js/app.js", + ssr: "resources/js/ssr.js", refresh: true, }), vue({ @@ -17,9 +18,12 @@ export default defineConfig({ }, }), ], + ssr: { + noExternal: ["vue", "@protonemedia/laravel-splade"] + }, resolve: { alias: { - vue: 'vue/dist/vue.esm-bundler' + vue: "vue/dist/vue.esm-bundler" } }, }); \ No newline at end of file diff --git a/vite.config.js b/vite.config.js index 8395ccc9..63434e9c 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,25 +1,25 @@ -import { resolve } from 'path' -import { defineConfig } from 'vite' +import { resolve } from "path" +import { defineConfig } from "vite" import vue from "@vitejs/plugin-vue" // https://vitejs.dev/config/ export default defineConfig({ - plugins: [vue()], + plugins: [vue()], - build: { - lib: { - entry: resolve(__dirname, 'lib/main.js'), - name: 'ProtoneMediaLaravelSplade', - fileName: 'protone-media-laravel-splade' - }, - rollupOptions: { - external: ['vue', 'axios'], - output: { - globals: { - axios: 'axios', - vue: 'Vue' + build: { + lib: { + entry: resolve(__dirname, "lib/main.js"), + name: "ProtoneMediaLaravelSplade", + fileName: "protone-media-laravel-splade" + }, + rollupOptions: { + external: ["vue", "axios"], + output: { + globals: { + axios: "axios", + vue: "Vue" + } + } } - } } - } })