@spectrum-web-components/overlay 0.0.0-20241209155954
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/README.md +465 -0
- package/local.d.ts +56 -0
- package/overlay-trigger.d.ts +6 -0
- package/overlay-trigger.dev.js +5 -0
- package/overlay-trigger.dev.js.map +7 -0
- package/overlay-trigger.js +2 -0
- package/overlay-trigger.js.map +7 -0
- package/package.json +179 -0
- package/sp-overlay.d.ts +6 -0
- package/sp-overlay.dev.js +5 -0
- package/sp-overlay.dev.js.map +7 -0
- package/sp-overlay.js +2 -0
- package/sp-overlay.js.map +7 -0
- package/src/AbstractOverlay.d.ts +72 -0
- package/src/AbstractOverlay.dev.js +234 -0
- package/src/AbstractOverlay.dev.js.map +7 -0
- package/src/AbstractOverlay.js +2 -0
- package/src/AbstractOverlay.js.map +7 -0
- package/src/ClickController.d.ts +14 -0
- package/src/ClickController.dev.js +42 -0
- package/src/ClickController.dev.js.map +7 -0
- package/src/ClickController.js +2 -0
- package/src/ClickController.js.map +7 -0
- package/src/HoverController.d.ts +20 -0
- package/src/HoverController.dev.js +153 -0
- package/src/HoverController.dev.js.map +7 -0
- package/src/HoverController.js +2 -0
- package/src/HoverController.js.map +7 -0
- package/src/InteractionController.d.ts +38 -0
- package/src/InteractionController.dev.js +90 -0
- package/src/InteractionController.dev.js.map +7 -0
- package/src/InteractionController.js +2 -0
- package/src/InteractionController.js.map +7 -0
- package/src/LongpressController.d.ts +21 -0
- package/src/LongpressController.dev.js +156 -0
- package/src/LongpressController.dev.js.map +7 -0
- package/src/LongpressController.js +2 -0
- package/src/LongpressController.js.map +7 -0
- package/src/Overlay.d.ts +134 -0
- package/src/Overlay.dev.js +535 -0
- package/src/Overlay.dev.js.map +7 -0
- package/src/Overlay.js +33 -0
- package/src/Overlay.js.map +7 -0
- package/src/OverlayDialog.d.ts +4 -0
- package/src/OverlayDialog.dev.js +140 -0
- package/src/OverlayDialog.dev.js.map +7 -0
- package/src/OverlayDialog.js +2 -0
- package/src/OverlayDialog.js.map +7 -0
- package/src/OverlayNoPopover.d.ts +4 -0
- package/src/OverlayNoPopover.dev.js +117 -0
- package/src/OverlayNoPopover.dev.js.map +7 -0
- package/src/OverlayNoPopover.js +2 -0
- package/src/OverlayNoPopover.js.map +7 -0
- package/src/OverlayPopover.d.ts +4 -0
- package/src/OverlayPopover.dev.js +199 -0
- package/src/OverlayPopover.dev.js.map +7 -0
- package/src/OverlayPopover.js +2 -0
- package/src/OverlayPopover.js.map +7 -0
- package/src/OverlayStack.d.ts +44 -0
- package/src/OverlayStack.dev.js +163 -0
- package/src/OverlayStack.dev.js.map +7 -0
- package/src/OverlayStack.js +2 -0
- package/src/OverlayStack.js.map +7 -0
- package/src/OverlayTrigger.d.ts +52 -0
- package/src/OverlayTrigger.dev.js +243 -0
- package/src/OverlayTrigger.dev.js.map +7 -0
- package/src/OverlayTrigger.js +57 -0
- package/src/OverlayTrigger.js.map +7 -0
- package/src/PlacementController.d.ts +40 -0
- package/src/PlacementController.dev.js +212 -0
- package/src/PlacementController.dev.js.map +7 -0
- package/src/PlacementController.js +2 -0
- package/src/PlacementController.js.map +7 -0
- package/src/VirtualTrigger.d.ts +7 -0
- package/src/VirtualTrigger.dev.js +32 -0
- package/src/VirtualTrigger.dev.js.map +7 -0
- package/src/VirtualTrigger.js +2 -0
- package/src/VirtualTrigger.js.map +7 -0
- package/src/events.d.ts +23 -0
- package/src/events.dev.js +39 -0
- package/src/events.dev.js.map +7 -0
- package/src/events.js +2 -0
- package/src/events.js.map +7 -0
- package/src/fullSizePlugin.d.ts +12 -0
- package/src/fullSizePlugin.dev.js +39 -0
- package/src/fullSizePlugin.dev.js.map +7 -0
- package/src/fullSizePlugin.js +2 -0
- package/src/fullSizePlugin.js.map +7 -0
- package/src/index.d.ts +6 -0
- package/src/index.dev.js +8 -0
- package/src/index.dev.js.map +7 -0
- package/src/index.js +2 -0
- package/src/index.js.map +7 -0
- package/src/loader.d.ts +4 -0
- package/src/loader.dev.js +11 -0
- package/src/loader.dev.js.map +7 -0
- package/src/loader.js +2 -0
- package/src/loader.js.map +7 -0
- package/src/overlay-events.d.ts +11 -0
- package/src/overlay-events.dev.js +8 -0
- package/src/overlay-events.dev.js.map +7 -0
- package/src/overlay-events.js +2 -0
- package/src/overlay-events.js.map +7 -0
- package/src/overlay-timer.d.ts +22 -0
- package/src/overlay-timer.dev.js +72 -0
- package/src/overlay-timer.dev.js.map +7 -0
- package/src/overlay-timer.js +2 -0
- package/src/overlay-timer.js.map +7 -0
- package/src/overlay-trigger-directive.d.ts +26 -0
- package/src/overlay-trigger-directive.dev.js +87 -0
- package/src/overlay-trigger-directive.dev.js.map +7 -0
- package/src/overlay-trigger-directive.js +2 -0
- package/src/overlay-trigger-directive.js.map +7 -0
- package/src/overlay-trigger.css.d.ts +2 -0
- package/src/overlay-trigger.css.dev.js +7 -0
- package/src/overlay-trigger.css.dev.js.map +7 -0
- package/src/overlay-trigger.css.js +4 -0
- package/src/overlay-trigger.css.js.map +7 -0
- package/src/overlay-types.d.ts +50 -0
- package/src/overlay-types.dev.js +3 -0
- package/src/overlay-types.dev.js.map +7 -0
- package/src/overlay-types.js +2 -0
- package/src/overlay-types.js.map +7 -0
- package/src/overlay.css.d.ts +2 -0
- package/src/overlay.css.dev.js +7 -0
- package/src/overlay.css.dev.js.map +7 -0
- package/src/overlay.css.js +4 -0
- package/src/overlay.css.js.map +7 -0
- package/src/slottable-request-directive.d.ts +17 -0
- package/src/slottable-request-directive.dev.js +66 -0
- package/src/slottable-request-directive.dev.js.map +7 -0
- package/src/slottable-request-directive.js +2 -0
- package/src/slottable-request-directive.js.map +7 -0
- package/src/slottable-request-event.d.ts +12 -0
- package/src/slottable-request-event.dev.js +28 -0
- package/src/slottable-request-event.dev.js.map +7 -0
- package/src/slottable-request-event.js +2 -0
- package/src/slottable-request-event.js.map +7 -0
- package/src/strategies.d.ts +8 -0
- package/src/strategies.dev.js +10 -0
- package/src/strategies.dev.js.map +7 -0
- package/src/strategies.js +2 -0
- package/src/strategies.js.map +7 -0
- package/sync/overlay-trigger.d.ts +6 -0
- package/sync/overlay-trigger.dev.js +6 -0
- package/sync/overlay-trigger.dev.js.map +7 -0
- package/sync/overlay-trigger.js +2 -0
- package/sync/overlay-trigger.js.map +7 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["PlacementController.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2022 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport type {\n ReactiveController,\n ReactiveElement,\n} from '@spectrum-web-components/base';\nimport {\n arrow,\n autoUpdate,\n computePosition,\n flip,\n offset,\n Placement,\n shift,\n size,\n} from '@floating-ui/dom';\nimport type { VirtualTrigger } from './VirtualTrigger.dev.js'\nimport type { OpenableElement } from './overlay-types.dev.js'\nimport type { Overlay } from './Overlay.dev.js'\n\ntype OverlayOptionsV1 = {\n abortPromise?: Promise<boolean>;\n delayed?: boolean;\n offset?: number | [number, number]; // supporting multi-axis\n placement: Placement;\n notImmediatelyClosable?: boolean; // rename or place behind other API options\n receivesFocus?: 'auto';\n root?: HTMLElement;\n tipPadding?: number;\n trigger: HTMLElement | VirtualTrigger;\n type?: 'modal' | 'page' | 'hint' | 'auto' | 'manual';\n};\n\nfunction roundByDPR(num?: number): number {\n if (typeof num === 'undefined') return 0;\n const dpr = window.devicePixelRatio || 1;\n return Math.round(num * dpr) / dpr ?? -10000;\n}\n\n// See: https://spectrum.adobe.com/page/popover/#Container-padding\nconst REQUIRED_DISTANCE_TO_EDGE = 8;\n// See: https://github.com/adobe/spectrum-web-components/issues/910\nconst MIN_OVERLAY_HEIGHT = 100;\n\nconst getFallbackPlacements = (placement: Placement): Placement[] => {\n const fallbacks: Record<Placement, Placement[]> = {\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 fallbacks[placement] ?? [placement];\n};\n\nexport const placementUpdatedSymbol = Symbol('placement updated');\n\nexport class PlacementController implements ReactiveController {\n private cleanup?: () => void;\n\n initialHeight?: number;\n\n isConstrained?: boolean;\n\n private host!: ReactiveElement & { elements: OpenableElement[] };\n\n private options!: OverlayOptionsV1;\n\n private originalPlacements = new WeakMap<HTMLElement, Placement>();\n\n private target!: HTMLElement;\n\n constructor(host: ReactiveElement & { elements: OpenableElement[] }) {\n this.host = host;\n // Add the controller after the MutationObserver has been created in preparation\n // for the `hostConnected`/`hostDisconnected` callbacks to be run.\n this.host.addController(this);\n }\n\n public async placeOverlay(\n target: HTMLElement = this.target,\n options: OverlayOptionsV1 = this.options\n ): Promise<void> {\n this.target = target;\n this.options = options;\n if (!target || !options) 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 this.cleanup = () => {\n this.host.elements?.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 };\n }\n\n allowPlacementUpdate = false;\n\n closeForAncestorUpdate = (): void => {\n if (\n !this.allowPlacementUpdate &&\n this.options.type !== 'modal' &&\n this.cleanup\n ) {\n this.target.dispatchEvent(new Event('close', { bubbles: true }));\n }\n this.allowPlacementUpdate = false;\n };\n\n updatePlacement = (): void => {\n this.computePlacement();\n };\n\n async computePlacement(): Promise<void> {\n const { options, target } = this;\n\n await (document.fonts ? document.fonts.ready : Promise.resolve());\n\n const flipMiddleware = !(options.trigger instanceof HTMLElement)\n ? flip({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n fallbackPlacements: getFallbackPlacements(options.placement),\n })\n : flip();\n\n const [mainAxis = 0, crossAxis = 0] = Array.isArray(options?.offset)\n ? options.offset\n : [options.offset, 0];\n\n const tipElement = this.host.elements.find(\n (el) => el.tipElement\n )?.tipElement;\n\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: ({\n availableWidth,\n availableHeight,\n rects: { floating },\n }) => {\n const maxHeight = Math.max(\n MIN_OVERLAY_HEIGHT,\n Math.floor(availableHeight)\n );\n const actualHeight = floating.height;\n this.initialHeight = !this.isConstrained // && !this.virtualTrigger\n ? actualHeight\n : this.initialHeight || actualHeight;\n this.isConstrained =\n actualHeight < this.initialHeight ||\n maxHeight <= actualHeight;\n const appliedHeight = this.isConstrained\n ? `${maxHeight}px`\n : '';\n Object.assign(target.style, {\n maxWidth: `${Math.floor(availableWidth)}px`,\n maxHeight: appliedHeight,\n });\n },\n }),\n ...(tipElement\n ? [\n arrow({\n element: tipElement,\n padding:\n options.tipPadding || REQUIRED_DISTANCE_TO_EDGE,\n }),\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 Object.assign(target.style, {\n top: '0px',\n left: '0px',\n translate: `${roundByDPR(x)}px ${roundByDPR(y)}px`,\n });\n\n target.setAttribute('actual-placement', placement);\n this.host.elements?.forEach((element) => {\n if (!this.originalPlacements.has(element)) {\n this.originalPlacements.set(\n element,\n element.getAttribute('placement') as Placement\n );\n }\n element.setAttribute('placement', placement);\n });\n\n if (tipElement && middlewareData.arrow) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n Object.assign(tipElement.style, {\n top:\n placement.startsWith('right') ||\n placement.startsWith('left')\n ? '0px'\n : '',\n left:\n placement.startsWith('bottom') ||\n placement.startsWith('top')\n ? '0px'\n : '',\n translate: `${roundByDPR(arrowX)}px ${roundByDPR(arrowY)}px`,\n });\n }\n }\n\n public clearOverlayPosition(): void {\n if (!this.target) {\n return;\n }\n this.target.style.removeProperty('max-height');\n this.target.style.removeProperty('max-width');\n this.initialHeight = undefined;\n this.isConstrained = false;\n }\n\n public resetOverlayPosition = (): void => {\n if (!this.target || !this.options) return;\n this.clearOverlayPosition();\n\n // force paint\n this.host.offsetHeight;\n this.computePlacement();\n };\n\n hostConnected(): void {\n document.addEventListener(\n 'sp-update-overlays',\n this.resetOverlayPosition\n );\n }\n\n hostUpdated(): void {\n if (!(this.host as Overlay).open) {\n this.cleanup?.();\n this.cleanup = undefined;\n }\n }\n\n hostDisconnected(): void {\n this.cleanup?.();\n this.cleanup = undefined;\n document.removeEventListener(\n 'sp-update-overlays',\n this.resetOverlayPosition\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";import{arrow as w,autoUpdate as v,computePosition as H,flip as y,offset as R,shift as A,size as M}from"@floating-ui/dom";function c(o){if(typeof o=="undefined")return 0;const t=window.devicePixelRatio||1;return Math.round(o*t)/t}const p=8,C=100,T=o=>{var e;return(e={left:["right","bottom","top"],"left-start":["right-start","bottom","top"],"left-end":["right-end","bottom","top"],right:["left","bottom","top"],"right-start":["left-start","bottom","top"],"right-end":["left-end","bottom","top"],top:["bottom","left","right"],"top-start":["bottom-start","left","right"],"top-end":["bottom-end","left","right"],bottom:["top","left","right"],"bottom-start":["top-start","left","right"],"bottom-end":["top-end","left","right"]}[o])!=null?e:[o]};export const placementUpdatedSymbol=Symbol("placement updated");export class PlacementController{constructor(t){this.originalPlacements=new WeakMap;this.allowPlacementUpdate=!1;this.closeForAncestorUpdate=()=>{!this.allowPlacementUpdate&&this.options.type!=="modal"&&this.cleanup&&this.target.dispatchEvent(new Event("close",{bubbles:!0})),this.allowPlacementUpdate=!1};this.updatePlacement=()=>{this.computePlacement()};this.resetOverlayPosition=()=>{!this.target||!this.options||(this.clearOverlayPosition(),this.host.offsetHeight,this.computePlacement())};this.host=t,this.host.addController(this)}async placeOverlay(t=this.target,e=this.options){if(this.target=t,this.options=e,!t||!e)return;const m=v(e.trigger,t,this.closeForAncestorUpdate,{ancestorResize:!1,elementResize:!1,layoutShift:!1}),h=v(e.trigger,t,this.updatePlacement,{ancestorScroll:!1});this.cleanup=()=>{var n;(n=this.host.elements)==null||n.forEach(a=>{a.addEventListener("sp-closed",()=>{const r=this.originalPlacements.get(a);r&&a.setAttribute("placement",r),this.originalPlacements.delete(a)},{once:!0})}),m(),h()}}async computePlacement(){var g,u;const{options:t,target:e}=this;await(document.fonts?document.fonts.ready:Promise.resolve());const m=t.trigger instanceof HTMLElement?y():y({padding:p,fallbackPlacements:T(t.placement)}),[h=0,n=0]=Array.isArray(t==null?void 0:t.offset)?t.offset:[t.offset,0],a=(g=this.host.elements.find(i=>i.tipElement))==null?void 0:g.tipElement,r=[R({mainAxis:h,crossAxis:n}),A({padding:p}),m,M({padding:p,apply:({availableWidth:i,availableHeight:d,rects:{floating:x}})=>{const b=Math.max(C,Math.floor(d)),l=x.height;this.initialHeight=this.isConstrained&&this.initialHeight||l,this.isConstrained=l<this.initialHeight||b<=l;const O=this.isConstrained?`${b}px`:"";Object.assign(e.style,{maxWidth:`${Math.floor(i)}px`,maxHeight:O})}}),...a?[w({element:a,padding:t.tipPadding||p})]:[]],{x:P,y:E,placement:s,middlewareData:f}=await H(t.trigger,e,{placement:t.placement,middleware:r,strategy:"fixed"});if(Object.assign(e.style,{top:"0px",left:"0px",translate:`${c(P)}px ${c(E)}px`}),e.setAttribute("actual-placement",s),(u=this.host.elements)==null||u.forEach(i=>{this.originalPlacements.has(i)||this.originalPlacements.set(i,i.getAttribute("placement")),i.setAttribute("placement",s)}),a&&f.arrow){const{x:i,y:d}=f.arrow;Object.assign(a.style,{top:s.startsWith("right")||s.startsWith("left")?"0px":"",left:s.startsWith("bottom")||s.startsWith("top")?"0px":"",translate:`${c(i)}px ${c(d)}px`})}}clearOverlayPosition(){this.target&&(this.target.style.removeProperty("max-height"),this.target.style.removeProperty("max-width"),this.initialHeight=void 0,this.isConstrained=!1)}hostConnected(){document.addEventListener("sp-update-overlays",this.resetOverlayPosition)}hostUpdated(){var t;this.host.open||((t=this.cleanup)==null||t.call(this),this.cleanup=void 0)}hostDisconnected(){var t;(t=this.cleanup)==null||t.call(this),this.cleanup=void 0,document.removeEventListener("sp-update-overlays",this.resetOverlayPosition)}}
|
|
2
|
+
//# sourceMappingURL=PlacementController.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["PlacementController.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2022 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport type {\n ReactiveController,\n ReactiveElement,\n} from '@spectrum-web-components/base';\nimport {\n arrow,\n autoUpdate,\n computePosition,\n flip,\n offset,\n Placement,\n shift,\n size,\n} from '@floating-ui/dom';\nimport type { VirtualTrigger } from './VirtualTrigger.js';\nimport type { OpenableElement } from './overlay-types.js';\nimport type { Overlay } from './Overlay.js';\n\ntype OverlayOptionsV1 = {\n abortPromise?: Promise<boolean>;\n delayed?: boolean;\n offset?: number | [number, number]; // supporting multi-axis\n placement: Placement;\n notImmediatelyClosable?: boolean; // rename or place behind other API options\n receivesFocus?: 'auto';\n root?: HTMLElement;\n tipPadding?: number;\n trigger: HTMLElement | VirtualTrigger;\n type?: 'modal' | 'page' | 'hint' | 'auto' | 'manual';\n};\n\nfunction roundByDPR(num?: number): number {\n if (typeof num === 'undefined') return 0;\n const dpr = window.devicePixelRatio || 1;\n return Math.round(num * dpr) / dpr ?? -10000;\n}\n\n// See: https://spectrum.adobe.com/page/popover/#Container-padding\nconst REQUIRED_DISTANCE_TO_EDGE = 8;\n// See: https://github.com/adobe/spectrum-web-components/issues/910\nconst MIN_OVERLAY_HEIGHT = 100;\n\nconst getFallbackPlacements = (placement: Placement): Placement[] => {\n const fallbacks: Record<Placement, Placement[]> = {\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 fallbacks[placement] ?? [placement];\n};\n\nexport const placementUpdatedSymbol = Symbol('placement updated');\n\nexport class PlacementController implements ReactiveController {\n private cleanup?: () => void;\n\n initialHeight?: number;\n\n isConstrained?: boolean;\n\n private host!: ReactiveElement & { elements: OpenableElement[] };\n\n private options!: OverlayOptionsV1;\n\n private originalPlacements = new WeakMap<HTMLElement, Placement>();\n\n private target!: HTMLElement;\n\n constructor(host: ReactiveElement & { elements: OpenableElement[] }) {\n this.host = host;\n // Add the controller after the MutationObserver has been created in preparation\n // for the `hostConnected`/`hostDisconnected` callbacks to be run.\n this.host.addController(this);\n }\n\n public async placeOverlay(\n target: HTMLElement = this.target,\n options: OverlayOptionsV1 = this.options\n ): Promise<void> {\n this.target = target;\n this.options = options;\n if (!target || !options) 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 this.cleanup = () => {\n this.host.elements?.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 };\n }\n\n allowPlacementUpdate = false;\n\n closeForAncestorUpdate = (): void => {\n if (\n !this.allowPlacementUpdate &&\n this.options.type !== 'modal' &&\n this.cleanup\n ) {\n this.target.dispatchEvent(new Event('close', { bubbles: true }));\n }\n this.allowPlacementUpdate = false;\n };\n\n updatePlacement = (): void => {\n this.computePlacement();\n };\n\n async computePlacement(): Promise<void> {\n const { options, target } = this;\n\n await (document.fonts ? document.fonts.ready : Promise.resolve());\n\n const flipMiddleware = !(options.trigger instanceof HTMLElement)\n ? flip({\n padding: REQUIRED_DISTANCE_TO_EDGE,\n fallbackPlacements: getFallbackPlacements(options.placement),\n })\n : flip();\n\n const [mainAxis = 0, crossAxis = 0] = Array.isArray(options?.offset)\n ? options.offset\n : [options.offset, 0];\n\n const tipElement = this.host.elements.find(\n (el) => el.tipElement\n )?.tipElement;\n\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: ({\n availableWidth,\n availableHeight,\n rects: { floating },\n }) => {\n const maxHeight = Math.max(\n MIN_OVERLAY_HEIGHT,\n Math.floor(availableHeight)\n );\n const actualHeight = floating.height;\n this.initialHeight = !this.isConstrained // && !this.virtualTrigger\n ? actualHeight\n : this.initialHeight || actualHeight;\n this.isConstrained =\n actualHeight < this.initialHeight ||\n maxHeight <= actualHeight;\n const appliedHeight = this.isConstrained\n ? `${maxHeight}px`\n : '';\n Object.assign(target.style, {\n maxWidth: `${Math.floor(availableWidth)}px`,\n maxHeight: appliedHeight,\n });\n },\n }),\n ...(tipElement\n ? [\n arrow({\n element: tipElement,\n padding:\n options.tipPadding || REQUIRED_DISTANCE_TO_EDGE,\n }),\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 Object.assign(target.style, {\n top: '0px',\n left: '0px',\n translate: `${roundByDPR(x)}px ${roundByDPR(y)}px`,\n });\n\n target.setAttribute('actual-placement', placement);\n this.host.elements?.forEach((element) => {\n if (!this.originalPlacements.has(element)) {\n this.originalPlacements.set(\n element,\n element.getAttribute('placement') as Placement\n );\n }\n element.setAttribute('placement', placement);\n });\n\n if (tipElement && middlewareData.arrow) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n Object.assign(tipElement.style, {\n top:\n placement.startsWith('right') ||\n placement.startsWith('left')\n ? '0px'\n : '',\n left:\n placement.startsWith('bottom') ||\n placement.startsWith('top')\n ? '0px'\n : '',\n translate: `${roundByDPR(arrowX)}px ${roundByDPR(arrowY)}px`,\n });\n }\n }\n\n public clearOverlayPosition(): void {\n if (!this.target) {\n return;\n }\n this.target.style.removeProperty('max-height');\n this.target.style.removeProperty('max-width');\n this.initialHeight = undefined;\n this.isConstrained = false;\n }\n\n public resetOverlayPosition = (): void => {\n if (!this.target || !this.options) return;\n this.clearOverlayPosition();\n\n // force paint\n this.host.offsetHeight;\n this.computePlacement();\n };\n\n hostConnected(): void {\n document.addEventListener(\n 'sp-update-overlays',\n this.resetOverlayPosition\n );\n }\n\n hostUpdated(): void {\n if (!(this.host as Overlay).open) {\n this.cleanup?.();\n this.cleanup = undefined;\n }\n }\n\n hostDisconnected(): void {\n this.cleanup?.();\n this.cleanup = undefined;\n document.removeEventListener(\n 'sp-update-overlays',\n this.resetOverlayPosition\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "aAgBA,OACI,SAAAA,EACA,cAAAC,EACA,mBAAAC,EACA,QAAAC,EACA,UAAAC,EAEA,SAAAC,EACA,QAAAC,MACG,mBAkBP,SAASC,EAAWC,EAAsB,CACtC,GAAI,OAAOA,GAAQ,YAAa,MAAO,GACvC,MAAMC,EAAM,OAAO,kBAAoB,EACvC,OAAO,KAAK,MAAMD,EAAMC,CAAG,EAAIA,CACnC,CAGA,MAAMC,EAA4B,EAE5BC,EAAqB,IAErBC,EAAyBC,GAAsC,CAtDrE,IAAAC,EAqEI,OAAOA,EAd2C,CAC9C,KAAM,CAAC,QAAS,SAAU,KAAK,EAC/B,aAAc,CAAC,cAAe,SAAU,KAAK,EAC7C,WAAY,CAAC,YAAa,SAAU,KAAK,EACzC,MAAO,CAAC,OAAQ,SAAU,KAAK,EAC/B,cAAe,CAAC,aAAc,SAAU,KAAK,EAC7C,YAAa,CAAC,WAAY,SAAU,KAAK,EACzC,IAAK,CAAC,SAAU,OAAQ,OAAO,EAC/B,YAAa,CAAC,eAAgB,OAAQ,OAAO,EAC7C,UAAW,CAAC,aAAc,OAAQ,OAAO,EACzC,OAAQ,CAAC,MAAO,OAAQ,OAAO,EAC/B,eAAgB,CAAC,YAAa,OAAQ,OAAO,EAC7C,aAAc,CAAC,UAAW,OAAQ,OAAO,CAC7C,EACiBD,CAAS,IAAnB,KAAAC,EAAwB,CAACD,CAAS,CAC7C,EAEO,aAAM,uBAAyB,OAAO,mBAAmB,EAEzD,aAAM,mBAAkD,CAe3D,YAAYE,EAAyD,CAJrE,KAAQ,mBAAqB,IAAI,QAwDjC,0BAAuB,GAEvB,4BAAyB,IAAY,CAE7B,CAAC,KAAK,sBACN,KAAK,QAAQ,OAAS,SACtB,KAAK,SAEL,KAAK,OAAO,cAAc,IAAI,MAAM,QAAS,CAAE,QAAS,EAAK,CAAC,CAAC,EAEnE,KAAK,qBAAuB,EAChC,EAEA,qBAAkB,IAAY,CAC1B,KAAK,iBAAiB,CAC1B,EAyHA,KAAO,qBAAuB,IAAY,CAClC,CAAC,KAAK,QAAU,CAAC,KAAK,UAC1B,KAAK,qBAAqB,EAG1B,KAAK,KAAK,aACV,KAAK,iBAAiB,EAC1B,EAlMI,KAAK,KAAOA,EAGZ,KAAK,KAAK,cAAc,IAAI,CAChC,CAEA,MAAa,aACTC,EAAsB,KAAK,OAC3BC,EAA4B,KAAK,QACpB,CAGb,GAFA,KAAK,OAASD,EACd,KAAK,QAAUC,EACX,CAACD,GAAU,CAACC,EAAS,OAEzB,MAAMC,EAAwBjB,EAC1BgB,EAAQ,QACRD,EACA,KAAK,uBACL,CACI,eAAgB,GAChB,cAAe,GACf,YAAa,EACjB,CACJ,EACMG,EAAuBlB,EACzBgB,EAAQ,QACRD,EACA,KAAK,gBACL,CACI,eAAgB,EACpB,CACJ,EACA,KAAK,QAAU,IAAM,CA1H7B,IAAAF,GA2HYA,EAAA,KAAK,KAAK,WAAV,MAAAA,EAAoB,QAASM,GAAY,CACrCA,EAAQ,iBACJ,YACA,IAAM,CACF,MAAMP,EAAY,KAAK,mBAAmB,IAAIO,CAAO,EACjDP,GACAO,EAAQ,aAAa,YAAaP,CAAS,EAE/C,KAAK,mBAAmB,OAAOO,CAAO,CAC1C,EACA,CAAE,KAAM,EAAK,CACjB,CACJ,GACAF,EAAsB,EACtBC,EAAqB,CACzB,CACJ,CAmBA,MAAM,kBAAkC,CA9J5C,IAAAL,EAAAO,EA+JQ,KAAM,CAAE,QAAAJ,EAAS,OAAAD,CAAO,EAAI,KAE5B,MAAO,SAAS,MAAQ,SAAS,MAAM,MAAQ,QAAQ,QAAQ,GAE/D,MAAMM,EAAmBL,EAAQ,mBAAmB,YAK9Cd,EAAK,EAJLA,EAAK,CACD,QAASO,EACT,mBAAoBE,EAAsBK,EAAQ,SAAS,CAC/D,CAAC,EAGD,CAACM,EAAW,EAAGC,EAAY,CAAC,EAAI,MAAM,QAAQP,GAAA,YAAAA,EAAS,MAAM,EAC7DA,EAAQ,OACR,CAACA,EAAQ,OAAQ,CAAC,EAElBQ,GAAaX,EAAA,KAAK,KAAK,SAAS,KACjCY,GAAOA,EAAG,UACf,IAFmB,YAAAZ,EAEhB,WAEGa,EAAa,CACfvB,EAAO,CACH,SAAAmB,EACA,UAAAC,CACJ,CAAC,EACDnB,EAAM,CAAE,QAASK,CAA0B,CAAC,EAC5CY,EACAhB,EAAK,CACD,QAASI,EACT,MAAO,CAAC,CACJ,eAAAkB,EACA,gBAAAC,EACA,MAAO,CAAE,SAAAC,CAAS,CACtB,IAAM,CACF,MAAMC,EAAY,KAAK,IACnBpB,EACA,KAAK,MAAMkB,CAAe,CAC9B,EACMG,EAAeF,EAAS,OAC9B,KAAK,cAAiB,KAAK,eAErB,KAAK,eAAiBE,EAC5B,KAAK,cACDA,EAAe,KAAK,eACpBD,GAAaC,EACjB,MAAMC,EAAgB,KAAK,cACrB,GAAGF,CAAS,KACZ,GACN,OAAO,OAAOf,EAAO,MAAO,CACxB,SAAU,GAAG,KAAK,MAAMY,CAAc,CAAC,KACvC,UAAWK,CACf,CAAC,CACL,CACJ,CAAC,EACD,GAAIR,EACE,CACIzB,EAAM,CACF,QAASyB,EACT,QACIR,EAAQ,YAAcP,CAC9B,CAAC,CACL,EACA,CAAC,CACX,EACM,CAAE,EAAAwB,EAAG,EAAAC,EAAG,UAAAtB,EAAW,eAAAuB,CAAe,EAAI,MAAMlC,EAC9Ce,EAAQ,QACRD,EACA,CACI,UAAWC,EAAQ,UACnB,WAAAU,EACA,SAAU,OACd,CACJ,EAkBA,GAjBA,OAAO,OAAOX,EAAO,MAAO,CACxB,IAAK,MACL,KAAM,MACN,UAAW,GAAGT,EAAW2B,CAAC,CAAC,MAAM3B,EAAW4B,CAAC,CAAC,IAClD,CAAC,EAEDnB,EAAO,aAAa,mBAAoBH,CAAS,GACjDQ,EAAA,KAAK,KAAK,WAAV,MAAAA,EAAoB,QAASD,GAAY,CAChC,KAAK,mBAAmB,IAAIA,CAAO,GACpC,KAAK,mBAAmB,IACpBA,EACAA,EAAQ,aAAa,WAAW,CACpC,EAEJA,EAAQ,aAAa,YAAaP,CAAS,CAC/C,GAEIY,GAAcW,EAAe,MAAO,CACpC,KAAM,CAAE,EAAGC,EAAQ,EAAGC,CAAO,EAAIF,EAAe,MAEhD,OAAO,OAAOX,EAAW,MAAO,CAC5B,IACIZ,EAAU,WAAW,OAAO,GAC5BA,EAAU,WAAW,MAAM,EACrB,MACA,GACV,KACIA,EAAU,WAAW,QAAQ,GAC7BA,EAAU,WAAW,KAAK,EACpB,MACA,GACV,UAAW,GAAGN,EAAW8B,CAAM,CAAC,MAAM9B,EAAW+B,CAAM,CAAC,IAC5D,CAAC,CACL,CACJ,CAEO,sBAA6B,CAC3B,KAAK,SAGV,KAAK,OAAO,MAAM,eAAe,YAAY,EAC7C,KAAK,OAAO,MAAM,eAAe,WAAW,EAC5C,KAAK,cAAgB,OACrB,KAAK,cAAgB,GACzB,CAWA,eAAsB,CAClB,SAAS,iBACL,qBACA,KAAK,oBACT,CACJ,CAEA,aAAoB,CArSxB,IAAAxB,EAsSc,KAAK,KAAiB,QACxBA,EAAA,KAAK,UAAL,MAAAA,EAAA,WACA,KAAK,QAAU,OAEvB,CAEA,kBAAyB,CA5S7B,IAAAA,GA6SQA,EAAA,KAAK,UAAL,MAAAA,EAAA,WACA,KAAK,QAAU,OACf,SAAS,oBACL,qBACA,KAAK,oBACT,CACJ,CACJ",
|
|
6
|
+
"names": ["arrow", "autoUpdate", "computePosition", "flip", "offset", "shift", "size", "roundByDPR", "num", "dpr", "REQUIRED_DISTANCE_TO_EDGE", "MIN_OVERLAY_HEIGHT", "getFallbackPlacements", "placement", "_a", "host", "target", "options", "cleanupAncestorResize", "cleanupElementResize", "element", "_b", "flipMiddleware", "mainAxis", "crossAxis", "tipElement", "el", "middleware", "availableWidth", "availableHeight", "floating", "maxHeight", "actualHeight", "appliedHeight", "x", "y", "middlewareData", "arrowX", "arrowY"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { AbstractOverlay } from "./AbstractOverlay.dev.js";
|
|
3
|
+
export class VirtualTrigger {
|
|
4
|
+
constructor(x, y) {
|
|
5
|
+
this.x = 0;
|
|
6
|
+
this.y = 0;
|
|
7
|
+
this.x = x;
|
|
8
|
+
this.y = y;
|
|
9
|
+
}
|
|
10
|
+
updateBoundingClientRect(x, y) {
|
|
11
|
+
this.x = x;
|
|
12
|
+
this.y = y;
|
|
13
|
+
AbstractOverlay.update();
|
|
14
|
+
}
|
|
15
|
+
getBoundingClientRect() {
|
|
16
|
+
return {
|
|
17
|
+
width: 0,
|
|
18
|
+
height: 0,
|
|
19
|
+
top: this.y,
|
|
20
|
+
right: this.x,
|
|
21
|
+
y: this.y,
|
|
22
|
+
x: this.x,
|
|
23
|
+
bottom: this.y,
|
|
24
|
+
left: this.x,
|
|
25
|
+
/* c8 ignore next 3 */
|
|
26
|
+
toJSON() {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=VirtualTrigger.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["VirtualTrigger.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport { AbstractOverlay } from './AbstractOverlay.dev.js'\n\nexport class VirtualTrigger {\n private x = 0;\n private y = 0;\n\n public constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n\n public updateBoundingClientRect(x: number, y: number): void {\n this.x = x;\n this.y = y;\n AbstractOverlay.update();\n }\n\n public getBoundingClientRect(): DOMRect {\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"],
|
|
5
|
+
"mappings": ";AAWA,SAAS,uBAAuB;AAEzB,aAAM,eAAe;AAAA,EAIjB,YAAY,GAAW,GAAW;AAHzC,SAAQ,IAAI;AACZ,SAAQ,IAAI;AAGR,SAAK,IAAI;AACT,SAAK,IAAI;AAAA,EACb;AAAA,EAEO,yBAAyB,GAAW,GAAiB;AACxD,SAAK,IAAI;AACT,SAAK,IAAI;AACT,oBAAgB,OAAO;AAAA,EAC3B;AAAA,EAEO,wBAAiC;AACpC,WAAO;AAAA,MACH,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,KAAK,KAAK;AAAA,MACV,OAAO,KAAK;AAAA,MACZ,GAAG,KAAK;AAAA,MACR,GAAG,KAAK;AAAA,MACR,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK;AAAA;AAAA,MAEX,SAAS;AACL;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";import{AbstractOverlay as e}from"./AbstractOverlay.js";export class VirtualTrigger{constructor(t,i){this.x=0;this.y=0;this.x=t,this.y=i}updateBoundingClientRect(t,i){this.x=t,this.y=i,e.update()}getBoundingClientRect(){return{width:0,height:0,top:this.y,right:this.x,y:this.y,x:this.x,bottom:this.y,left:this.x,toJSON(){}}}}
|
|
2
|
+
//# sourceMappingURL=VirtualTrigger.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["VirtualTrigger.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport { AbstractOverlay } from './AbstractOverlay.js';\n\nexport class VirtualTrigger {\n private x = 0;\n private y = 0;\n\n public constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n\n public updateBoundingClientRect(x: number, y: number): void {\n this.x = x;\n this.y = y;\n AbstractOverlay.update();\n }\n\n public getBoundingClientRect(): DOMRect {\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"],
|
|
5
|
+
"mappings": "aAWA,OAAS,mBAAAA,MAAuB,uBAEzB,aAAM,cAAe,CAIjB,YAAYC,EAAWC,EAAW,CAHzC,KAAQ,EAAI,EACZ,KAAQ,EAAI,EAGR,KAAK,EAAID,EACT,KAAK,EAAIC,CACb,CAEO,yBAAyBD,EAAWC,EAAiB,CACxD,KAAK,EAAID,EACT,KAAK,EAAIC,EACTF,EAAgB,OAAO,CAC3B,CAEO,uBAAiC,CACpC,MAAO,CACH,MAAO,EACP,OAAQ,EACR,IAAK,KAAK,EACV,MAAO,KAAK,EACZ,EAAG,KAAK,EACR,EAAG,KAAK,EACR,OAAQ,KAAK,EACb,KAAM,KAAK,EAEX,QAAS,CAET,CACJ,CACJ,CACJ",
|
|
6
|
+
"names": ["AbstractOverlay", "x", "y"]
|
|
7
|
+
}
|
package/src/events.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { TriggerInteractions } from './overlay-types.js';
|
|
2
|
+
export declare class BeforetoggleClosedEvent extends Event {
|
|
3
|
+
currentState: string;
|
|
4
|
+
newState: string;
|
|
5
|
+
constructor();
|
|
6
|
+
}
|
|
7
|
+
export declare class BeforetoggleOpenEvent extends Event {
|
|
8
|
+
currentState: string;
|
|
9
|
+
newState: string;
|
|
10
|
+
constructor();
|
|
11
|
+
}
|
|
12
|
+
export declare class OverlayStateEvent extends Event {
|
|
13
|
+
overlay: HTMLElement;
|
|
14
|
+
detail: {
|
|
15
|
+
interaction: string;
|
|
16
|
+
reason?: 'external-click';
|
|
17
|
+
};
|
|
18
|
+
constructor(type: string, overlay: HTMLElement, { publish, interaction, reason, }: {
|
|
19
|
+
publish?: boolean;
|
|
20
|
+
interaction: TriggerInteractions;
|
|
21
|
+
reason?: 'external-click';
|
|
22
|
+
});
|
|
23
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
export class BeforetoggleClosedEvent extends Event {
|
|
3
|
+
constructor() {
|
|
4
|
+
super("beforetoggle", {
|
|
5
|
+
bubbles: false,
|
|
6
|
+
composed: false
|
|
7
|
+
});
|
|
8
|
+
this.currentState = "open";
|
|
9
|
+
this.newState = "closed";
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export class BeforetoggleOpenEvent extends Event {
|
|
13
|
+
constructor() {
|
|
14
|
+
super("beforetoggle", {
|
|
15
|
+
bubbles: false,
|
|
16
|
+
composed: false
|
|
17
|
+
});
|
|
18
|
+
this.currentState = "closed";
|
|
19
|
+
this.newState = "open";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class OverlayStateEvent extends Event {
|
|
23
|
+
constructor(type, overlay, {
|
|
24
|
+
publish,
|
|
25
|
+
interaction,
|
|
26
|
+
reason
|
|
27
|
+
}) {
|
|
28
|
+
super(type, {
|
|
29
|
+
bubbles: publish,
|
|
30
|
+
composed: publish
|
|
31
|
+
});
|
|
32
|
+
this.overlay = overlay;
|
|
33
|
+
this.detail = {
|
|
34
|
+
interaction,
|
|
35
|
+
reason
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=events.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["events.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2024 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport type { TriggerInteractions } from './overlay-types.dev.js'\n\nexport class BeforetoggleClosedEvent extends Event {\n currentState = 'open';\n newState = 'closed';\n constructor() {\n super('beforetoggle', {\n bubbles: false,\n composed: false,\n });\n }\n}\n\nexport class BeforetoggleOpenEvent extends Event {\n currentState = 'closed';\n newState = 'open';\n constructor() {\n super('beforetoggle', {\n bubbles: false,\n composed: false,\n });\n }\n}\n\nexport class OverlayStateEvent extends Event {\n detail!: {\n interaction: string;\n reason?: 'external-click';\n };\n\n constructor(\n type: string,\n public overlay: HTMLElement,\n {\n publish,\n interaction,\n reason,\n }: {\n publish?: boolean;\n interaction: TriggerInteractions;\n reason?: 'external-click';\n }\n ) {\n super(type, {\n bubbles: publish,\n composed: publish,\n });\n this.detail = {\n interaction,\n reason,\n };\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAcO,aAAM,gCAAgC,MAAM;AAAA,EAG/C,cAAc;AACV,UAAM,gBAAgB;AAAA,MAClB,SAAS;AAAA,MACT,UAAU;AAAA,IACd,CAAC;AANL,wBAAe;AACf,oBAAW;AAAA,EAMX;AACJ;AAEO,aAAM,8BAA8B,MAAM;AAAA,EAG7C,cAAc;AACV,UAAM,gBAAgB;AAAA,MAClB,SAAS;AAAA,MACT,UAAU;AAAA,IACd,CAAC;AANL,wBAAe;AACf,oBAAW;AAAA,EAMX;AACJ;AAEO,aAAM,0BAA0B,MAAM;AAAA,EAMzC,YACI,MACO,SACP;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAKF;AACE,UAAM,MAAM;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,IACd,CAAC;AAdM;AAeP,SAAK,SAAS;AAAA,MACV;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/src/events.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";export class BeforetoggleClosedEvent extends Event{constructor(){super("beforetoggle",{bubbles:!1,composed:!1});this.currentState="open";this.newState="closed"}}export class BeforetoggleOpenEvent extends Event{constructor(){super("beforetoggle",{bubbles:!1,composed:!1});this.currentState="closed";this.newState="open"}}export class OverlayStateEvent extends Event{constructor(r,l,{publish:o,interaction:s,reason:n}){super(r,{bubbles:o,composed:o});this.overlay=l;this.detail={interaction:s,reason:n}}}
|
|
2
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["events.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2024 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport type { TriggerInteractions } from './overlay-types.js';\n\nexport class BeforetoggleClosedEvent extends Event {\n currentState = 'open';\n newState = 'closed';\n constructor() {\n super('beforetoggle', {\n bubbles: false,\n composed: false,\n });\n }\n}\n\nexport class BeforetoggleOpenEvent extends Event {\n currentState = 'closed';\n newState = 'open';\n constructor() {\n super('beforetoggle', {\n bubbles: false,\n composed: false,\n });\n }\n}\n\nexport class OverlayStateEvent extends Event {\n detail!: {\n interaction: string;\n reason?: 'external-click';\n };\n\n constructor(\n type: string,\n public overlay: HTMLElement,\n {\n publish,\n interaction,\n reason,\n }: {\n publish?: boolean;\n interaction: TriggerInteractions;\n reason?: 'external-click';\n }\n ) {\n super(type, {\n bubbles: publish,\n composed: publish,\n });\n this.detail = {\n interaction,\n reason,\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "aAcO,aAAM,gCAAgC,KAAM,CAG/C,aAAc,CACV,MAAM,eAAgB,CAClB,QAAS,GACT,SAAU,EACd,CAAC,EANL,kBAAe,OACf,cAAW,QAMX,CACJ,CAEO,aAAM,8BAA8B,KAAM,CAG7C,aAAc,CACV,MAAM,eAAgB,CAClB,QAAS,GACT,SAAU,EACd,CAAC,EANL,kBAAe,SACf,cAAW,MAMX,CACJ,CAEO,aAAM,0BAA0B,KAAM,CAMzC,YACIA,EACOC,EACP,CACI,QAAAC,EACA,YAAAC,EACA,OAAAC,CACJ,EAKF,CACE,MAAMJ,EAAM,CACR,QAASE,EACT,SAAUA,CACd,CAAC,EAdM,aAAAD,EAeP,KAAK,OAAS,CACV,YAAAE,EACA,OAAAC,CACJ,CACJ,CACJ",
|
|
6
|
+
"names": ["type", "overlay", "publish", "interaction", "reason"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MiddlewareArguments, MiddlewareReturn } from '@floating-ui/dom';
|
|
2
|
+
export declare const fullSize: (options?: {
|
|
3
|
+
padding: number;
|
|
4
|
+
}) => {
|
|
5
|
+
name: string;
|
|
6
|
+
fn(middlewareArguments: MiddlewareArguments): Promise<MiddlewareReturn & {
|
|
7
|
+
data: {
|
|
8
|
+
availableWidth: number;
|
|
9
|
+
availableHeight: number;
|
|
10
|
+
};
|
|
11
|
+
}>;
|
|
12
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import {
|
|
3
|
+
detectOverflow
|
|
4
|
+
} from "@floating-ui/dom";
|
|
5
|
+
export const fullSize = (options = { padding: 0 }) => ({
|
|
6
|
+
name: "fullSize",
|
|
7
|
+
async fn(middlewareArguments) {
|
|
8
|
+
var _a, _b, _c, _d;
|
|
9
|
+
const overflow = await detectOverflow(middlewareArguments, options);
|
|
10
|
+
let availableHeight = -overflow.top - overflow.bottom + middlewareArguments.rects.floating.height;
|
|
11
|
+
let availableWidth = -overflow.left - overflow.right + middlewareArguments.rects.floating.width;
|
|
12
|
+
if (middlewareArguments.placement.startsWith("bottom")) {
|
|
13
|
+
availableHeight -= middlewareArguments.rects.reference.height;
|
|
14
|
+
availableHeight -= middlewareArguments.rects.reference.y;
|
|
15
|
+
availableHeight -= ((_a = middlewareArguments.middlewareData.offset) == null ? void 0 : _a.y) || 0;
|
|
16
|
+
availableHeight += options.padding;
|
|
17
|
+
} else if (middlewareArguments.placement.startsWith("top")) {
|
|
18
|
+
availableHeight = middlewareArguments.rects.reference.y;
|
|
19
|
+
availableHeight -= ((_b = middlewareArguments.middlewareData.offset) == null ? void 0 : _b.y) || 0;
|
|
20
|
+
availableHeight += options.padding;
|
|
21
|
+
} else if (middlewareArguments.placement.startsWith("right")) {
|
|
22
|
+
availableWidth -= middlewareArguments.rects.reference.width;
|
|
23
|
+
availableWidth -= middlewareArguments.rects.reference.x;
|
|
24
|
+
availableWidth -= ((_c = middlewareArguments.middlewareData.offset) == null ? void 0 : _c.x) || 0;
|
|
25
|
+
availableWidth += options.padding;
|
|
26
|
+
} else if (middlewareArguments.placement.startsWith("left")) {
|
|
27
|
+
availableWidth = middlewareArguments.rects.reference.x;
|
|
28
|
+
availableWidth -= ((_d = middlewareArguments.middlewareData.offset) == null ? void 0 : _d.x) || 0;
|
|
29
|
+
availableWidth += options.padding;
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
data: {
|
|
33
|
+
availableWidth,
|
|
34
|
+
availableHeight
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=fullSizePlugin.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["fullSizePlugin.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2022 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport {\n detectOverflow,\n MiddlewareArguments,\n MiddlewareReturn,\n} from '@floating-ui/dom';\n\nexport const fullSize = (options: { padding: number } = { padding: 0 }) => ({\n name: 'fullSize',\n async fn(middlewareArguments: MiddlewareArguments): Promise<\n MiddlewareReturn & {\n data: { availableWidth: number; availableHeight: number };\n }\n > {\n const overflow = await detectOverflow(middlewareArguments, options);\n let availableHeight =\n -overflow.top -\n overflow.bottom +\n middlewareArguments.rects.floating.height;\n let availableWidth =\n -overflow.left -\n overflow.right +\n middlewareArguments.rects.floating.width;\n if (middlewareArguments.placement.startsWith('bottom')) {\n availableHeight -= middlewareArguments.rects.reference.height;\n availableHeight -= middlewareArguments.rects.reference.y;\n availableHeight -=\n middlewareArguments.middlewareData.offset?.y || 0;\n availableHeight += options.padding;\n } else if (middlewareArguments.placement.startsWith('top')) {\n availableHeight = middlewareArguments.rects.reference.y;\n availableHeight -=\n middlewareArguments.middlewareData.offset?.y || 0;\n availableHeight += options.padding;\n } else if (middlewareArguments.placement.startsWith('right')) {\n availableWidth -= middlewareArguments.rects.reference.width;\n availableWidth -= middlewareArguments.rects.reference.x;\n availableWidth -= middlewareArguments.middlewareData.offset?.x || 0;\n availableWidth += options.padding;\n } else if (middlewareArguments.placement.startsWith('left')) {\n availableWidth = middlewareArguments.rects.reference.x;\n availableWidth -= middlewareArguments.middlewareData.offset?.x || 0;\n availableWidth += options.padding;\n }\n return {\n data: {\n availableWidth,\n availableHeight,\n },\n };\n },\n});\n"],
|
|
5
|
+
"mappings": ";AAWA;AAAA,EACI;AAAA,OAGG;AAEA,aAAM,WAAW,CAAC,UAA+B,EAAE,SAAS,EAAE,OAAO;AAAA,EACxE,MAAM;AAAA,EACN,MAAM,GAAG,qBAIP;AAvBN;AAwBQ,UAAM,WAAW,MAAM,eAAe,qBAAqB,OAAO;AAClE,QAAI,kBACA,CAAC,SAAS,MACV,SAAS,SACT,oBAAoB,MAAM,SAAS;AACvC,QAAI,iBACA,CAAC,SAAS,OACV,SAAS,QACT,oBAAoB,MAAM,SAAS;AACvC,QAAI,oBAAoB,UAAU,WAAW,QAAQ,GAAG;AACpD,yBAAmB,oBAAoB,MAAM,UAAU;AACvD,yBAAmB,oBAAoB,MAAM,UAAU;AACvD,2BACI,yBAAoB,eAAe,WAAnC,mBAA2C,MAAK;AACpD,yBAAmB,QAAQ;AAAA,IAC/B,WAAW,oBAAoB,UAAU,WAAW,KAAK,GAAG;AACxD,wBAAkB,oBAAoB,MAAM,UAAU;AACtD,2BACI,yBAAoB,eAAe,WAAnC,mBAA2C,MAAK;AACpD,yBAAmB,QAAQ;AAAA,IAC/B,WAAW,oBAAoB,UAAU,WAAW,OAAO,GAAG;AAC1D,wBAAkB,oBAAoB,MAAM,UAAU;AACtD,wBAAkB,oBAAoB,MAAM,UAAU;AACtD,0BAAkB,yBAAoB,eAAe,WAAnC,mBAA2C,MAAK;AAClE,wBAAkB,QAAQ;AAAA,IAC9B,WAAW,oBAAoB,UAAU,WAAW,MAAM,GAAG;AACzD,uBAAiB,oBAAoB,MAAM,UAAU;AACrD,0BAAkB,yBAAoB,eAAe,WAAnC,mBAA2C,MAAK;AAClE,wBAAkB,QAAQ;AAAA,IAC9B;AACA,WAAO;AAAA,MACH,MAAM;AAAA,QACF;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";import{detectOverflow as o}from"@floating-ui/dom";export const fullSize=(f={padding:0})=>({name:"fullSize",async fn(t){var c,l,r,h;const i=await o(t,f);let e=-i.top-i.bottom+t.rects.floating.height,a=-i.left-i.right+t.rects.floating.width;return t.placement.startsWith("bottom")?(e-=t.rects.reference.height,e-=t.rects.reference.y,e-=((c=t.middlewareData.offset)==null?void 0:c.y)||0,e+=f.padding):t.placement.startsWith("top")?(e=t.rects.reference.y,e-=((l=t.middlewareData.offset)==null?void 0:l.y)||0,e+=f.padding):t.placement.startsWith("right")?(a-=t.rects.reference.width,a-=t.rects.reference.x,a-=((r=t.middlewareData.offset)==null?void 0:r.x)||0,a+=f.padding):t.placement.startsWith("left")&&(a=t.rects.reference.x,a-=((h=t.middlewareData.offset)==null?void 0:h.x)||0,a+=f.padding),{data:{availableWidth:a,availableHeight:e}}}});
|
|
2
|
+
//# sourceMappingURL=fullSizePlugin.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["fullSizePlugin.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2022 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport {\n detectOverflow,\n MiddlewareArguments,\n MiddlewareReturn,\n} from '@floating-ui/dom';\n\nexport const fullSize = (options: { padding: number } = { padding: 0 }) => ({\n name: 'fullSize',\n async fn(middlewareArguments: MiddlewareArguments): Promise<\n MiddlewareReturn & {\n data: { availableWidth: number; availableHeight: number };\n }\n > {\n const overflow = await detectOverflow(middlewareArguments, options);\n let availableHeight =\n -overflow.top -\n overflow.bottom +\n middlewareArguments.rects.floating.height;\n let availableWidth =\n -overflow.left -\n overflow.right +\n middlewareArguments.rects.floating.width;\n if (middlewareArguments.placement.startsWith('bottom')) {\n availableHeight -= middlewareArguments.rects.reference.height;\n availableHeight -= middlewareArguments.rects.reference.y;\n availableHeight -=\n middlewareArguments.middlewareData.offset?.y || 0;\n availableHeight += options.padding;\n } else if (middlewareArguments.placement.startsWith('top')) {\n availableHeight = middlewareArguments.rects.reference.y;\n availableHeight -=\n middlewareArguments.middlewareData.offset?.y || 0;\n availableHeight += options.padding;\n } else if (middlewareArguments.placement.startsWith('right')) {\n availableWidth -= middlewareArguments.rects.reference.width;\n availableWidth -= middlewareArguments.rects.reference.x;\n availableWidth -= middlewareArguments.middlewareData.offset?.x || 0;\n availableWidth += options.padding;\n } else if (middlewareArguments.placement.startsWith('left')) {\n availableWidth = middlewareArguments.rects.reference.x;\n availableWidth -= middlewareArguments.middlewareData.offset?.x || 0;\n availableWidth += options.padding;\n }\n return {\n data: {\n availableWidth,\n availableHeight,\n },\n };\n },\n});\n"],
|
|
5
|
+
"mappings": "aAWA,OACI,kBAAAA,MAGG,mBAEA,aAAM,SAAW,CAACC,EAA+B,CAAE,QAAS,CAAE,KAAO,CACxE,KAAM,WACN,MAAM,GAAGC,EAIP,CAvBN,IAAAC,EAAAC,EAAAC,EAAAC,EAwBQ,MAAMC,EAAW,MAAMP,EAAeE,EAAqBD,CAAO,EAClE,IAAIO,EACA,CAACD,EAAS,IACVA,EAAS,OACTL,EAAoB,MAAM,SAAS,OACnCO,EACA,CAACF,EAAS,KACVA,EAAS,MACTL,EAAoB,MAAM,SAAS,MACvC,OAAIA,EAAoB,UAAU,WAAW,QAAQ,GACjDM,GAAmBN,EAAoB,MAAM,UAAU,OACvDM,GAAmBN,EAAoB,MAAM,UAAU,EACvDM,KACIL,EAAAD,EAAoB,eAAe,SAAnC,YAAAC,EAA2C,IAAK,EACpDK,GAAmBP,EAAQ,SACpBC,EAAoB,UAAU,WAAW,KAAK,GACrDM,EAAkBN,EAAoB,MAAM,UAAU,EACtDM,KACIJ,EAAAF,EAAoB,eAAe,SAAnC,YAAAE,EAA2C,IAAK,EACpDI,GAAmBP,EAAQ,SACpBC,EAAoB,UAAU,WAAW,OAAO,GACvDO,GAAkBP,EAAoB,MAAM,UAAU,MACtDO,GAAkBP,EAAoB,MAAM,UAAU,EACtDO,KAAkBJ,EAAAH,EAAoB,eAAe,SAAnC,YAAAG,EAA2C,IAAK,EAClEI,GAAkBR,EAAQ,SACnBC,EAAoB,UAAU,WAAW,MAAM,IACtDO,EAAiBP,EAAoB,MAAM,UAAU,EACrDO,KAAkBH,EAAAJ,EAAoB,eAAe,SAAnC,YAAAI,EAA2C,IAAK,EAClEG,GAAkBR,EAAQ,SAEvB,CACH,KAAM,CACF,eAAAQ,EACA,gBAAAD,CACJ,CACJ,CACJ,CACJ",
|
|
6
|
+
"names": ["detectOverflow", "options", "middlewareArguments", "_a", "_b", "_c", "_d", "overflow", "availableHeight", "availableWidth"]
|
|
7
|
+
}
|
package/src/index.d.ts
ADDED
package/src/index.dev.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
export * from "./Overlay.dev.js";
|
|
3
|
+
export * from "./OverlayTrigger.dev.js";
|
|
4
|
+
export * from "./overlay-types.dev.js";
|
|
5
|
+
export * from "./VirtualTrigger.dev.js";
|
|
6
|
+
export * from "./loader.dev.js";
|
|
7
|
+
export * from "./overlay-trigger-directive.dev.js";
|
|
8
|
+
//# sourceMappingURL=index.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["index.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nexport * from './Overlay.dev.js'\nexport * from './OverlayTrigger.dev.js'\nexport * from './overlay-types.dev.js'\nexport * from './VirtualTrigger.dev.js'\nexport * from './loader.dev.js'\nexport * from './overlay-trigger-directive.dev.js'\n"],
|
|
5
|
+
"mappings": ";AAWA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/src/index.js
ADDED
package/src/index.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["index.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nexport * from './Overlay.js';\nexport * from './OverlayTrigger.js';\nexport * from './overlay-types.js';\nexport * from './VirtualTrigger.js';\nexport * from './loader.js';\nexport * from './overlay-trigger-directive.js';\n"],
|
|
5
|
+
"mappings": "aAWA,WAAc,eACd,WAAc,sBACd,WAAc,qBACd,WAAc,sBACd,WAAc,cACd,WAAc",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/src/loader.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { OverlayOptions, OverlayOptionsV1, TriggerInteractionsV1 } from './overlay-types.js';
|
|
2
|
+
import { Overlay } from './Overlay.js';
|
|
3
|
+
export declare function openOverlay(trigger: HTMLElement, interaction: TriggerInteractionsV1, content: HTMLElement, optionsV1: OverlayOptionsV1): Promise<() => void>;
|
|
4
|
+
export declare function openOverlay(content: HTMLElement, options?: OverlayOptions): Promise<Overlay>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { Overlay } from "./Overlay.dev.js";
|
|
3
|
+
export async function openOverlay(triggerOrContent, interactionOrOptions, content, optionsV1) {
|
|
4
|
+
return Overlay.open(
|
|
5
|
+
triggerOrContent,
|
|
6
|
+
interactionOrOptions,
|
|
7
|
+
content,
|
|
8
|
+
optionsV1
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=loader.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["loader.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2023 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport type {\n OverlayOptions,\n OverlayOptionsV1,\n TriggerInteractionsV1,\n} from './overlay-types.dev.js'\nimport { Overlay } from './Overlay.dev.js'\n\n// Re-export Overlay.open and openOverlay to persist functionality from before 0.37.0.\n// Wrap it in a method (which needs duplicate argument typings) instead of exporting\n// the static member directly to ensure `this` is bound correctly therein.\nexport async function openOverlay(\n trigger: HTMLElement,\n interaction: TriggerInteractionsV1,\n content: HTMLElement,\n optionsV1: OverlayOptionsV1\n): Promise<() => void>;\nexport async function openOverlay(\n content: HTMLElement,\n options?: OverlayOptions\n): Promise<Overlay>;\nexport async function openOverlay(\n triggerOrContent: HTMLElement,\n interactionOrOptions: TriggerInteractionsV1 | OverlayOptions | undefined,\n content?: HTMLElement,\n optionsV1?: OverlayOptionsV1\n): Promise<Overlay | (() => void)> {\n return Overlay.open(\n triggerOrContent,\n interactionOrOptions as TriggerInteractionsV1,\n content as HTMLElement,\n optionsV1 as OverlayOptionsV1\n );\n}\n"],
|
|
5
|
+
"mappings": ";AAiBA,SAAS,eAAe;AAexB,sBAAsB,YAClB,kBACA,sBACA,SACA,WAC+B;AAC/B,SAAO,QAAQ;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/src/loader.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["loader.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2023 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport type {\n OverlayOptions,\n OverlayOptionsV1,\n TriggerInteractionsV1,\n} from './overlay-types.js';\nimport { Overlay } from './Overlay.js';\n\n// Re-export Overlay.open and openOverlay to persist functionality from before 0.37.0.\n// Wrap it in a method (which needs duplicate argument typings) instead of exporting\n// the static member directly to ensure `this` is bound correctly therein.\nexport async function openOverlay(\n trigger: HTMLElement,\n interaction: TriggerInteractionsV1,\n content: HTMLElement,\n optionsV1: OverlayOptionsV1\n): Promise<() => void>;\nexport async function openOverlay(\n content: HTMLElement,\n options?: OverlayOptions\n): Promise<Overlay>;\nexport async function openOverlay(\n triggerOrContent: HTMLElement,\n interactionOrOptions: TriggerInteractionsV1 | OverlayOptions | undefined,\n content?: HTMLElement,\n optionsV1?: OverlayOptionsV1\n): Promise<Overlay | (() => void)> {\n return Overlay.open(\n triggerOrContent,\n interactionOrOptions as TriggerInteractionsV1,\n content as HTMLElement,\n optionsV1 as OverlayOptionsV1\n );\n}\n"],
|
|
5
|
+
"mappings": "aAiBA,OAAS,WAAAA,MAAe,eAexB,sBAAsB,YAClBC,EACAC,EACAC,EACAC,EAC+B,CAC/B,OAAOJ,EAAQ,KACXC,EACAC,EACAC,EACAC,CACJ,CACJ",
|
|
6
|
+
"names": ["Overlay", "triggerOrContent", "interactionOrOptions", "content", "optionsV1"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class OverlayCloseEvent extends Event {
|
|
2
|
+
root?: HTMLElement;
|
|
3
|
+
constructor({ root }: {
|
|
4
|
+
root?: HTMLElement;
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
declare global {
|
|
8
|
+
interface GlobalEventHandlersEventMap {
|
|
9
|
+
'sp-overlay-close': CustomEvent<OverlayCloseEvent>;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["overlay-events.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2022 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nexport class OverlayCloseEvent extends Event {\n root?: HTMLElement;\n constructor({ root }: { root?: HTMLElement }) {\n super('sp-overlay-close', { bubbles: true, composed: true });\n this.root = root;\n }\n}\n\ndeclare global {\n interface GlobalEventHandlersEventMap {\n 'sp-overlay-close': CustomEvent<OverlayCloseEvent>;\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAYO,aAAM,0BAA0B,MAAM;AAAA,EAEzC,YAAY,EAAE,KAAK,GAA2B;AAC1C,UAAM,oBAAoB,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC;AAC3D,SAAK,OAAO;AAAA,EAChB;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["overlay-events.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2022 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nexport class OverlayCloseEvent extends Event {\n root?: HTMLElement;\n constructor({ root }: { root?: HTMLElement }) {\n super('sp-overlay-close', { bubbles: true, composed: true });\n this.root = root;\n }\n}\n\ndeclare global {\n interface GlobalEventHandlersEventMap {\n 'sp-overlay-close': CustomEvent<OverlayCloseEvent>;\n }\n}\n"],
|
|
5
|
+
"mappings": "aAYO,aAAM,0BAA0B,KAAM,CAEzC,YAAY,CAAE,KAAAA,CAAK,EAA2B,CAC1C,MAAM,mBAAoB,CAAE,QAAS,GAAM,SAAU,EAAK,CAAC,EAC3D,KAAK,KAAOA,CAChB,CACJ",
|
|
6
|
+
"names": ["root"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A timer to help with implementation of warnup/cooldown behavior as described here:
|
|
3
|
+
* https://spectrum.adobe.com/page/tooltip/#Immediate-or-delayed-appearance
|
|
4
|
+
*/
|
|
5
|
+
export declare class OverlayTimer {
|
|
6
|
+
private warmUpDelay;
|
|
7
|
+
private coolDownDelay;
|
|
8
|
+
private isWarm;
|
|
9
|
+
private cooldownTimeout?;
|
|
10
|
+
private component?;
|
|
11
|
+
private timeout;
|
|
12
|
+
private promise?;
|
|
13
|
+
private resolve?;
|
|
14
|
+
constructor(options?: {
|
|
15
|
+
warmUpDelay?: number;
|
|
16
|
+
coolDownDelay?: number;
|
|
17
|
+
});
|
|
18
|
+
openTimer(component: HTMLElement): Promise<boolean>;
|
|
19
|
+
close(component: HTMLElement): void;
|
|
20
|
+
private resetCooldownTimer;
|
|
21
|
+
private cancelCooldownTimer;
|
|
22
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const DEFAULT_WARMUP = 1e3;
|
|
3
|
+
const DEFAULT_COOLDOWN = 1e3;
|
|
4
|
+
export class OverlayTimer {
|
|
5
|
+
constructor(options = {}) {
|
|
6
|
+
this.warmUpDelay = DEFAULT_WARMUP;
|
|
7
|
+
this.coolDownDelay = DEFAULT_COOLDOWN;
|
|
8
|
+
this.isWarm = false;
|
|
9
|
+
this.timeout = 0;
|
|
10
|
+
Object.assign(this, options);
|
|
11
|
+
}
|
|
12
|
+
async openTimer(component) {
|
|
13
|
+
this.cancelCooldownTimer();
|
|
14
|
+
if (!this.component || component !== this.component) {
|
|
15
|
+
if (this.component) {
|
|
16
|
+
this.close(this.component);
|
|
17
|
+
this.cancelCooldownTimer();
|
|
18
|
+
}
|
|
19
|
+
this.component = component;
|
|
20
|
+
if (this.isWarm) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
this.promise = new Promise((resolve) => {
|
|
24
|
+
this.resolve = resolve;
|
|
25
|
+
this.timeout = window.setTimeout(() => {
|
|
26
|
+
if (this.resolve) {
|
|
27
|
+
this.resolve(false);
|
|
28
|
+
this.isWarm = true;
|
|
29
|
+
}
|
|
30
|
+
}, this.warmUpDelay);
|
|
31
|
+
});
|
|
32
|
+
return this.promise;
|
|
33
|
+
} else if (this.promise) {
|
|
34
|
+
return this.promise;
|
|
35
|
+
} else {
|
|
36
|
+
throw new Error("Inconsistent state");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
close(component) {
|
|
40
|
+
if (this.component && this.component === component) {
|
|
41
|
+
this.resetCooldownTimer();
|
|
42
|
+
if (this.timeout > 0) {
|
|
43
|
+
clearTimeout(this.timeout);
|
|
44
|
+
this.timeout = 0;
|
|
45
|
+
}
|
|
46
|
+
if (this.resolve) {
|
|
47
|
+
this.resolve(true);
|
|
48
|
+
delete this.resolve;
|
|
49
|
+
}
|
|
50
|
+
delete this.promise;
|
|
51
|
+
delete this.component;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
resetCooldownTimer() {
|
|
55
|
+
if (this.isWarm) {
|
|
56
|
+
if (this.cooldownTimeout) {
|
|
57
|
+
window.clearTimeout(this.cooldownTimeout);
|
|
58
|
+
}
|
|
59
|
+
this.cooldownTimeout = window.setTimeout(() => {
|
|
60
|
+
this.isWarm = false;
|
|
61
|
+
delete this.cooldownTimeout;
|
|
62
|
+
}, this.coolDownDelay);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
cancelCooldownTimer() {
|
|
66
|
+
if (this.cooldownTimeout) {
|
|
67
|
+
window.clearTimeout(this.cooldownTimeout);
|
|
68
|
+
}
|
|
69
|
+
delete this.cooldownTimeout;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=overlay-timer.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["overlay-timer.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nconst DEFAULT_WARMUP = 1000;\nconst DEFAULT_COOLDOWN = 1000;\n\n/**\n * A timer to help with implementation of warnup/cooldown behavior as described here:\n * https://spectrum.adobe.com/page/tooltip/#Immediate-or-delayed-appearance\n */\nexport class OverlayTimer {\n private warmUpDelay = DEFAULT_WARMUP;\n private coolDownDelay = DEFAULT_COOLDOWN;\n\n private isWarm = false;\n private cooldownTimeout?: number;\n\n private component?: HTMLElement;\n private timeout = 0;\n private promise?: Promise<boolean>;\n private resolve?: (cancelled: boolean) => void;\n\n constructor(\n options: { warmUpDelay?: number; coolDownDelay?: number } = {}\n ) {\n Object.assign(this, options);\n }\n\n public async openTimer(component: HTMLElement): Promise<boolean> {\n this.cancelCooldownTimer();\n\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\n if (this.isWarm) {\n return false;\n }\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 /* c8 ignore next 4 */\n } else {\n // This should never happen\n throw new Error('Inconsistent state');\n }\n }\n\n public close(component: HTMLElement): void {\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\n private resetCooldownTimer(): void {\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\n private cancelCooldownTimer(): void {\n if (this.cooldownTimeout) {\n window.clearTimeout(this.cooldownTimeout);\n }\n delete this.cooldownTimeout;\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAYA,MAAM,iBAAiB;AACvB,MAAM,mBAAmB;AAMlB,aAAM,aAAa;AAAA,EAYtB,YACI,UAA4D,CAAC,GAC/D;AAbF,SAAQ,cAAc;AACtB,SAAQ,gBAAgB;AAExB,SAAQ,SAAS;AAIjB,SAAQ,UAAU;AAOd,WAAO,OAAO,MAAM,OAAO;AAAA,EAC/B;AAAA,EAEA,MAAa,UAAU,WAA0C;AAC7D,SAAK,oBAAoB;AAEzB,QAAI,CAAC,KAAK,aAAa,cAAc,KAAK,WAAW;AACjD,UAAI,KAAK,WAAW;AAChB,aAAK,MAAM,KAAK,SAAS;AACzB,aAAK,oBAAoB;AAAA,MAC7B;AACA,WAAK,YAAY;AAEjB,UAAI,KAAK,QAAQ;AACb,eAAO;AAAA,MACX;AAEA,WAAK,UAAU,IAAI,QAAQ,CAAC,YAAY;AACpC,aAAK,UAAU;AACf,aAAK,UAAU,OAAO,WAAW,MAAM;AACnC,cAAI,KAAK,SAAS;AACd,iBAAK,QAAQ,KAAK;AAClB,iBAAK,SAAS;AAAA,UAClB;AAAA,QACJ,GAAG,KAAK,WAAW;AAAA,MACvB,CAAC;AACD,aAAO,KAAK;AAAA,IAChB,WAAW,KAAK,SAAS;AACrB,aAAO,KAAK;AAAA,IAEhB,OAAO;AAEH,YAAM,IAAI,MAAM,oBAAoB;AAAA,IACxC;AAAA,EACJ;AAAA,EAEO,MAAM,WAA8B;AACvC,QAAI,KAAK,aAAa,KAAK,cAAc,WAAW;AAChD,WAAK,mBAAmB;AACxB,UAAI,KAAK,UAAU,GAAG;AAClB,qBAAa,KAAK,OAAO;AACzB,aAAK,UAAU;AAAA,MACnB;AACA,UAAI,KAAK,SAAS;AACd,aAAK,QAAQ,IAAI;AACjB,eAAO,KAAK;AAAA,MAChB;AACA,aAAO,KAAK;AACZ,aAAO,KAAK;AAAA,IAChB;AAAA,EACJ;AAAA,EAEQ,qBAA2B;AAC/B,QAAI,KAAK,QAAQ;AACb,UAAI,KAAK,iBAAiB;AACtB,eAAO,aAAa,KAAK,eAAe;AAAA,MAC5C;AACA,WAAK,kBAAkB,OAAO,WAAW,MAAM;AAC3C,aAAK,SAAS;AACd,eAAO,KAAK;AAAA,MAChB,GAAG,KAAK,aAAa;AAAA,IACzB;AAAA,EACJ;AAAA,EAEQ,sBAA4B;AAChC,QAAI,KAAK,iBAAiB;AACtB,aAAO,aAAa,KAAK,eAAe;AAAA,IAC5C;AACA,WAAO,KAAK;AAAA,EAChB;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const t=1e3,s=1e3;export class OverlayTimer{constructor(e={}){this.warmUpDelay=1e3;this.coolDownDelay=1e3;this.isWarm=!1;this.timeout=0;Object.assign(this,e)}async openTimer(e){if(this.cancelCooldownTimer(),!this.component||e!==this.component)return this.component&&(this.close(this.component),this.cancelCooldownTimer()),this.component=e,this.isWarm?!1:(this.promise=new Promise(o=>{this.resolve=o,this.timeout=window.setTimeout(()=>{this.resolve&&(this.resolve(!1),this.isWarm=!0)},this.warmUpDelay)}),this.promise);if(this.promise)return this.promise;throw new Error("Inconsistent state")}close(e){this.component&&this.component===e&&(this.resetCooldownTimer(),this.timeout>0&&(clearTimeout(this.timeout),this.timeout=0),this.resolve&&(this.resolve(!0),delete this.resolve),delete this.promise,delete this.component)}resetCooldownTimer(){this.isWarm&&(this.cooldownTimeout&&window.clearTimeout(this.cooldownTimeout),this.cooldownTimeout=window.setTimeout(()=>{this.isWarm=!1,delete this.cooldownTimeout},this.coolDownDelay))}cancelCooldownTimer(){this.cooldownTimeout&&window.clearTimeout(this.cooldownTimeout),delete this.cooldownTimeout}}
|
|
2
|
+
//# sourceMappingURL=overlay-timer.js.map
|