@jxsuite/studio 2.2.2 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/css-meta.json +1487 -0
- package/data/elements-meta.json +370 -0
- package/data/html-meta.json +366 -0
- package/data/stylebook-meta.json +200 -0
- package/data/webdata.json +1621 -0
- package/dist/chunks/{Overlay.dev-ymy3et3y.js → Overlay.dev-d2ajy6sj.js} +7 -7
- package/dist/chunks/{content-source-r2n7v682.js → content-source-56xpvx83.js} +13 -12
- package/dist/chunks/{convert-to-repeater-cnpyvj74.js → convert-to-repeater-0xh9wwek.js} +12 -11
- package/dist/chunks/{extension-sections-vpcm4jvx.js → extension-sections-g34239vm.js} +17 -16
- package/dist/chunks/{files-zeg88k2d.js → files-gkz202dp.js} +18 -19
- package/dist/chunks/{format-host-taymsw55.js → format-host-pej3srnw.js} +2 -2
- package/dist/chunks/{git-panel-qp4rrwr9.js → git-panel-4j6xbh8g.js} +12 -11
- package/dist/chunks/{layers-panel-kj93w2zg.js → layers-panel-8mvn8sgd.js} +15 -14
- package/dist/chunks/{monaco-setup-xy3bs05d.js → monaco-setup-a5wkmbgh.js} +6 -3
- package/dist/chunks/{publish-panel-6qz6kp41.js → publish-panel-ptddc3kg.js} +6 -6
- package/dist/chunks/{quick-search-9wwa09hh.js → quick-search-j88azfs2.js} +19 -18
- package/dist/chunks/right-panel-egkaxy89.js +38 -0
- package/dist/chunks/{sp-overlay.dev-h6kdx076.js → sp-overlay.dev-s18hymn9.js} +8 -8
- package/dist/chunks/sp-progress-circle.dev-0zxcyz3r.js +15 -0
- package/dist/chunks/sp-tooltip.dev-5c6d1kjz.js +15 -0
- package/dist/chunks/{studio-753znj4c.js → studio-0e4h32g6.js} +5 -5
- package/dist/chunks/{studio-yz9s88s0.js → studio-10s469da.js} +25 -9
- package/dist/chunks/{studio-6f0am8f2.js → studio-2w11grav.js} +2 -2
- package/dist/chunks/{studio-zqv3w24n.js → studio-3q65xvzv.js} +5 -5
- package/dist/chunks/{studio-qhh8r5fz.js → studio-4058pg09.js} +4 -4
- package/dist/chunks/{studio-hekaagev.js → studio-4enps87v.js} +17 -17
- package/dist/chunks/{studio-tqemhphj.js → studio-50eed4c9.js} +4 -4
- package/dist/chunks/studio-53n8bp04.js +16 -0
- package/dist/chunks/{studio-nqq8jk8f.js → studio-5amdrjm4.js} +14 -14
- package/dist/chunks/{studio-6zzbyx17.js → studio-5ne8mdx9.js} +2 -2
- package/dist/chunks/{studio-3z8jjm2p.js → studio-7ejemhej.js} +3 -3
- package/dist/chunks/{studio-1kgfcv7s.js → studio-a11d3a1b.js} +12 -11
- package/dist/chunks/{studio-rgwcpast.js → studio-ay8wcr2b.js} +2 -2
- package/dist/chunks/{studio-fys6z73y.js → studio-bak2cyjr.js} +7 -7
- package/dist/chunks/{studio-xmvbhg31.js → studio-c31yb4t6.js} +2 -2
- package/dist/chunks/{studio-8sdyjfd6.js → studio-cf4rk7kv.js} +2 -2
- package/dist/chunks/{studio-yphy4z9m.js → studio-cv606rs1.js} +5 -5
- package/dist/chunks/{studio-5kt960pk.js → studio-hk523hby.js} +133 -147
- package/dist/chunks/{studio-x0et2z9g.js → studio-hs8x23fv.js} +15 -15
- package/dist/chunks/{studio-p471gg5n.js → studio-kvfx9z2c.js} +7 -3
- package/dist/chunks/{studio-22xr4q8q.js → studio-ncnet0ba.js} +18 -29
- package/dist/chunks/{studio-ckwz4d3x.js → studio-twsafr1e.js} +2 -2
- package/dist/chunks/{studio-qrsfh1w7.js → studio-tzx3xmvx.js} +5 -5
- package/dist/chunks/{studio-g8t7g0gp.js → studio-vdpcpada.js} +3 -3
- package/dist/chunks/{studio-6a0h7sne.js → studio-vhk5fmfv.js} +2 -2
- package/dist/chunks/{studio-hrajjyt2.js → studio-wdt9y92a.js} +2 -2
- package/dist/chunks/{studio-r8vx7bkz.js → studio-x3etxs0s.js} +14 -13
- package/dist/chunks/{studio-pv8m0h4a.js → studio-yxzgjq8q.js} +28 -23
- package/dist/chunks/{studio-300zsz1k.js → studio-zdkgwhkv.js} +6 -6
- package/dist/codicon.ttf +0 -0
- package/dist/iframe-entry.js +8 -1
- package/dist/manifest.json +82 -0
- package/dist/studio.js +232 -103
- package/index.html +0 -50
- package/package.json +11 -4
- package/src/canvas/iframe-entry.ts +5 -0
- package/src/canvas/iframe-host.ts +45 -4
- package/src/content/entry-editor.ts +2 -1
- package/src/editor/context-menu.ts +13 -2
- package/src/editor/slash-menu.ts +26 -11
- package/src/files/files.ts +11 -23
- package/src/grid/grid-panel.ts +27 -6
- package/src/hosting/document.ts +109 -0
- package/src/hosting/layout.ts +211 -0
- package/src/hosting/stage.ts +166 -0
- package/src/hosting/tsconfig.json +18 -0
- package/src/panels/ai-chat/chat-view.ts +25 -14
- package/src/panels/git-panel.ts +17 -14
- package/src/panels/head-panel.ts +32 -14
- package/src/panels/imports-panel.ts +32 -13
- package/src/panels/layers-panel.ts +9 -1
- package/src/panels/panel-registry.ts +0 -1
- package/src/panels/properties-panel.ts +3 -3
- package/src/panels/settings-pane.ts +1 -1
- package/src/panels/style-panel.ts +3 -3
- package/src/panels/stylebook-panel.ts +10 -1
- package/src/panels/toolbar.ts +1 -1
- package/src/services/bundle-base.ts +69 -0
- package/src/services/monaco-setup.ts +19 -13
- package/src/shell/tree.ts +155 -0
- package/src/shell.ts +0 -2
- package/src/studio.ts +22 -2
- package/src/types.ts +15 -0
- package/src/ui/regions.ts +10 -45
- package/styles/overlays.css +35 -0
- package/dist/chunks/2020-xp8vnwma.js.map +0 -24
- package/dist/chunks/Overlay.dev-ymy3et3y.js.map +0 -9
- package/dist/chunks/adapter-jkcyhgtr.js.map +0 -9
- package/dist/chunks/cf-settings-g5fbf2zp.js.map +0 -9
- package/dist/chunks/components-z6cnkyy1.js.map +0 -9
- package/dist/chunks/content-source-r2n7v682.js.map +0 -9
- package/dist/chunks/convert-to-repeater-cnpyvj74.js.map +0 -10
- package/dist/chunks/editor-cptq5jp1.js.map +0 -9
- package/dist/chunks/extension-sections-vpcm4jvx.js.map +0 -11
- package/dist/chunks/files-zeg88k2d.js.map +0 -9
- package/dist/chunks/flow-qbfgrpeh.js.map +0 -12
- package/dist/chunks/focus-trap.esm-ggawf1hy.js.map +0 -11
- package/dist/chunks/focus-visible-6eg70z18.js.map +0 -10
- package/dist/chunks/format-host-taymsw55.js.map +0 -9
- package/dist/chunks/git-panel-qp4rrwr9.js.map +0 -9
- package/dist/chunks/index-nj44jpzj.js.map +0 -14
- package/dist/chunks/index-zqxmqxmh.js.map +0 -9
- package/dist/chunks/javascript-q8kpmfah.js.map +0 -11
- package/dist/chunks/jsonMode-dkr040ga.js.map +0 -18
- package/dist/chunks/jx-validate-jj9rnt4n.js.map +0 -9
- package/dist/chunks/layers-panel-kj93w2zg.js.map +0 -9
- package/dist/chunks/monaco-binding-rj6xpx9y.js.map +0 -10
- package/dist/chunks/monaco-setup-xy3bs05d.js.map +0 -15
- package/dist/chunks/publish-panel-6qz6kp41.js.map +0 -9
- package/dist/chunks/quick-search-9wwa09hh.js.map +0 -9
- package/dist/chunks/right-panel-faf816ch.js +0 -37
- package/dist/chunks/right-panel-faf816ch.js.map +0 -9
- package/dist/chunks/section-registry-sx1ykvkw.js.map +0 -9
- package/dist/chunks/sp-overlay.dev-h6kdx076.js.map +0 -9
- package/dist/chunks/sp-popover.dev-dj9x7e7a.js.map +0 -9
- package/dist/chunks/sp-progress-circle.dev-0fpvhm52.js +0 -15
- package/dist/chunks/sp-progress-circle.dev-0fpvhm52.js.map +0 -9
- package/dist/chunks/sp-tooltip.dev-rvepkw4r.js +0 -15
- package/dist/chunks/sp-tooltip.dev-rvepkw4r.js.map +0 -9
- package/dist/chunks/sp-tray.dev-64v4pxw8.js.map +0 -12
- package/dist/chunks/studio-0a5qrh01.js.map +0 -9
- package/dist/chunks/studio-0rqqhrdy.js.map +0 -12
- package/dist/chunks/studio-18j3bmcz.js.map +0 -10
- package/dist/chunks/studio-1kgfcv7s.js.map +0 -13
- package/dist/chunks/studio-22xr4q8q.js.map +0 -13
- package/dist/chunks/studio-300zsz1k.js.map +0 -39
- package/dist/chunks/studio-3fk1ac9z.js.map +0 -12
- package/dist/chunks/studio-3n4ndrzh.js.map +0 -41
- package/dist/chunks/studio-3z8jjm2p.js.map +0 -13
- package/dist/chunks/studio-4mqb9a0j.js.map +0 -14
- package/dist/chunks/studio-4q0wznzf.js.map +0 -73
- package/dist/chunks/studio-5ehhackm.js.map +0 -10
- package/dist/chunks/studio-5kt960pk.js.map +0 -38
- package/dist/chunks/studio-5x5774ak.js.map +0 -10
- package/dist/chunks/studio-685s0ytq.js.map +0 -76
- package/dist/chunks/studio-6a0h7sne.js.map +0 -15
- package/dist/chunks/studio-6f0am8f2.js.map +0 -10
- package/dist/chunks/studio-6kv3apa9.js.map +0 -10
- package/dist/chunks/studio-6zzbyx17.js.map +0 -12
- package/dist/chunks/studio-753znj4c.js.map +0 -16
- package/dist/chunks/studio-7afd21nw.js.map +0 -10
- package/dist/chunks/studio-8jpzqk5s.js.map +0 -10
- package/dist/chunks/studio-8q517dfr.js.map +0 -10
- package/dist/chunks/studio-8sdyjfd6.js.map +0 -10
- package/dist/chunks/studio-a0tswy0w.js.map +0 -9
- package/dist/chunks/studio-a7pzveq1.js.map +0 -11
- package/dist/chunks/studio-ahnzd9rg.js.map +0 -10
- package/dist/chunks/studio-b9b6t1dg.js.map +0 -651
- package/dist/chunks/studio-bw5dz6km.js.map +0 -21
- package/dist/chunks/studio-cjm7fdjf.js.map +0 -14
- package/dist/chunks/studio-ckwz4d3x.js.map +0 -12
- package/dist/chunks/studio-d1ks410h.js.map +0 -10
- package/dist/chunks/studio-dg7zyt5x.js.map +0 -10
- package/dist/chunks/studio-fys6z73y.js.map +0 -10
- package/dist/chunks/studio-g1wdche0.js.map +0 -56
- package/dist/chunks/studio-g8t7g0gp.js.map +0 -10
- package/dist/chunks/studio-h4rxscfc.js.map +0 -10
- package/dist/chunks/studio-hekaagev.js.map +0 -18
- package/dist/chunks/studio-hrajjyt2.js.map +0 -10
- package/dist/chunks/studio-nqq8jk8f.js.map +0 -14
- package/dist/chunks/studio-p471gg5n.js.map +0 -14
- package/dist/chunks/studio-pv8m0h4a.js.map +0 -98
- package/dist/chunks/studio-qhh8r5fz.js.map +0 -13
- package/dist/chunks/studio-qrsfh1w7.js.map +0 -41
- package/dist/chunks/studio-r8vx7bkz.js.map +0 -235
- package/dist/chunks/studio-rgwcpast.js.map +0 -12
- package/dist/chunks/studio-s519zc99.js.map +0 -10
- package/dist/chunks/studio-sas7mt3k.js.map +0 -10
- package/dist/chunks/studio-t5wqwzdh.js.map +0 -10
- package/dist/chunks/studio-tqemhphj.js.map +0 -11
- package/dist/chunks/studio-tr20m8g8.js.map +0 -9
- package/dist/chunks/studio-tvgyw9xw.js.map +0 -14
- package/dist/chunks/studio-x0et2z9g.js.map +0 -32
- package/dist/chunks/studio-xm3dbxvn.js.map +0 -19
- package/dist/chunks/studio-xmvbhg31.js.map +0 -10
- package/dist/chunks/studio-ynxwkrzd.js.map +0 -246
- package/dist/chunks/studio-yphy4z9m.js.map +0 -10
- package/dist/chunks/studio-yz9s88s0.js.map +0 -54
- package/dist/chunks/studio-z6nw2ek2.js.map +0 -10
- package/dist/chunks/studio-zqv3w24n.js.map +0 -11
- package/dist/chunks/tsMode-76kr53q0.js.map +0 -13
- package/dist/chunks/ws-client-6shc5rze.js.map +0 -12
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../node_modules/@spectrum-web-components/reactive-controllers/src/ElementResolution.dev.js", "../../../node_modules/@spectrum-web-components/shared/src/random-id.dev.js", "../../../node_modules/@spectrum-web-components/shared/src/reparent-children.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/overlay-timer.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/AbstractOverlay.dev.js", "../../../node_modules/@spectrum-web-components/shared/src/focus-visible.dev.js", "../../../node_modules/@spectrum-web-components/shared/src/focusable.dev.js", "../../../node_modules/@spectrum-web-components/shared/src/like-anchor.dev.js", "../../../node_modules/@lit-labs/observers/development/mutation-controller.js", "../../../node_modules/@spectrum-web-components/shared/src/observe-slot-presence.dev.js", "../../../node_modules/@spectrum-web-components/shared/src/observe-slot-text.dev.js", "../../../node_modules/@spectrum-web-components/shared/src/platform.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/events.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/VirtualTrigger.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/OverlayNoPopover.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/OverlayPopover.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/OverlayStack.dev.js", "../../../node_modules/@floating-ui/core/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs", "../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs", "../../../node_modules/@spectrum-web-components/overlay/node_modules/@floating-ui/dom/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs", "../../../node_modules/@spectrum-web-components/overlay/node_modules/@floating-ui/dom/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs", "../../../node_modules/@spectrum-web-components/overlay/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs", "../../../node_modules/@spectrum-web-components/overlay/src/PlacementController.dev.js", "../../../node_modules/@spectrum-web-components/base/src/condition-attribute-with-id.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/InteractionController.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/LongpressController.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/overlay.css.js", "../../../node_modules/@spectrum-web-components/overlay/src/slottable-request-event.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/ClickController.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/HoverController.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/strategies.dev.js", "../../../node_modules/@spectrum-web-components/overlay/src/Overlay.dev.js"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"\"use strict\";\nexport const elementResolverUpdatedSymbol = Symbol(\"element resolver updated\");\nexport class ElementResolutionController {\n constructor(host, { selector } = { selector: \"\" }) {\n this._element = null;\n this._selector = \"\";\n this.mutationCallback = (mutationList) => {\n let needsResolution = false;\n mutationList.forEach((mutation) => {\n if (needsResolution) {\n return;\n }\n if (mutation.type === \"childList\") {\n const currentElementRemoved = this.element && [...mutation.removedNodes].includes(this.element);\n const matchingElementAdded = !!this.selector && [...mutation.addedNodes].some(\n this.elementIsSelected\n );\n needsResolution = needsResolution || currentElementRemoved || matchingElementAdded;\n }\n if (mutation.type === \"attributes\") {\n const attributeChangedOnCurrentElement = mutation.target === this.element;\n const attributeChangedOnMatchingElement = !!this.selector && this.elementIsSelected(mutation.target);\n needsResolution = needsResolution || attributeChangedOnCurrentElement || attributeChangedOnMatchingElement;\n }\n });\n if (needsResolution) {\n this.resolveElement();\n }\n };\n this.elementIsSelected = (el) => {\n var _a;\n return this.selectorIsId ? (el == null ? void 0 : el.id) === this.selectorAsId : (_a = el == null ? void 0 : el.matches) == null ? void 0 : _a.call(el, this.selector);\n };\n this.host = host;\n this.selector = selector;\n this.observer = new MutationObserver(this.mutationCallback);\n this.host.addController(this);\n }\n get element() {\n return this._element;\n }\n set element(element) {\n if (element === this.element) {\n return;\n }\n const previous = this.element;\n this._element = element;\n this.host.requestUpdate(elementResolverUpdatedSymbol, previous);\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n if (selector === this.selector) {\n return;\n }\n this.releaseElement();\n this._selector = selector;\n this.resolveElement();\n }\n get selectorAsId() {\n return this.selector.slice(1);\n }\n get selectorIsId() {\n return !!this.selector && this.selector.startsWith(\"#\");\n }\n hostConnected() {\n this.resolveElement();\n this.observer.observe(this.host.getRootNode(), {\n subtree: true,\n childList: true,\n attributes: true\n });\n }\n hostDisconnected() {\n this.releaseElement();\n this.observer.disconnect();\n }\n resolveElement() {\n if (!this.selector) {\n this.releaseElement();\n return;\n }\n const parent = this.host.getRootNode();\n this.element = this.selectorIsId ? parent.getElementById(this.selectorAsId) : parent.querySelector(this.selector);\n }\n releaseElement() {\n this.element = null;\n }\n}\n//# sourceMappingURL=ElementResolution.dev.js.map\n",
|
|
6
|
-
"\"use strict\";\nexport function randomID() {\n return Array.from(\n crypto.getRandomValues(new Uint8Array(4)),\n (b) => `0${(b & 255).toString(16)}`.slice(-2)\n ).join(\"\");\n}\n//# sourceMappingURL=random-id.dev.js.map\n",
|
|
7
|
-
"\"use strict\";\nfunction restoreChildren(placeholderItems, srcElements, cleanupCallbacks = []) {\n for (let index = 0; index < srcElements.length; ++index) {\n const srcElement = srcElements[index];\n const placeholderItem = placeholderItems[index];\n const parentElement = placeholderItem.parentElement || placeholderItem.getRootNode();\n if (cleanupCallbacks[index]) {\n cleanupCallbacks[index](srcElement);\n }\n if (parentElement && parentElement !== placeholderItem) {\n parentElement.replaceChild(srcElement, placeholderItem);\n }\n delete placeholderItems[index];\n }\n return srcElements;\n}\nexport const reparentChildren = (srcElements, destination, {\n position,\n prepareCallback\n} = { position: \"beforeend\" }) => {\n let { length } = srcElements;\n if (length === 0) {\n return () => srcElements;\n }\n let step = 1;\n let index = 0;\n if (position === \"afterbegin\" || position === \"afterend\") {\n step = -1;\n index = length - 1;\n }\n const placeholderItems = new Array(length);\n const cleanupCallbacks = new Array(length);\n const placeholderTemplate = document.createComment(\n \"placeholder for reparented element\"\n );\n do {\n const srcElement = srcElements[index];\n if (prepareCallback) {\n cleanupCallbacks[index] = prepareCallback(srcElement);\n }\n placeholderItems[index] = placeholderTemplate.cloneNode();\n const parentElement = srcElement.parentElement || srcElement.getRootNode();\n if (parentElement && parentElement !== srcElement) {\n parentElement.replaceChild(placeholderItems[index], srcElement);\n }\n destination.insertAdjacentElement(position, srcElement);\n index += step;\n } while (--length > 0);\n return function() {\n return restoreChildren(placeholderItems, srcElements, cleanupCallbacks);\n };\n};\n//# sourceMappingURL=reparent-children.dev.js.map\n",
|
|
8
|
-
"\"use strict\";\nconst DEFAULT_WARMUP = 1e3;\nconst DEFAULT_COOLDOWN = 1e3;\nexport class OverlayTimer {\n constructor(options = {}) {\n this.warmUpDelay = DEFAULT_WARMUP;\n this.coolDownDelay = DEFAULT_COOLDOWN;\n this.isWarm = false;\n this.timeout = 0;\n Object.assign(this, options);\n }\n async openTimer(component) {\n this.cancelCooldownTimer();\n if (!this.component || component !== this.component) {\n if (this.component) {\n this.close(this.component);\n this.cancelCooldownTimer();\n }\n this.component = component;\n if (this.isWarm) {\n return false;\n }\n this.promise = new Promise((resolve) => {\n this.resolve = resolve;\n this.timeout = window.setTimeout(() => {\n if (this.resolve) {\n this.resolve(false);\n this.isWarm = true;\n }\n }, this.warmUpDelay);\n });\n return this.promise;\n } else if (this.promise) {\n return this.promise;\n } else {\n throw new Error(\"Inconsistent state\");\n }\n }\n close(component) {\n if (this.component && this.component === component) {\n this.resetCooldownTimer();\n if (this.timeout > 0) {\n clearTimeout(this.timeout);\n this.timeout = 0;\n }\n if (this.resolve) {\n this.resolve(true);\n delete this.resolve;\n }\n delete this.promise;\n delete this.component;\n }\n }\n resetCooldownTimer() {\n if (this.isWarm) {\n if (this.cooldownTimeout) {\n window.clearTimeout(this.cooldownTimeout);\n }\n this.cooldownTimeout = window.setTimeout(() => {\n this.isWarm = false;\n delete this.cooldownTimeout;\n }, this.coolDownDelay);\n }\n }\n cancelCooldownTimer() {\n if (this.cooldownTimeout) {\n window.clearTimeout(this.cooldownTimeout);\n }\n delete this.cooldownTimeout;\n }\n}\n//# sourceMappingURL=overlay-timer.dev.js.map\n",
|
|
9
|
-
"\"use strict\";\nimport { SpectrumElement } from \"@spectrum-web-components/base\";\nimport { reparentChildren } from \"@spectrum-web-components/shared/src/reparent-children.js\";\nimport { OverlayTimer } from \"./overlay-timer.dev.js\";\nexport const overlayTimer = new OverlayTimer();\nexport const noop = () => {\n return;\n};\nexport const guaranteedAllTransitionend = (el, action, cb) => {\n const abortController = new AbortController();\n const runningTransitions = /* @__PURE__ */ new Map();\n const cleanup = () => {\n abortController.abort();\n cb();\n };\n let guarantee2;\n let guarantee3;\n const guarantee1 = requestAnimationFrame(() => {\n guarantee2 = requestAnimationFrame(() => {\n guarantee3 = requestAnimationFrame(() => {\n cleanup();\n });\n });\n });\n const handleTransitionend = (event) => {\n if (event.target !== el) {\n return;\n }\n runningTransitions.set(\n event.propertyName,\n runningTransitions.get(event.propertyName) - 1\n );\n if (!runningTransitions.get(event.propertyName)) {\n runningTransitions.delete(event.propertyName);\n }\n if (runningTransitions.size === 0) {\n cleanup();\n }\n };\n const handleTransitionrun = (event) => {\n if (event.target !== el) {\n return;\n }\n if (!runningTransitions.has(event.propertyName)) {\n runningTransitions.set(event.propertyName, 0);\n }\n runningTransitions.set(\n event.propertyName,\n runningTransitions.get(event.propertyName) + 1\n );\n cancelAnimationFrame(guarantee1);\n cancelAnimationFrame(guarantee2);\n cancelAnimationFrame(guarantee3);\n };\n el.addEventListener(\"transitionrun\", handleTransitionrun, {\n signal: abortController.signal\n });\n el.addEventListener(\"transitionend\", handleTransitionend, {\n signal: abortController.signal\n });\n el.addEventListener(\"transitioncancel\", handleTransitionend, {\n signal: abortController.signal\n });\n action();\n};\nexport function nextFrame() {\n return new Promise((res) => requestAnimationFrame(() => res()));\n}\nexport class AbstractOverlay extends SpectrumElement {\n constructor() {\n super(...arguments);\n this.dispose = noop;\n this.offset = 0;\n this.willPreventClose = false;\n }\n async applyFocus(_targetOpenState, _focusEl) {\n return;\n }\n /* c8 ignore next 6 */\n get delayed() {\n return false;\n }\n set delayed(_delayed) {\n return;\n }\n /* c8 ignore next 6 */\n get disabled() {\n return false;\n }\n set disabled(_disabled) {\n return;\n }\n get elementResolver() {\n return this._elementResolver;\n }\n set elementResolver(controller) {\n this._elementResolver = controller;\n }\n /* c8 ignore next 3 */\n async ensureOnDOM(_targetOpenState) {\n return;\n }\n /* c8 ignore next 5 */\n async makeTransition(_targetOpenState) {\n return null;\n }\n async manageDelay(_targetOpenState) {\n return;\n }\n /* c8 ignore next 3 */\n async managePopoverOpen() {\n return;\n }\n /* c8 ignore next 3 */\n managePosition() {\n return;\n }\n /* c8 ignore next 6 */\n get open() {\n return false;\n }\n set open(_open) {\n return;\n }\n get placementController() {\n return this._placementController;\n }\n set placementController(controller) {\n this._placementController = controller;\n }\n requestSlottable() {\n }\n returnFocus() {\n return;\n }\n /* c8 ignore next 6 */\n get state() {\n return \"closed\";\n }\n set state(_state) {\n return;\n }\n /* c8 ignore next 3 */\n manuallyKeepOpen() {\n return;\n }\n static update() {\n const overlayUpdateEvent = new CustomEvent(\"sp-update-overlays\", {\n bubbles: true,\n composed: true,\n cancelable: true\n });\n document.dispatchEvent(overlayUpdateEvent);\n }\n static async open(triggerOrContent, interactionOrOptions, content, optionsV1) {\n await import(\"@spectrum-web-components/overlay/sp-overlay.js\");\n const v2 = arguments.length === 2;\n const overlayContent = content || triggerOrContent;\n const overlay = new this();\n let restored = false;\n overlay.dispose = () => {\n overlay.addEventListener(\"sp-closed\", () => {\n if (!restored) {\n restoreContent();\n restored = true;\n }\n requestAnimationFrame(() => {\n overlay.remove();\n });\n });\n overlay.open = false;\n overlay.dispose = noop;\n };\n const restoreContent = reparentChildren([overlayContent], overlay, {\n position: \"beforeend\",\n prepareCallback: (el) => {\n const slot = el.slot;\n el.removeAttribute(\"slot\");\n return () => {\n el.slot = slot;\n };\n }\n });\n const v1 = !v2 && overlayContent && optionsV1;\n if (v1) {\n if (true) {\n window.__swc.warn(\n overlay,\n `You are interacting with an ${overlay.localName} element via a deprecated imperative API. This API will be removed in a future version of the SWC library. Consider leveraging an ${overlay.localName} directly.`,\n \"https://opensource.adobe.com/spectrum-web-components/components/overlay/\",\n { level: \"deprecation\" }\n );\n }\n const trigger = triggerOrContent;\n const interaction = interactionOrOptions;\n const options2 = optionsV1;\n AbstractOverlay.applyOptions(overlay, {\n ...options2,\n delayed: options2.delayed || overlayContent.hasAttribute(\"delayed\"),\n trigger: options2.virtualTrigger || trigger,\n type: interaction === \"modal\" ? \"modal\" : interaction === \"hover\" ? \"hint\" : \"auto\"\n });\n trigger.insertAdjacentElement(\"afterend\", overlay);\n await overlay.updateComplete;\n overlay.open = true;\n return overlay.dispose;\n }\n const options = interactionOrOptions;\n overlay.append(overlayContent);\n AbstractOverlay.applyOptions(overlay, {\n ...options,\n delayed: options.delayed || overlayContent.hasAttribute(\"delayed\")\n });\n overlay.updateComplete.then(() => {\n overlay.open = true;\n });\n return overlay;\n }\n static applyOptions(overlay, options) {\n var _a, _b;\n overlay.delayed = !!options.delayed;\n overlay.receivesFocus = (_a = options.receivesFocus) != null ? _a : \"auto\";\n overlay.triggerElement = options.trigger || null;\n overlay.type = options.type || \"modal\";\n overlay.offset = (_b = options.offset) != null ? _b : 0;\n overlay.placement = options.placement;\n overlay.willPreventClose = !!options.notImmediatelyClosable;\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n}\n//# sourceMappingURL=AbstractOverlay.dev.js.map\n",
|
|
10
|
-
"\"use strict\";\nlet hasFocusVisible = true;\ntry {\n document.body.querySelector(\":focus-visible\");\n} catch (error) {\n if (true) {\n window.__swc.warn(\n void 0,\n `The :focus-visible polyfill is not supported in this browser.`,\n \"https://github.com/WICG/focus-visible/pull/196\",\n {\n issues: [error instanceof Error ? error.message : \"Unknown error\"]\n }\n );\n }\n hasFocusVisible = false;\n import(\"focus-visible\");\n}\nexport const FocusVisiblePolyfillMixin = (SuperClass) => {\n var _a, _b;\n const coordinateWithPolyfill = (instance) => {\n if (instance.shadowRoot == null || instance.hasAttribute(\"data-js-focus-visible\")) {\n return () => {\n };\n }\n if (self.applyFocusVisiblePolyfill) {\n self.applyFocusVisiblePolyfill(instance.shadowRoot);\n if (instance.manageAutoFocus) {\n instance.manageAutoFocus();\n }\n } else {\n const coordinationHandler = () => {\n if (self.applyFocusVisiblePolyfill && instance.shadowRoot) {\n self.applyFocusVisiblePolyfill(instance.shadowRoot);\n }\n if (instance.manageAutoFocus) {\n instance.manageAutoFocus();\n }\n };\n self.addEventListener(\n \"focus-visible-polyfill-ready\",\n coordinationHandler,\n { once: true }\n );\n return () => {\n self.removeEventListener(\n \"focus-visible-polyfill-ready\",\n coordinationHandler\n );\n };\n }\n return () => {\n };\n };\n const $endPolyfillCoordination = Symbol(\"endPolyfillCoordination\");\n class FocusVisibleCoordinator extends (_b = SuperClass, _a = $endPolyfillCoordination, _b) {\n constructor() {\n super(...arguments);\n this[_a] = null;\n }\n // Attempt to coordinate with the polyfill when connected to the\n // document:\n connectedCallback() {\n var _a2;\n (_a2 = super.connectedCallback) == null ? void 0 : _a2.call(this);\n if (!hasFocusVisible) {\n requestAnimationFrame(() => {\n if (this[$endPolyfillCoordination] == null) {\n this[$endPolyfillCoordination] = coordinateWithPolyfill(this);\n }\n });\n }\n }\n disconnectedCallback() {\n var _a2;\n (_a2 = super.disconnectedCallback) == null ? void 0 : _a2.call(this);\n if (!hasFocusVisible) {\n requestAnimationFrame(() => {\n if (this[$endPolyfillCoordination] != null) {\n this[$endPolyfillCoordination]();\n this[$endPolyfillCoordination] = null;\n }\n });\n }\n }\n }\n return FocusVisibleCoordinator;\n};\n//# sourceMappingURL=focus-visible.dev.js.map\n",
|
|
11
|
-
"\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\nimport { SpectrumElement } from \"@spectrum-web-components/base\";\nimport { property } from \"@spectrum-web-components/base/src/decorators.js\";\nimport { FocusVisiblePolyfillMixin } from \"./focus-visible.dev.js\";\nfunction nextFrame() {\n return new Promise((res) => requestAnimationFrame(() => res()));\n}\nexport class Focusable extends FocusVisiblePolyfillMixin(SpectrumElement) {\n constructor() {\n super(...arguments);\n this.disabled = false;\n this.autofocus = false;\n this._tabIndex = 0;\n this.manipulatingTabindex = false;\n this.autofocusReady = Promise.resolve();\n }\n get tabIndex() {\n if (this.focusElement === this) {\n const tabindex = this.hasAttribute(\"tabindex\") ? Number(this.getAttribute(\"tabindex\")) : NaN;\n return !isNaN(tabindex) ? tabindex : -1;\n }\n const tabIndexAttribute = parseFloat(\n this.hasAttribute(\"tabindex\") ? this.getAttribute(\"tabindex\") || \"0\" : \"0\"\n );\n if (this.disabled || tabIndexAttribute < 0) {\n return -1;\n }\n if (!this.focusElement) {\n return tabIndexAttribute;\n }\n return this._tabIndex;\n }\n set tabIndex(tabIndex) {\n var _a;\n if (this.manipulatingTabindex) {\n this.manipulatingTabindex = false;\n return;\n }\n if (this.focusElement === this) {\n if (this.disabled) {\n this._tabIndex = tabIndex;\n } else if (tabIndex !== this._tabIndex) {\n this._tabIndex = tabIndex;\n const tabindex = \"\" + tabIndex;\n this.manipulatingTabindex = true;\n this.setAttribute(\"tabindex\", tabindex);\n }\n return;\n }\n if (tabIndex === -1) {\n this.addEventListener(\n \"pointerdown\",\n this.onPointerdownManagementOfTabIndex\n );\n } else {\n this.manipulatingTabindex = true;\n this.removeEventListener(\n \"pointerdown\",\n this.onPointerdownManagementOfTabIndex\n );\n }\n if (tabIndex === -1 || this.disabled) {\n this.manipulatingTabindex = true;\n this.setAttribute(\"tabindex\", \"-1\");\n this.removeAttribute(\"focusable\");\n if (this.selfManageFocusElement) {\n return;\n }\n if (tabIndex !== -1) {\n this._tabIndex = tabIndex;\n this.manageFocusElementTabindex(tabIndex);\n } else {\n (_a = this.focusElement) == null ? void 0 : _a.removeAttribute(\"tabindex\");\n }\n return;\n }\n this.setAttribute(\"focusable\", \"\");\n if (this.hasAttribute(\"tabindex\")) {\n this.removeAttribute(\"tabindex\");\n } else {\n this.manipulatingTabindex = false;\n }\n this._tabIndex = tabIndex;\n this.manageFocusElementTabindex(tabIndex);\n }\n onPointerdownManagementOfTabIndex() {\n if (this.tabIndex === -1) {\n setTimeout(() => {\n this.tabIndex = 0;\n this.focus({ preventScroll: true });\n this.tabIndex = -1;\n });\n }\n }\n async manageFocusElementTabindex(tabIndex) {\n if (!this.focusElement) {\n await this.updateComplete;\n }\n if (tabIndex === null) {\n this.focusElement.removeAttribute(\"tabindex\");\n } else {\n if (this.focusElement !== this) {\n this.focusElement.tabIndex = tabIndex;\n }\n }\n }\n /**\n * @private\n */\n get focusElement() {\n throw new Error(\"Must implement focusElement getter!\");\n }\n /**\n * @public\n * @returns {boolean} whether the component should manage its focusElement tab-index or not\n * Needed for action-menu to be supported in action-group in an accessible way\n */\n get selfManageFocusElement() {\n return false;\n }\n focus(options) {\n if (this.disabled || !this.focusElement) {\n return;\n }\n if (this.focusElement !== this) {\n this.focusElement.focus(options);\n } else {\n HTMLElement.prototype.focus.apply(this, [options]);\n }\n }\n blur() {\n const focusElement = this.focusElement || this;\n if (focusElement !== this) {\n focusElement.blur();\n } else {\n HTMLElement.prototype.blur.apply(this);\n }\n }\n click() {\n if (this.disabled) {\n return;\n }\n const focusElement = this.focusElement || this;\n if (focusElement !== this) {\n focusElement.click();\n } else {\n HTMLElement.prototype.click.apply(this);\n }\n }\n manageAutoFocus() {\n if (this.autofocus) {\n this.dispatchEvent(\n new KeyboardEvent(\"keydown\", {\n code: \"Tab\"\n })\n );\n this.focusElement.focus();\n }\n }\n firstUpdated(changes) {\n super.firstUpdated(changes);\n if (!this.hasAttribute(\"tabindex\") || this.getAttribute(\"tabindex\") !== \"-1\") {\n this.setAttribute(\"focusable\", \"\");\n }\n }\n update(changedProperties) {\n if (changedProperties.has(\"disabled\")) {\n this.handleDisabledChanged(\n this.disabled,\n changedProperties.get(\"disabled\")\n );\n }\n super.update(changedProperties);\n }\n updated(changedProperties) {\n super.updated(changedProperties);\n if (changedProperties.has(\"disabled\") && this.disabled) {\n this.blur();\n }\n }\n async handleDisabledChanged(disabled, oldDisabled) {\n const canSetDisabled = () => this.focusElement !== this && typeof this.focusElement.disabled !== \"undefined\";\n if (disabled) {\n this.manipulatingTabindex = true;\n this.setAttribute(\"tabindex\", \"-1\");\n await this.updateComplete;\n if (canSetDisabled()) {\n this.focusElement.disabled = true;\n } else {\n this.setAttribute(\"aria-disabled\", \"true\");\n }\n } else if (oldDisabled) {\n this.manipulatingTabindex = true;\n if (this.focusElement === this) {\n this.setAttribute(\"tabindex\", \"\" + this._tabIndex);\n } else {\n this.removeAttribute(\"tabindex\");\n }\n await this.updateComplete;\n if (canSetDisabled()) {\n this.focusElement.disabled = false;\n } else {\n this.removeAttribute(\"aria-disabled\");\n }\n }\n }\n async getUpdateComplete() {\n const complete = await super.getUpdateComplete();\n await this.autofocusReady;\n return complete;\n }\n connectedCallback() {\n super.connectedCallback();\n if (this.autofocus) {\n this.autofocusReady = (async () => {\n await nextFrame();\n await nextFrame();\n })();\n this.updateComplete.then(() => {\n this.manageAutoFocus();\n });\n }\n }\n}\n__decorateClass([\n property({ type: Boolean, reflect: true })\n], Focusable.prototype, \"disabled\", 2);\n__decorateClass([\n property({ type: Boolean })\n], Focusable.prototype, \"autofocus\", 2);\n__decorateClass([\n property({ type: Number })\n], Focusable.prototype, \"tabIndex\", 1);\n//# sourceMappingURL=focusable.dev.js.map\n",
|
|
12
|
-
"\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\nimport {\n html\n} from \"@spectrum-web-components/base\";\nimport { property } from \"@spectrum-web-components/base/src/decorators.js\";\nimport { ifDefined } from \"@spectrum-web-components/base/src/directives.js\";\nexport function LikeAnchor(constructor) {\n class LikeAnchorElement extends constructor {\n renderAnchor({\n id,\n className,\n ariaHidden,\n labelledby,\n tabindex,\n // prettier-ignore\n anchorContent = html`<slot></slot>`\n }) {\n return html`<a\n id=${id}\n class=${ifDefined(className)}\n href=${ifDefined(this.href)}\n download=${ifDefined(this.download)}\n target=${ifDefined(this.target)}\n aria-label=${ifDefined(this.label)}\n aria-labelledby=${ifDefined(labelledby)}\n aria-hidden=${ifDefined(ariaHidden ? \"true\" : void 0)}\n tabindex=${ifDefined(tabindex)}\n referrerpolicy=${ifDefined(this.referrerpolicy)}\n rel=${ifDefined(this.rel)}\n >${anchorContent}</a>`;\n }\n }\n __decorateClass([\n property()\n ], LikeAnchorElement.prototype, \"download\", 2);\n __decorateClass([\n property()\n ], LikeAnchorElement.prototype, \"label\", 2);\n __decorateClass([\n property()\n ], LikeAnchorElement.prototype, \"href\", 2);\n __decorateClass([\n property()\n ], LikeAnchorElement.prototype, \"target\", 2);\n __decorateClass([\n property()\n ], LikeAnchorElement.prototype, \"referrerpolicy\", 2);\n __decorateClass([\n property()\n ], LikeAnchorElement.prototype, \"rel\", 2);\n return LikeAnchorElement;\n}\n//# sourceMappingURL=like-anchor.dev.js.map\n",
|
|
13
|
-
"/**\n * MutationController is a ReactiveController that integrates a MutationObserver\n * with a ReactiveControllerHost's reactive update lifecycle. This is typically\n * a ReactiveElement or LitElement. MutationObservers can be used to detect\n * arbitrary changes to DOM, including nodes being added and remove and\n * attributes changing.\n *\n * The controller can specify a `target` element to observe and the\n * configuration options to pass to the MutationObserver. The `observe`\n * method can be called to observe additional elements.\n *\n * When a change is detected, the controller's given `callback` function is\n * used to process the result into a value which is stored on the controller.\n * The controller's `value` is usable during the host's update cycle.\n */\nexport class MutationController {\n constructor(host, { target, config, callback, skipInitial }) {\n this._targets = new Set();\n this._skipInitial = false;\n /**\n * Flag used to help manage calling the `callback` when observe is called\n * in addition to when a mutation occurs. This is done to help setup initial\n * state and is performed async by requesting a host update and calling\n * `handleChanges` once by checking and then resetting this flag.\n */\n this._unobservedUpdate = false;\n this._host = host;\n // Target defaults to `host` unless explicitly `null`.\n if (target !== null) {\n this._targets.add(target ?? host);\n }\n this._config = config;\n this._skipInitial = skipInitial ?? this._skipInitial;\n this.callback = callback;\n // Check browser support.\n if (!window.MutationObserver) {\n console.warn(`MutationController error: browser does not support MutationObserver.`);\n return;\n }\n this._observer = new MutationObserver((records) => {\n this.handleChanges(records);\n this._host.requestUpdate();\n });\n host.addController(this);\n }\n /**\n * Process the observer's changes with the controller's `callback`\n * function to produce a result stored in the `value` property.\n */\n handleChanges(records) {\n this.value = this.callback?.(records, this._observer);\n }\n hostConnected() {\n for (const target of this._targets) {\n this.observe(target);\n }\n }\n hostDisconnected() {\n this.disconnect();\n }\n async hostUpdated() {\n // Eagerly deliver any changes that happened during update.\n // And handle initial state as a set of 0 changes. This helps setup initial\n // state and promotes UI = f(state) since ideally the callback does not\n // rely on changes.\n const pendingRecords = this._observer.takeRecords();\n if (pendingRecords.length ||\n (!this._skipInitial && this._unobservedUpdate)) {\n this.handleChanges(pendingRecords);\n }\n this._unobservedUpdate = false;\n }\n /**\n * Observe the target element. The controller's `target` is automatically\n * observed when the host connects.\n * @param target Element to observe\n */\n observe(target) {\n this._targets.add(target);\n this._observer.observe(target, this._config);\n this._unobservedUpdate = true;\n this._host.requestUpdate();\n }\n /**\n * Disconnects the observer. This is done automatically when the host\n * disconnects.\n */\n disconnect() {\n this._observer.disconnect();\n }\n}\n//# sourceMappingURL=mutation-controller.js.map",
|
|
14
|
-
"\"use strict\";\nimport { MutationController } from \"@lit-labs/observers/mutation-controller.js\";\nconst slotContentIsPresent = Symbol(\"slotContentIsPresent\");\nexport function ObserveSlotPresence(constructor, lightDomSelector) {\n var _a, _b;\n const lightDomSelectors = Array.isArray(lightDomSelector) ? lightDomSelector : [lightDomSelector];\n class SlotPresenceObservingElement extends (_b = constructor, _a = slotContentIsPresent, _b) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(...args) {\n super(...args);\n this[_a] = /* @__PURE__ */ new Map();\n /**\n * @internal\n */\n this.managePresenceObservedSlot = () => {\n let changes = false;\n lightDomSelectors.forEach((selector) => {\n const nextValue = !!this.querySelector(`:scope > ${selector}`);\n const previousValue = this[slotContentIsPresent].get(selector) || false;\n changes = changes || previousValue !== nextValue;\n this[slotContentIsPresent].set(\n selector,\n !!this.querySelector(`:scope > ${selector}`)\n );\n });\n if (changes) {\n this.updateComplete.then(() => {\n this.requestUpdate();\n });\n }\n };\n new MutationController(this, {\n config: {\n childList: true,\n subtree: true\n },\n callback: () => {\n this.managePresenceObservedSlot();\n }\n });\n this.managePresenceObservedSlot();\n }\n /**\n * @internal\n */\n get slotContentIsPresent() {\n if (lightDomSelectors.length === 1) {\n return this[slotContentIsPresent].get(lightDomSelectors[0]) || false;\n } else {\n throw new Error(\n \"Multiple selectors provided to `ObserveSlotPresence` use `getSlotContentPresence(selector: string)` instead.\"\n );\n }\n }\n /**\n * @internal\n */\n getSlotContentPresence(selector) {\n if (this[slotContentIsPresent].has(selector)) {\n return this[slotContentIsPresent].get(selector) || false;\n }\n throw new Error(\n `The provided selector \\`${selector}\\` is not being observed.`\n );\n }\n }\n return SlotPresenceObservingElement;\n}\n//# sourceMappingURL=observe-slot-presence.dev.js.map\n",
|
|
15
|
-
"\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\nimport { property, queryAssignedNodes } from \"lit/decorators.js\";\nimport { MutationController } from \"@lit-labs/observers/mutation-controller.js\";\nconst assignedNodesList = Symbol(\"assignedNodes\");\nexport function ObserveSlotText(constructor, slotName, excludedSelectors = []) {\n var _a, _b;\n const notExcluded = (el) => (selector) => {\n return el.matches(selector);\n };\n class SlotTextObservingElement extends (_b = constructor, _a = assignedNodesList, _b) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(...args) {\n super(...args);\n this.slotHasContent = false;\n new MutationController(this, {\n config: {\n characterData: true,\n subtree: true\n },\n callback: (mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"characterData\") {\n this.manageTextObservedSlot();\n return;\n }\n }\n }\n });\n }\n /**\n * @internal\n */\n manageTextObservedSlot() {\n if (!this[assignedNodesList]) {\n return;\n }\n const assignedNodes = [...this[assignedNodesList]].filter(\n (currentNode) => {\n const node = currentNode;\n if (node.tagName) {\n return !excludedSelectors.some(notExcluded(node));\n }\n return node.textContent ? node.textContent.trim() : false;\n }\n );\n this.slotHasContent = assignedNodes.length > 0;\n }\n update(changedProperties) {\n if (!this.hasUpdated) {\n const { childNodes } = this;\n const textNodes = [...childNodes].filter((currentNode) => {\n const node = currentNode;\n if (node.tagName) {\n const excluded = excludedSelectors.some(notExcluded(node));\n return !excluded ? (\n // This pass happens at element upgrade and before slot rendering.\n // Confirm it would exist in a targeted slot if there was one supplied.\n slotName ? node.getAttribute(\"slot\") === slotName : !node.hasAttribute(\"slot\")\n ) : false;\n }\n return node.textContent ? node.textContent.trim() : false;\n });\n this.slotHasContent = textNodes.length > 0;\n }\n super.update(changedProperties);\n }\n firstUpdated(changedProperties) {\n super.firstUpdated(changedProperties);\n this.updateComplete.then(() => {\n this.manageTextObservedSlot();\n });\n }\n }\n __decorateClass([\n property({ type: Boolean, attribute: false })\n ], SlotTextObservingElement.prototype, \"slotHasContent\", 2);\n __decorateClass([\n queryAssignedNodes({\n slot: slotName,\n flatten: true\n })\n ], SlotTextObservingElement.prototype, _a, 2);\n return SlotTextObservingElement;\n}\n//# sourceMappingURL=observe-slot-text.dev.js.map\n",
|
|
16
|
-
"\"use strict\";\nfunction testUserAgent(re) {\n return typeof window !== \"undefined\" && window.navigator != null ? re.test(window.navigator.userAgent) : false;\n}\nfunction testPlatform(re) {\n return typeof window !== \"undefined\" && window.navigator != null ? re.test(window.navigator.platform) : false;\n}\nexport function isMac() {\n return testPlatform(/^Mac/);\n}\nexport function isIPhone() {\n return testPlatform(/^iPhone/);\n}\nexport function isIPad() {\n return testPlatform(/^iPad/) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n isMac() && navigator.maxTouchPoints > 1;\n}\nexport function isIOS() {\n return isIPhone() || isIPad();\n}\nexport function isAppleDevice() {\n return isMac() || isIOS();\n}\nexport function isWebKit() {\n return testUserAgent(/AppleWebKit/) && !isChrome();\n}\nexport function isChrome() {\n return testUserAgent(/Chrome/);\n}\nexport function isFirefox() {\n return testUserAgent(/Firefox/) && !isSeamonkey();\n}\nexport function isSeamonkey() {\n return testUserAgent(/Seamonkey/);\n}\nexport function isAndroid() {\n return testUserAgent(/Android/);\n}\n//# sourceMappingURL=platform.dev.js.map\n",
|
|
17
|
-
"\"use strict\";\nexport class BeforetoggleClosedEvent extends Event {\n constructor() {\n super(\"beforetoggle\", {\n bubbles: false,\n composed: false\n });\n this.currentState = \"open\";\n this.newState = \"closed\";\n }\n}\nexport class BeforetoggleOpenEvent extends Event {\n constructor() {\n super(\"beforetoggle\", {\n bubbles: false,\n composed: false\n });\n this.currentState = \"closed\";\n this.newState = \"open\";\n }\n}\nexport class OverlayStateEvent extends Event {\n constructor(type, overlay, {\n publish,\n interaction,\n reason\n }) {\n super(type, {\n bubbles: publish,\n composed: publish\n });\n this.overlay = overlay;\n this.detail = {\n interaction,\n reason\n };\n }\n}\n//# sourceMappingURL=events.dev.js.map\n",
|
|
18
|
-
"\"use strict\";\nimport { AbstractOverlay } from \"./AbstractOverlay.dev.js\";\nexport class VirtualTrigger {\n constructor(x, y) {\n this.x = 0;\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n updateBoundingClientRect(x, y) {\n this.x = x;\n this.y = y;\n AbstractOverlay.update();\n }\n getBoundingClientRect() {\n return {\n width: 0,\n height: 0,\n top: this.y,\n right: this.x,\n y: this.y,\n x: this.x,\n bottom: this.y,\n left: this.x,\n /* c8 ignore next 3 */\n toJSON() {\n return;\n }\n };\n }\n}\n//# sourceMappingURL=VirtualTrigger.dev.js.map\n",
|
|
19
|
-
"\"use strict\";\nimport { userFocusableSelector } from \"@spectrum-web-components/shared\";\nimport {\n firstFocusableIn,\n firstFocusableSlottedIn\n} from \"@spectrum-web-components/shared/src/first-focusable-in.js\";\nimport {\n guaranteedAllTransitionend,\n nextFrame,\n overlayTimer\n} from \"./AbstractOverlay.dev.js\";\nimport {\n BeforetoggleClosedEvent,\n BeforetoggleOpenEvent,\n OverlayStateEvent\n} from \"./events.dev.js\";\nimport { VirtualTrigger } from \"./VirtualTrigger.dev.js\";\nexport function OverlayNoPopover(constructor) {\n class OverlayWithNoPopover extends constructor {\n async managePopoverOpen() {\n await this.managePosition();\n }\n async manageDelay(targetOpenState) {\n if (targetOpenState === false || targetOpenState !== this.open) {\n overlayTimer.close(this);\n return;\n }\n if (this.delayed) {\n const cancelled = await overlayTimer.openTimer(this);\n if (cancelled) {\n this.open = !targetOpenState;\n }\n }\n }\n async ensureOnDOM(_targetOpenState) {\n document.body.offsetHeight;\n }\n async makeTransition(targetOpenState) {\n if (this.open !== targetOpenState) {\n return null;\n }\n let focusEl = null;\n const start = (el, index) => () => {\n if (targetOpenState !== this.open) {\n return;\n }\n el.open = targetOpenState;\n if (index === 0) {\n const event = targetOpenState ? BeforetoggleOpenEvent : BeforetoggleClosedEvent;\n this.dispatchEvent(new event());\n }\n if (targetOpenState !== true) {\n return;\n }\n if (el.matches(userFocusableSelector)) {\n focusEl = el;\n }\n focusEl = focusEl || firstFocusableIn(el);\n if (focusEl) {\n return;\n }\n const childSlots = el.querySelectorAll(\"slot\");\n childSlots.forEach((slot) => {\n if (!focusEl) {\n focusEl = firstFocusableSlottedIn(slot);\n }\n });\n };\n const finish = (el, index) => async () => {\n if (this.open !== targetOpenState) {\n return;\n }\n const eventName = targetOpenState ? \"sp-opened\" : \"sp-closed\";\n el.dispatchEvent(\n new OverlayStateEvent(eventName, this, {\n interaction: this.type\n })\n );\n if (index > 0) {\n return;\n }\n const hasVirtualTrigger = this.triggerElement instanceof VirtualTrigger;\n this.dispatchEvent(\n new OverlayStateEvent(eventName, this, {\n interaction: this.type,\n publish: hasVirtualTrigger\n })\n );\n if (this.triggerElement && !hasVirtualTrigger) {\n this.triggerElement.dispatchEvent(\n new OverlayStateEvent(eventName, this, {\n interaction: this.type,\n publish: true\n })\n );\n }\n this.state = targetOpenState ? \"opened\" : \"closed\";\n this.returnFocus();\n await nextFrame();\n await nextFrame();\n if (targetOpenState === this.open && targetOpenState === false) {\n this.requestSlottable();\n }\n };\n this.elements.forEach((el, index) => {\n guaranteedAllTransitionend(el, start(el, index), finish(el, index));\n });\n return focusEl;\n }\n }\n return OverlayWithNoPopover;\n}\n//# sourceMappingURL=OverlayNoPopover.dev.js.map\n",
|
|
20
|
-
"\"use strict\";\nimport { userFocusableSelector } from \"@spectrum-web-components/shared\";\nimport {\n firstFocusableIn,\n firstFocusableSlottedIn\n} from \"@spectrum-web-components/shared/src/first-focusable-in.js\";\nimport {\n guaranteedAllTransitionend,\n nextFrame,\n overlayTimer\n} from \"./AbstractOverlay.dev.js\";\nimport {\n BeforetoggleClosedEvent,\n BeforetoggleOpenEvent,\n OverlayStateEvent\n} from \"./events.dev.js\";\nimport { VirtualTrigger } from \"./VirtualTrigger.dev.js\";\nconst supportsOverlayAuto = CSS.supports(\"(overlay: auto)\");\nfunction isOpen(el) {\n let popoverOpen = false;\n try {\n popoverOpen = el.matches(\":popover-open\");\n } catch (error) {\n }\n let open = false;\n try {\n open = el.matches(\":open\");\n } catch (error) {\n }\n return popoverOpen || open;\n}\nexport function OverlayPopover(constructor) {\n class OverlayWithPopover extends constructor {\n async manageDelay(targetOpenState) {\n if (targetOpenState === false || targetOpenState !== this.open) {\n overlayTimer.close(this);\n return;\n }\n if (this.delayed) {\n const cancelled = await overlayTimer.openTimer(this);\n if (cancelled) {\n this.open = !targetOpenState;\n }\n }\n }\n /**\n * A popover should be hidden _after_ it is no longer on top-layer because\n * the position metrics will have changed from when it was originally positioned.\n */\n async shouldHidePopover(targetOpenState) {\n if (targetOpenState && this.open !== targetOpenState) {\n return;\n }\n const update = async ({\n newState\n } = {}) => {\n if (newState === \"open\") {\n return;\n }\n await this.placementController.resetOverlayPosition();\n };\n if (!isOpen(this.dialogEl)) {\n update();\n return;\n }\n this.dialogEl.addEventListener(\"toggle\", update, {\n once: true\n });\n }\n /**\n *\n * @param targetOpenState - The target open state of the overlay.\n * @returns True if the popover should be shown, false otherwise.\n *\n * @todo Why does this need try/catches? Can't we just use the matches() method directly?\n */\n shouldShowPopover(targetOpenState) {\n let popoverOpen = false;\n try {\n popoverOpen = this.dialogEl.matches(\":popover-open\");\n } catch (error) {\n }\n let open = false;\n try {\n open = this.dialogEl.matches(\":open\");\n } catch (error) {\n }\n if (targetOpenState && this.open === targetOpenState && !popoverOpen && !open && this.isConnected) {\n this.dialogEl.showPopover();\n this.managePosition();\n }\n }\n async ensureOnDOM(targetOpenState) {\n if (!supportsOverlayAuto) {\n await this.shouldHidePopover(targetOpenState);\n }\n this.shouldShowPopover(targetOpenState);\n await nextFrame();\n }\n async makeTransition(targetOpenState) {\n if (this.open !== targetOpenState) {\n return null;\n }\n let focusEl = null;\n const start = (el, index) => () => {\n el.open = targetOpenState;\n if (index === 0) {\n const event = targetOpenState ? BeforetoggleOpenEvent : BeforetoggleClosedEvent;\n this.dispatchEvent(new event());\n }\n if (!targetOpenState) {\n return;\n }\n if (el.matches(userFocusableSelector)) {\n focusEl = el;\n }\n focusEl = focusEl || firstFocusableIn(el);\n if (focusEl) {\n return;\n }\n const childSlots = el.querySelectorAll(\"slot\");\n childSlots.forEach((slot) => {\n if (!focusEl) {\n focusEl = firstFocusableSlottedIn(slot);\n }\n });\n };\n const finish = (el, index) => async () => {\n if (this.open !== targetOpenState) {\n return;\n }\n const eventName = targetOpenState ? \"sp-opened\" : \"sp-closed\";\n if (index > 0) {\n el.dispatchEvent(\n new OverlayStateEvent(eventName, this, {\n interaction: this.type,\n publish: false\n })\n );\n return;\n }\n const reportChange = async () => {\n if (this.open !== targetOpenState) {\n return;\n }\n await nextFrame();\n const hasVirtualTrigger = this.triggerElement instanceof VirtualTrigger;\n this.dispatchEvent(\n new OverlayStateEvent(eventName, this, {\n interaction: this.type,\n publish: hasVirtualTrigger\n })\n );\n el.dispatchEvent(\n new OverlayStateEvent(eventName, this, {\n interaction: this.type,\n publish: false\n })\n );\n if (this.triggerElement && !hasVirtualTrigger) {\n this.triggerElement.dispatchEvent(\n new OverlayStateEvent(eventName, this, {\n interaction: this.type,\n publish: true\n })\n );\n }\n this.state = targetOpenState ? \"opened\" : \"closed\";\n this.returnFocus();\n await nextFrame();\n await nextFrame();\n if (targetOpenState === this.open && targetOpenState === false) {\n this.requestSlottable();\n }\n };\n if (this.open !== targetOpenState) {\n return;\n }\n const open = isOpen(this.dialogEl);\n if (targetOpenState !== true && open && this.isConnected) {\n this.dialogEl.addEventListener(\n \"beforetoggle\",\n () => {\n reportChange();\n },\n { once: true }\n );\n this.dialogEl.hidePopover();\n } else {\n reportChange();\n }\n };\n this.elements.forEach((el, index) => {\n guaranteedAllTransitionend(el, start(el, index), finish(el, index));\n });\n return focusEl;\n }\n }\n return OverlayWithPopover;\n}\n//# sourceMappingURL=OverlayPopover.dev.js.map\n",
|
|
21
|
-
"\"use strict\";\nconst supportsPopover = \"showPopover\" in document.createElement(\"div\");\nclass OverlayStack {\n constructor() {\n this.root = document.body;\n this.stack = [];\n this.originalBodyOverflow = \"\";\n this.bodyScrollBlocked = false;\n this.handleScroll = (event) => {\n if (event.target !== document && event.target !== document.documentElement && event.target !== document.body) {\n return;\n }\n this.stack.forEach((overlay) => {\n if (overlay.open) {\n if (overlay.type === \"auto\" && overlay.triggerElement instanceof HTMLElement && overlay.triggerElement.closest(\"sp-picker, sp-action-menu\")) {\n event.stopPropagation();\n }\n document.dispatchEvent(\n new CustomEvent(\"sp-update-overlays\", {\n bubbles: true,\n composed: true,\n cancelable: true\n })\n );\n }\n });\n };\n /**\n * Cache the `pointerdownTarget` for later testing and prevent clicks outside page overlays\n *\n * @param event {PointerEvent}\n */\n this.handlePointerdown = (event) => {\n if (!this.stack.length) {\n return;\n }\n const pointerPath = event.composedPath();\n const pageOverlays = this.stack.filter((o) => o.open && o.type === \"page\");\n if (pageOverlays.length > 0 && !this.isEventInsideModal(pointerPath, pageOverlays)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n this.pointerdownPath = pointerPath;\n this.lastOverlay = this.stack[this.stack.length - 1];\n };\n /**\n * Prevent clicks outside modal overlays from reaching external elements.\n * This replicates the behavior of dialog.showModal() which was removed\n * in favor of showPopover() for performance reasons.\n *\n * @param event {MouseEvent}\n */\n this.handleClick = (event) => {\n if (!this.stack.length) {\n return;\n }\n const modalOverlays = this.getModalOverlays();\n if (!modalOverlays.length) {\n return;\n }\n const pageOverlays = modalOverlays.filter((o) => o.type === \"page\");\n if (!pageOverlays.length) {\n return;\n }\n const clickPath = event.composedPath();\n if (!this.isEventInsideModal(clickPath, pageOverlays)) {\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n };\n /**\n * Close all overlays that are not ancestors of this click event\n */\n this.handlePointerup = () => {\n const composedPath = this.pointerdownPath;\n this.pointerdownPath = void 0;\n if (!this.stack.length) {\n return;\n }\n if (!(composedPath == null ? void 0 : composedPath.length)) {\n return;\n }\n const lastOverlay = this.lastOverlay;\n this.lastOverlay = void 0;\n const lastIndex = this.stack.length - 1;\n const hasModalOrPageOverlay = this.stack.some(\n (overlay) => overlay.open && (overlay.type === \"modal\" || overlay.type === \"page\")\n );\n if (hasModalOrPageOverlay) {\n const clickedBackdrop = composedPath.some(\n (el) => el instanceof HTMLDivElement && el.classList.contains(\"modal-backdrop\")\n );\n if (clickedBackdrop) {\n const topOverlay = this.stack[this.stack.length - 1];\n if ((topOverlay == null ? void 0 : topOverlay.type) === \"modal\") {\n this.closeOverlay(topOverlay);\n }\n return;\n }\n }\n const nonAncestorOverlays = this.stack.filter((overlay, i) => {\n const inStack = composedPath.find(\n (el) => (\n // The Overlay is in the stack\n el === overlay || // The Overlay trigger is in the stack and the Overlay is a \"hint\"\n el === (overlay == null ? void 0 : overlay.triggerElement) && \"hint\" === (overlay == null ? void 0 : overlay.type) || // The last Overlay in the stack is not the last Overlay at `pointerdown` time and has a\n // `triggerInteraction` of \"longpress\", meaning it was opened by this poitner interaction\n i === lastIndex && overlay !== lastOverlay && overlay.triggerInteraction === \"longpress\"\n )\n );\n return !inStack && !overlay.shouldPreventClose() && overlay.type !== \"manual\" && // Don't close if this overlay is modal and not on top of the overlay stack.\n !(overlay.type === \"modal\" && lastOverlay !== overlay);\n });\n nonAncestorOverlays.reverse();\n nonAncestorOverlays.forEach((overlay) => {\n this.closeOverlay(overlay);\n let parentToClose = overlay.parentOverlayToForceClose;\n while (parentToClose) {\n this.closeOverlay(parentToClose);\n parentToClose = parentToClose.parentOverlayToForceClose;\n }\n });\n };\n this.handleBeforetoggle = (event) => {\n const { target, newState: open } = event;\n if (open === \"open\") {\n return;\n }\n this.closeOverlay(target);\n };\n this.handleKeydown = (event) => {\n if (event.code !== \"Escape\") {\n return;\n }\n if (!this.stack.length) {\n return;\n }\n const last = this.stack[this.stack.length - 1];\n if ((last == null ? void 0 : last.type) === \"hint\") {\n event.preventDefault();\n event.stopPropagation();\n this.closeOverlay(last);\n return;\n }\n if ((last == null ? void 0 : last.type) === \"page\") {\n event.preventDefault();\n return;\n }\n if ((last == null ? void 0 : last.type) === \"manual\") {\n this.closeOverlay(last);\n return;\n }\n if ((last == null ? void 0 : last.type) === \"modal\") {\n this.closeOverlay(last);\n return;\n }\n if (supportsPopover) {\n return;\n }\n if (!last) {\n return;\n }\n this.closeOverlay(last);\n };\n this.bindEvents();\n }\n get document() {\n return this.root.ownerDocument || document;\n }\n bindEvents() {\n this.document.addEventListener(\"pointerdown\", this.handlePointerdown, {\n capture: true\n });\n this.document.addEventListener(\"pointerup\", this.handlePointerup);\n this.document.addEventListener(\"click\", this.handleClick, {\n capture: true\n });\n this.document.addEventListener(\"keydown\", this.handleKeydown);\n this.document.addEventListener(\"scroll\", this.handleScroll, {\n capture: true\n });\n }\n closeOverlay(overlay) {\n const overlayIndex = this.stack.indexOf(overlay);\n if (overlayIndex > -1) {\n this.stack.splice(overlayIndex, 1);\n }\n overlay.open = false;\n this.manageBodyScroll();\n }\n /**\n * Manage body scroll blocking based on modal/page overlays\n */\n manageBodyScroll() {\n const shouldBlock = this.stack.some(\n (overlay) => overlay.type === \"modal\" || overlay.type === \"page\"\n );\n if (shouldBlock && !this.bodyScrollBlocked) {\n this.originalBodyOverflow = document.body.style.overflow || \"\";\n document.body.style.overflow = \"hidden\";\n this.bodyScrollBlocked = true;\n } else if (!shouldBlock && this.bodyScrollBlocked) {\n document.body.style.overflow = this.originalBodyOverflow;\n this.bodyScrollBlocked = false;\n }\n }\n /**\n * Get all open modal/page overlays from the stack.\n * Cached to avoid repeated filtering.\n */\n getModalOverlays() {\n return this.stack.filter(\n (overlay) => overlay.open && (overlay.type === \"modal\" || overlay.type === \"page\")\n );\n }\n /**\n * Check if an event path intersects with any modal overlay dialog.\n * This is the core logic for determining if a click/pointer event is inside a modal.\n *\n * @param eventPath {EventTarget[]} The composed path from the event\n * @param modalOverlays {Overlay[]} The modal overlays to check against\n * @returns {boolean} True if the event is inside any modal overlay\n */\n isEventInsideModal(eventPath, modalOverlays) {\n for (const overlay of modalOverlays) {\n if (eventPath.includes(overlay)) {\n return true;\n }\n const dialogEl = overlay.dialogEl;\n if (!dialogEl) {\n continue;\n }\n if (eventPath.includes(dialogEl)) {\n return true;\n }\n for (const element of eventPath) {\n if (element instanceof Node && dialogEl.contains(element)) {\n return true;\n }\n }\n }\n return false;\n }\n /**\n * Get an array of Overlays that all share the same trigger element.\n *\n * @param triggerElement {HTMLELement}\n * @returns {Overlay[]}\n */\n overlaysByTriggerElement(triggerElement) {\n return this.stack.filter(\n (overlay) => overlay.triggerElement === triggerElement\n );\n }\n /**\n * When overlays are added manage the open state of exisiting overlays appropriately:\n * - 'modal': should close other non-'modal' and non-'manual' overlays\n * - 'page': should close other non-'modal' and non-'manual' overlays\n * - 'auto': should close other 'auto' overlays and other 'hint' overlays, but not 'manual' overlays\n * - 'manual': shouldn't close other overlays\n * - 'hint': shouldn't close other overlays and give way to all other overlays on a trigger\n */\n add(overlay) {\n if (this.stack.includes(overlay)) {\n const overlayIndex = this.stack.indexOf(overlay);\n if (overlayIndex > -1) {\n this.stack.splice(overlayIndex, 1);\n this.stack.push(overlay);\n }\n return;\n }\n if (overlay.type === \"auto\" || overlay.type === \"modal\" || overlay.type === \"page\") {\n const queryPathEventName = \"sp-overlay-query-path\";\n const queryPathEvent = new Event(queryPathEventName, {\n composed: true,\n bubbles: true\n });\n overlay.addEventListener(\n queryPathEventName,\n (event) => {\n const path = event.composedPath();\n this.stack.forEach((overlayEl) => {\n const inPath = path.find((el) => el === overlayEl);\n if (!inPath && overlayEl.type !== \"manual\" && overlayEl.type !== \"modal\") {\n this.closeOverlay(overlayEl);\n }\n });\n },\n { once: true }\n );\n overlay.dispatchEvent(queryPathEvent);\n } else if (overlay.type === \"hint\") {\n const hasPrevious = this.stack.some((overlayEl) => {\n return overlayEl.type !== \"manual\" && overlayEl.triggerElement && overlayEl.triggerElement === overlay.triggerElement;\n });\n if (hasPrevious) {\n overlay.open = false;\n return;\n }\n this.stack.forEach((overlayEl) => {\n if (overlayEl.type === \"hint\") {\n this.closeOverlay(overlayEl);\n }\n });\n }\n requestAnimationFrame(() => {\n this.stack.push(overlay);\n overlay.addEventListener(\"beforetoggle\", this.handleBeforetoggle, {\n once: true\n });\n this.manageBodyScroll();\n });\n }\n remove(overlay) {\n this.closeOverlay(overlay);\n }\n}\nexport const overlayStack = new OverlayStack();\n//# sourceMappingURL=OverlayStack.dev.js.map\n",
|
|
22
|
-
"/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n",
|
|
23
|
-
"import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n",
|
|
24
|
-
"/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n",
|
|
25
|
-
"function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n",
|
|
26
|
-
"import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n",
|
|
27
|
-
"\"use strict\";\nimport {\n arrow,\n autoUpdate,\n computePosition,\n flip,\n offset,\n shift,\n size\n} from \"@floating-ui/dom\";\nimport { isWebKit } from \"@spectrum-web-components/shared\";\nfunction roundByDPR(num) {\n if (typeof num === \"undefined\") {\n return 0;\n }\n const dpr = window.devicePixelRatio || 1;\n return Math.round(num * dpr) / dpr;\n}\nconst REQUIRED_DISTANCE_TO_EDGE = 8;\nconst MIN_OVERLAY_HEIGHT = 100;\nconst getFallbackPlacements = (placement) => {\n var _a;\n const fallbacks = {\n left: [\"right\", \"bottom\", \"top\"],\n \"left-start\": [\"right-start\", \"bottom\", \"top\"],\n \"left-end\": [\"right-end\", \"bottom\", \"top\"],\n right: [\"left\", \"bottom\", \"top\"],\n \"right-start\": [\"left-start\", \"bottom\", \"top\"],\n \"right-end\": [\"left-end\", \"bottom\", \"top\"],\n top: [\"bottom\", \"left\", \"right\"],\n \"top-start\": [\"bottom-start\", \"left\", \"right\"],\n \"top-end\": [\"bottom-end\", \"left\", \"right\"],\n bottom: [\"top\", \"left\", \"right\"],\n \"bottom-start\": [\"top-start\", \"left\", \"right\"],\n \"bottom-end\": [\"top-end\", \"left\", \"right\"]\n };\n return (_a = fallbacks[placement]) != null ? _a : [placement];\n};\nexport const placementUpdatedSymbol = Symbol(\"placement updated\");\nexport class PlacementController {\n /**\n * Creates an instance of the PlacementController.\n *\n * @param {ReactiveElement & { elements: OpenableElement[] }} host - The host element that uses this controller.\n */\n constructor(host) {\n /**\n * A WeakMap to store the original placements of overlay elements.\n *\n * @private\n * @type {WeakMap<HTMLElement, Placement>}\n */\n this.originalPlacements = /* @__PURE__ */ new WeakMap();\n /**\n * Incremented whenever the active placement session ends (`cleanup`) or a\n * new session begins, so async `computePlacement` runs that started under an\n * older session do not write styles after teardown or across stacked\n * `placeOverlay` calls.\n *\n * @private\n */\n this.placementGeneration = 0;\n /**\n * Flag to allow or disallow placement updates.\n *\n * @type {boolean}\n */\n this.allowPlacementUpdate = false;\n /**\n * Closes the overlay if an ancestor element is updated.\n *\n * This method checks if placement updates are allowed and if the overlay type is not 'modal'.\n * If these conditions are met and a cleanup function is defined, it dispatches a 'close' event\n * on the target element to close the overlay.\n */\n this.closeForAncestorUpdate = () => {\n if (!this.allowPlacementUpdate && this.options.type !== \"modal\" && this.cleanup) {\n this.target.dispatchEvent(new Event(\"close\", { bubbles: true }));\n }\n this.allowPlacementUpdate = false;\n };\n /**\n * Updates the placement of the overlay.\n *\n * This method calls the computePlacement method to recalculate the overlay's position.\n *\n * @private\n */\n this.updatePlacement = () => {\n this.computePlacement();\n };\n /**\n * Resets the overlay's position.\n *\n * This method clears the overlay's position, forces a reflow, and recomputes the placement.\n */\n this.resetOverlayPosition = () => {\n if (!this.target || !this.options) {\n return;\n }\n this.clearOverlayPosition();\n this.host.offsetHeight;\n this.computePlacement();\n };\n this.host = host;\n this.host.addController(this);\n }\n /**\n * Places the overlay relative to the target element.\n *\n * This method sets up the necessary configurations and event listeners to manage the\n * positioning and constraints of the overlay element.\n *\n * @param {HTMLElement} [target=this.target] - The target element for the overlay.\n * @param {OverlayOptionsV1} [options=this.options] - The options for configuring the overlay placement.\n * @returns {Promise<void>} A promise that resolves when the overlay has been placed.\n */\n async placeOverlay(target = this.target, options = this.options) {\n var _a;\n (_a = this.cleanup) == null ? void 0 : _a.call(this);\n this.cleanup = void 0;\n this.target = target;\n this.options = options;\n if (!target || !options) {\n return;\n }\n const cleanupAncestorResize = autoUpdate(\n options.trigger,\n target,\n this.closeForAncestorUpdate,\n {\n ancestorResize: false,\n elementResize: false,\n layoutShift: false\n }\n );\n const cleanupElementResize = autoUpdate(\n options.trigger,\n target,\n this.updatePlacement,\n {\n ancestorScroll: false\n }\n );\n const visualViewport = window.visualViewport;\n let visualViewportRafId = 0;\n let visualViewportPlacementCancelled = false;\n const onVisualViewportChange = () => {\n if (visualViewportPlacementCancelled || visualViewportRafId) {\n return;\n }\n visualViewportRafId = requestAnimationFrame(() => {\n visualViewportRafId = 0;\n if (visualViewportPlacementCancelled) {\n return;\n }\n this.updatePlacement();\n });\n };\n if (visualViewport && isWebKit()) {\n visualViewport.addEventListener(\"resize\", onVisualViewportChange, {\n passive: true\n });\n visualViewport.addEventListener(\"scroll\", onVisualViewportChange, {\n passive: true\n });\n }\n this.cleanup = () => {\n var _a2;\n this.placementGeneration += 1;\n visualViewportPlacementCancelled = true;\n (_a2 = this.host.elements) == null ? void 0 : _a2.forEach((element) => {\n element.addEventListener(\n \"sp-closed\",\n () => {\n const placement = this.originalPlacements.get(element);\n if (placement) {\n element.setAttribute(\"placement\", placement);\n }\n this.originalPlacements.delete(element);\n },\n { once: true }\n );\n });\n cleanupAncestorResize();\n cleanupElementResize();\n if (visualViewport && isWebKit()) {\n visualViewport.removeEventListener(\"resize\", onVisualViewportChange);\n visualViewport.removeEventListener(\"scroll\", onVisualViewportChange);\n if (visualViewportRafId) {\n cancelAnimationFrame(visualViewportRafId);\n visualViewportRafId = 0;\n }\n }\n };\n }\n /**\n * Computes the placement of the overlay relative to the target element.\n *\n * This method calculates the necessary positioning and constraints for the overlay element\n * using various middleware functions. It updates the overlay's style and attributes based\n * on the computed position.\n *\n * @returns {Promise<void>} A promise that resolves when the placement has been computed.\n */\n async computePlacement() {\n var _a, _b;\n const { options, target } = this;\n const genAtStart = this.placementGeneration;\n const placementStillValid = () => this.host.open && this.placementGeneration === genAtStart && !!this.target && this.target === target;\n await (document.fonts ? document.fonts.ready : Promise.resolve());\n if (!placementStillValid()) {\n return;\n }\n if (isWebKit()) {\n await new Promise((resolve) => requestAnimationFrame(resolve));\n }\n if (!placementStillValid()) {\n return;\n }\n const flipMiddleware = !(options.trigger instanceof HTMLElement) ? flip({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n fallbackPlacements: getFallbackPlacements(options.placement)\n }) : flip();\n const [mainAxis = 0, crossAxis = 0] = Array.isArray(options == null ? void 0 : options.offset) ? options.offset : [options.offset, 0];\n const tipElement = (_a = this.host.elements.find(\n (el) => el.tipElement\n )) == null ? void 0 : _a.tipElement;\n const middleware = [\n offset({\n mainAxis,\n crossAxis\n }),\n shift({ padding: REQUIRED_DISTANCE_TO_EDGE }),\n flipMiddleware,\n size({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n apply: ({ availableWidth, availableHeight, rects: { floating } }) => {\n const maxHeight = Math.max(\n MIN_OVERLAY_HEIGHT,\n Math.floor(availableHeight)\n );\n const actualHeight = floating.height;\n this.initialHeight = !this.isConstrained ? actualHeight : this.initialHeight || actualHeight;\n this.isConstrained = actualHeight < this.initialHeight || maxHeight <= actualHeight;\n const appliedHeight = this.isConstrained ? `${maxHeight}px` : \"\";\n Object.assign(target.style, {\n maxWidth: `${Math.floor(availableWidth)}px`,\n maxHeight: appliedHeight\n });\n }\n }),\n ...tipElement ? [\n arrow({\n element: tipElement,\n padding: options.tipPadding || REQUIRED_DISTANCE_TO_EDGE\n })\n ] : []\n ];\n const { x, y, placement, middlewareData } = await computePosition(\n options.trigger,\n target,\n {\n placement: options.placement,\n middleware,\n strategy: \"fixed\"\n }\n );\n if (!placementStillValid()) {\n return;\n }\n let translateX = x;\n let translateY = y;\n const visualViewport = window.visualViewport;\n if (visualViewport && isWebKit()) {\n translateX -= visualViewport.offsetLeft;\n translateY -= visualViewport.offsetTop;\n }\n if (!placementStillValid()) {\n return;\n }\n Object.assign(target.style, {\n top: \"0px\",\n left: \"0px\",\n translate: `${roundByDPR(translateX)}px ${roundByDPR(translateY)}px`\n });\n target.setAttribute(\"actual-placement\", placement);\n (_b = this.host.elements) == null ? void 0 : _b.forEach((element) => {\n if (!this.originalPlacements.has(element)) {\n this.originalPlacements.set(\n element,\n element.getAttribute(\"placement\")\n );\n }\n element.setAttribute(\"placement\", placement);\n });\n if (!placementStillValid()) {\n return;\n }\n if (tipElement && middlewareData.arrow) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n Object.assign(tipElement.style, {\n top: placement.startsWith(\"right\") || placement.startsWith(\"left\") ? \"0px\" : \"\",\n left: placement.startsWith(\"bottom\") || placement.startsWith(\"top\") ? \"0px\" : \"\",\n translate: `${roundByDPR(arrowX)}px ${roundByDPR(arrowY)}px`\n });\n }\n }\n /**\n * Clears the overlay's position styles.\n *\n * This method removes the max-height and max-width styles from the target element,\n * and resets the initial height and constrained state of the overlay.\n */\n clearOverlayPosition() {\n if (!this.target) {\n return;\n }\n this.target.style.removeProperty(\"max-height\");\n this.target.style.removeProperty(\"max-width\");\n this.initialHeight = void 0;\n this.isConstrained = false;\n }\n /**\n * Lifecycle method called when the host element is connected to the DOM.\n *\n * This method sets up an event listener to reset the overlay's position when the 'sp-update-overlays' event is dispatched.\n */\n hostConnected() {\n document.addEventListener(\"sp-update-overlays\", this.resetOverlayPosition);\n }\n /**\n * Lifecycle method called when the host element is updated.\n *\n * This method cleans up resources if the overlay is not open.\n */\n hostUpdated() {\n var _a;\n if (!this.host.open) {\n (_a = this.cleanup) == null ? void 0 : _a.call(this);\n this.cleanup = void 0;\n }\n }\n /**\n * Lifecycle method called when the host element is disconnected from the DOM.\n *\n * This method removes the event listener and cleans up resources.\n */\n hostDisconnected() {\n var _a;\n (_a = this.cleanup) == null ? void 0 : _a.call(this);\n this.cleanup = void 0;\n document.removeEventListener(\n \"sp-update-overlays\",\n this.resetOverlayPosition\n );\n }\n}\n//# sourceMappingURL=PlacementController.dev.js.map\n",
|
|
28
|
-
"\"use strict\";\nexport function conditionAttributeWithoutId(el, attribute, ids) {\n const ariaDescribedby = el.getAttribute(attribute);\n let descriptors = ariaDescribedby ? ariaDescribedby.split(/\\s+/) : [];\n descriptors = descriptors.filter(\n (descriptor) => !ids.find((id) => descriptor === id)\n );\n if (descriptors.length) {\n el.setAttribute(attribute, descriptors.join(\" \"));\n } else {\n el.removeAttribute(attribute);\n }\n}\nexport function conditionAttributeWithId(el, attribute, id) {\n const ids = Array.isArray(id) ? id : [id];\n const ariaDescribedby = el.getAttribute(attribute);\n const descriptors = ariaDescribedby ? ariaDescribedby.split(/\\s+/) : [];\n const hadIds = ids.every((id2) => descriptors.indexOf(id2) > -1);\n if (hadIds) {\n return () => {\n return;\n };\n }\n descriptors.push(...ids);\n el.setAttribute(attribute, descriptors.join(\" \"));\n return () => conditionAttributeWithoutId(el, attribute, ids);\n}\n//# sourceMappingURL=condition-attribute-with-id.dev.js.map\n",
|
|
29
|
-
"\"use strict\";\nexport var InteractionTypes = /* @__PURE__ */ ((InteractionTypes2) => {\n InteractionTypes2[\"click\"] = \"click\";\n InteractionTypes2[\"hover\"] = \"hover\";\n InteractionTypes2[\"longpress\"] = \"longpress\";\n return InteractionTypes2;\n})(InteractionTypes || {});\nexport const lastInteractionType = Symbol(\"lastInteractionType\");\nexport class InteractionController {\n constructor(target, { overlay, isPersistent, handleOverlayReady }) {\n this.target = target;\n // Holds optimistic open state when an Overlay is not yet present\n this.isLazilyOpen = false;\n this.isPersistent = false;\n this.isPersistent = !!isPersistent;\n this.handleOverlayReady = handleOverlayReady;\n if (this.isPersistent) {\n this.init();\n }\n this.overlay = overlay;\n }\n get activelyOpening() {\n return false;\n }\n get open() {\n var _a, _b;\n return (_b = (_a = this.overlay) == null ? void 0 : _a.open) != null ? _b : this.isLazilyOpen;\n }\n /**\n * Set `open` against the associated Overlay lazily.\n */\n set open(open) {\n if (open === this.open) {\n return;\n }\n this.isLazilyOpen = open;\n if (this.overlay) {\n this.overlay.open = open;\n this.target[lastInteractionType] = this.type;\n return;\n }\n if (!open) {\n return;\n }\n customElements.whenDefined(\"sp-overlay\").then(async () => {\n const { Overlay } = await import(\"./Overlay.dev.js\");\n this.overlay = new Overlay();\n this.overlay.open = true;\n this.target[lastInteractionType] = this.type;\n });\n import(\"@spectrum-web-components/overlay/sp-overlay.js\");\n }\n get overlay() {\n return this._overlay;\n }\n set overlay(overlay) {\n var _a;\n if (!overlay) {\n return;\n }\n if (this._overlay === overlay) {\n return;\n }\n if (this._overlay) {\n this._overlay.removeController(this);\n }\n this._overlay = overlay;\n overlay.addController(this);\n this.initOverlay();\n this.prepareDescription(this.target);\n (_a = this.handleOverlayReady) == null ? void 0 : _a.call(this, overlay);\n }\n /**\n * Clears the overlay reference and properly cleans up the controller registration.\n * This is useful when the overlay needs to be recreated, such as when using\n * Lit's cache() directive with overlay triggers.\n */\n clearOverlay() {\n if (this._overlay) {\n this._overlay.removeController(this);\n }\n this._overlay = void 0;\n }\n prepareDescription(_) {\n }\n releaseDescription() {\n }\n shouldCompleteOpen() {\n }\n /* c8 ignore next 3 */\n init() {\n }\n /* c8 ignore next 3 */\n initOverlay() {\n }\n abort() {\n var _a;\n this.releaseDescription();\n (_a = this.abortController) == null ? void 0 : _a.abort();\n }\n hostConnected() {\n this.init();\n }\n hostDisconnected() {\n if (!this.isPersistent) {\n this.abort();\n }\n }\n}\n//# sourceMappingURL=InteractionController.dev.js.map\n",
|
|
30
|
-
"\"use strict\";\nimport { conditionAttributeWithId } from \"@spectrum-web-components/base/src/condition-attribute-with-id.js\";\nimport {\n isAndroid,\n isIOS\n} from \"@spectrum-web-components/shared/src/platform.js\";\nimport { randomID } from \"@spectrum-web-components/shared/src/random-id.js\";\nimport { noop } from \"./AbstractOverlay.dev.js\";\nimport {\n InteractionController,\n InteractionTypes\n} from \"./InteractionController.dev.js\";\nconst LONGPRESS_DURATION = 300;\nexport const LONGPRESS_INSTRUCTIONS = {\n touch: \"Double tap and long press for additional options\",\n keyboard: \"Press Space or Alt+Down Arrow for additional options\",\n mouse: \"Click and hold for additional options\"\n};\nexport class LongpressController extends InteractionController {\n constructor() {\n super(...arguments);\n this.type = InteractionTypes.longpress;\n this.longpressState = null;\n this.releaseDescription = noop;\n this.handlePointerup = () => {\n var _a;\n clearTimeout(this.timeout);\n if (!this.target) {\n return;\n }\n this.longpressState = ((_a = this.overlay) == null ? void 0 : _a.state) === \"opening\" ? \"pressed\" : null;\n document.removeEventListener(\"pointerup\", this.handlePointerup);\n document.removeEventListener(\"pointercancel\", this.handlePointerup);\n };\n }\n get activelyOpening() {\n return this.longpressState === \"opening\" || this.longpressState === \"pressed\";\n }\n handleLongpress() {\n this.open = true;\n this.longpressState = this.longpressState === \"potential\" ? \"opening\" : \"pressed\";\n }\n handlePointerdown(event) {\n if (!this.target) {\n return;\n }\n if (event.button !== 0) {\n return;\n }\n this.longpressState = \"potential\";\n document.addEventListener(\"pointerup\", this.handlePointerup);\n document.addEventListener(\"pointercancel\", this.handlePointerup);\n const triggerHandlesLongpress = \"holdAffordance\" in this.target;\n if (triggerHandlesLongpress) {\n return;\n }\n this.timeout = setTimeout(() => {\n if (!this.target) {\n return;\n }\n this.target.dispatchEvent(\n new CustomEvent(\"longpress\", {\n bubbles: true,\n composed: true,\n detail: {\n source: \"pointer\"\n }\n })\n );\n }, LONGPRESS_DURATION);\n }\n handleKeydown(event) {\n const { code, altKey } = event;\n if (altKey && code === \"ArrowDown\") {\n event.stopImmediatePropagation();\n }\n }\n handleKeyup(event) {\n const { code, altKey } = event;\n if (code === \"Space\" || altKey && code === \"ArrowDown\") {\n if (!this.target) {\n return;\n }\n event.stopPropagation();\n this.target.dispatchEvent(\n new CustomEvent(\"longpress\", {\n bubbles: true,\n composed: true,\n detail: {\n source: \"keyboard\"\n }\n })\n );\n setTimeout(() => {\n this.longpressState = null;\n });\n }\n }\n prepareDescription(trigger) {\n if (\n // do not reapply until target is recycled\n this.releaseDescription !== noop || // require \"longpress content\" to apply relationship\n !this.overlay || !this.overlay.elements.length\n ) {\n return;\n }\n const overlay = this.overlay;\n if (overlay.describeTrigger === \"none\") {\n return;\n }\n const longpressDescription = document.createElement(\"div\");\n longpressDescription.id = `longpress-describedby-descriptor-${randomID()}`;\n const messageType = isIOS() || isAndroid() ? \"touch\" : \"keyboard\";\n longpressDescription.textContent = LONGPRESS_INSTRUCTIONS[messageType];\n longpressDescription.slot = \"longpress-describedby-descriptor\";\n const triggerParent = trigger.getRootNode();\n const overlayParent = this.overlay.getRootNode();\n if (triggerParent === overlayParent) {\n this.overlay.append(longpressDescription);\n } else {\n longpressDescription.hidden = !(\"host\" in triggerParent);\n trigger.insertAdjacentElement(\"afterend\", longpressDescription);\n }\n const releaseDescription = conditionAttributeWithId(\n trigger,\n \"aria-describedby\",\n [longpressDescription.id]\n );\n this.releaseDescription = () => {\n releaseDescription();\n longpressDescription.remove();\n this.releaseDescription = noop;\n };\n }\n shouldCompleteOpen() {\n this.longpressState = this.longpressState === \"pressed\" ? null : this.longpressState;\n }\n init() {\n var _a;\n (_a = this.abortController) == null ? void 0 : _a.abort();\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n this.target.addEventListener(\"longpress\", () => this.handleLongpress(), {\n signal\n });\n this.target.addEventListener(\n \"pointerdown\",\n (event) => this.handlePointerdown(event),\n { signal }\n );\n this.prepareDescription(this.target);\n if (this.target.holdAffordance) {\n return;\n }\n this.target.addEventListener(\n \"keydown\",\n (event) => this.handleKeydown(event),\n { signal }\n );\n this.target.addEventListener(\n \"keyup\",\n (event) => this.handleKeyup(event),\n { signal }\n );\n }\n}\n//# sourceMappingURL=LongpressController.dev.js.map\n",
|
|
31
|
-
"\"use strict\";import{css as a}from\"@spectrum-web-components/base\";const o=a`\n :host{pointer-events:none;--swc-overlay-animation-distance:var(--spectrum-spacing-100);display:contents}:host(:has(>sp-tooltip)){--swc-overlay-animation-distance:var(--spectrum-tooltip-animation-distance)}.dialog{box-sizing:border-box;--sp-overlay-open:true;background:0 0;border:0;max-width:calc(100vw - 16px);height:auto;max-height:calc(100dvh - 16px);margin:0;padding:0;display:flex;position:fixed;inset:0 auto auto 0;overflow:visible;opacity:1!important}.dialog:not([is-visible]){display:none}.dialog:focus{outline:none}dialog:modal{--mod-popover-filter:var(--spectrum-popover-filter)}:host(:not([open])) .dialog{--sp-overlay-open:false}.dialog::backdrop{display:none}.dialog:before{content:\"\";position:absolute;inset:-999em;pointer-events:auto!important}.dialog:not(.not-immediately-closable):before{display:none}.dialog>div{width:100%}::slotted(*){pointer-events:auto;visibility:visible!important}::slotted(sp-popover){position:static}.dialog:not([actual-placement])[placement*=top]{padding-block:var(--swc-overlay-animation-distance);margin-top:var(--swc-overlay-animation-distance)}.dialog:not([actual-placement])[placement*=right]{padding-inline:var(--swc-overlay-animation-distance);margin-left:calc(-1*var(--swc-overlay-animation-distance))}.dialog:not([actual-placement])[placement*=bottom]{padding-block:var(--swc-overlay-animation-distance);margin-top:calc(-1*var(--swc-overlay-animation-distance))}.dialog:not([actual-placement])[placement*=left]{padding-inline:var(--swc-overlay-animation-distance);margin-left:var(--swc-overlay-animation-distance)}.dialog[actual-placement*=top]{padding-block:var(--swc-overlay-animation-distance);margin-top:var(--swc-overlay-animation-distance)}.dialog[actual-placement*=right]{padding-inline:var(--swc-overlay-animation-distance);margin-left:calc(-1*var(--swc-overlay-animation-distance))}.dialog[actual-placement*=bottom]{padding-block:var(--swc-overlay-animation-distance);margin-top:calc(-1*var(--swc-overlay-animation-distance))}.dialog[actual-placement*=left]{padding-inline:var(--swc-overlay-animation-distance);margin-left:var(--swc-overlay-animation-distance)}slot[name=longpress-describedby-descriptor]{display:none}.modal-backdrop{z-index:999998;pointer-events:auto;background:0 0;position:fixed;inset:0}@supports selector(:open){.dialog{opacity:0}.dialog:open{opacity:1;--mod-popover-filter:var(--spectrum-popover-filter)}}@supports selector(:popover-open){.dialog{opacity:0}.dialog:popover-open{opacity:1;--mod-popover-filter:var(--spectrum-popover-filter)}}@supports (overlay:auto){.dialog{transition:all var(--mod-overlay-animation-duration,var(--spectrum-animation-duration-100,.13s)),translate 0s,display var(--mod-overlay-animation-duration,var(--spectrum-animation-duration-100,.13s));transition-behavior:allow-discrete;display:none}.dialog:popover-open{display:flex}}@supports (not selector(:open)) and (not selector(:popover-open)){:host:not([open]) .dialog{pointer-events:none}.dialog[actual-placement]{z-index:calc(var(--swc-overlay-z-index-base,1000) + var(--swc-overlay-open-count))}}\n`;export default o;\n//# sourceMappingURL=overlay.css.js.map\n",
|
|
32
|
-
"\"use strict\";\nexport class SlottableRequestEvent extends Event {\n constructor(name, data, key) {\n var _a;\n super(\"slottable-request\", {\n bubbles: false,\n cancelable: true,\n composed: false\n });\n this.name = name;\n this.data = data;\n this.slotName = key !== void 0 ? `${name}.${key}` : name;\n if ((_a = window.__swc) == null ? void 0 : _a.warn) {\n window.__swc.warn(\n void 0,\n `\\u26A0\\uFE0F WARNING \\u26A0\\uFE0F : \\`slottable-request\\` events are experimental and there is no guarantees behind usage of them in an application!! Their shape and presence within the library could be changed at anytime.\n\nLearn more about the protocol these events are based on below:`,\n \"https://github.com/webcomponents-cg/community-protocols/pull/45\",\n {\n level: \"high\",\n type: \"api\"\n }\n );\n }\n }\n}\nexport const removeSlottableRequest = Symbol(\"remove-slottable-request\");\n//# sourceMappingURL=slottable-request-event.dev.js.map\n",
|
|
33
|
-
"\"use strict\";\nimport {\n InteractionController,\n InteractionTypes\n} from \"./InteractionController.dev.js\";\nexport class ClickController extends InteractionController {\n constructor() {\n super(...arguments);\n this.type = InteractionTypes.click;\n /**\n * An overlay with a `click` interaction should not close on click `triggerElement`.\n * When a click is initiated (`pointerdown`), apply `preventNextToggle` when the\n * overlay is `open` to prevent from toggling the overlay when the click event\n * propagates later in the interaction.\n */\n this.preventNextToggle = false;\n }\n handleClick() {\n if (!this.preventNextToggle) {\n this.open = !this.open;\n }\n this.preventNextToggle = false;\n }\n handlePointerdown() {\n this.preventNextToggle = this.open;\n }\n init() {\n var _a;\n (_a = this.abortController) == null ? void 0 : _a.abort();\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n this.target.addEventListener(\"click\", () => this.handleClick(), {\n signal\n });\n this.target.addEventListener(\n \"pointerdown\",\n () => this.handlePointerdown(),\n { signal }\n );\n }\n}\n//# sourceMappingURL=ClickController.dev.js.map\n",
|
|
34
|
-
"\"use strict\";\nimport { conditionAttributeWithId } from \"@spectrum-web-components/base/src/condition-attribute-with-id.js\";\nimport { randomID } from \"@spectrum-web-components/shared/src/random-id.js\";\nimport { noop } from \"./AbstractOverlay.dev.js\";\nimport {\n InteractionController,\n InteractionTypes,\n lastInteractionType\n} from \"./InteractionController.dev.js\";\nexport class HoverController extends InteractionController {\n constructor() {\n super(...arguments);\n this.type = InteractionTypes.hover;\n this.elementIds = [];\n this.targetFocused = false;\n this.hovering = false;\n this.overlayFocused = false;\n }\n handleKeyup(event) {\n if (event.code === \"Tab\") {\n this.open = true;\n } else if (event.code === \"Escape\") {\n if (this.open) {\n event.preventDefault();\n event.stopPropagation();\n this.open = false;\n if (this.target) {\n this.target.focus();\n }\n }\n }\n }\n handleTargetFocusin() {\n if (!this.target.matches(\":focus-visible\")) {\n return;\n }\n if (this.target[lastInteractionType] === InteractionTypes.click) {\n return;\n }\n this.open = true;\n this.targetFocused = true;\n }\n handleTargetFocusout() {\n this.targetFocused = false;\n if (this.hovering) {\n return;\n }\n this.doFocusleave();\n }\n clearCloseTimeout() {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = void 0;\n }\n }\n handleTargetPointerenter() {\n var _a;\n this.clearCloseTimeout();\n if ((_a = this.overlay) == null ? void 0 : _a.disabled) {\n return;\n }\n this.open = true;\n this.hovering = true;\n }\n handleTargetPointerleave() {\n this.doPointerleave();\n }\n // set a timeout once the pointer enters and the overlay is shown\n // give the user time to enter the overlay\n handleHostPointerenter() {\n this.clearCloseTimeout();\n }\n handleHostPointerleave() {\n this.doPointerleave();\n }\n handleOverlayFocusin() {\n this.overlayFocused = true;\n this.clearCloseTimeout();\n }\n handleOverlayFocusout() {\n this.overlayFocused = false;\n if (this.hovering) {\n return;\n }\n if (this.targetFocused && this.target.matches(\":focus-visible\")) {\n return;\n }\n this.doFocusleave();\n }\n prepareDescription() {\n if (!this.overlay || !this.overlay.elements.length) {\n return;\n }\n const overlay = this.overlay;\n if (overlay.describeTrigger === \"none\") {\n return;\n }\n const triggerRoot = this.target.getRootNode();\n const contentRoot = this.overlay.elements[0].getRootNode();\n const overlayRoot = this.overlay.getRootNode();\n if (triggerRoot === overlayRoot) {\n this.prepareOverlayRelativeDescription();\n } else if (triggerRoot === contentRoot) {\n this.prepareContentRelativeDescription();\n }\n }\n prepareOverlayRelativeDescription() {\n if (!this.overlay) {\n return;\n }\n const releaseDescription = conditionAttributeWithId(\n this.target,\n \"aria-describedby\",\n [this.overlay.id]\n );\n this.releaseDescription = () => {\n releaseDescription();\n this.releaseDescription = noop;\n };\n }\n prepareContentRelativeDescription() {\n if (!this.overlay) {\n return;\n }\n const overlay = this.overlay;\n const elementIds = [];\n const appliedIds = overlay.elements.map((el) => {\n elementIds.push(el.id);\n if (!el.id) {\n el.id = `${overlay.tagName.toLowerCase()}-helper-${randomID()}`;\n }\n return el.id;\n });\n this.elementIds = elementIds;\n const releaseDescription = conditionAttributeWithId(\n this.target,\n \"aria-describedby\",\n appliedIds\n );\n this.releaseDescription = () => {\n releaseDescription();\n overlay.elements.map((el, index) => {\n el.id = this.elementIds[index];\n });\n this.releaseDescription = noop;\n };\n }\n scheduleClose() {\n this.hoverTimeout = setTimeout(() => {\n this.open = false;\n }, 300);\n }\n doPointerleave() {\n this.hovering = false;\n const triggerElement = this.target;\n if (this.targetFocused && triggerElement.matches(\":focus-visible\")) {\n return;\n }\n if (this.overlayFocused) {\n return;\n }\n this.scheduleClose();\n }\n doFocusleave() {\n this.clearCloseTimeout();\n if (!this.targetFocused && !this.overlayFocused && !this.hovering) {\n this.scheduleClose();\n }\n }\n init() {\n var _a;\n (_a = this.abortController) == null ? void 0 : _a.abort();\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n this.target.addEventListener(\"keyup\", (event) => this.handleKeyup(event), {\n signal\n });\n this.target.addEventListener(\"focusin\", () => this.handleTargetFocusin(), {\n signal\n });\n this.target.addEventListener(\n \"focusout\",\n () => this.handleTargetFocusout(),\n { signal }\n );\n this.target.addEventListener(\n \"pointerenter\",\n () => this.handleTargetPointerenter(),\n { signal }\n );\n this.target.addEventListener(\n \"pointerleave\",\n () => this.handleTargetPointerleave(),\n { signal }\n );\n if (this.overlay) {\n this.initOverlay();\n }\n }\n initOverlay() {\n if (!this.abortController || !this.overlay) {\n return;\n }\n const { signal } = this.abortController;\n this.overlay.addEventListener(\n \"pointerenter\",\n () => this.handleHostPointerenter(),\n { signal }\n );\n this.overlay.addEventListener(\n \"pointerleave\",\n () => this.handleHostPointerleave(),\n { signal }\n );\n this.overlay.addEventListener(\n \"focusin\",\n () => this.handleOverlayFocusin(),\n { signal }\n );\n this.overlay.addEventListener(\n \"focusout\",\n () => this.handleOverlayFocusout(),\n { signal }\n );\n this.overlay.addEventListener(\"keyup\", (event) => this.handleKeyup(event), {\n signal\n });\n }\n}\n//# sourceMappingURL=HoverController.dev.js.map\n",
|
|
35
|
-
"\"use strict\";\nimport { ClickController } from \"./ClickController.dev.js\";\nimport { HoverController } from \"./HoverController.dev.js\";\nimport { LongpressController } from \"./LongpressController.dev.js\";\nexport const strategies = {\n click: ClickController,\n longpress: LongpressController,\n hover: HoverController\n};\n//# sourceMappingURL=strategies.dev.js.map\n",
|
|
36
|
-
"\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\nimport {\n html,\n nothing\n} from \"@spectrum-web-components/base\";\nimport {\n property,\n query,\n queryAssignedElements,\n state\n} from \"@spectrum-web-components/base/src/decorators.js\";\nimport {\n ifDefined,\n styleMap\n} from \"@spectrum-web-components/base/src/directives.js\";\nimport {\n ElementResolutionController,\n elementResolverUpdatedSymbol\n} from \"@spectrum-web-components/reactive-controllers/src/ElementResolution.js\";\nimport { randomID } from \"@spectrum-web-components/shared/src/random-id.js\";\nimport { AbstractOverlay, nextFrame } from \"./AbstractOverlay.dev.js\";\nimport { OverlayNoPopover } from \"./OverlayNoPopover.dev.js\";\nimport { OverlayPopover } from \"./OverlayPopover.dev.js\";\nimport { overlayStack } from \"./OverlayStack.dev.js\";\nimport { PlacementController } from \"./PlacementController.dev.js\";\nimport { VirtualTrigger } from \"./VirtualTrigger.dev.js\";\nexport { LONGPRESS_INSTRUCTIONS } from \"./LongpressController.dev.js\";\nimport styles from \"./overlay.css.js\";\nimport {\n removeSlottableRequest,\n SlottableRequestEvent\n} from \"./slottable-request-event.dev.js\";\nimport { strategies } from \"./strategies.dev.js\";\nconst browserSupportsPopover = \"showPopover\" in document.createElement(\"div\");\nlet ComputedOverlayBase = OverlayPopover(AbstractOverlay);\nif (!browserSupportsPopover) {\n ComputedOverlayBase = OverlayNoPopover(AbstractOverlay);\n}\nconst _Overlay = class _Overlay extends ComputedOverlayBase {\n constructor() {\n super(...arguments);\n this._delayed = false;\n this._disabled = false;\n this.offset = 0;\n this._open = false;\n /**\n * The state in which the last `request-slottable` event was dispatched.\n *\n * This property ensures that overlays do not dispatch the same state twice in a row.\n *\n * @type {boolean}\n * @default false\n */\n this.lastRequestSlottableState = false;\n this.receivesFocus = \"auto\";\n this.allowOutsideClick = false;\n this._state = \"closed\";\n this.triggerElement = null;\n this.describeTrigger = \"auto\";\n this.type = \"auto\";\n /**\n * Tracks whether the overlay was previously open.\n * This is used to restore the open state when re-enabling the overlay.\n *\n * @type {boolean}\n * @default false\n */\n this.wasOpen = false;\n /**\n * Focus trap to keep focus within the dialog\n *\n * @private\n */\n this._focusTrap = null;\n /**\n * Handles the focus out event to close the overlay if the focus moves outside of it.\n *\n * This method ensures that the overlay is closed when the focus moves to an element\n * outside of the overlay, unless the focus is moved to a related element.\n *\n * @private\n * @param {FocusEvent} event - The focus out event.\n */\n this.closeOnFocusOut = (event) => {\n if (!event.relatedTarget) {\n return;\n }\n const relationEvent = new Event(\"overlay-relation-query\", {\n bubbles: true,\n composed: true\n });\n event.relatedTarget.addEventListener(relationEvent.type, (event2) => {\n const path = event2.composedPath();\n const isWithinOverlay = path.some((el) => el === this);\n if (!isWithinOverlay) {\n this.open = false;\n }\n });\n event.relatedTarget.dispatchEvent(relationEvent);\n };\n this.closeOnCancelEvent = () => {\n this.open = false;\n };\n }\n get delayed() {\n const lastElement = this.elements[this.elements.length - 1];\n return (lastElement == null ? void 0 : lastElement.hasAttribute(\"delayed\")) || this._delayed;\n }\n set delayed(delayed) {\n this._delayed = delayed;\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(disabled) {\n var _a;\n this._disabled = disabled;\n if (disabled) {\n (_a = this.strategy) == null ? void 0 : _a.abort();\n this.wasOpen = this.open;\n this.open = false;\n } else {\n this.bindEvents();\n this.open = this.open || this.wasOpen;\n this.wasOpen = false;\n }\n }\n /**\n * Determines if the overlay has a non-virtual trigger element.\n *\n * @returns {boolean} `true` if the trigger element is not a virtual trigger, otherwise `false`.\n */\n get hasNonVirtualTrigger() {\n return !!this.triggerElement && !(this.triggerElement instanceof VirtualTrigger);\n }\n /**\n * Provides an instance of the `PlacementController` for managing the positioning\n * of the overlay relative to its trigger element.\n *\n * If the `PlacementController` instance does not already exist, it is created and\n * assigned to the `_placementController` property.\n *\n * @protected\n * @returns {PlacementController} The `PlacementController` instance.\n */\n get placementController() {\n if (!this._placementController) {\n this._placementController = new PlacementController(this);\n }\n return this._placementController;\n }\n get open() {\n return this._open;\n }\n set open(open) {\n var _a;\n if (open && this.disabled) {\n return;\n }\n if (open === this.open) {\n return;\n }\n if (((_a = this.strategy) == null ? void 0 : _a.activelyOpening) && !open) {\n return;\n }\n this._open = open;\n if (this.open) {\n _Overlay.openCount += 1;\n }\n this.requestUpdate(\"open\", !this.open);\n if (this.open) {\n this.requestSlottable();\n }\n }\n get state() {\n return this._state;\n }\n set state(state2) {\n var _a;\n if (state2 === this.state) {\n return;\n }\n const oldState = this.state;\n this._state = state2;\n if (this.state === \"opened\" || this.state === \"closed\") {\n (_a = this.strategy) == null ? void 0 : _a.shouldCompleteOpen();\n }\n this.requestUpdate(\"state\", oldState);\n }\n /**\n * Provides an instance of the `ElementResolutionController` for managing the element\n * that the overlay should be associated with. If the instance does not already exist,\n * it is created and assigned to the `_elementResolver` property.\n *\n * @protected\n * @returns {ElementResolutionController} The `ElementResolutionController` instance.\n */\n get elementResolver() {\n if (!this._elementResolver) {\n this._elementResolver = new ElementResolutionController(this);\n }\n return this._elementResolver;\n }\n /**\n * Determines the value for the popover attribute based on the overlay type.\n *\n * @private\n * @returns {'auto' | 'manual' | undefined} The popover value or undefined if not applicable.\n */\n get popoverValue() {\n const hasPopoverAttribute = \"popover\" in this;\n if (!hasPopoverAttribute) {\n return void 0;\n }\n switch (this.type) {\n case \"modal\":\n return \"manual\";\n case \"page\":\n return \"manual\";\n case \"hint\":\n return \"manual\";\n default:\n return this.type;\n }\n }\n /**\n * Determines if the overlay requires positioning based on its type and state.\n *\n * @protected\n * @returns {boolean} True if the overlay requires positioning, otherwise false.\n */\n get requiresPositioning() {\n if (this.type === \"page\" || !this.open) {\n return false;\n }\n if (!this.triggerElement || !this.placement && this.type !== \"hint\") {\n return false;\n }\n return true;\n }\n /**\n * Determines if the overlay needs a modal backdrop to block external clicks.\n * Only page overlays need the backdrop since they don't have light dismiss.\n * Modal overlays use popover=\"manual\" for stacking and handle light dismiss\n * via handlePointerup in OverlayStack.\n */\n get needsModalBackdrop() {\n return this.open && (this.type === \"modal\" || this.type === \"page\");\n }\n /**\n * Manages the positioning of the overlay relative to its trigger element.\n *\n * This method calculates the necessary parameters for positioning the overlay,\n * such as offset, placement, and tip padding, and then delegates the actual\n * positioning to the `PlacementController`.\n *\n * @protected\n * @override\n */\n managePosition() {\n if (!this.requiresPositioning || !this.open) {\n return;\n }\n const offset = this.offset || 0;\n const trigger = this.triggerElement;\n const placement = this.placement || \"right\";\n const tipPadding = this.tipPadding;\n this.placementController.placeOverlay(this.dialogEl, {\n offset,\n placement,\n tipPadding,\n trigger,\n type: this.type\n });\n }\n /**\n * Manages the process of opening the popover.\n *\n * This method handles the necessary steps to open the popover, including managing delays,\n * ensuring the popover is in the DOM, making transitions, and applying focus.\n *\n * @protected\n * @override\n * @returns {Promise<void>} A promise that resolves when the popover has been fully opened.\n */\n async managePopoverOpen() {\n super.managePopoverOpen();\n const targetOpenState = this.open;\n if (this.open !== targetOpenState) {\n return;\n }\n await this.manageDelay(targetOpenState);\n if (this.open !== targetOpenState) {\n return;\n }\n if (this.triggerInteraction === \"longpress\") {\n await nextFrame();\n }\n await this.ensureOnDOM(targetOpenState);\n if (this.open !== targetOpenState) {\n return;\n }\n const focusEl = await this.makeTransition(targetOpenState);\n if (this.open !== targetOpenState) {\n return;\n }\n if (targetOpenState) {\n const focusTrap = await import(\"focus-trap\");\n const initialFocus = this.receivesFocus === \"false\" ? false : focusEl || void 0;\n this._focusTrap = focusTrap.createFocusTrap(this.dialogEl, {\n initialFocus,\n tabbableOptions: {\n getShadowRoot: true\n },\n fallbackFocus: () => {\n this.dialogEl.setAttribute(\"tabIndex\", \"-1\");\n return this.dialogEl;\n },\n // disable escape key capture to close the overlay, the focus-trap library captures it otherwise\n escapeDeactivates: false,\n allowOutsideClick: this.allowOutsideClick\n });\n if (this.type === \"modal\" || this.type === \"page\") {\n this._focusTrap.activate();\n }\n }\n await this.applyFocus(targetOpenState, focusEl);\n }\n /**\n * Applies focus to the appropriate element after the popover has been opened.\n *\n * This method handles the focus management for the overlay, ensuring that the correct\n * element receives focus based on the overlay's type and state.\n *\n * @protected\n * @override\n * @param {boolean} targetOpenState - The target open state of the overlay.\n * @param {HTMLElement | null} focusEl - The element to focus after opening the popover.\n * @returns {Promise<void>} A promise that resolves when the focus has been applied.\n */\n async applyFocus(targetOpenState, focusEl) {\n if (this.receivesFocus === \"false\" || this.type === \"hint\") {\n return;\n }\n await nextFrame();\n await nextFrame();\n if (targetOpenState === this.open && !this.open) {\n if (this.hasNonVirtualTrigger && this.contains(this.getRootNode().activeElement)) {\n this.triggerElement.focus();\n }\n return;\n }\n focusEl == null ? void 0 : focusEl.focus();\n }\n /**\n * Returns focus to the trigger element if the overlay is closed.\n *\n * This method ensures that focus is returned to the trigger element when the overlay is closed,\n * unless the overlay is of type \"hint\" or the focus is already outside the overlay.\n *\n * @protected\n * @override\n */\n returnFocus() {\n var _a;\n if (this.open || this.type === \"hint\") {\n return;\n }\n const getAncestors = () => {\n var _a2, _b;\n const ancestors = [];\n let currentNode = document.activeElement;\n while ((_a2 = currentNode == null ? void 0 : currentNode.shadowRoot) == null ? void 0 : _a2.activeElement) {\n currentNode = currentNode.shadowRoot.activeElement;\n }\n while (currentNode) {\n const ancestor = currentNode.assignedSlot || currentNode.parentElement || ((_b = currentNode.getRootNode()) == null ? void 0 : _b.host);\n if (ancestor) {\n ancestors.push(ancestor);\n }\n currentNode = ancestor;\n }\n return ancestors;\n };\n if (this.receivesFocus !== \"false\" && !!((_a = this.triggerElement) == null ? void 0 : _a.focus) && (this.contains(this.getRootNode().activeElement) || getAncestors().includes(this) || // eslint-disable-next-line swc/document-active-element\n document.activeElement === document.body)) {\n this.triggerElement.focus();\n }\n }\n /**\n * Manages the process of opening or closing the overlay.\n *\n * This method handles the necessary steps to open or close the overlay, including updating the state,\n * managing the overlay stack, and handling focus events.\n *\n * @protected\n * @param {boolean} oldOpen - The previous open state of the overlay.\n * @returns {Promise<void>} A promise that resolves when the overlay has been fully managed.\n */\n async manageOpen(oldOpen) {\n var _a;\n if (!this.isConnected && this.open) {\n return;\n }\n if (!this.hasUpdated) {\n await this.updateComplete;\n }\n if (this.open) {\n overlayStack.add(this);\n if (this.willPreventClose) {\n document.addEventListener(\n \"pointerup\",\n () => {\n this.dialogEl.classList.toggle(\"not-immediately-closable\", false);\n this.willPreventClose = false;\n },\n { once: true }\n );\n this.dialogEl.classList.toggle(\"not-immediately-closable\", true);\n }\n } else {\n if (oldOpen) {\n (_a = this._focusTrap) == null ? void 0 : _a.deactivate();\n this._focusTrap = null;\n this.dispose();\n }\n overlayStack.remove(this);\n }\n if (this.open && this.state !== \"opened\") {\n this.state = \"opening\";\n } else if (!this.open && this.state !== \"closed\") {\n this.state = \"closing\";\n }\n this.managePopoverOpen();\n const listenerRoot = this.getRootNode();\n if (this.type === \"auto\") {\n if (this.open) {\n listenerRoot.addEventListener(\"focusout\", this.closeOnFocusOut, {\n capture: true\n });\n } else {\n listenerRoot.removeEventListener(\"focusout\", this.closeOnFocusOut, {\n capture: true\n });\n }\n }\n if (this.type === \"modal\" || this.type === \"page\") {\n if (this.open) {\n listenerRoot.addEventListener(\"cancel\", this.closeOnCancelEvent, {\n capture: true\n });\n } else {\n listenerRoot.removeEventListener(\"cancel\", this.closeOnCancelEvent, {\n capture: true\n });\n }\n }\n }\n /**\n * Binds event handling strategies to the overlay based on the specified trigger interaction.\n *\n * This method sets up the appropriate event handling strategy for the overlay, ensuring that\n * it responds correctly to user interactions such as clicks, hovers, or long presses.\n *\n * @protected\n */\n bindEvents() {\n var _a;\n (_a = this.strategy) == null ? void 0 : _a.abort();\n this.strategy = void 0;\n if (!this.hasNonVirtualTrigger) {\n return;\n }\n if (!this.triggerInteraction) {\n return;\n }\n this.strategy = new strategies[this.triggerInteraction](\n this.triggerElement,\n {\n overlay: this\n }\n );\n }\n /**\n * Handles the `beforetoggle` event to manage the overlay's state.\n *\n * This method checks the new state of the event and calls `handleBrowserClose`\n * if the new state is not 'open'.\n *\n * @protected\n * @param {Event & { newState: string }} event - The `beforetoggle` event with the new state.\n */\n handleBeforetoggle(event) {\n if (event.newState !== \"open\") {\n this.handleBrowserClose(event);\n }\n }\n /**\n * Handles the browser's close event to manage the overlay's state.\n *\n * This method stops the propagation of the event and closes the overlay if it is not\n * actively opening. If the overlay is actively opening, it calls `manuallyKeepOpen`.\n *\n * @protected\n * @param {Event} event - The browser's close event.\n */\n handleBrowserClose(event) {\n var _a;\n event.stopPropagation();\n if (!((_a = this.strategy) == null ? void 0 : _a.activelyOpening)) {\n this.open = false;\n return;\n }\n this.manuallyKeepOpen();\n }\n /**\n * Manually keeps the overlay open.\n *\n * This method sets the overlay to open, allows placement updates, and manages the open state.\n *\n * @public\n * @override\n */\n manuallyKeepOpen() {\n this.open = true;\n this.placementController.allowPlacementUpdate = true;\n this.manageOpen(false);\n }\n /**\n * Handles the `slotchange` event to manage the overlay's state.\n *\n * This method checks if there are any elements in the slot. If there are no elements,\n * it releases the description from the strategy. If there are elements and the trigger\n * is non-virtual, it prepares the description for the trigger element.\n *\n * @protected\n */\n handleSlotchange() {\n var _a, _b;\n if (!this.elements.length) {\n (_a = this.strategy) == null ? void 0 : _a.releaseDescription();\n } else if (this.hasNonVirtualTrigger) {\n (_b = this.strategy) == null ? void 0 : _b.prepareDescription(this.triggerElement);\n }\n }\n /**\n * Handles the 'close' event to update the 'open' property.\n *\n * @private\n */\n handleClose() {\n this.open = false;\n }\n /**\n * Determines whether the overlay should prevent closing.\n *\n * This method checks the `willPreventClose` flag and resets it to `false`.\n * It returns the value of the `willPreventClose` flag.\n *\n * @public\n * @returns {boolean} `true` if the overlay should prevent closing, otherwise `false`.\n */\n shouldPreventClose() {\n const shouldPreventClose = this.willPreventClose;\n this.willPreventClose = false;\n return shouldPreventClose;\n }\n /**\n * Requests slottable content for the overlay.\n *\n * This method dispatches a `SlottableRequestEvent` to request or remove slottable content\n * based on the current open state of the overlay. It ensures that the same state is not\n * dispatched twice in a row.\n *\n * @protected\n * @override\n */\n requestSlottable() {\n if (this.lastRequestSlottableState === this.open) {\n return;\n }\n if (!this.open) {\n document.body.offsetHeight;\n }\n this.dispatchEvent(\n new SlottableRequestEvent(\n \"overlay-content\",\n this.open ? {} : removeSlottableRequest\n )\n );\n this.lastRequestSlottableState = this.open;\n }\n /**\n * Lifecycle method called before the component updates.\n *\n * This method handles various tasks before the component updates, such as setting an ID,\n * managing the open state, resolving the trigger element, and binding events.\n *\n * @override\n * @param {PropertyValues} changes - The properties that have changed.\n */\n willUpdate(changes) {\n var _a;\n if (!this.hasAttribute(\"id\")) {\n this.setAttribute(\"id\", `${this.tagName.toLowerCase()}-${randomID()}`);\n }\n if (changes.has(\"allowOutsideClick\") && this.allowOutsideClick) {\n if (true) {\n window.__swc.warn(\n this,\n `The \"allow-outside-click\" attribute on <${this.localName}> has been deprecated and will be removed in a future release. We do not recommend using this attribute for accessibility reasons. It allows clicks outside the overlay to close it, which can cause unexpected behavior and accessibility issues.`,\n \"https://opensource.adobe.com/spectrum-web-components/components/overlay/\",\n { level: \"deprecation\" }\n );\n } else {\n console.warn(\n `[${this.localName}] The \"allow-outside-click\" attribute has been deprecated and will be removed in a future release. We do not recommend using this attribute for accessibility reasons. It allows clicks outside the overlay to close it, which can cause unexpected behavior and accessibility issues.`\n );\n }\n }\n if (changes.has(\"open\") && (this.hasUpdated || this.open)) {\n this.manageOpen(changes.get(\"open\"));\n }\n if (changes.has(\"trigger\")) {\n const [id, interaction] = ((_a = this.trigger) == null ? void 0 : _a.split(\"@\")) || [];\n this.elementResolver.selector = id ? `#${id}` : \"\";\n this.triggerInteraction = interaction;\n }\n let oldTrigger = false;\n if (changes.has(elementResolverUpdatedSymbol)) {\n oldTrigger = this.triggerElement;\n this.triggerElement = this.elementResolver.element;\n }\n if (changes.has(\"triggerElement\")) {\n oldTrigger = changes.get(\"triggerElement\");\n }\n if (oldTrigger !== false) {\n this.bindEvents();\n }\n }\n /**\n * Lifecycle method called after the component updates.\n *\n * This method handles various tasks after the component updates, such as updating the placement\n * attribute, resetting the overlay position, and clearing the overlay position based on the state.\n *\n * @override\n * @param {PropertyValues} changes - The properties that have changed.\n */\n updated(changes) {\n super.updated(changes);\n if (changes.has(\"placement\")) {\n if (this.placement) {\n this.dialogEl.setAttribute(\"actual-placement\", this.placement);\n } else {\n this.dialogEl.removeAttribute(\"actual-placement\");\n }\n if (this.open && typeof changes.get(\"placement\") !== \"undefined\") {\n this.placementController.resetOverlayPosition();\n }\n }\n if (changes.has(\"state\") && this.state === \"closed\" && typeof changes.get(\"state\") !== \"undefined\") {\n this.placementController.clearOverlayPosition();\n }\n }\n /**\n * Renders the content of the overlay.\n *\n * This method returns a template result containing a slot element. The slot element\n * listens for the `slotchange` event to manage the overlay's state.\n *\n * @protected\n * @returns {TemplateResult} The template result containing the slot element.\n */\n renderContent() {\n return html`\n <slot @slotchange=${this.handleSlotchange}></slot>\n `;\n }\n /**\n * Generates a style map for the dialog element.\n *\n * This method returns an object containing CSS custom properties for the dialog element.\n * The `--swc-overlay-open-count` custom property is set to the current open count of overlays.\n *\n * @private\n * @returns {StyleInfo} The style map for the dialog element.\n */\n get dialogStyleMap() {\n return {\n \"--swc-overlay-open-count\": _Overlay.openCount.toString()\n };\n }\n /**\n * Renders the popover element for the overlay.\n *\n * This method returns a template result containing a div element styled as a popover.\n * The popover element includes various attributes and event listeners to manage the overlay's state and behavior.\n *\n * @protected\n * @returns {TemplateResult} The template result containing the popover element.\n */\n renderPopover() {\n return html`\n ${this.needsModalBackdrop ? html`\n <div class=\"modal-backdrop\"></div>\n ` : nothing}\n <div\n class=\"dialog\"\n part=\"dialog\"\n role=${ifDefined(\n this.type === \"modal\" || this.type === \"page\" ? \"dialog\" : void 0\n )}\n aria-modal=${ifDefined(\n this.type === \"modal\" || this.type === \"page\" ? \"true\" : void 0\n )}\n placement=${ifDefined(\n this.requiresPositioning ? this.placement || \"right\" : void 0\n )}\n popover=${ifDefined(this.popoverValue)}\n style=${styleMap(this.dialogStyleMap)}\n @beforetoggle=${this.handleBeforetoggle}\n @close=${this.handleBrowserClose}\n ?is-visible=${this.state !== \"closed\"}\n >\n ${this.renderContent()}\n </div>\n `;\n }\n /**\n * Renders the overlay component.\n *\n * This method returns a template result containing either a dialog or popover element\n * based on the overlay type. It also includes a slot for longpress descriptors.\n *\n * @override\n * @returns {TemplateResult} The template result containing the overlay content.\n */\n render() {\n return html`\n ${this.renderPopover()}\n <slot name=\"longpress-describedby-descriptor\"></slot>\n `;\n }\n /**\n * Lifecycle method called when the component is added to the DOM.\n *\n * This method sets up event listeners and binds events if the component has already updated.\n *\n * @override\n */\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener(\"close\", this.handleClose);\n if (this.hasUpdated) {\n this.bindEvents();\n }\n }\n /**\n * Lifecycle method called when the component is removed from the DOM.\n *\n * This method releases the description from the strategy and updates the 'open' property.\n *\n * @override\n */\n disconnectedCallback() {\n var _a;\n (_a = this.strategy) == null ? void 0 : _a.releaseDescription();\n this.open = false;\n this.removeEventListener(\"close\", this.handleClose);\n super.disconnectedCallback();\n }\n};\n_Overlay.styles = [styles];\n/**\n * Tracks the number of overlays that have been opened.\n *\n * This static property is used to manage the stacking context of multiple overlays.\n *\n * @type {number}\n * @default 1\n */\n_Overlay.openCount = 1;\n__decorateClass([\n property({ type: Boolean })\n], _Overlay.prototype, \"delayed\", 1);\n__decorateClass([\n query(\".dialog\")\n], _Overlay.prototype, \"dialogEl\", 2);\n__decorateClass([\n property({ type: Boolean })\n], _Overlay.prototype, \"disabled\", 1);\n__decorateClass([\n queryAssignedElements({\n flatten: true,\n selector: ':not([slot=\"longpress-describedby-descriptor\"], slot)'\n })\n], _Overlay.prototype, \"elements\", 2);\n__decorateClass([\n property({ type: Number })\n], _Overlay.prototype, \"offset\", 2);\n__decorateClass([\n property({ type: Boolean, reflect: true })\n], _Overlay.prototype, \"open\", 1);\n__decorateClass([\n property()\n], _Overlay.prototype, \"placement\", 2);\n__decorateClass([\n property({ attribute: \"receives-focus\" })\n], _Overlay.prototype, \"receivesFocus\", 2);\n__decorateClass([\n property({ type: Boolean, attribute: \"allow-outside-click\" })\n], _Overlay.prototype, \"allowOutsideClick\", 2);\n__decorateClass([\n query(\"slot\")\n], _Overlay.prototype, \"slotEl\", 2);\n__decorateClass([\n state()\n], _Overlay.prototype, \"state\", 1);\n__decorateClass([\n property({ type: Number, attribute: \"tip-padding\" })\n], _Overlay.prototype, \"tipPadding\", 2);\n__decorateClass([\n property()\n], _Overlay.prototype, \"trigger\", 2);\n__decorateClass([\n property({ attribute: false })\n], _Overlay.prototype, \"triggerElement\", 2);\n__decorateClass([\n property({ attribute: false })\n], _Overlay.prototype, \"triggerInteraction\", 2);\n__decorateClass([\n property({ attribute: false })\n], _Overlay.prototype, \"describeTrigger\", 2);\n__decorateClass([\n property()\n], _Overlay.prototype, \"type\", 2);\nexport let Overlay = _Overlay;\n//# sourceMappingURL=Overlay.dev.js.map\n"
|
|
37
|
-
],
|
|
38
|
-
"mappings": "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",
|
|
39
|
-
"debugId": "B4C0094FFD6AEF9A64756E2164756E21",
|
|
40
|
-
"names": []
|
|
41
|
-
}
|