@ionic/core 8.6.1-nightly.20250610 → 8.6.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.
package/hydrate/index.js CHANGED
@@ -18348,6 +18348,7 @@ class ItemSliding {
18348
18348
  }
18349
18349
  }
18350
18350
  async updateOptions() {
18351
+ var _a;
18351
18352
  const options = this.el.querySelectorAll('ion-item-options');
18352
18353
  let sides = 0;
18353
18354
  // Reset left and right options in case they were removed
@@ -18361,7 +18362,7 @@ class ItemSliding {
18361
18362
  */
18362
18363
  // eslint-disable-next-line custom-rules/no-component-on-ready-method
18363
18364
  const option = item.componentOnReady !== undefined ? await item.componentOnReady() : item;
18364
- const side = isEndSide(option.side) ? 'end' : 'start';
18365
+ const side = isEndSide((_a = option.side) !== null && _a !== void 0 ? _a : option.getAttribute('side')) ? 'end' : 'start';
18365
18366
  if (side === 'start') {
18366
18367
  this.leftOptions = option;
18367
18368
  sides |= 1 /* ItemSide.Start */;
@@ -18559,7 +18560,7 @@ class ItemSliding {
18559
18560
  }
18560
18561
  render() {
18561
18562
  const mode = getIonMode$1(this);
18562
- return (hAsync(Host, { key: '9880396ad79e06117d572a27f92c4b753d1e26db', class: {
18563
+ return (hAsync(Host, { key: 'd812322c9fb5da4ee16e99dc38bfb24cb4590d03', class: {
18563
18564
  [mode]: true,
18564
18565
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
18565
18566
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -21430,7 +21431,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21430
21431
  let offset = 0;
21431
21432
  let canDismissBlocksGesture = false;
21432
21433
  let cachedScrollEl = null;
21433
- let cachedFooterEl = null;
21434
+ let cachedFooterEls = null;
21434
21435
  let cachedFooterYPosition = null;
21435
21436
  let currentFooterState = null;
21436
21437
  const canDismissMaxStep = 0.95;
@@ -21467,60 +21468,81 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21467
21468
  * @param newPosition Whether the footer is in a moving or stationary position.
21468
21469
  */
21469
21470
  const swapFooterPosition = (newPosition) => {
21470
- if (!cachedFooterEl) {
21471
- cachedFooterEl = baseEl.querySelector('ion-footer');
21472
- if (!cachedFooterEl) {
21471
+ if (!cachedFooterEls) {
21472
+ cachedFooterEls = Array.from(baseEl.querySelectorAll('ion-footer'));
21473
+ if (!cachedFooterEls.length) {
21473
21474
  return;
21474
21475
  }
21475
21476
  }
21476
21477
  const page = baseEl.querySelector('.ion-page');
21477
21478
  currentFooterState = newPosition;
21478
21479
  if (newPosition === 'stationary') {
21479
- // Reset positioning styles to allow normal document flow
21480
- cachedFooterEl.classList.remove('modal-footer-moving');
21481
- cachedFooterEl.style.removeProperty('position');
21482
- cachedFooterEl.style.removeProperty('width');
21483
- cachedFooterEl.style.removeProperty('height');
21484
- cachedFooterEl.style.removeProperty('top');
21485
- cachedFooterEl.style.removeProperty('left');
21486
- page === null || page === void 0 ? void 0 : page.style.removeProperty('padding-bottom');
21487
- // Move to page
21488
- page === null || page === void 0 ? void 0 : page.appendChild(cachedFooterEl);
21480
+ cachedFooterEls.forEach((cachedFooterEl) => {
21481
+ // Reset positioning styles to allow normal document flow
21482
+ cachedFooterEl.classList.remove('modal-footer-moving');
21483
+ cachedFooterEl.style.removeProperty('position');
21484
+ cachedFooterEl.style.removeProperty('width');
21485
+ cachedFooterEl.style.removeProperty('height');
21486
+ cachedFooterEl.style.removeProperty('top');
21487
+ cachedFooterEl.style.removeProperty('left');
21488
+ page === null || page === void 0 ? void 0 : page.style.removeProperty('padding-bottom');
21489
+ // Move to page
21490
+ page === null || page === void 0 ? void 0 : page.appendChild(cachedFooterEl);
21491
+ });
21489
21492
  }
21490
21493
  else {
21491
- // Get both the footer and document body positions
21492
- const cachedFooterElRect = cachedFooterEl.getBoundingClientRect();
21493
- const bodyRect = document.body.getBoundingClientRect();
21494
- // Add padding to the parent element to prevent content from being hidden
21495
- // when the footer is positioned absolutely. This has to be done before we
21496
- // make the footer absolutely positioned or we may accidentally cause the
21497
- // sheet to scroll.
21498
- const footerHeight = cachedFooterEl.clientHeight;
21499
- page === null || page === void 0 ? void 0 : page.style.setProperty('padding-bottom', `${footerHeight}px`);
21500
- // Apply positioning styles to keep footer at bottom
21501
- cachedFooterEl.classList.add('modal-footer-moving');
21502
- // Calculate absolute position relative to body
21503
- // We need to subtract the body's offsetTop to get true position within document.body
21504
- const absoluteTop = cachedFooterElRect.top - bodyRect.top;
21505
- const absoluteLeft = cachedFooterElRect.left - bodyRect.left;
21506
- // Capture the footer's current dimensions and hard code them during the drag
21507
- cachedFooterEl.style.setProperty('position', 'absolute');
21508
- cachedFooterEl.style.setProperty('width', `${cachedFooterEl.clientWidth}px`);
21509
- cachedFooterEl.style.setProperty('height', `${cachedFooterEl.clientHeight}px`);
21510
- cachedFooterEl.style.setProperty('top', `${absoluteTop}px`);
21511
- cachedFooterEl.style.setProperty('left', `${absoluteLeft}px`);
21512
- // Also cache the footer Y position, which we use to determine if the
21513
- // sheet has been moved below the footer. When that happens, we need to swap
21514
- // the position back so it will collapse correctly.
21515
- cachedFooterYPosition = absoluteTop;
21516
- // If there's a toolbar, we need to combine the toolbar height with the footer position
21517
- // because the toolbar moves with the drag handle, so when it starts overlapping the footer,
21518
- // we need to account for that.
21519
- const toolbar = baseEl.querySelector('ion-toolbar');
21520
- if (toolbar) {
21521
- cachedFooterYPosition -= toolbar.clientHeight;
21522
- }
21523
- document.body.appendChild(cachedFooterEl);
21494
+ let footerHeights = 0;
21495
+ cachedFooterEls.forEach((cachedFooterEl, index) => {
21496
+ // Get both the footer and document body positions
21497
+ const cachedFooterElRect = cachedFooterEl.getBoundingClientRect();
21498
+ const bodyRect = document.body.getBoundingClientRect();
21499
+ // Calculate the total height of all footers
21500
+ // so we can add padding to the page element
21501
+ footerHeights += cachedFooterEl.clientHeight;
21502
+ // Calculate absolute position relative to body
21503
+ // We need to subtract the body's offsetTop to get true position within document.body
21504
+ const absoluteTop = cachedFooterElRect.top - bodyRect.top;
21505
+ const absoluteLeft = cachedFooterElRect.left - bodyRect.left;
21506
+ // Capture the footer's current dimensions and store them in CSS variables for
21507
+ // later use when applying absolute positioning.
21508
+ cachedFooterEl.style.setProperty('--pinned-width', `${cachedFooterEl.clientWidth}px`);
21509
+ cachedFooterEl.style.setProperty('--pinned-height', `${cachedFooterEl.clientHeight}px`);
21510
+ cachedFooterEl.style.setProperty('--pinned-top', `${absoluteTop}px`);
21511
+ cachedFooterEl.style.setProperty('--pinned-left', `${absoluteLeft}px`);
21512
+ // Only cache the first footer's Y position
21513
+ // This is used to determine if the sheet has been moved below the footer
21514
+ // and needs to be swapped back to stationary so it collapses correctly.
21515
+ if (index === 0) {
21516
+ cachedFooterYPosition = absoluteTop;
21517
+ // If there's a header, we need to combine the header height with the footer position
21518
+ // because the header moves with the drag handle, so when it starts overlapping the footer,
21519
+ // we need to account for that.
21520
+ const header = baseEl.querySelector('ion-header');
21521
+ if (header) {
21522
+ cachedFooterYPosition -= header.clientHeight;
21523
+ }
21524
+ }
21525
+ });
21526
+ // Apply the pinning of styles after we've calculated everything
21527
+ // so that we don't cause layouts to shift while calculating the footer positions.
21528
+ // Otherwise, with multiple footers we'll end up capturing the wrong positions.
21529
+ cachedFooterEls.forEach((cachedFooterEl) => {
21530
+ // Add padding to the parent element to prevent content from being hidden
21531
+ // when the footer is positioned absolutely. This has to be done before we
21532
+ // make the footer absolutely positioned or we may accidentally cause the
21533
+ // sheet to scroll.
21534
+ page === null || page === void 0 ? void 0 : page.style.setProperty('padding-bottom', `${footerHeights}px`);
21535
+ // Apply positioning styles to keep footer at bottom
21536
+ cachedFooterEl.classList.add('modal-footer-moving');
21537
+ // Apply our preserved styles to pin the footer
21538
+ cachedFooterEl.style.setProperty('position', 'absolute');
21539
+ cachedFooterEl.style.setProperty('width', 'var(--pinned-width)');
21540
+ cachedFooterEl.style.setProperty('height', 'var(--pinned-height)');
21541
+ cachedFooterEl.style.setProperty('top', 'var(--pinned-top)');
21542
+ cachedFooterEl.style.setProperty('left', 'var(--pinned-left)');
21543
+ // Move the element to the body when everything else is done
21544
+ document.body.appendChild(cachedFooterEl);
21545
+ });
21524
21546
  }
21525
21547
  };
21526
21548
  /**
@@ -21712,6 +21734,14 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21712
21734
  * is not scrolled to the top.
21713
21735
  */
21714
21736
  if (!expandToScroll && detail.deltaY <= 0 && cachedScrollEl && cachedScrollEl.scrollTop > 0) {
21737
+ /**
21738
+ * If expand to scroll is disabled, we need to make sure we swap the footer position
21739
+ * back to stationary so that it will collapse correctly if the modal is dismissed without
21740
+ * dragging (e.g. through a dismiss button).
21741
+ * This can cause issues if the user has a modal with content that can be dragged, as we'll
21742
+ * swap to moving on drag and if we don't swap back here then the footer will get stuck.
21743
+ */
21744
+ swapFooterPosition('stationary');
21715
21745
  return;
21716
21746
  }
21717
21747
  /**
package/hydrate/index.mjs CHANGED
@@ -18346,6 +18346,7 @@ class ItemSliding {
18346
18346
  }
18347
18347
  }
18348
18348
  async updateOptions() {
18349
+ var _a;
18349
18350
  const options = this.el.querySelectorAll('ion-item-options');
18350
18351
  let sides = 0;
18351
18352
  // Reset left and right options in case they were removed
@@ -18359,7 +18360,7 @@ class ItemSliding {
18359
18360
  */
18360
18361
  // eslint-disable-next-line custom-rules/no-component-on-ready-method
18361
18362
  const option = item.componentOnReady !== undefined ? await item.componentOnReady() : item;
18362
- const side = isEndSide(option.side) ? 'end' : 'start';
18363
+ const side = isEndSide((_a = option.side) !== null && _a !== void 0 ? _a : option.getAttribute('side')) ? 'end' : 'start';
18363
18364
  if (side === 'start') {
18364
18365
  this.leftOptions = option;
18365
18366
  sides |= 1 /* ItemSide.Start */;
@@ -18557,7 +18558,7 @@ class ItemSliding {
18557
18558
  }
18558
18559
  render() {
18559
18560
  const mode = getIonMode$1(this);
18560
- return (hAsync(Host, { key: '9880396ad79e06117d572a27f92c4b753d1e26db', class: {
18561
+ return (hAsync(Host, { key: 'd812322c9fb5da4ee16e99dc38bfb24cb4590d03', class: {
18561
18562
  [mode]: true,
18562
18563
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
18563
18564
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -21428,7 +21429,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21428
21429
  let offset = 0;
21429
21430
  let canDismissBlocksGesture = false;
21430
21431
  let cachedScrollEl = null;
21431
- let cachedFooterEl = null;
21432
+ let cachedFooterEls = null;
21432
21433
  let cachedFooterYPosition = null;
21433
21434
  let currentFooterState = null;
21434
21435
  const canDismissMaxStep = 0.95;
@@ -21465,60 +21466,81 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21465
21466
  * @param newPosition Whether the footer is in a moving or stationary position.
21466
21467
  */
21467
21468
  const swapFooterPosition = (newPosition) => {
21468
- if (!cachedFooterEl) {
21469
- cachedFooterEl = baseEl.querySelector('ion-footer');
21470
- if (!cachedFooterEl) {
21469
+ if (!cachedFooterEls) {
21470
+ cachedFooterEls = Array.from(baseEl.querySelectorAll('ion-footer'));
21471
+ if (!cachedFooterEls.length) {
21471
21472
  return;
21472
21473
  }
21473
21474
  }
21474
21475
  const page = baseEl.querySelector('.ion-page');
21475
21476
  currentFooterState = newPosition;
21476
21477
  if (newPosition === 'stationary') {
21477
- // Reset positioning styles to allow normal document flow
21478
- cachedFooterEl.classList.remove('modal-footer-moving');
21479
- cachedFooterEl.style.removeProperty('position');
21480
- cachedFooterEl.style.removeProperty('width');
21481
- cachedFooterEl.style.removeProperty('height');
21482
- cachedFooterEl.style.removeProperty('top');
21483
- cachedFooterEl.style.removeProperty('left');
21484
- page === null || page === void 0 ? void 0 : page.style.removeProperty('padding-bottom');
21485
- // Move to page
21486
- page === null || page === void 0 ? void 0 : page.appendChild(cachedFooterEl);
21478
+ cachedFooterEls.forEach((cachedFooterEl) => {
21479
+ // Reset positioning styles to allow normal document flow
21480
+ cachedFooterEl.classList.remove('modal-footer-moving');
21481
+ cachedFooterEl.style.removeProperty('position');
21482
+ cachedFooterEl.style.removeProperty('width');
21483
+ cachedFooterEl.style.removeProperty('height');
21484
+ cachedFooterEl.style.removeProperty('top');
21485
+ cachedFooterEl.style.removeProperty('left');
21486
+ page === null || page === void 0 ? void 0 : page.style.removeProperty('padding-bottom');
21487
+ // Move to page
21488
+ page === null || page === void 0 ? void 0 : page.appendChild(cachedFooterEl);
21489
+ });
21487
21490
  }
21488
21491
  else {
21489
- // Get both the footer and document body positions
21490
- const cachedFooterElRect = cachedFooterEl.getBoundingClientRect();
21491
- const bodyRect = document.body.getBoundingClientRect();
21492
- // Add padding to the parent element to prevent content from being hidden
21493
- // when the footer is positioned absolutely. This has to be done before we
21494
- // make the footer absolutely positioned or we may accidentally cause the
21495
- // sheet to scroll.
21496
- const footerHeight = cachedFooterEl.clientHeight;
21497
- page === null || page === void 0 ? void 0 : page.style.setProperty('padding-bottom', `${footerHeight}px`);
21498
- // Apply positioning styles to keep footer at bottom
21499
- cachedFooterEl.classList.add('modal-footer-moving');
21500
- // Calculate absolute position relative to body
21501
- // We need to subtract the body's offsetTop to get true position within document.body
21502
- const absoluteTop = cachedFooterElRect.top - bodyRect.top;
21503
- const absoluteLeft = cachedFooterElRect.left - bodyRect.left;
21504
- // Capture the footer's current dimensions and hard code them during the drag
21505
- cachedFooterEl.style.setProperty('position', 'absolute');
21506
- cachedFooterEl.style.setProperty('width', `${cachedFooterEl.clientWidth}px`);
21507
- cachedFooterEl.style.setProperty('height', `${cachedFooterEl.clientHeight}px`);
21508
- cachedFooterEl.style.setProperty('top', `${absoluteTop}px`);
21509
- cachedFooterEl.style.setProperty('left', `${absoluteLeft}px`);
21510
- // Also cache the footer Y position, which we use to determine if the
21511
- // sheet has been moved below the footer. When that happens, we need to swap
21512
- // the position back so it will collapse correctly.
21513
- cachedFooterYPosition = absoluteTop;
21514
- // If there's a toolbar, we need to combine the toolbar height with the footer position
21515
- // because the toolbar moves with the drag handle, so when it starts overlapping the footer,
21516
- // we need to account for that.
21517
- const toolbar = baseEl.querySelector('ion-toolbar');
21518
- if (toolbar) {
21519
- cachedFooterYPosition -= toolbar.clientHeight;
21520
- }
21521
- document.body.appendChild(cachedFooterEl);
21492
+ let footerHeights = 0;
21493
+ cachedFooterEls.forEach((cachedFooterEl, index) => {
21494
+ // Get both the footer and document body positions
21495
+ const cachedFooterElRect = cachedFooterEl.getBoundingClientRect();
21496
+ const bodyRect = document.body.getBoundingClientRect();
21497
+ // Calculate the total height of all footers
21498
+ // so we can add padding to the page element
21499
+ footerHeights += cachedFooterEl.clientHeight;
21500
+ // Calculate absolute position relative to body
21501
+ // We need to subtract the body's offsetTop to get true position within document.body
21502
+ const absoluteTop = cachedFooterElRect.top - bodyRect.top;
21503
+ const absoluteLeft = cachedFooterElRect.left - bodyRect.left;
21504
+ // Capture the footer's current dimensions and store them in CSS variables for
21505
+ // later use when applying absolute positioning.
21506
+ cachedFooterEl.style.setProperty('--pinned-width', `${cachedFooterEl.clientWidth}px`);
21507
+ cachedFooterEl.style.setProperty('--pinned-height', `${cachedFooterEl.clientHeight}px`);
21508
+ cachedFooterEl.style.setProperty('--pinned-top', `${absoluteTop}px`);
21509
+ cachedFooterEl.style.setProperty('--pinned-left', `${absoluteLeft}px`);
21510
+ // Only cache the first footer's Y position
21511
+ // This is used to determine if the sheet has been moved below the footer
21512
+ // and needs to be swapped back to stationary so it collapses correctly.
21513
+ if (index === 0) {
21514
+ cachedFooterYPosition = absoluteTop;
21515
+ // If there's a header, we need to combine the header height with the footer position
21516
+ // because the header moves with the drag handle, so when it starts overlapping the footer,
21517
+ // we need to account for that.
21518
+ const header = baseEl.querySelector('ion-header');
21519
+ if (header) {
21520
+ cachedFooterYPosition -= header.clientHeight;
21521
+ }
21522
+ }
21523
+ });
21524
+ // Apply the pinning of styles after we've calculated everything
21525
+ // so that we don't cause layouts to shift while calculating the footer positions.
21526
+ // Otherwise, with multiple footers we'll end up capturing the wrong positions.
21527
+ cachedFooterEls.forEach((cachedFooterEl) => {
21528
+ // Add padding to the parent element to prevent content from being hidden
21529
+ // when the footer is positioned absolutely. This has to be done before we
21530
+ // make the footer absolutely positioned or we may accidentally cause the
21531
+ // sheet to scroll.
21532
+ page === null || page === void 0 ? void 0 : page.style.setProperty('padding-bottom', `${footerHeights}px`);
21533
+ // Apply positioning styles to keep footer at bottom
21534
+ cachedFooterEl.classList.add('modal-footer-moving');
21535
+ // Apply our preserved styles to pin the footer
21536
+ cachedFooterEl.style.setProperty('position', 'absolute');
21537
+ cachedFooterEl.style.setProperty('width', 'var(--pinned-width)');
21538
+ cachedFooterEl.style.setProperty('height', 'var(--pinned-height)');
21539
+ cachedFooterEl.style.setProperty('top', 'var(--pinned-top)');
21540
+ cachedFooterEl.style.setProperty('left', 'var(--pinned-left)');
21541
+ // Move the element to the body when everything else is done
21542
+ document.body.appendChild(cachedFooterEl);
21543
+ });
21522
21544
  }
21523
21545
  };
21524
21546
  /**
@@ -21710,6 +21732,14 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21710
21732
  * is not scrolled to the top.
21711
21733
  */
21712
21734
  if (!expandToScroll && detail.deltaY <= 0 && cachedScrollEl && cachedScrollEl.scrollTop > 0) {
21735
+ /**
21736
+ * If expand to scroll is disabled, we need to make sure we swap the footer position
21737
+ * back to stationary so that it will collapse correctly if the modal is dismissed without
21738
+ * dragging (e.g. through a dismiss button).
21739
+ * This can cause issues if the user has a modal with content that can be dragged, as we'll
21740
+ * swap to moving on drag and if we don't swap back here then the footer will get stuck.
21741
+ */
21742
+ swapFooterPosition('stationary');
21713
21743
  return;
21714
21744
  }
21715
21745
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ionic/core",
3
- "version": "8.6.1-nightly.20250610",
3
+ "version": "8.6.1",
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}