@ionic/react 7.5.3-dev.11698856380.18896dcd → 7.5.3-dev.11698858201.14165f23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/dist/components/CreateAnimation.js +107 -0
  2. package/dist/components/CreateAnimation.js.map +7 -0
  3. package/dist/components/IonActionSheet.js +8 -0
  4. package/dist/components/IonActionSheet.js.map +7 -0
  5. package/dist/components/IonAlert.js +8 -0
  6. package/dist/components/IonAlert.js.map +7 -0
  7. package/dist/components/IonApp.js +42 -0
  8. package/dist/components/IonApp.js.map +7 -0
  9. package/dist/components/IonIcon.js +39 -0
  10. package/dist/components/IonIcon.js.map +7 -0
  11. package/dist/components/IonLoading.js +8 -0
  12. package/dist/components/IonLoading.js.map +7 -0
  13. package/dist/components/IonModal.js +9 -0
  14. package/dist/components/IonModal.js.map +7 -0
  15. package/dist/components/IonOverlayManager.js +29 -0
  16. package/dist/components/IonOverlayManager.js.map +7 -0
  17. package/dist/components/IonPage.js +31 -0
  18. package/dist/components/IonPage.js.map +7 -0
  19. package/dist/components/IonPicker.js +8 -0
  20. package/dist/components/IonPicker.js.map +7 -0
  21. package/dist/components/IonPopover.js +8 -0
  22. package/dist/components/IonPopover.js.map +7 -0
  23. package/dist/components/IonRedirect.js +19 -0
  24. package/dist/components/IonRedirect.js.map +7 -0
  25. package/dist/components/IonRoute.js +17 -0
  26. package/dist/components/IonRoute.js.map +7 -0
  27. package/dist/components/IonRouterContext.js +32 -0
  28. package/dist/components/IonRouterContext.js.map +7 -0
  29. package/dist/components/IonRouterOutlet.js +24 -0
  30. package/dist/components/IonRouterOutlet.js.map +7 -0
  31. package/dist/components/IonToast.js +8 -0
  32. package/dist/components/IonToast.js.map +7 -0
  33. package/dist/components/IonicReactProps.js +2 -0
  34. package/dist/components/IonicReactProps.js.map +7 -0
  35. package/dist/components/__tests__/utils.spec.js +50 -0
  36. package/dist/components/__tests__/utils.spec.js.map +7 -0
  37. package/dist/components/createControllerComponent.js +80 -0
  38. package/dist/components/createControllerComponent.js.map +7 -0
  39. package/dist/components/createInlineOverlayComponent.js +114 -0
  40. package/dist/components/createInlineOverlayComponent.js.map +7 -0
  41. package/dist/components/createOverlayComponent.js +88 -0
  42. package/dist/components/createOverlayComponent.js.map +7 -0
  43. package/dist/components/createRoutingComponent.js +79 -0
  44. package/dist/components/createRoutingComponent.js.map +7 -0
  45. package/dist/components/hrefprops.js +2 -0
  46. package/dist/components/hrefprops.js.map +7 -0
  47. package/dist/components/index.js +126 -0
  48. package/dist/components/index.js.map +7 -0
  49. package/dist/components/inner-proxies.js +30 -0
  50. package/dist/components/inner-proxies.js.map +7 -0
  51. package/dist/components/navigation/IonBackButton.js +31 -0
  52. package/dist/components/navigation/IonBackButton.js.map +7 -0
  53. package/dist/components/navigation/IonNav.js +21 -0
  54. package/dist/components/navigation/IonNav.js.map +7 -0
  55. package/dist/components/navigation/IonTabBar.js +173 -0
  56. package/dist/components/navigation/IonTabBar.js.map +7 -0
  57. package/dist/components/navigation/IonTabButton.js +30 -0
  58. package/dist/components/navigation/IonTabButton.js.map +7 -0
  59. package/dist/components/navigation/IonTabs.js +103 -0
  60. package/dist/components/navigation/IonTabs.js.map +7 -0
  61. package/dist/components/navigation/IonTabsContext.js +7 -0
  62. package/dist/components/navigation/IonTabsContext.js.map +7 -0
  63. package/dist/components/proxies.js +131 -0
  64. package/dist/components/proxies.js.map +7 -0
  65. package/dist/components/react-component-lib/createComponent.js +58 -0
  66. package/dist/components/react-component-lib/createComponent.js.map +7 -0
  67. package/dist/components/react-component-lib/createOverlayComponent.js +86 -0
  68. package/dist/components/react-component-lib/createOverlayComponent.js.map +7 -0
  69. package/dist/components/react-component-lib/index.js +4 -0
  70. package/dist/components/react-component-lib/index.js.map +7 -0
  71. package/dist/components/react-component-lib/interfaces.js +2 -0
  72. package/dist/components/react-component-lib/interfaces.js.map +7 -0
  73. package/dist/components/react-component-lib/utils/attachProps.js +92 -0
  74. package/dist/components/react-component-lib/utils/attachProps.js.map +7 -0
  75. package/dist/components/react-component-lib/utils/case.js +4 -0
  76. package/dist/components/react-component-lib/utils/case.js.map +7 -0
  77. package/dist/components/react-component-lib/utils/dev.js +14 -0
  78. package/dist/components/react-component-lib/utils/dev.js.map +7 -0
  79. package/dist/components/react-component-lib/utils/index.js +31 -0
  80. package/dist/components/react-component-lib/utils/index.js.map +7 -0
  81. package/dist/components/routing-proxies.js +29 -0
  82. package/dist/components/routing-proxies.js.map +7 -0
  83. package/dist/components/utils/detachProps.js +24 -0
  84. package/dist/components/utils/detachProps.js.map +7 -0
  85. package/dist/components/utils/index.js +26 -0
  86. package/dist/components/utils/index.js.map +7 -0
  87. package/dist/components/utils/ionRenderToString.js +36 -0
  88. package/dist/components/utils/ionRenderToString.js.map +7 -0
  89. package/dist/contexts/IonContext.js +11 -0
  90. package/dist/contexts/IonContext.js.map +7 -0
  91. package/dist/contexts/IonLifeCycleContext.js +185 -0
  92. package/dist/contexts/IonLifeCycleContext.js.map +7 -0
  93. package/dist/contexts/NavContext.js +36 -0
  94. package/dist/contexts/NavContext.js.map +7 -0
  95. package/dist/framework-delegate.js +30 -0
  96. package/dist/framework-delegate.js.map +7 -0
  97. package/dist/hooks/HookOverlayOptions.js +2 -0
  98. package/dist/hooks/HookOverlayOptions.js.map +7 -0
  99. package/dist/hooks/__tests__/hooks.spec.js +6 -0
  100. package/dist/hooks/__tests__/hooks.spec.js.map +7 -0
  101. package/dist/hooks/useController.js +45 -0
  102. package/dist/hooks/useController.js.map +7 -0
  103. package/dist/hooks/useIonActionSheet.js +27 -0
  104. package/dist/hooks/useIonActionSheet.js.map +7 -0
  105. package/dist/hooks/useIonAlert.js +23 -0
  106. package/dist/hooks/useIonAlert.js.map +7 -0
  107. package/dist/hooks/useIonLoading.js +28 -0
  108. package/dist/hooks/useIonLoading.js.map +7 -0
  109. package/dist/hooks/useIonModal.js +22 -0
  110. package/dist/hooks/useIonModal.js.map +7 -0
  111. package/dist/hooks/useIonPicker.js +27 -0
  112. package/dist/hooks/useIonPicker.js.map +7 -0
  113. package/dist/hooks/useIonPopover.js +22 -0
  114. package/dist/hooks/useIonPopover.js.map +7 -0
  115. package/dist/hooks/useIonToast.js +23 -0
  116. package/dist/hooks/useIonToast.js.map +7 -0
  117. package/dist/hooks/useOverlay.js +67 -0
  118. package/dist/hooks/useOverlay.js.map +7 -0
  119. package/dist/index.js +8 -2443
  120. package/dist/index.js.map +7 -1
  121. package/dist/lifecycle/IonLifeCycleHOC.js +41 -0
  122. package/dist/lifecycle/IonLifeCycleHOC.js.map +7 -0
  123. package/dist/lifecycle/hooks.js +52 -0
  124. package/dist/lifecycle/hooks.js.map +7 -0
  125. package/dist/lifecycle/index.js +4 -0
  126. package/dist/lifecycle/index.js.map +7 -0
  127. package/dist/models/ReactComponentOrElement.js +2 -0
  128. package/dist/models/ReactComponentOrElement.js.map +7 -0
  129. package/dist/models/RouteAction.js +2 -0
  130. package/dist/models/RouteAction.js.map +7 -0
  131. package/dist/models/RouteInfo.js +2 -0
  132. package/dist/models/RouteInfo.js.map +7 -0
  133. package/dist/models/RouterDirection.js +2 -0
  134. package/dist/models/RouterDirection.js.map +7 -0
  135. package/dist/models/RouterOptions.js +2 -0
  136. package/dist/models/RouterOptions.js.map +7 -0
  137. package/dist/models/index.js +7 -0
  138. package/dist/models/index.js.map +7 -0
  139. package/dist/routing/LocationHistory.js +140 -0
  140. package/dist/routing/LocationHistory.js.map +7 -0
  141. package/dist/routing/NavManager.js +76 -0
  142. package/dist/routing/NavManager.js.map +7 -0
  143. package/dist/routing/OutletPageManager.js +69 -0
  144. package/dist/routing/OutletPageManager.js.map +7 -0
  145. package/dist/routing/PageManager.js +60 -0
  146. package/dist/routing/PageManager.js.map +7 -0
  147. package/dist/routing/RouteManagerContext.js +15 -0
  148. package/dist/routing/RouteManagerContext.js.map +7 -0
  149. package/dist/routing/StackContext.js +7 -0
  150. package/dist/routing/StackContext.js.map +7 -0
  151. package/dist/routing/ViewItem.js +2 -0
  152. package/dist/routing/ViewItem.js.map +7 -0
  153. package/dist/routing/ViewLifeCycleManager.js +36 -0
  154. package/dist/routing/ViewLifeCycleManager.js.map +7 -0
  155. package/dist/routing/ViewStacks.js +49 -0
  156. package/dist/routing/ViewStacks.js.map +7 -0
  157. package/dist/routing/__tests__/LocationHistory.spec.js +185 -0
  158. package/dist/routing/__tests__/LocationHistory.spec.js.map +7 -0
  159. package/dist/routing/index.js +9 -0
  160. package/dist/routing/index.js.map +7 -0
  161. package/dist/utils/HTMLElementSSR.js +4 -0
  162. package/dist/utils/HTMLElementSSR.js.map +7 -0
  163. package/dist/utils/generateId.js +8 -0
  164. package/dist/utils/generateId.js.map +7 -0
  165. package/package.json +5 -12
  166. package/dist/types/components/CreateAnimation.d.ts +0 -71
  167. package/dist/types/components/IonActionSheet.d.ts +0 -3
  168. package/dist/types/components/IonAlert.d.ts +0 -3
  169. package/dist/types/components/IonApp.d.ts +0 -41
  170. package/dist/types/components/IonIcon.d.ts +0 -16
  171. package/dist/types/components/IonLoading.d.ts +0 -3
  172. package/dist/types/components/IonModal.d.ts +0 -3
  173. package/dist/types/components/IonOverlayManager.d.ts +0 -15
  174. package/dist/types/components/IonPage.d.ts +0 -3
  175. package/dist/types/components/IonPicker.d.ts +0 -3
  176. package/dist/types/components/IonPopover.d.ts +0 -3
  177. package/dist/types/components/IonRedirect.d.ts +0 -16
  178. package/dist/types/components/IonRoute.d.ts +0 -17
  179. package/dist/types/components/IonRouterContext.d.ts +0 -42
  180. package/dist/types/components/IonRouterOutlet.d.ts +0 -8
  181. package/dist/types/components/IonToast.d.ts +0 -3
  182. package/dist/types/components/IonicReactProps.d.ts +0 -6
  183. package/dist/types/components/__tests__/utils.spec.d.ts +0 -1
  184. package/dist/types/components/createControllerComponent.d.ts +0 -19
  185. package/dist/types/components/createInlineOverlayComponent.d.ts +0 -2
  186. package/dist/types/components/createOverlayComponent.d.ts +0 -20
  187. package/dist/types/components/createRoutingComponent.d.ts +0 -2
  188. package/dist/types/components/hrefprops.d.ts +0 -9
  189. package/dist/types/components/index.d.ts +0 -35
  190. package/dist/types/components/inner-proxies.d.ts +0 -14
  191. package/dist/types/components/navigation/IonBackButton.d.ts +0 -68
  192. package/dist/types/components/navigation/IonNav.d.ts +0 -5
  193. package/dist/types/components/navigation/IonTabBar.d.ts +0 -15
  194. package/dist/types/components/navigation/IonTabButton.d.ts +0 -40
  195. package/dist/types/components/navigation/IonTabs.d.ts +0 -49
  196. package/dist/types/components/navigation/IonTabsContext.d.ts +0 -6
  197. package/dist/types/components/proxies.d.ts +0 -66
  198. package/dist/types/components/react-component-lib/createComponent.d.ts +0 -10
  199. package/dist/types/components/react-component-lib/createOverlayComponent.d.ts +0 -21
  200. package/dist/types/components/react-component-lib/index.d.ts +0 -2
  201. package/dist/types/components/react-component-lib/interfaces.d.ts +0 -29
  202. package/dist/types/components/react-component-lib/utils/attachProps.d.ts +0 -16
  203. package/dist/types/components/react-component-lib/utils/case.d.ts +0 -2
  204. package/dist/types/components/react-component-lib/utils/dev.d.ts +0 -2
  205. package/dist/types/components/react-component-lib/utils/index.d.ts +0 -10
  206. package/dist/types/components/routing-proxies.d.ts +0 -44
  207. package/dist/types/components/utils/detachProps.d.ts +0 -8
  208. package/dist/types/components/utils/index.d.ts +0 -8
  209. package/dist/types/components/utils/ionRenderToString.d.ts +0 -2
  210. package/dist/types/contexts/IonContext.d.ts +0 -7
  211. package/dist/types/contexts/IonLifeCycleContext.d.ts +0 -72
  212. package/dist/types/contexts/NavContext.d.ts +0 -17
  213. package/dist/types/framework-delegate.d.ts +0 -2
  214. package/dist/types/hooks/HookOverlayOptions.d.ts +0 -7
  215. package/dist/types/hooks/__tests__/hooks.spec.d.ts +0 -0
  216. package/dist/types/hooks/useController.d.ts +0 -12
  217. package/dist/types/hooks/useIonActionSheet.d.ts +0 -26
  218. package/dist/types/hooks/useIonAlert.d.ts +0 -26
  219. package/dist/types/hooks/useIonLoading.d.ts +0 -27
  220. package/dist/types/hooks/useIonModal.d.ts +0 -17
  221. package/dist/types/hooks/useIonPicker.d.ts +0 -26
  222. package/dist/types/hooks/useIonPopover.d.ts +0 -17
  223. package/dist/types/hooks/useIonToast.d.ts +0 -26
  224. package/dist/types/hooks/useOverlay.d.ts +0 -13
  225. package/dist/types/index.d.ts +0 -7
  226. package/dist/types/lifecycle/IonLifeCycleHOC.d.ts +0 -31
  227. package/dist/types/lifecycle/hooks.d.ts +0 -5
  228. package/dist/types/lifecycle/index.d.ts +0 -2
  229. package/dist/types/models/ReactComponentOrElement.d.ts +0 -2
  230. package/dist/types/models/RouteAction.d.ts +0 -1
  231. package/dist/types/models/RouteInfo.d.ts +0 -19
  232. package/dist/types/models/RouterDirection.d.ts +0 -1
  233. package/dist/types/models/RouterOptions.d.ts +0 -10
  234. package/dist/types/models/index.d.ts +0 -5
  235. package/dist/types/routing/LocationHistory.d.ts +0 -20
  236. package/dist/types/routing/NavManager.d.ts +0 -38
  237. package/dist/types/routing/OutletPageManager.d.ts +0 -26
  238. package/dist/types/routing/PageManager.d.ts +0 -25
  239. package/dist/types/routing/RouteManagerContext.d.ts +0 -16
  240. package/dist/types/routing/StackContext.d.ts +0 -7
  241. package/dist/types/routing/ViewItem.d.ts +0 -12
  242. package/dist/types/routing/ViewLifeCycleManager.d.ts +0 -42
  243. package/dist/types/routing/ViewStacks.d.ts +0 -19
  244. package/dist/types/routing/__tests__/LocationHistory.spec.d.ts +0 -1
  245. package/dist/types/routing/index.d.ts +0 -7
  246. package/dist/types/utils/HTMLElementSSR.d.ts +0 -4
  247. package/dist/types/utils/generateId.d.ts +0 -1
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ import React from "react";
3
+ export const setRef = (ref, value) => {
4
+ if (typeof ref === "function") {
5
+ ref(value);
6
+ } else if (ref != null) {
7
+ ref.current = value;
8
+ }
9
+ };
10
+ export const mergeRefs = (...refs) => {
11
+ return (value) => {
12
+ refs.forEach((ref) => {
13
+ setRef(ref, value);
14
+ });
15
+ };
16
+ };
17
+ export const createForwardRef = (ReactComponent, displayName) => {
18
+ const forwardRef = (props, ref) => {
19
+ return /* @__PURE__ */ React.createElement(ReactComponent, { ...props, forwardedRef: ref });
20
+ };
21
+ forwardRef.displayName = displayName;
22
+ return React.forwardRef(forwardRef);
23
+ };
24
+ export const defineCustomElement = (tagName, customElement) => {
25
+ if (customElement !== void 0 && typeof customElements !== "undefined" && !customElements.get(tagName)) {
26
+ customElements.define(tagName, customElement);
27
+ }
28
+ };
29
+ export * from "./attachProps";
30
+ export * from "./case";
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/react-component-lib/utils/index.tsx"],
4
+ "sourcesContent": ["import React from 'react';\n\nimport type { StyleReactProps } from '../interfaces';\n\nexport type StencilReactExternalProps<PropType, ElementType> = PropType &\n Omit<React.HTMLAttributes<ElementType>, 'style'> &\n StyleReactProps;\n\n// This will be replaced with React.ForwardedRef when react-output-target is upgraded to React v17\nexport type StencilReactForwardedRef<T> = ((instance: T | null) => void) | React.MutableRefObject<T | null> | null;\n\nexport const setRef = (ref: StencilReactForwardedRef<any> | React.Ref<any> | undefined, value: any) => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n // Cast as a MutableRef so we can assign current\n (ref as React.MutableRefObject<any>).current = value;\n }\n};\n\nexport const mergeRefs = (\n ...refs: (StencilReactForwardedRef<any> | React.Ref<any> | undefined)[]\n): React.RefCallback<any> => {\n return (value: any) => {\n refs.forEach((ref) => {\n setRef(ref, value);\n });\n };\n};\n\nexport const createForwardRef = <PropType, ElementType>(ReactComponent: any, displayName: string) => {\n const forwardRef = (\n props: StencilReactExternalProps<PropType, ElementType>,\n ref: StencilReactForwardedRef<ElementType>\n ) => {\n return <ReactComponent {...props} forwardedRef={ref} />;\n };\n forwardRef.displayName = displayName;\n\n return React.forwardRef(forwardRef);\n};\n\nexport const defineCustomElement = (tagName: string, customElement: any) => {\n if (customElement !== undefined && typeof customElements !== 'undefined' && !customElements.get(tagName)) {\n customElements.define(tagName, customElement);\n }\n};\n\nexport * from './attachProps';\nexport * from './case';\n"],
5
+ "mappings": ";AAAA,OAAO,WAAW;AAWX,aAAM,SAAS,CAAC,KAAiE,UAAe;AACrG,MAAI,OAAO,QAAQ,YAAY;AAC7B,QAAI,KAAK;AAAA,EACX,WAAW,OAAO,MAAM;AAEtB,IAAC,IAAoC,UAAU;AAAA,EACjD;AACF;AAEO,aAAM,YAAY,IACpB,SACwB;AAC3B,SAAO,CAAC,UAAe;AACrB,SAAK,QAAQ,CAAC,QAAQ;AACpB,aAAO,KAAK,KAAK;AAAA,IACnB,CAAC;AAAA,EACH;AACF;AAEO,aAAM,mBAAmB,CAAwB,gBAAqB,gBAAwB;AACnG,QAAM,aAAa,CACjB,OACA,QACG;AACH,WAAO,oCAAC,kBAAgB,GAAG,OAAO,cAAc,KAAK;AAAA,EACvD;AACA,aAAW,cAAc;AAEzB,SAAO,MAAM,WAAW,UAAU;AACpC;AAEO,aAAM,sBAAsB,CAAC,SAAiB,kBAAuB;AAC1E,MAAI,kBAAkB,UAAa,OAAO,mBAAmB,eAAe,CAAC,eAAe,IAAI,OAAO,GAAG;AACxG,mBAAe,OAAO,SAAS,aAAa;AAAA,EAC9C;AACF;AAEA,cAAc;AACd,cAAc;",
6
+ "names": []
7
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ import { IonBreadcrumb as IonBreadcrumbCmp } from "@ionic/core/components/ion-breadcrumb.js";
3
+ import { IonButton as IonButtonCmp } from "@ionic/core/components/ion-button.js";
4
+ import { IonCard as IonCardCmp } from "@ionic/core/components/ion-card.js";
5
+ import { IonFabButton as IonFabButtonCmp } from "@ionic/core/components/ion-fab-button.js";
6
+ import { IonItemOption as IonItemOptionCmp } from "@ionic/core/components/ion-item-option.js";
7
+ import { IonItem as IonItemCmp } from "@ionic/core/components/ion-item.js";
8
+ import { IonRouterLink as IonRouterLinkCmp } from "@ionic/core/components/ion-router-link.js";
9
+ import { createRoutingComponent } from "./createRoutingComponent";
10
+ export const IonRouterLink = /* @__PURE__ */ createRoutingComponent("ion-router-link", IonRouterLinkCmp);
11
+ export const IonButton = /* @__PURE__ */ createRoutingComponent(
12
+ "ion-button",
13
+ IonButtonCmp
14
+ );
15
+ export const IonCard = /* @__PURE__ */ createRoutingComponent(
16
+ "ion-card",
17
+ IonCardCmp
18
+ );
19
+ export const IonFabButton = /* @__PURE__ */ createRoutingComponent(
20
+ "ion-fab-button",
21
+ IonFabButtonCmp
22
+ );
23
+ export const IonItem = /* @__PURE__ */ createRoutingComponent(
24
+ "ion-item",
25
+ IonItemCmp
26
+ );
27
+ export const IonItemOption = /* @__PURE__ */ createRoutingComponent("ion-item-option", IonItemOptionCmp);
28
+ export const IonBreadcrumb = /* @__PURE__ */ createRoutingComponent("ion-breadcrumb", IonBreadcrumbCmp);
29
+ //# sourceMappingURL=routing-proxies.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/routing-proxies.ts"],
4
+ "sourcesContent": ["import type { JSX } from '@ionic/core/components';\nimport { IonBreadcrumb as IonBreadcrumbCmp } from '@ionic/core/components/ion-breadcrumb.js';\nimport { IonButton as IonButtonCmp } from '@ionic/core/components/ion-button.js';\nimport { IonCard as IonCardCmp } from '@ionic/core/components/ion-card.js';\nimport { IonFabButton as IonFabButtonCmp } from '@ionic/core/components/ion-fab-button.js';\nimport { IonItemOption as IonItemOptionCmp } from '@ionic/core/components/ion-item-option.js';\nimport { IonItem as IonItemCmp } from '@ionic/core/components/ion-item.js';\nimport { IonRouterLink as IonRouterLinkCmp } from '@ionic/core/components/ion-router-link.js';\n\nimport { createRoutingComponent } from './createRoutingComponent';\nimport type { HrefProps } from './hrefprops';\n\nexport const IonRouterLink = /*@__PURE__*/ createRoutingComponent<\n HrefProps<JSX.IonRouterLink>,\n HTMLIonRouterLinkElement\n>('ion-router-link', IonRouterLinkCmp);\n\nexport const IonButton = /*@__PURE__*/ createRoutingComponent<HrefProps<JSX.IonButton>, HTMLIonButtonElement>(\n 'ion-button',\n IonButtonCmp\n);\n\nexport const IonCard = /*@__PURE__*/ createRoutingComponent<HrefProps<JSX.IonCard>, HTMLIonCardElement>(\n 'ion-card',\n IonCardCmp\n);\n\nexport const IonFabButton = /*@__PURE__*/ createRoutingComponent<HrefProps<JSX.IonFabButton>, HTMLIonFabButtonElement>(\n 'ion-fab-button',\n IonFabButtonCmp\n);\n\nexport const IonItem = /*@__PURE__*/ createRoutingComponent<HrefProps<JSX.IonItem>, HTMLIonItemElement>(\n 'ion-item',\n IonItemCmp\n);\n\nexport const IonItemOption = /*@__PURE__*/ createRoutingComponent<\n HrefProps<JSX.IonItemOption>,\n HTMLIonItemOptionElement\n>('ion-item-option', IonItemOptionCmp);\n\nexport const IonBreadcrumb = /*@__PURE__*/ createRoutingComponent<\n HrefProps<JSX.IonBreadcrumb>,\n HTMLIonBreadcrumbElement\n>('ion-breadcrumb', IonBreadcrumbCmp);\n"],
5
+ "mappings": ";AACA,SAAS,iBAAiB,wBAAwB;AAClD,SAAS,aAAa,oBAAoB;AAC1C,SAAS,WAAW,kBAAkB;AACtC,SAAS,gBAAgB,uBAAuB;AAChD,SAAS,iBAAiB,wBAAwB;AAClD,SAAS,WAAW,kBAAkB;AACtC,SAAS,iBAAiB,wBAAwB;AAElD,SAAS,8BAA8B;AAGhC,aAAM,gBAA8B,uCAGzC,mBAAmB,gBAAgB;AAE9B,aAAM,YAA0B;AAAA,EACrC;AAAA,EACA;AACF;AAEO,aAAM,UAAwB;AAAA,EACnC;AAAA,EACA;AACF;AAEO,aAAM,eAA6B;AAAA,EACxC;AAAA,EACA;AACF;AAEO,aAAM,UAAwB;AAAA,EACnC;AAAA,EACA;AACF;AAEO,aAAM,gBAA8B,uCAGzC,mBAAmB,gBAAgB;AAE9B,aAAM,gBAA8B,uCAGzC,kBAAkB,gBAAgB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ import { isCoveredByReact } from "../react-component-lib/utils";
3
+ export const detachProps = (node, props) => {
4
+ if (node instanceof Element) {
5
+ Object.keys(props).forEach((name) => {
6
+ if (name.indexOf("on") === 0 && name[2] === name[2].toUpperCase()) {
7
+ const eventName = name.substring(2);
8
+ const eventNameLc = eventName[0].toLowerCase() + eventName.substring(1);
9
+ if (!isCoveredByReact(eventNameLc)) {
10
+ detachEvent(node, eventNameLc);
11
+ }
12
+ }
13
+ });
14
+ }
15
+ };
16
+ const detachEvent = (node, eventName) => {
17
+ const eventStore = node.__events || (node.__events = {});
18
+ const eventHandler = eventStore[eventName];
19
+ if (eventHandler) {
20
+ node.removeEventListener(eventName, eventHandler);
21
+ eventStore[eventName] = void 0;
22
+ }
23
+ };
24
+ //# sourceMappingURL=detachProps.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/utils/detachProps.ts"],
4
+ "sourcesContent": ["import { isCoveredByReact } from '../react-component-lib/utils';\n\n/**\n * The @stencil/react-output-target will bind event listeners for any\n * attached props that use the `on` prefix. This function will remove\n * those event listeners when the component is unmounted.\n *\n * This prevents memory leaks and React state updates on unmounted components.\n */\nexport const detachProps = (node: HTMLElement, props: any) => {\n if (node instanceof Element) {\n Object.keys(props).forEach((name) => {\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2);\n const eventNameLc = eventName[0].toLowerCase() + eventName.substring(1);\n if (!isCoveredByReact(eventNameLc)) {\n /**\n * Detach custom event bindings (not built-in React events)\n * that were added by the @stencil/react-output-target attachProps function.\n */\n detachEvent(node, eventNameLc);\n }\n }\n });\n }\n};\n\nconst detachEvent = (\n node: Element & { __events?: { [key: string]: ((e: Event) => any) | undefined } },\n eventName: string\n) => {\n const eventStore = node.__events || (node.__events = {});\n /**\n * If the event listener was added by attachProps, it will\n * be stored in the __events object.\n */\n const eventHandler = eventStore[eventName];\n if (eventHandler) {\n node.removeEventListener(eventName, eventHandler);\n eventStore[eventName] = undefined;\n }\n};\n"],
5
+ "mappings": ";AAAA,SAAS,wBAAwB;AAS1B,aAAM,cAAc,CAAC,MAAmB,UAAe;AAC5D,MAAI,gBAAgB,SAAS;AAC3B,WAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,SAAS;AACnC,UAAI,KAAK,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,YAAY,GAAG;AACjE,cAAM,YAAY,KAAK,UAAU,CAAC;AAClC,cAAM,cAAc,UAAU,CAAC,EAAE,YAAY,IAAI,UAAU,UAAU,CAAC;AACtE,YAAI,CAAC,iBAAiB,WAAW,GAAG;AAKlC,sBAAY,MAAM,WAAW;AAAA,QAC/B;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,MAAM,cAAc,CAClB,MACA,cACG;AACH,QAAM,aAAa,KAAK,aAAa,KAAK,WAAW,CAAC;AAKtD,QAAM,eAAe,WAAW,SAAS;AACzC,MAAI,cAAc;AAChB,SAAK,oBAAoB,WAAW,YAAY;AAChD,eAAW,SAAS,IAAI;AAAA,EAC1B;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ import { getPlatforms as getPlatformsCore, isPlatform as isPlatformCore } from "@ionic/core/components";
3
+ import React from "react";
4
+ export const createForwardRef = (ReactComponent, displayName) => {
5
+ const forwardRef = (props, ref) => {
6
+ return /* @__PURE__ */ React.createElement(ReactComponent, { ...props, forwardedRef: ref });
7
+ };
8
+ forwardRef.displayName = displayName;
9
+ return React.forwardRef(forwardRef);
10
+ };
11
+ export const isPlatform = (platform) => {
12
+ return isPlatformCore(window, platform);
13
+ };
14
+ export const getPlatforms = () => {
15
+ return getPlatformsCore(window);
16
+ };
17
+ export const getConfig = () => {
18
+ if (typeof window !== "undefined") {
19
+ const Ionic = window.Ionic;
20
+ if (Ionic && Ionic.config) {
21
+ return Ionic.config;
22
+ }
23
+ }
24
+ return null;
25
+ };
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/utils/index.tsx"],
4
+ "sourcesContent": ["import type { Config as CoreConfig, Platforms } from '@ionic/core/components';\nimport { getPlatforms as getPlatformsCore, isPlatform as isPlatformCore } from '@ionic/core/components';\nimport React from 'react';\n\nimport type { IonicReactProps } from '../IonicReactProps';\n\nexport type IonicReactExternalProps<PropType, ElementType> = PropType &\n Omit<React.HTMLAttributes<ElementType>, 'style'> &\n IonicReactProps;\n\nexport const createForwardRef = <PropType, ElementType>(\n ReactComponent: any, // TODO(FW-2959): type\n displayName: string\n) => {\n const forwardRef = (props: IonicReactExternalProps<PropType, ElementType>, ref: React.ForwardedRef<ElementType>) => {\n return <ReactComponent {...props} forwardedRef={ref} />;\n };\n forwardRef.displayName = displayName;\n\n return React.forwardRef(forwardRef);\n};\n\nexport const isPlatform = (platform: Platforms) => {\n return isPlatformCore(window, platform);\n};\n\nexport const getPlatforms = () => {\n return getPlatformsCore(window);\n};\n\nexport const getConfig = (): CoreConfig | null => {\n if (typeof (window as any) !== 'undefined') {\n const Ionic = (window as any).Ionic;\n if (Ionic && Ionic.config) {\n return Ionic.config;\n }\n }\n return null;\n};\n"],
5
+ "mappings": ";AACA,SAAS,gBAAgB,kBAAkB,cAAc,sBAAsB;AAC/E,OAAO,WAAW;AAQX,aAAM,mBAAmB,CAC9B,gBACA,gBACG;AACH,QAAM,aAAa,CAAC,OAAuD,QAAyC;AAClH,WAAO,oCAAC,kBAAgB,GAAG,OAAO,cAAc,KAAK;AAAA,EACvD;AACA,aAAW,cAAc;AAEzB,SAAO,MAAM,WAAW,UAAU;AACpC;AAEO,aAAM,aAAa,CAAC,aAAwB;AACjD,SAAO,eAAe,QAAQ,QAAQ;AACxC;AAEO,aAAM,eAAe,MAAM;AAChC,SAAO,iBAAiB,MAAM;AAChC;AAEO,aAAM,YAAY,MAAyB;AAChD,MAAI,OAAQ,WAAmB,aAAa;AAC1C,UAAM,QAAS,OAAe;AAC9B,QAAI,SAAS,MAAM,QAAQ;AACzB,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AACA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ import { renderToString } from "@ionic/core/hydrate";
3
+ export async function ionRenderToString(html, userAgent, options = {}) {
4
+ const renderToStringOptions = Object.assign(
5
+ {},
6
+ {
7
+ clientHydrateAnnotations: false,
8
+ excludeComponents: [
9
+ // overlays
10
+ "ion-action-sheet",
11
+ "ion-alert",
12
+ "ion-loading",
13
+ "ion-modal",
14
+ "ion-picker",
15
+ "ion-popover",
16
+ "ion-toast",
17
+ // navigation
18
+ "ion-router",
19
+ "ion-route",
20
+ "ion-route-redirect",
21
+ "ion-router-link",
22
+ "ion-router-outlet",
23
+ // tabs
24
+ "ion-tabs",
25
+ "ion-tab",
26
+ // auxiliary
27
+ "ion-picker-column"
28
+ ],
29
+ userAgent
30
+ },
31
+ options
32
+ );
33
+ const ionHtml = await renderToString(html, renderToStringOptions);
34
+ return ionHtml.html;
35
+ }
36
+ //# sourceMappingURL=ionRenderToString.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/utils/ionRenderToString.ts"],
4
+ "sourcesContent": ["import type { SerializeDocumentOptions } from '@ionic/core/hydrate';\nimport { renderToString } from '@ionic/core/hydrate';\n\nexport async function ionRenderToString(html: string, userAgent: string, options: SerializeDocumentOptions = {}) {\n const renderToStringOptions = Object.assign(\n {},\n {\n clientHydrateAnnotations: false,\n excludeComponents: [\n // overlays\n 'ion-action-sheet',\n 'ion-alert',\n 'ion-loading',\n 'ion-modal',\n 'ion-picker',\n 'ion-popover',\n 'ion-toast',\n\n // navigation\n 'ion-router',\n 'ion-route',\n 'ion-route-redirect',\n 'ion-router-link',\n 'ion-router-outlet',\n\n // tabs\n 'ion-tabs',\n 'ion-tab',\n\n // auxiliary\n 'ion-picker-column',\n ],\n userAgent,\n },\n options\n );\n\n const ionHtml = await renderToString(html, renderToStringOptions);\n return ionHtml.html;\n}\n"],
5
+ "mappings": ";AACA,SAAS,sBAAsB;AAE/B,sBAAsB,kBAAkB,MAAc,WAAmB,UAAoC,CAAC,GAAG;AAC/G,QAAM,wBAAwB,OAAO;AAAA,IACnC,CAAC;AAAA,IACD;AAAA,MACE,0BAA0B;AAAA,MAC1B,mBAAmB;AAAA;AAAA,QAEjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA;AAAA,QAGA;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AAEA,QAAM,UAAU,MAAM,eAAe,MAAM,qBAAqB;AAChE,SAAO,QAAQ;AACjB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ import React from "react";
3
+ export const IonContext = React.createContext({
4
+ addOverlay: () => {
5
+ return;
6
+ },
7
+ removeOverlay: () => {
8
+ return;
9
+ }
10
+ });
11
+ //# sourceMappingURL=IonContext.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/contexts/IonContext.tsx"],
4
+ "sourcesContent": ["import React from 'react';\n\nimport type { ReactComponentOrElement } from '../models';\n\nexport interface IonContextInterface {\n addOverlay: (id: string, overlay: ReactComponentOrElement, containerElement: HTMLDivElement) => void;\n removeOverlay: (id: string) => void;\n}\n\nexport const IonContext = React.createContext<IonContextInterface>({\n addOverlay: () => {\n return;\n },\n removeOverlay: () => {\n return;\n },\n});\n"],
5
+ "mappings": ";AAAA,OAAO,WAAW;AASX,aAAM,aAAa,MAAM,cAAmC;AAAA,EACjE,YAAY,MAAM;AAChB;AAAA,EACF;AAAA,EACA,eAAe,MAAM;AACnB;AAAA,EACF;AACF,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ import React from "react";
3
+ export const IonLifeCycleContext = /* @__PURE__ */ React.createContext({
4
+ onIonViewWillEnter: () => {
5
+ return;
6
+ },
7
+ ionViewWillEnter: () => {
8
+ return;
9
+ },
10
+ onIonViewDidEnter: () => {
11
+ return;
12
+ },
13
+ ionViewDidEnter: () => {
14
+ return;
15
+ },
16
+ onIonViewWillLeave: () => {
17
+ return;
18
+ },
19
+ ionViewWillLeave: () => {
20
+ return;
21
+ },
22
+ onIonViewDidLeave: () => {
23
+ return;
24
+ },
25
+ ionViewDidLeave: () => {
26
+ return;
27
+ },
28
+ cleanupIonViewWillEnter: () => {
29
+ return;
30
+ },
31
+ cleanupIonViewDidEnter: () => {
32
+ return;
33
+ },
34
+ cleanupIonViewWillLeave: () => {
35
+ return;
36
+ },
37
+ cleanupIonViewDidLeave: () => {
38
+ return;
39
+ }
40
+ });
41
+ export const DefaultIonLifeCycleContext = class {
42
+ constructor() {
43
+ this.ionViewWillEnterCallbacks = [];
44
+ this.ionViewDidEnterCallbacks = [];
45
+ this.ionViewWillLeaveCallbacks = [];
46
+ this.ionViewDidLeaveCallbacks = [];
47
+ this.ionViewWillEnterDestructorCallbacks = [];
48
+ this.ionViewDidEnterDestructorCallbacks = [];
49
+ this.ionViewWillLeaveDestructorCallbacks = [];
50
+ this.ionViewDidLeaveDestructorCallbacks = [];
51
+ }
52
+ onIonViewWillEnter(callback) {
53
+ if (callback.id) {
54
+ const index = this.ionViewWillEnterCallbacks.findIndex((x) => x.id === callback.id);
55
+ if (index > -1) {
56
+ this.ionViewWillEnterCallbacks[index] = callback;
57
+ } else {
58
+ this.ionViewWillEnterCallbacks.push(callback);
59
+ }
60
+ } else {
61
+ this.ionViewWillEnterCallbacks.push(callback);
62
+ }
63
+ }
64
+ teardownCallback(callback, callbacks) {
65
+ const matches = callbacks.filter((x) => x.id === callback.id);
66
+ if (matches.length !== 0) {
67
+ matches.forEach((match) => {
68
+ if (match && typeof match.destructor === "function") {
69
+ match.destructor();
70
+ }
71
+ });
72
+ callbacks = callbacks.filter((x) => x.id !== callback.id);
73
+ }
74
+ }
75
+ /**
76
+ * Tears down the user-provided ionViewWillEnter lifecycle callback.
77
+ * This is the same behavior as React's useEffect hook. The callback
78
+ * is invoked when the component is unmounted.
79
+ */
80
+ cleanupIonViewWillEnter(callback) {
81
+ this.teardownCallback(callback, this.ionViewWillEnterDestructorCallbacks);
82
+ }
83
+ /**
84
+ * Tears down the user-provided ionViewDidEnter lifecycle callback.
85
+ * This is the same behavior as React's useEffect hook. The callback
86
+ * is invoked when the component is unmounted.
87
+ */
88
+ cleanupIonViewDidEnter(callback) {
89
+ this.teardownCallback(callback, this.ionViewDidEnterDestructorCallbacks);
90
+ }
91
+ /**
92
+ * Tears down the user-provided ionViewWillLeave lifecycle callback.
93
+ * This is the same behavior as React's useEffect hook. The callback
94
+ * is invoked when the component is unmounted.
95
+ */
96
+ cleanupIonViewWillLeave(callback) {
97
+ this.teardownCallback(callback, this.ionViewWillLeaveDestructorCallbacks);
98
+ }
99
+ /**
100
+ * Tears down the user-provided ionViewDidLeave lifecycle callback.
101
+ * This is the same behavior as React's useEffect hook. The callback
102
+ * is invoked when the component is unmounted.
103
+ */
104
+ cleanupIonViewDidLeave(callback) {
105
+ this.teardownCallback(callback, this.ionViewDidLeaveDestructorCallbacks);
106
+ }
107
+ ionViewWillEnter() {
108
+ this.ionViewWillEnterCallbacks.forEach((cb) => {
109
+ const destructor = cb();
110
+ if (cb.id) {
111
+ this.ionViewWillEnterDestructorCallbacks.push({ id: cb.id, destructor });
112
+ }
113
+ });
114
+ }
115
+ onIonViewDidEnter(callback) {
116
+ if (callback.id) {
117
+ const index = this.ionViewDidEnterCallbacks.findIndex((x) => x.id === callback.id);
118
+ if (index > -1) {
119
+ this.ionViewDidEnterCallbacks[index] = callback;
120
+ } else {
121
+ this.ionViewDidEnterCallbacks.push(callback);
122
+ }
123
+ } else {
124
+ this.ionViewDidEnterCallbacks.push(callback);
125
+ }
126
+ }
127
+ ionViewDidEnter() {
128
+ this.ionViewDidEnterCallbacks.forEach((cb) => {
129
+ const destructor = cb();
130
+ if (cb.id) {
131
+ this.ionViewDidEnterDestructorCallbacks.push({ id: cb.id, destructor });
132
+ }
133
+ });
134
+ }
135
+ onIonViewWillLeave(callback) {
136
+ if (callback.id) {
137
+ const index = this.ionViewWillLeaveCallbacks.findIndex((x) => x.id === callback.id);
138
+ if (index > -1) {
139
+ this.ionViewWillLeaveCallbacks[index] = callback;
140
+ } else {
141
+ this.ionViewWillLeaveCallbacks.push(callback);
142
+ }
143
+ } else {
144
+ this.ionViewWillLeaveCallbacks.push(callback);
145
+ }
146
+ }
147
+ ionViewWillLeave() {
148
+ this.ionViewWillLeaveCallbacks.forEach((cb) => {
149
+ const destructor = cb();
150
+ if (cb.id) {
151
+ this.ionViewWillLeaveDestructorCallbacks.push({ id: cb.id, destructor });
152
+ }
153
+ });
154
+ }
155
+ onIonViewDidLeave(callback) {
156
+ if (callback.id) {
157
+ const index = this.ionViewDidLeaveCallbacks.findIndex((x) => x.id === callback.id);
158
+ if (index > -1) {
159
+ this.ionViewDidLeaveCallbacks[index] = callback;
160
+ } else {
161
+ this.ionViewDidLeaveCallbacks.push(callback);
162
+ }
163
+ } else {
164
+ this.ionViewDidLeaveCallbacks.push(callback);
165
+ }
166
+ }
167
+ ionViewDidLeave() {
168
+ this.ionViewDidLeaveCallbacks.forEach((cb) => {
169
+ const destructor = cb();
170
+ if (cb.id) {
171
+ this.ionViewDidLeaveDestructorCallbacks.push({ id: cb.id, destructor });
172
+ }
173
+ });
174
+ this.componentCanBeDestroyed();
175
+ }
176
+ onComponentCanBeDestroyed(callback) {
177
+ this.componentCanBeDestroyedCallback = callback;
178
+ }
179
+ componentCanBeDestroyed() {
180
+ if (this.componentCanBeDestroyedCallback) {
181
+ this.componentCanBeDestroyedCallback();
182
+ }
183
+ }
184
+ };
185
+ //# sourceMappingURL=IonLifeCycleContext.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/contexts/IonLifeCycleContext.tsx"],
4
+ "sourcesContent": ["import React from 'react';\n\nexport interface IonLifeCycleContextInterface {\n onIonViewWillEnter: (callback: () => void) => void;\n ionViewWillEnter: () => void;\n onIonViewDidEnter: (callback: () => void) => void;\n ionViewDidEnter: () => void;\n onIonViewWillLeave: (callback: () => void) => void;\n ionViewWillLeave: () => void;\n onIonViewDidLeave: (callback: () => void) => void;\n ionViewDidLeave: () => void;\n cleanupIonViewWillEnter: (callback: () => void) => void;\n cleanupIonViewDidEnter: (callback: () => void) => void;\n cleanupIonViewWillLeave: (callback: () => void) => void;\n cleanupIonViewDidLeave: (callback: () => void) => void;\n}\n\nexport const IonLifeCycleContext = /*@__PURE__*/ React.createContext<IonLifeCycleContextInterface>({\n onIonViewWillEnter: () => {\n return;\n },\n ionViewWillEnter: () => {\n return;\n },\n onIonViewDidEnter: () => {\n return;\n },\n ionViewDidEnter: () => {\n return;\n },\n onIonViewWillLeave: () => {\n return;\n },\n ionViewWillLeave: () => {\n return;\n },\n onIonViewDidLeave: () => {\n return;\n },\n ionViewDidLeave: () => {\n return;\n },\n cleanupIonViewWillEnter: () => {\n return;\n },\n cleanupIonViewDidEnter: () => {\n return;\n },\n cleanupIonViewWillLeave: () => {\n return;\n },\n cleanupIonViewDidLeave: () => {\n return;\n },\n});\n\nexport interface LifeCycleCallback {\n (): void | (() => void | undefined);\n id?: number;\n}\n\nexport interface LifeCycleDestructor {\n id: number;\n destructor: ReturnType<LifeCycleCallback>;\n}\n\nexport const DefaultIonLifeCycleContext = class implements IonLifeCycleContextInterface {\n ionViewWillEnterCallbacks: LifeCycleCallback[] = [];\n ionViewDidEnterCallbacks: LifeCycleCallback[] = [];\n ionViewWillLeaveCallbacks: LifeCycleCallback[] = [];\n ionViewDidLeaveCallbacks: LifeCycleCallback[] = [];\n componentCanBeDestroyedCallback?: () => void;\n ionViewWillEnterDestructorCallbacks: LifeCycleDestructor[] = [];\n ionViewDidEnterDestructorCallbacks: LifeCycleDestructor[] = [];\n ionViewWillLeaveDestructorCallbacks: LifeCycleDestructor[] = [];\n ionViewDidLeaveDestructorCallbacks: LifeCycleDestructor[] = [];\n\n onIonViewWillEnter(callback: LifeCycleCallback) {\n if (callback.id) {\n const index = this.ionViewWillEnterCallbacks.findIndex((x) => x.id === callback.id);\n if (index > -1) {\n this.ionViewWillEnterCallbacks[index] = callback;\n } else {\n this.ionViewWillEnterCallbacks.push(callback);\n }\n } else {\n this.ionViewWillEnterCallbacks.push(callback);\n }\n }\n\n teardownCallback(callback: LifeCycleCallback, callbacks: any[]) {\n // Find any destructors that have been registered for the callback\n const matches = callbacks.filter((x) => x.id === callback.id);\n if (matches.length !== 0) {\n // Execute the destructor for each matching item\n matches.forEach((match) => {\n if (match && typeof match.destructor === 'function') {\n match.destructor();\n }\n });\n // Remove all matching items from the array\n callbacks = callbacks.filter((x) => x.id !== callback.id);\n }\n }\n\n /**\n * Tears down the user-provided ionViewWillEnter lifecycle callback.\n * This is the same behavior as React's useEffect hook. The callback\n * is invoked when the component is unmounted.\n */\n cleanupIonViewWillEnter(callback: LifeCycleCallback) {\n this.teardownCallback(callback, this.ionViewWillEnterDestructorCallbacks);\n }\n\n /**\n * Tears down the user-provided ionViewDidEnter lifecycle callback.\n * This is the same behavior as React's useEffect hook. The callback\n * is invoked when the component is unmounted.\n */\n cleanupIonViewDidEnter(callback: LifeCycleCallback) {\n this.teardownCallback(callback, this.ionViewDidEnterDestructorCallbacks);\n }\n\n /**\n * Tears down the user-provided ionViewWillLeave lifecycle callback.\n * This is the same behavior as React's useEffect hook. The callback\n * is invoked when the component is unmounted.\n */\n cleanupIonViewWillLeave(callback: LifeCycleCallback) {\n this.teardownCallback(callback, this.ionViewWillLeaveDestructorCallbacks);\n }\n\n /**\n * Tears down the user-provided ionViewDidLeave lifecycle callback.\n * This is the same behavior as React's useEffect hook. The callback\n * is invoked when the component is unmounted.\n */\n cleanupIonViewDidLeave(callback: LifeCycleCallback) {\n this.teardownCallback(callback, this.ionViewDidLeaveDestructorCallbacks);\n }\n\n ionViewWillEnter() {\n this.ionViewWillEnterCallbacks.forEach((cb) => {\n const destructor = cb();\n if (cb.id) {\n this.ionViewWillEnterDestructorCallbacks.push({ id: cb.id, destructor });\n }\n });\n }\n\n onIonViewDidEnter(callback: LifeCycleCallback) {\n if (callback.id) {\n const index = this.ionViewDidEnterCallbacks.findIndex((x) => x.id === callback.id);\n if (index > -1) {\n this.ionViewDidEnterCallbacks[index] = callback;\n } else {\n this.ionViewDidEnterCallbacks.push(callback);\n }\n } else {\n this.ionViewDidEnterCallbacks.push(callback);\n }\n }\n\n ionViewDidEnter() {\n this.ionViewDidEnterCallbacks.forEach((cb) => {\n const destructor = cb();\n if (cb.id) {\n this.ionViewDidEnterDestructorCallbacks.push({ id: cb.id, destructor });\n }\n });\n }\n\n onIonViewWillLeave(callback: LifeCycleCallback) {\n if (callback.id) {\n const index = this.ionViewWillLeaveCallbacks.findIndex((x) => x.id === callback.id);\n if (index > -1) {\n this.ionViewWillLeaveCallbacks[index] = callback;\n } else {\n this.ionViewWillLeaveCallbacks.push(callback);\n }\n } else {\n this.ionViewWillLeaveCallbacks.push(callback);\n }\n }\n\n ionViewWillLeave() {\n this.ionViewWillLeaveCallbacks.forEach((cb) => {\n const destructor = cb();\n if (cb.id) {\n this.ionViewWillLeaveDestructorCallbacks.push({ id: cb.id, destructor });\n }\n });\n }\n\n onIonViewDidLeave(callback: LifeCycleCallback) {\n if (callback.id) {\n const index = this.ionViewDidLeaveCallbacks.findIndex((x) => x.id === callback.id);\n if (index > -1) {\n this.ionViewDidLeaveCallbacks[index] = callback;\n } else {\n this.ionViewDidLeaveCallbacks.push(callback);\n }\n } else {\n this.ionViewDidLeaveCallbacks.push(callback);\n }\n }\n\n ionViewDidLeave() {\n this.ionViewDidLeaveCallbacks.forEach((cb) => {\n const destructor = cb();\n if (cb.id) {\n this.ionViewDidLeaveDestructorCallbacks.push({ id: cb.id, destructor });\n }\n });\n this.componentCanBeDestroyed();\n }\n\n onComponentCanBeDestroyed(callback: () => void) {\n this.componentCanBeDestroyedCallback = callback;\n }\n\n componentCanBeDestroyed() {\n if (this.componentCanBeDestroyedCallback) {\n this.componentCanBeDestroyedCallback();\n }\n }\n};\n"],
5
+ "mappings": ";AAAA,OAAO,WAAW;AAiBX,aAAM,sBAAoC,sBAAM,cAA4C;AAAA,EACjG,oBAAoB,MAAM;AACxB;AAAA,EACF;AAAA,EACA,kBAAkB,MAAM;AACtB;AAAA,EACF;AAAA,EACA,mBAAmB,MAAM;AACvB;AAAA,EACF;AAAA,EACA,iBAAiB,MAAM;AACrB;AAAA,EACF;AAAA,EACA,oBAAoB,MAAM;AACxB;AAAA,EACF;AAAA,EACA,kBAAkB,MAAM;AACtB;AAAA,EACF;AAAA,EACA,mBAAmB,MAAM;AACvB;AAAA,EACF;AAAA,EACA,iBAAiB,MAAM;AACrB;AAAA,EACF;AAAA,EACA,yBAAyB,MAAM;AAC7B;AAAA,EACF;AAAA,EACA,wBAAwB,MAAM;AAC5B;AAAA,EACF;AAAA,EACA,yBAAyB,MAAM;AAC7B;AAAA,EACF;AAAA,EACA,wBAAwB,MAAM;AAC5B;AAAA,EACF;AACF,CAAC;AAYM,aAAM,6BAA6B,MAA8C;AAAA,EAA9C;AACxC,qCAAiD,CAAC;AAClD,oCAAgD,CAAC;AACjD,qCAAiD,CAAC;AAClD,oCAAgD,CAAC;AAEjD,+CAA6D,CAAC;AAC9D,8CAA4D,CAAC;AAC7D,+CAA6D,CAAC;AAC9D,8CAA4D,CAAC;AAAA;AAAA,EAE7D,mBAAmB,UAA6B;AAC9C,QAAI,SAAS,IAAI;AACf,YAAM,QAAQ,KAAK,0BAA0B,UAAU,CAAC,MAAM,EAAE,OAAO,SAAS,EAAE;AAClF,UAAI,QAAQ,IAAI;AACd,aAAK,0BAA0B,KAAK,IAAI;AAAA,MAC1C,OAAO;AACL,aAAK,0BAA0B,KAAK,QAAQ;AAAA,MAC9C;AAAA,IACF,OAAO;AACL,WAAK,0BAA0B,KAAK,QAAQ;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,iBAAiB,UAA6B,WAAkB;AAE9D,UAAM,UAAU,UAAU,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS,EAAE;AAC5D,QAAI,QAAQ,WAAW,GAAG;AAExB,cAAQ,QAAQ,CAAC,UAAU;AACzB,YAAI,SAAS,OAAO,MAAM,eAAe,YAAY;AACnD,gBAAM,WAAW;AAAA,QACnB;AAAA,MACF,CAAC;AAED,kBAAY,UAAU,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS,EAAE;AAAA,IAC1D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,wBAAwB,UAA6B;AACnD,SAAK,iBAAiB,UAAU,KAAK,mCAAmC;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,uBAAuB,UAA6B;AAClD,SAAK,iBAAiB,UAAU,KAAK,kCAAkC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,wBAAwB,UAA6B;AACnD,SAAK,iBAAiB,UAAU,KAAK,mCAAmC;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,uBAAuB,UAA6B;AAClD,SAAK,iBAAiB,UAAU,KAAK,kCAAkC;AAAA,EACzE;AAAA,EAEA,mBAAmB;AACjB,SAAK,0BAA0B,QAAQ,CAAC,OAAO;AAC7C,YAAM,aAAa,GAAG;AACtB,UAAI,GAAG,IAAI;AACT,aAAK,oCAAoC,KAAK,EAAE,IAAI,GAAG,IAAI,WAAW,CAAC;AAAA,MACzE;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,kBAAkB,UAA6B;AAC7C,QAAI,SAAS,IAAI;AACf,YAAM,QAAQ,KAAK,yBAAyB,UAAU,CAAC,MAAM,EAAE,OAAO,SAAS,EAAE;AACjF,UAAI,QAAQ,IAAI;AACd,aAAK,yBAAyB,KAAK,IAAI;AAAA,MACzC,OAAO;AACL,aAAK,yBAAyB,KAAK,QAAQ;AAAA,MAC7C;AAAA,IACF,OAAO;AACL,WAAK,yBAAyB,KAAK,QAAQ;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,kBAAkB;AAChB,SAAK,yBAAyB,QAAQ,CAAC,OAAO;AAC5C,YAAM,aAAa,GAAG;AACtB,UAAI,GAAG,IAAI;AACT,aAAK,mCAAmC,KAAK,EAAE,IAAI,GAAG,IAAI,WAAW,CAAC;AAAA,MACxE;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,mBAAmB,UAA6B;AAC9C,QAAI,SAAS,IAAI;AACf,YAAM,QAAQ,KAAK,0BAA0B,UAAU,CAAC,MAAM,EAAE,OAAO,SAAS,EAAE;AAClF,UAAI,QAAQ,IAAI;AACd,aAAK,0BAA0B,KAAK,IAAI;AAAA,MAC1C,OAAO;AACL,aAAK,0BAA0B,KAAK,QAAQ;AAAA,MAC9C;AAAA,IACF,OAAO;AACL,WAAK,0BAA0B,KAAK,QAAQ;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,mBAAmB;AACjB,SAAK,0BAA0B,QAAQ,CAAC,OAAO;AAC7C,YAAM,aAAa,GAAG;AACtB,UAAI,GAAG,IAAI;AACT,aAAK,oCAAoC,KAAK,EAAE,IAAI,GAAG,IAAI,WAAW,CAAC;AAAA,MACzE;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,kBAAkB,UAA6B;AAC7C,QAAI,SAAS,IAAI;AACf,YAAM,QAAQ,KAAK,yBAAyB,UAAU,CAAC,MAAM,EAAE,OAAO,SAAS,EAAE;AACjF,UAAI,QAAQ,IAAI;AACd,aAAK,yBAAyB,KAAK,IAAI;AAAA,MACzC,OAAO;AACL,aAAK,yBAAyB,KAAK,QAAQ;AAAA,MAC7C;AAAA,IACF,OAAO;AACL,WAAK,yBAAyB,KAAK,QAAQ;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,kBAAkB;AAChB,SAAK,yBAAyB,QAAQ,CAAC,OAAO;AAC5C,YAAM,aAAa,GAAG;AACtB,UAAI,GAAG,IAAI;AACT,aAAK,mCAAmC,KAAK,EAAE,IAAI,GAAG,IAAI,WAAW,CAAC;AAAA,MACxE;AAAA,IACF,CAAC;AACD,SAAK,wBAAwB;AAAA,EAC/B;AAAA,EAEA,0BAA0B,UAAsB;AAC9C,SAAK,kCAAkC;AAAA,EACzC;AAAA,EAEA,0BAA0B;AACxB,QAAI,KAAK,iCAAiC;AACxC,WAAK,gCAAgC;AAAA,IACvC;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ import React from "react";
3
+ export const NavContext = /* @__PURE__ */ React.createContext({
4
+ getIonRedirect: () => void 0,
5
+ getIonRoute: () => void 0,
6
+ getPageManager: () => void 0,
7
+ getStackManager: () => void 0,
8
+ goBack: (route) => {
9
+ if (typeof window !== "undefined") {
10
+ if (typeof route === "string") {
11
+ window.location.pathname = route;
12
+ } else {
13
+ window.history.back();
14
+ }
15
+ }
16
+ },
17
+ navigate: (path) => {
18
+ if (typeof window !== "undefined") {
19
+ window.location.pathname = path;
20
+ }
21
+ },
22
+ hasIonicRouter: () => false,
23
+ routeInfo: void 0,
24
+ setCurrentTab: () => void 0,
25
+ changeTab: (_tab, path) => {
26
+ if (typeof window !== "undefined") {
27
+ window.location.pathname = path;
28
+ }
29
+ },
30
+ resetTab: (_tab, path) => {
31
+ if (typeof window !== "undefined") {
32
+ window.location.pathname = path;
33
+ }
34
+ }
35
+ });
36
+ //# sourceMappingURL=NavContext.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/contexts/NavContext.ts"],
4
+ "sourcesContent": ["import type { AnimationBuilder, RouterDirection } from '@ionic/core/components';\nimport React from 'react';\n\nimport type { RouteInfo } from '../models';\n\n// TODO(FW-2959): types\n\nexport interface NavContextState {\n getIonRoute: () => any;\n getIonRedirect: () => any;\n getPageManager: () => any;\n getStackManager: () => any;\n goBack: (route?: string | RouteInfo, animationBuilder?: AnimationBuilder) => void;\n navigate: (\n path: string,\n direction?: RouterDirection | 'none',\n ionRouteAction?: 'push' | 'replace' | 'pop',\n animationBuilder?: AnimationBuilder,\n options?: any,\n tab?: string\n ) => void;\n hasIonicRouter: () => boolean;\n routeInfo?: RouteInfo;\n setCurrentTab: (tab: string, routeInfo: RouteInfo) => void;\n changeTab: (tab: string, path: string, routeOptions?: any) => void;\n resetTab: (tab: string, originalHref: string, originalRouteOptions?: any) => void;\n}\n\nexport const NavContext = /*@__PURE__*/ React.createContext<NavContextState>({\n getIonRedirect: () => undefined,\n getIonRoute: () => undefined,\n getPageManager: () => undefined,\n getStackManager: () => undefined,\n goBack: (route?: string | RouteInfo) => {\n if (typeof window !== 'undefined') {\n if (typeof route === 'string') {\n window.location.pathname = route;\n } else {\n window.history.back();\n }\n }\n },\n navigate: (path: string) => {\n if (typeof window !== 'undefined') {\n window.location.pathname = path;\n }\n },\n hasIonicRouter: () => false,\n routeInfo: undefined,\n setCurrentTab: () => undefined,\n changeTab: (_tab: string, path: string) => {\n if (typeof window !== 'undefined') {\n window.location.pathname = path;\n }\n },\n resetTab: (_tab: string, path: string) => {\n if (typeof window !== 'undefined') {\n window.location.pathname = path;\n }\n },\n});\n"],
5
+ "mappings": ";AACA,OAAO,WAAW;AA2BX,aAAM,aAA2B,sBAAM,cAA+B;AAAA,EAC3E,gBAAgB,MAAM;AAAA,EACtB,aAAa,MAAM;AAAA,EACnB,gBAAgB,MAAM;AAAA,EACtB,iBAAiB,MAAM;AAAA,EACvB,QAAQ,CAAC,UAA+B;AACtC,QAAI,OAAO,WAAW,aAAa;AACjC,UAAI,OAAO,UAAU,UAAU;AAC7B,eAAO,SAAS,WAAW;AAAA,MAC7B,OAAO;AACL,eAAO,QAAQ,KAAK;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU,CAAC,SAAiB;AAC1B,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,SAAS,WAAW;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,gBAAgB,MAAM;AAAA,EACtB,WAAW;AAAA,EACX,eAAe,MAAM;AAAA,EACrB,WAAW,CAAC,MAAc,SAAiB;AACzC,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,SAAS,WAAW;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,UAAU,CAAC,MAAc,SAAiB;AACxC,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,SAAS,WAAW;AAAA,IAC7B;AAAA,EACF;AACF,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ import { createPortal } from "react-dom";
3
+ import { generateId } from "./utils/generateId";
4
+ export const ReactDelegate = (addView, removeView) => {
5
+ const refMap = /* @__PURE__ */ new WeakMap();
6
+ const reactDelegateId = `react-delegate-${generateId()}`;
7
+ let id = 0;
8
+ const attachViewToDom = async (parentElement, component, propsOrDataObj, cssClasses) => {
9
+ const div = document.createElement("div");
10
+ cssClasses && div.classList.add(...cssClasses);
11
+ parentElement.appendChild(div);
12
+ const componentWithProps = component(propsOrDataObj);
13
+ const key = `${reactDelegateId}-${id++}`;
14
+ const hostComponent = createPortal(componentWithProps, div, key);
15
+ refMap.set(div, hostComponent);
16
+ addView(hostComponent);
17
+ return Promise.resolve(div);
18
+ };
19
+ const removeViewFromDom = (_container, component) => {
20
+ const hostComponent = refMap.get(component);
21
+ hostComponent && removeView(hostComponent);
22
+ component.remove();
23
+ return Promise.resolve();
24
+ };
25
+ return {
26
+ attachViewToDom,
27
+ removeViewFromDom
28
+ };
29
+ };
30
+ //# sourceMappingURL=framework-delegate.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/framework-delegate.tsx"],
4
+ "sourcesContent": ["import type { FrameworkDelegate } from '@ionic/core/components';\nimport { createPortal } from 'react-dom';\n\nimport { generateId } from './utils/generateId';\n\n// TODO(FW-2959): types\n\ntype ReactComponent = (props?: any) => JSX.Element;\n\nexport const ReactDelegate = (\n addView: (view: React.ReactElement) => void,\n removeView: (view: React.ReactElement) => void\n): FrameworkDelegate => {\n const refMap = new WeakMap<HTMLElement, React.ReactElement>();\n const reactDelegateId = `react-delegate-${generateId()}`;\n // Incrementing counter to generate unique keys for each view\n let id = 0;\n\n const attachViewToDom = async (\n parentElement: HTMLElement,\n component: ReactComponent,\n propsOrDataObj?: any,\n cssClasses?: string[]\n ): Promise<any> => {\n const div = document.createElement('div');\n cssClasses && div.classList.add(...cssClasses);\n parentElement.appendChild(div);\n\n const componentWithProps = component(propsOrDataObj);\n const key = `${reactDelegateId}-${id++}`;\n const hostComponent = createPortal(componentWithProps, div, key);\n\n refMap.set(div, hostComponent);\n\n addView(hostComponent);\n\n return Promise.resolve(div);\n };\n\n const removeViewFromDom = (_container: any, component: HTMLElement): Promise<void> => {\n const hostComponent = refMap.get(component);\n hostComponent && removeView(hostComponent);\n\n component.remove();\n\n return Promise.resolve();\n };\n\n return {\n attachViewToDom,\n removeViewFromDom,\n };\n};\n"],
5
+ "mappings": ";AACA,SAAS,oBAAoB;AAE7B,SAAS,kBAAkB;AAMpB,aAAM,gBAAgB,CAC3B,SACA,eACsB;AACtB,QAAM,SAAS,oBAAI,QAAyC;AAC5D,QAAM,kBAAkB,kBAAkB,WAAW,CAAC;AAEtD,MAAI,KAAK;AAET,QAAM,kBAAkB,OACtB,eACA,WACA,gBACA,eACiB;AACjB,UAAM,MAAM,SAAS,cAAc,KAAK;AACxC,kBAAc,IAAI,UAAU,IAAI,GAAG,UAAU;AAC7C,kBAAc,YAAY,GAAG;AAE7B,UAAM,qBAAqB,UAAU,cAAc;AACnD,UAAM,MAAM,GAAG,eAAe,IAAI,IAAI;AACtC,UAAM,gBAAgB,aAAa,oBAAoB,KAAK,GAAG;AAE/D,WAAO,IAAI,KAAK,aAAa;AAE7B,YAAQ,aAAa;AAErB,WAAO,QAAQ,QAAQ,GAAG;AAAA,EAC5B;AAEA,QAAM,oBAAoB,CAAC,YAAiB,cAA0C;AACpF,UAAM,gBAAgB,OAAO,IAAI,SAAS;AAC1C,qBAAiB,WAAW,aAAa;AAEzC,cAAU,OAAO;AAEjB,WAAO,QAAQ,QAAQ;AAAA,EACzB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=HookOverlayOptions.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ describe("test", () => {
3
+ it("should pass", () => {
4
+ });
5
+ });
6
+ //# sourceMappingURL=hooks.spec.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/__tests__/hooks.spec.tsx"],
4
+ "sourcesContent": ["// TODO: Jest does not support ES Modules,\n// and Ionic custom elements are ES Modules only.\n\ndescribe('test', () => {\n it('should pass', () => {\n // This is to get CI to pass!\n // We need to figure out an ESM solution for tests\n });\n});\n\n/*import { alertController, modalController } from '@ionic/core';\n\nimport React from 'react';\n\nimport { useController } from '../useController';\nimport { useOverlay } from '../useOverlay';\n\nimport { useIonActionSheet } from '../useIonActionSheet';\nimport type { UseIonActionSheetResult } from '../useIonActionSheet';\nimport { useIonAlert } from '../useIonAlert';\nimport type { UseIonAlertResult } from '../useIonAlert';\nimport { useIonLoading } from '../useIonLoading';\nimport type { UseIonLoadingResult } from '../useIonLoading';\nimport { useIonModal } from '../useIonModal';\nimport type { UseIonModalResult } from '../useIonModal';\nimport { useIonPicker } from '../useIonPicker';\nimport type { UseIonPickerResult } from '../useIonPicker';\nimport { useIonPopover } from '../useIonPopover';\nimport type { UseIonPopoverResult } from '../useIonPopover';\nimport { useIonToast } from '../useIonToast';\nimport type { UseIonToastResult } from '../useIonToast';\n\nimport { renderHook } from '@testing-library/react-hooks';\n\ndescribe('useController', () => {\n it('should be memorised', () => {\n const { result, rerender } = renderHook(() =>\n useController('AlertController', alertController)\n );\n\n rerender();\n\n const [\n { present: firstPresent, dismiss: firstDismiss },\n { present: secondPresent, dismiss: secondDismiss },\n ] = result.all as ReturnType<typeof useController>[];\n\n expect(firstPresent).toBe(secondPresent);\n expect(firstDismiss).toBe(secondDismiss);\n });\n});\n\ndescribe('useIonActionSheet', () => {\n it('should be memorised', () => {\n const { result, rerender } = renderHook(() => useIonActionSheet());\n\n rerender();\n\n const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] =\n result.all as UseIonActionSheetResult[];\n expect(firstPresent).toBe(secondPresent);\n expect(firstDismiss).toBe(secondDismiss);\n });\n});\n\ndescribe('useIonAlert', () => {\n it('should be memorised', () => {\n const { result, rerender } = renderHook(() => useIonAlert());\n\n rerender();\n\n const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] =\n result.all as UseIonAlertResult[];\n expect(firstPresent).toBe(secondPresent);\n expect(firstDismiss).toBe(secondDismiss);\n });\n});\n\ndescribe('useIonLoading', () => {\n it('should be memorised', () => {\n const { result, rerender } = renderHook(() => useIonLoading());\n\n rerender();\n\n const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] =\n result.all as UseIonLoadingResult[];\n expect(firstPresent).toBe(secondPresent);\n expect(firstDismiss).toBe(secondDismiss);\n });\n});\n\ndescribe('useIonModal', () => {\n it('should be memorised', () => {\n const ModalComponent = () => <div />;\n const { result, rerender } = renderHook(() => useIonModal(ModalComponent, {}));\n\n rerender();\n\n const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] =\n result.all as UseIonModalResult[];\n expect(firstPresent).toBe(secondPresent);\n expect(firstDismiss).toBe(secondDismiss);\n });\n});\n\ndescribe('useIonPicker', () => {\n it('should be memorised', () => {\n const { result, rerender } = renderHook(() => useIonPicker());\n\n rerender();\n\n const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] =\n result.all as UseIonPickerResult[];\n expect(firstPresent).toBe(secondPresent);\n expect(firstDismiss).toBe(secondDismiss);\n });\n});\n\ndescribe('useIonPopover', () => {\n it('should be memorised', () => {\n const PopoverComponent = () => <div />;\n const { result, rerender } = renderHook(() => useIonPopover(PopoverComponent, {}));\n\n rerender();\n\n const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] =\n result.all as UseIonPopoverResult[];\n expect(firstPresent).toBe(secondPresent);\n expect(firstDismiss).toBe(secondDismiss);\n });\n});\n\ndescribe('useIonToast', () => {\n it('should be memorised', () => {\n const { result, rerender } = renderHook(() => useIonToast());\n\n rerender();\n\n const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] =\n result.all as UseIonToastResult[];\n expect(firstPresent).toBe(secondPresent);\n expect(firstDismiss).toBe(secondDismiss);\n });\n});\n\ndescribe('useOverlay', () => {\n it('should be memorised', () => {\n const OverlayComponent = () => <div />;\n const { result, rerender } = renderHook(() =>\n useOverlay('IonModal', modalController, OverlayComponent, {})\n );\n\n rerender();\n\n const [\n { present: firstPresent, dismiss: firstDismiss },\n { present: secondPresent, dismiss: secondDismiss },\n ] = result.all as ReturnType<typeof useOverlay>[];\n\n expect(firstPresent).toBe(secondPresent);\n expect(firstDismiss).toBe(secondDismiss);\n });\n});\n*/\n"],
5
+ "mappings": ";AAGA,SAAS,QAAQ,MAAM;AACrB,KAAG,eAAe,MAAM;AAAA,EAGxB,CAAC;AACH,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ import { useCallback, useMemo, useRef } from "react";
3
+ import { attachProps } from "../components/react-component-lib/utils";
4
+ export function useController(displayName, controller, defineCustomElement) {
5
+ const overlayRef = useRef();
6
+ const didDismissEventName = useMemo(() => `on${displayName}DidDismiss`, [displayName]);
7
+ const didPresentEventName = useMemo(() => `on${displayName}DidPresent`, [displayName]);
8
+ const willDismissEventName = useMemo(() => `on${displayName}WillDismiss`, [displayName]);
9
+ const willPresentEventName = useMemo(() => `on${displayName}WillPresent`, [displayName]);
10
+ defineCustomElement();
11
+ const present = useCallback(
12
+ async (options) => {
13
+ if (overlayRef.current) {
14
+ return;
15
+ }
16
+ const { onDidDismiss, onWillDismiss, onDidPresent, onWillPresent, ...rest } = options;
17
+ const handleDismiss = (event) => {
18
+ if (onDidDismiss) {
19
+ onDidDismiss(event);
20
+ }
21
+ overlayRef.current = void 0;
22
+ };
23
+ overlayRef.current = await controller.create({
24
+ ...rest
25
+ });
26
+ attachProps(overlayRef.current, {
27
+ [didDismissEventName]: handleDismiss,
28
+ [didPresentEventName]: (e) => onDidPresent && onDidPresent(e),
29
+ [willDismissEventName]: (e) => onWillDismiss && onWillDismiss(e),
30
+ [willPresentEventName]: (e) => onWillPresent && onWillPresent(e)
31
+ });
32
+ overlayRef.current.present();
33
+ },
34
+ [controller]
35
+ );
36
+ const dismiss = useCallback(async () => {
37
+ overlayRef.current && await overlayRef.current.dismiss();
38
+ overlayRef.current = void 0;
39
+ }, []);
40
+ return {
41
+ present,
42
+ dismiss
43
+ };
44
+ }
45
+ //# sourceMappingURL=useController.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/hooks/useController.ts"],
4
+ "sourcesContent": ["import type { OverlayEventDetail } from '@ionic/core/components';\nimport { useCallback, useMemo, useRef } from 'react';\n\nimport { attachProps } from '../components/react-component-lib/utils';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\n\ninterface OverlayBase extends HTMLElement {\n present: () => Promise<void>;\n dismiss: (data?: any, role?: string | undefined) => Promise<boolean>;\n}\n\nexport function useController<OptionsType, OverlayType extends OverlayBase>(\n displayName: string,\n controller: { create: (options: OptionsType) => Promise<OverlayType> },\n defineCustomElement: () => void\n) {\n const overlayRef = useRef<OverlayType>();\n const didDismissEventName = useMemo(() => `on${displayName}DidDismiss`, [displayName]);\n const didPresentEventName = useMemo(() => `on${displayName}DidPresent`, [displayName]);\n const willDismissEventName = useMemo(() => `on${displayName}WillDismiss`, [displayName]);\n const willPresentEventName = useMemo(() => `on${displayName}WillPresent`, [displayName]);\n\n defineCustomElement();\n\n const present = useCallback(\n async (options: OptionsType & HookOverlayOptions) => {\n if (overlayRef.current) {\n return;\n }\n\n const { onDidDismiss, onWillDismiss, onDidPresent, onWillPresent, ...rest } = options;\n\n const handleDismiss = (event: CustomEvent<OverlayEventDetail<any>>) => {\n if (onDidDismiss) {\n onDidDismiss(event);\n }\n overlayRef.current = undefined;\n };\n\n overlayRef.current = await controller.create({\n ...(rest as any),\n });\n\n attachProps(overlayRef.current, {\n [didDismissEventName]: handleDismiss,\n [didPresentEventName]: (e: CustomEvent) => onDidPresent && onDidPresent(e),\n [willDismissEventName]: (e: CustomEvent) => onWillDismiss && onWillDismiss(e),\n [willPresentEventName]: (e: CustomEvent) => onWillPresent && onWillPresent(e),\n });\n\n overlayRef.current.present();\n },\n [controller]\n );\n\n const dismiss = useCallback(async () => {\n overlayRef.current && (await overlayRef.current.dismiss());\n overlayRef.current = undefined;\n }, []);\n\n return {\n present,\n dismiss,\n };\n}\n"],
5
+ "mappings": ";AACA,SAAS,aAAa,SAAS,cAAc;AAE7C,SAAS,mBAAmB;AASrB,gBAAS,cACd,aACA,YACA,qBACA;AACA,QAAM,aAAa,OAAoB;AACvC,QAAM,sBAAsB,QAAQ,MAAM,KAAK,WAAW,cAAc,CAAC,WAAW,CAAC;AACrF,QAAM,sBAAsB,QAAQ,MAAM,KAAK,WAAW,cAAc,CAAC,WAAW,CAAC;AACrF,QAAM,uBAAuB,QAAQ,MAAM,KAAK,WAAW,eAAe,CAAC,WAAW,CAAC;AACvF,QAAM,uBAAuB,QAAQ,MAAM,KAAK,WAAW,eAAe,CAAC,WAAW,CAAC;AAEvF,sBAAoB;AAEpB,QAAM,UAAU;AAAA,IACd,OAAO,YAA8C;AACnD,UAAI,WAAW,SAAS;AACtB;AAAA,MACF;AAEA,YAAM,EAAE,cAAc,eAAe,cAAc,eAAe,GAAG,KAAK,IAAI;AAE9E,YAAM,gBAAgB,CAAC,UAAgD;AACrE,YAAI,cAAc;AAChB,uBAAa,KAAK;AAAA,QACpB;AACA,mBAAW,UAAU;AAAA,MACvB;AAEA,iBAAW,UAAU,MAAM,WAAW,OAAO;AAAA,QAC3C,GAAI;AAAA,MACN,CAAC;AAED,kBAAY,WAAW,SAAS;AAAA,QAC9B,CAAC,mBAAmB,GAAG;AAAA,QACvB,CAAC,mBAAmB,GAAG,CAAC,MAAmB,gBAAgB,aAAa,CAAC;AAAA,QACzE,CAAC,oBAAoB,GAAG,CAAC,MAAmB,iBAAiB,cAAc,CAAC;AAAA,QAC5E,CAAC,oBAAoB,GAAG,CAAC,MAAmB,iBAAiB,cAAc,CAAC;AAAA,MAC9E,CAAC;AAED,iBAAW,QAAQ,QAAQ;AAAA,IAC7B;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,UAAU,YAAY,YAAY;AACtC,eAAW,WAAY,MAAM,WAAW,QAAQ,QAAQ;AACxD,eAAW,UAAU;AAAA,EACvB,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }