@ionic/core 7.3.2-dev.11693254222.1822966d → 7.3.2-dev.11693262117.17edbf6d

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 (124) hide show
  1. package/components/action-sheet.js +8 -17
  2. package/components/alert.js +8 -17
  3. package/components/framework-delegate.js +2 -5
  4. package/components/ion-loading.js +8 -17
  5. package/components/ion-menu.js +1 -1
  6. package/components/ion-modal.js +12 -33
  7. package/components/ion-picker.js +8 -17
  8. package/components/ion-toast.js +8 -17
  9. package/components/overlays.js +22 -1
  10. package/components/popover.js +9 -30
  11. package/dist/cjs/{framework-delegate-91be3b84.js → framework-delegate-e8174951.js} +2 -5
  12. package/dist/cjs/index.cjs.js +2 -2
  13. package/dist/cjs/ion-action-sheet.cjs.entry.js +9 -18
  14. package/dist/cjs/ion-alert.cjs.entry.js +9 -18
  15. package/dist/cjs/ion-app_8.cjs.entry.js +1 -1
  16. package/dist/cjs/ion-datetime_3.cjs.entry.js +9 -18
  17. package/dist/cjs/ion-loading.cjs.entry.js +9 -18
  18. package/dist/cjs/ion-menu_3.cjs.entry.js +2 -2
  19. package/dist/cjs/ion-modal.cjs.entry.js +13 -34
  20. package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
  21. package/dist/cjs/ion-popover.cjs.entry.js +10 -31
  22. package/dist/cjs/ion-select_3.cjs.entry.js +2 -2
  23. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  24. package/dist/cjs/ion-toast.cjs.entry.js +9 -18
  25. package/dist/cjs/{overlays-cf7fa4cf.js → overlays-2b9fa92e.js} +23 -1
  26. package/dist/collection/components/action-sheet/action-sheet.js +8 -17
  27. package/dist/collection/components/alert/alert.js +8 -17
  28. package/dist/collection/components/loading/loading.js +8 -17
  29. package/dist/collection/components/modal/modal.js +12 -33
  30. package/dist/collection/components/picker/picker.js +8 -17
  31. package/dist/collection/components/popover/popover.js +9 -30
  32. package/dist/collection/components/toast/toast.js +8 -17
  33. package/dist/collection/utils/framework-delegate.js +2 -5
  34. package/dist/collection/utils/overlays.js +21 -0
  35. package/dist/docs.json +1 -1
  36. package/dist/esm/{framework-delegate-43758c88.js → framework-delegate-2b76c681.js} +2 -5
  37. package/dist/esm/index.js +2 -2
  38. package/dist/esm/ion-action-sheet.entry.js +9 -18
  39. package/dist/esm/ion-alert.entry.js +9 -18
  40. package/dist/esm/ion-app_8.entry.js +1 -1
  41. package/dist/esm/ion-datetime_3.entry.js +9 -18
  42. package/dist/esm/ion-loading.entry.js +9 -18
  43. package/dist/esm/ion-menu_3.entry.js +2 -2
  44. package/dist/esm/ion-modal.entry.js +13 -34
  45. package/dist/esm/ion-nav_2.entry.js +1 -1
  46. package/dist/esm/ion-popover.entry.js +10 -31
  47. package/dist/esm/ion-select_3.entry.js +2 -2
  48. package/dist/esm/ion-tab_2.entry.js +1 -1
  49. package/dist/esm/ion-toast.entry.js +9 -18
  50. package/dist/esm/{overlays-236d01c6.js → overlays-66222f79.js} +23 -2
  51. package/dist/esm-es5/framework-delegate-2b76c681.js +4 -0
  52. package/dist/esm-es5/index.js +1 -1
  53. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  54. package/dist/esm-es5/ion-alert.entry.js +1 -1
  55. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  56. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  57. package/dist/esm-es5/ion-loading.entry.js +1 -1
  58. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  59. package/dist/esm-es5/ion-modal.entry.js +1 -1
  60. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  61. package/dist/esm-es5/ion-popover.entry.js +1 -1
  62. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  63. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  64. package/dist/esm-es5/ion-toast.entry.js +1 -1
  65. package/dist/esm-es5/{overlays-236d01c6.js → overlays-66222f79.js} +1 -1
  66. package/dist/ionic/index.esm.js +1 -1
  67. package/dist/ionic/ionic.esm.js +1 -1
  68. package/dist/ionic/{p-04515b10.system.entry.js → p-0494a5b7.system.entry.js} +1 -1
  69. package/dist/ionic/p-16fd72f2.entry.js +4 -0
  70. package/dist/ionic/p-1c9e3bc7.entry.js +4 -0
  71. package/dist/ionic/{p-4852bb39.entry.js → p-20087c90.entry.js} +1 -1
  72. package/dist/ionic/{p-5c0754cd.entry.js → p-229df0d8.entry.js} +1 -1
  73. package/dist/ionic/p-2a51c81c.entry.js +4 -0
  74. package/dist/ionic/p-2a649b3e.system.entry.js +4 -0
  75. package/dist/ionic/p-3ef9e271.system.entry.js +4 -0
  76. package/dist/ionic/{p-ed290b4a.entry.js → p-5c96dc4e.entry.js} +1 -1
  77. package/dist/ionic/{p-f2c1459b.system.entry.js → p-6b9bf14c.system.entry.js} +1 -1
  78. package/dist/ionic/p-6d484719.system.entry.js +4 -0
  79. package/dist/ionic/p-70d137a0.js +4 -0
  80. package/dist/ionic/p-721933ff.system.js +1 -1
  81. package/dist/ionic/{p-e484ae56.entry.js → p-7776d062.entry.js} +1 -1
  82. package/dist/ionic/p-7ac9bdfa.system.entry.js +4 -0
  83. package/dist/ionic/{p-f1bf45b2.system.entry.js → p-8074bdd7.system.entry.js} +1 -1
  84. package/dist/ionic/p-8d53d5a5.entry.js +4 -0
  85. package/dist/ionic/{p-33dc95e4.system.js → p-8d9475b5.system.js} +1 -1
  86. package/dist/ionic/{p-fb16e75c.entry.js → p-9888a5a7.entry.js} +1 -1
  87. package/dist/ionic/{p-5f5d78da.system.js → p-a0ffdd91.system.js} +1 -1
  88. package/dist/ionic/p-a133c215.system.entry.js +4 -0
  89. package/dist/ionic/{p-50e474b3.system.entry.js → p-b2098e96.system.entry.js} +1 -1
  90. package/dist/ionic/p-b34c1ae1.js +4 -0
  91. package/dist/ionic/p-c0b4ca5c.system.entry.js +4 -0
  92. package/dist/ionic/p-cf768a4f.entry.js +4 -0
  93. package/dist/ionic/{p-ff0f2ef4.system.entry.js → p-d1356034.system.entry.js} +1 -1
  94. package/dist/ionic/p-ddffbfa9.entry.js +4 -0
  95. package/dist/ionic/p-e2e2c2b0.entry.js +4 -0
  96. package/dist/ionic/p-ebb442c4.system.entry.js +4 -0
  97. package/dist/ionic/{p-c275a599.system.js → p-f8e4da48.system.js} +1 -1
  98. package/dist/types/components/action-sheet/action-sheet.d.ts +1 -1
  99. package/dist/types/components/alert/alert.d.ts +1 -1
  100. package/dist/types/components/loading/loading.d.ts +1 -1
  101. package/dist/types/components/modal/modal.d.ts +1 -1
  102. package/dist/types/components/picker/picker.d.ts +1 -1
  103. package/dist/types/components/popover/popover.d.ts +1 -1
  104. package/dist/types/components/toast/toast.d.ts +1 -1
  105. package/dist/types/utils/overlays.d.ts +9 -0
  106. package/hydrate/index.js +77 -146
  107. package/package.json +1 -1
  108. package/dist/esm-es5/framework-delegate-43758c88.js +0 -4
  109. package/dist/ionic/p-13df6e84.system.entry.js +0 -4
  110. package/dist/ionic/p-2bdc6097.entry.js +0 -4
  111. package/dist/ionic/p-2d37d114.system.entry.js +0 -4
  112. package/dist/ionic/p-3c14c5b9.system.entry.js +0 -4
  113. package/dist/ionic/p-4adb3257.entry.js +0 -4
  114. package/dist/ionic/p-647c433f.entry.js +0 -4
  115. package/dist/ionic/p-77465c7a.entry.js +0 -4
  116. package/dist/ionic/p-870fee8d.system.entry.js +0 -4
  117. package/dist/ionic/p-8d1ef5d0.entry.js +0 -4
  118. package/dist/ionic/p-ad5a562b.system.entry.js +0 -4
  119. package/dist/ionic/p-d3602489.entry.js +0 -4
  120. package/dist/ionic/p-e015fbd9.system.entry.js +0 -4
  121. package/dist/ionic/p-e30f020d.entry.js +0 -4
  122. package/dist/ionic/p-f2743457.js +0 -4
  123. package/dist/ionic/p-f4bbbc33.js +0 -4
  124. package/dist/ionic/p-f94cad00.system.entry.js +0 -4
@@ -38,7 +38,6 @@ export const CoreDelegate = () => {
38
38
  const attachViewToDom = async (parentElement, userComponent, userComponentProps = {}, cssClasses = []) => {
39
39
  var _a, _b;
40
40
  BaseComponent = parentElement;
41
- let ChildComponent;
42
41
  /**
43
42
  * If passing in a component via the `component` props
44
43
  * we need to append it inside of our overlay component.
@@ -65,7 +64,6 @@ export const CoreDelegate = () => {
65
64
  * inside of the overlay component.
66
65
  */
67
66
  BaseComponent.appendChild(el);
68
- ChildComponent = el;
69
67
  await new Promise((resolve) => componentOnReady(el, resolve));
70
68
  }
71
69
  else if (BaseComponent.children.length > 0 &&
@@ -74,7 +72,7 @@ export const CoreDelegate = () => {
74
72
  * The delegate host wrapper el is only needed for modals and popovers
75
73
  * because they allow the dev to provide custom content to the overlay.
76
74
  */
77
- const root = (ChildComponent = BaseComponent.children[0]);
75
+ const root = BaseComponent.children[0];
78
76
  if (!root.classList.contains('ion-delegate-host')) {
79
77
  /**
80
78
  * If the root element is not a delegate host, it means
@@ -89,7 +87,6 @@ export const CoreDelegate = () => {
89
87
  el.append(...BaseComponent.children);
90
88
  // Append the new parent element to the original parent element.
91
89
  BaseComponent.appendChild(el);
92
- ChildComponent = el;
93
90
  }
94
91
  }
95
92
  /**
@@ -105,7 +102,7 @@ export const CoreDelegate = () => {
105
102
  Reference = document.createComment('ionic teleport');
106
103
  BaseComponent.parentNode.insertBefore(Reference, BaseComponent);
107
104
  app.appendChild(BaseComponent);
108
- return ChildComponent;
105
+ return BaseComponent;
109
106
  };
110
107
  const removeViewFromDom = () => {
111
108
  /**
@@ -617,6 +617,27 @@ export const createDelegateController = (ref) => {
617
617
  removeViewFromDom,
618
618
  };
619
619
  };
620
+ /**
621
+ * Creates a lock controller.
622
+ *
623
+ * This function locks transitions.
624
+ * The unlock() function within it calls resolve on this function, unlocking the transitions.
625
+ */
626
+ export const createLockController = () => {
627
+ let waitPromise;
628
+ const lock = async () => {
629
+ const p = waitPromise;
630
+ let resolve;
631
+ waitPromise = new Promise((r) => (resolve = r));
632
+ if (p !== undefined) {
633
+ await p;
634
+ }
635
+ return resolve;
636
+ };
637
+ return {
638
+ lock,
639
+ };
640
+ };
620
641
  /**
621
642
  * Constructs a trigger interaction for an overlay.
622
643
  * Presents an overlay when the trigger is clicked.
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2023-08-28T20:26:31",
2
+ "timestamp": "2023-08-28T22:37:59",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.1.0",
@@ -39,7 +39,6 @@ const CoreDelegate = () => {
39
39
  const attachViewToDom = async (parentElement, userComponent, userComponentProps = {}, cssClasses = []) => {
40
40
  var _a, _b;
41
41
  BaseComponent = parentElement;
42
- let ChildComponent;
43
42
  /**
44
43
  * If passing in a component via the `component` props
45
44
  * we need to append it inside of our overlay component.
@@ -66,7 +65,6 @@ const CoreDelegate = () => {
66
65
  * inside of the overlay component.
67
66
  */
68
67
  BaseComponent.appendChild(el);
69
- ChildComponent = el;
70
68
  await new Promise((resolve) => componentOnReady(el, resolve));
71
69
  }
72
70
  else if (BaseComponent.children.length > 0 &&
@@ -75,7 +73,7 @@ const CoreDelegate = () => {
75
73
  * The delegate host wrapper el is only needed for modals and popovers
76
74
  * because they allow the dev to provide custom content to the overlay.
77
75
  */
78
- const root = (ChildComponent = BaseComponent.children[0]);
76
+ const root = BaseComponent.children[0];
79
77
  if (!root.classList.contains('ion-delegate-host')) {
80
78
  /**
81
79
  * If the root element is not a delegate host, it means
@@ -90,7 +88,6 @@ const CoreDelegate = () => {
90
88
  el.append(...BaseComponent.children);
91
89
  // Append the new parent element to the original parent element.
92
90
  BaseComponent.appendChild(el);
93
- ChildComponent = el;
94
91
  }
95
92
  }
96
93
  /**
@@ -106,7 +103,7 @@ const CoreDelegate = () => {
106
103
  Reference = document.createComment('ionic teleport');
107
104
  BaseComponent.parentNode.insertBefore(Reference, BaseComponent);
108
105
  app.appendChild(BaseComponent);
109
- return ChildComponent;
106
+ return BaseComponent;
110
107
  };
111
108
  const removeViewFromDom = () => {
112
109
  /**
package/dist/esm/index.js CHANGED
@@ -11,12 +11,12 @@ export { c as componentOnReady } from './helpers-3379ba19.js';
11
11
  export { I as IonicSafeString, g as getMode, s as setupConfig } from './config-96c9ace3.js';
12
12
  export { a as LIFECYCLE_DID_ENTER, c as LIFECYCLE_DID_LEAVE, L as LIFECYCLE_WILL_ENTER, b as LIFECYCLE_WILL_LEAVE, d as LIFECYCLE_WILL_UNLOAD } from './index-6391de89.js';
13
13
  export { m as menuController } from './index-b3e05099.js';
14
- export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-236d01c6.js';
14
+ export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-66222f79.js';
15
15
  import './index-7a14ecec.js';
16
16
  import './gesture-controller-0fa396c4.js';
17
17
  import './index-847f2fde.js';
18
18
  import './hardware-back-button-39299f84.js';
19
- import './framework-delegate-43758c88.js';
19
+ import './framework-delegate-2b76c681.js';
20
20
  import './index-595d62c9.js';
21
21
 
22
22
  const IonicSlides = (opts) => {
@@ -4,7 +4,7 @@
4
4
  import { r as registerInstance, d as createEvent, e as readTask, h, H as Host, f as getElement } from './index-847f2fde.js';
5
5
  import { c as createButtonActiveGesture } from './button-active-2da0f611.js';
6
6
  import { r as raf } from './helpers-3379ba19.js';
7
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, f as present, g as dismiss, h as eventMethod, s as safeCall, j as prepareOverlay, k as setOverlayId } from './overlays-236d01c6.js';
7
+ import { d as createDelegateController, e as createLockController, f as createTriggerController, B as BACKDROP, i as isCancel, g as present, h as dismiss, j as eventMethod, s as safeCall, k as prepareOverlay, n as setOverlayId } from './overlays-66222f79.js';
8
8
  import { g as getClassMap } from './theme-17531cdf.js';
9
9
  import { b as getIonMode } from './ionic-global-1ef19007.js';
10
10
  import { c as createAnimation } from './animation-a1d9e088.js';
@@ -13,7 +13,7 @@ import './capacitor-b4979570.js';
13
13
  import './index-7a14ecec.js';
14
14
  import './index-ff313b19.js';
15
15
  import './gesture-controller-0fa396c4.js';
16
- import './framework-delegate-43758c88.js';
16
+ import './framework-delegate-2b76c681.js';
17
17
  import './hardware-back-button-39299f84.js';
18
18
  import './index-595d62c9.js';
19
19
 
@@ -117,6 +117,7 @@ const ActionSheet = class {
117
117
  this.willDismissShorthand = createEvent(this, "willDismiss", 7);
118
118
  this.didDismissShorthand = createEvent(this, "didDismiss", 7);
119
119
  this.delegateController = createDelegateController(this);
120
+ this.lockController = createLockController();
120
121
  this.triggerController = createTriggerController();
121
122
  this.presented = false;
122
123
  this.onBackdropTap = () => {
@@ -164,21 +165,10 @@ const ActionSheet = class {
164
165
  * Present the action sheet overlay after it has been created.
165
166
  */
166
167
  async present() {
167
- /**
168
- * When using an inline action sheet
169
- * and dismissing a action sheet it is possible to
170
- * quickly present the action sheet while it is
171
- * dismissing. We need to await any current
172
- * transition to allow the dismiss to finish
173
- * before presenting again.
174
- */
175
- if (this.currentTransition !== undefined) {
176
- await this.currentTransition;
177
- }
168
+ const unlock = await this.lockController.lock();
178
169
  await this.delegateController.attachViewToDom();
179
- this.currentTransition = present(this, 'actionSheetEnter', iosEnterAnimation, mdEnterAnimation);
180
- await this.currentTransition;
181
- this.currentTransition = undefined;
170
+ await present(this, 'actionSheetEnter', iosEnterAnimation, mdEnterAnimation);
171
+ unlock();
182
172
  }
183
173
  /**
184
174
  * Dismiss the action sheet overlay after it has been presented.
@@ -190,11 +180,12 @@ const ActionSheet = class {
190
180
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
191
181
  */
192
182
  async dismiss(data, role) {
193
- this.currentTransition = dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation, mdLeaveAnimation);
194
- const dismissed = await this.currentTransition;
183
+ const unlock = await this.lockController.lock();
184
+ const dismissed = await dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation, mdLeaveAnimation);
195
185
  if (dismissed) {
196
186
  this.delegateController.removeViewFromDom();
197
187
  }
188
+ unlock();
198
189
  return dismissed;
199
190
  }
200
191
  /**
@@ -5,7 +5,7 @@ import { r as registerInstance, d as createEvent, i as forceUpdate, h, H as Host
5
5
  import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config-96c9ace3.js';
6
6
  import { c as createButtonActiveGesture } from './button-active-2da0f611.js';
7
7
  import { r as raf } from './helpers-3379ba19.js';
8
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-236d01c6.js';
8
+ import { d as createDelegateController, e as createLockController, f as createTriggerController, B as BACKDROP, i as isCancel, k as prepareOverlay, n as setOverlayId, g as present, h as dismiss, j as eventMethod, s as safeCall } from './overlays-66222f79.js';
9
9
  import { g as getClassMap } from './theme-17531cdf.js';
10
10
  import { c as config, b as getIonMode } from './ionic-global-1ef19007.js';
11
11
  import { c as createAnimation } from './animation-a1d9e088.js';
@@ -14,7 +14,7 @@ import './capacitor-b4979570.js';
14
14
  import './index-7a14ecec.js';
15
15
  import './index-ff313b19.js';
16
16
  import './gesture-controller-0fa396c4.js';
17
- import './framework-delegate-43758c88.js';
17
+ import './framework-delegate-2b76c681.js';
18
18
  import './hardware-back-button-39299f84.js';
19
19
  import './index-595d62c9.js';
20
20
 
@@ -119,6 +119,7 @@ const Alert = class {
119
119
  this.willDismissShorthand = createEvent(this, "willDismiss", 7);
120
120
  this.didDismissShorthand = createEvent(this, "didDismiss", 7);
121
121
  this.delegateController = createDelegateController(this);
122
+ this.lockController = createLockController();
122
123
  this.triggerController = createTriggerController();
123
124
  this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
124
125
  this.processedInputs = [];
@@ -285,21 +286,10 @@ const Alert = class {
285
286
  * Present the alert overlay after it has been created.
286
287
  */
287
288
  async present() {
288
- /**
289
- * When using an inline alert
290
- * and dismissing an alert it is possible to
291
- * quickly present the alert while it is
292
- * dismissing. We need to await any current
293
- * transition to allow the dismiss to finish
294
- * before presenting again.
295
- */
296
- if (this.currentTransition !== undefined) {
297
- await this.currentTransition;
298
- }
289
+ const unlock = await this.lockController.lock();
299
290
  await this.delegateController.attachViewToDom();
300
- this.currentTransition = present(this, 'alertEnter', iosEnterAnimation, mdEnterAnimation);
301
- await this.currentTransition;
302
- this.currentTransition = undefined;
291
+ await present(this, 'alertEnter', iosEnterAnimation, mdEnterAnimation);
292
+ unlock();
303
293
  }
304
294
  /**
305
295
  * Dismiss the alert overlay after it has been presented.
@@ -311,11 +301,12 @@ const Alert = class {
311
301
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
312
302
  */
313
303
  async dismiss(data, role) {
314
- this.currentTransition = dismiss(this, data, role, 'alertLeave', iosLeaveAnimation, mdLeaveAnimation);
315
- const dismissed = await this.currentTransition;
304
+ const unlock = await this.lockController.lock();
305
+ const dismissed = await dismiss(this, data, role, 'alertLeave', iosLeaveAnimation, mdLeaveAnimation);
316
306
  if (dismissed) {
317
307
  this.delegateController.removeViewFromDom();
318
308
  }
309
+ unlock();
319
310
  return dismissed;
320
311
  }
321
312
  /**
@@ -9,7 +9,7 @@ import { c as createColorClasses, h as hostContext } from './theme-17531cdf.js';
9
9
  import { a as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-746a238e.js';
10
10
  import { c as createKeyboardController } from './keyboard-controller-0c2dce71.js';
11
11
  import { g as getTimeGivenProgression } from './cubic-bezier-66542bc5.js';
12
- import { a as attachComponent, d as detachComponent } from './framework-delegate-43758c88.js';
12
+ import { a as attachComponent, d as detachComponent } from './framework-delegate-2b76c681.js';
13
13
  import { t as transition } from './index-6391de89.js';
14
14
  import './index-595d62c9.js';
15
15
  import './index-7a14ecec.js';
@@ -10,10 +10,10 @@ import { c as createColorClasses, g as getClassMap } from './theme-17531cdf.js';
10
10
  import { c as chevronBack, o as chevronForward, l as chevronDown, p as caretUpSharp, q as caretDownSharp } from './index-ecfc2c9f.js';
11
11
  import { b as getIonMode } from './ionic-global-1ef19007.js';
12
12
  import { g as generateDayAriaLabel, a as getDay, i as isBefore, b as isAfter, c as isSameDay, d as getPreviousMonth, e as getNextMonth, v as validateParts, f as getPartsFromCalendarDay, h as getEndOfWeek, j as getStartOfWeek, k as getPreviousDay, l as getNextDay, m as getPreviousWeek, n as getNextWeek, p as parseMinParts, o as parseMaxParts, q as parseDate, w as warnIfValueOutOfBounds, r as convertToArrayOfNumbers, s as convertDataToISO, t as getToday, u as getClosestValidDate, x as getNumDaysInMonth, y as getCombinedDateColumnData, z as getMonthColumnData, A as getDayColumnData, B as getYearColumnData, C as isMonthFirstLocale, D as getTimeColumnsData, E as isLocaleDayPeriodRTL, F as getDaysOfWeek, G as getMonthAndYear, H as getDaysOfMonth, I as generateMonths, J as is24Hour, K as getLocalizedTime, L as getMonthAndDay, M as formatValue, N as getNextYear, O as getPreviousYear, P as clampDate, Q as parseAmPm, R as calculateHourFromAMPM } from './data-4b448e3a.js';
13
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-236d01c6.js';
13
+ import { d as createDelegateController, e as createLockController, f as createTriggerController, B as BACKDROP, i as isCancel, k as prepareOverlay, n as setOverlayId, g as present, h as dismiss, j as eventMethod, s as safeCall } from './overlays-66222f79.js';
14
14
  import { c as createAnimation } from './animation-a1d9e088.js';
15
15
  import { b as hapticSelectionChanged, h as hapticSelectionEnd, a as hapticSelectionStart } from './haptic-6447af60.js';
16
- import './framework-delegate-43758c88.js';
16
+ import './framework-delegate-2b76c681.js';
17
17
  import './hardware-back-button-39299f84.js';
18
18
  import './index-7a14ecec.js';
19
19
  import './capacitor-b4979570.js';
@@ -1726,6 +1726,7 @@ const Picker = class {
1726
1726
  this.willDismissShorthand = createEvent(this, "willDismiss", 7);
1727
1727
  this.didDismissShorthand = createEvent(this, "didDismiss", 7);
1728
1728
  this.delegateController = createDelegateController(this);
1729
+ this.lockController = createLockController();
1729
1730
  this.triggerController = createTriggerController();
1730
1731
  this.onBackdropTap = () => {
1731
1732
  this.dismiss(undefined, BACKDROP);
@@ -1792,24 +1793,13 @@ const Picker = class {
1792
1793
  * Present the picker overlay after it has been created.
1793
1794
  */
1794
1795
  async present() {
1795
- /**
1796
- * When using an inline picker
1797
- * and dismissing an picker it is possible to
1798
- * quickly present the picker while it is
1799
- * dismissing. We need to await any current
1800
- * transition to allow the dismiss to finish
1801
- * before presenting again.
1802
- */
1803
- if (this.currentTransition !== undefined) {
1804
- await this.currentTransition;
1805
- }
1796
+ const unlock = await this.lockController.lock();
1806
1797
  await this.delegateController.attachViewToDom();
1807
- this.currentTransition = present(this, 'pickerEnter', iosEnterAnimation, iosEnterAnimation, undefined);
1808
- await this.currentTransition;
1809
- this.currentTransition = undefined;
1798
+ await present(this, 'pickerEnter', iosEnterAnimation, iosEnterAnimation, undefined);
1810
1799
  if (this.duration > 0) {
1811
1800
  this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
1812
1801
  }
1802
+ unlock();
1813
1803
  }
1814
1804
  /**
1815
1805
  * Dismiss the picker overlay after it has been presented.
@@ -1821,14 +1811,15 @@ const Picker = class {
1821
1811
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
1822
1812
  */
1823
1813
  async dismiss(data, role) {
1814
+ const unlock = await this.lockController.lock();
1824
1815
  if (this.durationTimeout) {
1825
1816
  clearTimeout(this.durationTimeout);
1826
1817
  }
1827
- this.currentTransition = dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation, iosLeaveAnimation);
1828
- const dismissed = await this.currentTransition;
1818
+ const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation, iosLeaveAnimation);
1829
1819
  if (dismissed) {
1830
1820
  this.delegateController.removeViewFromDom();
1831
1821
  }
1822
+ unlock();
1832
1823
  return dismissed;
1833
1824
  }
1834
1825
  /**
@@ -4,11 +4,11 @@
4
4
  import { r as registerInstance, d as createEvent, h, H as Host, f as getElement } from './index-847f2fde.js';
5
5
  import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config-96c9ace3.js';
6
6
  import { r as raf } from './helpers-3379ba19.js';
7
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-236d01c6.js';
7
+ import { d as createDelegateController, e as createLockController, f as createTriggerController, B as BACKDROP, k as prepareOverlay, n as setOverlayId, g as present, h as dismiss, j as eventMethod } from './overlays-66222f79.js';
8
8
  import { g as getClassMap } from './theme-17531cdf.js';
9
9
  import { c as config, b as getIonMode } from './ionic-global-1ef19007.js';
10
10
  import { c as createAnimation } from './animation-a1d9e088.js';
11
- import './framework-delegate-43758c88.js';
11
+ import './framework-delegate-2b76c681.js';
12
12
  import './hardware-back-button-39299f84.js';
13
13
  import './index-595d62c9.js';
14
14
  import './index-7a14ecec.js';
@@ -117,6 +117,7 @@ const Loading = class {
117
117
  this.willDismissShorthand = createEvent(this, "willDismiss", 7);
118
118
  this.didDismissShorthand = createEvent(this, "didDismiss", 7);
119
119
  this.delegateController = createDelegateController(this);
120
+ this.lockController = createLockController();
120
121
  this.triggerController = createTriggerController();
121
122
  this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
122
123
  this.presented = false;
@@ -182,24 +183,13 @@ const Loading = class {
182
183
  * Present the loading overlay after it has been created.
183
184
  */
184
185
  async present() {
185
- /**
186
- * When using an inline loading indicator
187
- * and dismissing a loading indicator it is possible to
188
- * quickly present the loading indicator while it is
189
- * dismissing. We need to await any current
190
- * transition to allow the dismiss to finish
191
- * before presenting again.
192
- */
193
- if (this.currentTransition !== undefined) {
194
- await this.currentTransition;
195
- }
186
+ const unlock = await this.lockController.lock();
196
187
  await this.delegateController.attachViewToDom();
197
- this.currentTransition = present(this, 'loadingEnter', iosEnterAnimation, mdEnterAnimation);
198
- await this.currentTransition;
188
+ await present(this, 'loadingEnter', iosEnterAnimation, mdEnterAnimation);
199
189
  if (this.duration > 0) {
200
190
  this.durationTimeout = setTimeout(() => this.dismiss(), this.duration + 10);
201
191
  }
202
- this.currentTransition = undefined;
192
+ unlock();
203
193
  }
204
194
  /**
205
195
  * Dismiss the loading overlay after it has been presented.
@@ -211,14 +201,15 @@ const Loading = class {
211
201
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
212
202
  */
213
203
  async dismiss(data, role) {
204
+ const unlock = await this.lockController.lock();
214
205
  if (this.durationTimeout) {
215
206
  clearTimeout(this.durationTimeout);
216
207
  }
217
- this.currentTransition = dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation, mdLeaveAnimation);
218
- const dismissed = await this.currentTransition;
208
+ const dismissed = await dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation, mdLeaveAnimation);
219
209
  if (dismissed) {
220
210
  this.delegateController.removeViewFromDom();
221
211
  }
212
+ unlock();
222
213
  return dismissed;
223
214
  }
224
215
  /**
@@ -7,13 +7,13 @@ import { d as doc } from './index-7a14ecec.js';
7
7
  import { G as GESTURE_CONTROLLER } from './gesture-controller-0fa396c4.js';
8
8
  import { p as isEndSide, i as inheritAriaAttributes, o as assert, l as clamp } from './helpers-3379ba19.js';
9
9
  import { m as menuController } from './index-b3e05099.js';
10
- import { q as getOverlay } from './overlays-236d01c6.js';
10
+ import { r as getOverlay } from './overlays-66222f79.js';
11
11
  import { c as config, b as getIonMode } from './ionic-global-1ef19007.js';
12
12
  import { c as createColorClasses, h as hostContext } from './theme-17531cdf.js';
13
13
  import { u as menuOutline, v as menuSharp } from './index-ecfc2c9f.js';
14
14
  import './hardware-back-button-39299f84.js';
15
15
  import './animation-a1d9e088.js';
16
- import './framework-delegate-43758c88.js';
16
+ import './framework-delegate-2b76c681.js';
17
17
  import './index-595d62c9.js';
18
18
 
19
19
  const menuIosCss = ":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);left:0;right:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}@supports (inset-inline-start: 0){:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}}@supports not (inset-inline-start: 0){:host(.menu-side-start) .menu-inner{left:0;right:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{left:unset;right:unset;left:auto;right:0}@supports selector(:dir(rtl)){:host(.menu-side-start) .menu-inner:dir(rtl){left:unset;right:unset;left:auto;right:0}}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}@supports (inset-inline-start: 0){:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}}@supports not (inset-inline-start: 0){:host(.menu-side-end) .menu-inner{left:auto;right:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{left:unset;right:unset;left:0;right:auto}@supports selector(:dir(rtl)){:host(.menu-side-end) .menu-inner:dir(rtl){left:unset;right:unset;left:0;right:auto}}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){width:var(--width);min-width:var(--min-width);max-width:var(--max-width)}:host(.menu-pane-visible) .menu-inner{left:0;right:0;width:auto;-webkit-transform:none !important;transform:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}:host(.menu-pane-visible) ion-backdrop{display:hidden !important;}:host(.menu-type-push){z-index:1000}:host(.menu-type-push) .show-backdrop{display:block}";
@@ -3,11 +3,11 @@
3
3
  */
4
4
  import { r as registerInstance, d as createEvent, w as writeTask, h, H as Host, f as getElement } from './index-847f2fde.js';
5
5
  import { f as findClosestIonContent, i as isIonContent, d as disableContentScrollY, r as resetContentScrollY, a as findIonContent, p as printIonContentErrorMsg } from './index-746a238e.js';
6
- import { C as CoreDelegate, a as attachComponent, d as detachComponent } from './framework-delegate-43758c88.js';
6
+ import { C as CoreDelegate, a as attachComponent, d as detachComponent } from './framework-delegate-2b76c681.js';
7
7
  import { g as getElementRoot, l as clamp, r as raf, k as inheritAttributes, m as hasLazyBuild } from './helpers-3379ba19.js';
8
8
  import { p as printIonWarning } from './index-595d62c9.js';
9
9
  import { g as getCapacitor } from './capacitor-b4979570.js';
10
- import { G as GESTURE, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, n as activeAnimations, g as dismiss, h as eventMethod } from './overlays-236d01c6.js';
10
+ import { G as GESTURE, e as createLockController, f as createTriggerController, B as BACKDROP, k as prepareOverlay, n as setOverlayId, g as present, o as activeAnimations, h as dismiss, j as eventMethod } from './overlays-66222f79.js';
11
11
  import { g as getClassMap } from './theme-17531cdf.js';
12
12
  import { e as deepReady, w as waitForMount } from './index-6391de89.js';
13
13
  import { b as getIonMode, c as config } from './ionic-global-1ef19007.js';
@@ -1113,6 +1113,7 @@ const Modal = class {
1113
1113
  this.willDismissShorthand = createEvent(this, "willDismiss", 7);
1114
1114
  this.didDismissShorthand = createEvent(this, "didDismiss", 7);
1115
1115
  this.ionMount = createEvent(this, "ionMount", 7);
1116
+ this.lockController = createLockController();
1116
1117
  this.triggerController = createTriggerController();
1117
1118
  this.coreDelegate = CoreDelegate();
1118
1119
  this.isSheetModal = false;
@@ -1280,18 +1281,8 @@ const Modal = class {
1280
1281
  if (this.presented) {
1281
1282
  return;
1282
1283
  }
1284
+ const unlock = await this.lockController.lock();
1283
1285
  const { presentingElement, el } = this;
1284
- /**
1285
- * When using an inline modal
1286
- * and dismissing a modal it is possible to
1287
- * quickly present the modal while it is
1288
- * dismissing. We need to await any current
1289
- * transition to allow the dismiss to finish
1290
- * before presenting again.
1291
- */
1292
- if (this.currentTransition !== undefined) {
1293
- await this.currentTransition;
1294
- }
1295
1286
  /**
1296
1287
  * If the modal is presented multiple times (inline modals), we
1297
1288
  * need to reset the current breakpoint to the initial breakpoint.
@@ -1323,11 +1314,6 @@ const Modal = class {
1323
1314
  await waitForMount();
1324
1315
  }
1325
1316
  writeTask(() => this.el.classList.add('show-modal'));
1326
- this.currentTransition = present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
1327
- presentingEl: presentingElement,
1328
- currentBreakpoint: this.initialBreakpoint,
1329
- backdropBreakpoint: this.backdropBreakpoint,
1330
- });
1331
1317
  /* tslint:disable-next-line */
1332
1318
  if (typeof window !== 'undefined') {
1333
1319
  /**
@@ -1370,14 +1356,18 @@ const Modal = class {
1370
1356
  this.statusBarStyle = await StatusBar.getStyle();
1371
1357
  setCardStatusBarDark();
1372
1358
  }
1373
- await this.currentTransition;
1359
+ await present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
1360
+ presentingEl: presentingElement,
1361
+ currentBreakpoint: this.initialBreakpoint,
1362
+ backdropBreakpoint: this.backdropBreakpoint,
1363
+ });
1374
1364
  if (this.isSheetModal) {
1375
1365
  this.initSheetGesture();
1376
1366
  }
1377
1367
  else if (hasCardModal) {
1378
1368
  this.initSwipeToClose();
1379
1369
  }
1380
- this.currentTransition = undefined;
1370
+ unlock();
1381
1371
  }
1382
1372
  initSwipeToClose() {
1383
1373
  var _a;
@@ -1467,6 +1457,7 @@ const Modal = class {
1467
1457
  if (this.gestureAnimationDismissing && role !== GESTURE) {
1468
1458
  return false;
1469
1459
  }
1460
+ const unlock = await this.lockController.lock();
1470
1461
  /**
1471
1462
  * If a canDismiss handler is responsible
1472
1463
  * for calling the dismiss method, we should
@@ -1490,24 +1481,12 @@ const Modal = class {
1490
1481
  window.removeEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
1491
1482
  this.keyboardOpenCallback = undefined;
1492
1483
  }
1493
- /**
1494
- * When using an inline modal
1495
- * and presenting a modal it is possible to
1496
- * quickly dismiss the modal while it is
1497
- * presenting. We need to await any current
1498
- * transition to allow the present to finish
1499
- * before dismissing again.
1500
- */
1501
- if (this.currentTransition !== undefined) {
1502
- await this.currentTransition;
1503
- }
1504
1484
  const enteringAnimation = activeAnimations.get(this) || [];
1505
- this.currentTransition = dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, {
1485
+ const dismissed = await dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, {
1506
1486
  presentingEl: presentingElement,
1507
1487
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
1508
1488
  backdropBreakpoint: this.backdropBreakpoint,
1509
1489
  });
1510
- const dismissed = await this.currentTransition;
1511
1490
  if (dismissed) {
1512
1491
  const { delegate } = this.getDelegate();
1513
1492
  await detachComponent(delegate, this.usersElement);
@@ -1521,8 +1500,8 @@ const Modal = class {
1521
1500
  enteringAnimation.forEach((ani) => ani.destroy());
1522
1501
  }
1523
1502
  this.currentBreakpoint = undefined;
1524
- this.currentTransition = undefined;
1525
1503
  this.animation = undefined;
1504
+ unlock();
1526
1505
  return dismissed;
1527
1506
  }
1528
1507
  /**
@@ -6,7 +6,7 @@ import { g as getTimeGivenProgression } from './cubic-bezier-66542bc5.js';
6
6
  import { o as assert, s as shallowEqualStringMap } from './helpers-3379ba19.js';
7
7
  import { l as lifecycle, t as transition, s as setPageHidden, d as LIFECYCLE_WILL_UNLOAD, b as LIFECYCLE_WILL_LEAVE, c as LIFECYCLE_DID_LEAVE } from './index-6391de89.js';
8
8
  import { b as getIonMode, c as config } from './ionic-global-1ef19007.js';
9
- import { a as attachComponent } from './framework-delegate-43758c88.js';
9
+ import { a as attachComponent } from './framework-delegate-2b76c681.js';
10
10
 
11
11
  const VIEW_STATE_NEW = 1;
12
12
  const VIEW_STATE_ATTACHED = 2;