@spectrum-web-components/overlay 0.31.1-overlay.29 → 0.31.1-react.21

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.
Files changed (156) hide show
  1. package/active-overlay.d.ts +6 -0
  2. package/active-overlay.dev.js +5 -0
  3. package/{sp-overlay.dev.js.map → active-overlay.dev.js.map} +3 -3
  4. package/active-overlay.js +2 -0
  5. package/{sp-overlay.js.map → active-overlay.js.map} +4 -4
  6. package/custom-elements.json +1215 -0
  7. package/package.json +21 -50
  8. package/src/ActiveOverlay.d.ts +84 -0
  9. package/src/ActiveOverlay.dev.js +517 -0
  10. package/src/ActiveOverlay.dev.js.map +7 -0
  11. package/src/ActiveOverlay.js +16 -0
  12. package/src/ActiveOverlay.js.map +7 -0
  13. package/src/OverlayTrigger.d.ts +31 -23
  14. package/src/OverlayTrigger.dev.js +245 -135
  15. package/src/OverlayTrigger.dev.js.map +3 -3
  16. package/src/OverlayTrigger.js +22 -52
  17. package/src/OverlayTrigger.js.map +3 -3
  18. package/src/VirtualTrigger.dev.js +2 -0
  19. package/src/VirtualTrigger.dev.js.map +2 -2
  20. package/src/VirtualTrigger.js +1 -1
  21. package/src/VirtualTrigger.js.map +3 -3
  22. package/src/active-overlay.css.dev.js +13 -0
  23. package/src/active-overlay.css.dev.js.map +7 -0
  24. package/src/active-overlay.css.js +10 -0
  25. package/src/active-overlay.css.js.map +7 -0
  26. package/src/index.d.ts +3 -2
  27. package/src/index.dev.js +3 -2
  28. package/src/index.dev.js.map +2 -2
  29. package/src/index.js +1 -1
  30. package/src/index.js.map +2 -2
  31. package/src/loader.d.ts +2 -2
  32. package/src/loader.dev.js +19 -2
  33. package/src/loader.dev.js.map +2 -2
  34. package/src/loader.js +1 -1
  35. package/src/loader.js.map +3 -3
  36. package/src/overlay-stack.d.ts +50 -0
  37. package/src/overlay-stack.dev.js +514 -0
  38. package/src/overlay-stack.dev.js.map +7 -0
  39. package/src/overlay-stack.js +33 -0
  40. package/src/overlay-stack.js.map +7 -0
  41. package/src/overlay-trigger.css.dev.js +1 -1
  42. package/src/overlay-trigger.css.dev.js.map +1 -1
  43. package/src/overlay-trigger.css.js +1 -1
  44. package/src/overlay-trigger.css.js.map +1 -1
  45. package/src/overlay-types.d.ts +4 -6
  46. package/src/overlay-types.dev.js +0 -1
  47. package/src/overlay-types.dev.js.map +3 -3
  48. package/src/overlay-types.js +1 -1
  49. package/src/overlay-types.js.map +3 -3
  50. package/src/overlay-utils.d.ts +3 -0
  51. package/src/overlay-utils.dev.js +31 -0
  52. package/src/overlay-utils.dev.js.map +7 -0
  53. package/src/overlay-utils.js +2 -0
  54. package/src/overlay-utils.js.map +7 -0
  55. package/src/overlay.d.ts +59 -0
  56. package/src/overlay.dev.js +127 -0
  57. package/src/overlay.dev.js.map +7 -0
  58. package/src/overlay.js +2 -0
  59. package/src/overlay.js.map +7 -0
  60. package/stories/overlay-story-components.js +26 -24
  61. package/stories/overlay-story-components.js.map +2 -2
  62. package/stories/overlay.stories.js +730 -733
  63. package/stories/overlay.stories.js.map +2 -2
  64. package/sync/overlay-trigger.d.ts +0 -4
  65. package/sync/overlay-trigger.dev.js +4 -1
  66. package/sync/overlay-trigger.dev.js.map +2 -2
  67. package/sync/overlay-trigger.js +1 -1
  68. package/sync/overlay-trigger.js.map +3 -3
  69. package/test/benchmark/basic-test.js +1 -1
  70. package/test/benchmark/basic-test.js.map +1 -1
  71. package/test/index.js +428 -461
  72. package/test/index.js.map +3 -3
  73. package/test/overlay-lifecycle.test.js +106 -34
  74. package/test/overlay-lifecycle.test.js.map +2 -2
  75. package/test/overlay-trigger-click.test.js +5 -11
  76. package/test/overlay-trigger-click.test.js.map +2 -2
  77. package/test/overlay-trigger-extended.test.js +9 -3
  78. package/test/overlay-trigger-extended.test.js.map +2 -2
  79. package/test/overlay-trigger-hover-click.test.js +23 -23
  80. package/test/overlay-trigger-hover-click.test.js.map +2 -2
  81. package/test/overlay-trigger-hover.test.js +34 -40
  82. package/test/overlay-trigger-hover.test.js.map +2 -2
  83. package/test/overlay-trigger-longpress.test.js +80 -98
  84. package/test/overlay-trigger-longpress.test.js.map +2 -2
  85. package/test/overlay-trigger-sync.test.js +1 -1
  86. package/test/overlay-trigger-sync.test.js.map +2 -2
  87. package/test/overlay-trigger.test.js +1 -1
  88. package/test/overlay-trigger.test.js.map +2 -2
  89. package/test/overlay-update.test.js +4 -4
  90. package/test/overlay-update.test.js.map +2 -2
  91. package/test/overlay.test.js +237 -240
  92. package/test/overlay.test.js.map +3 -3
  93. package/sp-overlay.d.ts +0 -6
  94. package/sp-overlay.dev.js +0 -5
  95. package/sp-overlay.js +0 -2
  96. package/src/Overlay.d.ts +0 -28
  97. package/src/Overlay.dev.js +0 -88
  98. package/src/Overlay.dev.js.map +0 -7
  99. package/src/Overlay.js +0 -2
  100. package/src/Overlay.js.map +0 -7
  101. package/src/OverlayBase.d.ts +0 -122
  102. package/src/OverlayBase.dev.js +0 -701
  103. package/src/OverlayBase.dev.js.map +0 -7
  104. package/src/OverlayBase.js +0 -17
  105. package/src/OverlayBase.js.map +0 -7
  106. package/src/OverlayDialog.d.ts +0 -8
  107. package/src/OverlayDialog.dev.js +0 -160
  108. package/src/OverlayDialog.dev.js.map +0 -7
  109. package/src/OverlayDialog.js +0 -2
  110. package/src/OverlayDialog.js.map +0 -7
  111. package/src/OverlayNoPopover.d.ts +0 -8
  112. package/src/OverlayNoPopover.dev.js +0 -149
  113. package/src/OverlayNoPopover.dev.js.map +0 -7
  114. package/src/OverlayNoPopover.js +0 -2
  115. package/src/OverlayNoPopover.js.map +0 -7
  116. package/src/OverlayPopover.d.ts +0 -8
  117. package/src/OverlayPopover.dev.js +0 -199
  118. package/src/OverlayPopover.dev.js.map +0 -7
  119. package/src/OverlayPopover.js +0 -2
  120. package/src/OverlayPopover.js.map +0 -7
  121. package/src/OverlayStack.d.ts +0 -24
  122. package/src/OverlayStack.dev.js +0 -125
  123. package/src/OverlayStack.dev.js.map +0 -7
  124. package/src/OverlayStack.js +0 -2
  125. package/src/OverlayStack.js.map +0 -7
  126. package/src/PlacementController.d.ts +0 -36
  127. package/src/PlacementController.dev.js +0 -193
  128. package/src/PlacementController.dev.js.map +0 -7
  129. package/src/PlacementController.js +0 -2
  130. package/src/PlacementController.js.map +0 -7
  131. package/src/fullSizePlugin.d.ts +0 -12
  132. package/src/fullSizePlugin.dev.js +0 -39
  133. package/src/fullSizePlugin.dev.js.map +0 -7
  134. package/src/fullSizePlugin.js +0 -2
  135. package/src/fullSizePlugin.js.map +0 -7
  136. package/src/overlay-base.css.dev.js +0 -9
  137. package/src/overlay-base.css.dev.js.map +0 -7
  138. package/src/overlay-base.css.js +0 -6
  139. package/src/overlay-base.css.js.map +0 -7
  140. package/src/placement.d.ts +0 -21
  141. package/src/placement.dev.js +0 -111
  142. package/src/placement.dev.js.map +0 -7
  143. package/src/placement.js +0 -2
  144. package/src/placement.js.map +0 -7
  145. package/src/topLayerOverTransforms.d.ts +0 -22
  146. package/src/topLayerOverTransforms.dev.js +0 -165
  147. package/src/topLayerOverTransforms.dev.js.map +0 -7
  148. package/src/topLayerOverTransforms.js +0 -2
  149. package/src/topLayerOverTransforms.js.map +0 -7
  150. package/stories/overlay-element.stories.js +0 -247
  151. package/stories/overlay-element.stories.js.map +0 -7
  152. package/test/overlay-element.test-vrt.js +0 -5
  153. package/test/overlay-element.test-vrt.js.map +0 -7
  154. package/test/overlay-element.test.js +0 -664
  155. package/test/overlay-element.test.js.map +0 -7
  156. /package/src/{overlay-base.css.d.ts → active-overlay.css.d.ts} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["OverlayTrigger.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\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n query,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport {\n isAndroid,\n isIOS,\n} from '@spectrum-web-components/shared/src/platform.js';\n\nimport { OverlayTriggerInteractions } from './overlay-types';\nimport overlayTriggerStyles from './overlay-trigger.css.js';\nimport '../sp-overlay.dev.js'\nimport { Placement } from '@floating-ui/dom';\nimport { BeforetoggleOpenEvent, OverlayBase } from './OverlayBase.dev.js'\n\nexport type OverlayContentTypes = 'click' | 'hover' | 'longpress';\n\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};\n\n/**\n * @element overlay-trigger\n *\n * @slot trigger - The content that will trigger the various overlays\n * @slot hover-content - The content that will be displayed on hover\n * @slot click-content - The content that will be displayed on click\n * @slot longpress-content - The content that will be displayed on click\n *\n * @fires sp-opened - Announces that the overlay has been opened\n * @fires sp-closed - Announces that the overlay has been closed\n */\nexport class OverlayTrigger extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [overlayTriggerStyles];\n }\n\n /**\n * @type {\"auto\" | \"auto-start\" | \"auto-end\" | \"top\" | \"bottom\" | \"right\" | \"left\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\" | \"right-start\" | \"right-end\" | \"left-start\" | \"left-end\" | \"none\"}\n * @attr\n */\n @property({ reflect: true })\n public placement?: Placement;\n\n @property()\n public type?: OverlayTriggerInteractions;\n\n @property({ type: Number })\n public offset = 6;\n\n @property({ reflect: true })\n public open?: OverlayContentTypes;\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @state()\n public hasLongpressContent = false;\n\n private longpressDescriptor?: HTMLElement;\n\n @state()\n private clickContent: HTMLElement[] = [];\n\n private clickPlacement?: Placement;\n\n @state()\n private longpressContent: HTMLElement[] = [];\n\n private longpressPlacement?: Placement;\n\n @state()\n private hoverContent: HTMLElement[] = [];\n\n private hoverPlacement?: Placement;\n\n @state()\n private targetContent: HTMLElement[] = [];\n\n @query('#click-overlay', true)\n clickOverlayElement!: OverlayBase;\n\n @query('#longpress-overlay', true)\n longpressOverlayElement!: OverlayBase;\n\n @query('#hover-overlay', true)\n hoverOverlayElement!: OverlayBase;\n\n private _longpressId = `longpress-describedby-descriptor`;\n\n private getAssignedElementsFromSlot(slot: HTMLSlotElement): HTMLElement[] {\n return slot.assignedElements({ flatten: true }) as HTMLElement[];\n }\n\n private handleTriggerContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.targetContent = this.getAssignedElementsFromSlot(event.target);\n }\n\n private handleClickContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.clickContent = this.getAssignedElementsFromSlot(event.target);\n }\n\n private handleLongpressContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.longpressContent = this.getAssignedElementsFromSlot(event.target);\n }\n\n private handleHoverContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.hoverContent = this.getAssignedElementsFromSlot(event.target);\n }\n\n private handleBeforetoggle(event: BeforetoggleOpenEvent): void {\n const target = event.composedPath()[0];\n let type: OverlayContentTypes;\n if (target === this.clickOverlayElement) {\n type = 'click';\n } else if (target === this.longpressOverlayElement) {\n type = 'longpress';\n } else if (target === this.hoverOverlayElement) {\n type = 'hover';\n } else {\n return;\n }\n if (event.newState === 'open') {\n this.open = type;\n } else if (this.open === type) {\n this.open = undefined;\n }\n }\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('clickContent')) {\n this.clickPlacement =\n ((this.clickContent[0]?.getAttribute('placement') ||\n this.clickContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n if (changes.has('hoverContent')) {\n this.hoverPlacement =\n ((this.hoverContent[0]?.getAttribute('placement') ||\n this.hoverContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n if (changes.has('longpressContent')) {\n this.longpressPlacement =\n ((this.longpressContent[0]?.getAttribute('placement') ||\n this.longpressContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n super.update(changes);\n }\n\n protected override render(): TemplateResult {\n // Keyboard event availability documented in README.md\n /* eslint-disable lit-a11y/click-events-have-key-events */\n return html`\n <slot\n id=\"trigger\"\n name=\"trigger\"\n @slotchange=${this.handleTriggerContent}\n ></slot>\n <div id=\"overlay-content\">\n <sp-overlay\n id=\"click-overlay\"\n ?disabled=${this.disabled || !this.clickContent.length}\n ?open=${this.open === 'click' && !!this.clickContent.length}\n .offset=${this.offset}\n .placement=${this.clickPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'click'}\n .type=${this.type !== 'modal' ? 'auto' : 'modal'}\n @beforetoggle=${this.handleBeforetoggle}\n >\n <slot\n name=\"click-content\"\n @slotchange=${this.handleClickContent}\n ></slot>\n </sp-overlay>\n <sp-overlay\n id=\"longpress-overlay\"\n ?disabled=${this.disabled || !this.longpressContent.length}\n ?open=${this.open === 'longpress' &&\n !!this.longpressContent.length}\n .offset=${this.offset}\n .placement=${this.longpressPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'longpress'}\n .type=${'auto'}\n @beforetoggle=${this.handleBeforetoggle}\n >\n <slot\n name=\"longpress-content\"\n @slotchange=${this.handleLongpressContent}\n ></slot>\n <slot name=\"longpress-describedby-descriptor\"></slot>\n </sp-overlay>\n <sp-overlay\n id=\"hover-overlay\"\n ?disabled=${this.disabled ||\n !this.hoverContent.length ||\n (!!this.open && this.open !== 'hover')}\n ?open=${this.open === 'hover' && !!this.hoverContent.length}\n .offset=${this.offset}\n .placement=${this.hoverPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'hover'}\n .type=${'hint'}\n @beforetoggle=${this.handleBeforetoggle}\n >\n <slot\n name=\"hover-content\"\n @slotchange=${this.handleHoverContent}\n ></slot>\n </sp-overlay>\n <slot name=${this._longpressId}></slot>\n </div>\n `;\n /* eslint-enable lit-a11y/click-events-have-key-events */\n }\n\n protected override updated(changes: PropertyValues<this>): void {\n super.updated(changes);\n if (this.disabled && changes.has('disabled')) {\n this.open = undefined;\n return;\n }\n if (\n changes.has('hasLongpressContent') &&\n typeof changes.get('hasLongpressContent') !== 'undefined'\n ) {\n this.manageLongpressDescriptor();\n }\n }\n\n protected manageLongpressDescriptor(): void {\n const trigger = this.querySelector(\n '[slot=\"trigger\"]'\n ) as SpectrumElement;\n const ariaDescribedby = trigger.getAttribute('aria-describedby');\n let descriptors = ariaDescribedby ? ariaDescribedby.split(/\\s+/) : [];\n\n if (this.hasLongpressContent) {\n if (!this.longpressDescriptor) {\n this.longpressDescriptor = document.createElement(\n 'div'\n ) as HTMLElement;\n\n this.longpressDescriptor.id = this._longpressId;\n this.longpressDescriptor.slot = this._longpressId;\n }\n const messageType = isIOS() || isAndroid() ? 'touch' : 'keyboard';\n this.longpressDescriptor.textContent =\n LONGPRESS_INSTRUCTIONS[messageType];\n this.appendChild(this.longpressDescriptor);\n descriptors.push(this._longpressId);\n } else {\n if (this.longpressDescriptor) this.longpressDescriptor.remove();\n descriptors = descriptors.filter(\n (descriptor) => descriptor !== this._longpressId\n );\n }\n if (descriptors.length) {\n trigger.setAttribute('aria-describedby', descriptors.join(' '));\n } else {\n trigger.removeAttribute('aria-describedby');\n }\n }\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n return complete;\n }\n\n protected override willUpdate(): void {\n if ((this.placement as unknown as 'none') === 'none') {\n this.placement = undefined;\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
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\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport type { LongpressEvent } from '@spectrum-web-components/action-button';\nimport { firstFocusableIn } from '@spectrum-web-components/shared/src/first-focusable-in.js';\nimport {\n isAndroid,\n isIOS,\n} from '@spectrum-web-components/shared/src/platform.js';\n\nimport {\n OverlayOpenCloseDetail,\n OverlayOptions,\n OverlayTriggerInteractions,\n Placement,\n TriggerInteractions,\n} from './overlay-types';\nimport { openOverlay } from './loader.dev.js'\nimport overlayTriggerStyles from './overlay-trigger.css.js';\n\nexport type OverlayContentTypes = 'click' | 'hover' | 'longpress';\n\ntype closeOverlay =\n | 'closeClickOverlay'\n | 'closeHoverOverlay'\n | 'closeLongpressOverlay';\n\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};\n\n/**\n * @element overlay-trigger\n *\n * @slot trigger - The content that will trigger the various overlays\n * @slot hover-content - The content that will be displayed on hover\n * @slot click-content - The content that will be displayed on click\n * @slot longpress-content - The content that will be displayed on click\n *\n * @fires sp-opened - Announces that the overlay has been opened\n * @fires sp-closed - Announces that the overlay has been closed\n */\nexport class OverlayTrigger extends SpectrumElement {\n private closeClickOverlay?: Promise<() => void>;\n private closeLongpressOverlay?: Promise<() => void>;\n private closeHoverOverlay?: Promise<() => void>;\n\n public static override get styles(): CSSResultArray {\n return [overlayTriggerStyles];\n }\n\n /**\n * @type {\"auto\" | \"auto-start\" | \"auto-end\" | \"top\" | \"bottom\" | \"right\" | \"left\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\" | \"right-start\" | \"right-end\" | \"left-start\" | \"left-end\" | \"none\"}\n * @attr\n */\n @property({ reflect: true })\n public placement: Placement = 'bottom';\n\n @property()\n public type?: OverlayTriggerInteractions;\n\n @property({ type: Number, reflect: true })\n public offset = 6;\n\n @property({ reflect: true })\n public open?: OverlayContentTypes;\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @state()\n public hasLongpressContent = false;\n\n private longpressDescriptor?: HTMLElement;\n private clickContent?: HTMLElement;\n private longpressContent?: HTMLElement;\n private hoverContent?: HTMLElement;\n private targetContent?: HTMLElement;\n private overlaidContent?: HTMLElement;\n\n private _longpressId = `longpress-describedby-descriptor`;\n\n private handleClose(event?: CustomEvent<OverlayOpenCloseDetail>): void {\n if (\n event &&\n event.detail.interaction !== this.open &&\n event.detail.interaction !== this.type\n ) {\n return;\n }\n this.removeAttribute('open');\n }\n\n protected override render(): TemplateResult {\n // Keyboard event availability documented in README.md\n /* eslint-disable lit-a11y/click-events-have-key-events */\n return html`\n <slot\n id=\"trigger\"\n @click=${this.onTrigger}\n @longpress=${this.onTrigger}\n @mouseenter=${this.onTrigger}\n @mouseleave=${this.onTrigger}\n @focusin=${this.onTrigger}\n @focusout=${this.onTrigger}\n @sp-closed=${this.handleClose}\n @slotchange=${this.onTargetSlotChange}\n name=\"trigger\"\n ></slot>\n <div id=\"overlay-content\">\n <slot\n @slotchange=${this.onClickSlotChange}\n name=\"click-content\"\n ></slot>\n <slot\n @slotchange=${this.onLongpressSlotChange}\n name=\"longpress-content\"\n ></slot>\n <slot\n @slotchange=${this.onHoverSlotChange}\n name=\"hover-content\"\n ></slot>\n <slot name=${this._longpressId}></slot>\n </div>\n `;\n /* eslint-enable lit-a11y/click-events-have-key-events */\n }\n\n protected override updated(changes: PropertyValues<this>): void {\n super.updated(changes);\n if (this.disabled && changes.has('disabled')) {\n this.closeAllOverlays();\n return;\n }\n if (changes.has('open')) {\n this.manageOpen();\n }\n if (changes.has('hasLongpressContent')) {\n this.manageLongpressDescriptor();\n }\n }\n\n protected manageLongpressDescriptor(): void {\n const trigger = this.querySelector(\n '[slot=\"trigger\"]'\n ) as SpectrumElement;\n const ariaDescribedby = trigger.getAttribute('aria-describedby');\n let descriptors = ariaDescribedby ? ariaDescribedby.split(/\\s+/) : [];\n\n if (this.hasLongpressContent) {\n if (!this.longpressDescriptor) {\n this.longpressDescriptor = document.createElement(\n 'div'\n ) as HTMLElement;\n\n this.longpressDescriptor.id = this._longpressId;\n this.longpressDescriptor.slot = this._longpressId;\n }\n const messageType = isIOS() || isAndroid() ? 'touch' : 'keyboard';\n this.longpressDescriptor.textContent =\n LONGPRESS_INSTRUCTIONS[messageType];\n this.appendChild(this.longpressDescriptor);\n descriptors.push(this._longpressId);\n } else {\n if (this.longpressDescriptor) this.longpressDescriptor.remove();\n descriptors = descriptors.filter(\n (descriptor) => descriptor !== this._longpressId\n );\n }\n if (descriptors.length) {\n trigger.setAttribute('aria-describedby', descriptors.join(' '));\n } else {\n trigger.removeAttribute('aria-describedby');\n }\n }\n\n private closeAllOverlays(): void {\n if (this.abortOverlay) this.abortOverlay(true);\n (\n [\n 'closeClickOverlay',\n 'closeHoverOverlay',\n 'closeLongpressOverlay',\n ] as closeOverlay[]\n ).forEach(async (name) => {\n const canClose = this[name] as Promise<() => void>;\n if (canClose == null) return;\n delete this[name];\n (await canClose)();\n });\n this.overlaidContent = undefined;\n }\n\n private manageOpen(): void {\n const openHandlers: Record<OverlayContentTypes | 'none', () => void> = {\n click: () => this.onTriggerClick(),\n hover: () => this.onTriggerMouseEnter(),\n longpress: () => this.onTriggerLongpress(),\n none: () => this.closeAllOverlays(),\n };\n openHandlers[this.open ?? 'none']();\n }\n\n private async openOverlay(\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void> {\n this.openStatePromise = new Promise(\n (res) => (this.openStateResolver = res)\n );\n this.addEventListener(\n 'sp-opened',\n () => {\n this.openStateResolver();\n },\n { once: true }\n );\n this.overlaidContent = content;\n return OverlayTrigger.openOverlay(\n target,\n interaction,\n content,\n options\n );\n }\n\n public static openOverlay = async (\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void> => {\n return openOverlay(target, interaction, content, options);\n };\n\n private get overlayOptions(): OverlayOptions {\n return {\n offset: this.offset,\n placement: this.placement,\n receivesFocus:\n !this.type || this.type === 'inline' || this.open === 'hover'\n ? undefined\n : 'auto',\n };\n }\n\n private onTrigger(event: CustomEvent<LongpressEvent>): void {\n const mouseIsEnteringHoverContent =\n event.type === 'mouseleave' &&\n this.open === 'hover' &&\n (event as unknown as MouseEvent).relatedTarget ===\n this.overlaidContent;\n if (mouseIsEnteringHoverContent && this.overlaidContent) {\n this.overlaidContent.addEventListener(\n 'mouseleave',\n (event: MouseEvent) => {\n const mouseIsEnteringTrigger =\n event.relatedTarget === this.targetContent;\n if (mouseIsEnteringTrigger) {\n return;\n }\n this.onTrigger(\n event as unknown as CustomEvent<LongpressEvent>\n );\n },\n { once: true }\n );\n return;\n }\n if (this.disabled) return;\n\n switch (event.type) {\n case 'mouseenter':\n case 'focusin':\n if (!this.open && this.hoverContent) {\n this.open = 'hover';\n }\n return;\n case 'mouseleave':\n case 'focusout':\n if (this.open === 'hover') {\n this.handleClose();\n }\n return;\n case 'click':\n if (this.clickContent) {\n this.open = event.type;\n }\n return;\n case 'longpress':\n if (this.longpressContent) {\n this._longpressEvent = event;\n this.open = event.type;\n }\n return;\n }\n }\n\n private prepareToFocusOverlayContent(overlayContent: HTMLElement): void {\n if (this.type !== 'modal') {\n return;\n }\n const firstFocusable = firstFocusableIn(overlayContent);\n if (!firstFocusable) {\n overlayContent.tabIndex = 0;\n }\n }\n\n public async onTriggerClick(): Promise<void> {\n if (\n !this.targetContent ||\n !this.clickContent ||\n this.closeClickOverlay\n ) {\n return;\n }\n const { targetContent, clickContent } = this;\n this.closeAllOverlays();\n this.prepareToFocusOverlayContent(clickContent);\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = true;\n }\n this.closeClickOverlay = this.openOverlay(\n targetContent,\n this.type ? this.type : 'click',\n clickContent,\n this.overlayOptions\n );\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = false;\n }\n }\n\n private _longpressEvent?: CustomEvent<LongpressEvent>;\n\n private async onTriggerLongpress(): Promise<void> {\n if (\n !this.targetContent ||\n !this.longpressContent ||\n this.closeLongpressOverlay\n ) {\n return;\n }\n const { targetContent, longpressContent } = this;\n this.closeAllOverlays();\n this.prepareToFocusOverlayContent(longpressContent);\n const notImmediatelyClosable =\n this._longpressEvent?.detail?.source !== 'keyboard';\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = true;\n }\n this.closeLongpressOverlay = this.openOverlay(\n targetContent,\n this.type ? this.type : 'longpress',\n longpressContent,\n {\n ...this.overlayOptions,\n receivesFocus: 'auto',\n notImmediatelyClosable,\n }\n );\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = false;\n }\n this._longpressEvent = undefined;\n }\n\n private abortOverlay: (cancelled: boolean) => void = () => {\n return;\n };\n\n public async onTriggerMouseEnter(): Promise<void> {\n if (\n !this.targetContent ||\n !this.hoverContent ||\n this.closeHoverOverlay\n ) {\n return;\n }\n const abortPromise: Promise<boolean> = new Promise((res) => {\n this.abortOverlay = res;\n });\n const { targetContent, hoverContent } = this;\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = true;\n }\n this.closeHoverOverlay = this.openOverlay(\n targetContent,\n 'hover',\n hoverContent,\n {\n abortPromise,\n ...this.overlayOptions,\n }\n );\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = false;\n }\n }\n\n private onClickSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.clickContent = this.extractSlotContentFromEvent(event);\n this.manageOpen();\n }\n\n private onLongpressSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.longpressContent = this.extractSlotContentFromEvent(event);\n this.hasLongpressContent =\n !!this.longpressContent || !!this.closeLongpressOverlay;\n this.manageOpen();\n }\n\n private onHoverSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.hoverContent = this.extractSlotContentFromEvent(event);\n this.manageOpen();\n }\n\n private onTargetSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.targetContent = this.extractSlotContentFromEvent(event);\n }\n\n private extractSlotContentFromEvent(event: Event): HTMLElement | undefined {\n const slot = event.target as HTMLSlotElement;\n const nodes = slot.assignedNodes({ flatten: true });\n return nodes.find((node) => node instanceof HTMLElement) as HTMLElement;\n }\n\n private openStatePromise = Promise.resolve();\n private openStateResolver!: () => void;\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n await this.openStatePromise;\n return complete;\n }\n\n public override disconnectedCallback(): void {\n this.closeAllOverlays();\n super.disconnectedCallback();\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["event"]
7
7
  }
@@ -1,60 +1,30 @@
1
- "use strict";var g=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var s=(p,i,e,o)=>{for(var t=o>1?void 0:o?m(i,e):i,n=p.length-1,r;n>=0;n--)(r=p[n])&&(t=(o?r(i,e,t):r(t))||t);return o&&t&&g(i,e,t),t};import{html as v,SpectrumElement as u}from"@spectrum-web-components/base";import{property as l,query as c,state as a}from"@spectrum-web-components/base/src/decorators.js";import{isAndroid as f,isIOS as C}from"@spectrum-web-components/shared/src/platform.js";import y from"./overlay-trigger.css.js";import"../sp-overlay.js";export const LONGPRESS_INSTRUCTIONS={touch:"Double tap and long press for additional options",keyboard:"Press Space or Alt+Down Arrow for additional options",mouse:"Click and hold for additional options"};export class OverlayTrigger extends u{constructor(){super(...arguments);this.offset=6;this.disabled=!1;this.hasLongpressContent=!1;this.clickContent=[];this.longpressContent=[];this.hoverContent=[];this.targetContent=[];this._longpressId="longpress-describedby-descriptor"}static get styles(){return[y]}getAssignedElementsFromSlot(e){return e.assignedElements({flatten:!0})}handleTriggerContent(e){this.targetContent=this.getAssignedElementsFromSlot(e.target)}handleClickContent(e){this.clickContent=this.getAssignedElementsFromSlot(e.target)}handleLongpressContent(e){this.longpressContent=this.getAssignedElementsFromSlot(e.target)}handleHoverContent(e){this.hoverContent=this.getAssignedElementsFromSlot(e.target)}handleBeforetoggle(e){const o=e.composedPath()[0];let t;if(o===this.clickOverlayElement)t="click";else if(o===this.longpressOverlayElement)t="longpress";else if(o===this.hoverOverlayElement)t="hover";else return;e.newState==="open"?this.open=t:this.open===t&&(this.open=void 0)}update(e){var o,t,n,r,d,h;e.has("clickContent")&&(this.clickPlacement=((o=this.clickContent[0])==null?void 0:o.getAttribute("placement"))||((t=this.clickContent[0])==null?void 0:t.getAttribute("direction"))||void 0),e.has("hoverContent")&&(this.hoverPlacement=((n=this.hoverContent[0])==null?void 0:n.getAttribute("placement"))||((r=this.hoverContent[0])==null?void 0:r.getAttribute("direction"))||void 0),e.has("longpressContent")&&(this.longpressPlacement=((d=this.longpressContent[0])==null?void 0:d.getAttribute("placement"))||((h=this.longpressContent[0])==null?void 0:h.getAttribute("direction"))||void 0),super.update(e)}render(){return v`
1
+ "use strict";var c=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var r=(p,i,e,t)=>{for(var o=t>1?void 0:t?v(i,e):i,s=p.length-1,n;s>=0;s--)(n=p[s])&&(o=(t?n(i,e,o):n(o))||o);return t&&o&&c(i,e,o),o};import{html as h,SpectrumElement as d}from"@spectrum-web-components/base";import{property as l,state as g}from"@spectrum-web-components/base/src/decorators.js";import{firstFocusableIn as m}from"@spectrum-web-components/shared/src/first-focusable-in.js";import{isAndroid as u,isIOS as y}from"@spectrum-web-components/shared/src/platform.js";import{openOverlay as C}from"./loader.js";import f from"./overlay-trigger.css.js";export const LONGPRESS_INSTRUCTIONS={touch:"Double tap and long press for additional options",keyboard:"Press Space or Alt+Down Arrow for additional options",mouse:"Click and hold for additional options"};const a=class extends d{constructor(){super(...arguments);this.placement="bottom";this.offset=6;this.disabled=!1;this.hasLongpressContent=!1;this._longpressId="longpress-describedby-descriptor";this.abortOverlay=()=>{};this.openStatePromise=Promise.resolve()}static get styles(){return[f]}handleClose(e){e&&e.detail.interaction!==this.open&&e.detail.interaction!==this.type||this.removeAttribute("open")}render(){return h`
2
2
  <slot
3
3
  id="trigger"
4
+ @click=${this.onTrigger}
5
+ @longpress=${this.onTrigger}
6
+ @mouseenter=${this.onTrigger}
7
+ @mouseleave=${this.onTrigger}
8
+ @focusin=${this.onTrigger}
9
+ @focusout=${this.onTrigger}
10
+ @sp-closed=${this.handleClose}
11
+ @slotchange=${this.onTargetSlotChange}
4
12
  name="trigger"
5
- @slotchange=${this.handleTriggerContent}
6
13
  ></slot>
7
14
  <div id="overlay-content">
8
- <sp-overlay
9
- id="click-overlay"
10
- ?disabled=${this.disabled||!this.clickContent.length}
11
- ?open=${this.open==="click"&&!!this.clickContent.length}
12
- .offset=${this.offset}
13
- .placement=${this.clickPlacement||this.placement}
14
- .triggerElement=${this.targetContent[0]}
15
- .triggerInteraction=${"click"}
16
- .type=${this.type!=="modal"?"auto":"modal"}
17
- @beforetoggle=${this.handleBeforetoggle}
18
- >
19
- <slot
20
- name="click-content"
21
- @slotchange=${this.handleClickContent}
22
- ></slot>
23
- </sp-overlay>
24
- <sp-overlay
25
- id="longpress-overlay"
26
- ?disabled=${this.disabled||!this.longpressContent.length}
27
- ?open=${this.open==="longpress"&&!!this.longpressContent.length}
28
- .offset=${this.offset}
29
- .placement=${this.longpressPlacement||this.placement}
30
- .triggerElement=${this.targetContent[0]}
31
- .triggerInteraction=${"longpress"}
32
- .type=${"auto"}
33
- @beforetoggle=${this.handleBeforetoggle}
34
- >
35
- <slot
36
- name="longpress-content"
37
- @slotchange=${this.handleLongpressContent}
38
- ></slot>
39
- <slot name="longpress-describedby-descriptor"></slot>
40
- </sp-overlay>
41
- <sp-overlay
42
- id="hover-overlay"
43
- ?disabled=${this.disabled||!this.hoverContent.length||!!this.open&&this.open!=="hover"}
44
- ?open=${this.open==="hover"&&!!this.hoverContent.length}
45
- .offset=${this.offset}
46
- .placement=${this.hoverPlacement||this.placement}
47
- .triggerElement=${this.targetContent[0]}
48
- .triggerInteraction=${"hover"}
49
- .type=${"hint"}
50
- @beforetoggle=${this.handleBeforetoggle}
51
- >
52
- <slot
53
- name="hover-content"
54
- @slotchange=${this.handleHoverContent}
55
- ></slot>
56
- </sp-overlay>
15
+ <slot
16
+ @slotchange=${this.onClickSlotChange}
17
+ name="click-content"
18
+ ></slot>
19
+ <slot
20
+ @slotchange=${this.onLongpressSlotChange}
21
+ name="longpress-content"
22
+ ></slot>
23
+ <slot
24
+ @slotchange=${this.onHoverSlotChange}
25
+ name="hover-content"
26
+ ></slot>
57
27
  <slot name=${this._longpressId}></slot>
58
28
  </div>
59
- `}updated(e){if(super.updated(e),this.disabled&&e.has("disabled")){this.open=void 0;return}e.has("hasLongpressContent")&&typeof e.get("hasLongpressContent")!="undefined"&&this.manageLongpressDescriptor()}manageLongpressDescriptor(){const e=this.querySelector('[slot="trigger"]'),o=e.getAttribute("aria-describedby");let t=o?o.split(/\s+/):[];if(this.hasLongpressContent){this.longpressDescriptor||(this.longpressDescriptor=document.createElement("div"),this.longpressDescriptor.id=this._longpressId,this.longpressDescriptor.slot=this._longpressId);const n=C()||f()?"touch":"keyboard";this.longpressDescriptor.textContent=LONGPRESS_INSTRUCTIONS[n],this.appendChild(this.longpressDescriptor),t.push(this._longpressId)}else this.longpressDescriptor&&this.longpressDescriptor.remove(),t=t.filter(n=>n!==this._longpressId);t.length?e.setAttribute("aria-describedby",t.join(" ")):e.removeAttribute("aria-describedby")}async getUpdateComplete(){return await super.getUpdateComplete()}willUpdate(){this.placement==="none"&&(this.placement=void 0)}}s([l({reflect:!0})],OverlayTrigger.prototype,"placement",2),s([l()],OverlayTrigger.prototype,"type",2),s([l({type:Number})],OverlayTrigger.prototype,"offset",2),s([l({reflect:!0})],OverlayTrigger.prototype,"open",2),s([l({type:Boolean,reflect:!0})],OverlayTrigger.prototype,"disabled",2),s([a()],OverlayTrigger.prototype,"hasLongpressContent",2),s([a()],OverlayTrigger.prototype,"clickContent",2),s([a()],OverlayTrigger.prototype,"longpressContent",2),s([a()],OverlayTrigger.prototype,"hoverContent",2),s([a()],OverlayTrigger.prototype,"targetContent",2),s([c("#click-overlay",!0)],OverlayTrigger.prototype,"clickOverlayElement",2),s([c("#longpress-overlay",!0)],OverlayTrigger.prototype,"longpressOverlayElement",2),s([c("#hover-overlay",!0)],OverlayTrigger.prototype,"hoverOverlayElement",2);
29
+ `}updated(e){if(super.updated(e),this.disabled&&e.has("disabled")){this.closeAllOverlays();return}e.has("open")&&this.manageOpen(),e.has("hasLongpressContent")&&this.manageLongpressDescriptor()}manageLongpressDescriptor(){const e=this.querySelector('[slot="trigger"]'),t=e.getAttribute("aria-describedby");let o=t?t.split(/\s+/):[];if(this.hasLongpressContent){this.longpressDescriptor||(this.longpressDescriptor=document.createElement("div"),this.longpressDescriptor.id=this._longpressId,this.longpressDescriptor.slot=this._longpressId);const s=y()||u()?"touch":"keyboard";this.longpressDescriptor.textContent=LONGPRESS_INSTRUCTIONS[s],this.appendChild(this.longpressDescriptor),o.push(this._longpressId)}else this.longpressDescriptor&&this.longpressDescriptor.remove(),o=o.filter(s=>s!==this._longpressId);o.length?e.setAttribute("aria-describedby",o.join(" ")):e.removeAttribute("aria-describedby")}closeAllOverlays(){this.abortOverlay&&this.abortOverlay(!0),["closeClickOverlay","closeHoverOverlay","closeLongpressOverlay"].forEach(async e=>{const t=this[e];t!=null&&(delete this[e],(await t)())}),this.overlaidContent=void 0}manageOpen(){var t;({click:()=>this.onTriggerClick(),hover:()=>this.onTriggerMouseEnter(),longpress:()=>this.onTriggerLongpress(),none:()=>this.closeAllOverlays()})[(t=this.open)!=null?t:"none"]()}async openOverlay(e,t,o,s){return this.openStatePromise=new Promise(n=>this.openStateResolver=n),this.addEventListener("sp-opened",()=>{this.openStateResolver()},{once:!0}),this.overlaidContent=o,a.openOverlay(e,t,o,s)}get overlayOptions(){return{offset:this.offset,placement:this.placement,receivesFocus:!this.type||this.type==="inline"||this.open==="hover"?void 0:"auto"}}onTrigger(e){if(e.type==="mouseleave"&&this.open==="hover"&&e.relatedTarget===this.overlaidContent&&this.overlaidContent){this.overlaidContent.addEventListener("mouseleave",o=>{o.relatedTarget!==this.targetContent&&this.onTrigger(o)},{once:!0});return}if(!this.disabled)switch(e.type){case"mouseenter":case"focusin":!this.open&&this.hoverContent&&(this.open="hover");return;case"mouseleave":case"focusout":this.open==="hover"&&this.handleClose();return;case"click":this.clickContent&&(this.open=e.type);return;case"longpress":this.longpressContent&&(this._longpressEvent=e,this.open=e.type);return}}prepareToFocusOverlayContent(e){if(this.type!=="modal")return;m(e)||(e.tabIndex=0)}async onTriggerClick(){if(!this.targetContent||!this.clickContent||this.closeClickOverlay)return;const{targetContent:e,clickContent:t}=this;this.closeAllOverlays(),this.prepareToFocusOverlayContent(t),this.closeClickOverlay=this.openOverlay(e,this.type?this.type:"click",t,this.overlayOptions)}async onTriggerLongpress(){var s,n;if(!this.targetContent||!this.longpressContent||this.closeLongpressOverlay)return;const{targetContent:e,longpressContent:t}=this;this.closeAllOverlays(),this.prepareToFocusOverlayContent(t);const o=((n=(s=this._longpressEvent)==null?void 0:s.detail)==null?void 0:n.source)!=="keyboard";this.closeLongpressOverlay=this.openOverlay(e,this.type?this.type:"longpress",t,{...this.overlayOptions,receivesFocus:"auto",notImmediatelyClosable:o}),this._longpressEvent=void 0}async onTriggerMouseEnter(){if(!this.targetContent||!this.hoverContent||this.closeHoverOverlay)return;const e=new Promise(s=>{this.abortOverlay=s}),{targetContent:t,hoverContent:o}=this;this.closeHoverOverlay=this.openOverlay(t,"hover",o,{abortPromise:e,...this.overlayOptions})}onClickSlotChange(e){this.clickContent=this.extractSlotContentFromEvent(e),this.manageOpen()}onLongpressSlotChange(e){this.longpressContent=this.extractSlotContentFromEvent(e),this.hasLongpressContent=!!this.longpressContent||!!this.closeLongpressOverlay,this.manageOpen()}onHoverSlotChange(e){this.hoverContent=this.extractSlotContentFromEvent(e),this.manageOpen()}onTargetSlotChange(e){this.targetContent=this.extractSlotContentFromEvent(e)}extractSlotContentFromEvent(e){return e.target.assignedNodes({flatten:!0}).find(s=>s instanceof HTMLElement)}async getUpdateComplete(){const e=await super.getUpdateComplete();return await this.openStatePromise,e}disconnectedCallback(){this.closeAllOverlays(),super.disconnectedCallback()}};export let OverlayTrigger=a;OverlayTrigger.openOverlay=async(e,t,o,s)=>C(e,t,o,s),r([l({reflect:!0})],OverlayTrigger.prototype,"placement",2),r([l()],OverlayTrigger.prototype,"type",2),r([l({type:Number,reflect:!0})],OverlayTrigger.prototype,"offset",2),r([l({reflect:!0})],OverlayTrigger.prototype,"open",2),r([l({type:Boolean,reflect:!0})],OverlayTrigger.prototype,"disabled",2),r([g()],OverlayTrigger.prototype,"hasLongpressContent",2);
60
30
  //# sourceMappingURL=OverlayTrigger.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["OverlayTrigger.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\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n query,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport {\n isAndroid,\n isIOS,\n} from '@spectrum-web-components/shared/src/platform.js';\n\nimport { OverlayTriggerInteractions } from './overlay-types';\nimport overlayTriggerStyles from './overlay-trigger.css.js';\nimport '../sp-overlay.js';\nimport { Placement } from '@floating-ui/dom';\nimport { BeforetoggleOpenEvent, OverlayBase } from './OverlayBase.js';\n\nexport type OverlayContentTypes = 'click' | 'hover' | 'longpress';\n\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};\n\n/**\n * @element overlay-trigger\n *\n * @slot trigger - The content that will trigger the various overlays\n * @slot hover-content - The content that will be displayed on hover\n * @slot click-content - The content that will be displayed on click\n * @slot longpress-content - The content that will be displayed on click\n *\n * @fires sp-opened - Announces that the overlay has been opened\n * @fires sp-closed - Announces that the overlay has been closed\n */\nexport class OverlayTrigger extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [overlayTriggerStyles];\n }\n\n /**\n * @type {\"auto\" | \"auto-start\" | \"auto-end\" | \"top\" | \"bottom\" | \"right\" | \"left\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\" | \"right-start\" | \"right-end\" | \"left-start\" | \"left-end\" | \"none\"}\n * @attr\n */\n @property({ reflect: true })\n public placement?: Placement;\n\n @property()\n public type?: OverlayTriggerInteractions;\n\n @property({ type: Number })\n public offset = 6;\n\n @property({ reflect: true })\n public open?: OverlayContentTypes;\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @state()\n public hasLongpressContent = false;\n\n private longpressDescriptor?: HTMLElement;\n\n @state()\n private clickContent: HTMLElement[] = [];\n\n private clickPlacement?: Placement;\n\n @state()\n private longpressContent: HTMLElement[] = [];\n\n private longpressPlacement?: Placement;\n\n @state()\n private hoverContent: HTMLElement[] = [];\n\n private hoverPlacement?: Placement;\n\n @state()\n private targetContent: HTMLElement[] = [];\n\n @query('#click-overlay', true)\n clickOverlayElement!: OverlayBase;\n\n @query('#longpress-overlay', true)\n longpressOverlayElement!: OverlayBase;\n\n @query('#hover-overlay', true)\n hoverOverlayElement!: OverlayBase;\n\n private _longpressId = `longpress-describedby-descriptor`;\n\n private getAssignedElementsFromSlot(slot: HTMLSlotElement): HTMLElement[] {\n return slot.assignedElements({ flatten: true }) as HTMLElement[];\n }\n\n private handleTriggerContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.targetContent = this.getAssignedElementsFromSlot(event.target);\n }\n\n private handleClickContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.clickContent = this.getAssignedElementsFromSlot(event.target);\n }\n\n private handleLongpressContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.longpressContent = this.getAssignedElementsFromSlot(event.target);\n }\n\n private handleHoverContent(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.hoverContent = this.getAssignedElementsFromSlot(event.target);\n }\n\n private handleBeforetoggle(event: BeforetoggleOpenEvent): void {\n const target = event.composedPath()[0];\n let type: OverlayContentTypes;\n if (target === this.clickOverlayElement) {\n type = 'click';\n } else if (target === this.longpressOverlayElement) {\n type = 'longpress';\n } else if (target === this.hoverOverlayElement) {\n type = 'hover';\n } else {\n return;\n }\n if (event.newState === 'open') {\n this.open = type;\n } else if (this.open === type) {\n this.open = undefined;\n }\n }\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('clickContent')) {\n this.clickPlacement =\n ((this.clickContent[0]?.getAttribute('placement') ||\n this.clickContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n if (changes.has('hoverContent')) {\n this.hoverPlacement =\n ((this.hoverContent[0]?.getAttribute('placement') ||\n this.hoverContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n if (changes.has('longpressContent')) {\n this.longpressPlacement =\n ((this.longpressContent[0]?.getAttribute('placement') ||\n this.longpressContent[0]?.getAttribute(\n 'direction'\n )) as Placement) || undefined;\n }\n super.update(changes);\n }\n\n protected override render(): TemplateResult {\n // Keyboard event availability documented in README.md\n /* eslint-disable lit-a11y/click-events-have-key-events */\n return html`\n <slot\n id=\"trigger\"\n name=\"trigger\"\n @slotchange=${this.handleTriggerContent}\n ></slot>\n <div id=\"overlay-content\">\n <sp-overlay\n id=\"click-overlay\"\n ?disabled=${this.disabled || !this.clickContent.length}\n ?open=${this.open === 'click' && !!this.clickContent.length}\n .offset=${this.offset}\n .placement=${this.clickPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'click'}\n .type=${this.type !== 'modal' ? 'auto' : 'modal'}\n @beforetoggle=${this.handleBeforetoggle}\n >\n <slot\n name=\"click-content\"\n @slotchange=${this.handleClickContent}\n ></slot>\n </sp-overlay>\n <sp-overlay\n id=\"longpress-overlay\"\n ?disabled=${this.disabled || !this.longpressContent.length}\n ?open=${this.open === 'longpress' &&\n !!this.longpressContent.length}\n .offset=${this.offset}\n .placement=${this.longpressPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'longpress'}\n .type=${'auto'}\n @beforetoggle=${this.handleBeforetoggle}\n >\n <slot\n name=\"longpress-content\"\n @slotchange=${this.handleLongpressContent}\n ></slot>\n <slot name=\"longpress-describedby-descriptor\"></slot>\n </sp-overlay>\n <sp-overlay\n id=\"hover-overlay\"\n ?disabled=${this.disabled ||\n !this.hoverContent.length ||\n (!!this.open && this.open !== 'hover')}\n ?open=${this.open === 'hover' && !!this.hoverContent.length}\n .offset=${this.offset}\n .placement=${this.hoverPlacement || this.placement}\n .triggerElement=${this.targetContent[0]}\n .triggerInteraction=${'hover'}\n .type=${'hint'}\n @beforetoggle=${this.handleBeforetoggle}\n >\n <slot\n name=\"hover-content\"\n @slotchange=${this.handleHoverContent}\n ></slot>\n </sp-overlay>\n <slot name=${this._longpressId}></slot>\n </div>\n `;\n /* eslint-enable lit-a11y/click-events-have-key-events */\n }\n\n protected override updated(changes: PropertyValues<this>): void {\n super.updated(changes);\n if (this.disabled && changes.has('disabled')) {\n this.open = undefined;\n return;\n }\n if (\n changes.has('hasLongpressContent') &&\n typeof changes.get('hasLongpressContent') !== 'undefined'\n ) {\n this.manageLongpressDescriptor();\n }\n }\n\n protected manageLongpressDescriptor(): void {\n const trigger = this.querySelector(\n '[slot=\"trigger\"]'\n ) as SpectrumElement;\n const ariaDescribedby = trigger.getAttribute('aria-describedby');\n let descriptors = ariaDescribedby ? ariaDescribedby.split(/\\s+/) : [];\n\n if (this.hasLongpressContent) {\n if (!this.longpressDescriptor) {\n this.longpressDescriptor = document.createElement(\n 'div'\n ) as HTMLElement;\n\n this.longpressDescriptor.id = this._longpressId;\n this.longpressDescriptor.slot = this._longpressId;\n }\n const messageType = isIOS() || isAndroid() ? 'touch' : 'keyboard';\n this.longpressDescriptor.textContent =\n LONGPRESS_INSTRUCTIONS[messageType];\n this.appendChild(this.longpressDescriptor);\n descriptors.push(this._longpressId);\n } else {\n if (this.longpressDescriptor) this.longpressDescriptor.remove();\n descriptors = descriptors.filter(\n (descriptor) => descriptor !== this._longpressId\n );\n }\n if (descriptors.length) {\n trigger.setAttribute('aria-describedby', descriptors.join(' '));\n } else {\n trigger.removeAttribute('aria-describedby');\n }\n }\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n return complete;\n }\n\n protected override willUpdate(): void {\n if ((this.placement as unknown as 'none') === 'none') {\n this.placement = undefined;\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["html", "SpectrumElement", "property", "query", "state", "isAndroid", "isIOS", "overlayTriggerStyles", "slot", "event", "target", "type", "changes", "_a", "_b", "_c", "_d", "_e", "_f", "trigger", "ariaDescribedby", "descriptors", "messageType", "descriptor", "__decorateClass"]
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\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport type { LongpressEvent } from '@spectrum-web-components/action-button';\nimport { firstFocusableIn } from '@spectrum-web-components/shared/src/first-focusable-in.js';\nimport {\n isAndroid,\n isIOS,\n} from '@spectrum-web-components/shared/src/platform.js';\n\nimport {\n OverlayOpenCloseDetail,\n OverlayOptions,\n OverlayTriggerInteractions,\n Placement,\n TriggerInteractions,\n} from './overlay-types';\nimport { openOverlay } from './loader.js';\nimport overlayTriggerStyles from './overlay-trigger.css.js';\n\nexport type OverlayContentTypes = 'click' | 'hover' | 'longpress';\n\ntype closeOverlay =\n | 'closeClickOverlay'\n | 'closeHoverOverlay'\n | 'closeLongpressOverlay';\n\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};\n\n/**\n * @element overlay-trigger\n *\n * @slot trigger - The content that will trigger the various overlays\n * @slot hover-content - The content that will be displayed on hover\n * @slot click-content - The content that will be displayed on click\n * @slot longpress-content - The content that will be displayed on click\n *\n * @fires sp-opened - Announces that the overlay has been opened\n * @fires sp-closed - Announces that the overlay has been closed\n */\nexport class OverlayTrigger extends SpectrumElement {\n private closeClickOverlay?: Promise<() => void>;\n private closeLongpressOverlay?: Promise<() => void>;\n private closeHoverOverlay?: Promise<() => void>;\n\n public static override get styles(): CSSResultArray {\n return [overlayTriggerStyles];\n }\n\n /**\n * @type {\"auto\" | \"auto-start\" | \"auto-end\" | \"top\" | \"bottom\" | \"right\" | \"left\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\" | \"right-start\" | \"right-end\" | \"left-start\" | \"left-end\" | \"none\"}\n * @attr\n */\n @property({ reflect: true })\n public placement: Placement = 'bottom';\n\n @property()\n public type?: OverlayTriggerInteractions;\n\n @property({ type: Number, reflect: true })\n public offset = 6;\n\n @property({ reflect: true })\n public open?: OverlayContentTypes;\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @state()\n public hasLongpressContent = false;\n\n private longpressDescriptor?: HTMLElement;\n private clickContent?: HTMLElement;\n private longpressContent?: HTMLElement;\n private hoverContent?: HTMLElement;\n private targetContent?: HTMLElement;\n private overlaidContent?: HTMLElement;\n\n private _longpressId = `longpress-describedby-descriptor`;\n\n private handleClose(event?: CustomEvent<OverlayOpenCloseDetail>): void {\n if (\n event &&\n event.detail.interaction !== this.open &&\n event.detail.interaction !== this.type\n ) {\n return;\n }\n this.removeAttribute('open');\n }\n\n protected override render(): TemplateResult {\n // Keyboard event availability documented in README.md\n /* eslint-disable lit-a11y/click-events-have-key-events */\n return html`\n <slot\n id=\"trigger\"\n @click=${this.onTrigger}\n @longpress=${this.onTrigger}\n @mouseenter=${this.onTrigger}\n @mouseleave=${this.onTrigger}\n @focusin=${this.onTrigger}\n @focusout=${this.onTrigger}\n @sp-closed=${this.handleClose}\n @slotchange=${this.onTargetSlotChange}\n name=\"trigger\"\n ></slot>\n <div id=\"overlay-content\">\n <slot\n @slotchange=${this.onClickSlotChange}\n name=\"click-content\"\n ></slot>\n <slot\n @slotchange=${this.onLongpressSlotChange}\n name=\"longpress-content\"\n ></slot>\n <slot\n @slotchange=${this.onHoverSlotChange}\n name=\"hover-content\"\n ></slot>\n <slot name=${this._longpressId}></slot>\n </div>\n `;\n /* eslint-enable lit-a11y/click-events-have-key-events */\n }\n\n protected override updated(changes: PropertyValues<this>): void {\n super.updated(changes);\n if (this.disabled && changes.has('disabled')) {\n this.closeAllOverlays();\n return;\n }\n if (changes.has('open')) {\n this.manageOpen();\n }\n if (changes.has('hasLongpressContent')) {\n this.manageLongpressDescriptor();\n }\n }\n\n protected manageLongpressDescriptor(): void {\n const trigger = this.querySelector(\n '[slot=\"trigger\"]'\n ) as SpectrumElement;\n const ariaDescribedby = trigger.getAttribute('aria-describedby');\n let descriptors = ariaDescribedby ? ariaDescribedby.split(/\\s+/) : [];\n\n if (this.hasLongpressContent) {\n if (!this.longpressDescriptor) {\n this.longpressDescriptor = document.createElement(\n 'div'\n ) as HTMLElement;\n\n this.longpressDescriptor.id = this._longpressId;\n this.longpressDescriptor.slot = this._longpressId;\n }\n const messageType = isIOS() || isAndroid() ? 'touch' : 'keyboard';\n this.longpressDescriptor.textContent =\n LONGPRESS_INSTRUCTIONS[messageType];\n this.appendChild(this.longpressDescriptor);\n descriptors.push(this._longpressId);\n } else {\n if (this.longpressDescriptor) this.longpressDescriptor.remove();\n descriptors = descriptors.filter(\n (descriptor) => descriptor !== this._longpressId\n );\n }\n if (descriptors.length) {\n trigger.setAttribute('aria-describedby', descriptors.join(' '));\n } else {\n trigger.removeAttribute('aria-describedby');\n }\n }\n\n private closeAllOverlays(): void {\n if (this.abortOverlay) this.abortOverlay(true);\n (\n [\n 'closeClickOverlay',\n 'closeHoverOverlay',\n 'closeLongpressOverlay',\n ] as closeOverlay[]\n ).forEach(async (name) => {\n const canClose = this[name] as Promise<() => void>;\n if (canClose == null) return;\n delete this[name];\n (await canClose)();\n });\n this.overlaidContent = undefined;\n }\n\n private manageOpen(): void {\n const openHandlers: Record<OverlayContentTypes | 'none', () => void> = {\n click: () => this.onTriggerClick(),\n hover: () => this.onTriggerMouseEnter(),\n longpress: () => this.onTriggerLongpress(),\n none: () => this.closeAllOverlays(),\n };\n openHandlers[this.open ?? 'none']();\n }\n\n private async openOverlay(\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void> {\n this.openStatePromise = new Promise(\n (res) => (this.openStateResolver = res)\n );\n this.addEventListener(\n 'sp-opened',\n () => {\n this.openStateResolver();\n },\n { once: true }\n );\n this.overlaidContent = content;\n return OverlayTrigger.openOverlay(\n target,\n interaction,\n content,\n options\n );\n }\n\n public static openOverlay = async (\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n ): Promise<() => void> => {\n return openOverlay(target, interaction, content, options);\n };\n\n private get overlayOptions(): OverlayOptions {\n return {\n offset: this.offset,\n placement: this.placement,\n receivesFocus:\n !this.type || this.type === 'inline' || this.open === 'hover'\n ? undefined\n : 'auto',\n };\n }\n\n private onTrigger(event: CustomEvent<LongpressEvent>): void {\n const mouseIsEnteringHoverContent =\n event.type === 'mouseleave' &&\n this.open === 'hover' &&\n (event as unknown as MouseEvent).relatedTarget ===\n this.overlaidContent;\n if (mouseIsEnteringHoverContent && this.overlaidContent) {\n this.overlaidContent.addEventListener(\n 'mouseleave',\n (event: MouseEvent) => {\n const mouseIsEnteringTrigger =\n event.relatedTarget === this.targetContent;\n if (mouseIsEnteringTrigger) {\n return;\n }\n this.onTrigger(\n event as unknown as CustomEvent<LongpressEvent>\n );\n },\n { once: true }\n );\n return;\n }\n if (this.disabled) return;\n\n switch (event.type) {\n case 'mouseenter':\n case 'focusin':\n if (!this.open && this.hoverContent) {\n this.open = 'hover';\n }\n return;\n case 'mouseleave':\n case 'focusout':\n if (this.open === 'hover') {\n this.handleClose();\n }\n return;\n case 'click':\n if (this.clickContent) {\n this.open = event.type;\n }\n return;\n case 'longpress':\n if (this.longpressContent) {\n this._longpressEvent = event;\n this.open = event.type;\n }\n return;\n }\n }\n\n private prepareToFocusOverlayContent(overlayContent: HTMLElement): void {\n if (this.type !== 'modal') {\n return;\n }\n const firstFocusable = firstFocusableIn(overlayContent);\n if (!firstFocusable) {\n overlayContent.tabIndex = 0;\n }\n }\n\n public async onTriggerClick(): Promise<void> {\n if (\n !this.targetContent ||\n !this.clickContent ||\n this.closeClickOverlay\n ) {\n return;\n }\n const { targetContent, clickContent } = this;\n this.closeAllOverlays();\n this.prepareToFocusOverlayContent(clickContent);\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = true;\n }\n this.closeClickOverlay = this.openOverlay(\n targetContent,\n this.type ? this.type : 'click',\n clickContent,\n this.overlayOptions\n );\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = false;\n }\n }\n\n private _longpressEvent?: CustomEvent<LongpressEvent>;\n\n private async onTriggerLongpress(): Promise<void> {\n if (\n !this.targetContent ||\n !this.longpressContent ||\n this.closeLongpressOverlay\n ) {\n return;\n }\n const { targetContent, longpressContent } = this;\n this.closeAllOverlays();\n this.prepareToFocusOverlayContent(longpressContent);\n const notImmediatelyClosable =\n this._longpressEvent?.detail?.source !== 'keyboard';\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = true;\n }\n this.closeLongpressOverlay = this.openOverlay(\n targetContent,\n this.type ? this.type : 'longpress',\n longpressContent,\n {\n ...this.overlayOptions,\n receivesFocus: 'auto',\n notImmediatelyClosable,\n }\n );\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = false;\n }\n this._longpressEvent = undefined;\n }\n\n private abortOverlay: (cancelled: boolean) => void = () => {\n return;\n };\n\n public async onTriggerMouseEnter(): Promise<void> {\n if (\n !this.targetContent ||\n !this.hoverContent ||\n this.closeHoverOverlay\n ) {\n return;\n }\n const abortPromise: Promise<boolean> = new Promise((res) => {\n this.abortOverlay = res;\n });\n const { targetContent, hoverContent } = this;\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = true;\n }\n this.closeHoverOverlay = this.openOverlay(\n targetContent,\n 'hover',\n hoverContent,\n {\n abortPromise,\n ...this.overlayOptions,\n }\n );\n if (window.__swc.DEBUG) {\n window.__swc.ignoreWarningLevels.deprecation = false;\n }\n }\n\n private onClickSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.clickContent = this.extractSlotContentFromEvent(event);\n this.manageOpen();\n }\n\n private onLongpressSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.longpressContent = this.extractSlotContentFromEvent(event);\n this.hasLongpressContent =\n !!this.longpressContent || !!this.closeLongpressOverlay;\n this.manageOpen();\n }\n\n private onHoverSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.hoverContent = this.extractSlotContentFromEvent(event);\n this.manageOpen();\n }\n\n private onTargetSlotChange(\n event: Event & { target: HTMLSlotElement }\n ): void {\n this.targetContent = this.extractSlotContentFromEvent(event);\n }\n\n private extractSlotContentFromEvent(event: Event): HTMLElement | undefined {\n const slot = event.target as HTMLSlotElement;\n const nodes = slot.assignedNodes({ flatten: true });\n return nodes.find((node) => node instanceof HTMLElement) as HTMLElement;\n }\n\n private openStatePromise = Promise.resolve();\n private openStateResolver!: () => void;\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n await this.openStatePromise;\n return complete;\n }\n\n public override disconnectedCallback(): void {\n this.closeAllOverlays();\n super.disconnectedCallback();\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["html", "SpectrumElement", "property", "state", "firstFocusableIn", "isAndroid", "isIOS", "openOverlay", "overlayTriggerStyles", "_OverlayTrigger", "event", "changes", "trigger", "ariaDescribedby", "descriptors", "messageType", "descriptor", "name", "canClose", "_a", "target", "interaction", "content", "options", "res", "overlayContent", "targetContent", "clickContent", "_b", "longpressContent", "notImmediatelyClosable", "abortPromise", "hoverContent", "node", "complete", "__decorateClass"]
7
7
  }
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ import { Overlay } from "./overlay.dev.js";
2
3
  export class VirtualTrigger {
3
4
  constructor(x, y) {
4
5
  this.x = 0;
@@ -9,6 +10,7 @@ export class VirtualTrigger {
9
10
  updateBoundingClientRect(x, y) {
10
11
  this.x = x;
11
12
  this.y = y;
13
+ Overlay.update();
12
14
  }
13
15
  getBoundingClientRect() {
14
16
  return {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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\n// import { Overlay } from './overlay.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 // Overlay.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 toJSON() {\n return;\n },\n };\n }\n}\n"],
5
- "mappings": ";AAaO,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;AAAA,EAEb;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,MACX,SAAS;AACL;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;",
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 { Overlay } from './overlay.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 Overlay.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 toJSON() {\n return;\n },\n };\n }\n}\n"],
5
+ "mappings": ";AAWA,SAAS,eAAe;AAEjB,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,YAAQ,OAAO;AAAA,EACnB;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,MACX,SAAS;AACL;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";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}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(){}}}}
1
+ "use strict";import{Overlay as e}from"./overlay.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
2
  //# sourceMappingURL=VirtualTrigger.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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\n// import { Overlay } from './overlay.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 // Overlay.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 toJSON() {\n return;\n },\n };\n }\n}\n"],
5
- "mappings": "aAaO,aAAM,cAAe,CAIjB,YAAYA,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,CAEb,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,EACX,QAAS,CAET,CACJ,CACJ,CACJ",
6
- "names": ["x", "y"]
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 { Overlay } from './overlay.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 Overlay.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 toJSON() {\n return;\n },\n };\n }\n}\n"],
5
+ "mappings": "aAWA,OAAS,WAAAA,MAAe,eAEjB,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,EAAQ,OAAO,CACnB,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,EACX,QAAS,CAET,CACJ,CACJ,CACJ",
6
+ "names": ["Overlay", "x", "y"]
7
7
  }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ import { css } from "@spectrum-web-components/base";
3
+ const styles = css`
4
+ @keyframes sp-overlay-fade-in{0%{opacity:0;transform:var(--sp-overlay-from)}to{opacity:1;transform:translate(0)}}@keyframes sp-overlay-fade-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:var(--sp-overlay-from)}}:host{display:inline-block;left:-9999em;max-height:100%;pointer-events:none;position:fixed;top:-9999em;z-index:1000}:host(:focus){outline:none}:host([placement=none]){height:100vh;height:100dvh;height:-webkit-fill-available;height:fill-available;left:0;position:fixed;top:0}#contents,sp-theme{height:100%}#contents{--swc-overlay-animation-distance:var(
5
+ --spectrum-picker-m-texticon-popover-offset-y,var(--spectrum-global-dimension-size-75)
6
+ );animation-duration:var(
7
+ --swc-test-duration,var(--spectrum-global-animation-duration-200,.16s)
8
+ );animation-timing-function:var(
9
+ --spectrum-global-animation-ease-out,ease-out
10
+ );box-sizing:border-box;display:inline-block;opacity:1;pointer-events:none;visibility:visible}:host([actual-placement*=top]) #contents{--sp-overlay-from:translateY(var(--spectrum-global-dimension-size-75));align-items:flex-end;display:inline-flex;padding-top:var(--swc-overlay-animation-distance)}:host([actual-placement*=right]) #contents{--sp-overlay-from:translateX(calc(var(--spectrum-global-dimension-size-75)*-1));padding-right:var(--swc-overlay-animation-distance)}:host([actual-placement*=bottom]) #contents{--sp-overlay-from:translateY(calc(var(--spectrum-global-dimension-size-75)*-1));padding-bottom:var(--swc-overlay-animation-distance)}:host([actual-placement*=left]) #contents{--sp-overlay-from:translateX(var(--spectrum-global-dimension-size-75));padding-left:var(--swc-overlay-animation-distance)}:host([animating]) ::slotted(*){pointer-events:none}:host(:not([animating])) ::slotted(*){pointer-events:auto}#contents ::slotted(*){position:relative}
11
+ `;
12
+ export default styles;
13
+ //# sourceMappingURL=active-overlay.css.dev.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["active-overlay.css.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*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n@keyframes sp-overlay-fade-in{0%{opacity:0;transform:var(--sp-overlay-from)}to{opacity:1;transform:translate(0)}}@keyframes sp-overlay-fade-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:var(--sp-overlay-from)}}:host{display:inline-block;left:-9999em;max-height:100%;pointer-events:none;position:fixed;top:-9999em;z-index:1000}:host(:focus){outline:none}:host([placement=none]){height:100vh;height:100dvh;height:-webkit-fill-available;height:fill-available;left:0;position:fixed;top:0}#contents,sp-theme{height:100%}#contents{--swc-overlay-animation-distance:var(\n--spectrum-picker-m-texticon-popover-offset-y,var(--spectrum-global-dimension-size-75)\n);animation-duration:var(\n--swc-test-duration,var(--spectrum-global-animation-duration-200,.16s)\n);animation-timing-function:var(\n--spectrum-global-animation-ease-out,ease-out\n);box-sizing:border-box;display:inline-block;opacity:1;pointer-events:none;visibility:visible}:host([actual-placement*=top]) #contents{--sp-overlay-from:translateY(var(--spectrum-global-dimension-size-75));align-items:flex-end;display:inline-flex;padding-top:var(--swc-overlay-animation-distance)}:host([actual-placement*=right]) #contents{--sp-overlay-from:translateX(calc(var(--spectrum-global-dimension-size-75)*-1));padding-right:var(--swc-overlay-animation-distance)}:host([actual-placement*=bottom]) #contents{--sp-overlay-from:translateY(calc(var(--spectrum-global-dimension-size-75)*-1));padding-bottom:var(--swc-overlay-animation-distance)}:host([actual-placement*=left]) #contents{--sp-overlay-from:translateX(var(--spectrum-global-dimension-size-75));padding-left:var(--swc-overlay-animation-distance)}:host([animating]) ::slotted(*){pointer-events:none}:host(:not([animating])) ::slotted(*){pointer-events:auto}#contents ::slotted(*){position:relative}\n`;\nexport default styles;"],
5
+ "mappings": ";AAWA,SAAS,WAAW;AACpB,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASf,eAAe;",
6
+ "names": []
7
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";import{css as t}from"@spectrum-web-components/base";const e=t`
2
+ @keyframes sp-overlay-fade-in{0%{opacity:0;transform:var(--sp-overlay-from)}to{opacity:1;transform:translate(0)}}@keyframes sp-overlay-fade-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:var(--sp-overlay-from)}}:host{display:inline-block;left:-9999em;max-height:100%;pointer-events:none;position:fixed;top:-9999em;z-index:1000}:host(:focus){outline:none}:host([placement=none]){height:100vh;height:100dvh;height:-webkit-fill-available;height:fill-available;left:0;position:fixed;top:0}#contents,sp-theme{height:100%}#contents{--swc-overlay-animation-distance:var(
3
+ --spectrum-picker-m-texticon-popover-offset-y,var(--spectrum-global-dimension-size-75)
4
+ );animation-duration:var(
5
+ --swc-test-duration,var(--spectrum-global-animation-duration-200,.16s)
6
+ );animation-timing-function:var(
7
+ --spectrum-global-animation-ease-out,ease-out
8
+ );box-sizing:border-box;display:inline-block;opacity:1;pointer-events:none;visibility:visible}:host([actual-placement*=top]) #contents{--sp-overlay-from:translateY(var(--spectrum-global-dimension-size-75));align-items:flex-end;display:inline-flex;padding-top:var(--swc-overlay-animation-distance)}:host([actual-placement*=right]) #contents{--sp-overlay-from:translateX(calc(var(--spectrum-global-dimension-size-75)*-1));padding-right:var(--swc-overlay-animation-distance)}:host([actual-placement*=bottom]) #contents{--sp-overlay-from:translateY(calc(var(--spectrum-global-dimension-size-75)*-1));padding-bottom:var(--swc-overlay-animation-distance)}:host([actual-placement*=left]) #contents{--sp-overlay-from:translateX(var(--spectrum-global-dimension-size-75));padding-left:var(--swc-overlay-animation-distance)}:host([animating]) ::slotted(*){pointer-events:none}:host(:not([animating])) ::slotted(*){pointer-events:auto}#contents ::slotted(*){position:relative}
9
+ `;export default e;
10
+ //# sourceMappingURL=active-overlay.css.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["active-overlay.css.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*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n@keyframes sp-overlay-fade-in{0%{opacity:0;transform:var(--sp-overlay-from)}to{opacity:1;transform:translate(0)}}@keyframes sp-overlay-fade-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:var(--sp-overlay-from)}}:host{display:inline-block;left:-9999em;max-height:100%;pointer-events:none;position:fixed;top:-9999em;z-index:1000}:host(:focus){outline:none}:host([placement=none]){height:100vh;height:100dvh;height:-webkit-fill-available;height:fill-available;left:0;position:fixed;top:0}#contents,sp-theme{height:100%}#contents{--swc-overlay-animation-distance:var(\n--spectrum-picker-m-texticon-popover-offset-y,var(--spectrum-global-dimension-size-75)\n);animation-duration:var(\n--swc-test-duration,var(--spectrum-global-animation-duration-200,.16s)\n);animation-timing-function:var(\n--spectrum-global-animation-ease-out,ease-out\n);box-sizing:border-box;display:inline-block;opacity:1;pointer-events:none;visibility:visible}:host([actual-placement*=top]) #contents{--sp-overlay-from:translateY(var(--spectrum-global-dimension-size-75));align-items:flex-end;display:inline-flex;padding-top:var(--swc-overlay-animation-distance)}:host([actual-placement*=right]) #contents{--sp-overlay-from:translateX(calc(var(--spectrum-global-dimension-size-75)*-1));padding-right:var(--swc-overlay-animation-distance)}:host([actual-placement*=bottom]) #contents{--sp-overlay-from:translateY(calc(var(--spectrum-global-dimension-size-75)*-1));padding-bottom:var(--swc-overlay-animation-distance)}:host([actual-placement*=left]) #contents{--sp-overlay-from:translateX(var(--spectrum-global-dimension-size-75));padding-left:var(--swc-overlay-animation-distance)}:host([animating]) ::slotted(*){pointer-events:none}:host(:not([animating])) ::slotted(*){pointer-events:auto}#contents ::slotted(*){position:relative}\n`;\nexport default styles;"],
5
+ "mappings": "aAWA,OAAS,OAAAA,MAAW,gCACpB,MAAMC,EAASD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASf,eAAeC",
6
+ "names": ["css", "styles"]
7
+ }
package/src/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- export * from './Overlay.js';
1
+ export * from './overlay.js';
2
2
  export * from './OverlayTrigger.js';
3
3
  export * from './overlay-types.js';
4
- export * from './VirtualTrigger.js';
4
+ export * from './ActiveOverlay.js';
5
5
  export * from './loader.js';
6
+ export * from './VirtualTrigger.js';
package/src/index.dev.js CHANGED
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
- export * from "./Overlay.dev.js";
2
+ export * from "./overlay.dev.js";
3
3
  export * from "./OverlayTrigger.dev.js";
4
4
  export * from "./overlay-types.dev.js";
5
- export * from "./VirtualTrigger.dev.js";
5
+ export * from "./ActiveOverlay.dev.js";
6
6
  export * from "./loader.dev.js";
7
+ export * from "./VirtualTrigger.dev.js";
7
8
  //# sourceMappingURL=index.dev.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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'\n"],
5
- "mappings": ";AAWA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
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 './ActiveOverlay.dev.js'\nexport * from './loader.dev.js'\nexport * from './VirtualTrigger.dev.js'\n"],
5
+ "mappings": ";AAWA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
package/src/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";export*from"./Overlay.js";export*from"./OverlayTrigger.js";export*from"./overlay-types.js";export*from"./VirtualTrigger.js";export*from"./loader.js";
1
+ "use strict";export*from"./overlay.js";export*from"./OverlayTrigger.js";export*from"./overlay-types.js";export*from"./ActiveOverlay.js";export*from"./loader.js";export*from"./VirtualTrigger.js";
2
2
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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';\n"],
5
- "mappings": "aAWA,WAAc,eACd,WAAc,sBACd,WAAc,qBACd,WAAc,sBACd,WAAc",
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 './ActiveOverlay.js';\nexport * from './loader.js';\nexport * from './VirtualTrigger.js';\n"],
5
+ "mappings": "aAWA,WAAc,eACd,WAAc,sBACd,WAAc,qBACd,WAAc,qBACd,WAAc,cACd,WAAc",
6
6
  "names": []
7
7
  }
package/src/loader.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { Overlay } from './Overlay.js';
2
- export declare const openOverlay: typeof Overlay.open;
1
+ import type { OverlayOptions, TriggerInteractions } from './overlay-types';
2
+ export declare const openOverlay: (target: HTMLElement, interaction: TriggerInteractions, content: HTMLElement, options: OverlayOptions) => Promise<() => void>;
package/src/loader.dev.js CHANGED
@@ -1,4 +1,21 @@
1
1
  "use strict";
2
- import { Overlay } from "./Overlay.dev.js";
3
- export const openOverlay = Overlay.open;
2
+ export const openOverlay = async (target, interaction, content, options) => {
3
+ if (true) {
4
+ var ignoreDeprecations = window.__swc.ignoreWarningLevels.deprecation;
5
+ }
6
+ const { Overlay } = await import("@spectrum-web-components/overlay/src/overlay.js");
7
+ if (true) {
8
+ if (
9
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
+ // @ts-ignore
11
+ ignoreDeprecations && !window.__swc.ignoreWarningLevels.deprecation
12
+ ) {
13
+ window.__swc.ignoreWarningLevels.deprecation = ignoreDeprecations;
14
+ requestAnimationFrame(() => {
15
+ window.__swc.ignoreWarningLevels.deprecation = false;
16
+ });
17
+ }
18
+ }
19
+ return Overlay.open(target, interaction, content, options);
20
+ };
4
21
  //# sourceMappingURL=loader.dev.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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 { Overlay } from './Overlay.dev.js'\n\nexport const openOverlay = Overlay.open;\n"],
5
- "mappings": ";AAYA,SAAS,eAAe;AAEjB,aAAM,cAAc,QAAQ;",
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\nimport type { OverlayOptions, TriggerInteractions } from './overlay-types';\n\nexport const openOverlay = async (\n target: HTMLElement,\n interaction: TriggerInteractions,\n content: HTMLElement,\n options: OverlayOptions\n): Promise<() => void> => {\n if (window.__swc.DEBUG) {\n // eslint-disable-next-line no-var\n var ignoreDeprecations = window.__swc.ignoreWarningLevels.deprecation;\n }\n const { Overlay } = await import(\n '@spectrum-web-components/overlay/src/overlay.js'\n );\n if (window.__swc.DEBUG) {\n if (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ignoreDeprecations &&\n !window.__swc.ignoreWarningLevels.deprecation\n ) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.__swc.ignoreWarningLevels.deprecation = ignoreDeprecations;\n requestAnimationFrame(() => {\n window.__swc.ignoreWarningLevels.deprecation = false;\n });\n }\n }\n return Overlay.open(target, interaction, content, options);\n};\n"],
5
+ "mappings": ";AAcO,aAAM,cAAc,OACvB,QACA,aACA,SACA,YACsB;AACtB,MAAI,MAAoB;AAEpB,QAAI,qBAAqB,OAAO,MAAM,oBAAoB;AAAA,EAC9D;AACA,QAAM,EAAE,QAAQ,IAAI,MAAM,OACtB,iDACJ;AACA,MAAI,MAAoB;AACpB;AAAA;AAAA;AAAA,MAGI,sBACA,CAAC,OAAO,MAAM,oBAAoB;AAAA,MACpC;AAGE,aAAO,MAAM,oBAAoB,cAAc;AAC/C,4BAAsB,MAAM;AACxB,eAAO,MAAM,oBAAoB,cAAc;AAAA,MACnD,CAAC;AAAA,IACL;AAAA,EACJ;AACA,SAAO,QAAQ,KAAK,QAAQ,aAAa,SAAS,OAAO;AAC7D;",
6
6
  "names": []
7
7
  }