@rdlabo/ionic-theme-ios27 0.1.0-beta.pr177.shaea4b7eeec994 → 0.2.1

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 (76) hide show
  1. package/node_modules/@rdlabo/ionic-theme-utils/LICENSE +21 -0
  2. package/node_modules/@rdlabo/ionic-theme-utils/README.md +28 -0
  3. package/node_modules/@rdlabo/ionic-theme-utils/dist/dom.d.ts +3 -0
  4. package/node_modules/@rdlabo/ionic-theme-utils/dist/dom.d.ts.map +1 -0
  5. package/node_modules/@rdlabo/ionic-theme-utils/dist/dom.js +13 -0
  6. package/node_modules/@rdlabo/ionic-theme-utils/dist/dom.js.map +1 -0
  7. package/node_modules/@rdlabo/ionic-theme-utils/dist/focus-controller.d.ts +6 -0
  8. package/node_modules/@rdlabo/ionic-theme-utils/dist/focus-controller.d.ts.map +1 -0
  9. package/node_modules/@rdlabo/ionic-theme-utils/dist/focus-controller.js +37 -0
  10. package/node_modules/@rdlabo/ionic-theme-utils/dist/focus-controller.js.map +1 -0
  11. package/node_modules/@rdlabo/ionic-theme-utils/dist/index.d.ts +13 -0
  12. package/node_modules/@rdlabo/ionic-theme-utils/dist/index.d.ts.map +1 -0
  13. package/node_modules/@rdlabo/ionic-theme-utils/dist/index.js +11 -0
  14. package/node_modules/@rdlabo/ionic-theme-utils/dist/index.js.map +1 -0
  15. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.enter.d.ts +3 -0
  16. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.enter.d.ts.map +1 -0
  17. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.enter.js +196 -0
  18. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.enter.js.map +1 -0
  19. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.leave.d.ts +3 -0
  20. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.leave.d.ts.map +1 -0
  21. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.leave.js +80 -0
  22. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.leave.js.map +1 -0
  23. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/callout-surface.d.ts +2 -0
  24. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/callout-surface.d.ts.map +1 -0
  25. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/callout-surface.js +45 -0
  26. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/callout-surface.js.map +1 -0
  27. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/popover-interface.d.ts +38 -0
  28. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/popover-interface.d.ts.map +1 -0
  29. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/popover-interface.js +2 -0
  30. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/popover-interface.js.map +1 -0
  31. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/utils.d.ts +38 -0
  32. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/utils.d.ts.map +1 -0
  33. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/utils.js +378 -0
  34. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/utils.js.map +1 -0
  35. package/node_modules/@rdlabo/ionic-theme-utils/dist/sheets-of-glass.d.ts +16 -0
  36. package/node_modules/@rdlabo/ionic-theme-utils/dist/sheets-of-glass.d.ts.map +1 -0
  37. package/node_modules/@rdlabo/ionic-theme-utils/dist/sheets-of-glass.js +2 -0
  38. package/node_modules/@rdlabo/ionic-theme-utils/dist/sheets-of-glass.js.map +1 -0
  39. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/interfaces.d.ts +41 -0
  40. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/interfaces.d.ts.map +1 -0
  41. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/interfaces.js +6 -0
  42. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/interfaces.js.map +1 -0
  43. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/utils.d.ts +12 -0
  44. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/utils.d.ts.map +1 -0
  45. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/utils.js +61 -0
  46. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/utils.js.map +1 -0
  47. package/node_modules/@rdlabo/ionic-theme-utils/dist/theme.d.ts +15 -0
  48. package/node_modules/@rdlabo/ionic-theme-utils/dist/theme.d.ts.map +1 -0
  49. package/node_modules/@rdlabo/ionic-theme-utils/dist/theme.js +49 -0
  50. package/node_modules/@rdlabo/ionic-theme-utils/dist/theme.js.map +1 -0
  51. package/node_modules/@rdlabo/ionic-theme-utils/dist/transition/ios.transition.d.ts +18 -0
  52. package/node_modules/@rdlabo/ionic-theme-utils/dist/transition/ios.transition.d.ts.map +1 -0
  53. package/node_modules/@rdlabo/ionic-theme-utils/dist/transition/ios.transition.js +412 -0
  54. package/node_modules/@rdlabo/ionic-theme-utils/dist/transition/ios.transition.js.map +1 -0
  55. package/node_modules/@rdlabo/ionic-theme-utils/package.json +64 -0
  56. package/node_modules/@rdlabo/ionic-theme-utils/src/dom.spec.ts +19 -0
  57. package/node_modules/@rdlabo/ionic-theme-utils/src/dom.ts +16 -0
  58. package/node_modules/@rdlabo/ionic-theme-utils/src/focus-controller.ts +38 -0
  59. package/node_modules/@rdlabo/ionic-theme-utils/src/index.ts +59 -0
  60. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/animations/ios.enter.ts +259 -0
  61. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/animations/ios.leave.ts +99 -0
  62. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/callout-surface.ts +54 -0
  63. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/popover-interface.ts +44 -0
  64. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/utils.spec.ts +58 -0
  65. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/utils.ts +698 -0
  66. package/node_modules/@rdlabo/ionic-theme-utils/src/sheets-of-glass.ts +17 -0
  67. package/node_modules/@rdlabo/ionic-theme-utils/src/styles/index.scss +1 -0
  68. package/node_modules/@rdlabo/ionic-theme-utils/src/styles/md-ion-list-inset.scss +20 -0
  69. package/node_modules/@rdlabo/ionic-theme-utils/src/styles/structured-list.scss +310 -0
  70. package/node_modules/@rdlabo/ionic-theme-utils/src/tab-bar-searchable/interfaces.ts +28 -0
  71. package/node_modules/@rdlabo/ionic-theme-utils/src/tab-bar-searchable/utils.spec.ts +56 -0
  72. package/node_modules/@rdlabo/ionic-theme-utils/src/tab-bar-searchable/utils.ts +75 -0
  73. package/node_modules/@rdlabo/ionic-theme-utils/src/theme.ts +51 -0
  74. package/node_modules/@rdlabo/ionic-theme-utils/src/transition/ios.transition.spec.ts +52 -0
  75. package/node_modules/@rdlabo/ionic-theme-utils/src/transition/ios.transition.ts +542 -0
  76. package/package.json +7 -4
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Masahiko Sakakibara
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,28 @@
1
+ # @rdlabo/ionic-theme-utils
2
+
3
+ Shared, theme-neutral utilities for Rdlabo Ionic themes.
4
+
5
+ TypeScript and Sass sources are exported directly. Consumers are expected to
6
+ compile them as part of an Angular/Ionic application build.
7
+
8
+ ```typescript
9
+ import { createIosTransitionAnimation, getPopoverPosition } from '@rdlabo/ionic-theme-utils';
10
+ ```
11
+
12
+ ```scss
13
+ @use 'pkg:@rdlabo/ionic-theme-utils/styles/structured-list';
14
+ ```
15
+
16
+ The package currently contains shared iOS transition construction, popover
17
+ positioning, searchable tab-bar utilities, and structured-list Sass mixins.
18
+
19
+ ## Development
20
+
21
+ ```shell
22
+ npm install
23
+ npm run build
24
+ npm run lint
25
+ ```
26
+
27
+ Use `npm link` while developing this package together with a theme repository.
28
+ Theme repositories should use a tagged Git dependency for reproducible installs.
@@ -0,0 +1,3 @@
1
+ export declare const getElementRoot: (el: HTMLElement, fallback?: HTMLElement) => HTMLElement | ShadowRoot;
2
+ export declare const raf: (h: FrameRequestCallback) => any;
3
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,GAAI,IAAI,WAAW,EAAE,WAAU,WAAgB,6BAEzE,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,GAAG,oBAAoB,QAQ1C,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const getElementRoot = (el, fallback = el) => {
2
+ return el.shadowRoot || fallback;
3
+ };
4
+ export const raf = (h) => {
5
+ if (typeof __zone_symbol__requestAnimationFrame === 'function') {
6
+ return __zone_symbol__requestAnimationFrame(h);
7
+ }
8
+ if (typeof requestAnimationFrame === 'function') {
9
+ return requestAnimationFrame(h);
10
+ }
11
+ return setTimeout(h);
12
+ };
13
+ //# sourceMappingURL=dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAe,EAAE,WAAwB,EAAE,EAAE,EAAE;IAC5E,OAAO,EAAE,CAAC,UAAU,IAAI,QAAQ,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAuB,EAAE,EAAE;IAC7C,IAAI,OAAO,oCAAoC,KAAK,UAAU,EAAE,CAAC;QAC/D,OAAO,oCAAoC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,OAAO,qBAAqB,KAAK,UAAU,EAAE,CAAC;QAChD,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface FocusController {
2
+ saveViewFocus(referenceEl?: HTMLElement): void;
3
+ setViewFocus(referenceEl: HTMLElement): void;
4
+ }
5
+ export declare const createFocusController: () => FocusController;
6
+ //# sourceMappingURL=focus-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-controller.d.ts","sourceRoot":"","sources":["../src/focus-controller.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/C,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CAC9C;AAED,eAAO,MAAM,qBAAqB,QAAO,eAuBvC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { config } from './theme';
2
+ const LAST_FOCUS = 'ion-last-focus';
3
+ const moveFocus = (element) => {
4
+ element.tabIndex = -1;
5
+ element.focus();
6
+ };
7
+ const isVisible = (element) => element.offsetParent !== null;
8
+ export const createFocusController = () => ({
9
+ saveViewFocus: (referenceEl) => {
10
+ if (!config.get('focusManagerPriority', false))
11
+ return;
12
+ const activeEl = document.activeElement;
13
+ if (activeEl && referenceEl?.contains(activeEl))
14
+ activeEl.setAttribute(LAST_FOCUS, 'true');
15
+ },
16
+ setViewFocus: (referenceEl) => {
17
+ const priorities = config.get('focusManagerPriority', false);
18
+ if (!Array.isArray(priorities) || referenceEl.contains(document.activeElement))
19
+ return;
20
+ const lastFocus = referenceEl.querySelector(`[${LAST_FOCUS}]`);
21
+ if (lastFocus && isVisible(lastFocus))
22
+ return moveFocus(lastFocus);
23
+ const selectors = {
24
+ content: 'main, [role="main"]',
25
+ heading: 'h1, [role="heading"][aria-level="1"]',
26
+ banner: 'header, [role="banner"]',
27
+ };
28
+ for (const priority of priorities) {
29
+ const selector = selectors[String(priority)];
30
+ const candidate = selector ? referenceEl.querySelector(selector) : null;
31
+ if (candidate && isVisible(candidate))
32
+ return moveFocus(candidate);
33
+ }
34
+ moveFocus(referenceEl);
35
+ },
36
+ });
37
+ //# sourceMappingURL=focus-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-controller.js","sourceRoot":"","sources":["../src/focus-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,UAAU,GAAG,gBAAgB,CAAC;AACpC,MAAM,SAAS,GAAG,CAAC,OAAoB,EAAE,EAAE;IACzC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC,CAAC;AACF,MAAM,SAAS,GAAG,CAAC,OAAoB,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;AAO1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAoB,EAAE,CAAC,CAAC;IAC3D,aAAa,EAAE,CAAC,WAAW,EAAE,EAAE;QAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC;YAAE,OAAO;QACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC;QACxC,IAAI,QAAQ,IAAI,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC;YAAE,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7F,CAAC;IACD,YAAY,EAAE,CAAC,WAAW,EAAE,EAAE;QAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAU,sBAAsB,EAAE,KAAK,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,OAAO;QACvF,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,CAAc,IAAI,UAAU,GAAG,CAAC,CAAC;QAC5E,IAAI,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,SAAS,GAA2B;YACxC,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE,sCAAsC;YAC/C,MAAM,EAAE,yBAAyB;SAClC,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAc,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrF,IAAI,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;QACrE,CAAC;QACD,SAAS,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export { createIosTransitionAnimation, shadow, type IosTransitionAnimationConfig, type IosTransitionAnimationOptions, } from './transition/ios.transition';
2
+ export type { PopoverInterface, PopoverOptions, PopoverSize, TriggerAction, PositionReference, PositionSide, PositionAlign, } from './popover/popover-interface';
3
+ export { POPOVER_IOS_BODY_MARGIN, getPopoverDimensions, configureDismissInteraction, configureTriggerInteraction, getIndexOfItem, getNextItem, getPrevItem, getPopoverPosition, calculateWindowAdjustment, type ReferenceCoordinates, type PopoverStyles, } from './popover/utils';
4
+ export { createCalloutSurface } from './popover/callout-surface';
5
+ export { iosEnterAnimation as iosPopoverEnterAnimation } from './popover/animations/ios.enter';
6
+ export { iosLeaveAnimation as iosPopoverLeaveAnimation } from './popover/animations/ios.leave';
7
+ export { cloneElement, getStep, changeSelectedElement, Config, config } from './theme';
8
+ export { getElementRoot, raf } from './dom';
9
+ export { createFocusController, type FocusController } from './focus-controller';
10
+ export type { EffectScales, registeredEffect, AnimationPosition } from './sheets-of-glass';
11
+ export { TabBarSearchableType, type TabBarSearchableFunction, type SearchableEventCache, type ElementSizes, type ElementReferences, } from './tab-bar-searchable/interfaces';
12
+ export { ANIMATION_DURATION, ANIMATION_DELAY_BASE, ANIMATION_DELAY_CLOSE_BUTTONS, ANIMATION_EASING, OPACITY_TRANSITION, throwErrorByFailedClickElement, throwErrorByFailedExistElement, getElement, getElementReferences, getElementSizes, } from './tab-bar-searchable/utils';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,MAAM,EACN,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,GACnC,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,aAAa,GACd,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,cAAc,EACd,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAAE,iBAAiB,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3F,OAAO,EACL,oBAAoB,EACpB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,iBAAiB,GACvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,6BAA6B,EAC7B,gBAAgB,EAChB,kBAAkB,EAClB,8BAA8B,EAC9B,8BAA8B,EAC9B,UAAU,EACV,oBAAoB,EACpB,eAAe,GAChB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { createIosTransitionAnimation, shadow, } from './transition/ios.transition';
2
+ export { POPOVER_IOS_BODY_MARGIN, getPopoverDimensions, configureDismissInteraction, configureTriggerInteraction, getIndexOfItem, getNextItem, getPrevItem, getPopoverPosition, calculateWindowAdjustment, } from './popover/utils';
3
+ export { createCalloutSurface } from './popover/callout-surface';
4
+ export { iosEnterAnimation as iosPopoverEnterAnimation } from './popover/animations/ios.enter';
5
+ export { iosLeaveAnimation as iosPopoverLeaveAnimation } from './popover/animations/ios.leave';
6
+ export { cloneElement, getStep, changeSelectedElement, Config, config } from './theme';
7
+ export { getElementRoot, raf } from './dom';
8
+ export { createFocusController } from './focus-controller';
9
+ export { TabBarSearchableType, } from './tab-bar-searchable/interfaces';
10
+ export { ANIMATION_DURATION, ANIMATION_DELAY_BASE, ANIMATION_DELAY_CLOSE_BUTTONS, ANIMATION_EASING, OPACITY_TRANSITION, throwErrorByFailedClickElement, throwErrorByFailedExistElement, getElement, getElementReferences, getElementSizes, } from './tab-bar-searchable/utils';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,MAAM,GAGP,MAAM,6BAA6B,CAAC;AAYrC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,cAAc,EACd,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,yBAAyB,GAG1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAAE,iBAAiB,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAwB,MAAM,oBAAoB,CAAC;AAGjF,OAAO,EACL,oBAAoB,GAKrB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,6BAA6B,EAC7B,gBAAgB,EAChB,kBAAkB,EAClB,8BAA8B,EAC9B,8BAA8B,EAC9B,UAAU,EACV,oBAAoB,EACpB,eAAe,GAChB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Animation } from '@ionic/core';
2
+ export declare const iosEnterAnimation: (baseEl: HTMLElement, opts?: any) => Animation;
3
+ //# sourceMappingURL=ios.enter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios.enter.d.ts","sourceRoot":"","sources":["../../../src/popover/animations/ios.enter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAW7C,eAAO,MAAM,iBAAiB,GAAI,QAAQ,WAAW,EAAE,OAAM,GAAQ,KAAG,SAsPvE,CAAC"}
@@ -0,0 +1,196 @@
1
+ import { createAnimation } from '@ionic/core';
2
+ import { calculateWindowAdjustment, getPopoverDimensions, getPopoverPosition, POPOVER_IOS_BODY_MARGIN } from '../utils';
3
+ import { createCalloutSurface } from '../callout-surface';
4
+ import { getElementRoot } from '../../dom';
5
+ const POPOVER_IOS_BODY_PADDING = 5;
6
+ export const iosEnterAnimation = (baseEl, opts = {}) => {
7
+ const { event: ev, size, trigger, reference, side, align } = opts;
8
+ const doc = baseEl.ownerDocument;
9
+ const isRTL = doc.dir === 'rtl';
10
+ const bodyWidth = doc.defaultView.innerWidth;
11
+ const bodyHeight = doc.defaultView.innerHeight;
12
+ const root = getElementRoot(baseEl);
13
+ const contentEl = root.querySelector('.popover-content');
14
+ const arrowEl = root.querySelector('.popover-arrow');
15
+ const referenceSizeEl = trigger || ev?.detail?.ionShadowTarget || ev?.target;
16
+ const anchorBounds = referenceSizeEl?.getBoundingClientRect();
17
+ let paneAnchor = referenceSizeEl;
18
+ let pane = null;
19
+ while (paneAnchor && !pane) {
20
+ pane = paneAnchor.closest('ion-content, .ion-page, ion-menu');
21
+ paneAnchor = paneAnchor.getRootNode().host;
22
+ }
23
+ const paneBounds = pane?.getBoundingClientRect();
24
+ const scroll = pane?.shadowRoot?.querySelector('[part="scroll"]');
25
+ const scrollStyle = scroll ? getComputedStyle(scroll) : null;
26
+ let paneLeft = Math.max(0, (paneBounds?.left ?? 0) + (parseFloat(scrollStyle?.paddingLeft ?? '0') || 0));
27
+ let paneRight = Math.min(bodyWidth, (paneBounds?.right ?? bodyWidth) - (parseFloat(scrollStyle?.paddingRight ?? '0') || 0));
28
+ const splitPane = pane?.closest('ion-split-pane.split-pane-visible');
29
+ if (splitPane && pane?.closest('.split-pane-main')) {
30
+ for (const menu of Array.from(splitPane.querySelectorAll(':scope > ion-menu.menu-pane-visible'))) {
31
+ const rect = menu.getBoundingClientRect();
32
+ if (rect.left <= paneLeft && rect.right > paneLeft)
33
+ paneLeft = rect.right;
34
+ if (rect.right >= paneRight && rect.left < paneRight)
35
+ paneRight = rect.left;
36
+ }
37
+ }
38
+ const paneMargin = size === 'cover' ? 0 : POPOVER_IOS_BODY_MARGIN;
39
+ const availableWidth = Math.max(0, paneRight - paneLeft - paneMargin * 2);
40
+ if (pane && availableWidth > 0 && contentEl.getBoundingClientRect().width > availableWidth) {
41
+ contentEl.dataset['previousMaxWidth'] = contentEl.style.maxWidth;
42
+ contentEl.dataset['previousMaxWidthPriority'] = contentEl.style.getPropertyPriority('max-width');
43
+ contentEl.style.maxWidth = `${availableWidth}px`;
44
+ }
45
+ const { contentWidth, contentHeight } = getPopoverDimensions(size, contentEl, referenceSizeEl);
46
+ const isReplace = (() => {
47
+ if (reference === 'event' || !referenceSizeEl || !['ion-button', 'ion-buttons'].includes(referenceSizeEl.localName)) {
48
+ return false;
49
+ }
50
+ if (referenceSizeEl.matches('.ios-theme-disabled, .ios26-disabled')) {
51
+ return false;
52
+ }
53
+ return true;
54
+ })();
55
+ const defaultPosition = {
56
+ top: bodyHeight / 2 - contentHeight / 2,
57
+ left: bodyWidth / 2 - contentWidth / 2,
58
+ originX: isRTL ? 'right' : 'left',
59
+ originY: 'top',
60
+ };
61
+ const results = getPopoverPosition(isRTL, contentWidth, contentHeight, reference, side, align, defaultPosition, trigger, ev);
62
+ const anchor = reference === 'event' ? results.referenceCoordinates : anchorBounds;
63
+ const padding = size === 'cover' ? 0 : POPOVER_IOS_BODY_PADDING;
64
+ const margin = size === 'cover' ? 0 : POPOVER_IOS_BODY_MARGIN;
65
+ const { originX, originY, top, left: windowLeft, bottom, checkSafeAreaLeft, checkSafeAreaRight, addPopoverBottomClass, } = calculateWindowAdjustment(side, results.top, results.left, padding, bodyWidth, bodyHeight, contentWidth, contentHeight, margin, results.originX, results.originY, results.referenceCoordinates, referenceSizeEl?.getBoundingClientRect(), isReplace);
66
+ const preferredLeft = isReplace && anchorBounds
67
+ ? anchorBounds.left + anchorBounds.width / 2 <= (paneLeft + paneRight) / 2
68
+ ? anchorBounds.left
69
+ : anchorBounds.right - contentWidth
70
+ : windowLeft;
71
+ const left = pane ? Math.max(paneLeft + paneMargin, Math.min(paneRight - paneMargin - contentWidth, preferredLeft)) : preferredLeft;
72
+ const physicalSide = side === 'start' ? (isRTL ? 'right' : 'left') : side === 'end' ? (isRTL ? 'left' : 'right') : side;
73
+ const horizontal = physicalSide === 'left' || physicalSide === 'right';
74
+ const above = addPopoverBottomClass || physicalSide === 'top';
75
+ const hasCallout = !!arrowEl && !isReplace && !!anchor && size !== 'cover' && bottom === undefined;
76
+ const surfaceTop = hasCallout && !horizontal ? top + (above ? -5 : 5) : top;
77
+ const contentOrigin = anchor
78
+ ? `${anchor.left + anchor.width / 2 - left}px ${anchor.top + anchor.height / 2 - surfaceTop}px`
79
+ : `${originX} ${originY}`;
80
+ const baseAnimation = createAnimation();
81
+ const backdropAnimation = createAnimation();
82
+ const contentAnimation = createAnimation();
83
+ const targetAnimation = createAnimation();
84
+ const arrowAnimation = createAnimation();
85
+ const surfaceAnimation = createAnimation();
86
+ if (arrowEl) {
87
+ arrowAnimation.addElement(arrowEl).delay(300).duration(200).fromTo('opacity', 0, 1);
88
+ }
89
+ if (hasCallout && anchor) {
90
+ const length = horizontal ? contentHeight : contentWidth;
91
+ const inset = Math.min(48, length / 2);
92
+ const center = Math.max(inset, Math.min(length - inset, horizontal ? anchor.top + anchor.height / 2 - top : anchor.left + anchor.width / 2 - left));
93
+ const arrowSide = horizontal ? (physicalSide === 'left' ? 'right' : 'left') : above ? 'bottom' : 'top';
94
+ const layers = createCalloutSurface(root, contentWidth, contentHeight, arrowSide, center);
95
+ baseEl.classList.add('ios-theme-callout');
96
+ for (const layer of layers) {
97
+ layer.style.left = `calc(${left - 32}px + var(--offset-x, 0))`;
98
+ layer.style.top = `calc(${surfaceTop - 32}px + var(--offset-y, 0))`;
99
+ const [originLeft, originTop] = contentOrigin.split(' ').map(parseFloat);
100
+ layer.style.transformOrigin = `${originLeft + 32}px ${originTop + 32}px`;
101
+ }
102
+ surfaceAnimation
103
+ .addElement(layers)
104
+ .delay(100)
105
+ .duration(400)
106
+ .easing('cubic-bezier(0, 1, 0.22, 1)')
107
+ .fromTo('transform', 'scale(0)', 'scale(1)')
108
+ .fromTo('opacity', 0.01, 1);
109
+ }
110
+ backdropAnimation
111
+ .delay(100)
112
+ .duration(300)
113
+ .addElement(root.querySelector('ion-backdrop'))
114
+ .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
115
+ .beforeStyles({
116
+ 'pointer-events': 'none',
117
+ })
118
+ .afterClearStyles(['pointer-events']);
119
+ contentAnimation
120
+ .easing('cubic-bezier(0, 1, 0.22, 1)')
121
+ .delay(100)
122
+ .duration(400)
123
+ .addElement(root.querySelector('.popover-content'))
124
+ .beforeStyles({ 'transform-origin': contentOrigin })
125
+ .beforeAddWrite(() => {
126
+ root.querySelector('.popover-content').dataset['transformOrigin'] = contentOrigin;
127
+ })
128
+ .fromTo('transform', 'scale(0)', 'scale(1)')
129
+ .fromTo('opacity', 0.01, 1);
130
+ if (isReplace) {
131
+ targetAnimation
132
+ .delay(0)
133
+ .duration(200)
134
+ .addElement(referenceSizeEl)
135
+ .beforeStyles({ 'transform-origin': `${originY} ${originX}` })
136
+ .beforeAddClass('ios-theme-replace-element')
137
+ .fromTo('transform', 'scale(1)', 'scale(1.05)')
138
+ .fromTo('opacity', 1, 0);
139
+ }
140
+ return baseAnimation
141
+ .easing('ease')
142
+ .delay(100)
143
+ .duration(100)
144
+ .beforeAddWrite(() => {
145
+ if (size === 'cover') {
146
+ baseEl.dataset['iosThemePreviousWidth'] = baseEl.style.getPropertyValue('--width');
147
+ baseEl.dataset['iosThemePreviousWidthPriority'] = baseEl.style.getPropertyPriority('--width');
148
+ baseEl.style.setProperty('--width', `${contentWidth}px`);
149
+ }
150
+ if (addPopoverBottomClass) {
151
+ baseEl.classList.add('popover-bottom');
152
+ }
153
+ if (bottom !== undefined) {
154
+ contentEl.style.setProperty('bottom', `${bottom}px`);
155
+ }
156
+ const safeAreaLeft = ' + var(--ion-safe-area-left, 0)';
157
+ const safeAreaRight = ' - var(--ion-safe-area-right, 0)';
158
+ let leftValue = `${left}px`;
159
+ if (checkSafeAreaLeft && !pane) {
160
+ leftValue = `${left}px${safeAreaLeft}`;
161
+ }
162
+ if (checkSafeAreaRight && !pane) {
163
+ leftValue = `${left}px${safeAreaRight}`;
164
+ }
165
+ contentEl.style.setProperty('top', `calc(${surfaceTop}px + var(--offset-y, 0))`);
166
+ contentEl.style.setProperty('left', `calc(${leftValue} + var(--offset-x, 0))`);
167
+ contentEl.style.setProperty('transform-origin', contentOrigin);
168
+ if (arrowEl) {
169
+ arrowEl.style.display = 'none';
170
+ if (hasCallout && anchor) {
171
+ const inset = Math.min(48, (horizontal ? contentHeight : contentWidth) / 2);
172
+ const clamp = (value, length) => Math.max(inset, Math.min(length - inset, value));
173
+ let arrowLeft;
174
+ let arrowTop;
175
+ let rotation;
176
+ if (horizontal) {
177
+ arrowLeft = physicalSide === 'left' ? left + contentWidth - 10 : left - 24;
178
+ arrowTop = top + clamp(anchor.top + anchor.height / 2 - top, contentHeight) - 7;
179
+ rotation = physicalSide === 'left' ? 90 : -90;
180
+ }
181
+ else {
182
+ arrowLeft = left + clamp(anchor.left + anchor.width / 2 - left, contentWidth) - 17;
183
+ arrowTop = above ? surfaceTop + contentHeight - 1 : surfaceTop - 13;
184
+ rotation = above ? 180 : 0;
185
+ }
186
+ arrowEl.style.setProperty('display', 'block');
187
+ arrowEl.style.setProperty('top', `calc(${arrowTop}px + var(--offset-y, 0))`);
188
+ arrowEl.style.setProperty('left', `calc(${arrowLeft}px + var(--offset-x, 0))`);
189
+ arrowEl.style.setProperty('bottom', 'auto');
190
+ arrowEl.style.setProperty('transform', `rotate(${rotation}deg)`);
191
+ }
192
+ }
193
+ })
194
+ .addAnimation([backdropAnimation, contentAnimation, targetAnimation, arrowAnimation, surfaceAnimation]);
195
+ };
196
+ //# sourceMappingURL=ios.enter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios.enter.js","sourceRoot":"","sources":["../../../src/popover/animations/ios.enter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Animation } from '@ionic/core';
2
+ export declare const iosLeaveAnimation: (baseEl: HTMLElement) => Animation;
3
+ //# sourceMappingURL=ios.leave.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios.leave.d.ts","sourceRoot":"","sources":["../../../src/popover/animations/ios.leave.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,eAAO,MAAM,iBAAiB,GAAI,QAAQ,WAAW,KAAG,SA0FvD,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { createAnimation } from '@ionic/core';
2
+ import { getElementRoot } from '../../dom';
3
+ export const iosLeaveAnimation = (baseEl) => {
4
+ const root = getElementRoot(baseEl);
5
+ const contentEl = root.querySelector('.popover-content');
6
+ const arrowEl = root.querySelector('.popover-arrow');
7
+ const baseAnimation = createAnimation();
8
+ const backdropAnimation = createAnimation();
9
+ const contentAnimation = createAnimation();
10
+ const targetAnimation = createAnimation();
11
+ const surfaceAnimation = createAnimation()
12
+ .addElement(Array.from(root.querySelectorAll('.ios-theme-callout-layer')))
13
+ .duration(400)
14
+ .easing('ease')
15
+ .fromTo('opacity', 0.99, 0)
16
+ .fromTo('transform', 'scale(1)', 'scale(0)');
17
+ const doc = baseEl.ownerDocument;
18
+ const replaceElement = doc.querySelector('.ios-theme-replace-element');
19
+ if (replaceElement) {
20
+ const ratio = contentEl.getBoundingClientRect().width / contentEl.getBoundingClientRect().height;
21
+ const scale = ratio > 1 ? `${Math.min(1.2, 1.05 * ratio)}, 1.05` : `1.05, ${Math.min(1.2, 1.05 * ratio)}`;
22
+ targetAnimation
23
+ .addElement(replaceElement)
24
+ .delay(100)
25
+ .duration(300)
26
+ .afterRemoveClass('ios-theme-replace-element')
27
+ .fromTo('transform', `scale(${scale})`, 'scale(1)')
28
+ .fromTo('opacity', 0, 0.9);
29
+ }
30
+ backdropAnimation.addElement(root.querySelector('ion-backdrop')).fromTo('opacity', 'var(--backdrop-opacity)', 0);
31
+ contentAnimation
32
+ .duration(400)
33
+ .easing('ease')
34
+ .addElement(root.querySelector('.popover-arrow'))
35
+ .addElement(root.querySelector('.popover-content'))
36
+ .fromTo('opacity', 0.99, 0);
37
+ const popoverContentDataset = root.querySelector('.popover-content').dataset['transformOrigin'];
38
+ if (popoverContentDataset) {
39
+ contentAnimation.beforeStyles({ 'transform-origin': popoverContentDataset }).afterAddRead(() => {
40
+ root.querySelector('.popover-content').dataset['transformOrigin'] = '';
41
+ });
42
+ if (replaceElement) {
43
+ contentAnimation.fromTo('transform', 'scale(1)', 'scale(0.55)');
44
+ }
45
+ else {
46
+ contentAnimation.fromTo('transform', 'scale(1)', 'scale(0)');
47
+ }
48
+ }
49
+ return baseAnimation
50
+ .easing('ease')
51
+ .afterAddWrite(() => {
52
+ if (baseEl.dataset['iosThemePreviousWidth'] !== undefined) {
53
+ baseEl.style.setProperty('--width', baseEl.dataset['iosThemePreviousWidth'], baseEl.dataset['iosThemePreviousWidthPriority'] ?? '');
54
+ delete baseEl.dataset['iosThemePreviousWidth'];
55
+ delete baseEl.dataset['iosThemePreviousWidthPriority'];
56
+ }
57
+ baseEl.classList.remove('popover-bottom');
58
+ baseEl.classList.remove('ios-theme-callout');
59
+ root.querySelectorAll('.ios-theme-callout-layer').forEach((layer) => layer.remove());
60
+ contentEl.style.removeProperty('top');
61
+ contentEl.style.removeProperty('left');
62
+ contentEl.style.removeProperty('bottom');
63
+ contentEl.style.removeProperty('transform-origin');
64
+ if (contentEl.dataset['previousMaxWidth'] !== undefined) {
65
+ contentEl.style.setProperty('max-width', contentEl.dataset['previousMaxWidth'], contentEl.dataset['previousMaxWidthPriority'] ?? '');
66
+ delete contentEl.dataset['previousMaxWidth'];
67
+ delete contentEl.dataset['previousMaxWidthPriority'];
68
+ }
69
+ if (arrowEl) {
70
+ arrowEl.style.removeProperty('top');
71
+ arrowEl.style.removeProperty('left');
72
+ arrowEl.style.removeProperty('display');
73
+ arrowEl.style.removeProperty('bottom');
74
+ arrowEl.style.removeProperty('transform');
75
+ }
76
+ })
77
+ .duration(300)
78
+ .addAnimation([backdropAnimation, contentAnimation, targetAnimation, surfaceAnimation]);
79
+ };
80
+ //# sourceMappingURL=ios.leave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios.leave.js","sourceRoot":"","sources":["../../../src/popover/animations/ios.leave.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const createCalloutSurface: (root: ShadowRoot | HTMLElement, width: number, height: number, side: "top" | "right" | "bottom" | "left", center: number) => HTMLElement[];
2
+ //# sourceMappingURL=callout-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callout-surface.d.ts","sourceRoot":"","sources":["../../src/popover/callout-surface.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,oBAAoB,GAC/B,MAAM,UAAU,GAAG,WAAW,EAC9B,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,MAAM,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,EACzC,QAAQ,MAAM,KACb,WAAW,EA8Cb,CAAC"}
@@ -0,0 +1,45 @@
1
+ export const createCalloutSurface = (root, width, height, side, center) => {
2
+ const inset = 32;
3
+ const x = inset;
4
+ const y = inset;
5
+ const right = x + width;
6
+ const bottom = y + height;
7
+ const radius = Math.max(0, Math.min(34, width / 2, height / 2, (side === 'left' || side === 'right' ? height : width) / 2 - 17));
8
+ const point = (u, v) => {
9
+ switch (side) {
10
+ case 'top':
11
+ return `${x + center - 17 + u} ${y - 13 + v}`;
12
+ case 'right':
13
+ return `${right + 13 - v} ${y + center - 17 + u}`;
14
+ case 'bottom':
15
+ return `${x + center + 17 - u} ${bottom + 13 - v}`;
16
+ case 'left':
17
+ return `${x - 13 + v} ${y + center + 17 - u}`;
18
+ }
19
+ };
20
+ const arrow = `L ${point(0, 13)} C ${point(3, 13)} ${point(4.5, 12)} ${point(6.5, 10)} L ${point(14.5, 1.5)} C ${point(16, -0.5)} ${point(18, -0.5)} ${point(19.5, 1.5)} L ${point(27.5, 10)} C ${point(29.5, 12)} ${point(31, 13)} ${point(34, 13)}`;
21
+ const path = `M ${x + radius} ${y} ${side === 'top' ? arrow : ''}
22
+ L ${right - radius} ${y} A ${radius} ${radius} 0 0 1 ${right} ${y + radius} ${side === 'right' ? arrow : ''}
23
+ L ${right} ${bottom - radius} A ${radius} ${radius} 0 0 1 ${right - radius} ${bottom} ${side === 'bottom' ? arrow : ''}
24
+ L ${x + radius} ${bottom} A ${radius} ${radius} 0 0 1 ${x} ${bottom - radius} ${side === 'left' ? arrow : ''}
25
+ L ${x} ${y + radius} A ${radius} ${radius} 0 0 1 ${x + radius} ${y} Z`;
26
+ const svg = (body) => `url("data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="${width + inset * 2}" height="${height + inset * 2}">${body}</svg>`)}")`;
27
+ const fill = svg(`<path d="${path}" fill="white"/>`);
28
+ const stroke = svg(`<path d="${path}" fill="none" stroke="white" stroke-width="0.5"/>`);
29
+ const shadow = svg(`<defs><filter id="s" x="-50%" y="-100%" width="200%" height="300%"><feGaussianBlur stdDeviation="4"/><feOffset dy="2"/><feComposite in2="SourceGraphic" operator="out"/></filter></defs><path d="${path}" fill="white" filter="url(#s)"/>`);
30
+ const wrapper = root.querySelector('.popover-wrapper');
31
+ return [
32
+ ['callout-shadow', shadow],
33
+ ['callout-glass', fill],
34
+ ['callout-border', stroke],
35
+ ].map(([part, mask]) => {
36
+ const element = document.createElement('div');
37
+ element.setAttribute('part', part);
38
+ element.className = 'ios-theme-callout-layer';
39
+ element.setAttribute('aria-hidden', 'true');
40
+ element.style.cssText = `position:absolute;pointer-events:none;z-index:9;width:${width + inset * 2}px;height:${height + inset * 2}px;mask-image:${mask};-webkit-mask-image:${mask};mask-repeat:no-repeat;`;
41
+ wrapper.append(element);
42
+ return element;
43
+ });
44
+ };
45
+ //# sourceMappingURL=callout-surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callout-surface.js","sourceRoot":"","sources":["../../src/popover/callout-surface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { AnimationBuilder, ComponentProps, ComponentRef, FrameworkDelegate, Mode, OverlayInterface } from '@ionic/core';
2
+ export interface PopoverInterface extends OverlayInterface {
3
+ present: (event?: MouseEvent | TouchEvent | PointerEvent) => Promise<void>;
4
+ }
5
+ export interface PopoverOptions<T extends ComponentRef = ComponentRef> {
6
+ component: T;
7
+ componentProps?: ComponentProps<T>;
8
+ showBackdrop?: boolean;
9
+ backdropDismiss?: boolean;
10
+ translucent?: boolean;
11
+ cssClass?: string | string[];
12
+ event?: Event;
13
+ delegate?: FrameworkDelegate;
14
+ animated?: boolean;
15
+ focusTrap?: boolean;
16
+ mode?: Mode;
17
+ keyboardClose?: boolean;
18
+ id?: string;
19
+ htmlAttributes?: {
20
+ [key: string]: any;
21
+ };
22
+ enterAnimation?: AnimationBuilder;
23
+ leaveAnimation?: AnimationBuilder;
24
+ size?: PopoverSize;
25
+ dismissOnSelect?: boolean;
26
+ reference?: PositionReference;
27
+ side?: PositionSide;
28
+ alignment?: PositionAlign;
29
+ arrow?: boolean;
30
+ trigger?: string;
31
+ triggerAction?: string;
32
+ }
33
+ export type PopoverSize = 'cover' | 'auto';
34
+ export type TriggerAction = 'click' | 'hover' | 'context-menu';
35
+ export type PositionReference = 'trigger' | 'event';
36
+ export type PositionSide = 'top' | 'right' | 'bottom' | 'left' | 'start' | 'end';
37
+ export type PositionAlign = 'start' | 'center' | 'end';
38
+ //# sourceMappingURL=popover-interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover-interface.d.ts","sourceRoot":"","sources":["../../src/popover/popover-interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7H,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IACnE,SAAS,EAAE,CAAC,CAAC;IACb,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAExC,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAElC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc,CAAC;AAE/D,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC;AACpD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AACjF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=popover-interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover-interface.js","sourceRoot":"","sources":["../../src/popover/popover-interface.ts"],"names":[],"mappings":""}