diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 5693897e..e054f378 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -16,15 +16,15 @@ jobs: strategy: matrix: - node-version: [18.x] + node-version: [20.x] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' - run: npm ci - # - run: npm run build --if-present +# - run: npm run dist --if-present - run: npm test diff --git a/CHANGELOG.md b/CHANGELOG.md index 8166222d..840d974a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ Changelog ========= +## v10.0.0 *(2024-05-23)* +- Breaking change: Dropped `deepCopy` in favour of the native (and unwrapped) `structuredClone`. +- New component: `Grid` (alpha). This should not be used for production yet, as it's still in development (or it may even be dropped). +- Use `crypto` for `guid` generation in `utils`. + + ## v9.5.3 *(2024-05-18)* - Fix `Combobox` issue for some edge cases. diff --git a/docs-src/components/button-group/ButtonGroup.svelte b/docs-src/components/button-group/ButtonGroup.svelte index db4a0b13..1b0126ed 100644 --- a/docs-src/components/button-group/ButtonGroup.svelte +++ b/docs-src/components/button-group/ButtonGroup.svelte @@ -97,7 +97,7 @@ diff --git a/docs-src/components/grid/index.js b/docs-src/components/grid/index.js new file mode 100644 index 00000000..1fc7e2aa --- /dev/null +++ b/docs-src/components/grid/index.js @@ -0,0 +1 @@ +export { default as Grid } from './Grid.svelte'; diff --git a/docs-src/components/index.js b/docs-src/components/index.js index 9680760e..0d599f35 100644 --- a/docs-src/components/index.js +++ b/docs-src/components/index.js @@ -13,6 +13,7 @@ export { Dialog } from './dialog'; export { Drawer } from './drawer'; export { Panel } from './panel'; export { Popover } from './popover'; +export { Grid } from './grid'; export { Table } from './table'; export { Tree } from './tree'; diff --git a/docs-src/components/utils/functions/align-item.svelte b/docs-src/components/utils/functions/align-item.svelte index c796d62d..ca8a5abe 100644 --- a/docs-src/components/utils/functions/align-item.svelte +++ b/docs-src/components/utils/functions/align-item.svelte @@ -1,4 +1,4 @@ - +

Aligns an element to another element, ensuring that the aligned element remains within the viewport.

diff --git a/docs-src/components/utils/functions/animate.svelte b/docs-src/components/utils/functions/animate.svelte index 5507ef62..3fb947e1 100644 --- a/docs-src/components/utils/functions/animate.svelte +++ b/docs-src/components/utils/functions/animate.svelte @@ -1,4 +1,4 @@ - +

Animates an element from one state to another. Shortcut & wrapper for the native javascript animation.

Returns a promise which resolves when the animation finishes.

diff --git a/docs-src/components/utils/functions/blink.svelte b/docs-src/components/utils/functions/blink.svelte index c23a3ed7..c1c1d9f4 100644 --- a/docs-src/components/utils/functions/blink.svelte +++ b/docs-src/components/utils/functions/blink.svelte @@ -1,4 +1,4 @@ - +

Animates an element by changing its opacity from 0.5 to 1.

  • element - HTMLElement to animate diff --git a/docs-src/components/utils/functions/debounce.svelte b/docs-src/components/utils/functions/debounce.svelte index cd88dd6b..b79634ef 100644 --- a/docs-src/components/utils/functions/debounce.svelte +++ b/docs-src/components/utils/functions/debounce.svelte @@ -1,4 +1,4 @@ - +

    The "debounced" function will only be called after it has not been called for timeout milliseconds.

    • fn - function to debounce. diff --git a/docs-src/components/utils/functions/deep-copy.svelte b/docs-src/components/utils/functions/deep-copy.svelte deleted file mode 100644 index ab809dce..00000000 --- a/docs-src/components/utils/functions/deep-copy.svelte +++ /dev/null @@ -1,19 +0,0 @@ - -

      This is just an alias for an oddly-named native function: structuredClone.

      -
        -
      • object - any object or array to clone. -
      -
      - - - diff --git a/docs-src/components/utils/functions/empty.svelte b/docs-src/components/utils/functions/empty.svelte index ce9cabc6..d210a3aa 100644 --- a/docs-src/components/utils/functions/empty.svelte +++ b/docs-src/components/utils/functions/empty.svelte @@ -1,4 +1,4 @@ - +

      Similar to PHP's empty - returns true if a value is empty.

      • value - any data type. diff --git a/docs-src/components/utils/functions/format-date.svelte b/docs-src/components/utils/functions/format-date.svelte index 72b28d69..b8c3a68d 100644 --- a/docs-src/components/utils/functions/format-date.svelte +++ b/docs-src/components/utils/functions/format-date.svelte @@ -1,4 +1,4 @@ - +

        Converts date to a string in the format: YYYY-MM-DD HH:mm.

        diff --git a/docs-src/components/utils/functions/fuzzy.svelte b/docs-src/components/utils/functions/fuzzy.svelte index 5cb6db25..d5926f28 100644 --- a/docs-src/components/utils/functions/fuzzy.svelte +++ b/docs-src/components/utils/functions/fuzzy.svelte @@ -1,4 +1,4 @@ - +

        Fuzzy finds if haystack contains characters from the needle in the same order.

        • haystack - a string to be searched in. diff --git a/docs-src/components/utils/functions/get-mouse-x.svelte.svelte b/docs-src/components/utils/functions/get-mouse-x.svelte.svelte index 060db4ce..b97f864e 100644 --- a/docs-src/components/utils/functions/get-mouse-x.svelte.svelte +++ b/docs-src/components/utils/functions/get-mouse-x.svelte.svelte @@ -1,4 +1,4 @@ - +

          Returns the mouse X position. Event is standardised across platforms (touch & pointer)

          diff --git a/docs-src/components/utils/functions/get-mouse-xy.svelte.svelte b/docs-src/components/utils/functions/get-mouse-xy.svelte.svelte index eae09242..dc49e700 100644 --- a/docs-src/components/utils/functions/get-mouse-xy.svelte.svelte +++ b/docs-src/components/utils/functions/get-mouse-xy.svelte.svelte @@ -1,4 +1,4 @@ - +

          Returns the mouse XY position (as an array: [x, y]). Event is standardised across platforms (touch & pointer)

          diff --git a/docs-src/components/utils/functions/get-mouse-y.svelte.svelte b/docs-src/components/utils/functions/get-mouse-y.svelte.svelte index 95522f1b..c46ec05b 100644 --- a/docs-src/components/utils/functions/get-mouse-y.svelte.svelte +++ b/docs-src/components/utils/functions/get-mouse-y.svelte.svelte @@ -1,4 +1,4 @@ - +

          Returns the mouse Y position. Event is standardised across platforms (touch & pointer)

          diff --git a/docs-src/components/utils/functions/guid.svelte b/docs-src/components/utils/functions/guid.svelte index c5a2fdf3..8c5b0cab 100644 --- a/docs-src/components/utils/functions/guid.svelte +++ b/docs-src/components/utils/functions/guid.svelte @@ -1,4 +1,4 @@ - +

          Generates a globally unique identifier.

          diff --git a/docs-src/components/utils/functions/index.js b/docs-src/components/utils/functions/index.js index 1f9d39a2..173ace93 100644 --- a/docs-src/components/utils/functions/index.js +++ b/docs-src/components/utils/functions/index.js @@ -1,19 +1,19 @@ -export { default as AlignItem } from './align-item.svelte'; -export { default as Animate } from './animate.svelte'; -export { default as Blink } from './blink.svelte'; -export { default as Debounce } from './debounce.svelte'; -export { default as DeepCopy } from './deep-copy.svelte'; -export { default as Empty } from './empty.svelte'; -export { default as FormatDate } from './format-date.svelte'; -export { default as Fuzzy } from './fuzzy.svelte'; -export { default as GetMouseX } from './get-mouse-x.svelte.svelte'; -export { default as GetMouseXY } from './get-mouse-xy.svelte.svelte'; -export { default as GetMouseY } from './get-mouse-y.svelte.svelte'; -export { default as Guid } from './guid.svelte'; -export { default as IsInScrollable } from './is-in-scrollable.svelte'; -export { default as IsMobile } from './is-mobile.svelte'; -export { default as IsColorDark } from './is-color-dark.svelte'; -export { default as Pluck } from './pluck.svelte'; -export { default as RoundAmount } from './round-amount.svelte'; -export { default as Throttle } from './throttle.svelte'; -export { default as TimeAgo } from './time-ago.svelte'; +export { default as alignItem } from './align-item.svelte'; +export { default as animate } from './animate.svelte'; +export { default as blink } from './blink.svelte'; +export { default as debounce } from './debounce.svelte'; +export { default as empty } from './empty.svelte'; +export { default as isset } from './isset.svelte'; +export { default as formatDate } from './format-date.svelte'; +export { default as fuzzy } from './fuzzy.svelte'; +export { default as getMouseX } from './get-mouse-x.svelte.svelte'; +export { default as getMouseXY } from './get-mouse-xy.svelte.svelte'; +export { default as getMouseY } from './get-mouse-y.svelte.svelte'; +export { default as guid } from './guid.svelte'; +export { default as isInScrollable } from './is-in-scrollable.svelte'; +export { default as isMobile } from './is-mobile.svelte'; +export { default as isColorDark } from './is-color-dark.svelte'; +export { default as pluck } from './pluck.svelte'; +export { default as roundAmount } from './round-amount.svelte'; +export { default as throttle } from './throttle.svelte'; +export { default as timeAgo } from './time-ago.svelte'; diff --git a/docs-src/components/utils/functions/is-color-dark.svelte b/docs-src/components/utils/functions/is-color-dark.svelte index b836a8ad..991368d1 100644 --- a/docs-src/components/utils/functions/is-color-dark.svelte +++ b/docs-src/components/utils/functions/is-color-dark.svelte @@ -1,4 +1,4 @@ - +

          Checks if a colour is dark or light (so that e.g. a text colour can have a better contrast against the background).

          diff --git a/docs-src/components/utils/functions/is-in-scrollable.svelte b/docs-src/components/utils/functions/is-in-scrollable.svelte index ab157516..65e09ffe 100644 --- a/docs-src/components/utils/functions/is-in-scrollable.svelte +++ b/docs-src/components/utils/functions/is-in-scrollable.svelte @@ -1,4 +1,4 @@ - +

          Checks whether the given node is inside a scrollable element.

          This function is useful when determining whether a swipe event should be allowed to start on a given element.
          diff --git a/docs-src/components/utils/functions/is-mobile.svelte b/docs-src/components/utils/functions/is-mobile.svelte index 0a954f1c..0634d9b8 100644 --- a/docs-src/components/utils/functions/is-mobile.svelte +++ b/docs-src/components/utils/functions/is-mobile.svelte @@ -1,4 +1,4 @@ - +

          Checks if the current platform is mobile.

          diff --git a/docs-src/components/utils/functions/isset.svelte b/docs-src/components/utils/functions/isset.svelte new file mode 100644 index 00000000..27846783 --- /dev/null +++ b/docs-src/components/utils/functions/isset.svelte @@ -0,0 +1,20 @@ + +

          Checks if a variable is defined and not null.

          +
          + + + + diff --git a/docs-src/components/utils/functions/pluck.svelte b/docs-src/components/utils/functions/pluck.svelte index 142d2e81..41b51dd3 100644 --- a/docs-src/components/utils/functions/pluck.svelte +++ b/docs-src/components/utils/functions/pluck.svelte @@ -1,4 +1,4 @@ - +

          Creates a new object with only the plucked properties from the original object..

          • object - object to pluck from. diff --git a/docs-src/components/utils/functions/round-amount.svelte b/docs-src/components/utils/functions/round-amount.svelte index 691eed5e..fddd636c 100644 --- a/docs-src/components/utils/functions/round-amount.svelte +++ b/docs-src/components/utils/functions/round-amount.svelte @@ -1,4 +1,4 @@ - +

            Rounds a number to 2 decimal places (by default).

            diff --git a/docs-src/components/utils/functions/throttle.svelte b/docs-src/components/utils/functions/throttle.svelte index ffa9462f..30300ac0 100644 --- a/docs-src/components/utils/functions/throttle.svelte +++ b/docs-src/components/utils/functions/throttle.svelte @@ -1,4 +1,4 @@ - +

            The "throttled" function will only be called once every timeout milliseconds.

            • fn - function to debounce. diff --git a/docs-src/components/utils/functions/time-ago.svelte b/docs-src/components/utils/functions/time-ago.svelte index aeeec3f1..b63d2ab8 100644 --- a/docs-src/components/utils/functions/time-ago.svelte +++ b/docs-src/components/utils/functions/time-ago.svelte @@ -1,4 +1,4 @@ - +

              Converts date to a string describing how long time ago was the given date.

              diff --git a/docs-src/nav/Nav.svelte b/docs-src/nav/Nav.svelte index 0cc5ec1c..edb1c4aa 100644 --- a/docs-src/nav/Nav.svelte +++ b/docs-src/nav/Nav.svelte @@ -45,6 +45,7 @@

              Containers

              + diff --git a/docs/docs.css b/docs/docs.css index b9656c0f..2b9570b3 100644 --- a/docs/docs.css +++ b/docs/docs.css @@ -1 +1,628 @@ -.api-table{height:unset;overflow:auto visible;overscroll-behavior-y:unset}.api-table table{min-width:900px}.api-table tr td{vertical-align:top;padding-block:0.5rem}.api-table tr td:first-child,.api-table tr th:first-child{width:200px}.api-table tr td:nth-child(2),.api-table tr th:nth-child(2){width:200px}.api-table tr td:last-child,.api-table tr th:last-child{min-width:400px}body,html{margin:0;background-color:var(--ui-color-background);color:var(--ui-color-text);--sidebar-width:220px}@font-face{font-family:'Prime Light';src:url('prime_light-webfont.woff2') format('woff2'),url('prime_light-webfont.woff') format('woff');font-weight:light;font-style:normal}a{color:inherit}a:hover{text-decoration-color:var(--ui-color-accent);text-decoration-thickness:2px;text-underline-offset:0.3rem}main{padding:0 2rem 8rem;margin-left:var(--sidebar-width)}h1,h2,h3{font-weight:500;margin:2rem 0 1.2rem;width:100%}h1:first-child,h2:first-child,h3:first-of-type{margin-top:0}p{line-height:1.7;margin-block:1.5rem;max-width:120ch}p b{font-weight:700;letter-spacing:.5px}ul{line-height:1.7;margin:0;padding-left:2rem}ul li{margin-block:0.5rem}p+ul{margin-top:-1rem}em{color:var(--ui-color-accent);font-style:normal}hr{width:100%;height:0;border:0;border-top:1px solid var(--ui-color-border-2);margin:3em 0 2em}.docs-overflow-box{border:2px dotted var(--ui-color-accent);background-color:var(--ui-color-background);padding:1em;overflow:hidden;z-index:1;position:relative}.docs-buttons-row{display:flex;flex-flow:wrap row;align-items:flex-start;justify-content:flex-start;gap:.5rem;flex-shrink:0}@media (1px <= width <= 700px){main{margin-left:0}}code,main pre[class]{background-color:#1a1a1a;color:#ccc;border-radius:var(--ui-border-radius);font-size:var(--ui-font-s)}code{display:block;width:100%;padding:1em;margin-block:1em;line-height:2;white-space:pre;overflow:auto}code[class*=language-]{padding:0;margin:0}.dark-mode-switch{min-width:7rem;position:fixed;top:.5rem;right:.6rem;z-index:55}aside{border-right:1px solid var(--ui-color-border-2);overflow-y:auto;background:var(--ui-color-background);position:fixed;width:var(--sidebar-width);left:0;top:0;height:100lvh;padding:0 1rem calc(100lvh - 100svh);overscroll-behavior:contain}menu{width:100%;display:flex;flex-flow:column;padding:1rem 0 0;margin:0 0 2rem}menu h3{margin:0 -1rem;padding:var(--ui-margin-m) var(--ui-margin-l);white-space:nowrap;font-family:'Prime Light','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:var(--ui-font-xl)}menu h3:not(:first-child){margin-top:var(--ui-margin-l)}menu a{color:var(--ui-color-text);text-decoration:none;display:block;margin:var(--ui-margin-s) 0;padding:var(--ui-margin-m) 1.4rem;border-radius:var(--ui-border-radius);white-space:nowrap;touch-action:manipulation}menu a:hover{background-color:var(--ui-color-highlight-1)}menu a.active{background-color:var(--ui-color-highlight)}.nav-toggler{--ui-button-size:1.1em;position:fixed;left:0;top:.4rem;z-index:65;color:var(--ui-color-text-1);display:none;transform:translateX(10px)}.nav-toggler:hover{color:var(--ui-color-text);background:0 0}.btn-scroll-top{position:fixed;bottom:1rem;right:1rem;z-index:999}.btn-scroll-top.hidden{display:none}@media (1px <= width <= 700px){.nav-toggler{display:flex}.nav-toggler.expanded{transform:translateX(calc(var(--sidebar-width) - 40px))}aside{box-shadow:2px 1px 10px #0006;transform:translateX(calc(var(--sidebar-width) * -1));z-index:60;--sidebar-elastic-padding:80px;width:calc(var(--sidebar-width) + var(--sidebar-elastic-padding));left:calc(var(--sidebar-elastic-padding) * -1);padding-left:calc(var(--sidebar-elastic-padding) + 1rem)}aside.expanded{transform:translateX(0)}.nav-toggler:not(.swiping),aside:not(.swiping){transition:transform .3s cubic-bezier(.5, .2, .5, 1.2)}}.banner{height:clamp(100px,40vw,360px);padding-top:60px;display:flex;align-items:flex-start;justify-content:center}.banner a{display:inline-flex;align-items:center;justify-content:center;gap:2vw;margin:auto;padding:0;text-decoration:none}.logo{width:clamp(42px,10vw,160px);height:clamp(42px,10vw,160px);opacity:.9;filter:drop-shadow(0 1px 1px #000)}.logotype{font-family:'Prime Light','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:clamp(28px, 6vw, 90px);font-weight:100;margin:0;padding:0 4px 0 0;display:flex;flex-flow:row;white-space:nowrap;line-height:1;width:auto}.logotype em{font-weight:500}.logotype sub{font-size:var(--ui-font-m);font-weight:300;color:var(--ui-color-text-semi);margin:-1rem 0 0 -63px;width:60px;text-align:right}.banner a:hover .logotype em,.banner a:hover .logotype span{text-decoration:underline;text-decoration-thickness:1px;text-decoration-skip-ink:none;text-underline-offset:8px}.banner a:hover .logotype span{text-decoration-color:var(--ui-color-accent)}.banner a:hover .logotype em{text-decoration-color:var(--ui-color-text)}.footer-links{display:flex;align-items:center;justify-content:center;gap:5vw;margin:6rem 0 0;height:2rem}.footer-links a,.footer-links a:hover{text-decoration:none;height:100%;display:flex;align-items:center;color:var(--ui-color-text-semi);transition:color .1s}.footer-links a:hover{color:var(--ui-color-text)}.footer-links a svg{height:2rem;width:2rem;margin:0}.footer-links a.npm svg{width:5rem}.sticky-block{background:var(--ui-color-background);margin:0;padding:0}.sticky-block>h1,.sticky-block>h2,main>h1,main>h2{font-family:'Prime Light','Helvetica Neue',Helvetica,Arial,sans-serif;margin:2rem -2rem 1rem;padding:.5rem 100px .5rem 2rem}.prime-light{font-family:'Prime Light','Helvetica Neue',Helvetica,Arial,sans-serif}.sticky-block>h2,main>h2{font-size:1.8rem;width:auto;border-bottom:1px solid var(--ui-color-border-2);position:sticky;top:0;z-index:50;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}main>h2 em{color:var(--ui-color-text-semi);font-size:1.2rem;line-height:1.8rem;margin-left:.5rem;vertical-align:text-top}main>p code,main>ul li code{display:inline;padding:0;margin:0;background:0 0;color:var(--ui-color-accent);font:inherit;white-space:break-spaces}@media (1px <= width <= 700px){.sticky-block>h1,.sticky-block>h2,main>h1,main>h2{padding-left:54px}}.button-demo-props{display:flex;flex-flow:column;align-items:flex-start;justify-content:flex-start;gap:.5rem;width:clamp(300px,600px,100%)}.button-demo-props .input{display:flex;flex-flow:row;width:100%}.button-demo-props .input .label{width:5rem;flex-shrink:0}.button-demo-props .input .input-text-inner{flex:1}.button-demo-props .toggle{display:flex;flex-flow:row;width:100%}.button-demo-props .toggle .label{width:5rem;flex-shrink:0}@media (1px <= width <= 700px){.button-demo-props{width:100%}}.group{background:var(--ui-color-background-2);padding:6px;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-gap:6px;border-radius:var(--ui-border-radius-m)}.palette-box{padding:10px 0;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:calc(var(--ui-border-radius-m) - 3px);background-color:var(--ui-color-background-2)}.icons{margin-bottom:2em}.icon-block{float:left;width:128px;height:128px;margin:0 1em 1em 0;display:flex;flex-flow:column;align-items:stretch;justify-content:stretch;background-color:var(--ui-color-background-semi);padding:0 10px 10px;border-radius:5px;border:1px solid var(--ui-color-border)}.icon-block-icon{flex:1;display:flex;align-items:center;justify-content:center}.icon-block-icon svg{width:32px;height:32px}.icon-block-name{height:20px;text-align:center;overflow-wrap:break-word;font-size:var(--ui-font-s)}.div{border:1px dashed red;height:100px;width:200px;display:inline-grid;place-items:center;margin:1rem 1rem 1rem 0;-webkit-user-select:none;user-select:none}.docs-menu-align-right{padding:2rem 0;border:1px dashed var(--ui-color-accent);text-align:right}.notification-center-header{margin-bottom:1rem;display:flex;flex-flow:row;align-items:center;justify-content:flex-start;gap:2rem}.notification-center-header h2{display:inline-block;width:auto;padding:0;margin:0}.prop-row{padding:1rem 0;display:flex;align-items:center;justify-content:flex-start;gap:1rem}.panel p{margin:0}.tooltip-box{display:inline-block;margin:10px 0 0;line-height:2.4em;padding:1em;border:1px solid #ccc;min-width:6em;text-align:center}.tooltip-html h1,.tooltip-html p{margin:0}.tooltip-html b{color:var(--ui-color-accent)}.tooltip-html a:hover{text-decoration:none}.split-wrap{width:400px;height:200px;border:1px solid red;display:flex;flex-flow:row;position:relative}.split-wrap-v{flex-flow:column}.split-box{border:1px solid green;flex:1}.min-w{min-width:20px;max-width:220px}.min-h{min-height:50px;max-height:150px}.table-viewport{width:500px;max-width:100%;height:500px;border:2px dashed red;padding:5px}.tooltip-box{display:inline-block;margin:10px 0 0;line-height:2.4em;padding:1em;border:1px solid #ccc;min-width:6em;text-align:center}.tooltip-html h1,.tooltip-html p{margin:0}.tooltip-html b{color:var(--ui-color-accent)}.tooltip-html a:hover{text-decoration:none}.section-utils{--nav-sidebar-width:240px}.section-utils .dark-mode-switch{right:calc(var(--nav-sidebar-width) + 20px)}.section-utils .sticky-block{padding-bottom:3rem;margin-right:var(--nav-sidebar-width)}.section-utils .sticky-block .utility h3{scroll-margin-top:4.2rem;font-size:1.1rem;color:var(--ui-color-accent);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace}.section-utils .utilities-nav{position:fixed;right:0;top:0;bottom:0;z-index:52;margin:0;padding:1rem 2rem;overflow-y:auto;width:var(--nav-sidebar-width);border-left:1px solid var(--ui-color-border-2);background-color:var(--ui-color-background-input)}.section-utils .utility{margin:0 -2rem;padding:1rem 2rem;border-bottom:1px solid var(--ui-color-border-2)}.section-utils .btn-scroll-top{right:calc(var(--nav-sidebar-width) + 20px)}@media (1px <= width <= 900px){.section-utils .dark-mode-switch{right:.6rem}.section-utils .btn-scroll-top{right:1rem}.section-utils .sticky-block{margin-right:0}.section-utils .utilities-nav{position:static;border-left:none;width:auto;z-index:initial;margin-top:2rem;background-color:unset}}.button-toggle-wrapper-wide{width:400px;max-width:100%}.button-toggle-wrapper-wide .button-toggle{width:100%}.toggle-box{margin:10px 0 0;line-height:2.4em;display:none}.toggle-box.visible{display:block} \ No newline at end of file +.api-table { + height: unset; + overflow: auto visible; + overscroll-behavior-y: unset; +} +.api-table table { min-width: 900px; } + +.api-table tr td { vertical-align: top; padding-block: 0.5rem;} + +.api-table tr th:first-child, +.api-table tr td:first-child { width: 200px; } + +.api-table tr th:nth-child(2), +.api-table tr td:nth-child(2) { width: 200px; } + +.api-table tr th:last-child, +.api-table tr td:last-child { min-width: 400px; } + +html, +body { + margin: 0; + background-color: var(--ui-color-background); + color: var(--ui-color-text); + + --sidebar-width: 220px; +} + + +@font-face { + font-family: 'Prime Light'; + src: url('prime_light-webfont.woff2') format('woff2'), + url('prime_light-webfont.woff') format('woff'); + font-weight: light; + font-style: normal; +} + + +a { color: inherit; } +a:hover { + text-decoration-color: var(--ui-color-accent); + text-decoration-thickness: 2px; + text-underline-offset: 0.3rem; +} + +main { + padding: 0 2rem 8rem; + margin-left: var(--sidebar-width); +} + +h1, +h2, +h3 { font-weight: 500; margin: 2rem 0 1.2rem; width: 100%; } + +h1:first-child, +h2:first-child, +h3:first-of-type { margin-top: 0; } + +p { line-height: 1.7; margin-block: 1.5rem; max-width: 120ch; } +p b { font-weight: 700; letter-spacing: 0.5px; } + +ul { line-height: 1.7; margin: 0; padding-left: 2rem; } +ul li { margin-block: 0.5rem; } + +p + ul { margin-top: -1rem } + +em { color: var(--ui-color-accent); font-style: normal; } + + +hr { + width: 100%; + height: 0; + border: 0; + border-top: 1px solid var(--ui-color-border-2); + margin: 3em 0 2em; +} + + +.docs-overflow-box { + border: 2px dotted var(--ui-color-accent); + background-color: var(--ui-color-background); + padding: 1em; + overflow: hidden; + z-index: 1; + position: relative; +} + +.docs-buttons-row { + display: flex; + flex-flow: wrap row; + align-items: flex-start; + justify-content: flex-start; + gap: 0.5rem; + flex-shrink: 0; +} + + + +@media (1px <= width <= 700px) { + main { margin-left: 0; } +} + +main pre[class], +code { + background-color: #1a1a1a; + color: #ccc; + border-radius: var(--ui-border-radius); + font-size: var(--ui-font-s) +} + +code { + display: block; + width: 100%; + padding: 1em; + margin-block: 1em; + line-height: 2; + white-space: pre; + overflow: auto; +} + +code[class*=language-] { padding: 0; margin: 0; } + +.dark-mode-switch { + min-width: 7rem; + position: fixed; + top: 0.5rem; + right: 0.6rem; + z-index: 55; +} + +aside { + border-right: 1px solid var(--ui-color-border-2); + overflow-y: auto; + background: var(--ui-color-background); + position: fixed; + width: var(--sidebar-width); + + left: 0; + top: 0; + height: 100lvh; + padding: 0 1rem calc(100lvh - 100svh); + + overscroll-behavior: contain; +} + +menu { + width: 100%; + display: flex; + flex-flow: column; + padding: 1rem 0 0; + margin: 0 0 2rem; +} + +menu h3 { + margin: 0 -1rem; + padding: var(--ui-margin-m) var(--ui-margin-l); + white-space: nowrap; + font-family: 'Prime Light', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: var(--ui-font-xl); +} + +menu h3:not(:first-child) { margin-top: var(--ui-margin-l); } + +menu a { + color: var(--ui-color-text); + text-decoration: none; + display: block; + margin: var(--ui-margin-s) 0; + padding: var(--ui-margin-m) 1.4rem; + border-radius: var(--ui-border-radius); + white-space: nowrap; + touch-action: manipulation; +} + +menu a:hover { background-color: var(--ui-color-highlight-1); } +menu a.active { background-color: var(--ui-color-highlight); } + + +.nav-toggler { + --ui-button-size: 1.1em; + position: fixed; + left: 0; + top: 0.4rem; + z-index: 65; + color: var(--ui-color-text-1); + display: none; + transform: translateX(10px); +} +.nav-toggler:hover { color: var(--ui-color-text); background: none; } + +.btn-scroll-top { + position: fixed; + bottom: 1rem; + right: 1rem; + z-index: 999; +} +.btn-scroll-top.hidden { display: none; } + + +@media (1px <= width <= 700px) { + .nav-toggler { display: flex; } + .nav-toggler.expanded { transform: translateX(calc(var(--sidebar-width) - 40px)); } + + aside { + box-shadow: 2px 1px 10px #0006; + transform: translateX(calc(var(--sidebar-width) * -1)); + z-index: 60; + + --sidebar-elastic-padding: 80px; + width: calc(var(--sidebar-width) + var(--sidebar-elastic-padding)); + left: calc(var(--sidebar-elastic-padding) * -1); + padding-left: calc(var(--sidebar-elastic-padding) + 1rem); + + } + aside.expanded { transform: translateX(0); } + + .nav-toggler:not(.swiping), + aside:not(.swiping) { transition: transform .3s cubic-bezier(.5, .2, .5, 1.2); } +} + +.banner { + height: clamp(100px, 40vw, 360px); + padding-top: 60px; + display: flex; + align-items: flex-start; + justify-content: center; +} + +.banner a { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 2vw; + margin: auto; + padding: 0; + text-decoration: none; +} + +.logo { + width: clamp(42px, 10vw, 160px); + height: clamp(42px, 10vw, 160px); + opacity: 0.9; + filter: drop-shadow(0 1px 1px #000); +} + + +.logotype { + font-family: 'Prime Light', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: clamp(28px, 6vw, 90px); + font-weight: 100; + margin: 0; + padding: 0 4px 0 0; + display: flex; + flex-flow: row; + white-space: nowrap; + line-height: 1; + width: auto; +} + +.logotype em { font-weight: 500; } +.logotype sub { + font-size: var(--ui-font-m); + font-weight: 300; + color: var(--ui-color-text-semi); + margin: -1rem 0 0 -63px; + width: 60px; + text-align: right; +} + + +.banner a:hover .logotype span, +.banner a:hover .logotype em { + text-decoration: underline; + text-decoration-thickness: 1px; + text-decoration-skip-ink: none; + text-underline-offset: 8px; +} +.banner a:hover .logotype span { text-decoration-color: var(--ui-color-accent); } +.banner a:hover .logotype em { text-decoration-color: var(--ui-color-text); } + + + + + +.footer-links { + display: flex; + align-items: center; + justify-content: center; + gap: 5vw; + margin: 6rem 0 0; + height: 2rem; +} + +.footer-links a, +.footer-links a:hover { + text-decoration: none; + height: 100%; + display: flex; + align-items: center; + color: var(--ui-color-text-semi); + transition: color 0.1s; +} + +.footer-links a:hover { color: var(--ui-color-text); } + +.footer-links a svg { height: 2rem; width: 2rem; margin: 0; } +.footer-links a.npm svg { width: 5rem; } + + + + +.sticky-block { + background: var(--ui-color-background); + margin: 0; + padding: 0; +} + +main>h1, +main>h2, +.sticky-block>h1, +.sticky-block>h2 { + font-family: 'Prime Light', 'Helvetica Neue', Helvetica, Arial, sans-serif; + margin: 2rem -2rem 1rem; + padding: 0.5rem 100px 0.5rem 2rem; +} + +.prime-light { + font-family: 'Prime Light', 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +/* stylelint-disable-next-line no-descending-specificity */ +main>h2, +.sticky-block>h2 { + font-size: 1.8rem; + width: auto; + border-bottom: 1px solid var(--ui-color-border-2); + position: sticky; + top: 0; + z-index: 50; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + -webkit-backdrop-filter: blur(15px); + backdrop-filter: blur(15px); +} + + + +/* stylelint-disable-next-line no-descending-specificity */ +main>h2 em { + color: var(--ui-color-text-semi); + font-size: 1.2rem; + line-height: 1.8rem; + margin-left: 0.5rem; + vertical-align: text-top; +} + +main>p code, +main>ul li code { + display: inline; + padding: 0; + margin: 0; + background: none; + color: var(--ui-color-accent); + font: inherit; + white-space: break-spaces; +} + + +@media (1px <= width <= 700px) { + main>h1, + main>h2, + .sticky-block>h1, + .sticky-block>h2 { padding-left: 54px; } +} + +.button-demo-props { + display: flex; + flex-flow: column; + align-items: flex-start; + justify-content: flex-start; + gap: 0.5rem; + width: clamp(300px, 600px, 100%); +} + +.button-demo-props .input { display: flex; flex-flow: row; width: 100%; } +.button-demo-props .input .label { width: 5rem; flex-shrink: 0; } +.button-demo-props .input .input-text-inner { flex: 1; } + + +.button-demo-props .toggle { display: flex; flex-flow: row; width: 100%; } +.button-demo-props .toggle .label { width: 5rem; flex-shrink: 0; } + +@media (1px <= width <= 700px) { + .button-demo-props { + width: 100%; + } +} + +.group { + background: var(--ui-color-background-2); + padding: 6px; + display: grid; + grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); + grid-gap: 6px; + border-radius: var(--ui-border-radius-m); +} + +.palette-box { + padding: 10px 0; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + border-radius: calc(var(--ui-border-radius-m) - 3px); + background-color: var(--ui-color-background-2); +} + +.grid-viewport { + width: 500px; + max-width: 100%; + height: 400px; + border: 2px dashed red; + padding: 5px; +} + +.icons { margin-bottom: 2em; } + +.icon-block { + float: left; + width: 128px; + height: 128px; + margin: 0 1em 1em 0; + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: stretch; + background-color: var(--ui-color-background-semi); + padding: 0 10px 10px; + border-radius: 5px; + border: 1px solid var(--ui-color-border); +} + +.icon-block-icon { + flex: 1; + display: flex; + align-items: center; + justify-content: center; +} + +.icon-block-icon svg { + width: 32px; + height: 32px; +} + +.icon-block-name { + height: 20px; + text-align: center; + overflow-wrap: break-word; + font-size: var(--ui-font-s) +} + +.div { + border: 1px dashed red; + height: 100px; + width: 200px; + display: inline-grid; + place-items: center; + margin: 1rem 1rem 1rem 0; + -webkit-user-select: none; + user-select: none; +} + + +.docs-menu-align-right { + padding: 2rem 0; + border: 1px dashed var(--ui-color-accent); + text-align: right; +} + +.notification-center-header { + margin-bottom: 1rem; + display: flex; + flex-flow: row; + align-items: center; + justify-content: flex-start; + gap: 2rem; +} + +.notification-center-header h2 { + display: inline-block; + width: auto; + padding: 0; + margin: 0; +} + + +.prop-row { + padding: 1rem 0; + display: flex; + align-items: center; + justify-content: flex-start; + gap: 1rem; +} + +.panel p { margin: 0; } + +.tooltip-box { + display: inline-block; + margin: 10px 0 0; + line-height: 2.4em; + padding: 1em; + border: 1px solid #ccc; + min-width: 6em; + text-align: center; +} + +.tooltip-html h1, +.tooltip-html p { margin: 0; } +.tooltip-html b { color: var(--ui-color-accent); } +.tooltip-html a:hover { text-decoration: none; } + +.split-wrap { + width: 400px; + height: 200px; + border: 1px solid red; + display: flex; + flex-flow: row; + position: relative; +} + +.split-wrap-v { flex-flow: column; } +.split-box { border: 1px solid green; flex: 1; } + +.min-w { min-width: 20px; max-width: 220px; } +.min-h { min-height: 50px; max-height: 150px; } + +.table-viewport { + width: 500px; + max-width: 100%; + height: 500px; + border: 2px dashed red; + padding: 5px; +} + +.tooltip-box { + display: inline-block; + margin: 10px 0 0; + line-height: 2.4em; + padding: 1em; + border: 1px solid #ccc; + min-width: 6em; + text-align: center; +} + +.tooltip-html h1, +.tooltip-html p { margin: 0; } +.tooltip-html b { color: var(--ui-color-accent); } +.tooltip-html a:hover { text-decoration: none; } + +.section-utils { + --nav-sidebar-width: 240px; +} +.section-utils .dark-mode-switch { right: calc(var(--nav-sidebar-width) + 20px); } + +.section-utils .sticky-block { padding-bottom: 3rem; margin-right: var(--nav-sidebar-width); } + + +.section-utils .sticky-block .utility h3 { + scroll-margin-top: 4.2rem; + font-size: 1.1rem; + color: var(--ui-color-accent); + font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace; +} + + +.section-utils .utilities-nav { + position: fixed; + right: 0; + top: 0; + bottom: 0; + z-index: 52; + margin: 0; + padding: 1rem 2rem; + overflow-y: auto; + width: var(--nav-sidebar-width); + border-left: 1px solid var(--ui-color-border-2); + background-color: var(--ui-color-background-input); +} + +.section-utils .utility { + margin: 0 -2rem; + padding: 1rem 2rem; + border-bottom: 1px solid var(--ui-color-border-2); +} + + +.section-utils .btn-scroll-top { right: calc(var(--nav-sidebar-width) + 20px); } + + +@media (1px <= width <= 900px) { + .section-utils .dark-mode-switch { right: 0.6rem; } + .section-utils .btn-scroll-top { right: 1rem; } + .section-utils .sticky-block { margin-right: 0; } + .section-utils .utilities-nav { + position: static; + border-left: none; + width: auto; + z-index: initial; + margin-top: 2rem; + background-color: unset; + } + +} + +.button-toggle-wrapper-wide { width: 400px; max-width: 100%; } +.button-toggle-wrapper-wide .button-toggle { width: 100%; } + +.toggle-box { + margin: 10px 0 0; + line-height: 2.4em; + display: none; +} + +.toggle-box.visible { + display: block; +} +/*# sourceMappingURL=docs.css.map */ diff --git a/docs/docs.js b/docs/docs.js index b0788e97..48682307 100644 --- a/docs/docs.js +++ b/docs/docs.js @@ -1,68 +1,50852 @@ -var v2=Object.create;var vd=Object.defineProperty;var $2=Object.getOwnPropertyDescriptor;var w2=Object.getOwnPropertyNames;var y2=Object.getPrototypeOf,k2=Object.prototype.hasOwnProperty;var Kt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),$d=(t,e)=>{for(var n in e)vd(t,n,{get:e[n],enumerable:!0})},T2=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let l of w2(e))!k2.call(t,l)&&l!==n&&vd(t,l,{get:()=>e[l],enumerable:!(i=$2(e,l))||i.enumerable});return t};var wd=(t,e,n)=>(n=t!=null?v2(y2(t)):{},T2(e||!t||!t.__esModule?vd(n,"default",{value:t,enumerable:!0}):n,t));var Ri=Kt(ei=>{"use strict";Object.defineProperty(ei,"__esModule",{value:!0});ei.TraceDirectionKey=ei.Direction=ei.Axis=void 0;var Zc;ei.TraceDirectionKey=Zc;(function(t){t.NEGATIVE="NEGATIVE",t.POSITIVE="POSITIVE",t.NONE="NONE"})(Zc||(ei.TraceDirectionKey=Zc={}));var Jc;ei.Direction=Jc;(function(t){t.TOP="TOP",t.LEFT="LEFT",t.RIGHT="RIGHT",t.BOTTOM="BOTTOM",t.NONE="NONE"})(Jc||(ei.Direction=Jc={}));var Qc;ei.Axis=Qc;(function(t){t.X="x",t.Y="y"})(Qc||(ei.Axis=Qc={}))});var np=Kt(tp=>{"use strict";Object.defineProperty(tp,"__esModule",{value:!0});tp.calculateDirection=gw;var ep=Ri();function gw(t){var e,n=ep.TraceDirectionKey.NEGATIVE,i=ep.TraceDirectionKey.POSITIVE,l=t[t.length-1],r=t[t.length-2]||0;return t.every(function(a){return a===0})?ep.TraceDirectionKey.NONE:(e=l>r?i:n,l===0&&(e=r<0?i:n),e)}});var Xa=Kt(di=>{"use strict";Object.defineProperty(di,"__esModule",{value:!0});di.resolveAxisDirection=di.getDirectionValue=di.getDirectionKey=di.getDifference=void 0;var Dn=Ri(),bw=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=Object.keys(e).toString();switch(n){case Dn.TraceDirectionKey.POSITIVE:return Dn.TraceDirectionKey.POSITIVE;case Dn.TraceDirectionKey.NEGATIVE:return Dn.TraceDirectionKey.NEGATIVE;default:return Dn.TraceDirectionKey.NONE}};di.getDirectionKey=bw;var _w=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return e[e.length-1]||0};di.getDirectionValue=_w;var vw=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Math.abs(e-n)};di.getDifference=vw;var $w=function(e,n){var i=Dn.Direction.LEFT,l=Dn.Direction.RIGHT,r=Dn.Direction.NONE;return e===Dn.Axis.Y&&(i=Dn.Direction.BOTTOM,l=Dn.Direction.TOP),n===Dn.TraceDirectionKey.NEGATIVE&&(r=i),n===Dn.TraceDirectionKey.POSITIVE&&(r=l),r};di.resolveAxisDirection=$w});var op=Kt(ip=>{"use strict";Object.defineProperty(ip,"__esModule",{value:!0});ip.calculateDirectionDelta=yw;var ww=Ri(),as=Xa();function yw(t){for(var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=t.length,i=n-1,l=ww.TraceDirectionKey.NONE;i>=0;i--){var r=t[i],a=(0,as.getDirectionKey)(r),u=(0,as.getDirectionValue)(r[a]),m=t[i-1]||{},f=(0,as.getDirectionKey)(m),c=(0,as.getDirectionValue)(m[f]),g=(0,as.getDifference)(u,c);if(g>=e){l=a;break}else l=f}return l}});var lp=Kt(sp=>{"use strict";Object.defineProperty(sp,"__esModule",{value:!0});sp.calculateDuration=kw;function kw(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return t?e-t:0}});var A_=Kt(rp=>{"use strict";Object.defineProperty(rp,"__esModule",{value:!0});rp.calculateMovingPosition=Tw;function Tw(t){if("changedTouches"in t){var e=t.changedTouches&&t.changedTouches[0];return{x:e&&e.clientX,y:e&&e.clientY}}return{x:t.clientX,y:t.clientY}}});var up=Kt(ap=>{"use strict";Object.defineProperty(ap,"__esModule",{value:!0});ap.updateTrace=Mw;function Mw(t,e){var n=t[t.length-1];return n!==e&&t.push(e),t}});var mp=Kt(fp=>{"use strict";Object.defineProperty(fp,"__esModule",{value:!0});fp.calculateTraceDirections=Ew;var Za=Ri();function I_(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Ew(){for(var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],e=[],n=Za.TraceDirectionKey.POSITIVE,i=Za.TraceDirectionKey.NEGATIVE,l=0,r=[],a=Za.TraceDirectionKey.NONE;lm?n:i;a===Za.TraceDirectionKey.NONE&&(a=f),f===a?r.push(u):(e.push(I_({},a,r.slice())),r=[],r.push(u),a=f)}else u!==0&&(a=u>0?n:i),r.push(u)}return r.length&&e.push(I_({},a,r)),e}});var cp=Kt(dp=>{"use strict";Object.defineProperty(dp,"__esModule",{value:!0});dp.resolveDirection=Aw;var Cw=np(),Sw=mp(),Lw=op(),O_=Xa(),Dw=Ri();function Aw(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Dw.Axis.X,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;if(n){var i=(0,Sw.calculateTraceDirections)(t),l=(0,Lw.calculateDirectionDelta)(i,n);return(0,O_.resolveAxisDirection)(e,l)}var r=(0,Cw.calculateDirection)(t);return(0,O_.resolveAxisDirection)(e,r)}});var hp=Kt(pp=>{"use strict";Object.defineProperty(pp,"__esModule",{value:!0});pp.calculateVelocity=Iw;function Iw(t,e,n){var i=Math.sqrt(t*t+e*e);return i/(n||1)}});var N_=Kt(gp=>{"use strict";Object.defineProperty(gp,"__esModule",{value:!0});gp.calculatePosition=Hw;var x_=up(),H_=cp(),Ow=lp(),xw=hp(),P_=Ri();function Hw(t,e){var n=t.start,i=t.x,l=t.y,r=t.traceX,a=t.traceY,u=e.rotatePosition,m=e.directionDelta,f=u.x-i,c=l-u.y,g=Math.abs(f),b=Math.abs(c);(0,x_.updateTrace)(r,f),(0,x_.updateTrace)(a,c);var h=(0,H_.resolveDirection)(r,P_.Axis.X,m),v=(0,H_.resolveDirection)(a,P_.Axis.Y,m),w=(0,Ow.calculateDuration)(n,Date.now()),k=(0,xw.calculateVelocity)(g,b,w);return{absX:g,absY:b,deltaX:f,deltaY:c,directionX:h,directionY:v,duration:w,positionX:u.x,positionY:u.y,velocity:k}}});var F_=Kt(Ja=>{"use strict";Object.defineProperty(Ja,"__esModule",{value:!0});Ja.checkIsMoreThanSingleTouches=void 0;var Pw=function(e){return!!(e.touches&&e.touches.length>1)};Ja.checkIsMoreThanSingleTouches=Pw});var _p=Kt(bp=>{"use strict";Object.defineProperty(bp,"__esModule",{value:!0});bp.createOptions=Nw;function Nw(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.defineProperty(t,"passive",{get:function(){return this.isPassiveSupported=!0,!0},enumerable:!0}),t}});var q_=Kt(us=>{"use strict";Object.defineProperty(us,"__esModule",{value:!0});us.checkIsPassiveSupported=qw;us.noop=void 0;var Fw=_p();function qw(t){if(typeof t=="boolean")return t;var e={isPassiveSupported:t};try{var n=(0,Fw.createOptions)(e);window.addEventListener("checkIsPassiveSupported",vp,n),window.removeEventListener("checkIsPassiveSupported",vp,n)}catch{}return e.isPassiveSupported}var vp=function(){};us.noop=vp});var B_=Kt(Qa=>{"use strict";Object.defineProperty(Qa,"__esModule",{value:!0});Qa.checkIsTouchEventsSupported=void 0;function $p(t){"@babel/helpers - typeof";return $p=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$p(t)}var Bw=function(){return(typeof window>"u"?"undefined":$p(window))==="object"&&("ontouchstart"in window||!!window.navigator.maxTouchPoints)};Qa.checkIsTouchEventsSupported=Bw});var j_=Kt(eu=>{"use strict";Object.defineProperty(eu,"__esModule",{value:!0});eu.getInitialState=void 0;function R_(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(l){return Object.getOwnPropertyDescriptor(t,l).enumerable})),n.push.apply(n,i)}return n}function Rw(t){for(var e=1;e0&&arguments[0]!==void 0?arguments[0]:{};return Rw({x:0,y:0,start:0,isSwiping:!1,traceX:[],traceY:[]},e)};eu.getInitialState=zw});var W_=Kt(tu=>{"use strict";Object.defineProperty(tu,"__esModule",{value:!0});tu.getInitialProps=void 0;function z_(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(l){return Object.getOwnPropertyDescriptor(t,l).enumerable})),n.push.apply(n,i)}return n}function Ww(t){for(var e=1;e0&&arguments[0]!==void 0?arguments[0]:{};return Ww({element:null,target:null,delta:10,directionDelta:0,rotationAngle:0,mouseTrackingEnabled:!1,touchTrackingEnabled:!0,preventDefaultTouchmoveEvent:!1,preventTrackingOnMouseleave:!1},e)};tu.getInitialProps=Uw});var V_=Kt(wp=>{"use strict";Object.defineProperty(wp,"__esModule",{value:!0});wp.getOptions=Yw;function Yw(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;return t?{passive:!1}:{}}});var U_=Kt(yp=>{"use strict";Object.defineProperty(yp,"__esModule",{value:!0});yp.rotateByAngle=Gw;function Gw(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(e===0)return t;var n=t.x,i=t.y,l=Math.PI/180*e,r=n*Math.cos(l)+i*Math.sin(l),a=i*Math.cos(l)-n*Math.sin(l);return{x:r,y:a}}});var Y_=Kt(et=>{"use strict";Object.defineProperty(et,"__esModule",{value:!0});var kp=np();Object.keys(kp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===kp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return kp[t]}})});var Tp=op();Object.keys(Tp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Tp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Tp[t]}})});var Mp=lp();Object.keys(Mp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Mp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Mp[t]}})});var Ep=A_();Object.keys(Ep).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Ep[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Ep[t]}})});var Cp=N_();Object.keys(Cp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Cp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Cp[t]}})});var Sp=mp();Object.keys(Sp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Sp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Sp[t]}})});var Lp=hp();Object.keys(Lp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Lp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Lp[t]}})});var Dp=F_();Object.keys(Dp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Dp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Dp[t]}})});var Ap=q_();Object.keys(Ap).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Ap[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Ap[t]}})});var Ip=B_();Object.keys(Ip).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Ip[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Ip[t]}})});var Op=Xa();Object.keys(Op).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Op[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Op[t]}})});var xp=_p();Object.keys(xp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===xp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return xp[t]}})});var Hp=j_();Object.keys(Hp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Hp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Hp[t]}})});var Pp=W_();Object.keys(Pp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Pp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Pp[t]}})});var Np=V_();Object.keys(Np).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Np[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Np[t]}})});var Fp=cp();Object.keys(Fp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Fp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Fp[t]}})});var qp=U_();Object.keys(qp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===qp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return qp[t]}})});var Bp=up();Object.keys(Bp).forEach(function(t){t==="default"||t==="__esModule"||t in et&&et[t]===Bp[t]||Object.defineProperty(et,t,{enumerable:!0,get:function(){return Bp[t]}})})});var Z_=Kt(fo=>{"use strict";function jp(t){"@babel/helpers - typeof";return jp=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},jp(t)}Object.defineProperty(fo,"__esModule",{value:!0});var Kw={};fo.default=void 0;var fn=Xw(Y_()),Rp=Ri();Object.keys(Rp).forEach(function(t){t==="default"||t==="__esModule"||Object.prototype.hasOwnProperty.call(Kw,t)||t in fo&&fo[t]===Rp[t]||Object.defineProperty(fo,t,{enumerable:!0,get:function(){return Rp[t]}})});function X_(t){if(typeof WeakMap!="function")return null;var e=new WeakMap,n=new WeakMap;return(X_=function(l){return l?n:e})(t)}function Xw(t,e){if(!e&&t&&t.__esModule)return t;if(t===null||jp(t)!=="object"&&typeof t!="function")return{default:t};var n=X_(e);if(n&&n.has(t))return n.get(t);var i={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in t)if(r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)){var a=l?Object.getOwnPropertyDescriptor(t,r):null;a&&(a.get||a.set)?Object.defineProperty(i,r,a):i[r]=t[r]}return i.default=t,n&&n.set(t,i),i}function Zw(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function G_(t,e){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{directionDelta:0},l=this.props.rotationAngle,r=i.directionDelta,a=fn.calculateMovingPosition(n),u=fn.rotateByAngle(a,l);return fn.calculatePosition(this.state,{rotatePosition:u,directionDelta:r})}},{key:"handleSwipeStart",value:function(n){if(!fn.checkIsMoreThanSingleTouches(n)){var i=this.props.rotationAngle,l=fn.calculateMovingPosition(n),r=fn.rotateByAngle(l,i),a=r.x,u=r.y;this.state=fn.getInitialState({isSwiping:!1,start:Date.now(),x:a,y:u})}}},{key:"handleSwipeMove",value:function(n){var i=this.state,l=i.x,r=i.y,a=i.isSwiping;if(!(!l||!r||fn.checkIsMoreThanSingleTouches(n))){var u=this.props.directionDelta||0,m=this.getEventData(n,{directionDelta:u}),f=m.absX,c=m.absY,g=m.deltaX,b=m.deltaY,h=m.directionX,v=m.directionY,w=m.duration,k=m.velocity,_=this.props,M=_.delta,O=_.preventDefaultTouchmoveEvent,D=_.onSwipeStart,L=_.onSwiping;n.cancelable&&O&&n.preventDefault(),!(f{var eM=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};var Ze=function(t){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,i={},l={manual:t.Prism&&t.Prism.manual,disableWorkerMessageHandler:t.Prism&&t.Prism.disableWorkerMessageHandler,util:{encode:function w(k){return k instanceof r?new r(k.type,w(k.content),k.alias):Array.isArray(k)?k.map(w):k.replace(/&/g,"&").replace(/"u")return null;if("currentScript"in document&&1<2)return document.currentScript;try{throw new Error}catch(M){var w=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(M.stack)||[])[1];if(w){var k=document.getElementsByTagName("script");for(var _ in k)if(k[_].src==w)return k[_]}return null}},isActive:function(w,k,_){for(var M="no-"+k;w;){var O=w.classList;if(O.contains(k))return!0;if(O.contains(M))return!1;w=w.parentElement}return!!_}},languages:{plain:i,plaintext:i,text:i,txt:i,extend:function(w,k){var _=l.util.clone(l.languages[w]);for(var M in k)_[M]=k[M];return _},insertBefore:function(w,k,_,M){M=M||l.languages;var O=M[w],D={};for(var L in O)if(O.hasOwnProperty(L)){if(L==k)for(var T in _)_.hasOwnProperty(T)&&(D[T]=_[T]);_.hasOwnProperty(L)||(D[L]=O[L])}var A=M[w];return M[w]=D,l.languages.DFS(l.languages,function(H,I){I===A&&H!=w&&(this[H]=D)}),D},DFS:function w(k,_,M,O){O=O||{};var D=l.util.objId;for(var L in k)if(k.hasOwnProperty(L)){_.call(k,L,k[L],M||L);var T=k[L],A=l.util.type(T);A==="Object"&&!O[D(T)]?(O[D(T)]=!0,w(T,_,null,O)):A==="Array"&&!O[D(T)]&&(O[D(T)]=!0,w(T,_,L,O))}}},plugins:{},highlightAll:function(w,k){l.highlightAllUnder(document,w,k)},highlightAllUnder:function(w,k,_){var M={callback:_,container:w,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};l.hooks.run("before-highlightall",M),M.elements=Array.prototype.slice.apply(M.container.querySelectorAll(M.selector)),l.hooks.run("before-all-elements-highlight",M);for(var O=0,D;D=M.elements[O++];)l.highlightElement(D,k===!0,M.callback)},highlightElement:function(w,k,_){var M=l.util.getLanguage(w),O=l.languages[M];l.util.setLanguage(w,M);var D=w.parentElement;D&&D.nodeName.toLowerCase()==="pre"&&l.util.setLanguage(D,M);var L=w.textContent,T={element:w,language:M,grammar:O,code:L};function A(I){T.highlightedCode=I,l.hooks.run("before-insert",T),T.element.innerHTML=T.highlightedCode,l.hooks.run("after-highlight",T),l.hooks.run("complete",T),_&&_.call(T.element)}if(l.hooks.run("before-sanity-check",T),D=T.element.parentElement,D&&D.nodeName.toLowerCase()==="pre"&&!D.hasAttribute("tabindex")&&D.setAttribute("tabindex","0"),!T.code){l.hooks.run("complete",T),_&&_.call(T.element);return}if(l.hooks.run("before-highlight",T),!T.grammar){A(l.util.encode(T.code));return}if(k&&t.Worker){var H=new Worker(l.filename);H.onmessage=function(I){A(I.data)},H.postMessage(JSON.stringify({language:T.language,code:T.code,immediateClose:!0}))}else A(l.highlight(T.code,T.grammar,T.language))},highlight:function(w,k,_){var M={code:w,grammar:k,language:_};if(l.hooks.run("before-tokenize",M),!M.grammar)throw new Error('The language "'+M.language+'" has no grammar.');return M.tokens=l.tokenize(M.code,M.grammar),l.hooks.run("after-tokenize",M),r.stringify(l.util.encode(M.tokens),M.language)},tokenize:function(w,k){var _=k.rest;if(_){for(var M in _)k[M]=_[M];delete k.rest}var O=new m;return f(O,O.head,w),u(w,O,k,O.head,0),g(O)},hooks:{all:{},add:function(w,k){var _=l.hooks.all;_[w]=_[w]||[],_[w].push(k)},run:function(w,k){var _=l.hooks.all[w];if(!(!_||!_.length))for(var M=0,O;O=_[M++];)O(k)}},Token:r};t.Prism=l;function r(w,k,_,M){this.type=w,this.content=k,this.alias=_,this.length=(M||"").length|0}r.stringify=function w(k,_){if(typeof k=="string")return k;if(Array.isArray(k)){var M="";return k.forEach(function(A){M+=w(A,_)}),M}var O={type:k.type,content:w(k.content,_),tag:"span",classes:["token",k.type],attributes:{},language:_},D=k.alias;D&&(Array.isArray(D)?Array.prototype.push.apply(O.classes,D):O.classes.push(D)),l.hooks.run("wrap",O);var L="";for(var T in O.attributes)L+=" "+T+'="'+(O.attributes[T]||"").replace(/"/g,""")+'"';return"<"+O.tag+' class="'+O.classes.join(" ")+'"'+L+">"+O.content+""};function a(w,k,_,M){w.lastIndex=k;var O=w.exec(_);if(O&&M&&O[1]){var D=O[1].length;O.index+=D,O[0]=O[0].slice(D)}return O}function u(w,k,_,M,O,D){for(var L in _)if(!(!_.hasOwnProperty(L)||!_[L])){var T=_[L];T=Array.isArray(T)?T:[T];for(var A=0;A=D.reach);F+=G.value.length,G=G.next){var z=G.value;if(k.length>w.length)return;if(!(z instanceof r)){var V=1,Q;if(N){if(Q=a(U,F,w,P),!Q||Q.index>=w.length)break;var Z=Q.index,le=Q.index+Q[0].length,ee=F;for(ee+=G.value.length;Z>=ee;)G=G.next,ee+=G.value.length;if(ee-=G.value.length,F=ee,G.value instanceof r)continue;for(var X=G;X!==k.tail&&(eeD.reach&&(D.reach=Y);var J=G.prev;he&&(J=f(k,J,he),F+=he.length),c(k,J,V);var pe=new r(L,I?l.tokenize(ge,I):ge,j,ge);if(G=f(k,J,pe),W&&f(k,G,W),V>1){var we={cause:L+","+A,reach:Y};u(w,k,_,G.prev,F,we),D&&we.reach>D.reach&&(D.reach=we.reach)}}}}}}function m(){var w={value:null,prev:null,next:null},k={value:null,prev:w,next:null};w.next=k,this.head=w,this.tail=k,this.length=0}function f(w,k,_){var M=k.next,O={value:_,prev:k,next:M};return k.next=O,M.prev=O,w.length++,O}function c(w,k,_){for(var M=k.next,O=0;O<_&&M!==w.tail;O++)M=M.next;k.next=M,M.prev=k,w.length-=O}function g(w){for(var k=[],_=w.head.next;_!==w.tail;)k.push(_.value),_=_.next;return k}if(!t.document)return t.addEventListener&&(l.disableWorkerMessageHandler||t.addEventListener("message",function(w){var k=JSON.parse(w.data),_=k.language,M=k.code,O=k.immediateClose;t.postMessage(l.highlight(M,l.languages[_],_)),O&&t.close()},!1)),l;var b=l.util.currentScript();b&&(l.filename=b.src,b.hasAttribute("data-manual")&&(l.manual=!0));function h(){l.manual||l.highlightAll()}if(!l.manual){var v=document.readyState;v==="loading"||v==="interactive"&&b&&b.defer?document.addEventListener("DOMContentLoaded",h):window.requestAnimationFrame?window.requestAnimationFrame(h):window.setTimeout(h,16)}return l}(eM);typeof nu<"u"&&nu.exports&&(nu.exports=Ze);typeof global<"u"&&(global.Prism=Ze);Ze.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};Ze.languages.markup.tag.inside["attr-value"].inside.entity=Ze.languages.markup.entity;Ze.languages.markup.doctype.inside["internal-subset"].inside=Ze.languages.markup;Ze.hooks.add("wrap",function(t){t.type==="entity"&&(t.attributes.title=t.content.replace(/&/,"&"))});Object.defineProperty(Ze.languages.markup.tag,"addInlined",{value:function(e,n){var i={};i["language-"+n]={pattern:/(^$)/i,lookbehind:!0,inside:Ze.languages[n]},i.cdata=/^$/i;var l={"included-cdata":{pattern://i,inside:i}};l["language-"+n]={pattern:/[\s\S]+/,inside:Ze.languages[n]};var r={};r[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:l},Ze.languages.insertBefore("markup","cdata",r)}});Object.defineProperty(Ze.languages.markup.tag,"addAttribute",{value:function(t,e){Ze.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+t+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Ze.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}});Ze.languages.html=Ze.languages.markup;Ze.languages.mathml=Ze.languages.markup;Ze.languages.svg=Ze.languages.markup;Ze.languages.xml=Ze.languages.extend("markup",{});Ze.languages.ssml=Ze.languages.xml;Ze.languages.atom=Ze.languages.xml;Ze.languages.rss=Ze.languages.xml;(function(t){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;t.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+e.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},t.languages.css.atrule.inside.rest=t.languages.css;var n=t.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))})(Ze);Ze.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};Ze.languages.javascript=Ze.languages.extend("clike",{"class-name":[Ze.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});Ze.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;Ze.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Ze.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Ze.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Ze.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Ze.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Ze.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});Ze.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Ze.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});Ze.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});Ze.languages.markup&&(Ze.languages.markup.tag.addInlined("script","javascript"),Ze.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));Ze.languages.js=Ze.languages.javascript;(function(){if(typeof Ze>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var t="Loading\u2026",e=function(b,h){return"\u2716 Error "+b+" while fetching file: "+h},n="\u2716 Error: File does not exist or is empty",i={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},l="data-src-status",r="loading",a="loaded",u="failed",m="pre[data-src]:not(["+l+'="'+a+'"]):not(['+l+'="'+r+'"])';function f(b,h,v){var w=new XMLHttpRequest;w.open("GET",b,!0),w.onreadystatechange=function(){w.readyState==4&&(w.status<400&&w.responseText?h(w.responseText):w.status>=400?v(e(w.status,w.statusText)):v(n))},w.send(null)}function c(b){var h=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(b||"");if(h){var v=Number(h[1]),w=h[2],k=h[3];return w?k?[v,Number(k)]:[v,void 0]:[v,v]}}Ze.hooks.add("before-highlightall",function(b){b.selector+=", "+m}),Ze.hooks.add("before-sanity-check",function(b){var h=b.element;if(h.matches(m)){b.code="",h.setAttribute(l,r);var v=h.appendChild(document.createElement("CODE"));v.textContent=t;var w=h.getAttribute("data-src"),k=b.language;if(k==="none"){var _=(/\.(\w+)$/.exec(w)||[,"none"])[1];k=i[_]||_}Ze.util.setLanguage(v,k),Ze.util.setLanguage(h,k);var M=Ze.plugins.autoloader;M&&M.loadLanguages(k),f(w,function(O){h.setAttribute(l,a);var D=c(h.getAttribute("data-range"));if(D){var L=O.split(/\r\n?|\n/g),T=D[0],A=D[1]==null?L.length:D[1];T<0&&(T+=L.length),T=Math.max(0,Math.min(T-1,L.length)),A<0&&(A+=L.length),A=Math.max(0,Math.min(A,L.length)),O=L.slice(T,A).join(` -`),h.hasAttribute("data-start")||h.setAttribute("data-start",String(T+1))}v.textContent=O,Ze.highlightElement(v)},function(O){h.setAttribute(l,u),v.textContent=O})}}),Ze.plugins.fileHighlight={highlight:function(h){for(var v=(h||document).querySelectorAll(m),w=0,k;k=v[w++];)Ze.highlightElement(k)}};var g=!1;Ze.fileHighlight=function(){g||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),g=!0),Ze.plugins.fileHighlight.highlight.apply(this,arguments)}})()});var _2=Kt((mz,iu)=>{(function(){if(typeof Prism>"u")return;var t=Object.assign||function(r,a){for(var u in a)a.hasOwnProperty(u)&&(r[u]=a[u]);return r};function e(r){this.defaults=t({},r)}function n(r){return r.replace(/-(\w)/g,function(a,u){return u.toUpperCase()})}function i(r){for(var a=0,u=0;ua&&(f[g]=` -`+f[g],c=b)}u[m]=f.join("")}return u.join(` -`)}},typeof iu<"u"&&iu.exports&&(iu.exports=e),Prism.plugins.NormalizeWhitespace=new e({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),Prism.hooks.add("before-sanity-check",function(r){var a=Prism.plugins.NormalizeWhitespace;if(!(r.settings&&r.settings["whitespace-normalization"]===!1)&&Prism.util.isActive(r.element,"whitespace-normalization",!0)){if((!r.element||!r.element.parentNode)&&r.code){r.code=a.normalize(r.code,r.settings);return}var u=r.element.parentNode;if(!(!r.code||!u||u.nodeName.toLowerCase()!=="pre")){r.settings==null&&(r.settings={});for(var m in l)if(Object.hasOwnProperty.call(l,m)){var f=l[m];if(u.hasAttribute("data-"+m))try{var c=JSON.parse(u.getAttribute("data-"+m)||"true");typeof c===f&&(r.settings[m]=c)}catch{}}for(var g=u.childNodes,b="",h="",v=!1,w=0;wt;function tt(t,e){for(let n in e)t[n]=e[n];return t}function yd(t){return t()}function ca(){return Object.create(null)}function Re(t){t.forEach(yd)}function _t(t){return typeof t=="function"}function me(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}var da;function Ig(t,e){return t===e?!0:(da||(da=document.createElement("a")),da.href=e,t===da.href)}function Og(t){return Object.keys(t).length===0}function kd(t,...e){if(t==null){for(let i of e)i(void 0);return Le}let n=t.subscribe(...e);return n.unsubscribe?()=>n.unsubscribe():n}function ho(t){let e;return kd(t,n=>e=n)(),e}function un(t,e,n){t.$$.on_destroy.push(kd(e,n))}function Dt(t,e,n,i){if(t){let l=xg(t,e,n,i);return t[0](l)}}function xg(t,e,n,i){return t[1]&&i?tt(n.ctx.slice(),t[1](i(e))):n.ctx}function At(t,e,n,i){if(t[2]&&i){let l=t[2](i(n));if(e.dirty===void 0)return l;if(typeof l=="object"){let r=[],a=Math.max(e.dirty.length,l.length);for(let u=0;u32){let e=[],n=t.ctx.length/32;for(let i=0;iwindow.performance.now():()=>Date.now(),Fo=Ng?t=>requestAnimationFrame(t):Le;var bo=new Set;function Fg(t){bo.forEach(e=>{e.c(t)||(bo.delete(e),e.f())}),bo.size!==0&&Fo(Fg)}function _o(t){let e;return bo.size===0&&Fo(Fg),{promise:new Promise(n=>{bo.add(e={c:t,f:n})}),abort(){bo.delete(e)}}}var qo=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global;var ha=class t{_listeners="WeakMap"in qo?new WeakMap:void 0;_observer=void 0;options;constructor(e){this.options=e}observe(e,n){return this._listeners.set(e,n),this._getObserver().observe(e,this.options),()=>{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){return this._observer??(this._observer=new ResizeObserver(e=>{for(let n of e)t.entries.set(n.target,n),this._listeners.get(n.target)?.(n)}))}};ha.entries="WeakMap"in qo?new WeakMap:void 0;var qg=!1;function Bg(){qg=!0}function Rg(){qg=!1}function q(t,e){t.appendChild(e)}function Md(t){if(!t)return document;let e=t.getRootNode?t.getRootNode():t.ownerDocument;return e&&e.host?e:t.ownerDocument}function jg(t){let e=p("style");return e.textContent="/* empty */",E2(Md(t),e),e.sheet}function E2(t,e){return q(t.head||t,e),e.sheet}function s(t,e,n){t.insertBefore(e,n||null)}function o(t){t.parentNode&&t.parentNode.removeChild(t)}function St(t,e){for(let n=0;nt.removeEventListener(e,n,i)}function Un(t){return function(e){return e.preventDefault(),t.call(this,e)}}function ga(t){return function(e){return e.stopPropagation(),t.call(this,e)}}function x(t,e,n){n==null?t.removeAttribute(e):t.getAttribute(e)!==n&&t.setAttribute(e,n)}var C2=["width","height"];function Ct(t,e){let n=Object.getOwnPropertyDescriptors(t.__proto__);for(let i in e)e[i]==null?t.removeAttribute(i):i==="style"?t.style.cssText=e[i]:i==="__value"?t.value=t[i]=e[i]:n[i]&&n[i].set&&C2.indexOf(i)===-1?t[i]=e[i]:x(t,i,e[i])}function zg(t){return t===""?null:+t}function Wg(t){return Array.from(t.childNodes)}function je(t,e){e=""+e,t.data!==e&&(t.data=e)}function ct(t,e){t.value=e??""}function Pt(t,e,n,i){n==null?t.style.removeProperty(e):t.style.setProperty(e,n,i?"important":"")}function Ed(t,e,n){for(let i=0;i{e[n.slot||"default"]=!0}),e}function Di(t,e){return new t(e)}var ba=new Map,_a=0;function S2(t){let e=5381,n=t.length;for(;n--;)e=(e<<5)-e^t.charCodeAt(n);return e>>>0}function L2(t,e){let n={stylesheet:jg(e),rules:{}};return ba.set(t,n),n}function Wi(t,e,n,i,l,r,a,u=0){let m=16.666/i,f=`{ -`;for(let k=0;k<=1;k+=m){let _=e+(n-e)*r(k);f+=k*100+`%{${a(_,1-_)}} -`}let c=f+`100% {${a(n,1-n)}} -}`,g=`__svelte_${S2(c)}_${u}`,b=Md(t),{stylesheet:h,rules:v}=ba.get(b)||L2(b,t);v[g]||(v[g]=!0,h.insertRule(`@keyframes ${g} ${c}`,h.cssRules.length));let w=t.style.animation||"";return t.style.animation=`${w?`${w}, `:""}${g} ${i}ms linear ${l}ms 1 both`,_a+=1,g}function Vi(t,e){let n=(t.style.animation||"").split(", "),i=n.filter(e?r=>r.indexOf(e)<0:r=>r.indexOf("__svelte")===-1),l=n.length-i.length;l&&(t.style.animation=i.join(", "),_a-=l,_a||D2())}function D2(){Fo(()=>{_a||(ba.forEach(t=>{let{ownerNode:e}=t.stylesheet;e&&o(e)}),ba.clear())})}function va(t,e,n,i){if(!e)return Le;let l=t.getBoundingClientRect();if(e.left===l.left&&e.right===l.right&&e.top===l.top&&e.bottom===l.bottom)return Le;let{delay:r=0,duration:a=300,easing:u=Si,start:m=go()+r,end:f=m+a,tick:c=Le,css:g}=n(t,{from:e,to:l},i),b=!0,h=!1,v;function w(){g&&(v=Wi(t,0,1,a,r,u,g)),r||(h=!0)}function k(){g&&Vi(t,v),b=!1}return _o(_=>{if(!h&&_>=m&&(h=!0),h&&_>=f&&(c(1,0),k()),!b)return!1;if(h){let M=_-m,O=0+1*u(M/a);c(O,1-O)}return!0}),w(),c(0,1),k}function $a(t){let e=getComputedStyle(t);if(e.position!=="absolute"&&e.position!=="fixed"){let{width:n,height:i}=e,l=t.getBoundingClientRect();t.style.position="absolute",t.style.width=n,t.style.height=i,jo(t,l)}}function jo(t,e){let n=t.getBoundingClientRect();if(e.left!==n.left||e.top!==n.top){let i=getComputedStyle(t),l=i.transform==="none"?"":i.transform;t.style.transform=`${l} translate(${e.left-n.left}px, ${e.top-n.top}px)`}}var Ai;function _i(t){Ai=t}function Ii(){if(!Ai)throw new Error("Function called outside component initialization");return Ai}function Cd(t){Ii().$$.before_update.push(t)}function Nt(t){Ii().$$.on_mount.push(t)}function Cn(t){Ii().$$.after_update.push(t)}function on(t){Ii().$$.on_destroy.push(t)}function rt(){let t=Ii();return(e,n,{cancelable:i=!1}={})=>{let l=t.$$.callbacks[e];if(l){let r=Ro(e,n,{cancelable:i});return l.slice().forEach(a=>{a.call(t,r)}),!r.defaultPrevented}return!0}}function Sd(t,e){return Ii().$$.context.set(t,e),e}function Ld(t){return Ii().$$.context.get(t)}function Qe(t,e){let n=t.$$.callbacks[e.type];n&&n.slice().forEach(i=>i.call(this,e))}var Ui=[];var _e=[],$o=[],Ad=[],A2=Promise.resolve(),Id=!1;function Yg(){Id||(Id=!0,A2.then(Mt))}function en(t){$o.push(t)}function Ue(t){Ad.push(t)}var Dd=new Set,vo=0;function Mt(){if(vo!==0)return;let t=Ai;do{try{for(;vot.indexOf(i)===-1?e.push(i):n.push(i)),n.forEach(i=>i()),$o=e}var zo;function Od(){return zo||(zo=Promise.resolve(),zo.then(()=>{zo=null})),zo}function Yi(t,e,n){t.dispatchEvent(Ro(`${e?"intro":"outro"}${n}`))}var wa=new Set,si;function We(){si={r:0,c:[],p:si}}function Ve(){si.r||Re(si.c),si=si.p}function $(t,e){t&&t.i&&(wa.delete(t),t.i(e))}function y(t,e,n,i){if(t&&t.o){if(wa.has(t))return;wa.add(t),si.c.push(()=>{wa.delete(t),i&&(n&&t.d(1),i())}),t.o(e)}else i&&i()}var xd={duration:0};function wo(t,e,n){let i={direction:"in"},l=e(t,n,i),r=!1,a,u,m=0;function f(){a&&Vi(t,a)}function c(){let{delay:b=0,duration:h=300,easing:v=Si,tick:w=Le,css:k}=l||xd;k&&(a=Wi(t,0,1,h,b,v,k,m++)),w(0,1);let _=go()+b,M=_+h;u&&u.abort(),r=!0,en(()=>Yi(t,!0,"start")),u=_o(O=>{if(r){if(O>=M)return w(1,0),Yi(t,!0,"end"),f(),r=!1;if(O>=_){let D=v((O-_)/h);w(D,1-D)}}return r})}let g=!1;return{start(){g||(g=!0,Vi(t),_t(l)?(l=l(i),Od().then(c)):c())},invalidate(){g=!1},end(){r&&(f(),r=!1)}}}function yo(t,e,n){let i={direction:"out"},l=e(t,n,i),r=!0,a,u=si;u.r+=1;let m;function f(){let{delay:c=0,duration:g=300,easing:b=Si,tick:h=Le,css:v}=l||xd;v&&(a=Wi(t,1,0,g,c,b,v));let w=go()+c,k=w+g;en(()=>Yi(t,!1,"start")),"inert"in t&&(m=t.inert,t.inert=!0),_o(_=>{if(r){if(_>=k)return h(0,1),Yi(t,!1,"end"),--u.r||Re(u.c),!1;if(_>=w){let M=b((_-w)/g);h(1-M,M)}}return r})}return _t(l)?Od().then(()=>{l=l(i),f()}):f(),{end(c){c&&"inert"in t&&(t.inert=m),c&&l.tick&&l.tick(1,0),r&&(a&&Vi(t,a),r=!1)}}}function Hd(t,e,n,i){let r=e(t,n,{direction:"both"}),a=i?0:1,u=null,m=null,f=null,c;function g(){f&&Vi(t,f)}function b(v,w){let k=v.b-a;return w*=Math.abs(k),{a,b:v.b,d:k,duration:w,start:v.start,end:v.start+w,group:v.group}}function h(v){let{delay:w=0,duration:k=300,easing:_=Si,tick:M=Le,css:O}=r||xd,D={start:go()+w,b:v};v||(D.group=si,si.r+=1),"inert"in t&&(v?c!==void 0&&(t.inert=c):(c=t.inert,t.inert=!0)),u||m?m=D:(O&&(g(),f=Wi(t,a,v,k,w,_,O)),v&&M(0,1),u=b(D,k),en(()=>Yi(t,v,"start")),_o(L=>{if(m&&L>m.start&&(u=b(m,k),m=null,Yi(t,u.b,"start"),O&&(g(),f=Wi(t,a,u.b,u.duration,0,_,r.css))),u){if(L>=u.end)M(a=u.b,1-a),Yi(t,u.b,"end"),m||(u.b?g():--u.group.r||Re(u.group.c)),u=null;else if(L>=u.start){let T=L-u.start;a=u.a+u.d*_(T/u.duration),M(a,1-a)}}return!!(u||m)}))}return{run(v){_t(r)?Od().then(()=>{r=r({direction:v?"in":"out"}),h(v)}):h(v)},end(){g(),u=m=null}}}function Ye(t){return t?.length!==void 0?t:Array.from(t)}function Kg(t,e){t.d(1),e.delete(t.key)}function Wo(t,e){y(t,1,1,()=>{e.delete(t.key)})}function ya(t,e){t.f(),Wo(t,e)}function li(t,e,n,i,l,r,a,u,m,f,c,g){let b=t.length,h=r.length,v=b,w={};for(;v--;)w[t[v].key]=v;let k=[],_=new Map,M=new Map,O=[];for(v=h;v--;){let A=g(l,r,v),H=n(A),I=a.get(H);I?i&&O.push(()=>I.p(A,e)):(I=f(H,A),I.c()),_.set(H,k[v]=I),H in w&&M.set(H,Math.abs(v-w[H]))}let D=new Set,L=new Set;function T(A){$(A,1),A.m(u,c),a.set(A.key,A),c=A.first,h--}for(;b&&h;){let A=k[h-1],H=t[b-1],I=A.key,P=H.key;A===H?(c=A.first,b--,h--):_.has(P)?!a.has(I)||D.has(I)?T(A):L.has(P)?b--:M.get(I)>M.get(P)?(L.add(I),T(A)):(D.add(P),b--):(m(H,a),b--)}for(;b--;){let A=t[b];_.has(A.key)||m(A,a)}for(;h;)T(k[h-1]);return Re(O),k}function jt(t,e){let n={},i={},l={$$scope:1},r=t.length;for(;r--;){let a=t[r],u=e[r];if(u){for(let m in a)m in u||(i[m]=1);for(let m in u)l[m]||(n[m]=u[m],l[m]=1);t[r]=u}else for(let m in a)l[m]=1}for(let a in i)a in n||(n[a]=void 0);return n}function ko(t){return typeof t=="object"&&t!==null?t:{}}var O2=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],x2=new Set([...O2]);function Ge(t,e,n){let i=t.$$.props[e];i!==void 0&&(t.$$.bound[i]=n,n(t.$$.ctx[i]))}function S(t){t&&t.c()}function E(t,e,n){let{fragment:i,after_update:l}=t.$$;i&&i.m(e,n),en(()=>{let r=t.$$.on_mount.map(yd).filter(_t);t.$$.on_destroy?t.$$.on_destroy.push(...r):Re(r),t.$$.on_mount=[]}),l.forEach(en)}function C(t,e){let n=t.$$;n.fragment!==null&&(Gg(n.after_update),Re(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function P2(t,e){t.$$.dirty[0]===-1&&(Ui.push(t),Yg(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{let v=h.length?h[0]:b;return f.ctx&&l(f.ctx[g],f.ctx[g]=v)&&(!f.skip_bound&&f.bound[g]&&f.bound[g](v),c&&P2(t,g)),b}):[],f.update(),c=!0,Re(f.before_update),f.fragment=i?i(f.ctx):!1,e.target){if(e.hydrate){Bg();let g=Wg(e.target);f.fragment&&f.fragment.l(g),g.forEach(o)}else f.fragment&&f.fragment.c();e.intro&&$(t.$$.fragment),E(t,e.target,e.anchor),Rg(),Mt()}_i(m)}var N2;typeof HTMLElement=="function"&&(N2=class extends HTMLElement{$$ctor;$$s;$$c;$$cn=!1;$$d={};$$r=!1;$$p_d={};$$l={};$$l_u=new Map;constructor(t,e,n){super(),this.$$ctor=t,this.$$s=e,n&&this.attachShadow({mode:"open"})}addEventListener(t,e,n){if(this.$$l[t]=this.$$l[t]||[],this.$$l[t].push(e),this.$$c){let i=this.$$c.$on(t,e);this.$$l_u.set(e,i)}super.addEventListener(t,e,n)}removeEventListener(t,e,n){if(super.removeEventListener(t,e,n),this.$$c){let i=this.$$l_u.get(e);i&&(i(),this.$$l_u.delete(e))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let t=function(l){return()=>{let r;return{c:function(){r=p("slot"),l!=="default"&&x(r,"name",l)},m:function(m,f){s(m,r,f)},d:function(m){m&&o(r)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;let e={},n=Ug(this);for(let l of this.$$s)l in n&&(e[l]=[t(l)]);for(let l of this.attributes){let r=this.$$g_p(l.name);r in this.$$d||(this.$$d[r]=Pd(r,l.value,this.$$p_d,"toProp"))}for(let l in this.$$p_d)!(l in this.$$d)&&this[l]!==void 0&&(this.$$d[l]=this[l],delete this[l]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:e,$$scope:{ctx:[]}}});let i=()=>{this.$$r=!0;for(let l in this.$$p_d)if(this.$$d[l]=this.$$c.$$.ctx[this.$$c.$$.props[l]],this.$$p_d[l].reflect){let r=Pd(l,this.$$d[l],this.$$p_d,"toAttribute");r==null?this.removeAttribute(this.$$p_d[l].attribute||l):this.setAttribute(this.$$p_d[l].attribute||l,r)}this.$$r=!1};this.$$c.$$.after_update.push(i),i();for(let l in this.$$l)for(let r of this.$$l[l]){let a=this.$$c.$on(l,r);this.$$l_u.set(r,a)}this.$$l={}}}attributeChangedCallback(t,e,n){this.$$r||(t=this.$$g_p(t),this.$$d[t]=Pd(t,n,this.$$p_d,"toProp"),this.$$c?.$set({[t]:this.$$d[t]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(t){return Object.keys(this.$$p_d).find(e=>this.$$p_d[e].attribute===t||!this.$$p_d[e].attribute&&e.toLowerCase()===t)||t}});function Pd(t,e,n,i){let l=n[t]?.type;if(e=l==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!n[t])return e;if(i==="toAttribute")switch(l){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(l){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}var fe=class{$$=void 0;$$set=void 0;$destroy(){C(this,1),this.$destroy=Le}$on(e,n){if(!_t(n))return Le;let i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(n),()=>{let l=i.indexOf(n);l!==-1&&i.splice(l,1)}}$set(e){this.$$set&&!Og(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};var Xg="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Xg);function F2(t){let e,n,i,l,r,a=t[4].default,u=Dt(a,t,t[3],null);return{c(){e=p("div"),n=p("div"),i=p("div"),u&&u.c(),x(i,"class","button-group-inner"),x(i,"role","group"),x(n,"class","button-group-scroller"),x(e,"class",l="button-group "+t[1]),ie(e,"round",t[2])},m(m,f){s(m,e,f),q(e,n),q(n,i),u&&u.m(i,null),t[5](e),r=!0},p(m,[f]){u&&u.p&&(!r||f&8)&&It(u,a,m,m[3],r?At(a,m[3],f,null):Ot(m[3]),null),(!r||f&2&&l!==(l="button-group "+m[1]))&&x(e,"class",l),(!r||f&6)&&ie(e,"round",m[2])},i(m){r||($(u,m),r=!0)},o(m){y(u,m),r=!1},d(m){m&&o(e),u&&u.d(m),t[5](null)}}}function q2(t,e,n){let{$$slots:i={},$$scope:l}=e,{class:r=""}=e,{round:a=void 0}=e,{element:u=void 0}=e;function m(f){_e[f?"unshift":"push"](()=>{u=f,n(0,u)})}return t.$$set=f=>{"class"in f&&n(1,r=f.class),"round"in f&&n(2,a=f.round),"element"in f&&n(0,u=f.element),"$$scope"in f&&n(3,l=f.$$scope)},[u,r,a,l,i,m]}var Nd=class extends fe{constructor(e){super(),de(this,e,q2,F2,me,{class:1,round:2,element:0})}},jn=Nd;var B2='",Vo={adjustments:'adjustments-horizontal">`}function Jg(t,e){Gi[t]||(Gi[t]=e)}function j2(t){let e,n;return{c(){e=new Li(!1),n=Tt(),e.a=n},m(i,l){e.m(t[0],i,l),s(i,n,l)},p(i,[l]){l&1&&e.p(i[0])},i:Le,o:Le,d(i){i&&(o(n),e.d())}}}function z2(t,e,n){let i,{name:l=""}=e;return t.$$set=r=>{"name"in r&&n(1,l=r.name)},t.$$.update=()=>{t.$$.dirty&2&&n(0,i=Ki(l))},[i,l]}var Fd=class extends fe{constructor(e){super(),de(this,e,z2,j2,me,{name:1})}},zt=Fd;function Qg(t){let e,n;return e=new zt({props:{name:t[10]}}),{c(){S(e.$$.fragment)},m(i,l){E(e,i,l),n=!0},p(i,l){let r={};l&1024&&(r.name=i[10]),e.$set(r)},i(i){n||($(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){C(e,i)}}}function W2(t){let e,n,i,l,r,a,u,m=t[10]&&Qg(t),f=t[17].default,c=Dt(f,t,t[16],null),g=[{type:i=t[6]?"submit":"button"},{class:l="button "+t[12]},t[15]],b={};for(let h=0;h{m=null}),Ve()),c&&c.p&&(!r||v&65536)&&It(c,f,h,h[16],r?At(f,h[16],v,null):Ot(h[16]),null),Ct(e,b=jt(g,[(!r||v&64&&i!==(i=h[6]?"submit":"button"))&&{type:i},(!r||v&4096&&l!==(l="button "+h[12]))&&{class:l},v&32768&&h[15]])),ie(e,"button-normal",!h[8]&&!h[9]&&!h[7]),ie(e,"button-outline",h[7]),ie(e,"button-link",h[8]),ie(e,"button-text",h[9]),ie(e,"button-has-text",h[14].default),ie(e,"round",h[11]),ie(e,"info",h[1]),ie(e,"success",h[2]),ie(e,"warning",h[3]),ie(e,"danger",h[4]),ie(e,"error",h[5]),ie(e,"touching",h[13])},i(h){r||($(m),$(c,h),r=!0)},o(h){y(m),y(c,h),r=!1},d(h){h&&o(e),m&&m.d(),c&&c.d(h),t[26](null),a=!1,Re(u)}}}function V2(t,e,n){let i=["element","info","success","warning","danger","error","submit","outline","link","text","icon","round","class"],l=kt(e,i),{$$slots:r={},$$scope:a}=e,u=pa(r),{element:m=void 0}=e,{info:f=!1}=e,{success:c=!1}=e,{warning:g=!1}=e,{danger:b=!1}=e,{error:h=!1}=e,{submit:v=!1}=e,{outline:w=!1}=e,{link:k=!1}=e,{text:_=!1}=e,{icon:M=void 0}=e,{round:O=void 0}=e,{class:D=""}=e,L=!1;function T(z){Qe.call(this,t,z)}function A(z){Qe.call(this,t,z)}function H(z){Qe.call(this,t,z)}function I(z){Qe.call(this,t,z)}function P(z){Qe.call(this,t,z)}function N(z){Qe.call(this,t,z)}function j(z){Qe.call(this,t,z)}function K(z){Qe.call(this,t,z)}function U(z){_e[z?"unshift":"push"](()=>{m=z,n(0,m)})}let G=()=>n(13,L=!0),F=()=>n(13,L=!1);return t.$$set=z=>{e=tt(tt({},e),Zt(z)),n(15,l=kt(e,i)),"element"in z&&n(0,m=z.element),"info"in z&&n(1,f=z.info),"success"in z&&n(2,c=z.success),"warning"in z&&n(3,g=z.warning),"danger"in z&&n(4,b=z.danger),"error"in z&&n(5,h=z.error),"submit"in z&&n(6,v=z.submit),"outline"in z&&n(7,w=z.outline),"link"in z&&n(8,k=z.link),"text"in z&&n(9,_=z.text),"icon"in z&&n(10,M=z.icon),"round"in z&&n(11,O=z.round),"class"in z&&n(12,D=z.class),"$$scope"in z&&n(16,a=z.$$scope)},[m,f,c,g,b,h,v,w,k,_,M,O,D,L,u,l,a,r,T,A,H,I,P,N,j,K,U,G,F]}var qd=class extends fe{constructor(e){super(),de(this,e,V2,W2,me,{element:0,info:1,success:2,warning:3,danger:4,error:5,submit:6,outline:7,link:8,text:9,icon:10,round:11,class:12})}},De=qd;var To=[];function Yn(t,e=Le){let n,i=new Set;function l(u){if(me(t,u)&&(t=u,n)){let m=!To.length;for(let f of i)f[1](),To.push(f,t);if(m){for(let f=0;f{i.delete(f),i.size===0&&n&&(n(),n=null)}}return{set:l,update:r,subscribe:a}}var Xi=["a[href]:not([disabled])","button:not([disabled])","iframe:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","[contentEditable]","[tabindex]:not(.focus-trap)"].join(","),sn=Yn(300),Bd=Yn(!1),e1=t=>sn.set(!t||t.matches?0:200),t1=t=>Bd.set(t&&t.matches);if(window.matchMedia){let t=window.matchMedia("(prefers-reduced-motion: reduce)");e1(t),t.addEventListener("change",e1);let e=window.matchMedia("(prefers-color-scheme: dark)");t1(e),e.addEventListener("change",t1)}function ka(t,e,n,i={}){let l={duration:ho(sn),easing:"ease-out",fill:"forwards"},r=Object.assign({},l,i);return new Promise(a=>{requestAnimationFrame(()=>{let u=t.animate([e,n],r);u.oncancel=a,u.onfinish=a})})}function i1(t,e=160){return ka(t,{opacity:1},{opacity:.5},{duration:e/2,fill:"backwards"})}function Uo(t){return structuredClone(t)}function Mo(t,e=300){let n;return(...i)=>{n&&clearTimeout(n),n=setTimeout(()=>t.apply(this,i),e)}}function Ta(t,e=300){let n=0;return(...i)=>{let l=new Date().getTime();if(!(l-nt.length)return!1;if(e===t)return!0;t=t.toLowerCase(),e=e.toLowerCase();let n=-1;for(let i of e)if(!~(n=t.indexOf(i,n+1)))return!1;return!0}function Xe(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{let e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function Oi(t){return t.type.includes("touch")?t.changedTouches[0].clientX:t.clientX}function Yo(t){return t.type.includes("touch")?t.changedTouches[0].clientY:t.clientY}function Gn(){let t=navigator.userAgent,e=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i;return!!(e.test(t)||(e=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i,e.test(t.slice(0,4))))}function U2(t,e){if(e in t)return t[e]}function Y2(t,e){let n={};return e.forEach(i=>{i in t&&(n[i]=t[i])}),n}function s1(t,e){return t?Array.isArray(e)?Y2(t,e):U2(t,e):{}}function l1(t,e=2){let n=Math.pow(10,e);return Math.round(t*n)/n}function G2(t){let e=t.getFullYear(),n=("0"+(t.getMonth()+1)).slice(-2),i=("0"+t.getDate()).slice(-2),l=("0"+t.getHours()).slice(-2),r=("0"+t.getMinutes()).slice(-2);return`${e}-${n}-${i} ${l}:${r}`}function Rd(t,e){if(!t)return"";e=e||new Date().getTime();let n=(e-+t)/1e3,i=[{label:"year",seconds:31536e3},{label:"month",seconds:2592e3},{label:"day",seconds:86400},{label:"hour",seconds:3600},{label:"minute",seconds:60}],l=[];for(;n>60;){let r=i.find(u=>u.secondsw.height||vc.top?"bottom":"top"}function K2(t,e){let n=e.getBoundingClientRect(),i=t.left+t.width/2,l=n.left+n.width/2,r=n.width?n.width/100:1,a=50+(i-l)/r,u=Math.max(8,Math.min(93,a));return`${Math.round(u*r-1)}px`}function n1(t){let e=getComputedStyle(t,null),n=e.overflowX||e.overflow;return/(auto|scroll)/.test(n)?t.scrollWidth>t.clientWidth:!1}function r1(t){if(t instanceof HTMLElement||t instanceof SVGElement){if(n1(t))return!0;for(;t=t.parentElement;)if(n1(t))return!0;return!1}}function Go(t){if(t=t[0]==="#"?t.slice(1):t,t.length===3&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),t.length!==6)return!1;let e=parseInt(t.substring(0,2),16),n=parseInt(t.substring(2,4),16),i=parseInt(t.substring(4,6),16);if(isNaN(e)||isNaN(n)||isNaN(i))return!1;let l=(e*299+n*587+i*114)/1e3;return isNaN(l)?!1:l<140}var X2=t=>({}),a1=t=>({});function Z2(t){let e,n,i,l,r,a,u,m,f,c,g,b,h,v,w,k,_=t[16].default,M=Dt(_,t,t[15],null),O=t[16].footer,D=Dt(O,t,t[15],a1);return{c(){e=p("div"),n=p("div"),i=p("div"),l=d(),r=p("h1"),a=ne(t[3]),u=d(),m=p("div"),M&&M.c(),f=d(),c=p("div"),D&&D.c(),g=d(),b=p("div"),x(i,"tabindex","0"),x(i,"class","focus-trap focus-trap-top"),x(r,"class","dialog-header"),x(m,"class","dialog-content"),x(c,"class","dialog-footer"),x(b,"tabindex","0"),x(b,"class","focus-trap focus-trap-bottom"),x(n,"class","dialog"),ie(n,"no-title",!t[3]),x(e,"role","dialog"),x(e,"aria-modal","true"),x(e,"aria-label",t[3]),x(e,"class",h="dialog-backdrop "+t[2]),ie(e,"opened",t[0])},m(L,T){s(L,e,T),q(e,n),q(n,i),q(n,l),q(n,r),q(r,a),q(n,u),q(n,m),M&&M.m(m,null),t[17](m),q(n,f),q(n,c),D&&D.m(c,null),t[18](c),q(n,g),q(n,b),t[19](n),t[20](e),v=!0,w||(k=[ye(i,"focus",t[8]),ye(b,"focus",t[7]),ye(e,"mousedown",t[9]),ye(e,"click",t[10])],w=!0)},p(L,[T]){(!v||T&8)&&je(a,L[3]),M&&M.p&&(!v||T&32768)&&It(M,_,L,L[15],v?At(_,L[15],T,null):Ot(L[15]),null),D&&D.p&&(!v||T&32768)&&It(D,O,L,L[15],v?At(O,L[15],T,X2):Ot(L[15]),a1),(!v||T&8)&&ie(n,"no-title",!L[3]),(!v||T&8)&&x(e,"aria-label",L[3]),(!v||T&4&&h!==(h="dialog-backdrop "+L[2]))&&x(e,"class",h),(!v||T&5)&&ie(e,"opened",L[0])},i(L){v||($(M,L),$(D,L),v=!0)},o(L){y(M,L),y(D,L),v=!1},d(L){L&&o(e),M&&M.d(L),t[17](null),D&&D.d(L),t[18](null),t[19](null),t[20](null),w=!1,Re(k)}}}function J2(t,e){let i={ArrowLeft:"nextElementSibling",ArrowRight:"previousElementSibling"}[e],l=t[i];for(;l&&l.tagName!=="BUTTON";)l=l[i];l&&l.focus()}function Q2(t,e,n){let i;un(t,sn,z=>n(25,i=z));let{$$slots:l={},$$scope:r}=e,{class:a=""}=e,{title:u=""}=e,{opened:m=!1}=e,{skipFirstFocus:f=!1}=e,{modal:c=!1}=e,{element:g}=e,b=rt(),h,v,w,k,_,M,O;Nt(()=>{document.body.appendChild(g)});function D(){let z=T().shift(),V=T().pop();!z&&!V&&(v.setAttribute("tabindex",0),z=v),V&&V.scrollIntoView({block:"end"}),z&&z.focus()}function L(){let z=T().shift(),V=T().pop();!z&&!V&&(v.setAttribute("tabindex",0),V=v),z&&z.scrollIntoView({block:"end"}),V&&V.focus()}function T(){let z=Array.from(v.querySelectorAll(Xi)),V=Array.from(w.querySelectorAll(Xi));return[...z,...V]}function A(z){c&&(z.stopPropagation(),z.preventDefault())}function H(z){!h.contains(z.target)&&!c&&(z.stopPropagation(),j())}function I(z){if(!m)return;let V=g.contains(document.activeElement);if(z.key==="Tab"&&!V)return D();if(z.key==="Escape"&&!c)return z.stopPropagation(),j();let Q=z.target?.closest("button");Q&&(z.key==="ArrowLeft"||z.key==="ArrowRight")&&J2(Q,z.key)}function P(z){z?(O=window.scrollY,document.body.classList.add("has-dialog"),document.body.style.top=`-${O}px`):(document.body.classList.remove("has-dialog"),document.scrollingElement.scrollTop=O,document.body.style.top="")}function N(z){m||(z instanceof Event&&(z=z.target),k=z||document.activeElement,k&&k!==document.body&&(k.setAttribute("aria-haspopup","true"),k.setAttribute("aria-expanded","true")),n(1,g.style.display="flex",g),_&&clearTimeout(_),_=setTimeout(()=>{n(0,m=!0),n(1,g.style.display="flex",g),f!==!0&&f!=="true"&&D(),document.addEventListener("keydown",I),P(!0),b("open")},100))}function j(){m&&(n(0,m=!1),k&&k.focus&&k.focus(),M&&clearTimeout(M),M=setTimeout(()=>{n(0,m=!1),n(1,g.style.display="none",g),document.removeEventListener("keydown",I),k&&k!==document.body&&k.removeAttribute("aria-expanded"),P(!1),b("close")},i))}function K(z){_e[z?"unshift":"push"](()=>{v=z,n(5,v)})}function U(z){_e[z?"unshift":"push"](()=>{w=z,n(6,w)})}function G(z){_e[z?"unshift":"push"](()=>{h=z,n(4,h)})}function F(z){_e[z?"unshift":"push"](()=>{g=z,n(1,g)})}return t.$$set=z=>{"class"in z&&n(2,a=z.class),"title"in z&&n(3,u=z.title),"opened"in z&&n(0,m=z.opened),"skipFirstFocus"in z&&n(11,f=z.skipFirstFocus),"modal"in z&&n(12,c=z.modal),"element"in z&&n(1,g=z.element),"$$scope"in z&&n(15,r=z.$$scope)},[m,g,a,u,h,v,w,D,L,A,H,f,c,N,j,r,l,K,U,G,F]}var jd=class extends fe{constructor(e){super(),de(this,e,Q2,Z2,me,{class:2,title:3,opened:0,skipFirstFocus:11,modal:12,element:1,open:13,close:14})}get class(){return this.$$.ctx[2]}set class(e){this.$$set({class:e}),Mt()}get title(){return this.$$.ctx[3]}set title(e){this.$$set({title:e}),Mt()}get opened(){return this.$$.ctx[0]}set opened(e){this.$$set({opened:e}),Mt()}get skipFirstFocus(){return this.$$.ctx[11]}set skipFirstFocus(e){this.$$set({skipFirstFocus:e}),Mt()}get modal(){return this.$$.ctx[12]}set modal(e){this.$$set({modal:e}),Mt()}get element(){return this.$$.ctx[1]}set element(e){this.$$set({element:e}),Mt()}get open(){return this.$$.ctx[13]}get close(){return this.$$.ctx[14]}},vi=jd;function Ko(t){let e=t-1;return e*e*e+1}function Zi(t,{delay:e=0,duration:n=400,easing:i=Ko,x:l=0,y:r=0,opacity:a=0}={}){let u=getComputedStyle(t),m=+u.opacity,f=u.transform==="none"?"":u.transform,c=m*(1-a),[g,b]=Td(l),[h,v]=Td(r);return{delay:e,duration:n,easing:i,css:(w,k)=>` - transform: ${f} translate(${(1-w)*g}${b}, ${(1-w)*h}${v}); - opacity: ${m-c*k}`}}function u1({fallback:t,...e}){let n=new Map,i=new Map;function l(a,u,m){let{delay:f=0,duration:c=T=>Math.sqrt(T)*30,easing:g=Ko}=tt(tt({},e),m),b=a.getBoundingClientRect(),h=u.getBoundingClientRect(),v=b.left-h.left,w=b.top-h.top,k=b.width/h.width,_=b.height/h.height,M=Math.sqrt(v*v+w*w),O=getComputedStyle(u),D=O.transform==="none"?"":O.transform,L=+O.opacity;return{delay:f,duration:_t(c)?c(M):c,easing:g,css:(T,A)=>` - opacity: ${T*L}; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name2 in all) + __defProp(target, name2, { get: all[name2], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// node_modules/vanilla-swipe/lib/types/index.js +var require_types = __commonJS({ + "node_modules/vanilla-swipe/lib/types/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.TraceDirectionKey = exports.Direction = exports.Axis = void 0; + var TraceDirectionKey; + exports.TraceDirectionKey = TraceDirectionKey; + (function(TraceDirectionKey2) { + TraceDirectionKey2["NEGATIVE"] = "NEGATIVE"; + TraceDirectionKey2["POSITIVE"] = "POSITIVE"; + TraceDirectionKey2["NONE"] = "NONE"; + })(TraceDirectionKey || (exports.TraceDirectionKey = TraceDirectionKey = {})); + var Direction; + exports.Direction = Direction; + (function(Direction2) { + Direction2["TOP"] = "TOP"; + Direction2["LEFT"] = "LEFT"; + Direction2["RIGHT"] = "RIGHT"; + Direction2["BOTTOM"] = "BOTTOM"; + Direction2["NONE"] = "NONE"; + })(Direction || (exports.Direction = Direction = {})); + var Axis; + exports.Axis = Axis; + (function(Axis2) { + Axis2["X"] = "x"; + Axis2["Y"] = "y"; + })(Axis || (exports.Axis = Axis = {})); + } +}); + +// node_modules/vanilla-swipe/lib/utils/calculateDirection.js +var require_calculateDirection = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/calculateDirection.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.calculateDirection = calculateDirection; + var _types = require_types(); + function calculateDirection(trace) { + var direction; + var negative = _types.TraceDirectionKey.NEGATIVE; + var positive = _types.TraceDirectionKey.POSITIVE; + var current = trace[trace.length - 1]; + var previous = trace[trace.length - 2] || 0; + if (trace.every(function(i) { + return i === 0; + })) { + return _types.TraceDirectionKey.NONE; + } + direction = current > previous ? positive : negative; + if (current === 0) { + direction = previous < 0 ? positive : negative; + } + return direction; + } + } +}); + +// node_modules/vanilla-swipe/lib/utils/common.js +var require_common = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/common.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.resolveAxisDirection = exports.getDirectionValue = exports.getDirectionKey = exports.getDifference = void 0; + var _types = require_types(); + var getDirectionKey = function getDirectionKey2() { + var object = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + var key = Object.keys(object).toString(); + switch (key) { + case _types.TraceDirectionKey.POSITIVE: + return _types.TraceDirectionKey.POSITIVE; + case _types.TraceDirectionKey.NEGATIVE: + return _types.TraceDirectionKey.NEGATIVE; + default: + return _types.TraceDirectionKey.NONE; + } + }; + exports.getDirectionKey = getDirectionKey; + var getDirectionValue = function getDirectionValue2() { + var values = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; + return values[values.length - 1] || 0; + }; + exports.getDirectionValue = getDirectionValue; + var getDifference = function getDifference2() { + var x = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; + var y = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + return Math.abs(x - y); + }; + exports.getDifference = getDifference; + var resolveAxisDirection = function resolveAxisDirection2(axis, key) { + var negative = _types.Direction.LEFT; + var positive = _types.Direction.RIGHT; + var direction = _types.Direction.NONE; + if (axis === _types.Axis.Y) { + negative = _types.Direction.BOTTOM; + positive = _types.Direction.TOP; + } + if (key === _types.TraceDirectionKey.NEGATIVE) { + direction = negative; + } + if (key === _types.TraceDirectionKey.POSITIVE) { + direction = positive; + } + return direction; + }; + exports.resolveAxisDirection = resolveAxisDirection; + } +}); + +// node_modules/vanilla-swipe/lib/utils/calculateDirectionDelta.js +var require_calculateDirectionDelta = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/calculateDirectionDelta.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.calculateDirectionDelta = calculateDirectionDelta; + var _types = require_types(); + var _common = require_common(); + function calculateDirectionDelta(traceDirections) { + var delta = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + var length = traceDirections.length; + var i = length - 1; + var direction = _types.TraceDirectionKey.NONE; + for (; i >= 0; i--) { + var current = traceDirections[i]; + var currentKey = (0, _common.getDirectionKey)(current); + var currentValue = (0, _common.getDirectionValue)(current[currentKey]); + var prev = traceDirections[i - 1] || {}; + var prevKey = (0, _common.getDirectionKey)(prev); + var prevValue = (0, _common.getDirectionValue)(prev[prevKey]); + var difference = (0, _common.getDifference)(currentValue, prevValue); + if (difference >= delta) { + direction = currentKey; + break; + } else { + direction = prevKey; + } + } + return direction; + } + } +}); + +// node_modules/vanilla-swipe/lib/utils/calculateDuration.js +var require_calculateDuration = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/calculateDuration.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.calculateDuration = calculateDuration; + function calculateDuration() { + var prevTime = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; + var nextTime = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + return prevTime ? nextTime - prevTime : 0; + } + } +}); + +// node_modules/vanilla-swipe/lib/utils/calculateMovingPosition.js +var require_calculateMovingPosition = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/calculateMovingPosition.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.calculateMovingPosition = calculateMovingPosition; + function calculateMovingPosition(e) { + if ("changedTouches" in e) { + var touches = e.changedTouches && e.changedTouches[0]; + return { + x: touches && touches.clientX, + y: touches && touches.clientY + }; + } + return { + x: e.clientX, + y: e.clientY + }; + } + } +}); + +// node_modules/vanilla-swipe/lib/utils/updateTrace.js +var require_updateTrace = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/updateTrace.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.updateTrace = updateTrace; + function updateTrace(trace, value2) { + var last = trace[trace.length - 1]; + if (last !== value2) { + trace.push(value2); + } + return trace; + } + } +}); + +// node_modules/vanilla-swipe/lib/utils/calculateTraceDirections.js +var require_calculateTraceDirections = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/calculateTraceDirections.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.calculateTraceDirections = calculateTraceDirections; + var _types = require_types(); + function _defineProperty(obj, key, value2) { + if (key in obj) { + Object.defineProperty(obj, key, { value: value2, enumerable: true, configurable: true, writable: true }); + } else { + obj[key] = value2; + } + return obj; + } + function calculateTraceDirections() { + var trace = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; + var ticks = []; + var positive = _types.TraceDirectionKey.POSITIVE; + var negative = _types.TraceDirectionKey.NEGATIVE; + var i = 0; + var tick2 = []; + var direction = _types.TraceDirectionKey.NONE; + for (; i < trace.length; i++) { + var current = trace[i]; + var prev = trace[i - 1]; + if (tick2.length) { + var currentDirection = current > prev ? positive : negative; + if (direction === _types.TraceDirectionKey.NONE) { + direction = currentDirection; + } + if (currentDirection === direction) { + tick2.push(current); + } else { + ticks.push(_defineProperty({}, direction, tick2.slice())); + tick2 = []; + tick2.push(current); + direction = currentDirection; + } + } else { + if (current !== 0) { + direction = current > 0 ? positive : negative; + } + tick2.push(current); + } + } + if (tick2.length) { + ticks.push(_defineProperty({}, direction, tick2)); + } + return ticks; + } + } +}); + +// node_modules/vanilla-swipe/lib/utils/resolveDirection.js +var require_resolveDirection = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/resolveDirection.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.resolveDirection = resolveDirection; + var _calculateDirection = require_calculateDirection(); + var _calculateTraceDirections = require_calculateTraceDirections(); + var _calculateDirectionDelta = require_calculateDirectionDelta(); + var _common = require_common(); + var _types = require_types(); + function resolveDirection(trace) { + var axis = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : _types.Axis.X; + var directionDelta = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; + if (directionDelta) { + var directions = (0, _calculateTraceDirections.calculateTraceDirections)(trace); + var _direction = (0, _calculateDirectionDelta.calculateDirectionDelta)(directions, directionDelta); + return (0, _common.resolveAxisDirection)(axis, _direction); + } + var direction = (0, _calculateDirection.calculateDirection)(trace); + return (0, _common.resolveAxisDirection)(axis, direction); + } + } +}); + +// node_modules/vanilla-swipe/lib/utils/calculateVelocity.js +var require_calculateVelocity = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/calculateVelocity.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.calculateVelocity = calculateVelocity; + function calculateVelocity(x, y, time) { + var magnitude = Math.sqrt(x * x + y * y); + return magnitude / (time || 1); + } + } +}); + +// node_modules/vanilla-swipe/lib/utils/calculatePosition.js +var require_calculatePosition = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/calculatePosition.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.calculatePosition = calculatePosition; + var _updateTrace = require_updateTrace(); + var _resolveDirection = require_resolveDirection(); + var _calculateDuration = require_calculateDuration(); + var _calculateVelocity = require_calculateVelocity(); + var _types = require_types(); + function calculatePosition(state, options) { + var start = state.start, x = state.x, y = state.y, traceX = state.traceX, traceY = state.traceY; + var rotatePosition = options.rotatePosition, directionDelta = options.directionDelta; + var deltaX = rotatePosition.x - x; + var deltaY = y - rotatePosition.y; + var absX = Math.abs(deltaX); + var absY = Math.abs(deltaY); + (0, _updateTrace.updateTrace)(traceX, deltaX); + (0, _updateTrace.updateTrace)(traceY, deltaY); + var directionX = (0, _resolveDirection.resolveDirection)(traceX, _types.Axis.X, directionDelta); + var directionY = (0, _resolveDirection.resolveDirection)(traceY, _types.Axis.Y, directionDelta); + var duration2 = (0, _calculateDuration.calculateDuration)(start, Date.now()); + var velocity = (0, _calculateVelocity.calculateVelocity)(absX, absY, duration2); + return { + absX, + absY, + deltaX, + deltaY, + directionX, + directionY, + duration: duration2, + positionX: rotatePosition.x, + positionY: rotatePosition.y, + velocity + }; + } + } +}); + +// node_modules/vanilla-swipe/lib/utils/checkIsMoreThanSingleTouches.js +var require_checkIsMoreThanSingleTouches = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/checkIsMoreThanSingleTouches.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.checkIsMoreThanSingleTouches = void 0; + var checkIsMoreThanSingleTouches = function checkIsMoreThanSingleTouches2(e) { + return Boolean(e.touches && e.touches.length > 1); + }; + exports.checkIsMoreThanSingleTouches = checkIsMoreThanSingleTouches; + } +}); + +// node_modules/vanilla-swipe/lib/utils/createOptions.js +var require_createOptions = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/createOptions.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.createOptions = createOptions; + function createOptions() { + var proxy = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + Object.defineProperty(proxy, "passive", { + get: function get() { + this.isPassiveSupported = true; + return true; + }, + enumerable: true + }); + return proxy; + } + } +}); + +// node_modules/vanilla-swipe/lib/utils/checkIsPassiveSupported.js +var require_checkIsPassiveSupported = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/checkIsPassiveSupported.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.checkIsPassiveSupported = checkIsPassiveSupported; + exports.noop = void 0; + var _createOptions = require_createOptions(); + function checkIsPassiveSupported(isPassiveSupported) { + if (typeof isPassiveSupported === "boolean") { + return isPassiveSupported; + } + var proxy = { + isPassiveSupported + }; + try { + var options = (0, _createOptions.createOptions)(proxy); + window.addEventListener("checkIsPassiveSupported", noop2, options); + window.removeEventListener("checkIsPassiveSupported", noop2, options); + } catch (err) { + } + return proxy.isPassiveSupported; + } + var noop2 = function noop3() { + }; + exports.noop = noop2; + } +}); + +// node_modules/vanilla-swipe/lib/utils/checkIsTouchEventsSupported.js +var require_checkIsTouchEventsSupported = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/checkIsTouchEventsSupported.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.checkIsTouchEventsSupported = void 0; + function _typeof(obj) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) { + return typeof obj2; + } : function(obj2) { + return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }, _typeof(obj); + } + var checkIsTouchEventsSupported = function checkIsTouchEventsSupported2() { + return (typeof window === "undefined" ? "undefined" : _typeof(window)) === "object" && ("ontouchstart" in window || Boolean(window.navigator.maxTouchPoints)); + }; + exports.checkIsTouchEventsSupported = checkIsTouchEventsSupported; + } +}); + +// node_modules/vanilla-swipe/lib/utils/getInitialState.js +var require_getInitialState = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/getInitialState.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getInitialState = void 0; + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + return keys; + } + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), true).forEach(function(key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + return target; + } + function _defineProperty(obj, key, value2) { + if (key in obj) { + Object.defineProperty(obj, key, { value: value2, enumerable: true, configurable: true, writable: true }); + } else { + obj[key] = value2; + } + return obj; + } + var getInitialState = function getInitialState2() { + var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return _objectSpread({ + x: 0, + y: 0, + start: 0, + isSwiping: false, + traceX: [], + traceY: [] + }, options); + }; + exports.getInitialState = getInitialState; + } +}); + +// node_modules/vanilla-swipe/lib/utils/getInitialProps.js +var require_getInitialProps = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/getInitialProps.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getInitialProps = void 0; + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + return keys; + } + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), true).forEach(function(key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + return target; + } + function _defineProperty(obj, key, value2) { + if (key in obj) { + Object.defineProperty(obj, key, { value: value2, enumerable: true, configurable: true, writable: true }); + } else { + obj[key] = value2; + } + return obj; + } + var getInitialProps = function getInitialProps2() { + var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return _objectSpread({ + element: null, + target: null, + delta: 10, + directionDelta: 0, + rotationAngle: 0, + mouseTrackingEnabled: false, + touchTrackingEnabled: true, + preventDefaultTouchmoveEvent: false, + preventTrackingOnMouseleave: false + }, props); + }; + exports.getInitialProps = getInitialProps; + } +}); + +// node_modules/vanilla-swipe/lib/utils/getOptions.js +var require_getOptions = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/getOptions.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getOptions = getOptions; + function getOptions() { + var isPassiveSupported = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; + if (isPassiveSupported) { + return { + passive: false + }; + } + return {}; + } + } +}); + +// node_modules/vanilla-swipe/lib/utils/rotateByAngle.js +var require_rotateByAngle = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/rotateByAngle.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.rotateByAngle = rotateByAngle; + function rotateByAngle(position) { + var angle = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + if (angle === 0) { + return position; + } + var x = position.x, y = position.y; + var angleInRadians = Math.PI / 180 * angle; + var rotatedX = x * Math.cos(angleInRadians) + y * Math.sin(angleInRadians); + var rotatedY = y * Math.cos(angleInRadians) - x * Math.sin(angleInRadians); + return { + x: rotatedX, + y: rotatedY + }; + } + } +}); + +// node_modules/vanilla-swipe/lib/utils/index.js +var require_utils = __commonJS({ + "node_modules/vanilla-swipe/lib/utils/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _calculateDirection = require_calculateDirection(); + Object.keys(_calculateDirection).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _calculateDirection[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _calculateDirection[key]; + } + }); + }); + var _calculateDirectionDelta = require_calculateDirectionDelta(); + Object.keys(_calculateDirectionDelta).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _calculateDirectionDelta[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _calculateDirectionDelta[key]; + } + }); + }); + var _calculateDuration = require_calculateDuration(); + Object.keys(_calculateDuration).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _calculateDuration[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _calculateDuration[key]; + } + }); + }); + var _calculateMovingPosition = require_calculateMovingPosition(); + Object.keys(_calculateMovingPosition).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _calculateMovingPosition[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _calculateMovingPosition[key]; + } + }); + }); + var _calculatePosition = require_calculatePosition(); + Object.keys(_calculatePosition).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _calculatePosition[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _calculatePosition[key]; + } + }); + }); + var _calculateTraceDirections = require_calculateTraceDirections(); + Object.keys(_calculateTraceDirections).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _calculateTraceDirections[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _calculateTraceDirections[key]; + } + }); + }); + var _calculateVelocity = require_calculateVelocity(); + Object.keys(_calculateVelocity).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _calculateVelocity[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _calculateVelocity[key]; + } + }); + }); + var _checkIsMoreThanSingleTouches = require_checkIsMoreThanSingleTouches(); + Object.keys(_checkIsMoreThanSingleTouches).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _checkIsMoreThanSingleTouches[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _checkIsMoreThanSingleTouches[key]; + } + }); + }); + var _checkIsPassiveSupported = require_checkIsPassiveSupported(); + Object.keys(_checkIsPassiveSupported).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _checkIsPassiveSupported[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _checkIsPassiveSupported[key]; + } + }); + }); + var _checkIsTouchEventsSupported = require_checkIsTouchEventsSupported(); + Object.keys(_checkIsTouchEventsSupported).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _checkIsTouchEventsSupported[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _checkIsTouchEventsSupported[key]; + } + }); + }); + var _common = require_common(); + Object.keys(_common).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _common[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _common[key]; + } + }); + }); + var _createOptions = require_createOptions(); + Object.keys(_createOptions).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _createOptions[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _createOptions[key]; + } + }); + }); + var _getInitialState = require_getInitialState(); + Object.keys(_getInitialState).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _getInitialState[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _getInitialState[key]; + } + }); + }); + var _getInitialProps = require_getInitialProps(); + Object.keys(_getInitialProps).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _getInitialProps[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _getInitialProps[key]; + } + }); + }); + var _getOptions = require_getOptions(); + Object.keys(_getOptions).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _getOptions[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _getOptions[key]; + } + }); + }); + var _resolveDirection = require_resolveDirection(); + Object.keys(_resolveDirection).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _resolveDirection[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _resolveDirection[key]; + } + }); + }); + var _rotateByAngle = require_rotateByAngle(); + Object.keys(_rotateByAngle).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _rotateByAngle[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _rotateByAngle[key]; + } + }); + }); + var _updateTrace = require_updateTrace(); + Object.keys(_updateTrace).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (key in exports && exports[key] === _updateTrace[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _updateTrace[key]; + } + }); + }); + } +}); + +// node_modules/vanilla-swipe/lib/index.js +var require_lib = __commonJS({ + "node_modules/vanilla-swipe/lib/index.js"(exports) { + "use strict"; + function _typeof(obj) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) { + return typeof obj2; + } : function(obj2) { + return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }, _typeof(obj); + } + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _exportNames = {}; + exports["default"] = void 0; + var Utils2 = _interopRequireWildcard(require_utils()); + var _types = require_types(); + Object.keys(_types).forEach(function(key) { + if (key === "default" || key === "__esModule") + return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) + return; + if (key in exports && exports[key] === _types[key]) + return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _types[key]; + } + }); + }); + function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") + return null; + var cacheBabelInterop = /* @__PURE__ */ new WeakMap(); + var cacheNodeInterop = /* @__PURE__ */ new WeakMap(); + return (_getRequireWildcardCache = function _getRequireWildcardCache2(nodeInterop2) { + return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); + } + function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { + return { "default": obj }; + } + var cache = _getRequireWildcardCache(nodeInterop); + if (cache && cache.has(obj)) { + return cache.get(obj); + } + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) { + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + newObj["default"] = obj; + if (cache) { + cache.set(obj, newObj); + } + return newObj; + } + function _classCallCheck(instance122, Constructor) { + if (!(instance122 instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) + descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) + _defineProperties(Constructor.prototype, protoProps); + if (staticProps) + _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { writable: false }); + return Constructor; + } + function _defineProperty(obj, key, value2) { + if (key in obj) { + Object.defineProperty(obj, key, { value: value2, enumerable: true, configurable: true, writable: true }); + } else { + obj[key] = value2; + } + return obj; + } + var VanillaSwipe2 = /* @__PURE__ */ function() { + function VanillaSwipe3(props) { + _classCallCheck(this, VanillaSwipe3); + _defineProperty(this, "state", void 0); + _defineProperty(this, "props", void 0); + this.state = Utils2.getInitialState(); + this.props = Utils2.getInitialProps(props); + this.handleSwipeStart = this.handleSwipeStart.bind(this); + this.handleSwipeMove = this.handleSwipeMove.bind(this); + this.handleSwipeEnd = this.handleSwipeEnd.bind(this); + this.handleMouseDown = this.handleMouseDown.bind(this); + this.handleMouseMove = this.handleMouseMove.bind(this); + this.handleMouseUp = this.handleMouseUp.bind(this); + this.handleMouseLeave = this.handleMouseLeave.bind(this); + } + _createClass(VanillaSwipe3, [{ + key: "init", + value: function init3() { + this.setupTouchListeners(); + this.setupMouseListeners(); + } + }, { + key: "update", + value: function update2(props) { + var prevProps = this.props; + var nextProps = Object.assign({}, prevProps, props); + if (prevProps.element !== nextProps.element || prevProps.target !== nextProps.target) { + this.destroy(); + this.props = nextProps; + this.init(); + return; + } + this.props = nextProps; + if (prevProps.mouseTrackingEnabled !== nextProps.mouseTrackingEnabled || prevProps.preventTrackingOnMouseleave !== nextProps.preventTrackingOnMouseleave) { + this.cleanupMouseListeners(); + nextProps.mouseTrackingEnabled ? this.setupMouseListeners() : this.cleanupMouseListeners(); + } + if (prevProps.touchTrackingEnabled !== nextProps.touchTrackingEnabled) { + this.cleanupTouchListeners(); + nextProps.touchTrackingEnabled ? this.setupTouchListeners() : this.cleanupTouchListeners(); + } + } + }, { + key: "destroy", + value: function destroy() { + this.cleanupMouseListeners(); + this.cleanupTouchListeners(); + this.state = Utils2.getInitialState(); + this.props = Utils2.getInitialProps(); + } + }, { + key: "setupTouchListeners", + value: function setupTouchListeners() { + var _this$props = this.props, element3 = _this$props.element, target = _this$props.target, touchTrackingEnabled = _this$props.touchTrackingEnabled; + if (element3 && touchTrackingEnabled) { + var listener = target || element3; + var isPassiveSupported = Utils2.checkIsPassiveSupported(); + var options = Utils2.getOptions(isPassiveSupported); + listener.addEventListener("touchstart", this.handleSwipeStart, options); + listener.addEventListener("touchmove", this.handleSwipeMove, options); + listener.addEventListener("touchend", this.handleSwipeEnd, options); + } + } + }, { + key: "cleanupTouchListeners", + value: function cleanupTouchListeners() { + var _this$props2 = this.props, element3 = _this$props2.element, target = _this$props2.target; + var listener = target || element3; + if (listener) { + listener.removeEventListener("touchstart", this.handleSwipeStart); + listener.removeEventListener("touchmove", this.handleSwipeMove); + listener.removeEventListener("touchend", this.handleSwipeEnd); + } + } + }, { + key: "setupMouseListeners", + value: function setupMouseListeners() { + var _this$props3 = this.props, element3 = _this$props3.element, mouseTrackingEnabled = _this$props3.mouseTrackingEnabled, preventTrackingOnMouseleave = _this$props3.preventTrackingOnMouseleave; + if (mouseTrackingEnabled && element3) { + element3.addEventListener("mousedown", this.handleMouseDown); + element3.addEventListener("mousemove", this.handleMouseMove); + element3.addEventListener("mouseup", this.handleMouseUp); + if (preventTrackingOnMouseleave) { + element3.addEventListener("mouseleave", this.handleMouseLeave); + } + } + } + }, { + key: "cleanupMouseListeners", + value: function cleanupMouseListeners() { + var element3 = this.props.element; + if (element3) { + element3.removeEventListener("mousedown", this.handleMouseDown); + element3.removeEventListener("mousemove", this.handleMouseMove); + element3.removeEventListener("mouseup", this.handleMouseUp); + element3.removeEventListener("mouseleave", this.handleMouseLeave); + } + } + }, { + key: "getEventData", + value: function getEventData(e) { + var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { + directionDelta: 0 + }; + var rotationAngle = this.props.rotationAngle; + var directionDelta = options.directionDelta; + var movingPosition = Utils2.calculateMovingPosition(e); + var rotatePosition = Utils2.rotateByAngle(movingPosition, rotationAngle); + return Utils2.calculatePosition(this.state, { + rotatePosition, + directionDelta + }); + } + }, { + key: "handleSwipeStart", + value: function handleSwipeStart(e) { + if (Utils2.checkIsMoreThanSingleTouches(e)) + return; + var rotationAngle = this.props.rotationAngle; + var movingPosition = Utils2.calculateMovingPosition(e); + var _Utils$rotateByAngle = Utils2.rotateByAngle(movingPosition, rotationAngle), x = _Utils$rotateByAngle.x, y = _Utils$rotateByAngle.y; + this.state = Utils2.getInitialState({ + isSwiping: false, + start: Date.now(), + x, + y + }); + } + }, { + key: "handleSwipeMove", + value: function handleSwipeMove(e) { + var _this$state = this.state, x = _this$state.x, y = _this$state.y, isSwiping = _this$state.isSwiping; + if (!x || !y || Utils2.checkIsMoreThanSingleTouches(e)) + return; + var directionDelta = this.props.directionDelta || 0; + var _this$getEventData = this.getEventData(e, { + directionDelta + }), absX = _this$getEventData.absX, absY = _this$getEventData.absY, deltaX = _this$getEventData.deltaX, deltaY = _this$getEventData.deltaY, directionX = _this$getEventData.directionX, directionY = _this$getEventData.directionY, duration2 = _this$getEventData.duration, velocity = _this$getEventData.velocity; + var _this$props4 = this.props, delta = _this$props4.delta, preventDefaultTouchmoveEvent = _this$props4.preventDefaultTouchmoveEvent, onSwipeStart = _this$props4.onSwipeStart, onSwiping = _this$props4.onSwiping; + if (e.cancelable && preventDefaultTouchmoveEvent) + e.preventDefault(); + if (absX < Number(delta) && absY < Number(delta) && !isSwiping) + return; + if (onSwipeStart && !isSwiping) { + onSwipeStart(e, { + deltaX, + deltaY, + absX, + absY, + directionX, + directionY, + duration: duration2, + velocity + }); + } + this.state.isSwiping = true; + if (onSwiping) { + onSwiping(e, { + deltaX, + deltaY, + absX, + absY, + directionX, + directionY, + duration: duration2, + velocity + }); + } + } + }, { + key: "handleSwipeEnd", + value: function handleSwipeEnd(e) { + var _this$props5 = this.props, onSwiped = _this$props5.onSwiped, onTap = _this$props5.onTap; + if (this.state.isSwiping) { + var directionDelta = this.props.directionDelta || 0; + var position = this.getEventData(e, { + directionDelta + }); + onSwiped && onSwiped(e, position); + } else { + var _position = this.getEventData(e); + onTap && onTap(e, _position); + } + this.state = Utils2.getInitialState(); + } + }, { + key: "handleMouseDown", + value: function handleMouseDown(e) { + var target = this.props.target; + if (target) { + if (target === e.target) { + this.handleSwipeStart(e); + } + } else { + this.handleSwipeStart(e); + } + } + }, { + key: "handleMouseMove", + value: function handleMouseMove(e) { + this.handleSwipeMove(e); + } + }, { + key: "handleMouseUp", + value: function handleMouseUp(e) { + var isSwiping = this.state.isSwiping; + var target = this.props.target; + if (target) { + if (target === e.target || isSwiping) { + this.handleSwipeEnd(e); + } + } else { + this.handleSwipeEnd(e); + } + } + }, { + key: "handleMouseLeave", + value: function handleMouseLeave(e) { + var isSwiping = this.state.isSwiping; + if (isSwiping) { + this.handleSwipeEnd(e); + } + } + }], [{ + key: "isTouchEventsSupported", + value: function isTouchEventsSupported() { + return Utils2.checkIsTouchEventsSupported(); + } + }]); + return VanillaSwipe3; + }(); + exports["default"] = VanillaSwipe2; + } +}); + +// node_modules/prismjs/prism.js +var require_prism = __commonJS({ + "node_modules/prismjs/prism.js"(exports, module) { + var _self = typeof window !== "undefined" ? window : typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope ? self : {}; + var Prism2 = function(_self2) { + var lang = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i; + var uniqueId = 0; + var plainTextGrammar = {}; + var _ = { + /** + * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the + * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load + * additional languages or plugins yourself. + * + * By setting this value to `true`, Prism will not automatically highlight all code elements on the page. + * + * You obviously have to change this value before the automatic highlighting started. To do this, you can add an + * empty Prism object into the global scope before loading the Prism script like this: + * + * ```js + * window.Prism = window.Prism || {}; + * Prism.manual = true; + * // add a new - + diff --git a/docs/ui.css b/docs/ui.css index beb60dcf..b1a2046a 100644 --- a/docs/ui.css +++ b/docs/ui.css @@ -1 +1,2749 @@ -:root{--ui-border-radius:0.375rem;--ui-border-radius-m:0.6877rem;--ui-border-radius-l:1rem;--ui-border-radius-xl:5rem;--ui-margin:0.375rem;--ui-margin-xs:0.125rem;--ui-margin-s:0.25rem;--ui-margin-m:0.5rem;--ui-margin-l:1rem;--ui-animation-speed:.25s;--ui-button-height:2.25rem;--ui-font-system:system-ui,'Segoe UI','Roboto','Helvetica','Arial','sans-serif','Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';--ui-font-xs:0.875rem;--ui-font-s:0.9375rem;--ui-font-m:1rem;--ui-font-l:1.0625rem;--ui-font-xl:1.375rem;--ui-shadow-focus:0 0 2px 1px var(--ui-color-accent);--ui-shadow-danger:0 0 2px 1px var(--ui-color-danger);--ui-shadow-small:0 0 0 0.5px #fff4,0 3px 10px #0006;--ui-shadow-large:0 0 0 1px #0003,0 5px 20px #000a;--ui-shadow-fancy:0 0 0 0.5px #111,0 1px 5px rgb(0 0 0 / 30%),0 4px 10px rgb(0 0 0 / 10%),0 10px 25px rgb(0 0 0 / 8%);--ui-z-index-elevated:9;--ui-z-index-popup:999}body{font-weight:300;font-size:100%;font-family:var(--ui-font-system),sans-serif;box-sizing:border-box}body *{box-sizing:inherit}.icon-tabler{width:1.5rem;height:1.5rem}.icon-tabler-dots-vertical{margin-left:-1px}.flex-spacer{flex:1}.icon-tabler-alert-triangle{transform:translateY(1px)}.icon-tabler-logout{transform:translateX(3px)}.mobile .prevent-scrolling-on-focus:focus{animation:prevent-scrolling-on-focus 10ms}@keyframes prevent-scrolling-on-focus{0%{opacity:0}100%{opacity:1}}.theme-dark,:root{color-scheme:dark;--ui-color-accent:#bb7a00;--ui-color-accent-semi:#bb7a0066;--ui-color-highlight:#1859a3;--ui-color-highlight-semi:#1859a366;--ui-color-highlight-1:#1e4572;--ui-color-secondary:#5a5956;--ui-color-secondary-semi:#5a595666;--ui-color-info:#30506a;--ui-color-info-semi:#30506a99;--ui-color-success:#33624d;--ui-color-success-semi:#33624d99;--ui-color-warning:#795001;--ui-color-warning-semi:#79500199;--ui-color-danger:#943737;--ui-color-danger-semi:#94373799;--ui-color-border:#1b1b1b;--ui-color-border-1:#131313;--ui-color-border-2:#0c0c0c;--ui-color-background:#2f2f2f;--ui-color-background-semi:#2f2f2f66;--ui-color-background-input:#222;--ui-color-background-1:#535353;--ui-color-background-2:#1a1a1a;--ui-color-text:#fff;--ui-color-text-semi:#fff6;--ui-color-text-1:#bbb;--ui-color-text-2:#888;--ui-popup-border:1px solid #fff3;--ui-popup-background:var(--ui-color-background);--ui-shadow-button:0 1px 0 #000c;--ui-shadow-tooltip:0 0 0 1px #000,0 0 5px #0006}.theme-light{color-scheme:light;--ui-color-accent:#b37400;--ui-color-accent-semi:#b3740066;--ui-color-highlight:#8ec6ff;--ui-color-highlight-semi:#8ec6ff66;--ui-color-highlight-1:#6ba0de;--ui-color-secondary:#c0beb4;--ui-color-secondary-semi:#c0beb466;--ui-color-info:#bbd3f0;--ui-color-info-semi:#bbd3f099;--ui-color-success:#7bd7ae;--ui-color-success-semi:#7bd7ae99;--ui-color-warning:#eec64e;--ui-color-warning-semi:#eec64e99;--ui-color-danger:#eb6e6f;--ui-color-danger-semi:#eb6e6f99;--ui-color-border:#bbb;--ui-color-border-1:#aaa;--ui-color-border-2:#999;--ui-color-background:#eee;--ui-color-background-semi:#eee6;--ui-color-background-input:#c2c2c2;--ui-color-background-1:#f0f0f0;--ui-color-background-2:#ccc;--ui-color-text:#000;--ui-color-text-semi:#0006;--ui-color-text-1:#222;--ui-color-text-2:#666;--ui-popup-border:1px solid #ccc;--ui-popup-background:var(--ui-color-background);--ui-shadow-button:0 1px 0 #000c;--ui-shadow-tooltip:0 0 1px #0002,0 0 5px #0006}.button-link{background:0 0;border:none;cursor:pointer;min-width:0}.button.button-link{margin:calc(var(--ui-margin) * -1);padding:var(--ui-margin);vertical-align:baseline;text-decoration:underline}.button.button-link:focus-visible,.button.button-link:hover{text-decoration:underline;text-underline-offset:0.2rem}.button-link.info:focus-visible,.button-link.info:hover{text-decoration-color:var(--ui-color-info)}.button-link.success:focus-visible,.button-link.success:hover{text-decoration-color:var(--ui-color-success)}.button-link.warning:focus-visible,.button-link.warning:hover{text-decoration-color:var(--ui-color-warning)}.button-link.danger:focus-visible,.button-link.danger:hover,.button-link.error:focus-visible,.button-link.error:hover{text-decoration-color:var(--ui-color-danger)}.button-normal{background:var(--ui-color-secondary);border:.5px solid #0006;border-bottom-color:#000c;box-shadow:var(--ui-shadow-button);min-width:calc(var(--ui-button-size) * 4);min-height:calc(var(--ui-button-size) * 2)}.button-normal.info{background:var(--ui-color-info)}.button-normal.success{background:var(--ui-color-success)}.button-normal.warning{background:var(--ui-color-warning)}.button-normal.danger,.button-normal.error{background:var(--ui-color-danger)}.button-outline{background:0 0;border:2px solid var(--ui-color-secondary);min-width:calc(var(--ui-button-size) * 4);min-height:calc(var(--ui-button-size) * 2)}.button-outline:focus-visible,.button-outline:hover{background-color:var(--ui-color-secondary-semi)}.button-outline.info{border-color:var(--ui-color-info)}.button-outline.info:focus-visible,.button-outline.info:hover{background-color:var(--ui-color-info-semi)}.button-outline.success{border-color:var(--ui-color-success)}.button-outline.success:focus-visible,.button-outline.success:hover{background-color:var(--ui-color-success-semi)}.button-outline.warning{border-color:var(--ui-color-warning)}.button-outline.warning:focus-visible,.button-outline.warning:hover{background-color:var(--ui-color-warning-semi)}.button-outline.danger,.button-outline.error{border-color:var(--ui-color-danger)}.button-outline.danger:focus-visible,.button-outline.danger:hover,.button-outline.error:focus-visible,.button-outline.error:hover{background-color:var(--ui-color-danger-semi)}.button-text{background:0 0;border:none;min-width:calc(var(--ui-button-size) * 4);min-height:calc(var(--ui-button-size) * 2);box-shadow:none}.button-text:focus-visible,.button-text:hover{background-color:var(--ui-color-secondary)}.button-text.info:focus-visible,.button-text.info:hover{background-color:var(--ui-color-info)}.button-text.success:focus-visible,.button-text.success:hover{background-color:var(--ui-color-success)}.button-text.warning:focus-visible,.button-text.warning:hover{background-color:var(--ui-color-warning)}.button-text.danger:focus-visible,.button-text.danger:hover,.button-text.error:focus-visible,.button-text.error:hover{background-color:var(--ui-color-danger)}button{-ms-touch-action:manipulation;touch-action:manipulation}.button{--ui-button-size:1rem;font:inherit;line-height:1.4;font-weight:400;font-size:var(--ui-button-size);display:inline-flex;align-items:center;justify-content:center;gap:var(--ui-margin-m);min-width:var(--ui-button-height);min-height:var(--ui-button-height);height:auto;margin:0;padding:0 var(--ui-margin-l);color:var(--ui-color-text);-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;border-radius:var(--ui-border-radius);text-decoration:none}.button:hover{text-decoration:none}.button:focus-visible{border-color:var(--ui-color-accent);box-shadow:var(--ui-shadow-focus);outline:1px solid transparent}.button[disabled]{pointer-events:none;opacity:.6;box-shadow:none}.button svg{min-height:calc(var(--ui-button-size) * 1.25);max-height:calc(var(--ui-button-size) * 1.25);height:calc(var(--ui-button-size) * 1.25);min-width:var(--ui-button-size);width:auto;pointer-events:none}.button:not(.button-has-text){padding:0 var(--ui-margin-m)}.button:not(.button-has-text) svg{min-height:calc(var(--ui-button-size) * 1.4)}.button.round{padding:var(--ui-margin);border-radius:var(--ui-border-radius-xl)}.button.round:not(.button-has-text){aspect-ratio:1/1}.button-has-text.round{padding-inline:var(--ui-margin-l)}.button.touching,.button:active{outline:1px solid transparent;transform:translateY(1px);filter:brightness(.85)}.button:not(.push-button).touching,.button:not(.push-button):active{box-shadow:none}.button-group{border-radius:var(--ui-border-radius);max-width:100%;overflow:hidden}.button-group-scroller{width:100%;overflow:auto hidden;overscroll-behavior-x:contain;scrollbar-width:none;scrollbar-gutter:none;z-index:0;border-radius:var(--ui-border-radius)}.button-group-scroller::-webkit-scrollbar{width:0;height:0}.button-group-inner{padding:0 0 2px;display:inline-flex;flex-flow:row;align-items:center;justify-content:stretch;position:relative;z-index:1;border-radius:var(--ui-border-radius);background-color:var(--ui-color-background)}.button-group-inner .button{flex-shrink:0;flex-grow:10;border-radius:0;position:relative;overflow:hidden}.button-group-inner .button:focus{z-index:2}.button-group .button-normal[disabled]{box-shadow:var(--ui-shadow-button)}.button-group .button:first-of-type{border-top-left-radius:var(--ui-border-radius);border-bottom-left-radius:var(--ui-border-radius)}.button-group .button:last-of-type{border-top-right-radius:var(--ui-border-radius);border-bottom-right-radius:var(--ui-border-radius)}.button-group .button-outline:not(:first-of-type){margin-left:-2px}.button-group.round{border-radius:var(--ui-border-radius-xl)}.button-group.round .button:first-of-type{border-top-left-radius:var(--ui-border-radius-xl);border-bottom-left-radius:var(--ui-border-radius-xl)}.button-group.round .button:last-of-type{border-top-right-radius:var(--ui-border-radius-xl);border-bottom-right-radius:var(--ui-border-radius-xl)}.button-group .button:not(.button-has-text):first-of-type{padding-left:9px}.button-group .button:not(.button-has-text):last-of-type{padding-right:9px}.button-group.round .button:not(.button-has-text):first-of-type{padding-right:6px;padding-left:11px}.button-group.round .button:not(.button-has-text):last-of-type{padding-left:6px;padding-right:11px}.has-dialog{position:fixed;width:100%;inset:0;overflow:hidden}.dialog-backdrop{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:calc(var(--ui-z-index-popup) - 1);background-color:rgba(0 0 0 / 0);transition:all var(--ui-animation-speed) ease-out;transform:translateZ(1px)}.dialog-backdrop.opened{background-color:rgba(0 0 0 / .6)}.dialog{--ui-dialog-border-radius:var(--ui-border-radius-m);--ui-dialog-inner-border-radius:calc(var(--ui-dialog-border-radius) - 1px);opacity:0;transform:scale(.8);transition:opacity var(--ui-animation-speed) ease-out,transform var(--ui-animation-speed) ease-out;max-height:90vh;min-width:15rem;max-width:95vw;color:var(--ui-color-text);border-radius:var(--ui-dialog-border-radius);background:var(--ui-popup-background);border:var(--ui-popup-border);box-shadow:var(--ui-shadow-large);display:flex;flex-flow:column;align-items:stretch;justify-content:stretch}.opened .dialog{opacity:1;transform:scale(1)}.dialog-footer,.dialog-header{background:var(--ui-color-background-input);padding:.7rem 1rem}.dialog-header{text-align:center;font-size:var(--ui-font-xl);font-weight:300;margin:0;border-bottom:.5px solid var(--ui-color-border)}.dialog-content{margin:0;padding:1rem;min-width:200px;flex:1;overflow-y:auto;overscroll-behavior-y:contain;outline:1px solid transparent;min-height:3rem}.dialog-content:focus{outline:0}.dialog-content:focus-visible{border-color:var(--ui-color-accent);box-shadow:var(--ui-shadow-focus) inset}.dialog-footer{border-top:.5px solid var(--ui-color-border);border-bottom-left-radius:var(--ui-dialog-inner-border-radius);border-bottom-right-radius:var(--ui-dialog-inner-border-radius)}.dialog-footer [slot=footer]{width:100%;display:flex;align-items:center;justify-content:center;flex-flow:row-reverse;gap:.5rem}.dialog-footer .button-has-text{min-width:9ch}.dialog-header,.dialog.no-title .dialog-content{border-top-left-radius:var(--ui-dialog-inner-border-radius);border-top-right-radius:var(--ui-dialog-inner-border-radius)}.dialog-header:empty{display:none}.mobile .dialog-backdrop .dialog{min-height:0;min-width:0;max-height:100%;max-width:100%;box-shadow:none}@supports ((-webkit-backdrop-filter:none) or (backdrop-filter:none)){.dialog-backdrop.opened{-webkit-backdrop-filter:contrast(0.8) grayscale(0.5) brightness(0.5) blur(1px);backdrop-filter:contrast(0.8) grayscale(0.5) brightness(0.5) blur(1px)}}.drawer{position:fixed;background-color:var(--ui-popup-background);border-left:var(--ui-popup-border);top:0;right:0;bottom:0;width:24rem;min-height:20rem;box-shadow:var(--ui-shadow-large);z-index:calc(var(--ui-z-index-popup) - 2);color:var(--ui-color-text);padding:0;overflow-y:auto;overscroll-behavior-y:contain;transform:translateZ(1px)}.drawer:focus{outline:0}.drawer-header{position:sticky;position:-webkit-sticky;background-color:inherit;top:0;width:100%;margin:0 0 1rem;padding:0 1rem 0 1.4rem;display:flex;align-items:center;justify-content:space-between}.drawer-header h2{margin:0;padding:.5rem 0}.drawer-content{padding:0 1.4rem}.info-bar{width:100%;display:flex;align-items:flex-start;justify-content:flex-start;gap:.5rem;padding:.4rem .6rem .4rem .3rem;margin:0 0 .75rem;border-radius:var(--ui-border-radius);border-width:1px;border-style:solid}.info-bar p{margin:0;font-size:var(--ui-font-s);line-height:1.5rem}.info-bar .icon{flex-shrink:0}.info-bar-error{background-color:var(--ui-color-danger-semi);border-color:var(--ui-color-danger)}.info-bar-info{background-color:var(--ui-color-info-semi);border-color:var(--ui-color-info)}.info-bar-success{background-color:var(--ui-color-success-semi);border-color:var(--ui-color-success)}.info-bar-warning{background-color:var(--ui-color-warning-semi);border-color:var(--ui-color-warning)}input,label,select,textarea{-ms-touch-action:manipulation;touch-action:manipulation}.theme-dark input{color-scheme:dark}.theme-light input{color-scheme:light}input::placeholder,textarea::placeholder{color:var(--ui-color-text-1);font-style:italic}:where(input:not([type=radio],[type=checkbox])){font:inherit;height:calc(var(--ui-button-height) - 2px);border:1px solid transparent;line-height:1;color:var(--ui-color-text);background-color:var(--ui-color-background-input);border-radius:var(--ui-border-radius);padding:0 var(--ui-margin-m);width:25ch}:where(input:focus){outline:0;border-color:var(--ui-color-accent);box-shadow:var(--ui-shadow-focus)}:where(input:invalid){border-color:var(--ui-color-danger);box-shadow:var(--ui-shadow-danger)}input[type=color]{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:0 0;border:none;padding:0;cursor:pointer}:where(input:disabled){opacity:.75;cursor:default}.check-and-radio input{appearance:none;width:1.4rem;height:1.4rem;display:inline-flex;align-items:center;justify-content:center;border-radius:.3em;background:var(--ui-color-background-input);border:1px solid var(--ui-color-text-2);color:var(--ui-color-text-1);font:inherit;flex-shrink:0;-ms-touch-action:manipulation;touch-action:manipulation}.check-and-radio input::after{content:" ";display:block;opacity:0;font-size:var(--ui-font-m);line-height:1;align-self:center;color:inherit;margin:0;transition:opacity calc(var(--ui-animation-speed) / 2) ease-out}.check-and-radio input:checked::after{opacity:1}.input{width:25ch;vertical-align:middle}.input .input-inner{display:flex;flex-flow:column;align-items:stretch;justify-content:stretch;border-radius:var(--ui-border-radius);background:var(--ui-color-background-input);border:1px solid var(--ui-color-border)}.button-toggle.input.label-on-the-left,.input.label-on-the-left,.radio.label-on-the-left,.range.label-on-the-left,.textarea.label-on-the-left,.toggle.label-on-the-left{display:inline-flex;flex-flow:row;align-items:center;width:100%;gap:1rem}.label-on-the-left .input-inner,.label-on-the-left .range-inner{flex:1}.input-inner:focus-within,.input-inner:has(:active):not(.disabled){border-color:var(--ui-color-accent);box-shadow:var(--ui-shadow-focus)}.input,.input input:disabled,.input select:disabled,.range input:disabled,.textarea textarea:disabled{opacity:1;color:var(--ui-color-text)}.input .input-inner:has(:disabled),.range .range-inner:has(:disabled),.textarea .textarea-inner:has(:disabled){opacity:.7}.input input:not([type=radio]){width:100%;border:none}.input input:not([type=radio]):focus,.input input:not([type=radio]):invalid{box-shadow:none;border:none}.input-row{width:100%;display:flex;flex-flow:row;align-items:center;justify-content:space-between;position:relative;border-radius:inherit}.input-row>.button,.input-row>.icon{position:absolute;height:100%;z-index:1}.input-row>.button{color:var(--ui-color-text-1);right:2px}.input-row>.icon{color:var(--ui-color-text-2);left:.3rem;width:1.5rem;pointer-events:none}.menu{position:absolute;padding:.25rem;margin:0;display:flex;width:auto;flex-flow:column;align-items:stretch;list-style:none;overflow:hidden auto;cursor:default;z-index:var(--ui-z-index-popup);max-height:calc(100vh - 4px);-webkit-user-select:none;user-select:none;overscroll-behavior-y:contain;color:var(--ui-color-text);border:var(--ui-popup-border);border-radius:calc(var(--ui-border-radius) + 2px);background:var(--ui-popup-background);box-shadow:var(--ui-shadow-fancy);transform:translateZ(1px)}.menu:focus{outline:0}.menu-item{font:inherit;font-size:var(--ui-font-s);align-items:center;border-radius:var(--ui-border-radius);color:inherit;background:0 0;border:none;display:flex;flex-shrink:0;letter-spacing:.1px;justify-content:space-between;margin:0;overflow:hidden;padding:.5rem .9rem;position:relative;text-align:left;white-space:nowrap;width:100%}.menu-item-shortcut{margin:-.1rem 0 -.1rem auto;letter-spacing:.1rem;line-height:1.35;opacity:.5}.menu-item-shortcut:empty{visibility:hidden}.menu-item.disabled{pointer-events:none;opacity:.6}.menu-item:focus{background-color:var(--ui-color-highlight);outline:1px solid transparent}.menu-item:focus.success{background-color:var(--ui-color-success)}.menu-item:focus.warning{background-color:var(--ui-color-warning)}.menu-item:focus.danger{background-color:var(--ui-color-danger)}.menu-item:focus .menu-item-shortcut{opacity:1}.menu-item svg{width:1.1rem;height:1.1rem;margin:0 .5rem 0 0}.menu-item-content{display:flex;min-width:0;align-items:center;justify-content:space-between;margin-right:1rem}.menu-item-text{overflow:hidden;text-overflow:ellipsis;line-height:1.35}.menu-separator{height:0;width:auto;padding:0;margin:var(--ui-margin) .8rem;border-bottom:var(--ui-popup-border)}@supports ((-webkit-backdrop-filter:none) or (backdrop-filter:none)){.menu{background-color:var(--ui-color-background-semi);-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px)}}.message-box .dialog-content{display:flex;flex-flow:row;gap:1rem;font-size:var(--ui-font-l);padding:1rem}.message-box .dialog-content .message{display:flex;align-items:center;min-height:fit-content}.message-box .dialog-content .message-content{margin:0;line-height:1.5}.message-box .dialog-content .icon,.message-box .dialog-content svg{height:3rem}.message-box .dialog-content svg:empty{width:0}.message-box .dialog-content:has(svg:empty){gap:0}.message-box .dialog-content:has(svg:empty) .message{flex:1;justify-content:center}.message-box .dialog-content .icon{width:3rem;flex-shrink:0;border-radius:50%;display:flex;align-items:center;justify-content:center;position:sticky;top:0}.message-info .dialog-content{background-color:var(--ui-color-info-semi)}.message-warning .dialog-content{background-color:var(--ui-color-warning-semi)}.message-error .dialog-content{background-color:var(--ui-color-danger-semi)}.message-success .dialog-content{background-color:var(--ui-color-success-semi)}.panel{overflow:hidden;will-change:height;position:relative;border:2px solid var(--ui-color-border);background:var(--ui-color-background-2);margin-bottom:1rem}.panel details{margin:1px}.panel-header{color:var(--ui-color-text);text-align:left;border:none;display:flex;align-items:center;justify-content:space-between;font-weight:300;font-size:var(--ui-font-m);padding:0 .6rem 0 1rem;height:2.5rem;line-height:1;-webkit-user-select:none;user-select:none}.collapsible .panel-header{cursor:pointer}.panel-header::-webkit-details-marker{display:none}.panel-content{background:var(--ui-color-background);padding:1rem}.panel-content>*{opacity:0;transition:opacity var(--ui-animation-speed) ease-out}.panel.expanded .panel-content>*{opacity:1}.panel .chevron{height:1.2rem;transform:rotate(0);transition:transform var(--ui-animation-speed) ease-out}.panel .chevron svg{width:1.2rem;height:1.2rem}.panel.expanded .chevron{transform:rotate(90deg)}.panel.round{border-radius:var(--ui-border-radius)}.panel.round .panel-content{border-radius:calc(var(--ui-border-radius) - 2px)}.panel.disabled{opacity:.5}.panel-header:focus{outline:0}.panel:has(.panel-header:focus-visible){border-color:var(--ui-color-accent);box-shadow:var(--ui-shadow-focus);z-index:2}.panel.info{border-color:var(--ui-color-info);background:var(--ui-color-info-semi)}.panel.success{border-color:var(--ui-color-success);background:var(--ui-color-success-semi)}.panel.warning{border-color:var(--ui-color-warning);background:var(--ui-color-warning-semi)}.panel.danger{border-color:var(--ui-color-danger);background:var(--ui-color-danger-semi)}.popover-plate{--popover-tip-size:14px;--popover-color:var(--ui-popup-background);--popover-border:var(--ui-popup-border);--tip-offset:50%;position:absolute;transform:translateZ(1px);z-index:var(--ui-z-index-popup)}.popover-plate.opening{opacity:0}.popover{position:relative;border-radius:var(--ui-border-radius-m);box-shadow:var(--ui-shadow-tooltip)}.popover-plate.hide-tip .popover{box-shadow:var(--ui-shadow-fancy)}.popover-plate:not(.hide-tip) .popover-content::before,.popover-plate:not(.hide-tip) .popover::before{content:'';position:absolute;display:block;width:var(--popover-tip-size);height:var(--popover-tip-size);transform:rotate(45deg) skew(8deg,8deg);left:var(--tip-offset);margin-left:calc(var(--popover-tip-size)/ -2)}.popover-plate:not(.hide-tip) .popover::before{box-shadow:var(--ui-shadow-tooltip);background-color:var(--popover-color);border:var(--popover-border);border-width:1.5px;margin-left:calc(var(--popover-tip-size)/ -2 - .5px)}.popover-content{padding:1rem;text-align:center;position:relative;border-radius:inherit;z-index:1;background-color:var(--popover-color);border:var(--popover-border)}.popover-content>*{position:relative}.popover-plate:not(.hide-tip) .popover-content::before{background-color:inherit;z-index:-1}.popover-content:focus,.popover-plate .popover:focus,.popover-plate:focus{outline:0}.popover-top:not(.hide-tip){padding-bottom:var(--popover-tip-size)}.popover-top:not(.hide-tip) .popover::before{border-radius:0 0 3px;bottom:calc(var(--popover-tip-size)/ -2)}.popover-top:not(.hide-tip) .popover-content::before{border-radius:0 0 2px;bottom:calc(var(--popover-tip-size)/ -2)}.popover-bottom:not(.hide-tip){padding-top:var(--popover-tip-size)}.popover-bottom:not(.hide-tip) .popover::before{border-radius:3px 0 0;top:calc(var(--popover-tip-size)/ -2)}.popover-bottom:not(.hide-tip) .popover-content::before{border-radius:2px 0 0;top:calc(var(--popover-tip-size)/ -2)}.theme-light .popover-plate{--popover-color:#fff}@supports ((-webkit-backdrop-filter:none) or (backdrop-filter:none)){.popover-plate.hide-tip .popover-content{background-color:var(--ui-color-background-semi);-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px)}}.push-button.touching,.push-button:active,.push-button[aria-pressed=true]{filter:brightness(.85) contrast(1.1);transform:translateY(1px);box-shadow:0 1px 0 rgb(0 0 0/.8) inset}.push-button[aria-pressed=true]:focus-visible{box-shadow:0 1px 0 rgb(0 0 0/.8) inset,var(--ui-shadow-focus)}.push-button[aria-pressed=true].button-outline{background-color:var(--ui-color-secondary-semi)}.push-button[aria-pressed=true].button-outline.info{background-color:var(--ui-color-info-semi)}.push-button[aria-pressed=true].button-outline.success{background-color:var(--ui-color-success-semi)}.push-button[aria-pressed=true].button-outline.warning{background-color:var(--ui-color-warning-semi)}.push-button[aria-pressed=true].button-outline.danger{background-color:var(--ui-color-danger-semi)}.push-button.button-outline.touching,.push-button.button-outline:active,.push-button.button-outline[aria-pressed=true]{box-shadow:none}.splitter{position:absolute;height:100%;width:16px;z-index:90;cursor:ew-resize}.splitter::after{content:" ";display:block;width:6px;height:100%;margin:0 auto}.splitter.vertical{width:100%;height:16px;cursor:ns-resize}.splitter.vertical::after{width:100%;height:6px;margin:auto 0}.splitter.is-dragging::after,.splitter:hover::after{background-color:var(--ui-color-background-1)}.table{width:100%;height:100%;overflow:auto;overscroll-behavior-y:contain;position:relative;border:2px solid var(--ui-color-border)}.table table{border-spacing:0;width:100%;table-layout:fixed}.table.round{border-radius:var(--ui-border-radius)}.table.selectable{cursor:default;-webkit-user-select:none;user-select:none}.table tfoot,.table thead{position:sticky;z-index:2}.table thead{top:0}.table tfoot{bottom:0}.table tfoot td,.table thead th{padding:var(--ui-margin-m);font-weight:400;text-align:left;vertical-align:middle;background:var(--ui-color-background-input)}.table tbody:focus,.table tbody:focus tr,.table tr:focus,.table tr:focus-within{outline:1px solid transparent;background-color:var(--ui-color-highlight-1)}.table tbody td{padding:var(--ui-margin) var(--ui-margin-m) calc(var(--ui-margin) + 1px);border-bottom:1px solid var(--ui-color-border);vertical-align:middle;line-height:1.5rem}.table td:first-child,.table th:first-child{padding-left:var(--ui-margin-l)}.table td:last-child,.table th:last-child{padding-right:var(--ui-margin-l)}.table tbody:last-of-type tr:last-child td{border-bottom:none}.ui-tag{border:1px solid var(--ui-color-border);background:var(--ui-color-secondary);border-radius:var(--ui-border-radius);padding:.4rem .7rem;display:inline-flex;align-items:center;gap:.2rem;height:2rem;cursor:default;color:var(--ui-color-text);-webkit-user-select:none;user-select:none}.ui-tag.clickable{touch-action:manipulation;cursor:pointer}.ui-tag.clickable:not(.disabled):active{transform:translateY(1px);filter:brightness(.85)}.ui-tag .icon{width:1rem;height:1rem;margin-left:-4px;transform:translateZ(1px)}.ui-tag:focus-visible{border-color:var(--ui-color-accent);box-shadow:var(--ui-shadow-focus);outline:1px solid transparent}.ui-tag .ui-tag-label{padding-bottom:2px}.ui-tag.dark{color:#fff}.ui-tag.light{color:#000}.ui-tag.disabled{opacity:.5}.ui-tag.round{border-radius:var(--ui-border-radius-xl)}.ui-tag.info{background-color:var(--ui-color-info)}.ui-tag.success{background-color:var(--ui-color-success)}.ui-tag.danger{background-color:var(--ui-color-danger)}.ui-tag.warning{background-color:var(--ui-color-warning)}.ui-tag.danger,.ui-tag.info,.ui-tag.success,.ui-tag.warning{color:var(--ui-color-text)}.tooltip-plate{--popover-tip-size:10px;--popover-color:#292929}.tooltip{border-radius:5px;max-width:75vw}.tooltip-content{padding:.5rem .7rem}.info .tooltip{--popover-color:var(--ui-color-info)}.success .tooltip{--popover-color:var(--ui-color-success)}.danger .tooltip{--popover-color:var(--ui-color-danger)}.warning .tooltip{--popover-color:var(--ui-color-warning)}.tree,.tree ul{padding:0;margin:0;list-style:none}.tree ul li,.tree>li{display:block;width:100%;padding:0;margin:0}.tree{display:flex;flex-flow:column;align-items:stretch;overflow:hidden;position:relative;margin:0;padding:.3rem;border-radius:var(--ui-border-radius)}.tree:focus{outline:0}.tree:focus-visible{box-shadow:0 0 0 1px var(--ui-color-accent),var(--ui-shadow-focus)}.tree-node{cursor:pointer;display:flex;align-items:center;border-radius:var(--ui-border-radius);padding:0 .5rem;height:var(--ui-button-height);-ms-touch-action:manipulation;touch-action:manipulation}.tree-node.selected{background-color:var(--ui-color-highlight-1)}.tree-node:hover{background-color:var(--ui-color-highlight)}.tree-icon{display:inline-block;width:1.5rem;height:1.5rem;margin-right:.5rem;background-color:var(--ui-color-text-2);-webkit-mask-size:1.5rem;-webkit-mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-size:1.5rem;mask-repeat:no-repeat;mask-position:0 center}.tree-label{line-height:2}.tree-indent{display:block;width:.8rem;margin-right:1rem;height:100%;border-right:1px solid transparent}.tree .tree-indent{border-right-color:var(--ui-color-border-1)}.tree-file-icon{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M14 3v4a1 1 0 0 0 1 1h4' /%3E%3Cpath d='M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z' /%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M14 3v4a1 1 0 0 0 1 1h4' /%3E%3Cpath d='M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z' /%3E%3C/svg%3E")}.tree-folder-icon{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M5 4h4l3 3h7a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2' /%3E%3Cline x1='12' y1='10' x2='12' y2='16' /%3E%3Cline x1='9' y1='13' x2='15' y2='13' /%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M5 4h4l3 3h7a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2' /%3E%3Cline x1='12' y1='10' x2='12' y2='16' /%3E%3Cline x1='9' y1='13' x2='15' y2='13' /%3E%3C/svg%3E")}.expanded .tree-folder-icon{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M5 4h4l3 3h7a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2' /%3E%3Cline x1='9' y1='13' x2='15' y2='13' /%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M5 4h4l3 3h7a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2' /%3E%3Cline x1='9' y1='13' x2='15' y2='13' /%3E%3C/svg%3E")}.button-toggle.input{width:min-content;max-width:100%;padding:0;flex-flow:column;align-items:flex-start;justify-content:flex-start;border-radius:calc(var(--ui-border-radius) + 1px)}.button-toggle .input-inner{width:100%;overflow:hidden;border-radius:calc(var(--ui-border-radius) + 1px)}.button-toggle .input-scroller{width:100%;border-radius:var(--ui-border-radius);background-color:var(--ui-color-background-input);overflow:auto hidden;overscroll-behavior-x:contain;scrollbar-width:none}.button-toggle .input-scroller::-webkit-scrollbar{width:0;height:0}.button-toggle .input-row{min-width:100%;width:min-content}.button-toggle .input-row .button{position:static;color:var(--ui-color-text);box-shadow:none;min-height:calc(var(--ui-button-height) - 2px);background:var(--ui-color-background-input);border:none;border-radius:0;flex:1;border-left:1px solid var(--ui-color-border);min-width:min-content}.button-toggle .button:has(:checked){background-color:var(--ui-color-highlight)}.button-toggle .input-row .button:first-child{border-left:none;border-top-left-radius:var(--ui-border-radius);border-bottom-left-radius:var(--ui-border-radius)}.button-toggle .input-row .button:last-child{border-top-right-radius:var(--ui-border-radius);border-bottom-right-radius:var(--ui-border-radius)}.button-toggle .button input{position:absolute;top:-100px;opacity:0;pointer-events:none}.button-toggle.round{border-radius:var(--ui-border-radius-xl)}.button-toggle.round:not(.has-error) .input-inner{border-radius:var(--ui-border-radius-xl)}.button-toggle.round .input-row .button:first-child{border-top-left-radius:var(--ui-border-radius-xl);border-bottom-left-radius:var(--ui-border-radius-xl)}.button-toggle.round .input-row .button:last-child{border-top-right-radius:var(--ui-border-radius-xl);border-bottom-right-radius:var(--ui-border-radius-xl)}.checkbox{display:inline-flex;flex-flow:column;align-items:stretch;justify-content:flex-start;gap:.5rem}.checkbox-row{display:inline-flex;align-items:center;justify-content:flex-start;gap:.5rem}.checkbox input:focus{border-color:var(--ui-color-accent)}.checkbox input::after{content:"✕";font-family:Arial,Helvetica,sans-serif;line-height:1.1}.checkbox.indeterminate input::after{content:" ";opacity:1;background:var(--ui-color-text-1);width:65%;height:65%;border-radius:.2rem}.checkbox input:checked::after{opacity:1}.checkbox.disabled{opacity:.5}.checkbox.disabled input{opacity:1}.checkbox.has-error input{border-color:var(--ui-color-danger)}.checkbox.has-error input:focus{box-shadow:var(--ui-shadow-danger)}.checkbox.label-on-the-left .checkbox-row{flex-flow:row-reverse}.combobox .input-inner{position:relative}.combobox input{padding-right:36px}.multiselect input{text-overflow:ellipsis}.combobox-button:focus{box-shadow:none}.combobox-list{position:absolute;z-index:var(--ui-z-index-popup);overflow-y:auto;overscroll-behavior-y:contain;padding:.2rem;min-height:0;max-height:26rem;-webkit-user-select:none;user-select:none;transform:translateZ(1px);color:var(--ui-color-text);border:var(--ui-popup-border);border-radius:calc(var(--ui-border-radius) + .2rem);background:var(--ui-popup-background);box-shadow:var(--ui-shadow-fancy)}.combobox-list.empty{padding:0;box-shadow:none;border:none}.combobox-list:not(.empty){min-height:2rem}.combobox-list.hidden{display:none}.combobox-list-header,.combobox-list-item{height:var(--ui-button-height);line-height:1;display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden;padding:0 1rem}.combobox-list-header{margin:.5rem 0 0;color:var(--ui-color-text-2);font-weight:500;cursor:default}.combobox-list-header:last-child{display:none}.combobox-list-empty{padding:.6rem 1.2rem;color:var(--ui-color-text-semi);cursor:default;white-space:nowrap}.combobox-list-item{color:var(--ui-color-text);cursor:pointer;border-radius:var(--ui-border-radius);-ms-touch-action:manipulation;touch-action:manipulation}.combobox-list-item svg{margin-right:.5rem}.combobox-list-item .tick{display:none}.combobox-list-item.checked .tick{display:block}.combobox-list:not(.multiselect) .combobox-list-item.in-group{padding-left:2rem}.mobile .combobox-list-item{transition:background-color .3s ease-out}.mobile .combobox-list-item.blinking{transition:background-color .1s;background-color:var(--ui-color-highlight-1)}.desktop .combobox-list-item.checked{background-color:var(--ui-color-highlight-semi)}.desktop .combobox-list-item.selected{background-color:var(--ui-color-highlight-1)}.desktop .combobox-list-item:hover{background-color:var(--ui-color-highlight)}.combobox-list-item b{color:var(--ui-color-accent)}.combobox-list-item.checked+.combobox-list-item.checked{border-top-left-radius:0;border-top-right-radius:0}.combobox-list-item.checked:has(+ .combobox-list-item.checked){border-bottom-left-radius:0;border-bottom-right-radius:0}@supports ((-webkit-backdrop-filter:none) or (backdrop-filter:none)){.combobox-list{background-color:var(--ui-color-background-semi);-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px)}}.input-date .input-text-inner{position:relative;overflow:unset}.input-date input{flex:1;width:100%;padding-right:36px}.input-date.native .input-date-button{pointer-events:none}.datepicker{display:none;transform:translateZ(1px)}.datepicker.active{display:block}.datepicker-dropdown{position:absolute;top:0;left:0;z-index:var(--ui-z-index-popup);padding-top:.2rem}.datepicker-dropdown.datepicker-orient-top{padding-top:0;padding-bottom:4px}.datepicker-picker{display:inline-block;overflow:hidden;border-radius:.4em;background-color:var(--ui-color-background);border:var(--ui-popup-border);box-shadow:var(--ui-shadow-fancy)}.datepicker-picker span{display:block;flex:1;border:0;border-radius:6px;cursor:default;text-align:center;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.datepicker-main{padding:var(--ui-margin-s)}.datepicker-controls,.datepicker-grid,.datepicker-view,.datepicker-view .days-of-week{display:flex}.datepicker-grid{flex-wrap:wrap;width:15.75rem}.datepicker-cell{-ms-touch-action:manipulation;touch-action:manipulation}.datepicker-cell,.datepicker-view .week{height:2.25rem;line-height:2.25rem}.datepicker-view .days .datepicker-cell,.datepicker-view .dow{flex-basis:14.2857142857%}.datepicker-view.datepicker-grid .datepicker-cell{flex-basis:25%;height:4.5rem;line-height:4.5rem}.datepicker-title{padding:.375rem .75rem;text-align:center}.datepicker-footer .datepicker-controls,.datepicker-header .datepicker-controls{padding:.2rem}.datepicker-controls .button{padding:0;width:2.5rem;min-width:2.5rem;text-align:center}.datepicker-controls .button svg{margin:0;height:1.4rem}.datepicker-controls .button.disabled{visibility:hidden}.datepicker-controls .button.view-switch{flex:auto;width:auto}.datepicker-footer .datepicker-controls .button{width:100%}.datepicker-view .dow{height:1.5rem;line-height:1.5rem;font-size:var(--ui-font-xs)}.datepicker-view .week{width:2.25rem;font-size:.75rem}.datepicker-cell.next:not(.disabled),.datepicker-cell.prev:not(.disabled){color:var(--ui-color-text-2)}.datepicker-cell.selected.next:not(.disabled),.datepicker-cell.selected.prev:not(.disabled){color:var(--ui-color-text-1)}.datepicker-cell.selected{background-color:var(--ui-color-highlight);color:var(--ui-color-text)}.datepicker-cell.disabled{color:var(--ui-color-text-2)}.datepicker-cell.today:not(.selected){background-color:var(--ui-color-secondary-semi);color:var(--ui-color-text)}.datepicker-cell.focused,.datepicker-cell.highlighted:not(.range).focused,.datepicker-cell.highlighted:not(.range,.disabled):hover,.datepicker-cell.today.focused,.datepicker-cell:not(.disabled):hover{background-color:var(--ui-color-highlight);color:var(--ui-color-text);cursor:pointer}.datepicker-cell.range-start{border-radius:4px 0 0 4px}.datepicker-cell.range-end{border-radius:0 4px 4px 0}.datepicker-cell.range{border-radius:0;background-color:#dbdbdb}.datepicker-cell.range-end:not(.selected),.datepicker-cell.range-start:not(.selected){background-color:#b5b5b5;color:#fff}.datepicker-cell.range-end.focused:not(.selected),.datepicker-cell.range-start.focused:not(.selected){background-color:#afafaf}.datepicker-cell.range:not(.disabled,.focused,.today):hover{background-color:#d5d5d5}.datepicker-cell.range.disabled{color:#c2c2c2}.datepicker-cell.range.focused{background-color:#cfcfcf}@supports ((-webkit-backdrop-filter:none) or (backdrop-filter:none)){.datepicker-picker{background-color:var(--ui-color-background-semi);-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px)}}.checkbox .error-wrap,.input .error-wrap,.radio .error-wrap{display:flex;flex-flow:row;align-items:stretch;justify-content:flex-start}.checkbox .error-wrap,.radio .error-wrap{overflow:hidden}.input .info-bar-error,.radio .info-bar-error,.textarea .info-bar-error{padding-bottom:calc(.4rem + 10px);margin-bottom:-10px;border:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.checkbox .info-bar{margin:0}.textarea .info-bar-error{grid-area:1/1/2/2}.has-error.input .input-inner,.has-error.textarea .textarea-inner{background-color:var(--ui-color-danger-semi)}.has-error.input .input-inner{border-color:var(--ui-color-danger)}.has-error.input .input-inner:focus-within,.has-error.input .input-inner:has(:active):not(.disabled){box-shadow:var(--ui-shadow-danger)}.has-error.input .info-bar-error,.has-error.textarea .info-bar-error{background-color:transparent}.input-math{position:relative;display:inline-flex;flex-flow:column;align-items:stretch;justify-content:space-between}.input-math input{padding-left:30px;text-align:right}.input-password{position:relative;display:inline-flex;flex-flow:column;align-items:stretch;justify-content:space-between}.input-password input{font-family:verdana,sans-serif;width:100%;padding-right:36px}.input-password.visible input{font-family:inherit}.input-password.visible .input-password-button{color:var(--ui-color-danger)}.input-password.visible .input-password-button svg{stroke-width:2}.password-strength{width:calc(100% - 6px);height:3px;margin:-7px 3px 0;border-radius:10px;background-color:var(--ui-color-background-input);cursor:default}.password-strength-progress{height:100%;border-radius:inherit;transition:width var(--ui-animation-speed) ease-out;background-color:var(--ui-color-danger)}.password-strength-progress.warning{background-color:var(--ui-color-warning)}.password-strength-progress.info{background-color:var(--ui-color-info)}.password-strength-progress.success{background-color:var(--ui-color-success)}.password-strength-info{position:absolute;top:0;display:none;cursor:default;width:calc(100% - 2px);flex-flow:column;align-items:stretch;gap:1rem;font-size:.8rem;margin:.2rem 1px 0;padding:.8rem;border-radius:var(--ui-border-radius);background-color:var(--ui-color-background-input);border:1px solid var(--ui-color-danger);z-index:var(--ui-z-index-elevated)}.input-password:focus-within .password-strength-info{display:flex}.password-strength-info.warning{border-color:var(--ui-color-warning)}.password-strength-info.info{border-color:var(--ui-color-info)}.password-strength-info.success{border-color:var(--ui-color-success)}.password-strength-info h2{font-size:var(--ui-font-s);text-align:left;margin-bottom:0}.password-strength-info small{font-size:var(--ui-font-xs);margin:0;line-height:1.4}.password-strength-info small:empty{display:none}.input-rating{min-width:fit-content}.input-rating .input-inner,.input-rating .input-inner:focus{outline:0}.input-rating .input-row{align-items:stretch;justify-content:flex-start;height:var(--ui-button-height);background-color:var(--ui-color-background-input)}.input-rating .button{position:static;right:unset;cursor:default;user-select:none;-ms-touch-action:manipulation;touch-action:manipulation;font-size:1.2rem;margin:0}.input-rating .button:focus-visible{box-shadow:none}.input-rating .btn-reset{margin-left:auto}.input-rating .btn-reset:focus-visible{color:var(--ui-color-accent)}.input-rating .button.active svg{color:var(--ui-color-accent);fill:var(--ui-color-accent)}.input-rating .button.button-link,.input-rating .button.button-link:focus-visible,.input-rating .button.button-link:hover{text-decoration:none}.input-rating.light:not(.has-error) .input-inner,.input-rating.light:not(.has-error) .input-row{background-color:transparent;border:none}.input-search input{padding-left:calc(2rem + 6px);padding-right:2rem;appearance:none;-webkit-appearance:none}::-webkit-search-cancel-button{display:none}.input-search .input-row>.icon{top:1px}.input-search-button{display:none}.input-search-button.visible{display:inline-flex}.input-tag .input-inner{touch-action:manipulation}.input-tag .input-inner:focus{outline:0}.input-tag .input-inner[aria-expanded=true]{border-color:var(--ui-color-accent);box-shadow:var(--ui-shadow-focus)}.input-tag .input-row{min-height:calc(var(--ui-button-height) - 2px);padding:4px .3rem 3px;align-items:flex-start;justify-content:flex-start;gap:.2rem;flex-wrap:wrap}.input-tag .input-row>.icon{position:static;flex-shrink:0;margin-top:.14rem}.input-tag .ui-tag{height:1.7rem}.input-tag-popover{width:25ch}.input-tag-popover .popover-content{padding:.5rem}.input-tag-list-tags{display:flex;flex-flow:row wrap;gap:.2rem;flex:1;max-height:10rem;overflow-y:auto}.input-tag-list-add-row{display:flex;align-items:center;gap:.5rem}.input-tag-list-add-row .input{width:100px;flex:1}.input-tag-list-add-row .input input{background:var(--ui-color-background-semi)}.input-tag-list-tags:not(:empty){margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:var(--ui-popup-border)}.input-text .input-inner{overflow:hidden}.input-time .input-row{border-radius:inherit;background:var(--ui-color-background-input)}.input-time input{margin-left:calc(2rem - 2px)}.label{height:var(--ui-button-height);line-height:1.6;padding:0;display:inline-flex;align-items:center;-ms-touch-action:manipulation;touch-action:manipulation}.label.disabled{pointer-events:none;-webkit-user-select:none;user-select:none}.input .label{padding-inline:1px}.label-on-the-left .label{padding-inline:0;padding-top:1px;width:max-content;white-space:nowrap}.input-tag.label-on-the-left,.radio.label-on-the-left,.textarea.label-on-the-left{align-items:flex-start}.input-tag.label-on-the-left .label,.radio.label-on-the-left>.label,.textarea.label-on-the-left .label{height:calc(var(--ui-button-height) + 2px)}.radio.label-on-the-left>.label{margin-block:var(--ui-margin-s)}.radio{min-width:26ch;width:min-content;max-width:100%;--ui-radio-padding:var(--ui-margin-s)}.radio input{border-radius:10rem;width:1.3rem;height:1.3rem}.radio input:focus{box-shadow:none}.radio input::after{background:var(--ui-color-text-1);width:65%;height:65%;border-radius:inherit}.radio-inner{display:flex;flex-flow:column;align-items:stretch;justify-content:flex-start;width:100%;padding:0;border:1px solid var(--ui-color-border);border-radius:calc(var(--ui-border-radius) + var(--ui-radio-padding));background-color:var(--ui-color-background-input);overflow:hidden}.radio-items{display:flex;flex-flow:column;align-items:stretch;justify-content:flex-start;gap:var(--ui-radio-padding);width:100%;padding:var(--ui-radio-padding) 0;background-color:var(--ui-color-background-input);border-radius:inherit}.radio-item{display:flex;flex-flow:row;align-items:center;justify-content:flex-start;gap:.5rem;width:calc(100% - calc(var(--ui-radio-padding) * 2));margin:0 var(--ui-radio-padding);padding:0 var(--ui-margin);border-radius:var(--ui-border-radius)}.radio-item.disabled{opacity:.5}.radio-item.disabled input{opacity:1}.radio-item:not(.disabled):focus-within,.radio-item:not(.disabled):hover{background-color:var(--ui-color-highlight-1)}.radio-inner:focus-within,.radio-inner:has(:active):not(.disabled){border-color:var(--ui-color-accent);box-shadow:var(--ui-shadow-focus)}.radio.has-error .radio-inner{border-color:var(--ui-color-danger);background-color:var(--ui-color-danger-semi)}.radio.has-error .info-bar-error{background-color:transparent}.has-error .radio-inner:focus-within,.has-error .radio-inner:has(:active):not(.disabled){box-shadow:var(--ui-shadow-danger);border-color:var(--ui-color-danger)}.range{position:relative;width:25ch;vertical-align:top;--range-size:calc(var(--ui-button-height) / 3 * 2)}.range .range-inner{display:flex;flex-flow:column;gap:.5rem;flex:1;padding:0 0 .5rem;position:relative;height:100%}.range input{-webkit-appearance:none;appearance:none;margin:0;width:100%;height:.5rem;border-radius:5rem;padding-inline:0;border:1px solid var(--ui-color-border);background:var(--ui-color-background-input);background-image:linear-gradient(var(--ui-color-highlight),var(--ui-color-highlight));background-size:70% 100%;background-repeat:no-repeat;background-clip:padding-box}.range input::-webkit-slider-runnable-track{-webkit-appearance:none;display:block;height:.5rem;border-radius:.5rem}.range input::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:var(--ui-color-text);height:var(--range-size);width:var(--range-size);border-radius:5rem;box-shadow:0 1px 3px #000c;transform:translateY(calc(-50% + .25rem - 1px));transform-origin:center 25%}.range input::-moz-range-track{display:flex;align-items:center;background-color:var(--ui-color-background-input);height:.5rem;border-radius:.5rem}.range input::-moz-range-thumb{background-color:var(--ui-color-text);height:var(--range-size);width:var(--range-size);border-radius:5rem;box-shadow:0 1px 3px #000c}.range:not(.disabled) input::-webkit-slider-thumb:active{scale:0.9}.range:not(.disabled) input::-moz-slider-thumb:active{scale:0.9}.range-ticks{display:flex;justify-content:space-between;margin:0 -.1rem .4rem;cursor:default}.range-ticks span{width:3ch;text-align:center}.range:not(.disabled) .range-ticks span{cursor:pointer}.range.label-on-the-left{align-items:flex-end}.range.label-on-the-left .label{height:1.8rem}.select{font:inherit;position:relative}.select select{-moz-appearance:none;-webkit-appearance:none;appearance:none;font-size:1rem;font-family:inherit;background:0 0;padding:0 30px 0 var(--ui-margin-m);width:100%;border:1px solid transparent;height:calc(var(--ui-button-height) - 2px);line-height:1.2;color:var(--ui-color-text);background-color:var(--ui-color-background-input);border-radius:var(--ui-border-radius)}.select select:focus{outline:0}.select optgroup{font-weight:500}.select .input-row::after{content:"";position:absolute;width:2rem;right:0;top:0;bottom:0;opacity:.6;pointer-events:none;background-repeat:no-repeat;background-position:right .7rem center;background-size:.6rem .8rem;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23bbb' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E")}.theme-light .select .input-row::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23222' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E")}.textarea{position:relative;width:25ch;vertical-align:top}.textarea textarea,.textarea.autogrow .textarea-inner::after{font:inherit;line-height:1.3;border:1px solid transparent;margin:0;width:100%;padding:var(--ui-margin-m);grid-area:2/1/2/2}.textarea .textarea-inner{width:100%;display:inline-grid;align-items:stretch;background-color:var(--ui-color-background-input);border-radius:var(--ui-border-radius);border:1px solid var(--ui-color-border)}.textarea textarea{resize:vertical;color:var(--ui-color-text);border-radius:var(--ui-border-radius);border:none;min-height:2.6rem;background-color:var(--ui-color-background-input)}.textarea .textarea-inner:focus-within{border-color:var(--ui-color-accent);box-shadow:var(--ui-shadow-focus);outline:0}.textarea textarea:focus{outline:0;box-shadow:none;border:none}.textarea textarea:invalid{border:none;box-shadow:none}.textarea textarea:disabled{opacity:.5}.textarea.autogrow .textarea-inner::after{content:attr(data-value) " ";visibility:hidden;white-space:pre-wrap;min-width:1rem;resize:none;background:0 0;appearance:none}.textarea.autogrow textarea{resize:none}.textarea.has-error .textarea-inner{border-color:var(--ui-color-danger)}.textarea.has-error .textarea-inner:focus-within{box-shadow:var(--ui-shadow-danger)}.toggle{--toggle-width:60px;--toggle-padding:2px;--border-radius:var(--ui-border-radius-xl);--toggle-height:calc(var(--toggle-width) / 2.5);--knob-size:var(--toggle-height);display:inline-flex;flex-flow:column;align-items:flex-start;position:relative;vertical-align:middle;-webkit-user-select:none;user-select:none;border-radius:var(--border-radius)}.toggle-inner{border:1px solid var(--ui-color-text-2);padding:var(--toggle-padding);border-radius:inherit;background-color:var(--ui-color-background-2);position:relative;margin-block:3px}.toggle:has(:disabled){pointer-events:none;opacity:.6}.toggle:focus{outline:0}.toggle:focus-visible .toggle-inner{box-shadow:var(--ui-shadow-focus);border-color:var(--ui-color-accent)}.toggle-input{display:none}.toggle-label{width:var(--toggle-width);height:var(--toggle-height);border-radius:calc(var(--border-radius) - var(--toggle-padding));display:flex;align-items:center;justify-content:flex-start;flex-shrink:0;overflow:hidden;cursor:pointer}.toggle-scroller{height:100%;border-radius:inherit;display:inline-flex;align-items:center;justify-content:center;transition:margin-left .2s cubic-bezier(.85, .05, .18, 1.4);flex-shrink:0;width:calc(200% - var(--toggle-height));margin-left:calc(var(--toggle-height) - var(--toggle-width) - var(--toggle-padding))}.toggle-option{width:50%;height:100%;border-radius:inherit;background-color:green;display:inline-flex;align-items:center;justify-content:center;background-repeat:no-repeat;background-position:center;background-size:calc(var(--toggle-width)/ 5)}.toggle-option:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0;background-color:var(--ui-color-highlight);background-position:41% 47%;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 17.5714286 9.6 9.4285714 22.4-22' fill='none' stroke='%23fff' stroke-width='4'/%3E%3C/svg%3E")}.toggle-option:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0;background-color:var(--ui-color-background-input);background-position:62% 55%;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m27.5352.4648-27.0704 27.0704m-.4648-27.5352 28 28' stroke='%23fff' stroke-width='4'/%3E%3C/svg%3E")}.theme-light .toggle-option:first-of-type{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 17.5714286 9.6 9.4285714 22.4-22' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E")}.theme-light .toggle-option:last-of-type{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m27.5352.4648-27.0704 27.0704m-.4648-27.5352 28 28' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E")}.toggle-handle{width:0;height:0;position:absolute;transition:left .2s cubic-bezier(.85, .05, .18, 1.4);border-radius:inherit;left:calc(var(--toggle-height)/ 2 + var(--toggle-padding))}.toggle-knob{width:var(--knob-size);height:var(--knob-size);background:var(--ui-color-text-1);border:1px solid var(--ui-color-text-2);transform:translate(-50%,-50%);border-radius:inherit}.notification-archive{display:flex;flex-flow:column;align-items:stretch;justify-content:flex-start;width:100%;z-index:5;transform:translateX(calc(var(--ui-notification-width) + var(--ui-notification-gap) + 1rem));transition:transform var(--ui-animation-speed) ease-out}.notification-archive .notification{z-index:1}.notification-archive header{display:flex;align-items:center;justify-content:space-between;margin:var(--ui-notification-gap) var(--ui-notification-gap) 0;color:var(--ui-color-text);z-index:1;background-color:var(--ui-color-background-input);padding:.75rem .5rem .75rem 1rem;border-radius:var(--ui-border-radius)}.notification-archive button{color:inherit;font-size:var(--ui-font-l);font-weight:300;min-width:1.8rem;min-height:1.8rem}.notification-archive h2{color:inherit;font-size:var(--ui-font-l);margin:0;padding:0;border:none}.notification-archive h2 .button{padding-inline:var(--ui-margin-m);margin-left:-.5rem}.notification-archive h2 .button svg{transform:rotate(0);transition:transform var(--ui-animation-speed) ease-out}.notification-archive.expanded h2 .button svg{transform:rotate(90deg)}.notification-archive.inert{pointer-events:none}.notification-archive-buttons{white-space:nowrap;display:flex;align-items:center;justify-content:space-between;gap:.2rem}.notification-archive-buttons .btn-close{font-size:1.4rem;height:1.8rem;width:1.7rem;padding-bottom:.15rem}.notification.archived{filter:saturate(.3)}.notification-timestamp{color:var(--ui-color-text-semi);font-size:var(--ui-font-xs);margin-inline:0.5rem}.show-archive .notification-archive{transform:translateX(0);margin-bottom:1rem;height:auto;overflow:visible}.notification-center{--ui-notification-border-radius:var(--ui-border-radius);--ui-notification-gap:0.75rem;--ui-notification-width:30rem;position:fixed;transform:translateZ(1px);display:flex;flex-flow:column;align-items:stretch;justify-content:flex-start;width:calc(var(--ui-notification-width) + var(--ui-notification-gap) * 2);top:0;right:0;z-index:-1;max-height:100vh;overflow:hidden auto;overscroll-behavior:contain}.notification-center.archive-is-visible,.notification-center.has-active-notifications{z-index:var(--ui-z-index-popup)}.notification{font-size:var(--ui-font-m);position:relative;overflow:hidden;flex-grow:0;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;min-height:2rem;border:none;margin:var(--ui-notification-gap) var(--ui-notification-gap) 0;box-shadow:var(--ui-shadow-fancy);border-radius:var(--ui-notification-border-radius);z-index:var(--ui-z-index-popup)}.notification:last-child{margin-bottom:calc(var(--ui-notification-gap) + 10px)}.notification button{background:0 0;color:var(--ui-color-text);height:1.8rem;min-width:1.6rem;font-size:inherit;padding:0 var(--ui-margin-m);margin:0 var(--ui-margin-m) 0 0;display:flex;align-items:center;justify-content:center;border-radius:var(--ui-border-radius);border:1px solid transparent}.notification button:focus-visible{border-color:var(--ui-color-accent);box-shadow:var(--ui-shadow-focus);outline:0}.notification button:hover{color:var(--ui-color-text-2);background:#2228}.notification button:active{color:var(--ui-color-text-1);background:#0008}.notification .notification-close{font-size:1.4rem;font-weight:200;position:relative;padding-bottom:.15rem}.notification-buttons,.notification-icon{min-height:100%;display:flex;align-items:center;justify-content:flex-end}.notification-icon{width:var(--ui-button-height)}.notification-msg{color:var(--ui-color-text);flex:1;display:flex;align-items:center;justify-content:flex-start;padding:.8rem;line-height:1.4;font-weight:400}.notification-progressbar{position:absolute;inset:0;border-radius:inherit;z-index:-1}.notification-progress{height:100%;border-radius:inherit;background-color:#ffffff15;border:1px solid #ffffff25;margin:0;width:0;transition:width .2s}.notification:focus{border-color:var(--ui-color-accent);box-shadow:var(--ui-shadow-focus);outline:0}.notification-center-button svg{stroke:var(--ui-color-secondary)}.notification-center-button.has-notifications svg{stroke:var(--ui-color-text)}.notification-center-button.has-notifications svg>path:nth-child(2){fill:var(--ui-color-text)}@media (1px <= width <= 700px){.notification-center{--ui-notification-width:calc(100vw - var(--ui-notification-gap) * 2)}}@supports ((-webkit-backdrop-filter:none) or (backdrop-filter:none)){.notification{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}.notification-info{background-color:var(--ui-color-info-semi)}.notification-success{background-color:var(--ui-color-success-semi)}.notification-warning{background-color:var(--ui-color-warning-semi)}.notification-error{background-color:var(--ui-color-danger-semi)}} \ No newline at end of file +:root { + + /* BORDERS */ + --ui-border-radius: 0.375rem; /* 6px */ + --ui-border-radius-m: 0.6877rem;/* 11px */ + --ui-border-radius-l: 1rem; /* 16px */ + --ui-border-radius-xl: 5rem; /* 80px */ + + /* MARGIN & PADDING */ + --ui-margin: 0.375rem; /* 6px */ + --ui-margin-xs: 0.125rem; /* 2px */ + --ui-margin-s: 0.25rem; /* 4px */ + --ui-margin-m: 0.5rem; /* 8px */ + --ui-margin-l: 1rem; /* 16px */ + + + --ui-animation-speed: .25s; + --ui-button-height: 2.25rem; /* 36px */ + + + /* FONTS */ + --ui-font-system: system-ui, 'Segoe UI', 'Roboto', 'Helvetica', 'Arial', 'sans-serif', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; + --ui-font-xs: 0.875rem; /* 14px */ + --ui-font-s: 0.9375rem; /* 15px */ + --ui-font-m: 1rem; /* 16px */ + --ui-font-l: 1.0625rem; /* 17px */ + --ui-font-xl: 1.375rem; /* 22px */ + + + /* SHADOWS */ + --ui-shadow-focus: 0 0 2px 1px var(--ui-color-accent); + --ui-shadow-danger: 0 0 2px 1px var(--ui-color-danger); + --ui-shadow-small: 0 0 0 0.5px #fff4, 0 3px 10px #0006; + --ui-shadow-large: 0 0 0 1px #0003, 0 5px 20px #000a; + --ui-shadow-fancy: + 0 0 0 0.5px #111, + 0 1px 5px rgb(0 0 0 / 30%), + 0 4px 10px rgb(0 0 0 / 10%), + 0 10px 25px rgb(0 0 0 / 8%); + + + /* Z-INDEX */ + --ui-z-index-elevated: 9; + --ui-z-index-popup: 999; +} + + +body { + font-weight: 300; + font-size: 100%; + font-family: var(--ui-font-system), sans-serif; + box-sizing: border-box; +} +body * { box-sizing: inherit; } + + +.icon-tabler { width: 1.5rem; height: 1.5rem; } + +/* meatballs icon is misaligned */ +.icon-tabler-dots-vertical { margin-left: -1px; } + +.flex-spacer { flex: 1; } + +/* Icon visual alignment corrections */ +.icon-tabler-alert-triangle { transform: translateY(1px); } +.icon-tabler-logout { transform: translateX(3px); } + +/* adding this class to input elements will prevent scrolling on focus in mobile safari */ +.mobile .prevent-scrolling-on-focus:focus { animation: prevent-scrolling-on-focus 10ms; } + +@keyframes prevent-scrolling-on-focus { + 0% { opacity: 0; } + 100% { opacity: 1; } +} + +:root, +.theme-dark { + color-scheme: dark; + + --ui-color-accent: #bb7a00; + --ui-color-accent-semi: #bb7a0066; + + --ui-color-highlight: #1859a3; + --ui-color-highlight-semi: #1859a366; + --ui-color-highlight-1: #1e4572; + + --ui-color-secondary: #5a5956; + --ui-color-secondary-semi: #5a595666; + + + --ui-color-info: #30506a; + --ui-color-info-semi: #30506a99; + + --ui-color-success: #33624d; + --ui-color-success-semi: #33624d99; + + --ui-color-warning: #795001; + --ui-color-warning-semi: #79500199; + + --ui-color-danger: #943737; + --ui-color-danger-semi: #94373799; + + --ui-color-border: #1b1b1b; + --ui-color-border-1: #131313; + --ui-color-border-2: #0c0c0c; + + --ui-color-background: #2f2f2f; + --ui-color-background-semi: #2f2f2f66; + --ui-color-background-input: #222; + + --ui-color-background-1: #535353; + --ui-color-background-2: #1a1a1a; + + + + --ui-color-text: #fff; + --ui-color-text-semi: #fff6; + --ui-color-text-1: #bbb; + --ui-color-text-2: #888; + + + --ui-popup-border: 1px solid #fff3; + --ui-popup-background: var(--ui-color-background); + + --ui-shadow-button: 0 1px 0 #000c; + --ui-shadow-tooltip: 0 0 0 1px #000, 0 0 5px #0006; +} + +.theme-light { + color-scheme: light; + + --ui-color-accent: #b37400; + --ui-color-accent-semi: #b3740066; + + --ui-color-highlight: #8ec6ff; + --ui-color-highlight-semi: #8ec6ff66; + --ui-color-highlight-1: #6ba0de; + + --ui-color-secondary: #c0beb4; + --ui-color-secondary-semi: #c0beb466; + + + --ui-color-info: #bbd3f0; + --ui-color-info-semi: #bbd3f099; + + --ui-color-success: #7bd7ae; + --ui-color-success-semi: #7bd7ae99; + + --ui-color-warning: #eec64e; + --ui-color-warning-semi: #eec64e99; + + --ui-color-danger: #eb6e6f; + --ui-color-danger-semi: #eb6e6f99; + + --ui-color-border: #bbb; + --ui-color-border-1: #aaa; + --ui-color-border-2: #999; + + --ui-color-background: #eee; + --ui-color-background-semi: #eee6; + --ui-color-background-input: #c2c2c2; + + --ui-color-background-1: #f0f0f0; + --ui-color-background-2: #ccc; + + + + --ui-color-text: #000; + --ui-color-text-semi: #0006; + --ui-color-text-1: #222; + --ui-color-text-2: #666; + + + --ui-popup-border: 1px solid #ccc; + --ui-popup-background: var(--ui-color-background); + + --ui-shadow-button: 0 1px 0 #000c; + --ui-shadow-tooltip: 0 0 1px #0002, 0 0 5px #0006; +} + +.button-link { + background: none; + border: none; + cursor: pointer; + min-width: 0; +} + +.button.button-link { + margin: calc(var(--ui-margin) * -1); + padding: var(--ui-margin); + vertical-align: baseline; + text-decoration: underline; +} + +.button.button-link:focus-visible, +.button.button-link:hover { text-decoration: underline; text-underline-offset: 0.2rem; } + + +.button-link.info:focus-visible, +.button-link.info:hover { text-decoration-color: var(--ui-color-info); } + +.button-link.success:focus-visible, +.button-link.success:hover { text-decoration-color: var(--ui-color-success); } + +.button-link.warning:focus-visible, +.button-link.warning:hover { text-decoration-color: var(--ui-color-warning); } + +.button-link.error:focus-visible, +.button-link.error:hover, +.button-link.danger:focus-visible, +.button-link.danger:hover { text-decoration-color: var(--ui-color-danger); } + +.button-normal { + background: var(--ui-color-secondary); + border: 0.5px solid #0006; + border-bottom-color: #000c; + box-shadow: var(--ui-shadow-button); + min-width: calc(var(--ui-button-size) * 4); + min-height: calc(var(--ui-button-size) * 2); +} + +.button-normal.info { background: var(--ui-color-info); } +.button-normal.success { background: var(--ui-color-success); } +.button-normal.warning { background: var(--ui-color-warning); } +.button-normal.error, +.button-normal.danger { background: var(--ui-color-danger); } + +.button-outline { + background: transparent; + border: 2px solid var(--ui-color-secondary); + min-width: calc(var(--ui-button-size) * 4); + min-height: calc(var(--ui-button-size) * 2); +} + +.button-outline:focus-visible, +.button-outline:hover { background-color: var(--ui-color-secondary-semi); } + +.button-outline.info { border-color: var(--ui-color-info); } +.button-outline.info:focus-visible, +.button-outline.info:hover { background-color: var(--ui-color-info-semi); } + +.button-outline.success { border-color: var(--ui-color-success); } +.button-outline.success:focus-visible, +.button-outline.success:hover { background-color: var(--ui-color-success-semi); } + +.button-outline.warning { border-color: var(--ui-color-warning); } +.button-outline.warning:focus-visible, +.button-outline.warning:hover { background-color: var(--ui-color-warning-semi); } + +.button-outline.error, +.button-outline.danger { border-color: var(--ui-color-danger); } + +.button-outline.error:focus-visible, +.button-outline.error:hover, +.button-outline.danger:focus-visible, +.button-outline.danger:hover { background-color: var(--ui-color-danger-semi); } + +.button-text { + background: transparent; + border: none; + min-width: calc(var(--ui-button-size) * 4); + min-height: calc(var(--ui-button-size) * 2); + box-shadow: none; +} + +.button-text:focus-visible, +.button-text:hover { background-color: var(--ui-color-secondary); } + +.button-text.info:focus-visible, +.button-text.info:hover { background-color: var(--ui-color-info); } + +.button-text.success:focus-visible, +.button-text.success:hover { background-color: var(--ui-color-success); } + +.button-text.warning:focus-visible, +.button-text.warning:hover { background-color: var(--ui-color-warning); } + +.button-text.error:focus-visible, +.button-text.error:hover, +.button-text.danger:focus-visible, +.button-text.danger:hover { background-color: var(--ui-color-danger); } + +button { -ms-touch-action: manipulation; touch-action: manipulation; } + +.button { + --ui-button-size: 1rem; + + font: inherit; + line-height: 1.4; + font-weight: 400; + font-size: var(--ui-button-size); + + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--ui-margin-m); + + min-width: var(--ui-button-height); + min-height: var(--ui-button-height); + height: auto; + + margin: 0; + padding: 0 var(--ui-margin-l); + color: var(--ui-color-text); + -webkit-user-select: none; + user-select: none; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + vertical-align: middle; + border-radius: var(--ui-border-radius); + text-decoration: none; +} + + +.button:hover { text-decoration: none; } +.button:focus-visible { + border-color: var(--ui-color-accent); + box-shadow: var(--ui-shadow-focus); + outline: 1px solid transparent; +} + +.button[disabled] { + pointer-events: none; + opacity: 0.6; + box-shadow: none; +} + +.button svg { + min-height: calc(var(--ui-button-size) * 1.25); + max-height: calc(var(--ui-button-size) * 1.25); + height: calc(var(--ui-button-size) * 1.25); + min-width: var(--ui-button-size); + width: auto; + pointer-events: none; +} + + +.button:not(.button-has-text) { padding: 0 var(--ui-margin-m); } +.button:not(.button-has-text) svg { min-height: calc(var(--ui-button-size) * 1.4); } + +.button.round { + padding: var(--ui-margin); + border-radius: var(--ui-border-radius-xl); +} +.button.round:not(.button-has-text) { aspect-ratio: 1/1; } + +.button-has-text.round { padding-inline: var(--ui-margin-l); } + + +.button.touching, +.button:active { + outline: 1px solid transparent; + transform: translateY(1px); + filter: brightness(0.85); +} + +.button:not(.push-button):active, +.button:not(.push-button).touching { box-shadow: none; } + +.button-group { + border-radius: var(--ui-border-radius); + max-width: 100%; + overflow: hidden; +} + +.button-group-scroller { + width: 100%; + overflow: auto hidden; + overscroll-behavior-x: contain; + scrollbar-width: none; + scrollbar-gutter: none; + z-index: 0; + border-radius: var(--ui-border-radius); +} + +.button-group-scroller::-webkit-scrollbar { width: 0; height: 0; } + + +.button-group-inner { + padding: 0 0 2px; + display: inline-flex; + flex-flow: row; + align-items: center; + justify-content: stretch; + position: relative; + z-index: 1; + border-radius: var(--ui-border-radius); + background-color: var(--ui-color-background); +} + +.button-group-inner .button { + flex-shrink: 0; + flex-grow: 10; + border-radius: 0; + position: relative; + overflow: hidden; +} + +.button-group-inner .button:focus { z-index: 2; } + +.button-group .button-normal[disabled] { box-shadow: var(--ui-shadow-button); } + +.button-group .button:first-of-type { + border-top-left-radius: var(--ui-border-radius); + border-bottom-left-radius: var(--ui-border-radius); +} + +.button-group .button:last-of-type { + border-top-right-radius: var(--ui-border-radius); + border-bottom-right-radius: var(--ui-border-radius); +} + +.button-group .button-outline:not(:first-of-type) { margin-left: -2px; } + + +.button-group.round { border-radius: var(--ui-border-radius-xl); } + +.button-group.round .button:first-of-type { + border-top-left-radius: var(--ui-border-radius-xl); + border-bottom-left-radius: var(--ui-border-radius-xl); +} + +.button-group.round .button:last-of-type { + border-top-right-radius: var(--ui-border-radius-xl); + border-bottom-right-radius: var(--ui-border-radius-xl); +} + + +.button-group .button:not(.button-has-text):first-of-type { padding-left: 9px; } +.button-group .button:not(.button-has-text):last-of-type { padding-right: 9px; } +.button-group.round .button:not(.button-has-text):first-of-type { padding-right: 6px; padding-left: 11px; } +.button-group.round .button:not(.button-has-text):last-of-type { padding-left: 6px; padding-right: 11px; } + +.has-dialog { + position: fixed; + width: 100%; + inset: 0; + overflow: hidden; +} + +.dialog-backdrop { + position: fixed; + inset: 0; + display: none; + align-items: center; + justify-content: center; + z-index: calc(var(--ui-z-index-popup) - 1); + background-color: rgba(0 0 0 / 0); + transition: all var(--ui-animation-speed) ease-out; + transform: translateZ(1px); +} + +.dialog-backdrop.opened { background-color: rgba(0 0 0 / .6); } + + +.dialog { + --ui-dialog-border-radius: var(--ui-border-radius-m); + --ui-dialog-inner-border-radius: calc(var(--ui-dialog-border-radius) - 1px); + + opacity: 0; + transform: scale(0.8); + transition: + opacity var(--ui-animation-speed) ease-out, + transform var(--ui-animation-speed) ease-out; + max-height: 90vh; + min-width: 15rem; + max-width: 95vw; + color: var(--ui-color-text); + border-radius: var(--ui-dialog-border-radius); + background: var(--ui-popup-background); + border: var(--ui-popup-border); + box-shadow: var(--ui-shadow-large); + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: stretch; +} + +.opened .dialog { opacity: 1; transform: scale(1); } + +.dialog-header, +.dialog-footer { background: var(--ui-color-background-input); padding: 0.7rem 1rem; } + +.dialog-header { + text-align: center; + font-size: var(--ui-font-xl); + font-weight: 300; + margin: 0; + border-bottom: 0.5px solid var(--ui-color-border); +} + +.dialog-content { + margin: 0; + padding: 1rem; + min-width: 200px; + flex: 1; + overflow-y: auto; + overscroll-behavior-y: contain; + outline: 1px solid transparent; + min-height: 3rem; +} + +.dialog-content:focus { outline: none; } +.dialog-content:focus-visible { + border-color: var(--ui-color-accent); + box-shadow: var(--ui-shadow-focus) inset; +} + +.dialog-footer { + border-top: 0.5px solid var(--ui-color-border); + border-bottom-left-radius: var(--ui-dialog-inner-border-radius); + border-bottom-right-radius: var(--ui-dialog-inner-border-radius); +} + +.dialog-footer [slot="footer"] { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + flex-flow: row-reverse; + gap: 0.5rem; +} + +.dialog-footer .button-has-text { min-width: 9ch; } + + +.dialog-header, +.dialog.no-title .dialog-content { + border-top-left-radius: var(--ui-dialog-inner-border-radius); + border-top-right-radius: var(--ui-dialog-inner-border-radius); +} + +.dialog-header:empty { display: none; } + + +.mobile .dialog-backdrop .dialog { + min-height: 0; + min-width: 0; + max-height: 100%; + max-width: 100%; + box-shadow: none; +} + +@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) { + .dialog-backdrop.opened { + -webkit-backdrop-filter: contrast(0.8) grayscale(0.5) brightness(0.5) blur(1px); + backdrop-filter: contrast(0.8) grayscale(0.5) brightness(0.5) blur(1px); + } +} + +.drawer { + position: fixed; + background-color: var(--ui-popup-background); + border-left: var(--ui-popup-border); + top: 0; + right: 0; + bottom: 0; + width: 24rem; + min-height: 20rem; + box-shadow: var(--ui-shadow-large); + z-index: calc(var(--ui-z-index-popup) - 2); + color: var(--ui-color-text); + padding: 0; + overflow-y: auto; + overscroll-behavior-y: contain; + transform: translateZ(1px); +} + +.drawer:focus { outline: none; } + +.drawer-header { + position: sticky; + /* stylelint-disable-next-line declaration-block-no-duplicate-properties */ + position: -webkit-sticky; + background-color: inherit; + top: 0; + width: 100%; + margin: 0 0 1rem; + padding: 0 1rem 0 1.4rem; + display: flex; + align-items: center; + justify-content: space-between; +} + +.drawer-header h2 { margin: 0; padding: 0.5rem 0; } + +.drawer-content { padding: 0 1.4rem; } + +.grid-title { + font-size: 1.4rem; + font-weight: 300; + margin: 0 0 1px; + padding: 0.5rem 1rem; + background: var(--ui-color-background-input); + border-bottom: 1px solid var(--ui-color-border); + box-shadow: 0 .5px 0 var(--ui-color-background-1); + position: sticky; + top: 0; + z-index: 1; +} + +.grid { + -webkit-user-select: none; + user-select: none; + cursor: default; +} + +.grid table { + table-layout: fixed; + position: sticky; + top: 0; + z-index: 2; +} +.grid-item { content-visibility: auto; } + +.grid .column-check { width: 3em; padding: 0 0.5em; } +.grid .column-check .checkbox { pointer-events: none; } +.grid .column-check .checkbox input { border-color: var(--ui-color-background-1); } + +.grid .column-date { width: 110px; } +.grid .column-number { width: 110px; } + + +.grid thead { top: -2px; } +.grid thead th { padding-top: 0.75em; padding-bottom: 0.75em; } + +.grid tbody { background-color: var(--ui-color-background); } +.grid tbody td { padding: 0.3rem 0.5rem; } + +.grid tfoot { bottom: -2px; } +.grid tfoot td { padding: 0.75rem 0.5rem; } +.grid tfoot .button { --button-size: 0.9em; font-size: 0.9em; margin: 0; } + + +.grid td:not(.column-check) { + white-space: nowrap; + overflow-x: hidden; + text-overflow: ellipsis; +} + +.grid .cell-aligner { + width: 100%; + height: 100%; + display: flex; + align-items: center; + gap: 0.5em; +} + + +.grid .th-number, +.grid .td-number { text-align: right; } + + +/*** SORTABLE TABLE *******************************************************************************/ +.grid-sortable thead th { cursor: pointer; } +.grid-sortable thead th span:hover { text-decoration: underline; } +.grid-sortable thead th .cell-aligner { min-height: 20px; } +.grid-sortable thead th .cell-aligner span { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + flex: 1; +} +.grid-sortable thead th svg { + width: 20px; + height: 20px; + color: var(--ui-color-text-2); +} + +.grid-sortable .th-sortable:focus-visible { + outline: 1px solid var(--ui-color-accent); + outline-offset: -1px; +} + +/*** SORTABLE TABLE *******************************************************************************/ + +.info-bar { + width: 100%; + display: flex; + align-items: flex-start; + justify-content: flex-start; + gap: 0.5rem; + padding: 0.4rem 0.6rem 0.4rem 0.3rem; + margin: 0 0 0.75rem; + border-radius: var(--ui-border-radius); + border-width: 1px; + border-style: solid; +} + +.info-bar p { + margin: 0; + font-size: var(--ui-font-s); + line-height: 1.5rem; +} +.info-bar .icon { flex-shrink: 0; } + + + +.info-bar-error { + background-color: var(--ui-color-danger-semi); + border-color: var(--ui-color-danger); +} + +.info-bar-info { + background-color: var(--ui-color-info-semi); + border-color: var(--ui-color-info); +} + +.info-bar-success { + background-color: var(--ui-color-success-semi); + border-color: var(--ui-color-success); +} + +.info-bar-warning { + background-color: var(--ui-color-warning-semi); + border-color: var(--ui-color-warning); +} + +input, select, textarea, label { + -ms-touch-action: manipulation; + touch-action: manipulation; +} + + +.theme-dark input { color-scheme: dark; } +.theme-light input { color-scheme: light; } + + +textarea::placeholder, +input::placeholder { + color: var(--ui-color-text-1); + font-style: italic; +} + + +:where(input:not([type=radio],[type=checkbox])) { + font: inherit; + height: calc(var(--ui-button-height) - 2px); + border: 1px solid transparent; + line-height: 1; + color: var(--ui-color-text); + background-color: var(--ui-color-background-input); + border-radius: var(--ui-border-radius); + padding: 0 var(--ui-margin-m); + width: 25ch; +} + +:where(input:focus) { + outline: 0; + border-color: var(--ui-color-accent); + box-shadow: var(--ui-shadow-focus); +} + +:where(input:invalid) { + border-color: var(--ui-color-danger); + box-shadow: var(--ui-shadow-danger); +} + + +input[type=color] { + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + background: none; + border: none; + padding: 0; + cursor: pointer; +} + + +:where(input:disabled) { opacity: 0.75; cursor: default; } + + + + +.check-and-radio input { + appearance: none; + width: 1.4rem; + height: 1.4rem; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 0.3em; + background: var(--ui-color-background-input); + border: 1px solid var(--ui-color-text-2); + color: var(--ui-color-text-1); + font: inherit; /* required for proper sizing */ + flex-shrink: 0; + -ms-touch-action: manipulation; + touch-action: manipulation; +} + +.check-and-radio input::after { + content: " "; + display: block; + opacity: 0; + font-size: var(--ui-font-m); + line-height: 1; + align-self: center; + color: inherit; + margin: 0; + transition: opacity calc(var(--ui-animation-speed) / 2) ease-out; +} + +.check-and-radio input:checked::after { opacity: 1; } + + + +.input { width: 25ch; vertical-align: middle; } +.input .input-inner { + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: stretch; + border-radius: var(--ui-border-radius); + background: var(--ui-color-background-input); + border: 1px solid var(--ui-color-border); +} + + + /* label on the left */ +.radio.label-on-the-left, +.button-toggle.input.label-on-the-left, +.textarea.label-on-the-left, +.toggle.label-on-the-left, +.range.label-on-the-left, +.input.label-on-the-left { + display: inline-flex; + flex-flow: row; + align-items: center; + width: 100%; + gap: 1rem; +} +.label-on-the-left .range-inner, +.label-on-the-left .input-inner { flex: 1; } + + +.input-inner:focus-within, +.input-inner:has(:active):not(.disabled) { + border-color: var(--ui-color-accent); + box-shadow: var(--ui-shadow-focus); +} + + + +.input, +.textarea textarea:disabled, +.range input:disabled, +.input select:disabled, +.input input:disabled { opacity: 1; color: var(--ui-color-text); } + +.input .input-inner:has(:disabled), +.range .range-inner:has(:disabled), +.textarea .textarea-inner:has(:disabled) { opacity: 0.7; } + +.input input:not([type=radio]) { width: 100%; border: none; } +.input input:not([type=radio]):focus, +.input input:not([type=radio]):invalid { box-shadow: none; border: none; } + + + + +.input-row { + width: 100%; + display: flex; + flex-flow: row; + align-items: center; + justify-content: space-between; + position: relative; + border-radius: inherit; +} + +.input-row > .button, +.input-row > .icon { position: absolute; height: 100%; z-index: 1; } + +.input-row > .button { color: var(--ui-color-text-1); right: 2px; } + +.input-row>.icon { + color: var(--ui-color-text-2); + left: 0.3rem; + width: 1.5rem; + pointer-events: none; +} + +.menu { + position: absolute; + padding: 0.25rem; + margin: 0; + display: flex; + width: auto; + flex-flow: column; + align-items: stretch; + list-style: none; + overflow: hidden auto; + cursor: default; + z-index: var(--ui-z-index-popup); + max-height: calc(100vh - 4px); + -webkit-user-select: none; + user-select: none; + overscroll-behavior-y: contain; + + color: var(--ui-color-text); + border: var(--ui-popup-border); + border-radius: calc(var(--ui-border-radius) + 2px); + background: var(--ui-popup-background); + box-shadow: var(--ui-shadow-fancy); + transform: translateZ(1px); +} + +.menu:focus { outline: none; } + + +.menu-item { + font: inherit; + font-size: var(--ui-font-s); + align-items: center; + border-radius: var(--ui-border-radius); + color: inherit; + background: none; + border: none; + display: flex; + flex-shrink: 0; + letter-spacing: 0.1px; + justify-content: space-between; + margin: 0; + overflow: hidden; + padding: 0.5rem 0.9rem; + position: relative; + text-align: left; + white-space: nowrap; + width: 100%; +} + +.menu-item-shortcut { + margin: -0.1rem 0 -0.1rem auto; + letter-spacing: 0.1rem; + line-height: 1.35; + opacity: 0.5; +} +.menu-item-shortcut:empty { visibility: hidden; } + +.menu-item.disabled { pointer-events: none; opacity: 0.6; } + +.menu-item:focus { background-color: var(--ui-color-highlight); outline: 1px solid transparent; } + +.menu-item:focus.success { background-color: var(--ui-color-success); } +.menu-item:focus.warning { background-color: var(--ui-color-warning); } +.menu-item:focus.danger { background-color: var(--ui-color-danger); } + +.menu-item:focus .menu-item-shortcut { opacity: 1; } + +.menu-item svg { width: 1.1rem; height: 1.1rem; margin: 0 0.5rem 0 0; } + +.menu-item-content { + display: flex; + min-width: 0; + align-items: center; + justify-content: space-between; + margin-right: 1rem; +} + +.menu-item-text { + overflow: hidden; + text-overflow: ellipsis; + line-height: 1.35; +} + + +.menu-separator { + height: 0; + width: auto; + padding: 0; + margin: var(--ui-margin) 0.8rem; + border-bottom: var(--ui-popup-border); +} + + +@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) { + .menu { + background-color: var(--ui-color-background-semi); + -webkit-backdrop-filter: blur(30px); + backdrop-filter: blur(30px); + } +} + +.message-box .dialog-content { + display: flex; + flex-flow: row; + gap: 1rem; + font-size: var(--ui-font-l); + padding: 1rem; +} + +.message-box .dialog-content .message { + display: flex; + align-items: center; + min-height: fit-content; +} +.message-box .dialog-content .message-content { margin: 0; line-height: 1.5; } + +.message-box .dialog-content svg, +.message-box .dialog-content .icon { height: 3rem; } + +.message-box .dialog-content svg:empty { width: 0; } +.message-box .dialog-content:has(svg:empty) { gap: 0; } +.message-box .dialog-content:has(svg:empty) .message { flex: 1; justify-content: center; } + + +.message-box .dialog-content .icon { + width: 3rem; + flex-shrink: 0; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + position: sticky; + top: 0; +} + + +/* stylelint-disable no-descending-specificity */ +.message-info .dialog-content { background-color: var(--ui-color-info-semi); } +.message-warning .dialog-content { background-color: var(--ui-color-warning-semi); } +.message-error .dialog-content { background-color: var(--ui-color-danger-semi); } +.message-success .dialog-content { background-color: var(--ui-color-success-semi); } + +.panel { + overflow: hidden; + will-change: height; + position: relative; + border: 2px solid var(--ui-color-border); + background: var(--ui-color-background-2); + margin-bottom: 1rem; +} + + +.panel details { margin: 1px; } + +.panel-header { + color: var(--ui-color-text); + text-align: left; + border: none; + display: flex; + align-items: center; + justify-content: space-between; + font-weight: 300; + font-size: var(--ui-font-m); + padding: 0 0.6rem 0 1rem; + height: 2.5rem; + line-height: 1; + -webkit-user-select: none; + user-select: none; +} + +.collapsible .panel-header { cursor: pointer; } + +.panel-header::-webkit-details-marker { display: none; } + +.panel-content { + background: var(--ui-color-background); + padding: 1rem; +} +.panel-content > * { opacity: 0; transition: opacity var(--ui-animation-speed) ease-out; } +.panel.expanded .panel-content > * { opacity: 1; } + + +.panel .chevron { + height: 1.2rem; + transform: rotate(0deg); + transition: transform var(--ui-animation-speed) ease-out; +} +.panel .chevron svg { width: 1.2rem; height: 1.2rem; } +.panel.expanded .chevron { transform: rotate(90deg); } + + + +.panel.round { border-radius: var(--ui-border-radius); } +.panel.round .panel-content { border-radius: calc(var(--ui-border-radius) - 2px); } + + +.panel.disabled { opacity: 0.5; } + + +.panel-header:focus { outline: none; } +.panel:has(.panel-header:focus-visible) { + border-color: var(--ui-color-accent); + box-shadow: var(--ui-shadow-focus); + z-index: 2; +} + + +.panel.info { + border-color: var(--ui-color-info); + background: var(--ui-color-info-semi); +} +.panel.success { + border-color: var(--ui-color-success); + background: var(--ui-color-success-semi); +} +.panel.warning { + border-color: var(--ui-color-warning); + background: var(--ui-color-warning-semi); +} +.panel.danger { + border-color: var(--ui-color-danger); + background: var(--ui-color-danger-semi); +} + +.popover-plate { + --popover-tip-size: 14px; + --popover-color: var(--ui-popup-background); + --popover-border: var(--ui-popup-border); + --tip-offset: 50%; + + position: absolute; + transform: translateZ(1px); + z-index: var(--ui-z-index-popup); +} + +.popover-plate.opening { + opacity: 0; +} + +.popover { + position: relative; + border-radius: var(--ui-border-radius-m); + box-shadow: var(--ui-shadow-tooltip); +} + +.popover-plate.hide-tip .popover { + box-shadow: var(--ui-shadow-fancy); +} + +.popover-plate:not(.hide-tip) .popover::before, +.popover-plate:not(.hide-tip) .popover-content::before { + content: ''; + position: absolute; + display: block; + width: var(--popover-tip-size); + height: var(--popover-tip-size); + transform: rotate(45deg) skew(8deg, 8deg); + left: var(--tip-offset); + margin-left: calc(var(--popover-tip-size) / -2); +} + + +.popover-plate:not(.hide-tip) .popover::before { + box-shadow: var(--ui-shadow-tooltip); + background-color: var(--popover-color); + border: var(--popover-border); + border-width: 1.5px; + margin-left: calc(var(--popover-tip-size) / -2 - 0.5px); +} + +.popover-content { + padding: 1rem; + text-align: center; + position: relative; + border-radius: inherit; + z-index: 1; + background-color: var(--popover-color); + border: var(--popover-border); +} + +.popover-content > * { + position: relative; +} + +.popover-plate:not(.hide-tip) .popover-content::before { + background-color: inherit; + z-index: -1; +} + + +.popover-plate:focus, +.popover-plate .popover:focus, +.popover-content:focus { + outline: none; +} + + +.popover-top:not(.hide-tip) { + padding-bottom: var(--popover-tip-size); +} + +.popover-top:not(.hide-tip) .popover::before { + border-radius: 0 0 3px; + bottom: calc(var(--popover-tip-size) / -2); +} + +.popover-top:not(.hide-tip) .popover-content::before { + border-radius: 0 0 2px; + bottom: calc(var(--popover-tip-size) / -2); +} + +.popover-bottom:not(.hide-tip) { + padding-top: var(--popover-tip-size); +} + +.popover-bottom:not(.hide-tip) .popover::before { + border-radius: 3px 0 0; + top: calc(var(--popover-tip-size) / -2); +} + +.popover-bottom:not(.hide-tip) .popover-content::before { + border-radius: 2px 0 0; + top: calc(var(--popover-tip-size) / -2); +} + + +/* THEME LIGHT */ +.theme-light .popover-plate { + --popover-color: #fff; +} + + +@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) { + .popover-plate.hide-tip .popover-content { + background-color: var(--ui-color-background-semi); + -webkit-backdrop-filter: blur(30px); + backdrop-filter: blur(30px); + } +} + +.push-button:active, +.push-button.touching, +.push-button[aria-pressed="true"] { + filter: brightness(0.85) contrast(1.1); + transform: translateY(1px); + box-shadow: 0 1px 0 rgb(0 0 0/0.8) inset; +} + +.push-button[aria-pressed="true"]:focus-visible { + box-shadow: 0 1px 0 rgb(0 0 0/0.8) inset, var(--ui-shadow-focus); +} + +.push-button[aria-pressed="true"].button-outline { background-color: var(--ui-color-secondary-semi); } +.push-button[aria-pressed="true"].button-outline.info { background-color: var(--ui-color-info-semi); } +.push-button[aria-pressed="true"].button-outline.success { background-color: var(--ui-color-success-semi); } +.push-button[aria-pressed="true"].button-outline.warning { background-color: var(--ui-color-warning-semi); } +.push-button[aria-pressed="true"].button-outline.danger { background-color: var(--ui-color-danger-semi); } + + +.push-button.button-outline:active, +.push-button.button-outline.touching, +.push-button.button-outline[aria-pressed="true"] { box-shadow: none; } + +.splitter { + position: absolute; + height: 100%; + width: 16px; + z-index: 90; + cursor: ew-resize; +} + +.splitter::after { + content: " "; + display: block; + width: 6px; + height: 100%; + margin: 0 auto; +} + +.splitter.vertical { width: 100%; height: 16px; cursor: ns-resize; } + +.splitter.vertical::after { width: 100%; height: 6px; margin: auto 0; } + +.splitter.is-dragging::after, +.splitter:hover::after { background-color: var(--ui-color-background-1); } + +.table { + width: 100%; + max-height: 100%; + overflow: auto; + overscroll-behavior-y: contain; + position: relative; + border: 2px solid var(--ui-color-border); +} + + +.table table { border-spacing: 0; width: 100%; table-layout: fixed; } + +.table.round { border-radius: var(--ui-border-radius); } +.table.selectable { cursor: default; -webkit-user-select: none; user-select: none; } + +.table thead, +.table tfoot { position: sticky; z-index: 2; } +.table thead { top: 0; } +.table tfoot { bottom: 0; } + +.table thead th, +.table tfoot td { + padding: var(--ui-margin-m); + font-weight: 400; + text-align: left; + vertical-align: middle; + background: var(--ui-color-background-input); +} + +.table tr:focus-within, +.table tr:focus, +.table tbody:focus, +.table tbody:focus tr { + outline: 1px solid transparent; + background-color: var(--ui-color-highlight-1); +} + +.table tbody td { + padding: var(--ui-margin) var(--ui-margin-m) calc(var(--ui-margin) + 1px); + border-bottom: 1px solid var(--ui-color-border); + vertical-align: middle; + line-height: 1.5rem; +} + +.table th:first-child, +.table td:first-child { padding-left: var(--ui-margin-l); } + +.table th:last-child, +.table td:last-child { padding-right: var(--ui-margin-l); } + +.table tbody:last-of-type tr:last-child td { border-bottom: none; } + +.ui-tag { + border: 1px solid var(--ui-color-border); + background: var(--ui-color-secondary); + border-radius: var(--ui-border-radius); + padding: 0.4rem 0.7rem; + display: inline-flex; + align-items: center; + gap: 0.2rem; + height: 2rem; + cursor: default; + color: var(--ui-color-text); + -webkit-user-select: none; + user-select: none; +} + +.ui-tag.clickable { + touch-action: manipulation; + cursor: pointer; +} +.ui-tag.clickable:not(.disabled):active { + transform: translateY(1px); + filter: brightness(0.85); +} + + +.ui-tag .icon { + width: 1rem; + height: 1rem; + margin-left: -4px; + /* a fix safari rendering issue */ + /* when tag was pressed, the icon would slide to the left */ + transform: translateZ(1px); +} + +.ui-tag:focus-visible { + border-color: var(--ui-color-accent); + box-shadow: var(--ui-shadow-focus); + outline: 1px solid transparent; +} +.ui-tag .ui-tag-label { padding-bottom: 2px; } + +.ui-tag.dark { color: #fff; } +.ui-tag.light { color: #000; } + +.ui-tag.disabled { opacity: 0.5; } +.ui-tag.round { border-radius: var(--ui-border-radius-xl); } + +.ui-tag.info { background-color: var(--ui-color-info); } +.ui-tag.success { background-color: var(--ui-color-success); } +.ui-tag.danger { background-color: var(--ui-color-danger); } +.ui-tag.warning { background-color: var(--ui-color-warning); } + +.ui-tag.info, +.ui-tag.success, +.ui-tag.danger, +.ui-tag.warning { color: var(--ui-color-text); } + +.tooltip-plate { + --popover-tip-size: 10px; + --popover-color: #292929; +} + +.tooltip { border-radius: 5px; max-width: 75vw; } +.tooltip-content { padding: 0.5rem 0.7rem; } + +/* COLOR VARIATIONS */ +.info .tooltip { --popover-color: var(--ui-color-info); } +.success .tooltip { --popover-color: var(--ui-color-success); } +.danger .tooltip { --popover-color: var(--ui-color-danger); } +.warning .tooltip { --popover-color: var(--ui-color-warning); } + +.tree, +.tree ul { padding: 0; margin: 0; list-style: none; } +.tree>li, +.tree ul li { + display: block; + width: 100%; + padding: 0; + margin: 0; +} + +.tree { + display: flex; + flex-flow: column; + align-items: stretch; + overflow: hidden; + position: relative; + margin: 0; + padding: .3rem; + border-radius: var(--ui-border-radius); +} +.tree:focus { outline: none; } +.tree:focus-visible { + box-shadow: + 0 0 0 1px var(--ui-color-accent), + var(--ui-shadow-focus); +} + + +.tree-node { + cursor: pointer; + display: flex; + align-items: center; + border-radius: var(--ui-border-radius); + padding: 0 0.5rem; + height: var(--ui-button-height); + -ms-touch-action: manipulation; + touch-action: manipulation; +} + +.tree-node.selected { background-color: var(--ui-color-highlight-1); } +.tree-node:hover { background-color: var(--ui-color-highlight); } + +.tree-icon { + display: inline-block; + width: 1.5rem; + height: 1.5rem; + margin-right: 0.5rem; + background-color: var(--ui-color-text-2); + -webkit-mask-size: 1.5rem; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: 0 center; + mask-size: 1.5rem; + mask-repeat: no-repeat; + mask-position: 0 center; +} + + +.tree-label { line-height: 2; } + +.tree-indent { + display: block; + width: 0.8rem; + margin-right: 1rem; + height: 100%; + border-right: 1px solid transparent; +} +.tree .tree-indent { border-right-color: var(--ui-color-border-1); } + + + +.tree-file-icon { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M14 3v4a1 1 0 0 0 1 1h4' /%3E%3Cpath d='M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z' /%3E%3C/svg%3E"); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M14 3v4a1 1 0 0 0 1 1h4' /%3E%3Cpath d='M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z' /%3E%3C/svg%3E"); +} +.tree-folder-icon { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M5 4h4l3 3h7a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2' /%3E%3Cline x1='12' y1='10' x2='12' y2='16' /%3E%3Cline x1='9' y1='13' x2='15' y2='13' /%3E%3C/svg%3E"); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M5 4h4l3 3h7a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2' /%3E%3Cline x1='12' y1='10' x2='12' y2='16' /%3E%3Cline x1='9' y1='13' x2='15' y2='13' /%3E%3C/svg%3E"); +} +.expanded .tree-folder-icon { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M5 4h4l3 3h7a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2' /%3E%3Cline x1='9' y1='13' x2='15' y2='13' /%3E%3C/svg%3E"); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' stroke-width='1.5' stroke='white' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M5 4h4l3 3h7a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2' /%3E%3Cline x1='9' y1='13' x2='15' y2='13' /%3E%3C/svg%3E"); +} + +.button-toggle.input { + width: min-content; + max-width: 100%; + padding: 0; + flex-flow: column; + align-items: flex-start; + justify-content: flex-start; + border-radius: calc(var(--ui-border-radius) + 1px); +} + +.button-toggle .input-inner { + width: 100%; + overflow: hidden; + border-radius: calc(var(--ui-border-radius) + 1px); +} + +.button-toggle .input-scroller { + width: 100%; + border-radius: var(--ui-border-radius); + background-color: var(--ui-color-background-input); + overflow: auto hidden; + overscroll-behavior-x: contain; + scrollbar-width: none; +} + +.button-toggle .input-scroller::-webkit-scrollbar { width: 0; height: 0; } + +.button-toggle .input-row { min-width: 100%; width: min-content; } + +.button-toggle .input-row .button { + position: static; + color: var(--ui-color-text); + box-shadow: none; + min-height: calc(var(--ui-button-height) - 2px); + background: var(--ui-color-background-input); + border: none; + border-radius: 0; + flex: 1; + border-left: 1px solid var(--ui-color-border); + min-width: min-content; +} + +.button-toggle .button:has(:checked) { background-color: var(--ui-color-highlight); } + +.button-toggle .input-row .button:first-child { + border-left: none; + border-top-left-radius: var(--ui-border-radius); + border-bottom-left-radius: var(--ui-border-radius); +} + +.button-toggle .input-row .button:last-child { + border-top-right-radius: var(--ui-border-radius); + border-bottom-right-radius: var(--ui-border-radius); +} + +.button-toggle .button input { + position: absolute; + top: -100px; + opacity: 0; + pointer-events: none; +} + + + +/* round buttons */ +.button-toggle.round { border-radius: var(--ui-border-radius-xl); } + +.button-toggle.round:not(.has-error) .input-inner { border-radius: var(--ui-border-radius-xl); } + +.button-toggle.round .input-row .button:first-child { + border-top-left-radius: var(--ui-border-radius-xl); + border-bottom-left-radius: var(--ui-border-radius-xl); +} + +.button-toggle.round .input-row .button:last-child { + border-top-right-radius: var(--ui-border-radius-xl); + border-bottom-right-radius: var(--ui-border-radius-xl); +} + +/* more styling defined in ../check-and-radio.css */ + +.checkbox { + display: inline-flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + gap: 0.5rem; +} + +.checkbox-row { + display: inline-flex; + align-items: center; + justify-content: flex-start; + gap: 0.5rem; +} + + +.checkbox input:focus { border-color: var(--ui-color-accent); } +.checkbox input::after { + content: "✕"; + font-family: Arial, Helvetica, sans-serif; + line-height: 1.1; +} + +.checkbox.indeterminate input::after { + content: " "; + opacity: 1; + background: var(--ui-color-text-1); + width: 65%; + height: 65%; + border-radius: 0.2rem; +} + +.checkbox input:checked::after { opacity: 1; } + +.checkbox.disabled { opacity: 0.5; } +.checkbox.disabled input { opacity: 1; } + + +.checkbox.has-error input { border-color: var(--ui-color-danger); } +.checkbox.has-error input:focus { box-shadow: var(--ui-shadow-danger); } + +.checkbox.label-on-the-left .checkbox-row { flex-flow: row-reverse; } + +.combobox .input-inner { position: relative; } + +.combobox input { padding-right: 36px; } +.multiselect input { text-overflow: ellipsis; } + +.combobox-button:focus { box-shadow: none; } + +.combobox-list { + position: absolute; + z-index: var(--ui-z-index-popup); + overflow-y: auto; + overscroll-behavior-y: contain; + padding: 0.2rem; + min-height: 0; + max-height: 26rem; + -webkit-user-select: none; + user-select: none; + transform: translateZ(1px); + + color: var(--ui-color-text); + border: var(--ui-popup-border); + border-radius: calc(var(--ui-border-radius) + 0.2rem); + background: var(--ui-popup-background); + box-shadow: var(--ui-shadow-fancy); +} + +.combobox-list.empty { padding: 0; box-shadow: none; border: none; } +.combobox-list:not(.empty) { min-height: 2rem; } +.combobox-list.hidden { display: none; } + +.combobox-list-header, +.combobox-list-item { + height: var(--ui-button-height); + line-height: 1; + display: flex; + align-items: center; + white-space: nowrap; + text-overflow: ellipsis; + overflow-x: hidden; + padding: 0 1rem; +} + +.combobox-list-header { + margin: 0.5rem 0 0; + color: var(--ui-color-text-2); + font-weight: 500; + cursor: default; +} + +.combobox-list-header:last-child { display: none; } + +.combobox-list-empty { + padding: 0.6rem 1.2rem; + color: var(--ui-color-text-semi); + cursor: default; + white-space: nowrap; +} + +.combobox-list-item { + color: var(--ui-color-text); + cursor: pointer; + border-radius: var(--ui-border-radius); + -ms-touch-action: manipulation; + touch-action: manipulation; +} + +.combobox-list-item svg { margin-right: 0.5rem; } +.combobox-list-item .tick { display: none; } +.combobox-list-item.checked .tick { display: block; } + +.combobox-list:not(.multiselect) .combobox-list-item.in-group { padding-left: 2rem; } + + +.mobile .combobox-list-item { transition: background-color 0.3s ease-out; } +.mobile .combobox-list-item.blinking { + transition: background-color 0.1s; + background-color: var(--ui-color-highlight-1); +} + +.desktop .combobox-list-item.checked { background-color: var(--ui-color-highlight-semi); } +.desktop .combobox-list-item.selected { background-color: var(--ui-color-highlight-1); } +.desktop .combobox-list-item:hover { background-color: var(--ui-color-highlight); } + +.combobox-list-item b { color: var(--ui-color-accent); } + +/* has checked element before */ +.combobox-list-item.checked + .combobox-list-item.checked { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +/* has checked element after it */ +.combobox-list-item.checked:has(+ .combobox-list-item.checked) { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + + +@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) { + .combobox-list { + background-color: var(--ui-color-background-semi); + -webkit-backdrop-filter: blur(30px); + backdrop-filter: blur(30px); + } +} + +.input-date .input-text-inner { position: relative; overflow: unset; } + +.input-date input { flex: 1; width: 100%; padding-right: 36px; } + + +.input-date.native .input-date-button { pointer-events: none; } + +.datepicker { display: none; transform: translateZ(1px); } +.datepicker.active { display: block; } + +.datepicker-dropdown { + position: absolute; + top: 0; + left: 0; + z-index: var(--ui-z-index-popup); + padding-top: 0.2rem; +} + +.datepicker-dropdown.datepicker-orient-top { padding-top: 0; padding-bottom: 4px; } + +.datepicker-picker { + display: inline-block; + overflow: hidden; + border-radius: 0.4em; + background-color: var(--ui-color-background); + border: var(--ui-popup-border); + box-shadow: var(--ui-shadow-fancy); +} + + +.datepicker-picker span { + display: block; + flex: 1; + border: 0; + border-radius: 6px; + cursor: default; + text-align: center; + -webkit-touch-callout: none; + -webkit-user-select: none; + user-select: none; +} + +.datepicker-main { padding: var(--ui-margin-s); } + + +.datepicker-grid, +.datepicker-view .days-of-week, +.datepicker-view, +.datepicker-controls { display: flex; } + +.datepicker-grid { flex-wrap: wrap; width: 15.75rem; } + +.datepicker-cell { -ms-touch-action: manipulation; touch-action: manipulation; } + +.datepicker-cell, +.datepicker-view .week { height: 2.25rem; line-height: 2.25rem; } + +.datepicker-view .days .datepicker-cell, +.datepicker-view .dow { flex-basis: 14.2857142857%; } + +.datepicker-view.datepicker-grid .datepicker-cell { + flex-basis: 25%; + height: 4.5rem; + line-height: 4.5rem; +} + + +.datepicker-title { padding: 0.375rem 0.75rem; text-align: center; } + +.datepicker-header .datepicker-controls, +.datepicker-footer .datepicker-controls { padding: 0.2rem; } + +.datepicker-controls .button { + padding: 0; + width: 2.5rem; + min-width: 2.5rem; + text-align: center; +} + +.datepicker-controls .button svg { margin: 0; height: 1.4rem; } +.datepicker-controls .button.disabled { visibility: hidden; } + +.datepicker-controls .button.view-switch { flex: auto; width: auto; } + + +.datepicker-footer .datepicker-controls .button { width: 100%; } + +.datepicker-view .dow { height: 1.5rem; line-height: 1.5rem; font-size: var(--ui-font-xs); } +.datepicker-view .week { width: 2.25rem; font-size: 0.75rem; } + +.datepicker-cell.prev:not(.disabled), +.datepicker-cell.next:not(.disabled) { color: var(--ui-color-text-2); } + + +.datepicker-cell.selected.prev:not(.disabled), +.datepicker-cell.selected.next:not(.disabled) { color: var(--ui-color-text-1); } + + +.datepicker-cell.selected { + background-color: var(--ui-color-highlight); + color: var(--ui-color-text); +} + +.datepicker-cell.disabled { color: var(--ui-color-text-2); } + + + +/* today */ +.datepicker-cell.today:not(.selected) { + background-color: var(--ui-color-secondary-semi); + color: var(--ui-color-text); +} + + +/* hover/focus */ +.datepicker-cell.focused, +.datepicker-cell.today.focused, +.datepicker-cell.highlighted:not(.range,.disabled):hover, +.datepicker-cell.highlighted:not(.range).focused, +.datepicker-cell:not(.disabled):hover { + background-color: var(--ui-color-highlight); + color: var(--ui-color-text); + cursor: pointer; +} + + +.datepicker-cell.range-start { border-radius: 4px 0 0 4px; } +.datepicker-cell.range-end { border-radius: 0 4px 4px 0; } +.datepicker-cell.range { border-radius: 0; background-color: #dbdbdb; } +.datepicker-cell.range-end:not(.selected), +.datepicker-cell.range-start:not(.selected) { background-color: #b5b5b5; color: #fff; } +.datepicker-cell.range-end.focused:not(.selected), +.datepicker-cell.range-start.focused:not(.selected) { background-color: #afafaf; } +.datepicker-cell.range:not(.disabled,.focused,.today):hover { background-color: #d5d5d5; } +.datepicker-cell.range.disabled { color: #c2c2c2; } +.datepicker-cell.range.focused { background-color: #cfcfcf; } + + + +@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) { + .datepicker-picker { + background-color: var(--ui-color-background-semi); + -webkit-backdrop-filter: blur(30px); + backdrop-filter: blur(30px); + } +} + +.input .error-wrap, +.radio .error-wrap, +.checkbox .error-wrap { + display: flex; + flex-flow: row; + align-items: stretch; + justify-content: flex-start; +} + +.checkbox .error-wrap, +.radio .error-wrap { overflow: hidden; } + + +.input .info-bar-error, +.radio .info-bar-error, +.textarea .info-bar-error { + padding-bottom: calc(0.4rem + 10px); + margin-bottom: -10px; + border: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.checkbox .info-bar { margin: 0; } + +.textarea .info-bar-error { grid-area: 1 / 1 / 2 / 2; } + + + +/* Highlight whole inner div in red, to avoid rendering leaks in corners (safari) */ +.has-error.input .input-inner, +.has-error.textarea .textarea-inner { background-color: var(--ui-color-danger-semi); } + +.has-error.input .input-inner { border-color: var(--ui-color-danger); } + +.has-error.input .input-inner:focus-within, +.has-error.input .input-inner:has(:active):not(.disabled) { box-shadow: var(--ui-shadow-danger); } + +.has-error.input .info-bar-error, +.has-error.textarea .info-bar-error { background-color: transparent; } + +.input-math { + position: relative; + display: inline-flex; + flex-flow: column; + align-items: stretch; + justify-content: space-between; +} + +.input-math input { padding-left: 30px; text-align: right; } + +.input-password { + position: relative; + display: inline-flex; + flex-flow: column; + align-items: stretch; + justify-content: space-between; +} + +.input-password input { + font-family: verdana, sans-serif; + width: 100%; + padding-right: 36px; +} + + +.input-password.visible input { font-family: inherit; } +.input-password.visible .input-password-button { color: var(--ui-color-danger); } +.input-password.visible .input-password-button svg { stroke-width: 2; } + + + +/* PASSWORD STRENGTH */ +.password-strength { + width: calc(100% - 6px); + height: 3px; + margin: -7px 3px 0; + border-radius: 10px; + background-color: var(--ui-color-background-input); + cursor: default; +} + +.password-strength-progress { + height: 100%; + border-radius: inherit; + transition: width var(--ui-animation-speed) ease-out; + background-color: var(--ui-color-danger); +} + +.password-strength-progress.warning { background-color: var(--ui-color-warning); } +.password-strength-progress.info { background-color: var(--ui-color-info); } +.password-strength-progress.success { background-color: var(--ui-color-success); } + + +.password-strength-info { + position: absolute; + top: 0; + display: none; + cursor: default; + width: calc(100% - 2px); + flex-flow: column; + align-items: stretch; + gap: 1rem; + font-size: 0.8rem; + margin: 0.2rem 1px 0; + padding: 0.8rem; + border-radius: var(--ui-border-radius); + background-color: var(--ui-color-background-input); + border: 1px solid var(--ui-color-danger); + z-index: var(--ui-z-index-elevated); +} + +.input-password:focus-within .password-strength-info { display: flex; } + +.password-strength-info.warning { border-color: var(--ui-color-warning); } +.password-strength-info.info { border-color: var(--ui-color-info); } +.password-strength-info.success { border-color: var(--ui-color-success); } + +.password-strength-info h2 { font-size: var(--ui-font-s); text-align: left; margin-bottom: 0; } +.password-strength-info small { font-size: var(--ui-font-xs); margin: 0; line-height: 1.4; } +.password-strength-info small:empty { display: none; } + +.input-rating { min-width: fit-content; } + +.input-rating .input-inner, +.input-rating .input-inner:focus { outline: none; } + +.input-rating .input-row { + align-items: stretch; + justify-content: flex-start; + height: var(--ui-button-height); + background-color: var(--ui-color-background-input); +} + +.input-rating .button { + position: static; + right: unset; + cursor: default; + user-select: none; + -ms-touch-action: manipulation; + touch-action: manipulation; + font-size: 1.2rem; + margin: 0; +} + +.input-rating .button:focus-visible { box-shadow: none; } + +.input-rating .btn-reset { margin-left: auto; } +.input-rating .btn-reset:focus-visible { color: var(--ui-color-accent); } + +.input-rating .button.active svg { color: var(--ui-color-accent); fill: var(--ui-color-accent); } + +.input-rating .button.button-link, +.input-rating .button.button-link:focus-visible, +.input-rating .button.button-link:hover { text-decoration: none; } + +.input-rating.light:not(.has-error) .input-inner, +.input-rating.light:not(.has-error) .input-row { background-color: transparent; border: none; } + +.input-search input { + padding-left: calc(2rem + 6px); + padding-right: 2rem; + appearance: none; + -webkit-appearance: none; +} +::-webkit-search-cancel-button { display: none; } + +.input-search .input-row>.icon { top: 1px; } + +.input-search-button { display: none; } +.input-search-button.visible { display: inline-flex; } + +.input-tag .input-inner { touch-action: manipulation; } +.input-tag .input-inner:focus { outline: none; } +.input-tag .input-inner[aria-expanded="true"] { + border-color: var(--ui-color-accent); + box-shadow: var(--ui-shadow-focus); +} + + +.input-tag .input-row { + min-height: calc(var(--ui-button-height) - 2px); + padding: 4px 0.3rem 3px; + align-items: flex-start; + justify-content: flex-start; + gap: 0.2rem; + flex-wrap: wrap; +} + +.input-tag .input-row > .icon { position: static; flex-shrink: 0; margin-top: 0.14rem; } + +.input-tag .ui-tag { height: 1.7rem; } + +.input-tag-popover { width: 25ch; } +.input-tag-popover .popover-content { padding: 0.5rem; } + +.input-tag-list-tags { + display: flex; + flex-flow: row wrap; + gap: 0.2rem; + flex: 1; + max-height: 10rem; + overflow-y: auto; +} + +.input-tag-list-add-row { display: flex; align-items: center; gap: 0.5rem; } +.input-tag-list-add-row .input { width: 100px; flex: 1; } +.input-tag-list-add-row .input input { background: var(--ui-color-background-semi); } + + +.input-tag-list-tags:not(:empty) { + margin-bottom: 0.5rem; + padding-bottom: 0.5rem; + border-bottom: var(--ui-popup-border); +} + +.input-text .input-inner { + overflow: hidden; +} + +.input-time .input-row { + border-radius: inherit; + background: var(--ui-color-background-input); +} + +.input-time input { margin-left: calc(2rem - 2px); } + +.label { + height: var(--ui-button-height); + line-height: 1.6; + padding: 0; + display: inline-flex; + align-items: center; + -ms-touch-action: manipulation; + touch-action: manipulation; +} + +.label.disabled { + pointer-events: none; + -webkit-user-select: none; + user-select: none; +} + +/* to offset input's border (visually) */ +.input .label { padding-inline: 1px; } + + +.label-on-the-left .label { + padding-inline: 0; + padding-top: 1px; + width: max-content; + white-space: nowrap; +} + + +.radio.label-on-the-left, +.input-tag.label-on-the-left, +.textarea.label-on-the-left { align-items: flex-start; } + +.radio.label-on-the-left>.label, +.input-tag.label-on-the-left .label, +.textarea.label-on-the-left .label { height: calc(var(--ui-button-height) + 2px); } + +.radio.label-on-the-left>.label { margin-block: var(--ui-margin-s); } + +/* more styling defined in ../check-and-radio.css */ + +.radio { + min-width: 26ch; + width: min-content; + max-width: 100%; + + --ui-radio-padding: var(--ui-margin-s); +} + + +.radio input { + border-radius: 10rem; + width: 1.3rem; + height: 1.3rem; +} +.radio input:focus { box-shadow: none } +.radio input::after { + background: var(--ui-color-text-1); + width: 65%; + height: 65%; + border-radius: inherit; +} + + +.radio-inner { + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + width: 100%; + padding: 0; + border: 1px solid var(--ui-color-border); + border-radius: calc(var(--ui-border-radius) + var(--ui-radio-padding)); + background-color: var(--ui-color-background-input); + overflow: hidden; +} + + +.radio-items { + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + gap: var(--ui-radio-padding); + width: 100%; + padding: var(--ui-radio-padding) 0; + background-color: var(--ui-color-background-input); + border-radius: inherit; +} + + +.radio-item { + display: flex; + flex-flow: row; + align-items: center; + justify-content: flex-start; + gap: 0.5rem; + width: calc(100% - calc(var(--ui-radio-padding) * 2)); + margin: 0 var(--ui-radio-padding); + padding: 0 var(--ui-margin); + border-radius: var(--ui-border-radius); +} + +.radio-item.disabled { opacity: 0.5; } +.radio-item.disabled input { opacity: 1; } + +.radio-item:not(.disabled):focus-within, +.radio-item:not(.disabled):hover { background-color: var(--ui-color-highlight-1); } + + + +.radio-inner:focus-within, +.radio-inner:has(:active):not(.disabled) { + border-color: var(--ui-color-accent); + box-shadow: var(--ui-shadow-focus); +} + +.radio.has-error .radio-inner { + border-color: var(--ui-color-danger); + background-color: var(--ui-color-danger-semi); +} +.radio.has-error .info-bar-error { background-color: transparent; } + + +.has-error .radio-inner:focus-within, +.has-error .radio-inner:has(:active):not(.disabled) { + box-shadow: var(--ui-shadow-danger); + border-color: var(--ui-color-danger); +} + +.range { + position: relative; + width: 25ch; + vertical-align: top; + --range-size: calc(var(--ui-button-height) / 3 * 2); +} + +.range .range-inner { + display: flex; + flex-flow: column; + gap: 0.5rem; + flex: 1; + padding: 0 0 0.5rem; + position: relative; + height: 100%; +} + + +.range input { + -webkit-appearance: none; + appearance: none; + margin: 0; + width: 100%; + height: 0.5rem; + border-radius: 5rem; + padding-inline: 0; + border: 1px solid var(--ui-color-border); + background: var(--ui-color-background-input); + background-image: linear-gradient(var(--ui-color-highlight), var(--ui-color-highlight)); + background-size: 70% 100%; + background-repeat: no-repeat; + background-clip: padding-box; +} + + + + +.range input::-webkit-slider-runnable-track { + -webkit-appearance: none; + display: block; + height: 0.5rem; + border-radius: 0.5rem; +} + +.range input::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + background-color: var(--ui-color-text); + height: var(--range-size); + width: var(--range-size); + border-radius: 5rem; + box-shadow: 0 1px 3px #000c; + transform: translateY(calc(-50% + 0.25rem - 1px)); + transform-origin: center 25%; +} + + +.range input::-moz-range-track { + display: flex; + align-items: center; + background-color: var(--ui-color-background-input); + height: 0.5rem; + border-radius: 0.5rem; +} + +.range input::-moz-range-thumb { + background-color: var(--ui-color-text); + height: var(--range-size); + width: var(--range-size); + border-radius: 5rem; + box-shadow: 0 1px 3px #000c; +} + + +/* Cannot be merged, as it won't work in safari */ +.range:not(.disabled) input::-webkit-slider-thumb:active { scale: 0.9; } +.range:not(.disabled) input::-moz-slider-thumb:active { scale: 0.9; } + + + +.range-ticks { + display: flex; + justify-content: space-between; + margin: 0 -0.1rem 0.4rem; + cursor: default; +} +.range-ticks span { width: 3ch; text-align: center; } +.range:not(.disabled) .range-ticks span { cursor: pointer; } + + +.range.label-on-the-left { align-items: flex-end; } +.range.label-on-the-left .label { height: 1.8rem; } + +.select { font: inherit; position: relative; } + +.select select { + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + + font-size: 1rem; + font-family: inherit; + background: none; + padding: 0 30px 0 var(--ui-margin-m); + width: 100%; + + border: 1px solid transparent; + height: calc(var(--ui-button-height) - 2px); + line-height: 1.2; + color: var(--ui-color-text); + background-color: var(--ui-color-background-input); + border-radius: var(--ui-border-radius); +} + +.select select:focus { outline: 0; } + +.select optgroup { font-weight: 500; } + +.select .input-row::after { + content: ""; + position: absolute; + width: 2rem; + right: 0; + top: 0; + bottom: 0; + opacity: 0.6; + pointer-events: none; + background-repeat: no-repeat; + background-position: right 0.7rem center; + background-size: 0.6rem 0.8rem; + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23bbb' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E"); +} + +.theme-light .select .input-row::after { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23222' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E"); +} + +.textarea { position: relative; width: 25ch; vertical-align: top; } + +.textarea.autogrow .textarea-inner::after, +.textarea textarea { + font: inherit; + line-height: 1.3; + border: 1px solid transparent; + margin: 0; + width: 100%; + padding: var(--ui-margin-m); + grid-area: 2 / 1 / 2 / 2; +} + + +.textarea .textarea-inner { + width: 100%; + display: inline-grid; + align-items: stretch; + background-color: var(--ui-color-background-input); + border-radius: var(--ui-border-radius); + border: 1px solid var(--ui-color-border); +} + +.textarea textarea { + resize: vertical; + color: var(--ui-color-text); + border-radius: var(--ui-border-radius); + border: none; + min-height: 2.6rem; + background-color: var(--ui-color-background-input); +} + + +.textarea .textarea-inner:focus-within { + border-color: var(--ui-color-accent); + box-shadow: var(--ui-shadow-focus); + outline: 0; +} + +.textarea textarea:focus { outline: none; box-shadow: none; border: none; } +.textarea textarea:invalid { border: none; box-shadow: none; } +.textarea textarea:disabled { opacity: 0.5; } + + +.textarea.autogrow .textarea-inner::after { + content: attr(data-value) " "; + visibility: hidden; + white-space: pre-wrap; + min-width: 1rem; + resize: none; + background: none; + appearance: none; +} + +.textarea.autogrow textarea { resize: none; } + + +.textarea.has-error .textarea-inner { border-color: var(--ui-color-danger); } +.textarea.has-error .textarea-inner:focus-within { box-shadow: var(--ui-shadow-danger); } + +.toggle { + --toggle-width: 60px; + --toggle-padding: 2px; + --border-radius: var(--ui-border-radius-xl); + --toggle-height: calc(var(--toggle-width) / 2.5); + --knob-size: var(--toggle-height); + + display: inline-flex; + flex-flow: column; + align-items: flex-start; + position: relative; + vertical-align: middle; + -webkit-user-select: none; + user-select: none; + + border-radius: var(--border-radius); +} + +.toggle-inner { + border: 1px solid var(--ui-color-text-2); + padding: var(--toggle-padding); + border-radius: inherit; + background-color: var(--ui-color-background-2); + position: relative; + margin-block: 3px; +} + +.toggle:has(:disabled) { pointer-events: none; opacity: 0.6; } + +.toggle:focus { outline: none; } +.toggle:focus-visible .toggle-inner { + box-shadow: var(--ui-shadow-focus); + border-color: var(--ui-color-accent); +} + +.toggle-input { display: none; } + +.toggle-label { + width: var(--toggle-width); + height: var(--toggle-height); + border-radius: calc(var(--border-radius) - var(--toggle-padding)); + display: flex; + align-items: center; + justify-content: flex-start; + flex-shrink: 0; + overflow: hidden; + cursor: pointer; +} + +.toggle-scroller { + height: 100%; + border-radius: inherit; + display: inline-flex; + align-items: center; + justify-content: center; + transition: margin-left .2s cubic-bezier(.85, .05, .18, 1.4); + flex-shrink: 0; + width: calc(200% - var(--toggle-height)); + margin-left: calc(var(--toggle-height) - var(--toggle-width) - var(--toggle-padding)); +} + +.toggle-option { + width: 50%; + height: 100%; + border-radius: inherit; + background-color: green; + display: inline-flex; + align-items: center; + justify-content: center; + background-repeat: no-repeat; + background-position: center; + background-size: calc(var(--toggle-width) / 5); +} +.toggle-option:first-of-type { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + background-color: var(--ui-color-highlight); + background-position: 41% 47%; + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 17.5714286 9.6 9.4285714 22.4-22' fill='none' stroke='%23fff' stroke-width='4'/%3E%3C/svg%3E"); +} +.toggle-option:last-of-type { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + background-color: var(--ui-color-background-input); + background-position: 62% 55%; + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m27.5352.4648-27.0704 27.0704m-.4648-27.5352 28 28' stroke='%23fff' stroke-width='4'/%3E%3C/svg%3E"); +} + +.theme-light .toggle-option:first-of-type { + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 17.5714286 9.6 9.4285714 22.4-22' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E"); +} + +.theme-light .toggle-option:last-of-type { + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m27.5352.4648-27.0704 27.0704m-.4648-27.5352 28 28' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E"); +} + +.toggle-handle { + width: 0; + height: 0; + position: absolute; + transition: left .2s cubic-bezier(.85, .05, .18, 1.4); + border-radius: inherit; + left: calc(var(--toggle-height) / 2 + var(--toggle-padding)); + +} + +.toggle-knob { + width: var(--knob-size); + height: var(--knob-size); + background: var(--ui-color-text-1); + border: 1px solid var(--ui-color-text-2); + transform: translate(-50%, -50%); + border-radius: inherit; +} + +/* this is calculated in js +.checked .toggle-scroller { margin-left: 0; } +.checked .toggle-handle { left: calc(var(--toggle-width) + var(--toggle-padding) - var(--toggle-height) / 2); } +*/ + +.notification-archive { + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + width: 100%; + z-index: 5; + transform: translateX(calc(var(--ui-notification-width) + var(--ui-notification-gap) + 1rem)); + transition: transform var(--ui-animation-speed) ease-out; +} + +.notification-archive .notification { z-index: 1; } +.notification-archive header { + display: flex; + align-items: center; + justify-content: space-between; + margin: var(--ui-notification-gap) var(--ui-notification-gap) 0; + color: var(--ui-color-text); + z-index: 1; + background-color: var(--ui-color-background-input); + padding: 0.75rem 0.5rem 0.75rem 1rem; + border-radius: var(--ui-border-radius); +} + +.notification-archive button { + color: inherit; + font-size: var(--ui-font-l); + font-weight: 300; + min-width: 1.8rem; + min-height: 1.8rem; +} + + +.notification-archive h2 { + color: inherit; + font-size: var(--ui-font-l); + margin: 0; + padding: 0; + border: none; +} +.notification-archive h2 .button { padding-inline: var(--ui-margin-m); margin-left: -0.5rem; } +.notification-archive h2 .button svg { transform: rotate(0deg); transition: transform var(--ui-animation-speed) ease-out; } + +.notification-archive.expanded h2 .button svg { transform: rotate(90deg); } + +.notification-archive.inert { pointer-events: none; } + +.notification-archive-buttons { + white-space: nowrap; + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.2rem; +} + +.notification-archive-buttons .btn-close { + font-size: 1.4rem; + height: 1.8rem; + width: 1.7rem; + padding-bottom: 0.15rem; +} + + +.notification.archived { filter: saturate(0.3); } + +.notification-timestamp { + color: var(--ui-color-text-semi); + font-size: var(--ui-font-xs); + margin-inline: 0.5rem; +} +.show-archive .notification-archive { + transform: translateX(0); + margin-bottom: 1rem; + height: auto; + overflow: visible; +} + +.notification-center { + --ui-notification-border-radius: var(--ui-border-radius); + --ui-notification-gap: 0.75rem; + --ui-notification-width: 30rem; + + position: fixed; + transform: translateZ(1px); + display: flex; + flex-flow: column; + align-items: stretch; + justify-content: flex-start; + width: calc(var(--ui-notification-width) + var(--ui-notification-gap) * 2); + top: 0; + right: 0; + z-index: -1; + max-height: 100vh; + overflow: hidden auto; + overscroll-behavior: contain; +} + +.notification-center.archive-is-visible, +.notification-center.has-active-notifications { z-index: var(--ui-z-index-popup); } + + +.notification { + font-size: var(--ui-font-m); + position: relative; + overflow: hidden; + flex-grow: 0; + flex-shrink: 0; + display: flex; + align-items: center; + justify-content: space-between; + min-height: 2rem; + border: none; + margin: var(--ui-notification-gap) var(--ui-notification-gap) 0; + box-shadow: var(--ui-shadow-fancy); + border-radius: var(--ui-notification-border-radius); + z-index: var(--ui-z-index-popup); +} + +.notification:last-child { margin-bottom: calc(var(--ui-notification-gap) + 10px); } + +.notification button { + background: none; + color: var(--ui-color-text); + height: 1.8rem; + min-width: 1.6rem; + font-size: inherit; + padding: 0 var(--ui-margin-m); + margin: 0 var(--ui-margin-m) 0 0; + display: flex; + align-items: center; + justify-content: center; + border-radius: var(--ui-border-radius); + border: 1px solid transparent; +} + +.notification button:focus-visible { + border-color: var(--ui-color-accent); + box-shadow: var(--ui-shadow-focus); + outline: none; +} + +.notification button:hover { color: var(--ui-color-text-2); background: #2228; } +.notification button:active { color: var(--ui-color-text-1); background: #0008; } + +.notification .notification-close { + font-size: 1.4rem; + font-weight: 200; + position: relative; + padding-bottom: 0.15rem; +} + + +.notification-buttons, +.notification-icon { + min-height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +.notification-icon { width: var(--ui-button-height); } + + +.notification-msg { + color: var(--ui-color-text); + flex: 1; + display: flex; + align-items: center; + justify-content: flex-start; + padding: 0.8rem; + line-height: 1.4; + font-weight: 400; +} + +.notification-progressbar { + position: absolute; + inset: 0; + border-radius: inherit; + z-index: -1; +} + +.notification-progress { + height: 100%; + border-radius: inherit; + background-color: #ffffff15; + border: 1px solid #ffffff25; + margin: 0; + width: 0; + transition: width .2s; +} + + +.notification:focus { + border-color: var(--ui-color-accent); + box-shadow: var(--ui-shadow-focus); + outline: none; +} + + + +.notification-center-button svg { stroke: var(--ui-color-secondary); } +.notification-center-button.has-notifications svg { stroke: var(--ui-color-text); } +.notification-center-button.has-notifications svg>path:nth-child(2) { fill: var(--ui-color-text); } + + +@media (1px <= width <= 700px) { + .notification-center { + --ui-notification-width: calc(100vw - var(--ui-notification-gap) * 2); + } +} + + +@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) { + .notification { + -webkit-backdrop-filter: blur(15px); + backdrop-filter: blur(15px); + } + + .notification-info { background-color: var(--ui-color-info-semi); } + .notification-success { background-color: var(--ui-color-success-semi); } + .notification-warning { background-color: var(--ui-color-warning-semi); } + .notification-error { background-color: var(--ui-color-danger-semi); } +} +/*# sourceMappingURL=ui.css.map */ diff --git a/eslint.config.js b/eslint.config.js index b8ce5ecb..886a8d29 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -54,6 +54,11 @@ export default [ 'prefer-promise-reject-errors': 'error', 'svelte/no-at-html-tags': 0, + // 'import/no-unresolved': [2, { 'commonjs': true, 'amd': true }], + // 'import/named': 2, + // 'import/namespace': 2, + // 'import/default': 2, + // 'import/export': 2, } } ]; diff --git a/package-lock.json b/package-lock.json index d96235b2..2b4697a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,11 +14,11 @@ "zxcvbn": "^4.4.2" }, "devDependencies": { - "@babel/core": "^7.24.5", - "@babel/plugin-transform-runtime": "^7.24.3", - "@babel/preset-env": "^7.24.5", + "@babel/core": "^7.24.6", + "@babel/plugin-transform-runtime": "^7.24.6", + "@babel/preset-env": "^7.24.6", "@esbuild-plugins/node-resolve": "^0.2.2", - "@eslint/js": "^9.2.0", + "@eslint/js": "^9.4.0", "@stylistic/eslint-plugin-js": "^2.1.0", "@testing-library/dom": "^10.1.0", "@testing-library/jest-dom": "^6.4.5", @@ -27,11 +27,11 @@ "@types/jest": "^29.5.12", "babel-jest": "^29.7.0", "del": "^7.1.0", - "esbuild-svelte": "^0.8.0", - "eslint": "^9.2.0", + "esbuild-svelte": "^0.8.1", + "eslint": "^9.4.0", "eslint-formatter-pretty": "^6.0.1", "eslint-plugin-svelte": "^2.39.0", - "globals": "^15.2.0", + "globals": "^15.3.0", "gulp": "^5.0.0", "gulp-cached": "^1.1.1", "gulp-cleaner-css": "^4.3.2", @@ -51,12 +51,12 @@ "prism-svelte": "^0.5.0", "prismjs": "^1.29.0", "screen-clear": "^1.0.13", - "stylelint": "^16.5.0", + "stylelint": "^16.6.1", "stylelint-config-standard": "^36.0.0", "stylelint-formatter-pretty": "^4.0.0", - "svelte": "^4.2.16", + "svelte": "^4.2.17", "svelte-jester": "^3.0.0", - "ts-jest": "^29.1.2" + "ts-jest": "^29.1.4" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -97,12 +97,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", + "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.24.6", "picocolors": "^1.0.0" }, "engines": { @@ -110,30 +110,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", - "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz", + "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", - "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz", + "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.24.5", - "@babel/helpers": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5", + "@babel/code-frame": "^7.24.6", + "@babel/generator": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helpers": "^7.24.6", + "@babel/parser": "^7.24.6", + "@babel/template": "^7.24.6", + "@babel/traverse": "^7.24.6", + "@babel/types": "^7.24.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -149,12 +149,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", - "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz", + "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==", "dev": true, "dependencies": { - "@babel/types": "^7.24.5", + "@babel/types": "^7.24.6", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -164,37 +164,37 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.6.tgz", + "integrity": "sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.6.tgz", + "integrity": "sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz", + "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", + "@babel/compat-data": "^7.24.6", + "@babel/helper-validator-option": "^7.24.6", "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -204,19 +204,19 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", - "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.24.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.6.tgz", + "integrity": "sha512-djsosdPJVZE6Vsw3kk7IPRWethP94WHGOhQTc67SNXE0ZzMhHgALw8iGmYS0TD1bbMM0VDROy43od7/hN6WYcA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-member-expression-to-functions": "^7.24.6", + "@babel/helper-optimise-call-expression": "^7.24.6", + "@babel/helper-replace-supers": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", "semver": "^6.3.1" }, "engines": { @@ -227,12 +227,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.6.tgz", + "integrity": "sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.6", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -260,74 +260,74 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz", + "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz", + "integrity": "sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.6", + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz", + "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", - "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.6.tgz", + "integrity": "sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg==", "dev": true, "dependencies": { - "@babel/types": "^7.24.5" + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", - "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", + "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", "dev": true, "dependencies": { - "@babel/types": "^7.24.0" + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", - "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz", + "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-simple-access": "^7.24.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/helper-validator-identifier": "^7.24.5" + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-module-imports": "^7.24.6", + "@babel/helper-simple-access": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -337,35 +337,35 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.6.tgz", + "integrity": "sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", - "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz", + "integrity": "sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.6.tgz", + "integrity": "sha512-1Qursq9ArRZPAMOZf/nuzVW8HgJLkTB9y9LfP4lW2MVp4e9WkLJDovfKBxoDcCk6VuzIxyqWHyBoaCtSRP10yg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-wrap-function": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -375,14 +375,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", - "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.6.tgz", + "integrity": "sha512-mRhfPwDqDpba8o1F8ESxsEkJMQkUF8ZIWrAc0FtWhxnjfextxMWxr22RtFizxxSYLjVHDeMgVsRq8BBZR2ikJQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-member-expression-to-functions": "^7.24.6", + "@babel/helper-optimise-call-expression": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -392,103 +392,102 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", - "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz", + "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==", "dev": true, "dependencies": { - "@babel/types": "^7.24.5" + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.6.tgz", + "integrity": "sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", - "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", + "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", "dev": true, "dependencies": { - "@babel/types": "^7.24.5" + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz", + "integrity": "sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", - "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", + "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz", + "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.6.tgz", + "integrity": "sha512-f1JLrlw/jbiNfxvdrfBgio/gRBk3yTAEJWirpAkiJG2Hb22E7cEYKHWo0dFPTv/niPovzIdPdEDetrv6tC6gPQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/helper-function-name": "^7.24.6", + "@babel/template": "^7.24.6", + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", - "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.6.tgz", + "integrity": "sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==", "dev": true, "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5" + "@babel/template": "^7.24.6", + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", + "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.6", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -498,9 +497,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", - "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", + "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -510,13 +509,13 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz", - "integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.6.tgz", + "integrity": "sha512-bYndrJ6Ph6Ar+GaB5VAc0JPoP80bQCm4qon6JEzXfRl5QZyQ8Ur1K6k7htxWmPA5z+k7JQvaMUrtXlqclWYzKw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -526,12 +525,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", - "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.6.tgz", + "integrity": "sha512-iVuhb6poq5ikqRq2XWU6OQ+R5o9wF+r/or9CeUyovgptz0UlnK4/seOQ1Istu/XybYjAhQv1FRSSfHHufIku5Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -541,14 +540,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", - "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.6.tgz", + "integrity": "sha512-c8TER5xMDYzzFcGqOEp9l4hvB7dcbhcGjcLVwxWfe4P5DOafdwjsBJZKsmv+o3aXh7NhopvayQIovHrh2zSRUQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/plugin-transform-optional-chaining": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -558,13 +557,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", - "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.6.tgz", + "integrity": "sha512-z8zEjYmwBUHN/pCF3NuWBhHQjJCrd33qAi8MgANfMrAvn72k2cImT8VjK9LJFu4ysOLJqhfkYYb3MvwANRUNZQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -661,12 +660,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", - "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.6.tgz", + "integrity": "sha512-BE6o2BogJKJImTmGpkmOic4V0hlRRxVtzqxiSPa8TIFxyhi4EFjHm08nq1M4STK4RytuLMgnSz0/wfflvGFNOg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -676,12 +675,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", - "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.6.tgz", + "integrity": "sha512-D+CfsVZousPXIdudSII7RGy52+dYRtbyKAZcvtQKq/NpsivyMVduepzcLqG5pMBugtMdedxdC8Ramdpcne9ZWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -863,12 +862,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", - "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.6.tgz", + "integrity": "sha512-jSSSDt4ZidNMggcLx8SaKsbGNEfIl0PHx/4mFEulorE7bpYLbN0d3pDW3eJ7Y5Z3yPhy3L3NaPCYyTUY7TuugQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -878,14 +877,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", - "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.6.tgz", + "integrity": "sha512-VEP2o4iR2DqQU6KPgizTW2mnMx6BG5b5O9iQdrW9HesLkv8GIA8x2daXBQxw1MrsIkFQGA/iJ204CKoQ8UcnAA==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-remap-async-to-generator": "^7.24.6", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -896,14 +895,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", - "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.6.tgz", + "integrity": "sha512-NTBA2SioI3OsHeIn6sQmhvXleSl9T70YY/hostQLveWs0ic+qvbA3fa0kwAwQ0OA/XGaAerNZRQGJyRfhbJK4g==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-remap-async-to-generator": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -913,12 +912,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", - "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.6.tgz", + "integrity": "sha512-XNW7jolYHW9CwORrZgA/97tL/k05qe/HL0z/qqJq1mdWhwwCM6D4BJBV7wAz9HgFziN5dTOG31znkVIzwxv+vw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -928,12 +927,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", - "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.6.tgz", + "integrity": "sha512-S/t1Xh4ehW7sGA7c1j/hiOBLnEYCp/c2sEG4ZkL8kI1xX9tW2pqJTCHKtdhe/jHKt8nG0pFCrDHUXd4DvjHS9w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -943,13 +942,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", - "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.6.tgz", + "integrity": "sha512-j6dZ0Z2Z2slWLR3kt9aOmSIrBvnntWjMDN/TVcMPxhXMLmJVqX605CBRlcGI4b32GMbfifTEsdEjGjiE+j/c3A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -959,13 +958,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", - "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.6.tgz", + "integrity": "sha512-1QSRfoPI9RoLRa8Mnakc6v3e0gJxiZQTYrMfLn+mD0sz5+ndSzwymp2hDcYJTyT0MOn0yuWzj8phlIvO72gTHA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.4", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -976,18 +975,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", - "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.24.5", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.6.tgz", + "integrity": "sha512-+fN+NO2gh8JtRmDSOB6gaCVo36ha8kfCW1nMq2Gc0DABln0VcHN4PrALDvF5/diLzIRKptC7z/d7Lp64zk92Fg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-replace-supers": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", "globals": "^11.1.0" }, "engines": { @@ -1007,13 +1006,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", - "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.6.tgz", + "integrity": "sha512-cRzPobcfRP0ZtuIEkA8QzghoUpSB3X3qSH5W2+FzG+VjWbJXExtx0nbRqwumdBN1x/ot2SlTNQLfBCnPdzp6kg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/template": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/template": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1023,12 +1022,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz", - "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.6.tgz", + "integrity": "sha512-YLW6AE5LQpk5npNXL7i/O+U9CE4XsBCuRPgyjl1EICZYKmcitV+ayuuUGMJm2lC1WWjXYszeTnIxF/dq/GhIZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1038,13 +1037,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", - "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.6.tgz", + "integrity": "sha512-rCXPnSEKvkm/EjzOtLoGvKseK+dS4kZwx1HexO3BtRtgL0fQ34awHn34aeSHuXtZY2F8a1X8xqBBPRtOxDVmcA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1054,12 +1053,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", - "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.6.tgz", + "integrity": "sha512-/8Odwp/aVkZwPFJMllSbawhDAO3UJi65foB00HYnK/uXvvCPm0TAXSByjz1mpRmp0q6oX2SIxpkUOpPFHk7FLA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1069,12 +1068,12 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", - "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.6.tgz", + "integrity": "sha512-vpq8SSLRTBLOHUZHSnBqVo0AKX3PBaoPs2vVzYVWslXDTDIpwAcCDtfhUcHSQQoYoUvcFPTdC8TZYXu9ZnLT/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1085,13 +1084,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", - "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.6.tgz", + "integrity": "sha512-EemYpHtmz0lHE7hxxxYEuTYOOBZ43WkDgZ4arQ4r+VX9QHuNZC+WH3wUWmRNvR8ECpTRne29aZV6XO22qpOtdA==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1101,12 +1100,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", - "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.6.tgz", + "integrity": "sha512-inXaTM1SVrIxCkIJ5gqWiozHfFMStuGbGJAxZFBoHcRRdDP0ySLb3jH6JOwmfiinPwyMZqMBX+7NBDCO4z0NSA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.6", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1117,13 +1116,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", - "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.6.tgz", + "integrity": "sha512-n3Sf72TnqK4nw/jziSqEl1qaWPbCRw2CziHH+jdRYvw4J6yeCzsj4jdw8hIntOEeDGTmHVe2w4MVL44PN0GMzg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1133,14 +1132,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", - "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.6.tgz", + "integrity": "sha512-sOajCu6V0P1KPljWHKiDq6ymgqB+vfo3isUS4McqW1DZtvSVU2v/wuMhmRmkg3sFoq6GMaUUf8W4WtoSLkOV/Q==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1150,12 +1149,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", - "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.6.tgz", + "integrity": "sha512-Uvgd9p2gUnzYJxVdBLcU0KurF8aVhkmVyMKW4MIY1/BByvs3EBpv45q01o7pRTVmTvtQq5zDlytP3dcUgm7v9w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.6", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1166,12 +1165,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", - "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.6.tgz", + "integrity": "sha512-f2wHfR2HF6yMj+y+/y07+SLqnOSwRp8KYLpQKOzS58XLVlULhXbiYcygfXQxJlMbhII9+yXDwOUFLf60/TL5tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1181,12 +1180,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", - "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.6.tgz", + "integrity": "sha512-EKaWvnezBCMkRIHxMJSIIylzhqK09YpiJtDbr2wsXTwnO0TxyjMUkaw4RlFIZMIS0iDj0KyIg7H7XCguHu/YDA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.6", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1197,12 +1196,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", - "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.6.tgz", + "integrity": "sha512-9g8iV146szUo5GWgXpRbq/GALTnY+WnNuRTuRHWWFfWGbP9ukRL0aO/jpu9dmOPikclkxnNsjY8/gsWl6bmZJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1212,13 +1211,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", - "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.6.tgz", + "integrity": "sha512-eAGogjZgcwqAxhyFgqghvoHRr+EYRQPFjUXrTYKBRb5qPnAVxOOglaxc4/byHqjvq/bqO2F3/CGwTHsgKJYHhQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1228,14 +1227,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", - "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.6.tgz", + "integrity": "sha512-JEV8l3MHdmmdb7S7Cmx6rbNEjRCgTQMZxllveHO0mx6uiclB0NflCawlQQ6+o5ZrwjUBYPzHm2XoK4wqGVUFuw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-simple-access": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1245,15 +1244,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", - "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.6.tgz", + "integrity": "sha512-xg1Z0J5JVYxtpX954XqaaAT6NpAY6LtZXvYFCJmGFJWwtlz2EmJoR8LycFRGNE8dBKizGWkGQZGegtkV8y8s+w==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-hoist-variables": "^7.24.6", + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1263,13 +1262,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", - "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.6.tgz", + "integrity": "sha512-esRCC/KsSEUvrSjv5rFYnjZI6qv4R1e/iHQrqwbZIoRJqk7xCvEUiN7L1XrmW5QSmQe3n1XD88wbgDTWLbVSyg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1279,13 +1278,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.6.tgz", + "integrity": "sha512-6DneiCiu91wm3YiNIGDWZsl6GfTTbspuj/toTEqLh9d4cx50UIzSdg+T96p8DuT7aJOBRhFyaE9ZvTHkXrXr6Q==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1295,12 +1294,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", - "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.6.tgz", + "integrity": "sha512-f8liz9JG2Va8A4J5ZBuaSdwfPqN6axfWRK+y66fjKYbwf9VBLuq4WxtinhJhvp1w6lamKUwLG0slK2RxqFgvHA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1310,12 +1309,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", - "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.6.tgz", + "integrity": "sha512-+QlAiZBMsBK5NqrBWFXCYeXyiU1y7BQ/OYaiPAcQJMomn5Tyg+r5WuVtyEuvTbpV7L25ZSLfE+2E9ywj4FD48A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1326,12 +1325,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", - "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.6.tgz", + "integrity": "sha512-6voawq8T25Jvvnc4/rXcWZQKKxUNZcKMS8ZNrjxQqoRFernJJKjE3s18Qo6VFaatG5aiX5JV1oPD7DbJhn0a4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1342,15 +1341,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz", - "integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.6.tgz", + "integrity": "sha512-OKmi5wiMoRW5Smttne7BwHM8s/fb5JFs+bVGNSeHWzwZkWXWValR1M30jyXo1s/RaqgwwhEC62u4rFH/FBcBPg==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.5", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.5" + "@babel/plugin-transform-parameters": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1360,13 +1359,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", - "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.6.tgz", + "integrity": "sha512-N/C76ihFKlZgKfdkEYKtaRUtXZAgK7sOY4h2qrbVbVTXPrKGIi8aww5WGe/+Wmg8onn8sr2ut6FXlsbu/j6JHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-replace-supers": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1376,12 +1375,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", - "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.6.tgz", + "integrity": "sha512-L5pZ+b3O1mSzJ71HmxSCmTVd03VOT2GXOigug6vDYJzE5awLI7P1g0wFcdmGuwSDSrQ0L2rDOe/hHws8J1rv3w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1392,13 +1391,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz", - "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.6.tgz", + "integrity": "sha512-cHbqF6l1QP11OkYTYQ+hhVx1E017O5ZcSPXk9oODpqhcAD1htsWG2NpHrrhthEO2qZomLK0FXS+u7NfrkF5aOQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1409,12 +1408,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz", - "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.6.tgz", + "integrity": "sha512-ST7guE8vLV+vI70wmAxuZpIKzVjvFX9Qs8bl5w6tN/6gOypPWUmMQL2p7LJz5E63vEGrDhAiYetniJFyBH1RkA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1424,13 +1423,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", - "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.6.tgz", + "integrity": "sha512-T9LtDI0BgwXOzyXrvgLTT8DFjCC/XgWLjflczTLXyvxbnSR/gpv0hbmzlHE/kmh9nOvlygbamLKRo6Op4yB6aw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1440,14 +1439,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz", - "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.6.tgz", + "integrity": "sha512-Qu/ypFxCY5NkAnEhCF86Mvg3NSabKsh/TPpBVswEdkGl7+FbsYHy1ziRqJpwGH4thBdQHh8zx+z7vMYmcJ7iaQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.5", - "@babel/helper-plugin-utils": "^7.24.5", + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1458,12 +1457,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", - "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.6.tgz", + "integrity": "sha512-oARaglxhRsN18OYsnPTpb8TcKQWDYNsPNmTnx5++WOAsUJ0cSC/FZVlIJCKvPbU4yn/UXsS0551CFKJhN0CaMw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1473,12 +1472,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", - "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.6.tgz", + "integrity": "sha512-SMDxO95I8WXRtXhTAc8t/NFQUT7VYbIWwJCJgEli9ml4MhqUMh4S6hxgH6SmAC3eAQNWCDJFxcFeEt9w2sDdXg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.6", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1489,12 +1488,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", - "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.6.tgz", + "integrity": "sha512-DcrgFXRRlK64dGE0ZFBPD5egM2uM8mgfrvTMOSB2yKzOtjpGegVYkzh3s1zZg1bBck3nkXiaOamJUqK3Syk+4A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1504,13 +1503,13 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz", - "integrity": "sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.6.tgz", + "integrity": "sha512-W3gQydMb0SY99y/2lV0Okx2xg/8KzmZLQsLaiCmwNRl1kKomz14VurEm+2TossUb+sRvBCnGe+wx8KtIgDtBbQ==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-module-imports": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.1", "babel-plugin-polyfill-regenerator": "^0.6.1", @@ -1524,12 +1523,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", - "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.6.tgz", + "integrity": "sha512-xnEUvHSMr9eOWS5Al2YPfc32ten7CXdH7Zwyyk7IqITg4nX61oHj+GxpNvl+y5JHjfN3KXE2IV55wAWowBYMVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1539,13 +1538,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", - "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.6.tgz", + "integrity": "sha512-h/2j7oIUDjS+ULsIrNZ6/TKG97FgmEk1PXryk/HQq6op4XUUUwif2f69fJrzK0wza2zjCS1xhXmouACaWV5uPA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1555,12 +1554,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", - "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.6.tgz", + "integrity": "sha512-fN8OcTLfGmYv7FnDrsjodYBo1DhPL3Pze/9mIIE2MGCT1KgADYIOD7rEglpLHZj8PZlC/JFX5WcD+85FLAQusw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1570,12 +1569,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", - "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.6.tgz", + "integrity": "sha512-BJbEqJIcKwrqUP+KfUIkxz3q8VzXe2R8Wv8TaNgO1cx+nNavxn/2+H8kp9tgFSOL6wYPPEgFvU6IKS4qoGqhmg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1585,12 +1584,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz", - "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.6.tgz", + "integrity": "sha512-IshCXQ+G9JIFJI7bUpxTE/oA2lgVLAIK8q1KdJNoPXOpvRaNjMySGuvLfBw/Xi2/1lLo953uE8hyYSDW3TSYig==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1600,12 +1599,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", - "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.6.tgz", + "integrity": "sha512-bKl3xxcPbkQQo5eX9LjjDpU2xYHeEeNQbOhj0iPvetSzA+Tu9q/o5lujF4Sek60CM6MgYvOS/DJuwGbiEYAnLw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1615,13 +1614,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", - "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.6.tgz", + "integrity": "sha512-8EIgImzVUxy15cZiPii9GvLZwsy7Vxc+8meSlR3cXFmBIl5W5Tn9LGBf7CDKkHj4uVfNXCJB8RsVfnmY61iedA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1631,13 +1630,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", - "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.6.tgz", + "integrity": "sha512-pssN6ExsvxaKU638qcWb81RrvvgZom3jDgU/r5xFZ7TONkZGFf4MhI2ltMb8OcQWhHyxgIavEU+hgqtbKOmsPA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1647,13 +1646,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", - "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.6.tgz", + "integrity": "sha512-quiMsb28oXWIDK0gXLALOJRXLgICLiulqdZGOaPPd0vRT7fQp74NtdADAVu+D8s00C+0Xs0MxVP0VKF/sZEUgw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" }, "engines": { "node": ">=6.9.0" @@ -1663,27 +1662,27 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.5.tgz", - "integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.24.4", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.6.tgz", + "integrity": "sha512-CrxEAvN7VxfjOG8JNF2Y/eMqMJbZPZ185amwGUBp8D9USK90xQmv7dLdFSa+VbD7fdIqcy/Mfv7WtzG8+/qxKg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-validator-option": "^7.24.6", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.6", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.1", - "@babel/plugin-syntax-import-attributes": "^7.24.1", + "@babel/plugin-syntax-import-assertions": "^7.24.6", + "@babel/plugin-syntax-import-attributes": "^7.24.6", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1695,54 +1694,54 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.1", - "@babel/plugin-transform-async-generator-functions": "^7.24.3", - "@babel/plugin-transform-async-to-generator": "^7.24.1", - "@babel/plugin-transform-block-scoped-functions": "^7.24.1", - "@babel/plugin-transform-block-scoping": "^7.24.5", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-class-static-block": "^7.24.4", - "@babel/plugin-transform-classes": "^7.24.5", - "@babel/plugin-transform-computed-properties": "^7.24.1", - "@babel/plugin-transform-destructuring": "^7.24.5", - "@babel/plugin-transform-dotall-regex": "^7.24.1", - "@babel/plugin-transform-duplicate-keys": "^7.24.1", - "@babel/plugin-transform-dynamic-import": "^7.24.1", - "@babel/plugin-transform-exponentiation-operator": "^7.24.1", - "@babel/plugin-transform-export-namespace-from": "^7.24.1", - "@babel/plugin-transform-for-of": "^7.24.1", - "@babel/plugin-transform-function-name": "^7.24.1", - "@babel/plugin-transform-json-strings": "^7.24.1", - "@babel/plugin-transform-literals": "^7.24.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", - "@babel/plugin-transform-member-expression-literals": "^7.24.1", - "@babel/plugin-transform-modules-amd": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-modules-systemjs": "^7.24.1", - "@babel/plugin-transform-modules-umd": "^7.24.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.24.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.5", - "@babel/plugin-transform-object-super": "^7.24.1", - "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.5", - "@babel/plugin-transform-parameters": "^7.24.5", - "@babel/plugin-transform-private-methods": "^7.24.1", - "@babel/plugin-transform-private-property-in-object": "^7.24.5", - "@babel/plugin-transform-property-literals": "^7.24.1", - "@babel/plugin-transform-regenerator": "^7.24.1", - "@babel/plugin-transform-reserved-words": "^7.24.1", - "@babel/plugin-transform-shorthand-properties": "^7.24.1", - "@babel/plugin-transform-spread": "^7.24.1", - "@babel/plugin-transform-sticky-regex": "^7.24.1", - "@babel/plugin-transform-template-literals": "^7.24.1", - "@babel/plugin-transform-typeof-symbol": "^7.24.5", - "@babel/plugin-transform-unicode-escapes": "^7.24.1", - "@babel/plugin-transform-unicode-property-regex": "^7.24.1", - "@babel/plugin-transform-unicode-regex": "^7.24.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "@babel/plugin-transform-arrow-functions": "^7.24.6", + "@babel/plugin-transform-async-generator-functions": "^7.24.6", + "@babel/plugin-transform-async-to-generator": "^7.24.6", + "@babel/plugin-transform-block-scoped-functions": "^7.24.6", + "@babel/plugin-transform-block-scoping": "^7.24.6", + "@babel/plugin-transform-class-properties": "^7.24.6", + "@babel/plugin-transform-class-static-block": "^7.24.6", + "@babel/plugin-transform-classes": "^7.24.6", + "@babel/plugin-transform-computed-properties": "^7.24.6", + "@babel/plugin-transform-destructuring": "^7.24.6", + "@babel/plugin-transform-dotall-regex": "^7.24.6", + "@babel/plugin-transform-duplicate-keys": "^7.24.6", + "@babel/plugin-transform-dynamic-import": "^7.24.6", + "@babel/plugin-transform-exponentiation-operator": "^7.24.6", + "@babel/plugin-transform-export-namespace-from": "^7.24.6", + "@babel/plugin-transform-for-of": "^7.24.6", + "@babel/plugin-transform-function-name": "^7.24.6", + "@babel/plugin-transform-json-strings": "^7.24.6", + "@babel/plugin-transform-literals": "^7.24.6", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.6", + "@babel/plugin-transform-member-expression-literals": "^7.24.6", + "@babel/plugin-transform-modules-amd": "^7.24.6", + "@babel/plugin-transform-modules-commonjs": "^7.24.6", + "@babel/plugin-transform-modules-systemjs": "^7.24.6", + "@babel/plugin-transform-modules-umd": "^7.24.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.6", + "@babel/plugin-transform-new-target": "^7.24.6", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.6", + "@babel/plugin-transform-numeric-separator": "^7.24.6", + "@babel/plugin-transform-object-rest-spread": "^7.24.6", + "@babel/plugin-transform-object-super": "^7.24.6", + "@babel/plugin-transform-optional-catch-binding": "^7.24.6", + "@babel/plugin-transform-optional-chaining": "^7.24.6", + "@babel/plugin-transform-parameters": "^7.24.6", + "@babel/plugin-transform-private-methods": "^7.24.6", + "@babel/plugin-transform-private-property-in-object": "^7.24.6", + "@babel/plugin-transform-property-literals": "^7.24.6", + "@babel/plugin-transform-regenerator": "^7.24.6", + "@babel/plugin-transform-reserved-words": "^7.24.6", + "@babel/plugin-transform-shorthand-properties": "^7.24.6", + "@babel/plugin-transform-spread": "^7.24.6", + "@babel/plugin-transform-sticky-regex": "^7.24.6", + "@babel/plugin-transform-template-literals": "^7.24.6", + "@babel/plugin-transform-typeof-symbol": "^7.24.6", + "@babel/plugin-transform-unicode-escapes": "^7.24.6", + "@babel/plugin-transform-unicode-property-regex": "^7.24.6", + "@babel/plugin-transform-unicode-regex": "^7.24.6", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.6", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.4", @@ -1790,33 +1789,33 @@ } }, "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz", + "integrity": "sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.24.6", + "@babel/parser": "^7.24.6", + "@babel/types": "^7.24.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", - "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/types": "^7.24.5", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz", + "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.6", + "@babel/generator": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-hoist-variables": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "@babel/parser": "^7.24.6", + "@babel/types": "^7.24.6", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1834,13 +1833,13 @@ } }, "node_modules/@babel/types": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", - "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz", + "integrity": "sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.24.1", - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-string-parser": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.6", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1854,9 +1853,9 @@ "dev": true }, "node_modules/@csstools/css-parser-algorithms": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.1.tgz", - "integrity": "sha512-ubEkAaTfVZa+WwGhs5jbo5Xfqpeaybr/RvWzvFxRs4jfq16wH8l8Ty/QEEpINxll4xhuGfdMbipRyz5QZh9+FA==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz", + "integrity": "sha512-xI/tL2zxzEbESvnSxwFgwvy5HS00oCXxL4MLs6HUiDcYfwowsoQaABKxUElp1ARITrINzBnsECOc1q0eg2GOrA==", "dev": true, "funding": [ { @@ -1872,13 +1871,13 @@ "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^2.2.4" + "@csstools/css-tokenizer": "^2.3.1" } }, "node_modules/@csstools/css-tokenizer": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.4.tgz", - "integrity": "sha512-PuWRAewQLbDhGeTvFuq2oClaSCKPIBmHyIobCV39JHRYN0byDcUWJl5baPeNUcqrjtdMNqFooE0FGl31I3JOqw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.3.1.tgz", + "integrity": "sha512-iMNHTyxLbBlWIfGtabT157LH9DUx9X8+Y3oymFEuMj8HNc+rpE3dPFGFgHjpKfjeFDjLjYIAIhXPGvS2lKxL9g==", "dev": true, "funding": [ { @@ -1895,9 +1894,9 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.9.tgz", - "integrity": "sha512-qqGuFfbn4rUmyOB0u8CVISIp5FfJ5GAR3mBrZ9/TKndHakdnm6pY0L/fbLcpPnrzwCyyTEZl1nUcXAYHEWneTA==", + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.11.tgz", + "integrity": "sha512-uox5MVhvNHqitPP+SynrB1o8oPxPMt2JLgp5ghJOWf54WGQ5OKu47efne49r1SWqs3wRP8xSWjnO9MBKxhB1dA==", "dev": true, "funding": [ { @@ -1913,14 +1912,14 @@ "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.6.1", - "@csstools/css-tokenizer": "^2.2.4" + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1" } }, "node_modules/@csstools/selector-specificity": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.3.tgz", - "integrity": "sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", + "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", "dev": true, "funding": [ { @@ -1940,9 +1939,9 @@ } }, "node_modules/@dual-bundle/import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-ZKXyJeFAzcpKM2kk8ipoGIPUqx9BX52omTGnfwjJvxOCaZTM2wtDK7zN0aIgPRbT9XYAlha0HtmZ+XKteuh0Gw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", "dev": true, "funding": { "type": "github", @@ -2391,10 +2390,24 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.15.1.tgz", + "integrity": "sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.0.2.tgz", - "integrity": "sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -2445,9 +2458,18 @@ } }, "node_modules/@eslint/js": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.2.0.tgz", - "integrity": "sha512-ESiIudvhoYni+MdsI8oD7skpprZ89qKocwRM2KEvhhBJ9nl5MRh7BXU5GTod7Mdygq+AUl+QzId6iWJKR/wABA==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.4.0.tgz", + "integrity": "sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.3.tgz", + "integrity": "sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2474,20 +2496,6 @@ "node": ">=10.13.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -2501,16 +2509,10 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, "node_modules/@humanwhocodes/retry": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.2.3.tgz", - "integrity": "sha512-X38nUbachlb01YMlvPFojKoiXq+LzZvuSce70KPMPdeM1Rj03k4dR7lDslhbqXn3Ang4EU3+EAmwEAsbrjHW3g==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", "dev": true, "engines": { "node": ">=18.18" @@ -4659,12 +4661,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -5984,9 +5986,9 @@ } }, "node_modules/esbuild-svelte": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/esbuild-svelte/-/esbuild-svelte-0.8.0.tgz", - "integrity": "sha512-uKcPf1kl2UGMjrfHChv4dLxGAvCNhf9s72mHo19ZhKP+LrVOuQkOM/g8GE7MiGpoqjpk8UHqL08uLRbSKXhmhw==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/esbuild-svelte/-/esbuild-svelte-0.8.1.tgz", + "integrity": "sha512-iswZSetqRxYaQoWMd38Gu6AanIL6KFsVj8/unei7qTaxjAkRDulW62/Bc5nmeogKBWekBvrPOE106wui7gYARQ==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.19" @@ -5996,7 +5998,7 @@ }, "peerDependencies": { "esbuild": ">=0.9.6", - "svelte": ">=3.43.0 <5" + "svelte": ">=3.43.0 <6" } }, "node_modules/escalade": { @@ -6048,18 +6050,18 @@ } }, "node_modules/eslint": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.2.0.tgz", - "integrity": "sha512-0n/I88vZpCOzO+PQpt0lbsqmn9AsnsJAQseIqhZFI8ibQT0U1AkEKRxA3EVMos0BoHSXDQvCXY25TUjB5tr8Og==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.4.0.tgz", + "integrity": "sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^3.0.2", - "@eslint/js": "9.2.0", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint/config-array": "^0.15.1", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.4.0", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.2.3", + "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.12.4", "chalk": "^4.0.0", @@ -6277,12 +6279,6 @@ } } }, - "node_modules/eslint-plugin-svelte/node_modules/known-css-properties": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", - "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", - "dev": true - }, "node_modules/eslint-plugin-svelte/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -6775,9 +6771,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -7193,9 +7189,9 @@ } }, "node_modules/globals": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.2.0.tgz", - "integrity": "sha512-FQ5YwCHZM3nCmtb5FzEWwdUc9K5d3V/w9mzcz8iGD1gC/aOTHc6PouYu0kkKipNJqHAT7m51sqzQjEjIP+cK0A==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.3.0.tgz", + "integrity": "sha512-cCdyVjIUVTtX8ZsPkq1oCsOsLmGIswqnjZYMJJTGaNApj1yHtLSymKhwH51ttirREn75z3p4k051clwg7rvNKA==", "dev": true, "engines": { "node": ">=18" @@ -11558,9 +11554,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.30.0.tgz", - "integrity": "sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==", + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", + "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", "dev": true }, "node_modules/last-run": { @@ -12150,12 +12146,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -12759,9 +12755,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -12981,9 +12977,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -14233,16 +14229,26 @@ } }, "node_modules/stylelint": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.5.0.tgz", - "integrity": "sha512-IlCBtVrG+qTy3v+tZTk50W8BIomjY/RUuzdrDqdnlCYwVuzXtPbiGfxYqtyYAyOMcb+195zRsuHn6tgfPmFfbw==", + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz", + "integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], "dependencies": { - "@csstools/css-parser-algorithms": "^2.6.1", - "@csstools/css-tokenizer": "^2.2.4", - "@csstools/media-query-list-parser": "^2.1.9", - "@csstools/selector-specificity": "^3.0.3", - "@dual-bundle/import-meta-resolve": "^4.0.0", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/media-query-list-parser": "^2.1.11", + "@csstools/selector-specificity": "^3.1.1", + "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", @@ -14251,7 +14257,7 @@ "debug": "^4.3.4", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^8.0.0", + "file-entry-cache": "^9.0.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", @@ -14259,16 +14265,16 @@ "ignore": "^5.3.1", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.30.0", + "known-css-properties": "^0.31.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", - "micromatch": "^4.0.5", + "micromatch": "^4.0.7", "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss": "^8.4.38", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.0.16", + "postcss-selector-parser": "^6.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", @@ -14283,10 +14289,6 @@ }, "engines": { "node": ">=18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" } }, "node_modules/stylelint-config-recommended": { @@ -14426,6 +14428,31 @@ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true }, + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz", + "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==", + "dev": true, + "dependencies": { + "flat-cache": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/stylelint/node_modules/flat-cache": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", + "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "dev": true, + "dependencies": { + "flatted": "^3.3.1", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/stylelint/node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -14621,9 +14648,9 @@ } }, "node_modules/svelte": { - "version": "4.2.16", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.16.tgz", - "integrity": "sha512-mQwHpqHD2PmFcCyHaZ7XiTqposaLvJ75WpYcyY5/ce3qxbYtwQpZ+M7ZKP+2CG5U6kfnBZBpPLyofhlE6ROrnQ==", + "version": "4.2.17", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.17.tgz", + "integrity": "sha512-N7m1YnoXtRf5wya5Gyx3TWuTddI4nAyayyIWFojiWV5IayDYNV5i2mRp/7qNGol4DtxEYxljmrbgp1HM6hUbmQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.1", @@ -14973,9 +15000,9 @@ } }, "node_modules/ts-jest": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", - "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", + "version": "29.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.4.tgz", + "integrity": "sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -14991,10 +15018,11 @@ "ts-jest": "cli.js" }, "engines": { - "node": "^16.10.0 || ^18.0.0 || >=20.0.0" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", "@jest/types": "^29.0.0", "babel-jest": "^29.0.0", "jest": "^29.0.0", @@ -15004,6 +15032,9 @@ "@babel/core": { "optional": true }, + "@jest/transform": { + "optional": true + }, "@jest/types": { "optional": true }, diff --git a/package.json b/package.json index 4bf3823c..60c57544 100644 --- a/package.json +++ b/package.json @@ -33,11 +33,11 @@ "eslint-plugin-import": "^2.29.1" }, "devDependencies": { - "@babel/core": "^7.24.5", - "@babel/plugin-transform-runtime": "^7.24.3", - "@babel/preset-env": "^7.24.5", + "@babel/core": "^7.24.6", + "@babel/plugin-transform-runtime": "^7.24.6", + "@babel/preset-env": "^7.24.6", "@esbuild-plugins/node-resolve": "^0.2.2", - "@eslint/js": "^9.2.0", + "@eslint/js": "^9.4.0", "@stylistic/eslint-plugin-js": "^2.1.0", "@testing-library/dom": "^10.1.0", "@testing-library/jest-dom": "^6.4.5", @@ -46,22 +46,22 @@ "@types/jest": "^29.5.12", "babel-jest": "^29.7.0", "del": "^7.1.0", - "esbuild-svelte": "^0.8.0", - "eslint": "^9.2.0", + "esbuild-svelte": "^0.8.1", + "eslint": "^9.4.0", "eslint-formatter-pretty": "^6.0.1", "eslint-plugin-svelte": "^2.39.0", - "globals": "^15.2.0", + "globals": "^15.3.0", "gulp": "^5.0.0", "gulp-cached": "^1.1.1", "gulp-cleaner-css": "^4.3.2", "gulp-concat": "^2.6.1", "gulp-esbuild": "^0.12.0", "gulp-eslint-new": "^2.0.0", - "gulp-inject-string": "^1.1.2", "gulp-if": "^3.0.0", + "gulp-inject-string": "^1.1.2", "gulp-livereload": "^4.0.2", - "gulp-stylelint-esm": "^2.0.0", "gulp-size": "^5.0.0", + "gulp-stylelint-esm": "^2.0.0", "gulp-webserver": "^0.9.1", "husky": "^9.0.11", "jest": "^29.7.0", @@ -70,11 +70,11 @@ "prism-svelte": "^0.5.0", "prismjs": "^1.29.0", "screen-clear": "^1.0.13", - "stylelint": "^16.5.0", + "stylelint": "^16.6.1", "stylelint-config-standard": "^36.0.0", "stylelint-formatter-pretty": "^4.0.0", - "svelte": "^4.2.16", + "svelte": "^4.2.17", "svelte-jester": "^3.0.0", - "ts-jest": "^29.1.2" + "ts-jest": "^29.1.4" } } diff --git a/src/button/Button.svelte b/src/button/Button.svelte index c29f3173..592ece5b 100644 --- a/src/button/Button.svelte +++ b/src/button/Button.svelte @@ -45,7 +45,7 @@ export let error = false; export let submit = false; export let outline = false; // button without background, but with border -export let link = false; // looks like a link, get's colored underline on hover +export let link = false; // looks like a link, gets colored underline on hover export let text = false; // looks like normal text, but like a button on hover export let icon = undefined; // name of the icon export let round = undefined; // round button diff --git a/src/grid/DataStore.js b/src/grid/DataStore.js new file mode 100644 index 00000000..f237b1c6 --- /dev/null +++ b/src/grid/DataStore.js @@ -0,0 +1,140 @@ +import { writable, get } from 'svelte/store'; +import { isset } from '../utils.js'; + + +/** + * DataStore + * @description Store for all grid data + * @returns {Object} DataStore + */ +export function DataStore () { + const _this = writable([]); + const { subscribe, set } = _this; + + const columns = writable([]); + const allSelected = writable(false); + const someSelected = writable(false); + const sortField = writable(''); + const sortOrder = writable('ASC'); + + let lastSelectedItemId = null; + + + function getById (id) { + return get(_this).find(i => i.id === id); + } + + function toggleSelection (item, event , forceState) { + if (event.shiftKey && lastSelectedItemId) return selectRange(event); + + const $Data = get(_this); + const _item = getById(item.id); + if (!isset(forceState)) _item.selected = !_item.selected; + else _item.selected = forceState; + + if (_item.selected) lastSelectedItemId = _item.id; + + set($Data); + updateSelectedCounters(); + // onSelectionChange(); + } + + function toggleSelectAll (forceState = null) { + let isAll = get(allSelected); + + if (typeof forceState === 'boolean') isAll = forceState; + else isAll = get(someSelected) ? false : !isAll; + + allSelected.set(isAll); + someSelected.set(false); + + const $Data = get(_this); + $Data.forEach(_item => _item.selected = isAll); + set($Data); + // onSelectionChange(); + } + + function selectRange (event) { + const rowEl = event.target.closest('.item'); + const gridEl = rowEl.closest('.grid'); + const lastSelectedRowEl = gridEl.querySelector(`.item[data-id="${lastSelectedItemId}"]`); + if (!rowEl || !lastSelectedRowEl) return; + + const $Data = get(_this); + const rows = gridEl.querySelectorAll('.item'); + // find rows between last selected and current + const rowsToSelect = [rowEl, lastSelectedRowEl]; + let start = false; + for (let i = 0; i < rows.length; i++) { + if (rows[i] === rowEl || rows[i] === lastSelectedRowEl) { + if (start) break; + start = true; + } + if (start) rowsToSelect.push(rows[i]); + } + rowsToSelect.forEach(id => { + getById(+id.dataset.id).selected = true; + }); + + set($Data); + updateSelectedCounters(); + // onSelectionChange(); + } + + function updateSelectedCounters () { + const $Data = get(_this); + const countSelected = $Data.filter(t => t.selected).length; + const isAll = $Data.length === countSelected; + allSelected.set(isAll); + someSelected.set(countSelected > 0 && !isAll); + } + + sortField.subscribe(field => { + if (field) set(sortData(get(_this), field, get(sortOrder))); + }); + sortOrder.subscribe(order => { + if (order) set(sortData(get(_this), get(sortField), order)); + }); + + + return { + subscribe, + set, + get: () => _this, + + columns, + allSelected, + someSelected, + sortField, + sortOrder, + + toggleSelection, + toggleSelectAll, + reset: () => set([]) + }; +} + + + +function sortData (items, field, order) { + if (!items || !items.length) return []; + if (field === '') return items.sort(numberSort('id', order)); + + if (typeof items[0][field] === 'number') { + return items.sort(numberSort(field, order)); + } + + return items.sort(stringSort(field, order)); +} + + +function numberSort (field, order = 'ASC') { + if (order === 'ASC') return (a, b) => Math.abs(a[field]) - Math.abs(b[field]); + return (a, b) => Math.abs(b[field]) - Math.abs(a[field]); +} + + +function stringSort (field, order = 'ASC') { + if (order === 'ASC') return (a, b) => ('' + a[field]).localeCompare('' + b[field]); + return (a, b) => ('' + b[field]).localeCompare('' + a[field]); +} diff --git a/src/grid/Grid.css b/src/grid/Grid.css new file mode 100644 index 00000000..41181977 --- /dev/null +++ b/src/grid/Grid.css @@ -0,0 +1,87 @@ +.grid-title { + font-size: 1.4rem; + font-weight: 300; + margin: 0 0 1px; + padding: 0.5rem 1rem; + background: var(--ui-color-background-input); + border-bottom: 1px solid var(--ui-color-border); + box-shadow: 0 .5px 0 var(--ui-color-background-1); + position: sticky; + top: 0; + z-index: 1; +} + +.grid { + -webkit-user-select: none; + user-select: none; + cursor: default; +} + +.grid table { + table-layout: fixed; + position: sticky; + top: 0; + z-index: 2; +} +.grid-item { content-visibility: auto; } + +.grid .column-check { width: 3em; padding: 0 0.5em; } +.grid .column-check .checkbox { pointer-events: none; } +.grid .column-check .checkbox input { border-color: var(--ui-color-background-1); } + +.grid .column-date { width: 110px; } +.grid .column-number { width: 110px; } + + +.grid thead { top: -2px; } +.grid thead th { padding-top: 0.75em; padding-bottom: 0.75em; } + +.grid tbody { background-color: var(--ui-color-background); } +.grid tbody td { padding: 0.3rem 0.5rem; } + +.grid tfoot { bottom: -2px; } +.grid tfoot td { padding: 0.75rem 0.5rem; } +.grid tfoot .button { --button-size: 0.9em; font-size: 0.9em; margin: 0; } + + +.grid td:not(.column-check) { + white-space: nowrap; + overflow-x: hidden; + text-overflow: ellipsis; +} + +.grid .cell-aligner { + width: 100%; + height: 100%; + display: flex; + align-items: center; + gap: 0.5em; +} + + +.grid .th-number, +.grid .td-number { text-align: right; } + + +/*** SORTABLE TABLE *******************************************************************************/ +.grid-sortable thead th { cursor: pointer; } +.grid-sortable thead th span:hover { text-decoration: underline; } +.grid-sortable thead th .cell-aligner { min-height: 20px; } +.grid-sortable thead th .cell-aligner span { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + flex: 1; +} +.grid-sortable thead th svg { + width: 20px; + height: 20px; + color: var(--ui-color-text-2); +} + +.grid-sortable .th-sortable:focus-visible { + outline: 1px solid var(--ui-color-accent); + outline-offset: -1px; +} + +/*** SORTABLE TABLE *******************************************************************************/ diff --git a/src/grid/Grid.svelte b/src/grid/Grid.svelte new file mode 100644 index 00000000..e4f893d6 --- /dev/null +++ b/src/grid/Grid.svelte @@ -0,0 +1,213 @@ + +
              + {#if title} +

              {title}

              + {/if} + + + + +
              +
              + + diff --git a/src/grid/index.js b/src/grid/index.js new file mode 100644 index 00000000..1fc7e2aa --- /dev/null +++ b/src/grid/index.js @@ -0,0 +1 @@ +export { default as Grid } from './Grid.svelte'; diff --git a/src/grid/parts/GridBody.svelte b/src/grid/parts/GridBody.svelte new file mode 100644 index 00000000..2a88fc79 --- /dev/null +++ b/src/grid/parts/GridBody.svelte @@ -0,0 +1,11 @@ +{#each $Data as item} + +{/each} + + diff --git a/src/grid/parts/GridFoot.svelte b/src/grid/parts/GridFoot.svelte new file mode 100644 index 00000000..fb49ba61 --- /dev/null +++ b/src/grid/parts/GridFoot.svelte @@ -0,0 +1,27 @@ + + + {#if multiselect} + + {/if} + {#each $columns as column} + {column.total ? sumColumn(column) : ''} + {/each} + + + + diff --git a/src/grid/parts/GridHead.svelte b/src/grid/parts/GridHead.svelte new file mode 100644 index 00000000..7b30f524 --- /dev/null +++ b/src/grid/parts/GridHead.svelte @@ -0,0 +1,31 @@ + + + {#if multiselect} + + + + {/if} + {#if $columns} + {#each $columns as column} + + {/each} + {/if} + + + + diff --git a/src/grid/parts/GridHeadTh.svelte b/src/grid/parts/GridHeadTh.svelte new file mode 100644 index 00000000..cabde24a --- /dev/null +++ b/src/grid/parts/GridHeadTh.svelte @@ -0,0 +1,38 @@ + +
              + {column.label || column.field} + {#if column.field === $sortField} + + {/if} +
              + + + diff --git a/src/grid/parts/GridRow.svelte b/src/grid/parts/GridRow.svelte new file mode 100644 index 00000000..6a773309 --- /dev/null +++ b/src/grid/parts/GridRow.svelte @@ -0,0 +1,42 @@ + + + + {#if multiselect} + + + + {/if} + {#each $columns as column} + + {@html cellRenderer(column, item)} + + {/each} + + + + diff --git a/src/grid/parts/index.js b/src/grid/parts/index.js new file mode 100644 index 00000000..ab87cc38 --- /dev/null +++ b/src/grid/parts/index.js @@ -0,0 +1,3 @@ +export { default as GridHead } from './GridHead.svelte'; +export { default as GridBody } from './GridBody.svelte'; +export { default as GridFoot } from './GridFoot.svelte'; diff --git a/src/grid/utils.js b/src/grid/utils.js new file mode 100644 index 00000000..cb77d1c8 --- /dev/null +++ b/src/grid/utils.js @@ -0,0 +1,62 @@ + +function isActiveElement (element) { + const skipEventFor = ['INPUT', 'TEXTAREA', 'SELECT', 'BUTTON']; + if (skipEventFor.includes(element.tagName)) return true; +} + +function isInsidePopup (element) { + const skipEventIfInside = '.dialog,.drawer,.popover,.menu'; + return element.closest(skipEventIfInside); +} + + +// ignores navigation when event happened inside a form control +// or inside dialog, drawer, popover, menu +export function shouldSkipNav (e, element) { + const target = e && e.target; + if (!target || target === document) return false; + const notInElem = !element || !element.contains(target); + return (notInElem || isActiveElement(target) || isInsidePopup(target)); +} + + +/** + * Finds all selectable rows in all tables on the page. + */ +export function getSelectableItems (element) { + const rootEl = element.parentElement || document; + const rows = rootEl.querySelectorAll('.table tbody'); + if (rows && rows.length) return Array.from(rows); + return []; +} + + +/** + * Returns the scroll container element. + * @param element - The main grid element + * @param scrollContainer - Element or selector of the grid container that is scrollable (if passed by the consumer) + * @returns {HTMLElement} + */ +export function getScrollContainer (element, scrollContainer) { + let scrollEl = element; + if (scrollContainer) { + if (typeof scrollContainer === 'string') scrollEl = element.closest(scrollContainer); + else scrollEl = scrollContainer; + } + return scrollEl.scrollTo ? scrollEl : null; +} + + +/** + * Returns the height of the title + thead section of the grid. + * @param element - The main grid element + * @returns {number} + */ +export function getHeaderHeight (element) { + if (!element) return 0; + const _title = element.querySelector('.grid-title'); + const titleHeight = _title ? _title.offsetHeight : 0; + const head = element.querySelector('thead'); + const headHeight = head ? head.offsetHeight : 0; + return headHeight + titleHeight; +} diff --git a/src/index.js b/src/index.js index dab424a3..6995d085 100644 --- a/src/index.js +++ b/src/index.js @@ -2,6 +2,7 @@ export * from './button-group/index.js'; export * from './button/index.js'; export * from './dialog/index.js'; export * from './drawer/index.js'; +export * from './grid/index.js'; export * from './icon/index.js'; export * from './info-bar/index.js'; export * from './input/index.js'; diff --git a/src/input/combobox/Combobox.svelte b/src/input/combobox/Combobox.svelte index d57cd09c..6c266a94 100644 --- a/src/input/combobox/Combobox.svelte +++ b/src/input/combobox/Combobox.svelte @@ -123,7 +123,7 @@ import { afterUpdate, createEventDispatcher, onDestroy } from 'svelte'; import { emphasize, scrollToSelectedItem, groupData, findValueInSource, getInputValue, alignDropdown, hasValueChanged } from './utils'; -import { deepCopy, fuzzy, guid, isMobile } from '../../utils'; +import { fuzzy, guid, isMobile } from '../../utils'; import { Button } from '../../button'; import { Info } from '../../info-bar'; import { InputError } from '../input-error'; @@ -184,7 +184,7 @@ onDestroy(() => { afterUpdate(() => { if (!opened && items.length) { - originalItems = deepCopy(items); + originalItems = structuredClone(items); if (items.length && typeof items[0] === 'string') { items = items.map(item => ({ name: item })); } @@ -196,7 +196,7 @@ afterUpdate(() => { function filter () { - let filtered = deepCopy(items); + let filtered = structuredClone(items); if (hasEdited && inputElement.value) { const q = inputElement.value.toLowerCase().trim(); filtered = filtered @@ -274,7 +274,7 @@ function close () { function selectSingle (item) { if (multiselect || hasSetValue) return; - const oldValue = deepCopy(value); + const oldValue = structuredClone(value); if (!item) { if (filteredData[highlightIndex]) item = filteredData[highlightIndex]; @@ -296,7 +296,7 @@ function selectSingle (item) { } function selectMultiselect (item) { - const oldValue = deepCopy(value); + const oldValue = structuredClone(value); selectedItems = selectedItems || []; const itemId = item.id || item.name || item; const itemIndex = selectedItems.findIndex(i => (i?.id || i?.name || i) === itemId); diff --git a/src/table/Table.css b/src/table/Table.css index e5bacaf3..05b2637e 100644 --- a/src/table/Table.css +++ b/src/table/Table.css @@ -1,6 +1,6 @@ .table { width: 100%; - height: 100%; + max-height: 100%; overflow: auto; overscroll-behavior-y: contain; position: relative; diff --git a/src/utils.js b/src/utils.js index 1779af07..f91b0e07 100644 --- a/src/utils.js +++ b/src/utils.js @@ -54,12 +54,6 @@ export function blink (el, duration = 160) { } -export function deepCopy (o) { - return structuredClone(o); -} - - - export function debounce (func, timeout = 300) { let timer; return (...args) => { @@ -79,12 +73,17 @@ export function throttle (fn, delay = 300) { }; } + export function empty (v) { if (v === null || typeof v === 'undefined') return true; if (v === '') return true; if (Array.isArray(v) && v.length === 0) return true; - if (typeof v === 'object' && Object.keys(v).length === 0) return true; - return false; + return (typeof v === 'object' && Object.keys(v).length === 0); +} + + +export function isset (v) { + return typeof v !== 'undefined' && v !== null; } @@ -102,6 +101,7 @@ export function fuzzy (hay = '', s = '') { export function guid () { + if (window.crypto?.randomUUID) return window.crypto.randomUUID(); return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => { const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); @@ -129,9 +129,7 @@ export function isMobile () { if (regex.test(ua)) return true; regex = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i; - if (regex.test(ua.slice(0, 4))) return true; - - return false; + return regex.test(ua.slice(0, 4)); } @@ -314,10 +312,13 @@ function isScrollable (node) { * @returns boolean */ export function isInScrollable (node) { - if (!(node instanceof HTMLElement || node instanceof SVGElement)) return; + if (!(node instanceof HTMLElement || node instanceof SVGElement)) return false; if (isScrollable(node)) return true; - while (node = node.parentElement) { - if (isScrollable(node)) return true; + + let parent = node.parentElement; + while (parent) { + if (isScrollable(parent)) return true; + parent = parent.parentElement; } return false; } diff --git a/tests/utils.spec.js b/tests/utils.spec.js index e0d28fc2..7510c575 100644 --- a/tests/utils.spec.js +++ b/tests/utils.spec.js @@ -32,12 +32,55 @@ test('utils - blink', () => { }); -test('utils - deepCopy', () => { - const obj = { a: 1, b: { c: 2 } }; - const obj2 = utils.deepCopy(obj); - expect(obj2).toEqual(obj); - expect(obj2).not.toBe(obj); - expect(obj2.b).not.toBe(obj.b); +test('utils - debounce', async () => { + const fn = jest.fn(); + const debounced = utils.debounce(fn, 100); + debounced(); + debounced(); + debounced(); + expect(fn).toHaveBeenCalledTimes(0); + await new Promise(resolve => setTimeout(resolve, 200)); + expect(fn).toHaveBeenCalledTimes(1); +}); + + +test('utils - throttle', async () => { + const fn = jest.fn(); + const throttled = utils.throttle(fn, 100); + throttled(); + throttled(); + throttled(); + expect(fn).toHaveBeenCalledTimes(1); + await new Promise(resolve => setTimeout(resolve, 200)); + expect(fn).toHaveBeenCalledTimes(1); +}); + + +test('utils - empty', () => { + expect(utils.empty()).toBe(true); + expect(utils.empty('')).toBe(true); + expect(utils.empty([])).toBe(true); + expect(utils.empty({})).toBe(true); + expect(utils.empty(null)).toBe(true); + expect(utils.empty(undefined)).toBe(true); + expect(utils.empty(0)).toBe(false); + expect(utils.empty('a')).toBe(false); + expect(utils.empty([1])).toBe(false); + expect(utils.empty({ a: 1 })).toBe(false); +}); + + +test('utils - isset', () => { + expect(utils.isset()).toBe(false); + expect(utils.isset('')).toBe(true); + expect(utils.isset([])).toBe(true); + expect(utils.isset({})).toBe(true); + expect(utils.isset(null)).toBe(false); + expect(utils.isset(undefined)).toBe(false); + expect(utils.isset(0)).toBe(true); + expect(utils.isset('a')).toBe(true); + expect(utils.isset([1])).toBe(true); + expect(utils.isset({ a: 1 })).toBe(true); }); @@ -61,6 +104,7 @@ test('utils - fuzzy', () => { test('utils - guid', () => { const id = utils.guid(); expect(id).toBeTruthy(); + expect(id.length).toBe(36); });