@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,49 @@
1
+ export const cloneElement = (tagName, useCache = true) => {
2
+ if (useCache) {
3
+ const cachedElement = document.querySelector(`${tagName}.ion-cloned-element`);
4
+ if (cachedElement !== null)
5
+ return cachedElement;
6
+ }
7
+ const clonedEl = document.createElement(tagName);
8
+ clonedEl.classList.add('ion-cloned-element');
9
+ clonedEl.style.setProperty('display', 'none');
10
+ document.body.appendChild(clonedEl);
11
+ return clonedEl;
12
+ };
13
+ export const getStep = (targetX, position) => {
14
+ const currentX = targetX - position.width / 2;
15
+ return Math.max(0, Math.min(1, (currentX - position.minPositionX) / (position.maxPositionX - position.minPositionX)));
16
+ };
17
+ export const changeSelectedElement = (target, selected, tagName, selectedClass) => {
18
+ target.querySelectorAll(tagName).forEach((element) => {
19
+ element.classList.remove(selectedClass, 'ion-activated');
20
+ });
21
+ selected.classList.add('ion-activated');
22
+ };
23
+ export class Config {
24
+ constructor() {
25
+ this.values = new Map();
26
+ }
27
+ reset(config) {
28
+ this.values = new Map(Object.entries(config));
29
+ }
30
+ get(key, fallback) {
31
+ const value = this.values.get(key);
32
+ return (value !== undefined ? value : fallback);
33
+ }
34
+ getBoolean(key, fallback = false) {
35
+ const value = this.values.get(key);
36
+ if (value === undefined)
37
+ return fallback;
38
+ return typeof value === 'string' ? value === 'true' : !!value;
39
+ }
40
+ getNumber(key, fallback) {
41
+ const value = Number.parseFloat(String(this.values.get(key)));
42
+ return Number.isNaN(value) ? (fallback ?? Number.NaN) : value;
43
+ }
44
+ set(key, value) {
45
+ this.values.set(key, value);
46
+ }
47
+ }
48
+ export const config = new Config();
49
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Animation } from '@ionic/core';
2
+ export interface IosTransitionAnimationOptions {
3
+ enteringEl: HTMLElement;
4
+ leavingEl?: HTMLElement;
5
+ direction?: string;
6
+ duration?: number;
7
+ easing?: string;
8
+ progressCallback?: (ani: Animation | undefined) => void;
9
+ }
10
+ export interface IosTransitionAnimationConfig {
11
+ offLeftPercent: number;
12
+ radius?: number;
13
+ getIonPageElement: (element: HTMLElement) => Element;
14
+ connectNativeUIShellTransition?: (animation: Animation, entering: HTMLElement, leaving?: HTMLElement) => void;
15
+ }
16
+ export declare const shadow: <T extends Element>(el: T) => ShadowRoot | T;
17
+ export declare const createIosTransitionAnimation: <TOpts extends IosTransitionAnimationOptions>(config: IosTransitionAnimationConfig) => ((navEl: HTMLElement, opts: TOpts) => Animation);
18
+ //# sourceMappingURL=ios.transition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios.transition.d.ts","sourceRoot":"","sources":["../../src/transition/ios.transition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,WAAW,CAAC;IACxB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;CACzD;AAGD,MAAM,WAAW,4BAA4B;IAK3C,cAAc,EAAE,MAAM,CAAC;IAEvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,iBAAiB,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;IAKrD,8BAA8B,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;CAC/G;AAQD,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,OAAO,EAAE,IAAI,CAAC,KAAG,UAAU,GAAG,CAE9D,CAAC;AA6GF,eAAO,MAAM,4BAA4B,GAAI,KAAK,SAAS,6BAA6B,EACtF,QAAQ,4BAA4B,KACnC,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,KAAK,SAAS,CAuYjD,CAAC"}
@@ -0,0 +1,412 @@
1
+ import { createAnimation } from '@ionic/core';
2
+ const DURATION = 540;
3
+ const getClonedElement = (tagName) => {
4
+ return document.querySelector(`${tagName}.ion-cloned-element`);
5
+ };
6
+ export const shadow = (el) => {
7
+ return el.shadowRoot || el;
8
+ };
9
+ const animateFixedBackButton = (root, navEl, page, entering, interactive, otherPage) => {
10
+ const button = page.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled) ion-back-button:not(.ios-theme-disabled, .ios26-disabled)');
11
+ if (!button || button.offsetWidth === 0) {
12
+ return;
13
+ }
14
+ const otherButton = otherPage?.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled) ion-back-button:not(.ios-theme-disabled, .ios26-disabled)');
15
+ const persistent = !!otherButton && otherButton.offsetWidth > 0;
16
+ const buttons = [button, ...(persistent ? [otherButton] : [])].map((element) => ({
17
+ element,
18
+ visibility: element.style.visibility,
19
+ }));
20
+ const rect = button.getBoundingClientRect();
21
+ const width = button.offsetWidth;
22
+ const height = button.offsetHeight;
23
+ const clone = getClonedElement('ion-back-button');
24
+ if (!clone) {
25
+ return;
26
+ }
27
+ const cloneParent = clone.parentNode;
28
+ const cloneNextSibling = clone.nextSibling;
29
+ const cloneStyle = clone.getAttribute('style');
30
+ clone.icon = button.icon;
31
+ clone.text = button.text;
32
+ clone.mode = button.mode;
33
+ clone.color = button.color;
34
+ clone.disabled = button.disabled;
35
+ const icon = shadow(clone).querySelector('ion-icon');
36
+ const animation = createAnimation().addElement(clone);
37
+ const fadeStart = !entering && interactive ? 0.8 : 0.4;
38
+ const fadeEnd = entering ? 0.96 : interactive ? 1 : 0.95;
39
+ if (persistent) {
40
+ animation.fromTo('transform', 'scale(1)', 'scale(1)').fromTo('opacity', 1, 1);
41
+ }
42
+ else if (entering) {
43
+ animation.keyframes([
44
+ { offset: 0, transform: 'scale(1.2)', opacity: 0 },
45
+ { offset: fadeStart, transform: 'scale(1.2)', opacity: 0 },
46
+ { offset: 0.65, transform: 'scale(1.12)', opacity: 0.15 },
47
+ { offset: 0.9, transform: 'scale(1.02)', opacity: 0.75 },
48
+ { offset: fadeEnd, transform: 'scale(1)', opacity: 1 },
49
+ { offset: 1, transform: 'scale(1)', opacity: 1 },
50
+ ]);
51
+ }
52
+ else {
53
+ animation.keyframes([
54
+ { offset: 0, transform: 'scale(1)', opacity: 1 },
55
+ { offset: fadeStart, transform: 'scale(1)', opacity: 1 },
56
+ { offset: fadeEnd, transform: 'scale(1.2)', opacity: 0 },
57
+ { offset: 1, transform: 'scale(1.2)', opacity: 0 },
58
+ ]);
59
+ }
60
+ if (icon && !persistent) {
61
+ const from = entering ? 'blur(4px)' : 'blur(0px)';
62
+ const to = entering ? 'blur(0px)' : 'blur(4px)';
63
+ animation.addAnimation(createAnimation()
64
+ .addElement(icon)
65
+ .keyframes([
66
+ { offset: 0, filter: from },
67
+ { offset: fadeStart, filter: from },
68
+ { offset: fadeEnd, filter: to },
69
+ { offset: 1, filter: to },
70
+ ]));
71
+ }
72
+ root.beforeAddWrite(() => {
73
+ Object.assign(clone.style, {
74
+ position: 'fixed',
75
+ left: `${rect.left + (rect.width - width) / 2}px`,
76
+ top: `${rect.top + (rect.height - height) / 2}px`,
77
+ width: `${width}px`,
78
+ height: `${height}px`,
79
+ margin: '0',
80
+ pointerEvents: 'none',
81
+ visibility: 'visible',
82
+ display: getComputedStyle(button).display,
83
+ zIndex: '1000',
84
+ });
85
+ navEl.appendChild(clone);
86
+ buttons.forEach(({ element }) => (element.style.visibility = 'hidden'));
87
+ });
88
+ root.afterAddWrite(() => {
89
+ buttons.forEach(({ element, visibility }) => (element.style.visibility = visibility));
90
+ cloneParent.insertBefore(clone, cloneNextSibling);
91
+ if (cloneStyle === null) {
92
+ clone.removeAttribute('style');
93
+ }
94
+ else {
95
+ clone.setAttribute('style', cloneStyle);
96
+ }
97
+ });
98
+ root.addAnimation(animation);
99
+ };
100
+ export const createIosTransitionAnimation = (config) => {
101
+ const { offLeftPercent, getIonPageElement, connectNativeUIShellTransition } = config;
102
+ return (navEl, opts) => {
103
+ try {
104
+ const EASING = 'cubic-bezier(0.32,0.72,0,1)';
105
+ const OPACITY = 'opacity';
106
+ const TRANSFORM = 'transform';
107
+ const CENTER = '0%';
108
+ const OFF_OPACITY = 0.8;
109
+ const isRTL = navEl.ownerDocument.dir === 'rtl';
110
+ const OFF_RIGHT = isRTL ? '-99.5%' : '99.5%';
111
+ const OFF_LEFT = isRTL ? `${offLeftPercent}%` : `-${offLeftPercent}%`;
112
+ const enteringEl = opts.enteringEl;
113
+ const leavingEl = opts.leavingEl;
114
+ const backDirection = opts.direction === 'back';
115
+ const contentEl = enteringEl.querySelector(':scope > ion-content');
116
+ const headerEls = enteringEl.querySelectorAll(':scope > ion-header > *:not(ion-toolbar), :scope > ion-footer > *');
117
+ const enteringToolBarEls = enteringEl.querySelectorAll(':scope > ion-header > ion-toolbar');
118
+ const rootAnimation = createAnimation();
119
+ const enteringContentAnimation = createAnimation();
120
+ rootAnimation
121
+ .addElement(enteringEl)
122
+ .duration((opts.duration ?? 0) || DURATION)
123
+ .easing(opts.easing || EASING)
124
+ .fill('both')
125
+ .beforeRemoveClass('ion-page-invisible');
126
+ const topPage = backDirection ? leavingEl : enteringEl;
127
+ const translucentTop = topPage?.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled)');
128
+ if (topPage && translucentTop) {
129
+ const shade = navEl.ownerDocument.createElement('div');
130
+ shade.className = 'ios-transition-shade';
131
+ shade.setAttribute('aria-hidden', 'true');
132
+ const clipPath = topPage.style.clipPath;
133
+ const corner = config.radius ?? 0;
134
+ Object.assign(shade.style, {
135
+ position: 'absolute',
136
+ inset: '0',
137
+ zIndex: topPage.style.zIndex,
138
+ pointerEvents: 'none',
139
+ background: 'rgba(0, 0, 0, 0.1)',
140
+ });
141
+ rootAnimation.beforeAddWrite(() => {
142
+ topPage.before(shade);
143
+ if (corner > 0) {
144
+ topPage.style.clipPath = `inset(0 round ${corner}px)`;
145
+ }
146
+ });
147
+ rootAnimation.afterAddWrite(() => {
148
+ shade.remove();
149
+ topPage.style.clipPath = clipPath;
150
+ });
151
+ rootAnimation.addAnimation(createAnimation()
152
+ .addElement(shade)
153
+ .fromTo(OPACITY, backDirection ? 1 : 0, backDirection ? 0 : 1));
154
+ }
155
+ if (leavingEl && navEl !== null && navEl !== undefined) {
156
+ const navDecorAnimation = createAnimation();
157
+ navDecorAnimation.addElement(navEl);
158
+ rootAnimation.addAnimation(navDecorAnimation);
159
+ }
160
+ if (enteringEl.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled)')) {
161
+ enteringContentAnimation.addElement(enteringEl);
162
+ }
163
+ else if (!contentEl && enteringToolBarEls.length === 0 && headerEls.length === 0) {
164
+ enteringContentAnimation.addElement(enteringEl.querySelector(':scope > .ion-page, :scope > ion-nav, :scope > ion-tabs'));
165
+ }
166
+ else {
167
+ enteringContentAnimation.addElement(contentEl);
168
+ enteringContentAnimation.addElement(headerEls);
169
+ }
170
+ rootAnimation.addAnimation(enteringContentAnimation);
171
+ if (backDirection) {
172
+ enteringContentAnimation
173
+ .beforeClearStyles([OPACITY])
174
+ .fromTo('transform', `translateX(${OFF_LEFT})`, `translateX(${CENTER})`)
175
+ .fromTo(OPACITY, translucentTop ? 1 : OFF_OPACITY, 1);
176
+ }
177
+ else {
178
+ enteringContentAnimation.beforeClearStyles([OPACITY]).fromTo('transform', `translateX(${OFF_RIGHT})`, `translateX(${CENTER})`);
179
+ }
180
+ if (contentEl && !enteringEl.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled)')) {
181
+ const enteringTransitionEffectEl = shadow(contentEl).querySelector('.transition-effect');
182
+ if (enteringTransitionEffectEl) {
183
+ const enteringTransitionCoverEl = enteringTransitionEffectEl.querySelector('.transition-cover');
184
+ const enteringTransitionShadowEl = enteringTransitionEffectEl.querySelector('.transition-shadow');
185
+ const enteringTransitionEffect = createAnimation();
186
+ const enteringTransitionCover = createAnimation();
187
+ const enteringTransitionShadow = createAnimation();
188
+ enteringTransitionEffect
189
+ .addElement(enteringTransitionEffectEl)
190
+ .beforeStyles({ opacity: '1', display: 'block' })
191
+ .afterStyles({ opacity: '', display: '' });
192
+ enteringTransitionCover
193
+ .addElement(enteringTransitionCoverEl)
194
+ .beforeClearStyles([OPACITY])
195
+ .fromTo(OPACITY, 0, 0.1);
196
+ enteringTransitionShadow
197
+ .addElement(enteringTransitionShadowEl)
198
+ .beforeClearStyles([OPACITY])
199
+ .fromTo(OPACITY, 0.03, 0.7);
200
+ enteringTransitionEffect.addAnimation([enteringTransitionCover, enteringTransitionShadow]);
201
+ enteringContentAnimation.addAnimation([enteringTransitionEffect]);
202
+ }
203
+ }
204
+ if (topPage) {
205
+ animateFixedBackButton(rootAnimation, navEl, topPage, !backDirection, opts.progressCallback !== undefined, backDirection ? enteringEl : leavingEl);
206
+ }
207
+ const enteringContentHasLargeTitle = enteringEl.querySelector('ion-header.header-collapse-condense');
208
+ enteringToolBarEls.forEach((enteringToolBarEl) => {
209
+ if (enteringToolBarEl.closest('ion-header')?.matches('.header-translucent:not(.ios-theme-disabled, .ios26-disabled)')) {
210
+ return;
211
+ }
212
+ const enteringToolBar = createAnimation();
213
+ enteringToolBar.addElement(enteringToolBarEl);
214
+ rootAnimation.addAnimation(enteringToolBar);
215
+ const enteringTitle = createAnimation();
216
+ enteringTitle.addElement(enteringToolBarEl.querySelector('ion-title'));
217
+ const enteringToolBarButtons = createAnimation();
218
+ const buttons = Array.from(enteringToolBarEl.querySelectorAll('ion-buttons,[menuToggle]'));
219
+ const parentHeader = enteringToolBarEl.closest('ion-header');
220
+ const inactiveHeader = parentHeader?.classList.contains('header-collapse-condense-inactive');
221
+ let buttonsToAnimate;
222
+ if (backDirection) {
223
+ buttonsToAnimate = buttons.filter((button) => {
224
+ const isCollapseButton = button.classList.contains('buttons-collapse');
225
+ return (isCollapseButton && !inactiveHeader) || !isCollapseButton;
226
+ });
227
+ }
228
+ else {
229
+ buttonsToAnimate = buttons.filter((button) => !button.classList.contains('buttons-collapse'));
230
+ }
231
+ enteringToolBarButtons.addElement(buttonsToAnimate);
232
+ const enteringToolBarItems = createAnimation();
233
+ enteringToolBarItems.addElement(enteringToolBarEl.querySelectorAll(':scope > *:not(ion-title):not(ion-buttons):not([menuToggle])'));
234
+ const enteringToolBarBg = createAnimation();
235
+ enteringToolBarBg.addElement(shadow(enteringToolBarEl).querySelector('.toolbar-background'));
236
+ const enteringBackButton = createAnimation();
237
+ const backButtonEl = enteringToolBarEl.querySelector('ion-back-button');
238
+ if (backButtonEl) {
239
+ enteringBackButton.addElement(backButtonEl);
240
+ }
241
+ enteringToolBar.addAnimation([enteringTitle, enteringToolBarButtons, enteringToolBarItems, enteringToolBarBg, enteringBackButton]);
242
+ enteringToolBarButtons.fromTo(OPACITY, 0.01, 1);
243
+ enteringToolBarItems.fromTo(OPACITY, 0.01, 1);
244
+ if (backDirection) {
245
+ if (!inactiveHeader) {
246
+ enteringTitle.fromTo('transform', `translateX(${OFF_LEFT})`, `translateX(${CENTER})`).fromTo(OPACITY, 0.01, 1);
247
+ }
248
+ enteringToolBarItems.fromTo('transform', `translateX(${OFF_LEFT})`, `translateX(${CENTER})`);
249
+ enteringBackButton.fromTo(OPACITY, 0.01, 1);
250
+ }
251
+ else {
252
+ if (!enteringContentHasLargeTitle) {
253
+ enteringTitle.fromTo('transform', `translateX(${OFF_RIGHT})`, `translateX(${CENTER})`).fromTo(OPACITY, 0.01, 1);
254
+ }
255
+ enteringToolBarItems.fromTo('transform', `translateX(${OFF_RIGHT})`, `translateX(${CENTER})`);
256
+ enteringToolBarBg.beforeClearStyles([OPACITY, 'transform']);
257
+ const translucentHeader = parentHeader?.translucent;
258
+ if (!translucentHeader) {
259
+ enteringToolBarBg.fromTo(OPACITY, 0.01, 'var(--opacity)');
260
+ }
261
+ else {
262
+ enteringToolBarBg.fromTo('transform', isRTL ? 'translateX(-100%)' : 'translateX(100%)', 'translateX(0px)');
263
+ }
264
+ enteringBackButton.fromTo(OPACITY, 0.01, 1);
265
+ if (backButtonEl) {
266
+ const enteringBackBtnText = createAnimation();
267
+ enteringBackBtnText
268
+ .addElement(shadow(backButtonEl).querySelector('.button-text'))
269
+ .fromTo(`transform`, isRTL ? 'translateX(-100px)' : 'translateX(100px)', 'translateX(0px)');
270
+ enteringToolBar.addAnimation(enteringBackBtnText);
271
+ }
272
+ }
273
+ });
274
+ if (leavingEl) {
275
+ const leavingContent = createAnimation();
276
+ const leavingContentEl = leavingEl.querySelector(':scope > ion-content');
277
+ const leavingToolBarEls = leavingEl.querySelectorAll(':scope > ion-header > ion-toolbar');
278
+ const leavingHeaderEls = leavingEl.querySelectorAll(':scope > ion-header > *:not(ion-toolbar), :scope > ion-footer > *');
279
+ if (leavingEl.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled)')) {
280
+ leavingContent.addElement(leavingEl);
281
+ }
282
+ else if (!leavingContentEl && leavingToolBarEls.length === 0 && leavingHeaderEls.length === 0) {
283
+ leavingContent.addElement(leavingEl.querySelector(':scope > .ion-page, :scope > ion-nav, :scope > ion-tabs'));
284
+ }
285
+ else {
286
+ leavingContent.addElement(leavingContentEl);
287
+ leavingContent.addElement(leavingHeaderEls);
288
+ }
289
+ rootAnimation.addAnimation(leavingContent);
290
+ if (backDirection) {
291
+ leavingContent
292
+ .beforeClearStyles([OPACITY])
293
+ .fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)');
294
+ const leavingPage = getIonPageElement(leavingEl);
295
+ rootAnimation.afterAddWrite(() => {
296
+ if (rootAnimation.getDirection() === 'normal') {
297
+ leavingPage.style.setProperty('display', 'none');
298
+ }
299
+ });
300
+ }
301
+ else {
302
+ leavingContent
303
+ .fromTo('transform', `translateX(${CENTER})`, `translateX(${OFF_LEFT})`)
304
+ .fromTo(OPACITY, 1, translucentTop ? 1 : OFF_OPACITY);
305
+ }
306
+ if (leavingContentEl &&
307
+ !leavingEl.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled)')) {
308
+ const leavingTransitionEffectEl = shadow(leavingContentEl).querySelector('.transition-effect');
309
+ if (leavingTransitionEffectEl) {
310
+ const leavingTransitionCoverEl = leavingTransitionEffectEl.querySelector('.transition-cover');
311
+ const leavingTransitionShadowEl = leavingTransitionEffectEl.querySelector('.transition-shadow');
312
+ const leavingTransitionEffect = createAnimation();
313
+ const leavingTransitionCover = createAnimation();
314
+ const leavingTransitionShadow = createAnimation();
315
+ leavingTransitionEffect
316
+ .addElement(leavingTransitionEffectEl)
317
+ .beforeStyles({ opacity: '1', display: 'block' })
318
+ .afterStyles({ opacity: '', display: '' });
319
+ leavingTransitionCover
320
+ .addElement(leavingTransitionCoverEl)
321
+ .beforeClearStyles([OPACITY])
322
+ .fromTo(OPACITY, 0.1, 0);
323
+ leavingTransitionShadow
324
+ .addElement(leavingTransitionShadowEl)
325
+ .beforeClearStyles([OPACITY])
326
+ .fromTo(OPACITY, 0.7, 0.03);
327
+ leavingTransitionEffect.addAnimation([leavingTransitionCover, leavingTransitionShadow]);
328
+ leavingContent.addAnimation([leavingTransitionEffect]);
329
+ }
330
+ }
331
+ leavingToolBarEls.forEach((leavingToolBarEl) => {
332
+ if (leavingToolBarEl.closest('ion-header')?.matches('.header-translucent:not(.ios-theme-disabled, .ios26-disabled)')) {
333
+ return;
334
+ }
335
+ const leavingToolBar = createAnimation();
336
+ leavingToolBar.addElement(leavingToolBarEl);
337
+ const leavingTitle = createAnimation();
338
+ leavingTitle.addElement(leavingToolBarEl.querySelector('ion-title'));
339
+ const leavingToolBarButtons = createAnimation();
340
+ const buttons = leavingToolBarEl.querySelectorAll('ion-buttons,[menuToggle]');
341
+ const parentHeader = leavingToolBarEl.closest('ion-header');
342
+ const inactiveHeader = parentHeader?.classList.contains('header-collapse-condense-inactive');
343
+ const buttonsToAnimate = Array.from(buttons).filter((button) => {
344
+ const isCollapseButton = button.classList.contains('buttons-collapse');
345
+ return (isCollapseButton && !inactiveHeader) || !isCollapseButton;
346
+ });
347
+ leavingToolBarButtons.addElement(buttonsToAnimate);
348
+ const leavingToolBarItems = createAnimation();
349
+ const leavingToolBarItemEls = leavingToolBarEl.querySelectorAll(':scope > *:not(ion-title):not(ion-buttons):not([menuToggle])');
350
+ if (leavingToolBarItemEls.length > 0) {
351
+ leavingToolBarItems.addElement(leavingToolBarItemEls);
352
+ }
353
+ const leavingToolBarBg = createAnimation();
354
+ leavingToolBarBg.addElement(shadow(leavingToolBarEl).querySelector('.toolbar-background'));
355
+ const leavingBackButton = createAnimation();
356
+ const backButtonEl = leavingToolBarEl.querySelector('ion-back-button');
357
+ if (backButtonEl) {
358
+ leavingBackButton.addElement(backButtonEl);
359
+ }
360
+ leavingToolBar.addAnimation([leavingTitle, leavingToolBarButtons, leavingToolBarItems, leavingBackButton, leavingToolBarBg]);
361
+ rootAnimation.addAnimation(leavingToolBar);
362
+ leavingBackButton.fromTo(OPACITY, 0.99, 0);
363
+ leavingToolBarButtons.fromTo(OPACITY, 0.99, 0);
364
+ leavingToolBarItems.fromTo(OPACITY, 0.99, 0);
365
+ if (backDirection) {
366
+ if (!inactiveHeader) {
367
+ leavingTitle
368
+ .fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)')
369
+ .fromTo(OPACITY, 0.99, 0);
370
+ }
371
+ leavingToolBarItems.fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)');
372
+ leavingToolBarBg.beforeClearStyles([OPACITY, 'transform']);
373
+ const translucentHeader = parentHeader?.translucent;
374
+ if (!translucentHeader) {
375
+ leavingToolBarBg.fromTo(OPACITY, 'var(--opacity)', 0);
376
+ }
377
+ else {
378
+ leavingToolBarBg.fromTo('transform', 'translateX(0px)', isRTL ? 'translateX(-100%)' : 'translateX(100%)');
379
+ }
380
+ if (backButtonEl) {
381
+ const leavingBackBtnText = createAnimation();
382
+ leavingBackBtnText
383
+ .addElement(shadow(backButtonEl).querySelector('.button-text'))
384
+ .fromTo('transform', `translateX(${CENTER})`, `translateX(${(isRTL ? -124 : 124) + 'px'})`);
385
+ leavingToolBar.addAnimation(leavingBackBtnText);
386
+ }
387
+ }
388
+ else {
389
+ if (!inactiveHeader) {
390
+ leavingTitle
391
+ .fromTo('transform', `translateX(${CENTER})`, `translateX(${OFF_LEFT})`)
392
+ .fromTo(OPACITY, 0.99, 0)
393
+ .afterClearStyles([TRANSFORM, OPACITY]);
394
+ }
395
+ leavingToolBarItems
396
+ .fromTo('transform', `translateX(${CENTER})`, `translateX(${OFF_LEFT})`)
397
+ .afterClearStyles([TRANSFORM, OPACITY]);
398
+ leavingBackButton.afterClearStyles([OPACITY]);
399
+ leavingTitle.afterClearStyles([OPACITY]);
400
+ leavingToolBarButtons.afterClearStyles([OPACITY]);
401
+ }
402
+ });
403
+ }
404
+ connectNativeUIShellTransition?.(rootAnimation, enteringEl, leavingEl);
405
+ return rootAnimation;
406
+ }
407
+ catch (err) {
408
+ throw err;
409
+ }
410
+ };
411
+ };
412
+ //# sourceMappingURL=ios.transition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios.transition.js","sourceRoot":"","sources":["../../src/transition/ios.transition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@rdlabo/ionic-theme-utils",
3
+ "private": false,
4
+ "version": "0.1.0",
5
+ "description": "Shared utilities for Rdlabo Ionic themes",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ },
15
+ "./styles": "./src/styles/index.scss",
16
+ "./styles/md-ion-list-inset": "./src/styles/md-ion-list-inset.scss",
17
+ "./styles/*": "./src/styles/*.scss"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "src",
22
+ "package.json",
23
+ "README.md",
24
+ "LICENSE"
25
+ ],
26
+ "scripts": {
27
+ "build": "tsc",
28
+ "test": "vitest run",
29
+ "fmt:check": "prettier --check \"./**/*.{js,json,md,scss,ts,yml}\"",
30
+ "lint": "eslint .",
31
+ "fmt": "prettier --write \"./**/*.{js,json,md,scss,ts,yml}\"",
32
+ "prepublishOnly": "npm run build",
33
+ "prepare": "npm run build"
34
+ },
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "git+ssh://git@github.com/rdlabo-dev/ionic-theme-utils.git"
38
+ },
39
+ "keywords": [
40
+ "ionic",
41
+ "framework",
42
+ "theme",
43
+ "utilities"
44
+ ],
45
+ "author": "Masahiko Sakakibara <sakakibara@rdlabo.jp>",
46
+ "license": "MIT",
47
+ "bugs": {
48
+ "url": "https://github.com/rdlabo-dev/ionic-theme-utils/issues"
49
+ },
50
+ "homepage": "https://github.com/rdlabo-dev/ionic-theme-utils#readme",
51
+ "peerDependencies": {
52
+ "@ionic/core": ">=8.8.1 <10"
53
+ },
54
+ "devDependencies": {
55
+ "@eslint/js": "^9.39.5",
56
+ "@ionic/core": "^9.0.0",
57
+ "eslint": "^9.39.5",
58
+ "jsdom": "^26.1.0",
59
+ "prettier": "^3.6.2",
60
+ "typescript": "^5.9.3",
61
+ "typescript-eslint": "^8.70.0",
62
+ "vitest": "^4.1.11"
63
+ }
64
+ }
@@ -0,0 +1,19 @@
1
+ import { describe, expect, it } from 'vitest';
2
+
3
+ import { getElementRoot } from './dom';
4
+
5
+ describe('getElementRoot', () => {
6
+ it('returns the shadow root when one exists', () => {
7
+ const element = document.createElement('div');
8
+ const root = element.attachShadow({ mode: 'open' });
9
+
10
+ expect(getElementRoot(element)).toBe(root);
11
+ });
12
+
13
+ it('returns the supplied fallback without a shadow root', () => {
14
+ const element = document.createElement('div');
15
+ const fallback = document.createElement('main');
16
+
17
+ expect(getElementRoot(element, fallback)).toBe(fallback);
18
+ });
19
+ });
@@ -0,0 +1,16 @@
1
+ declare const __zone_symbol__requestAnimationFrame: any;
2
+ declare const requestAnimationFrame: any;
3
+
4
+ export const getElementRoot = (el: HTMLElement, fallback: HTMLElement = el) => {
5
+ return el.shadowRoot || fallback;
6
+ };
7
+
8
+ export const raf = (h: FrameRequestCallback) => {
9
+ if (typeof __zone_symbol__requestAnimationFrame === 'function') {
10
+ return __zone_symbol__requestAnimationFrame(h);
11
+ }
12
+ if (typeof requestAnimationFrame === 'function') {
13
+ return requestAnimationFrame(h);
14
+ }
15
+ return setTimeout(h);
16
+ };