@ionic/core 8.6.1-dev.11749562115.1e681558 → 8.6.1-dev.11749575087.1b86eb67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/hydrate/index.js CHANGED
@@ -18348,7 +18348,6 @@ class ItemSliding {
18348
18348
  }
18349
18349
  }
18350
18350
  async updateOptions() {
18351
- var _a;
18352
18351
  const options = this.el.querySelectorAll('ion-item-options');
18353
18352
  let sides = 0;
18354
18353
  // Reset left and right options in case they were removed
@@ -18362,7 +18361,7 @@ class ItemSliding {
18362
18361
  */
18363
18362
  // eslint-disable-next-line custom-rules/no-component-on-ready-method
18364
18363
  const option = item.componentOnReady !== undefined ? await item.componentOnReady() : item;
18365
- const side = isEndSide((_a = option.side) !== null && _a !== void 0 ? _a : option.getAttribute('side')) ? 'end' : 'start';
18364
+ const side = isEndSide(option.side) ? 'end' : 'start';
18366
18365
  if (side === 'start') {
18367
18366
  this.leftOptions = option;
18368
18367
  sides |= 1 /* ItemSide.Start */;
@@ -18560,7 +18559,7 @@ class ItemSliding {
18560
18559
  }
18561
18560
  render() {
18562
18561
  const mode = getIonMode$1(this);
18563
- return (hAsync(Host, { key: 'd812322c9fb5da4ee16e99dc38bfb24cb4590d03', class: {
18562
+ return (hAsync(Host, { key: '9880396ad79e06117d572a27f92c4b753d1e26db', class: {
18564
18563
  [mode]: true,
18565
18564
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
18566
18565
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -21431,7 +21430,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21431
21430
  let offset = 0;
21432
21431
  let canDismissBlocksGesture = false;
21433
21432
  let cachedScrollEl = null;
21434
- let cachedFooterEl = null;
21433
+ let cachedFooterEls = null;
21435
21434
  let cachedFooterYPosition = null;
21436
21435
  let currentFooterState = null;
21437
21436
  const canDismissMaxStep = 0.95;
@@ -21468,60 +21467,81 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21468
21467
  * @param newPosition Whether the footer is in a moving or stationary position.
21469
21468
  */
21470
21469
  const swapFooterPosition = (newPosition) => {
21471
- if (!cachedFooterEl) {
21472
- cachedFooterEl = baseEl.querySelector('ion-footer');
21473
- if (!cachedFooterEl) {
21470
+ if (!cachedFooterEls) {
21471
+ cachedFooterEls = Array.from(baseEl.querySelectorAll('ion-footer'));
21472
+ if (!cachedFooterEls.length) {
21474
21473
  return;
21475
21474
  }
21476
21475
  }
21477
21476
  const page = baseEl.querySelector('.ion-page');
21478
21477
  currentFooterState = newPosition;
21479
21478
  if (newPosition === 'stationary') {
21480
- // Reset positioning styles to allow normal document flow
21481
- cachedFooterEl.classList.remove('modal-footer-moving');
21482
- cachedFooterEl.style.removeProperty('position');
21483
- cachedFooterEl.style.removeProperty('width');
21484
- cachedFooterEl.style.removeProperty('height');
21485
- cachedFooterEl.style.removeProperty('top');
21486
- cachedFooterEl.style.removeProperty('left');
21487
- page === null || page === void 0 ? void 0 : page.style.removeProperty('padding-bottom');
21488
- // Move to page
21489
- page === null || page === void 0 ? void 0 : page.appendChild(cachedFooterEl);
21479
+ cachedFooterEls.forEach((cachedFooterEl) => {
21480
+ // Reset positioning styles to allow normal document flow
21481
+ cachedFooterEl.classList.remove('modal-footer-moving');
21482
+ cachedFooterEl.style.removeProperty('position');
21483
+ cachedFooterEl.style.removeProperty('width');
21484
+ cachedFooterEl.style.removeProperty('height');
21485
+ cachedFooterEl.style.removeProperty('top');
21486
+ cachedFooterEl.style.removeProperty('left');
21487
+ page === null || page === void 0 ? void 0 : page.style.removeProperty('padding-bottom');
21488
+ // Move to page
21489
+ page === null || page === void 0 ? void 0 : page.appendChild(cachedFooterEl);
21490
+ });
21490
21491
  }
21491
21492
  else {
21492
- // Get both the footer and document body positions
21493
- const cachedFooterElRect = cachedFooterEl.getBoundingClientRect();
21494
- const bodyRect = document.body.getBoundingClientRect();
21495
- // Add padding to the parent element to prevent content from being hidden
21496
- // when the footer is positioned absolutely. This has to be done before we
21497
- // make the footer absolutely positioned or we may accidentally cause the
21498
- // sheet to scroll.
21499
- const footerHeight = cachedFooterEl.clientHeight;
21500
- page === null || page === void 0 ? void 0 : page.style.setProperty('padding-bottom', `${footerHeight}px`);
21501
- // Apply positioning styles to keep footer at bottom
21502
- cachedFooterEl.classList.add('modal-footer-moving');
21503
- // Calculate absolute position relative to body
21504
- // We need to subtract the body's offsetTop to get true position within document.body
21505
- const absoluteTop = cachedFooterElRect.top - bodyRect.top;
21506
- const absoluteLeft = cachedFooterElRect.left - bodyRect.left;
21507
- // Capture the footer's current dimensions and hard code them during the drag
21508
- cachedFooterEl.style.setProperty('position', 'absolute');
21509
- cachedFooterEl.style.setProperty('width', `${cachedFooterEl.clientWidth}px`);
21510
- cachedFooterEl.style.setProperty('height', `${cachedFooterEl.clientHeight}px`);
21511
- cachedFooterEl.style.setProperty('top', `${absoluteTop}px`);
21512
- cachedFooterEl.style.setProperty('left', `${absoluteLeft}px`);
21513
- // Also cache the footer Y position, which we use to determine if the
21514
- // sheet has been moved below the footer. When that happens, we need to swap
21515
- // the position back so it will collapse correctly.
21516
- cachedFooterYPosition = absoluteTop;
21517
- // If there's a toolbar, we need to combine the toolbar height with the footer position
21518
- // because the toolbar moves with the drag handle, so when it starts overlapping the footer,
21519
- // we need to account for that.
21520
- const toolbar = baseEl.querySelector('ion-toolbar');
21521
- if (toolbar) {
21522
- cachedFooterYPosition -= toolbar.clientHeight;
21523
- }
21524
- document.body.appendChild(cachedFooterEl);
21493
+ let footerHeights = 0;
21494
+ cachedFooterEls.forEach((cachedFooterEl, index) => {
21495
+ // Get both the footer and document body positions
21496
+ const cachedFooterElRect = cachedFooterEl.getBoundingClientRect();
21497
+ const bodyRect = document.body.getBoundingClientRect();
21498
+ // Calculate the total height of all footers
21499
+ // so we can add padding to the page element
21500
+ footerHeights += cachedFooterEl.clientHeight;
21501
+ // Calculate absolute position relative to body
21502
+ // We need to subtract the body's offsetTop to get true position within document.body
21503
+ const absoluteTop = cachedFooterElRect.top - bodyRect.top;
21504
+ const absoluteLeft = cachedFooterElRect.left - bodyRect.left;
21505
+ // Capture the footer's current dimensions and store them in CSS variables for
21506
+ // later use when applying absolute positioning.
21507
+ cachedFooterEl.style.setProperty('--pinned-width', `${cachedFooterEl.clientWidth}px`);
21508
+ cachedFooterEl.style.setProperty('--pinned-height', `${cachedFooterEl.clientHeight}px`);
21509
+ cachedFooterEl.style.setProperty('--pinned-top', `${absoluteTop}px`);
21510
+ cachedFooterEl.style.setProperty('--pinned-left', `${absoluteLeft}px`);
21511
+ // Only cache the first footer's Y position
21512
+ // This is used to determine if the sheet has been moved below the footer
21513
+ // and needs to be swapped back to stationary so it collapses correctly.
21514
+ if (index === 0) {
21515
+ cachedFooterYPosition = absoluteTop;
21516
+ // If there's a header, we need to combine the header height with the footer position
21517
+ // because the header moves with the drag handle, so when it starts overlapping the footer,
21518
+ // we need to account for that.
21519
+ const header = baseEl.querySelector('ion-header');
21520
+ if (header) {
21521
+ cachedFooterYPosition -= header.clientHeight;
21522
+ }
21523
+ }
21524
+ });
21525
+ // Apply the pinning of styles after we've calculated everything
21526
+ // so that we don't cause layouts to shift while calculating the footer positions.
21527
+ // Otherwise, with multiple footers we'll end up capturing the wrong positions.
21528
+ cachedFooterEls.forEach((cachedFooterEl) => {
21529
+ // Add padding to the parent element to prevent content from being hidden
21530
+ // when the footer is positioned absolutely. This has to be done before we
21531
+ // make the footer absolutely positioned or we may accidentally cause the
21532
+ // sheet to scroll.
21533
+ page === null || page === void 0 ? void 0 : page.style.setProperty('padding-bottom', `${footerHeights}px`);
21534
+ // Apply positioning styles to keep footer at bottom
21535
+ cachedFooterEl.classList.add('modal-footer-moving');
21536
+ // Apply our preserved styles to pin the footer
21537
+ cachedFooterEl.style.setProperty('position', 'absolute');
21538
+ cachedFooterEl.style.setProperty('width', 'var(--pinned-width)');
21539
+ cachedFooterEl.style.setProperty('height', 'var(--pinned-height)');
21540
+ cachedFooterEl.style.setProperty('top', 'var(--pinned-top)');
21541
+ cachedFooterEl.style.setProperty('left', 'var(--pinned-left)');
21542
+ // Move the element to the body when everything else is done
21543
+ document.body.appendChild(cachedFooterEl);
21544
+ });
21525
21545
  }
21526
21546
  };
21527
21547
  /**
@@ -21713,6 +21733,16 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21713
21733
  * is not scrolled to the top.
21714
21734
  */
21715
21735
  if (!expandToScroll && detail.deltaY <= 0 && cachedScrollEl && cachedScrollEl.scrollTop > 0) {
21736
+ /**
21737
+ * If expand to scroll is disabled, we need to make sure we swap the footer position
21738
+ * back to stationary so that it will collapse correctly if the modal is dismissed without
21739
+ * dragging (e.g. through a dismiss button).
21740
+ * This can cause issues if the user has a modal with content that can be dragged, as we'll
21741
+ * swap to moving on drag and if we don't swap back here then the footer will get stuck.
21742
+ */
21743
+ if (!expandToScroll) {
21744
+ swapFooterPosition('stationary');
21745
+ }
21716
21746
  return;
21717
21747
  }
21718
21748
  /**
package/hydrate/index.mjs CHANGED
@@ -18346,7 +18346,6 @@ class ItemSliding {
18346
18346
  }
18347
18347
  }
18348
18348
  async updateOptions() {
18349
- var _a;
18350
18349
  const options = this.el.querySelectorAll('ion-item-options');
18351
18350
  let sides = 0;
18352
18351
  // Reset left and right options in case they were removed
@@ -18360,7 +18359,7 @@ class ItemSliding {
18360
18359
  */
18361
18360
  // eslint-disable-next-line custom-rules/no-component-on-ready-method
18362
18361
  const option = item.componentOnReady !== undefined ? await item.componentOnReady() : item;
18363
- const side = isEndSide((_a = option.side) !== null && _a !== void 0 ? _a : option.getAttribute('side')) ? 'end' : 'start';
18362
+ const side = isEndSide(option.side) ? 'end' : 'start';
18364
18363
  if (side === 'start') {
18365
18364
  this.leftOptions = option;
18366
18365
  sides |= 1 /* ItemSide.Start */;
@@ -18558,7 +18557,7 @@ class ItemSliding {
18558
18557
  }
18559
18558
  render() {
18560
18559
  const mode = getIonMode$1(this);
18561
- return (hAsync(Host, { key: 'd812322c9fb5da4ee16e99dc38bfb24cb4590d03', class: {
18560
+ return (hAsync(Host, { key: '9880396ad79e06117d572a27f92c4b753d1e26db', class: {
18562
18561
  [mode]: true,
18563
18562
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
18564
18563
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -21429,7 +21428,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21429
21428
  let offset = 0;
21430
21429
  let canDismissBlocksGesture = false;
21431
21430
  let cachedScrollEl = null;
21432
- let cachedFooterEl = null;
21431
+ let cachedFooterEls = null;
21433
21432
  let cachedFooterYPosition = null;
21434
21433
  let currentFooterState = null;
21435
21434
  const canDismissMaxStep = 0.95;
@@ -21466,60 +21465,81 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21466
21465
  * @param newPosition Whether the footer is in a moving or stationary position.
21467
21466
  */
21468
21467
  const swapFooterPosition = (newPosition) => {
21469
- if (!cachedFooterEl) {
21470
- cachedFooterEl = baseEl.querySelector('ion-footer');
21471
- if (!cachedFooterEl) {
21468
+ if (!cachedFooterEls) {
21469
+ cachedFooterEls = Array.from(baseEl.querySelectorAll('ion-footer'));
21470
+ if (!cachedFooterEls.length) {
21472
21471
  return;
21473
21472
  }
21474
21473
  }
21475
21474
  const page = baseEl.querySelector('.ion-page');
21476
21475
  currentFooterState = newPosition;
21477
21476
  if (newPosition === 'stationary') {
21478
- // Reset positioning styles to allow normal document flow
21479
- cachedFooterEl.classList.remove('modal-footer-moving');
21480
- cachedFooterEl.style.removeProperty('position');
21481
- cachedFooterEl.style.removeProperty('width');
21482
- cachedFooterEl.style.removeProperty('height');
21483
- cachedFooterEl.style.removeProperty('top');
21484
- cachedFooterEl.style.removeProperty('left');
21485
- page === null || page === void 0 ? void 0 : page.style.removeProperty('padding-bottom');
21486
- // Move to page
21487
- page === null || page === void 0 ? void 0 : page.appendChild(cachedFooterEl);
21477
+ cachedFooterEls.forEach((cachedFooterEl) => {
21478
+ // Reset positioning styles to allow normal document flow
21479
+ cachedFooterEl.classList.remove('modal-footer-moving');
21480
+ cachedFooterEl.style.removeProperty('position');
21481
+ cachedFooterEl.style.removeProperty('width');
21482
+ cachedFooterEl.style.removeProperty('height');
21483
+ cachedFooterEl.style.removeProperty('top');
21484
+ cachedFooterEl.style.removeProperty('left');
21485
+ page === null || page === void 0 ? void 0 : page.style.removeProperty('padding-bottom');
21486
+ // Move to page
21487
+ page === null || page === void 0 ? void 0 : page.appendChild(cachedFooterEl);
21488
+ });
21488
21489
  }
21489
21490
  else {
21490
- // Get both the footer and document body positions
21491
- const cachedFooterElRect = cachedFooterEl.getBoundingClientRect();
21492
- const bodyRect = document.body.getBoundingClientRect();
21493
- // Add padding to the parent element to prevent content from being hidden
21494
- // when the footer is positioned absolutely. This has to be done before we
21495
- // make the footer absolutely positioned or we may accidentally cause the
21496
- // sheet to scroll.
21497
- const footerHeight = cachedFooterEl.clientHeight;
21498
- page === null || page === void 0 ? void 0 : page.style.setProperty('padding-bottom', `${footerHeight}px`);
21499
- // Apply positioning styles to keep footer at bottom
21500
- cachedFooterEl.classList.add('modal-footer-moving');
21501
- // Calculate absolute position relative to body
21502
- // We need to subtract the body's offsetTop to get true position within document.body
21503
- const absoluteTop = cachedFooterElRect.top - bodyRect.top;
21504
- const absoluteLeft = cachedFooterElRect.left - bodyRect.left;
21505
- // Capture the footer's current dimensions and hard code them during the drag
21506
- cachedFooterEl.style.setProperty('position', 'absolute');
21507
- cachedFooterEl.style.setProperty('width', `${cachedFooterEl.clientWidth}px`);
21508
- cachedFooterEl.style.setProperty('height', `${cachedFooterEl.clientHeight}px`);
21509
- cachedFooterEl.style.setProperty('top', `${absoluteTop}px`);
21510
- cachedFooterEl.style.setProperty('left', `${absoluteLeft}px`);
21511
- // Also cache the footer Y position, which we use to determine if the
21512
- // sheet has been moved below the footer. When that happens, we need to swap
21513
- // the position back so it will collapse correctly.
21514
- cachedFooterYPosition = absoluteTop;
21515
- // If there's a toolbar, we need to combine the toolbar height with the footer position
21516
- // because the toolbar moves with the drag handle, so when it starts overlapping the footer,
21517
- // we need to account for that.
21518
- const toolbar = baseEl.querySelector('ion-toolbar');
21519
- if (toolbar) {
21520
- cachedFooterYPosition -= toolbar.clientHeight;
21521
- }
21522
- document.body.appendChild(cachedFooterEl);
21491
+ let footerHeights = 0;
21492
+ cachedFooterEls.forEach((cachedFooterEl, index) => {
21493
+ // Get both the footer and document body positions
21494
+ const cachedFooterElRect = cachedFooterEl.getBoundingClientRect();
21495
+ const bodyRect = document.body.getBoundingClientRect();
21496
+ // Calculate the total height of all footers
21497
+ // so we can add padding to the page element
21498
+ footerHeights += cachedFooterEl.clientHeight;
21499
+ // Calculate absolute position relative to body
21500
+ // We need to subtract the body's offsetTop to get true position within document.body
21501
+ const absoluteTop = cachedFooterElRect.top - bodyRect.top;
21502
+ const absoluteLeft = cachedFooterElRect.left - bodyRect.left;
21503
+ // Capture the footer's current dimensions and store them in CSS variables for
21504
+ // later use when applying absolute positioning.
21505
+ cachedFooterEl.style.setProperty('--pinned-width', `${cachedFooterEl.clientWidth}px`);
21506
+ cachedFooterEl.style.setProperty('--pinned-height', `${cachedFooterEl.clientHeight}px`);
21507
+ cachedFooterEl.style.setProperty('--pinned-top', `${absoluteTop}px`);
21508
+ cachedFooterEl.style.setProperty('--pinned-left', `${absoluteLeft}px`);
21509
+ // Only cache the first footer's Y position
21510
+ // This is used to determine if the sheet has been moved below the footer
21511
+ // and needs to be swapped back to stationary so it collapses correctly.
21512
+ if (index === 0) {
21513
+ cachedFooterYPosition = absoluteTop;
21514
+ // If there's a header, we need to combine the header height with the footer position
21515
+ // because the header moves with the drag handle, so when it starts overlapping the footer,
21516
+ // we need to account for that.
21517
+ const header = baseEl.querySelector('ion-header');
21518
+ if (header) {
21519
+ cachedFooterYPosition -= header.clientHeight;
21520
+ }
21521
+ }
21522
+ });
21523
+ // Apply the pinning of styles after we've calculated everything
21524
+ // so that we don't cause layouts to shift while calculating the footer positions.
21525
+ // Otherwise, with multiple footers we'll end up capturing the wrong positions.
21526
+ cachedFooterEls.forEach((cachedFooterEl) => {
21527
+ // Add padding to the parent element to prevent content from being hidden
21528
+ // when the footer is positioned absolutely. This has to be done before we
21529
+ // make the footer absolutely positioned or we may accidentally cause the
21530
+ // sheet to scroll.
21531
+ page === null || page === void 0 ? void 0 : page.style.setProperty('padding-bottom', `${footerHeights}px`);
21532
+ // Apply positioning styles to keep footer at bottom
21533
+ cachedFooterEl.classList.add('modal-footer-moving');
21534
+ // Apply our preserved styles to pin the footer
21535
+ cachedFooterEl.style.setProperty('position', 'absolute');
21536
+ cachedFooterEl.style.setProperty('width', 'var(--pinned-width)');
21537
+ cachedFooterEl.style.setProperty('height', 'var(--pinned-height)');
21538
+ cachedFooterEl.style.setProperty('top', 'var(--pinned-top)');
21539
+ cachedFooterEl.style.setProperty('left', 'var(--pinned-left)');
21540
+ // Move the element to the body when everything else is done
21541
+ document.body.appendChild(cachedFooterEl);
21542
+ });
21523
21543
  }
21524
21544
  };
21525
21545
  /**
@@ -21711,6 +21731,16 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21711
21731
  * is not scrolled to the top.
21712
21732
  */
21713
21733
  if (!expandToScroll && detail.deltaY <= 0 && cachedScrollEl && cachedScrollEl.scrollTop > 0) {
21734
+ /**
21735
+ * If expand to scroll is disabled, we need to make sure we swap the footer position
21736
+ * back to stationary so that it will collapse correctly if the modal is dismissed without
21737
+ * dragging (e.g. through a dismiss button).
21738
+ * This can cause issues if the user has a modal with content that can be dragged, as we'll
21739
+ * swap to moving on drag and if we don't swap back here then the footer will get stuck.
21740
+ */
21741
+ if (!expandToScroll) {
21742
+ swapFooterPosition('stationary');
21743
+ }
21714
21744
  return;
21715
21745
  }
21716
21746
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ionic/core",
3
- "version": "8.6.1-dev.11749562115.1e681558",
3
+ "version": "8.6.1-dev.11749575087.1b86eb67",
4
4
  "description": "Base components for Ionic",
5
5
  "keywords": [
6
6
  "ionic",
@@ -1,4 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- import{r as t,d as o,m as a,w as i,e,l as r,h as n,j as s,k as d}from"./p-B_U9CtaY.js";import{f as h,i as p,d as l,r as c,a as m,p as f}from"./p-QwEXyOze.js";import{C as b,a as u,d as x}from"./p-BhLqfMrf.js";import{e as w,g as v,r as g,b as k,h as y}from"./p-Do-uqmtX.js";import{c as A}from"./p-B-hirT0v.js";import{g as B}from"./p-CIGNaXM1.js";import{G as D,O as Y,F as E,e as S,B as j,j as C,k as M,f as T,g as O,h as $}from"./p-aIxOGKys.js";import{g as P}from"./p-DiVJyqlX.js";import{e as R,w as z}from"./p-BROiNJRB.js";import{KEYBOARD_DID_OPEN as I}from"./p-9eeaBrnk.js";import{c as W}from"./p-bNmY-WfR.js";import{g as L}from"./p-hHmYLOfE.js";import{createGesture as N}from"./p-Cl0B-RWe.js";import{w as H}from"./p-ZjP4CjeZ.js";import"./p-DzH0J0yi.js";import"./p-BTEOs1at.js";import"./p-D13Eaw-8.js";var K;!function(t){t.Dark="DARK",t.Light="LIGHT",t.Default="DEFAULT"}(K||(K={}));const Z={getEngine(){const t=B();if(null==t?void 0:t.isPluginAvailable("StatusBar"))return t.Plugins.StatusBar},setStyle(t){const o=this.getEngine();o&&o.setStyle(t)},getStyle:async function(){const t=this.getEngine();if(!t)return K.Default;const{style:o}=await t.getInfo();return o}},F=(t,o)=>{if(1===o)return 0;const a=1/(1-o);return t*a+-o*a},G=()=>{!H||H.innerWidth>=768||Z.setStyle({style:K.Dark})},V=(t=K.Default)=>{!H||H.innerWidth>=768||Z.setStyle({style:t})},_=async(t,o)=>{"function"==typeof t.canDismiss&&await t.canDismiss(void 0,D)&&(o.isRunning()?o.onFinish((()=>{t.dismiss(void 0,"handler")}),{oneTimeCallback:!0}):t.dismiss(void 0,"handler"))},X=t=>.00255275*2.71828**(-14.9619*t)-1.00255*2.71828**(-.0380968*t)+1,q=.915,J=(t,o)=>w(400,t/Math.abs(1.1*o),500),U=t=>{const{currentBreakpoint:o,backdropBreakpoint:a,expandToScroll:i}=t,e=void 0===a||a<o,r=e?`calc(var(--backdrop-opacity) * ${o})`:"0",n=W("backdropAnimation").fromTo("opacity",0,r);return e&&n.beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),{wrapperAnimation:W("wrapperAnimation").keyframes([{offset:0,opacity:1,transform:"translateY(100%)"},{offset:1,opacity:1,transform:`translateY(${100-100*o}%)`}]),backdropAnimation:n,contentAnimation:i?void 0:W("contentAnimation").keyframes([{offset:0,opacity:1,maxHeight:100*(1-o)+"%"},{offset:1,opacity:1,maxHeight:100*o+"%"}])}},Q=t=>{const{currentBreakpoint:o,backdropBreakpoint:a}=t,i=`calc(var(--backdrop-opacity) * ${F(o,a)})`,e=[{offset:0,opacity:i},{offset:1,opacity:0}],r=[{offset:0,opacity:i},{offset:a,opacity:0},{offset:1,opacity:0}],n=W("backdropAnimation").keyframes(0!==a?r:e);return{wrapperAnimation:W("wrapperAnimation").keyframes([{offset:0,opacity:1,transform:`translateY(${100-100*o}%)`},{offset:1,opacity:1,transform:"translateY(100%)"}]),backdropAnimation:n}},tt=(t,o)=>{const{presentingEl:a,currentBreakpoint:i,expandToScroll:e}=o,r=v(t),{wrapperAnimation:n,backdropAnimation:s,contentAnimation:d}=void 0!==i?U(o):{backdropAnimation:W().fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),wrapperAnimation:W().fromTo("transform","translateY(100vh)","translateY(0vh)"),contentAnimation:void 0};s.addElement(r.querySelector("ion-backdrop")),n.addElement(r.querySelectorAll(".modal-wrapper, .modal-shadow")).beforeStyles({opacity:1}),!e&&(null==d||d.addElement(t.querySelector(".ion-page")));const h=W("entering-base").addElement(t).easing("cubic-bezier(0.32,0.72,0,1)").duration(500).addAnimation([n]);if(d&&h.addAnimation(d),a){const t=window.innerWidth<768,o="ION-MODAL"===a.tagName&&void 0!==a.presentingElement,i=v(a),e=W().beforeStyles({transform:"translateY(0)","transform-origin":"top center",overflow:"hidden"}),r=document.body;if(t){const t=CSS.supports("width","max(0px, 1px)")?"max(30px, var(--ion-safe-area-top))":"30px",i=`translateY(${o?"-10px":t}) scale(0.915)`;e.afterStyles({transform:i}).beforeAddWrite((()=>r.style.setProperty("background-color","black"))).addElement(a).keyframes([{offset:0,filter:"contrast(1)",transform:"translateY(0px) scale(1)",borderRadius:"0px"},{offset:1,filter:"contrast(0.85)",transform:i,borderRadius:"10px 10px 0 0"}]),h.addAnimation(e)}else if(h.addAnimation(s),o){const t=`translateY(-10px) scale(${o?q:1})`;e.afterStyles({transform:t}).addElement(i.querySelector(".modal-wrapper")).keyframes([{offset:0,filter:"contrast(1)",transform:"translateY(0) scale(1)"},{offset:1,filter:"contrast(0.85)",transform:t}]);const a=W().afterStyles({transform:t}).addElement(i.querySelector(".modal-shadow")).keyframes([{offset:0,opacity:"1",transform:"translateY(0) scale(1)"},{offset:1,opacity:"0",transform:t}]);h.addAnimation([e,a])}else n.fromTo("opacity","0","1")}else h.addAnimation(s);return h},ot=(t,o,a=500)=>{const{presentingEl:i,currentBreakpoint:e}=o,r=v(t),{wrapperAnimation:n,backdropAnimation:s}=void 0!==e?Q(o):{backdropAnimation:W().fromTo("opacity","var(--backdrop-opacity)",0),wrapperAnimation:W().fromTo("transform","translateY(0vh)","translateY(100vh)")};s.addElement(r.querySelector("ion-backdrop")),n.addElement(r.querySelectorAll(".modal-wrapper, .modal-shadow")).beforeStyles({opacity:1});const d=W("leaving-base").addElement(t).easing("cubic-bezier(0.32,0.72,0,1)").duration(a).addAnimation(n);if(i){const t=window.innerWidth<768,o="ION-MODAL"===i.tagName&&void 0!==i.presentingElement,a=v(i),e=W().beforeClearStyles(["transform"]).afterClearStyles(["transform"]).onFinish((t=>{1===t&&(i.style.setProperty("overflow",""),Array.from(r.querySelectorAll("ion-modal:not(.overlay-hidden)")).filter((t=>void 0!==t.presentingElement)).length<=1&&r.style.setProperty("background-color",""))})),r=document.body;if(t){const t=CSS.supports("width","max(0px, 1px)")?"max(30px, var(--ion-safe-area-top))":"30px",a=`translateY(${o?"-10px":t}) scale(0.915)`;e.addElement(i).keyframes([{offset:0,filter:"contrast(0.85)",transform:a,borderRadius:"10px 10px 0 0"},{offset:1,filter:"contrast(1)",transform:"translateY(0px) scale(1)",borderRadius:"0px"}]),d.addAnimation(e)}else if(d.addAnimation(s),o){const t=`translateY(-10px) scale(${o?q:1})`;e.addElement(a.querySelector(".modal-wrapper")).afterStyles({transform:"translate3d(0, 0, 0)"}).keyframes([{offset:0,filter:"contrast(0.85)",transform:t},{offset:1,filter:"contrast(1)",transform:"translateY(0) scale(1)"}]);const i=W().addElement(a.querySelector(".modal-shadow")).afterStyles({transform:"translateY(0) scale(1)"}).keyframes([{offset:0,opacity:"0",transform:t},{offset:1,opacity:"1",transform:"translateY(0) scale(1)"}]);d.addAnimation([e,i])}else n.fromTo("opacity","1","0")}else d.addAnimation(s);return d},at=(t,o)=>{const{currentBreakpoint:a,expandToScroll:i}=o,e=v(t),{wrapperAnimation:r,backdropAnimation:n,contentAnimation:s}=void 0!==a?U(o):{backdropAnimation:W().fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),wrapperAnimation:W().keyframes([{offset:0,opacity:.01,transform:"translateY(40px)"},{offset:1,opacity:1,transform:"translateY(0px)"}]),contentAnimation:void 0};n.addElement(e.querySelector("ion-backdrop")),r.addElement(e.querySelector(".modal-wrapper")),!i&&(null==s||s.addElement(t.querySelector(".ion-page")));const d=W().addElement(t).easing("cubic-bezier(0.36,0.66,0.04,1)").duration(280).addAnimation([n,r]);return s&&d.addAnimation(s),d},it=(t,o)=>{const{currentBreakpoint:a}=o,i=v(t),{wrapperAnimation:e,backdropAnimation:r}=void 0!==a?Q(o):{backdropAnimation:W().fromTo("opacity","var(--backdrop-opacity)",0),wrapperAnimation:W().keyframes([{offset:0,opacity:.99,transform:"translateY(0px)"},{offset:1,opacity:0,transform:"translateY(40px)"}])};return r.addElement(i.querySelector("ion-backdrop")),e.addElement(i.querySelector(".modal-wrapper")),W().easing("cubic-bezier(0.47,0,0.745,0.715)").duration(200).addAnimation([r,e])},et=class{constructor(a){t(this,a),this.didPresent=o(this,"ionModalDidPresent",7),this.willPresent=o(this,"ionModalWillPresent",7),this.willDismiss=o(this,"ionModalWillDismiss",7),this.didDismiss=o(this,"ionModalDidDismiss",7),this.ionBreakpointDidChange=o(this,"ionBreakpointDidChange",7),this.didPresentShorthand=o(this,"didPresent",7),this.willPresentShorthand=o(this,"willPresent",7),this.willDismissShorthand=o(this,"willDismiss",7),this.didDismissShorthand=o(this,"didDismiss",7),this.ionMount=o(this,"ionMount",7),this.lockController=A(),this.triggerController=S(),this.coreDelegate=b(),this.isSheetModal=!1,this.inheritedAttributes={},this.inline=!1,this.gestureAnimationDismissing=!1,this.presented=!1,this.hasController=!1,this.keyboardClose=!0,this.expandToScroll=!0,this.backdropBreakpoint=0,this.handleBehavior="none",this.backdropDismiss=!0,this.showBackdrop=!0,this.animated=!0,this.isOpen=!1,this.keepContentsMounted=!1,this.focusTrap=!0,this.canDismiss=!0,this.onHandleClick=()=>{const{sheetTransition:t,handleBehavior:o}=this;"cycle"===o&&void 0===t&&this.moveToNextBreakpoint()},this.onBackdropTap=()=>{const{sheetTransition:t}=this;void 0===t&&this.dismiss(void 0,j)},this.onLifecycle=t=>{const o=this.usersElement,a=rt[t.type];if(o&&a){const i=new CustomEvent(a,{bubbles:!1,cancelable:!1,detail:t.detail});o.dispatchEvent(i)}}}onIsOpenChange(t,o){!0===t&&!1===o?this.present():!1===t&&!0===o&&this.dismiss()}triggerChanged(){const{trigger:t,el:o,triggerController:a}=this;t&&a.addClickListener(o,t)}breakpointsChanged(t){void 0!==t&&(this.sortedBreakpoints=t.sort(((t,o)=>t-o)))}connectedCallback(){const{el:t}=this;C(t),this.triggerChanged()}disconnectedCallback(){this.triggerController.removeClickListener()}componentWillLoad(){var t;const{breakpoints:o,initialBreakpoint:i,el:e,htmlAttributes:r}=this,n=this.isSheetModal=void 0!==o&&void 0!==i,s=["aria-label","role"];this.inheritedAttributes=k(e,s),void 0!==r&&s.forEach((t=>{r[t]&&(this.inheritedAttributes=Object.assign(Object.assign({},this.inheritedAttributes),{[t]:r[t]}),delete r[t])})),n&&(this.currentBreakpoint=this.initialBreakpoint),void 0===o||void 0===i||o.includes(i)||a("[ion-modal] - Your breakpoints array must include the initialBreakpoint value."),(null===(t=this.htmlAttributes)||void 0===t?void 0:t.id)||M(this.el)}componentDidLoad(){!0===this.isOpen&&g((()=>this.present())),this.breakpointsChanged(this.breakpoints),this.triggerChanged()}getDelegate(t=!1){if(this.workingDelegate&&!t)return{delegate:this.workingDelegate,inline:this.inline};const o=this.inline=null!==this.el.parentNode&&!this.hasController;return{inline:o,delegate:this.workingDelegate=o?this.delegate||this.coreDelegate:this.delegate}}async checkCanDismiss(t,o){const{canDismiss:a}=this;return"function"==typeof a?a(t,o):a}async present(){const t=await this.lockController.lock();if(this.presented)return void t();const{presentingElement:o,el:a}=this;this.currentBreakpoint=this.initialBreakpoint;const{inline:r,delegate:n}=this.getDelegate(!0);this.ionMount.emit(),this.usersElement=await u(n,a,this.component,["ion-page"],this.componentProps,r),y(a)?await R(this.usersElement):this.keepContentsMounted||await z(),i((()=>this.el.classList.add("show-modal")));const s=void 0!==o;s&&"ios"===e(this)&&(this.statusBarStyle=await Z.getStyle(),G()),await T(this,"modalEnter",tt,at,{presentingEl:o,currentBreakpoint:this.initialBreakpoint,backdropBreakpoint:this.backdropBreakpoint,expandToScroll:this.expandToScroll}),"undefined"!=typeof window&&(this.keyboardOpenCallback=()=>{this.gesture&&(this.gesture.enable(!1),g((()=>{this.gesture&&this.gesture.enable(!0)})))},window.addEventListener(I,this.keyboardOpenCallback)),this.isSheetModal?this.initSheetGesture():s&&this.initSwipeToClose(),t()}initSwipeToClose(){var t;if("ios"!==e(this))return;const{el:o}=this,a=this.leaveAnimation||r.get("modalLeave",ot),i=this.animation=a(o,{presentingEl:this.presentingElement,expandToScroll:this.expandToScroll});if(!m(o))return void f(o);const n=null!==(t=this.statusBarStyle)&&void 0!==t?t:K.Default;this.gesture=((t,o,a,i)=>{const e=.5,r=t.offsetHeight;let n=!1,s=!1,d=null,m=null,f=!0,b=0;const u=N({el:t,gestureName:"modalSwipeToClose",gesturePriority:Y,direction:"y",threshold:10,canStart:t=>{const o=t.event.target;if(null===o||!o.closest)return!0;if(d=h(o),d){if(p(d)){const t=v(d);m=t.querySelector(".inner-scroll")}else m=d;return!d.querySelector("ion-refresher")&&0===m.scrollTop}return null===o.closest("ion-footer")},onStart:a=>{const{deltaY:i}=a;f=!d||!p(d)||d.scrollY,s=void 0!==t.canDismiss&&!0!==t.canDismiss,i>0&&d&&l(d),o.progressStart(!0,n?1:0)},onMove:t=>{const{deltaY:i}=t;i>0&&d&&l(d);const n=t.deltaY/r,h=n>=0&&s,p=h?.2:.9999,c=h?X(n/p):n,m=w(1e-4,c,p);o.progressStep(m),m>=e&&b<e?V(a):m<e&&b>=e&&G(),b=m},onEnd:a=>{const h=a.velocityY,p=a.deltaY/r,l=p>=0&&s,m=l?.2:.9999,b=l?X(p/m):p,x=w(1e-4,b,m),v=!l&&(a.deltaY+1e3*h)/r>=e;let g=v?-.001:.001;v?(o.easing("cubic-bezier(0.32, 0.72, 0, 1)"),g+=L([0,0],[.32,.72],[0,1],[1,1],x)[0]):(o.easing("cubic-bezier(1, 0, 0.68, 0.28)"),g+=L([0,0],[1,0],[.68,.28],[1,1],x)[0]);const k=J(v?p*r:(1-x)*r,h);n=v,u.enable(!1),d&&c(d,f),o.onFinish((()=>{v||u.enable(!0)})).progressEnd(v?1:0,g,k),l&&x>m/4?_(t,o):v&&i()}});return u})(o,i,n,(()=>{this.gestureAnimationDismissing=!0,V(this.statusBarStyle),this.animation.onFinish((async()=>{await this.dismiss(void 0,D),this.gestureAnimationDismissing=!1}))})),this.gesture.enable(!0)}initSheetGesture(){const{wrapperEl:t,initialBreakpoint:o,backdropBreakpoint:a}=this;if(!t||void 0===o)return;const i=this.enterAnimation||r.get("modalEnter",tt),e=this.animation=i(this.el,{presentingEl:this.presentingElement,currentBreakpoint:o,backdropBreakpoint:a,expandToScroll:this.expandToScroll});e.progressStart(!0,1);const{gesture:n,moveSheetToBreakpoint:s}=((t,o,a,i,e,r,n=[],s,d,l,c)=>{const m={WRAPPER_KEYFRAMES:[{offset:0,transform:"translateY(0%)"},{offset:1,transform:"translateY(100%)"}],BACKDROP_KEYFRAMES:0!==e?[{offset:0,opacity:"var(--backdrop-opacity)"},{offset:1-e,opacity:0},{offset:1,opacity:0}]:[{offset:0,opacity:"var(--backdrop-opacity)"},{offset:1,opacity:.01}],CONTENT_KEYFRAMES:[{offset:0,maxHeight:"100%"},{offset:1,maxHeight:"0%"}]},f=t.querySelector("ion-content"),b=a.clientHeight;let u=i,x=0,k=!1,y=null,A=null,B=null,D=null;const Y=n[n.length-1],S=n[0],j=r.childAnimations.find((t=>"wrapperAnimation"===t.id)),C=r.childAnimations.find((t=>"backdropAnimation"===t.id)),M=r.childAnimations.find((t=>"contentAnimation"===t.id)),T=()=>{t.style.setProperty("pointer-events","auto"),o.style.setProperty("pointer-events","auto"),t.classList.remove(E)},O=()=>{t.style.setProperty("pointer-events","none"),o.style.setProperty("pointer-events","none"),t.classList.add(E)},$=o=>{if(!A&&(A=t.querySelector("ion-footer"),!A))return;const a=t.querySelector(".ion-page");if(D=o,"stationary"===o)A.classList.remove("modal-footer-moving"),A.style.removeProperty("position"),A.style.removeProperty("width"),A.style.removeProperty("height"),A.style.removeProperty("top"),A.style.removeProperty("left"),null==a||a.style.removeProperty("padding-bottom"),null==a||a.appendChild(A);else{const o=A.getBoundingClientRect(),i=document.body.getBoundingClientRect();null==a||a.style.setProperty("padding-bottom",`${A.clientHeight}px`),A.classList.add("modal-footer-moving");const e=o.top-i.top,r=o.left-i.left;A.style.setProperty("position","absolute"),A.style.setProperty("width",`${A.clientWidth}px`),A.style.setProperty("height",`${A.clientHeight}px`),A.style.setProperty("top",`${e}px`),A.style.setProperty("left",`${r}px`),B=e;const n=t.querySelector("ion-toolbar");n&&(B-=n.clientHeight),document.body.appendChild(A)}};j&&C&&(j.keyframes([...m.WRAPPER_KEYFRAMES]),C.keyframes([...m.BACKDROP_KEYFRAMES]),null==M||M.keyframes([...m.CONTENT_KEYFRAMES]),r.progressStart(!0,1-u),u>e?T():O()),f&&u!==Y&&s&&(f.scrollY=!1);const P=o=>{const{breakpoint:a,canDismiss:i,breakpointOffset:d,animated:h}=o,p=i&&0===a,b=p?u:a,x=0!==b;return u=0,j&&C&&(j.keyframes([{offset:0,transform:`translateY(${100*d}%)`},{offset:1,transform:`translateY(${100*(1-b)}%)`}]),C.keyframes([{offset:0,opacity:`calc(var(--backdrop-opacity) * ${F(1-d,e)})`},{offset:1,opacity:`calc(var(--backdrop-opacity) * ${F(b,e)})`}]),M&&M.keyframes([{offset:0,maxHeight:100*(1-d)+"%"},{offset:1,maxHeight:100*b+"%"}]),r.progressStep(0)),R.enable(!1),p?_(t,r):x||l(),!f||b!==n[n.length-1]&&s||(f.scrollY=!0),s||0!==b||$("stationary"),new Promise((t=>{r.onFinish((()=>{x?(s||$("stationary"),j&&C?g((()=>{j.keyframes([...m.WRAPPER_KEYFRAMES]),C.keyframes([...m.BACKDROP_KEYFRAMES]),null==M||M.keyframes([...m.CONTENT_KEYFRAMES]),r.progressStart(!0,1-b),u=b,c(u),u>e?T():O(),R.enable(!0),t()})):(R.enable(!0),t())):t()}),{oneTimeCallback:!0}).progressEnd(1,0,h?500:0)}))},R=N({el:a,gestureName:"modalSheet",gesturePriority:40,direction:"y",threshold:10,canStart:t=>{const o=h(t.event.target);if(u=d(),!s&&o)return 0===(p(o)?v(o).querySelector(".inner-scroll"):o).scrollTop;if(1===u&&o){const t=p(o)?v(o).querySelector(".inner-scroll"):o;return!o.querySelector("ion-refresher")&&0===t.scrollTop}return!0},onStart:o=>{if(k=void 0!==t.canDismiss&&!0!==t.canDismiss&&0===S,!s){const t=h(o.event.target);y=t&&p(t)?v(t).querySelector(".inner-scroll"):t}s||$("moving"),o.deltaY>0&&f&&(f.scrollY=!1),g((()=>{t.focus()})),r.progressStart(!0,1-u)},onMove:t=>{if(s||null===B||null===D||(t.currentY>=B&&"moving"===D?$("stationary"):t.currentY<B&&"stationary"===D&&$("moving")),!s&&t.deltaY<=0&&y)return;t.deltaY>0&&f&&(f.scrollY=!1);const o=n.length>1?1-n[1]:void 0,a=1-u+t.deltaY/b,i=void 0!==o&&a>=o&&k,e=i?.95:.9999,d=i&&void 0!==o?o+X((a-o)/(e-o)):a;x=w(1e-4,d,e),r.progressStep(x)},onEnd:t=>{if(!s&&t.deltaY<=0&&y&&y.scrollTop>0)return;const o=u-(t.deltaY+350*t.velocityY)/b,a=n.reduce(((t,a)=>Math.abs(a-o)<Math.abs(t-o)?a:t));P({breakpoint:a,breakpointOffset:x,canDismiss:k,animated:!0})}});return{gesture:R,moveSheetToBreakpoint:P}})(this.el,this.backdropEl,t,o,a,e,this.sortedBreakpoints,this.expandToScroll,(()=>{var t;return null!==(t=this.currentBreakpoint)&&void 0!==t?t:0}),(()=>this.sheetOnDismiss()),(t=>{this.currentBreakpoint!==t&&(this.currentBreakpoint=t,this.ionBreakpointDidChange.emit({breakpoint:t}))}));this.gesture=n,this.moveSheetToBreakpoint=s,this.gesture.enable(!0)}sheetOnDismiss(){this.gestureAnimationDismissing=!0,this.animation.onFinish((async()=>{this.currentBreakpoint=0,this.ionBreakpointDidChange.emit({breakpoint:this.currentBreakpoint}),await this.dismiss(void 0,D),this.gestureAnimationDismissing=!1}))}async dismiss(t,o){var a;if(this.gestureAnimationDismissing&&o!==D)return!1;const r=await this.lockController.lock();if("handler"!==o&&!await this.checkCanDismiss(t,o))return r(),!1;const{presentingElement:n}=this;void 0!==n&&"ios"===e(this)&&V(this.statusBarStyle),"undefined"!=typeof window&&this.keyboardOpenCallback&&(window.removeEventListener(I,this.keyboardOpenCallback),this.keyboardOpenCallback=void 0);const s=await O(this,t,o,"modalLeave",ot,it,{presentingEl:n,currentBreakpoint:null!==(a=this.currentBreakpoint)&&void 0!==a?a:this.initialBreakpoint,backdropBreakpoint:this.backdropBreakpoint,expandToScroll:this.expandToScroll});if(s){const{delegate:t}=this.getDelegate();await x(t,this.usersElement),i((()=>this.el.classList.remove("show-modal"))),this.animation&&this.animation.destroy(),this.gesture&&this.gesture.destroy()}return this.currentBreakpoint=void 0,this.animation=void 0,r(),s}onDidDismiss(){return $(this.el,"ionModalDidDismiss")}onWillDismiss(){return $(this.el,"ionModalWillDismiss")}async setCurrentBreakpoint(t){if(!this.isSheetModal)return void a("[ion-modal] - setCurrentBreakpoint is only supported on sheet modals.");if(!this.breakpoints.includes(t))return void a(`[ion-modal] - Attempted to set invalid breakpoint value ${t}. Please double check that the breakpoint value is part of your defined breakpoints.`);const{currentBreakpoint:o,moveSheetToBreakpoint:i,canDismiss:e,breakpoints:r,animated:n}=this;o!==t&&i&&(this.sheetTransition=i({breakpoint:t,breakpointOffset:1-o,canDismiss:void 0!==e&&!0!==e&&0===r[0],animated:n}),await this.sheetTransition,this.sheetTransition=void 0)}async getCurrentBreakpoint(){return this.currentBreakpoint}async moveToNextBreakpoint(){const{breakpoints:t,currentBreakpoint:o}=this;if(!t||null==o)return!1;const a=t.filter((t=>0!==t)),i=a.indexOf(o),e=a[(i+1)%a.length];return await this.setCurrentBreakpoint(e),!0}render(){const{handle:t,isSheetModal:o,presentingElement:a,htmlAttributes:i,handleBehavior:r,inheritedAttributes:d,focusTrap:h,expandToScroll:p}=this,l=!1!==t&&o,c=e(this),m=void 0!==a&&"ios"===c,f="cycle"===r;return n(s,Object.assign({key:"0bcbdcfcd7d890eb599da3f97f21c317d34f8e0e","no-router":!0,tabindex:"-1"},i,{style:{zIndex:`${2e4+this.overlayIndex}`},class:Object.assign({[c]:!0,"modal-default":!m&&!o,"modal-card":m,"modal-sheet":o,"modal-no-expand-scroll":o&&!p,"overlay-hidden":!0,[E]:!1===h},P(this.cssClass)),onIonBackdropTap:this.onBackdropTap,onIonModalDidPresent:this.onLifecycle,onIonModalWillPresent:this.onLifecycle,onIonModalWillDismiss:this.onLifecycle,onIonModalDidDismiss:this.onLifecycle}),n("ion-backdrop",{key:"d72159e73daa5af7349aa9e8f695aa435eb43069",ref:t=>this.backdropEl=t,visible:this.showBackdrop,tappable:this.backdropDismiss,part:"backdrop"}),"ios"===c&&n("div",{key:"fd2d9b13676ae72473881649a397b6eacde03a03",class:"modal-shadow"}),n("div",Object.assign({key:"908eccb1ad982dcde2dbcff0cbb18b6e60f8ba74",role:"dialog"},d,{"aria-modal":"true",class:"modal-wrapper ion-overlay-wrapper",part:"content",ref:t=>this.wrapperEl=t}),l&&n("button",{key:"332dc0b40363a77c7be62331d9f26def91c790e9",class:"modal-handle",tabIndex:f?0:-1,"aria-label":"Activate to adjust the size of the dialog overlaying the screen",onClick:f?this.onHandleClick:void 0,part:"handle"}),n("slot",{key:"c32698350193c450327e97049daf8b8d1fda0d0e"})))}get el(){return d(this)}static get watchers(){return{isOpen:["onIsOpenChange"],trigger:["triggerChanged"]}}},rt={ionModalDidPresent:"ionViewDidEnter",ionModalWillPresent:"ionViewWillEnter",ionModalWillDismiss:"ionViewWillLeave",ionModalDidDismiss:"ionViewDidLeave"};et.style={ios:':host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);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);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:""}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}',md:':host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);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);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:""}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}'};export{et as ion_modal}