@pod-os/elements 0.17.1-fef97c9.0 → 0.18.1-a971174.0

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 (457) hide show
  1. package/dist/cjs/elements.cjs.js +1 -1
  2. package/dist/cjs/ion-app.cjs.entry.js +114 -0
  3. package/dist/cjs/ion-app.cjs.entry.js.map +1 -0
  4. package/dist/cjs/ion-badge_11.cjs.entry.js +1 -1
  5. package/dist/cjs/{ion-app_32.cjs.entry.js → ion-card_26.cjs.entry.js} +48 -1380
  6. package/dist/cjs/ion-card_26.cjs.entry.js.map +1 -0
  7. package/dist/cjs/ion-content.cjs.entry.js +416 -0
  8. package/dist/cjs/ion-content.cjs.entry.js.map +1 -0
  9. package/dist/cjs/ion-footer.cjs.entry.js +144 -0
  10. package/dist/cjs/ion-footer.cjs.entry.js.map +1 -0
  11. package/dist/cjs/ion-header.cjs.entry.js +346 -0
  12. package/dist/cjs/ion-header.cjs.entry.js.map +1 -0
  13. package/dist/cjs/ion-title.cjs.entry.js +58 -0
  14. package/dist/cjs/ion-title.cjs.entry.js.map +1 -0
  15. package/dist/cjs/ion-toolbar.cjs.entry.js +79 -0
  16. package/dist/cjs/ion-toolbar.cjs.entry.js.map +1 -0
  17. package/dist/cjs/loader.cjs.js +1 -1
  18. package/dist/cjs/pos-app-generic.cjs.entry.js +1 -1
  19. package/dist/cjs/pos-app-ldp-container.cjs.entry.js +1 -1
  20. package/dist/cjs/pos-app-rdf-document.cjs.entry.js +1 -1
  21. package/dist/collection/apps/pos-app-browser/pos-app-browser.css +64 -0
  22. package/dist/collection/apps/pos-app-browser/pos-app-browser.js +33 -2
  23. package/dist/collection/apps/pos-app-browser/pos-app-browser.js.map +1 -1
  24. package/dist/collection/apps/pos-app-generic/pos-app-generic.js +1 -1
  25. package/dist/collection/apps/pos-app-ldp-container/pos-app-ldp-container.js +1 -1
  26. package/dist/collection/apps/pos-app-rdf-document/pos-app-rdf-document.js +1 -1
  27. package/dist/collection/components/pos-add-new-thing/pos-add-new-thing.js +1 -1
  28. package/dist/collection/components/pos-app/pos-app.js +1 -1
  29. package/dist/collection/components/pos-dialog/pos-dialog.js +1 -1
  30. package/dist/collection/components/pos-error-toast/pos-error-toast.js +1 -1
  31. package/dist/collection/components/pos-literals/pos-literals.js +1 -1
  32. package/dist/collection/components/pos-login/pos-login.css +13 -9
  33. package/dist/collection/components/pos-login/pos-login.js +1 -1
  34. package/dist/collection/components/pos-login/pos-login.js.map +1 -1
  35. package/dist/collection/components/pos-login-form/pos-login-form.js +1 -1
  36. package/dist/collection/components/pos-navigation-bar/pos-navigation-bar.js +1 -1
  37. package/dist/collection/components/pos-new-thing-form/pos-new-thing-form.js +1 -1
  38. package/dist/collection/components/pos-rich-link/pos-rich-link.js +2 -2
  39. package/dist/collection/components/pos-router/pos-router.js +26 -2
  40. package/dist/collection/components/pos-router/pos-router.js.map +1 -1
  41. package/dist/collection/components/pos-select-term/pos-select-term.js +1 -1
  42. package/dist/components/ion-app.js +121 -1
  43. package/dist/components/ion-app.js.map +1 -1
  44. package/dist/components/ion-content.js +436 -1
  45. package/dist/components/ion-content.js.map +1 -1
  46. package/dist/components/ion-footer.js +150 -1
  47. package/dist/components/ion-footer.js.map +1 -1
  48. package/dist/components/ion-header.js +354 -1
  49. package/dist/components/ion-header.js.map +1 -1
  50. package/dist/components/ion-title.js +70 -1
  51. package/dist/components/ion-title.js.map +1 -1
  52. package/dist/components/ion-toolbar.js +88 -1
  53. package/dist/components/ion-toolbar.js.map +1 -1
  54. package/dist/components/pos-add-new-thing2.js +1 -1
  55. package/dist/components/pos-app-browser.js +40 -55
  56. package/dist/components/pos-app-browser.js.map +1 -1
  57. package/dist/components/pos-app-generic.js +1 -1
  58. package/dist/components/pos-app-ldp-container.js +1 -1
  59. package/dist/components/pos-app-rdf-document.js +1 -1
  60. package/dist/components/pos-app2.js +1 -1
  61. package/dist/components/pos-dialog2.js +1 -1
  62. package/dist/components/pos-error-toast2.js +1 -1
  63. package/dist/components/pos-literals2.js +1 -1
  64. package/dist/components/pos-login-form2.js +1 -1
  65. package/dist/components/pos-login2.js +2 -2
  66. package/dist/components/pos-login2.js.map +1 -1
  67. package/dist/components/pos-navigation-bar2.js +1 -1
  68. package/dist/components/pos-new-thing-form2.js +1 -1
  69. package/dist/components/pos-rich-link2.js +2 -2
  70. package/dist/components/pos-router2.js +6 -375
  71. package/dist/components/pos-router2.js.map +1 -1
  72. package/dist/components/pos-select-term2.js +1 -1
  73. package/dist/elements/elements.css +1 -1
  74. package/dist/elements/elements.esm.js +1 -1
  75. package/dist/elements/elements.esm.js.map +1 -1
  76. package/dist/elements/p-00ce08f0.entry.js +2 -0
  77. package/dist/elements/{p-546a0100.entry.js.map → p-00ce08f0.entry.js.map} +1 -1
  78. package/dist/elements/p-012387ef.js +5 -0
  79. package/dist/elements/{p-e06dbbcc.entry.js → p-0133f543.entry.js} +2 -2
  80. package/dist/elements/p-05e3c2f1.entry.js +2 -0
  81. package/dist/elements/{p-d5ff3d36.entry.js.map → p-05e3c2f1.entry.js.map} +1 -1
  82. package/dist/elements/{p-3aeb707f.entry.js → p-09a7b8e1.entry.js} +2 -2
  83. package/dist/elements/{p-86136480.entry.js → p-11ad53dd.entry.js} +2 -2
  84. package/dist/elements/{p-9365c31d.entry.js → p-122324d9.entry.js} +2 -2
  85. package/dist/elements/{p-530932bb.js → p-163e3e87.js} +2 -2
  86. package/dist/elements/{p-9b56d918.js → p-18d4a4f4.js} +3 -3
  87. package/dist/elements/{p-b90d29b6.entry.js → p-18d9c4f7.entry.js} +2 -2
  88. package/dist/elements/{p-69d9dbbf.entry.js → p-1a90b8bb.entry.js} +2 -2
  89. package/dist/elements/{p-02b4f408.entry.js → p-1f36a3c0.entry.js} +2 -2
  90. package/dist/elements/{p-c7ac1d8b.entry.js → p-200707c8.entry.js} +6 -6
  91. package/dist/elements/{p-78982008.entry.js → p-2072bd89.entry.js} +2 -2
  92. package/dist/elements/{p-170a54a2.js → p-20e2e8c1.js} +3 -3
  93. package/dist/elements/{p-9e7f0522.js → p-25270f1a.js} +2 -2
  94. package/dist/elements/p-27e8c19d.entry.js +2 -0
  95. package/dist/elements/{p-909f0d6e.entry.js.map → p-27e8c19d.entry.js.map} +1 -1
  96. package/dist/elements/p-27ec1e73.entry.js +2 -0
  97. package/dist/elements/{p-c4a822b5.entry.js → p-28b1f2dc.entry.js} +2 -2
  98. package/dist/elements/{p-4d47eeb5.js → p-2a17fd31.js} +2 -2
  99. package/dist/elements/{p-8d4278bb.entry.js → p-2adb9784.entry.js} +2 -2
  100. package/dist/elements/p-2f85baae.entry.js +2 -0
  101. package/dist/elements/{p-e3d72483.entry.js.map → p-2f85baae.entry.js.map} +1 -1
  102. package/dist/elements/{p-d212be68.entry.js → p-30685d32.entry.js} +2 -2
  103. package/dist/elements/{p-8e1e3e7d.js → p-359bfe6a.js} +2 -2
  104. package/dist/elements/p-382054bf.entry.js +2 -0
  105. package/dist/elements/p-382054bf.entry.js.map +1 -0
  106. package/dist/elements/{p-bba60e3b.entry.js → p-39cc0ada.entry.js} +2 -2
  107. package/dist/elements/p-4056decf.entry.js +2 -0
  108. package/dist/elements/p-4056decf.entry.js.map +1 -0
  109. package/dist/elements/p-4918fd10.entry.js +2 -0
  110. package/dist/elements/p-4918fd10.entry.js.map +1 -0
  111. package/dist/elements/{p-af43acbb.entry.js → p-4c0808b4.entry.js} +2 -2
  112. package/dist/elements/p-4cf87b24.entry.js +2 -0
  113. package/dist/elements/{p-0edf98c5.entry.js.map → p-4cf87b24.entry.js.map} +1 -1
  114. package/dist/elements/{p-b8ac0ee4.js → p-4d6e48bf.js} +2 -2
  115. package/dist/elements/{p-28ad7b6e.entry.js → p-5298b7a1.entry.js} +2 -2
  116. package/dist/elements/{p-0b1c92f2.entry.js → p-52c87099.entry.js} +2 -2
  117. package/dist/elements/{p-c0eb0e3d.entry.js → p-55fbf5f7.entry.js} +3 -3
  118. package/dist/elements/{p-c0eb0e3d.entry.js.map → p-55fbf5f7.entry.js.map} +1 -1
  119. package/dist/elements/{p-2428b6bf.js → p-592177e8.js} +2 -2
  120. package/dist/elements/{p-8b81a782.js → p-595c0a57.js} +2 -2
  121. package/dist/elements/{p-e32a52ee.js → p-5a248cff.js} +2 -2
  122. package/dist/elements/p-5b933f24.entry.js +2 -0
  123. package/dist/elements/p-5b933f24.entry.js.map +1 -0
  124. package/dist/elements/{p-cc62cb3d.entry.js → p-61a489ee.entry.js} +2 -2
  125. package/dist/elements/p-6ac0c71c.entry.js +2 -0
  126. package/dist/elements/{p-6c9053ed.entry.js → p-6bcba1f6.entry.js} +2 -2
  127. package/dist/elements/{p-ddc13326.entry.js → p-6e2a89ab.entry.js} +2 -2
  128. package/dist/elements/{p-565128c5.entry.js → p-74ebe432.entry.js} +2 -2
  129. package/dist/elements/p-76543de1.entry.js +2 -0
  130. package/dist/elements/{p-d7231d27.entry.js → p-76e7559c.entry.js} +2 -2
  131. package/dist/elements/{p-41e21640.entry.js → p-778d7821.entry.js} +6 -6
  132. package/dist/elements/{p-f941317f.entry.js → p-78ba7248.entry.js} +2 -2
  133. package/dist/elements/{p-6579450f.js → p-7a563988.js} +2 -2
  134. package/dist/elements/{p-3c2b721e.js → p-7f507bcb.js} +2 -2
  135. package/dist/elements/p-7fb554a5.entry.js +2 -0
  136. package/dist/elements/{p-cc274814.entry.js.map → p-7fb554a5.entry.js.map} +1 -1
  137. package/dist/elements/p-8206b1f1.js +6 -0
  138. package/dist/elements/{p-b097a0ac.entry.js → p-82fb9396.entry.js} +2 -2
  139. package/dist/elements/{p-d86e6e48.entry.js → p-8817e69b.entry.js} +2 -2
  140. package/dist/elements/p-8865cb08.entry.js +2 -0
  141. package/dist/elements/{p-0951f046.entry.js → p-8b9b339b.entry.js} +2 -2
  142. package/dist/elements/{p-553217d4.entry.js → p-8b9b7f79.entry.js} +2 -2
  143. package/dist/elements/{p-86eaec56.entry.js → p-8c32e0ab.entry.js} +2 -2
  144. package/dist/elements/p-8fe569b3.entry.js +2 -0
  145. package/dist/elements/p-9090e8dc.entry.js +2 -0
  146. package/dist/elements/p-90f99f85.entry.js +5 -0
  147. package/dist/elements/p-90f99f85.entry.js.map +1 -0
  148. package/dist/elements/{p-fb11bb27.entry.js → p-916a6612.entry.js} +2 -2
  149. package/dist/elements/{p-fa9aa28a.entry.js → p-a68e7901.entry.js} +2 -2
  150. package/dist/elements/p-a88c6bd6.entry.js +2 -0
  151. package/dist/elements/{p-f05a0cca.entry.js.map → p-a88c6bd6.entry.js.map} +1 -1
  152. package/dist/elements/{p-69410d36.js → p-a91046dc.js} +3 -3
  153. package/dist/elements/{p-325e5484.entry.js → p-aad12400.entry.js} +2 -2
  154. package/dist/elements/{p-58418838.entry.js → p-ab92e9ad.entry.js} +2 -2
  155. package/dist/elements/{p-d01e6782.entry.js → p-af3f8ab1.entry.js} +2 -2
  156. package/dist/elements/p-b11e8f77.entry.js +2 -0
  157. package/dist/elements/{p-77d82071.entry.js → p-b19890bd.entry.js} +2 -2
  158. package/dist/elements/p-b1d0e1fe.entry.js +5 -0
  159. package/dist/{components/header.js.map → elements/p-b1d0e1fe.entry.js.map} +1 -1
  160. package/dist/elements/{p-573b7dca.entry.js → p-b227f4a8.entry.js} +2 -2
  161. package/dist/elements/p-b8b9096d.entry.js +2 -0
  162. package/dist/elements/p-b8b9096d.entry.js.map +1 -0
  163. package/dist/elements/{p-134b66b6.js → p-bb3054a3.js} +6 -6
  164. package/dist/elements/p-bc5eefc4.entry.js +2 -0
  165. package/dist/elements/{p-b115ebcf.entry.js.map → p-bc5eefc4.entry.js.map} +1 -1
  166. package/dist/elements/{p-56bf9fdf.js → p-c2690129.js} +2 -2
  167. package/dist/elements/{p-8b0695a7.entry.js → p-c445f3ac.entry.js} +2 -2
  168. package/dist/elements/{p-2ba30f60.entry.js → p-c9faf4da.entry.js} +2 -2
  169. package/dist/elements/p-ca453b3d.js +8 -0
  170. package/dist/elements/p-cc23946c.entry.js +2 -0
  171. package/dist/elements/{p-4342e2ef.entry.js.map → p-cc23946c.entry.js.map} +1 -1
  172. package/dist/elements/{p-c23172a0.entry.js → p-cd9107d1.entry.js} +2 -2
  173. package/dist/elements/{p-9b369d09.js → p-cebe59d4.js} +2 -2
  174. package/dist/elements/{p-b67ce91f.entry.js → p-cfec477d.entry.js} +2 -2
  175. package/dist/elements/{p-1c69ca01.js → p-d0fcc589.js} +2 -2
  176. package/dist/elements/{p-257248f2.entry.js → p-d2458575.entry.js} +2 -2
  177. package/dist/elements/p-d2e7f4d4.entry.js +2 -0
  178. package/dist/elements/p-d65caf7a.entry.js +2 -0
  179. package/dist/elements/{p-acbfc962.entry.js.map → p-d65caf7a.entry.js.map} +1 -1
  180. package/dist/elements/{p-3505dfe2.js → p-d6769f21.js} +2 -2
  181. package/dist/elements/{p-a1a15808.entry.js → p-d6bf2b98.entry.js} +2 -2
  182. package/dist/elements/{p-75cbc833.entry.js → p-d86570da.entry.js} +2 -2
  183. package/dist/elements/p-d8e8bd9b.entry.js +2 -0
  184. package/dist/elements/p-d8fc8b11.js +2 -0
  185. package/dist/elements/{p-0ddd5da3.entry.js → p-da5f6dcd.entry.js} +3 -3
  186. package/dist/elements/{p-ab5544fc.entry.js → p-db793eec.entry.js} +2 -2
  187. package/dist/elements/p-db973275.js +5 -0
  188. package/dist/elements/{p-5f2c1e33.entry.js → p-e134ddc9.entry.js} +2 -2
  189. package/dist/elements/{p-0752ec21.entry.js → p-e3ae9b45.entry.js} +2 -2
  190. package/dist/elements/p-e5cefd56.entry.js +2 -0
  191. package/dist/elements/{p-64af0b46.entry.js.map → p-e5cefd56.entry.js.map} +1 -1
  192. package/dist/elements/{p-ad2273d6.js → p-ecdb52e8.js} +2 -2
  193. package/dist/elements/{p-2dddbb15.js → p-f1ef82a9.js} +4 -4
  194. package/dist/elements/p-f4440338.entry.js +2 -0
  195. package/dist/elements/{p-5bd948fa.entry.js → p-f981858f.entry.js} +2 -2
  196. package/dist/elements/{p-f6b92b3c.entry.js → p-fd200088.entry.js} +2 -2
  197. package/dist/elements/{p-b56ae71f.entry.js → p-fdeb6a78.entry.js} +3 -3
  198. package/dist/esm/{BrokenFile-0cbdf2f2.js → BrokenFile-660171a9.js} +2 -2
  199. package/dist/esm/{BrokenFile-0cbdf2f2.js.map → BrokenFile-660171a9.js.map} +1 -1
  200. package/dist/esm/{animation-0dedebd7.js → animation-8c622dae.js} +2 -2
  201. package/dist/esm/{animation-0dedebd7.js.map → animation-8c622dae.js.map} +1 -1
  202. package/dist/esm/{app-globals-8441b381.js → app-globals-a35b051d.js} +2 -2
  203. package/dist/esm/{app-globals-8441b381.js.map → app-globals-a35b051d.js.map} +1 -1
  204. package/dist/esm/{data-3bd275a7.js → data-cdc9b206.js} +2 -2
  205. package/dist/esm/{data-3bd275a7.js.map → data-cdc9b206.js.map} +1 -1
  206. package/dist/esm/elements.js +5 -5
  207. package/dist/esm/{form-controller-ba097a73.js → form-controller-1f70ed52.js} +2 -2
  208. package/dist/esm/{form-controller-ba097a73.js.map → form-controller-1f70ed52.js.map} +1 -1
  209. package/dist/esm/{framework-delegate-0ffa1682.js → framework-delegate-b5751311.js} +2 -2
  210. package/dist/esm/{framework-delegate-0ffa1682.js.map → framework-delegate-b5751311.js.map} +1 -1
  211. package/dist/esm/{hardware-back-button-80e72d27.js → hardware-back-button-e34ddb75.js} +3 -3
  212. package/dist/esm/{hardware-back-button-80e72d27.js.map → hardware-back-button-e34ddb75.js.map} +1 -1
  213. package/dist/esm/{helpers-ad2d8971.js → helpers-a93a8cd2.js} +2 -2
  214. package/dist/esm/{helpers-ad2d8971.js.map → helpers-a93a8cd2.js.map} +1 -1
  215. package/dist/esm/{index-141ce7d0.js → index-1e601862.js} +5 -5
  216. package/dist/esm/{index-141ce7d0.js.map → index-1e601862.js.map} +1 -1
  217. package/dist/esm/{index-38b2da1b.js → index-432e7c6f.js} +3 -3
  218. package/dist/esm/{index-38b2da1b.js.map → index-432e7c6f.js.map} +1 -1
  219. package/dist/esm/{index-46b2983b.js → index-538226d8.js} +2 -2
  220. package/dist/esm/{index-46b2983b.js.map → index-538226d8.js.map} +1 -1
  221. package/dist/esm/{index-049cf01c.js → index-e9b97538.js} +6 -6
  222. package/dist/esm/{index-049cf01c.js.map → index-e9b97538.js.map} +1 -1
  223. package/dist/esm/{index-c043b4c8.js → index-f69a875d.js} +2 -2
  224. package/dist/esm/{index-c043b4c8.js.map → index-f69a875d.js.map} +1 -1
  225. package/dist/esm/{index-bec78e8b.js → index-f7ac0403.js} +2 -2
  226. package/dist/esm/{index-bec78e8b.js.map → index-f7ac0403.js.map} +1 -1
  227. package/dist/esm/{input-shims-2246db96.js → input-shims-212ee02f.js} +4 -4
  228. package/dist/esm/{input-shims-2246db96.js.map → input-shims-212ee02f.js.map} +1 -1
  229. package/dist/esm/{input.utils-8550a81d.js → input.utils-d2c917c3.js} +3 -3
  230. package/dist/esm/{input.utils-8550a81d.js.map → input.utils-d2c917c3.js.map} +1 -1
  231. package/dist/esm/ion-accordion-group.entry.js +3 -3
  232. package/dist/esm/ion-accordion.entry.js +3 -3
  233. package/dist/esm/ion-action-sheet_3.entry.js +8 -8
  234. package/dist/{components/app.js → esm/ion-app.entry.js} +20 -35
  235. package/dist/esm/ion-app.entry.js.map +1 -0
  236. package/dist/esm/ion-avatar.entry.js +2 -2
  237. package/dist/esm/ion-back-button.entry.js +3 -3
  238. package/dist/esm/ion-backdrop.entry.js +2 -2
  239. package/dist/esm/ion-badge_11.entry.js +8 -8
  240. package/dist/esm/ion-breadcrumb.entry.js +3 -3
  241. package/dist/esm/ion-breadcrumbs.entry.js +2 -2
  242. package/dist/esm/ion-button_4.entry.js +4 -4
  243. package/dist/esm/ion-card-subtitle.entry.js +2 -2
  244. package/dist/esm/{ion-app_32.entry.js → ion-card_26.entry.js} +48 -1374
  245. package/dist/esm/ion-card_26.entry.js.map +1 -0
  246. package/dist/esm/ion-checkbox_4.entry.js +5 -5
  247. package/dist/esm/ion-chip.entry.js +2 -2
  248. package/dist/{components/content.js → esm/ion-content.entry.js} +14 -42
  249. package/dist/esm/ion-content.entry.js.map +1 -0
  250. package/dist/esm/ion-datetime-button.entry.js +5 -5
  251. package/dist/esm/ion-datetime.entry.js +5 -5
  252. package/dist/esm/ion-fab-button.entry.js +3 -3
  253. package/dist/esm/ion-fab-list.entry.js +2 -2
  254. package/dist/esm/ion-fab.entry.js +2 -2
  255. package/dist/{components/footer.js → esm/ion-footer.entry.js} +20 -34
  256. package/dist/esm/ion-footer.entry.js.map +1 -0
  257. package/dist/{components/header.js → esm/ion-header.entry.js} +17 -33
  258. package/dist/esm/ion-header.entry.js.map +1 -0
  259. package/dist/esm/ion-img.entry.js +3 -3
  260. package/dist/esm/ion-infinite-scroll-content.entry.js +2 -2
  261. package/dist/esm/ion-infinite-scroll.entry.js +5 -5
  262. package/dist/esm/ion-item-option.entry.js +2 -2
  263. package/dist/esm/ion-item-options.entry.js +3 -3
  264. package/dist/esm/ion-item-sliding.entry.js +5 -5
  265. package/dist/esm/ion-item_4.entry.js +4 -4
  266. package/dist/esm/ion-loading.entry.js +8 -8
  267. package/dist/esm/ion-menu-button.entry.js +8 -8
  268. package/dist/esm/ion-menu-toggle.entry.js +8 -8
  269. package/dist/esm/ion-menu.entry.js +9 -9
  270. package/dist/esm/ion-modal.entry.js +10 -10
  271. package/dist/esm/ion-nav-link.entry.js +1 -1
  272. package/dist/esm/ion-nav.entry.js +6 -6
  273. package/dist/esm/ion-picker-column.entry.js +3 -3
  274. package/dist/esm/ion-picker.entry.js +8 -8
  275. package/dist/esm/ion-popover.entry.js +9 -9
  276. package/dist/esm/ion-range.entry.js +6 -6
  277. package/dist/esm/ion-refresher-content.entry.js +5 -5
  278. package/dist/esm/ion-refresher.entry.js +7 -7
  279. package/dist/esm/ion-reorder-group.entry.js +5 -5
  280. package/dist/esm/ion-reorder.entry.js +2 -2
  281. package/dist/esm/ion-route-redirect.entry.js +1 -1
  282. package/dist/esm/ion-route.entry.js +1 -1
  283. package/dist/esm/ion-router-link.entry.js +2 -2
  284. package/dist/esm/ion-router-outlet.entry.js +6 -6
  285. package/dist/esm/ion-router.entry.js +2 -2
  286. package/dist/esm/ion-segment-button.entry.js +3 -3
  287. package/dist/esm/ion-segment.entry.js +3 -3
  288. package/dist/esm/ion-select-option.entry.js +2 -2
  289. package/dist/esm/ion-select.entry.js +9 -9
  290. package/dist/esm/ion-spinner.entry.js +2 -2
  291. package/dist/esm/ion-split-pane.entry.js +2 -2
  292. package/dist/esm/ion-tab-bar.entry.js +2 -2
  293. package/dist/esm/ion-tab-button.entry.js +3 -3
  294. package/dist/esm/ion-tab.entry.js +3 -3
  295. package/dist/esm/ion-tabs.entry.js +1 -1
  296. package/dist/esm/ion-text.entry.js +2 -2
  297. package/dist/esm/ion-textarea.entry.js +7 -7
  298. package/dist/esm/ion-thumbnail.entry.js +2 -2
  299. package/dist/{components/title.js → esm/ion-title.entry.js} +14 -34
  300. package/dist/esm/ion-title.entry.js.map +1 -0
  301. package/dist/esm/ion-toast.entry.js +8 -8
  302. package/dist/esm/ion-toggle.entry.js +5 -5
  303. package/dist/{components/toolbar.js → esm/ion-toolbar.entry.js} +14 -31
  304. package/dist/esm/ion-toolbar.entry.js.map +1 -0
  305. package/dist/esm/{ionic-global-006bfdaa.js → ionic-global-163eb7af.js} +2 -2
  306. package/dist/esm/{ionic-global-006bfdaa.js.map → ionic-global-163eb7af.js.map} +1 -1
  307. package/dist/esm/{ios.transition-e19293f7.js → ios.transition-0236708a.js} +5 -5
  308. package/dist/esm/{ios.transition-e19293f7.js.map → ios.transition-0236708a.js.map} +1 -1
  309. package/dist/esm/loader.js +5 -5
  310. package/dist/esm/{md.transition-d72e937f.js → md.transition-e93291da.js} +5 -5
  311. package/dist/esm/{md.transition-d72e937f.js.map → md.transition-e93291da.js.map} +1 -1
  312. package/dist/esm/{menu-toggle-util-dca4ccca.js → menu-toggle-util-a0afc829.js} +2 -2
  313. package/dist/esm/{menu-toggle-util-dca4ccca.js.map → menu-toggle-util-a0afc829.js.map} +1 -1
  314. package/dist/esm/{notch-controller-18232ec1.js → notch-controller-ae856621.js} +2 -2
  315. package/dist/esm/{notch-controller-18232ec1.js.map → notch-controller-ae856621.js.map} +1 -1
  316. package/dist/esm/{overlays-f768dabb.js → overlays-708b9a6f.js} +6 -6
  317. package/dist/esm/{overlays-f768dabb.js.map → overlays-708b9a6f.js.map} +1 -1
  318. package/dist/esm/pos-app-document-viewer.entry.js +1 -1
  319. package/dist/esm/pos-app-generic.entry.js +2 -2
  320. package/dist/esm/pos-app-image-viewer.entry.js +1 -1
  321. package/dist/esm/pos-app-ldp-container.entry.js +2 -2
  322. package/dist/esm/pos-app-rdf-document.entry.js +2 -2
  323. package/dist/esm/pos-container-contents.entry.js +1 -1
  324. package/dist/esm/pos-container-item.entry.js +1 -1
  325. package/dist/esm/pos-document.entry.js +2 -2
  326. package/dist/esm/pos-relations_2.entry.js +1 -1
  327. package/dist/esm/pos-subjects.entry.js +1 -1
  328. package/dist/esm/pos-value.entry.js +1 -1
  329. package/dist/esm/{refresher.utils-5cd2771a.js → refresher.utils-e3624272.js} +4 -4
  330. package/dist/esm/{refresher.utils-5cd2771a.js.map → refresher.utils-e3624272.js.map} +1 -1
  331. package/dist/esm/{status-tap-96ab3acb.js → status-tap-9b757300.js} +5 -5
  332. package/dist/esm/{status-tap-96ab3acb.js.map → status-tap-9b757300.js.map} +1 -1
  333. package/dist/esm/{swipe-back-44f8b09c.js → swipe-back-5993fe10.js} +2 -2
  334. package/dist/esm/{swipe-back-44f8b09c.js.map → swipe-back-5993fe10.js.map} +1 -1
  335. package/dist/types/apps/pos-app-browser/pos-app-browser.d.ts +1 -0
  336. package/dist/types/components/pos-router/pos-router.d.ts +10 -0
  337. package/dist/types/components.d.ts +39 -0
  338. package/package.json +1 -1
  339. package/dist/cjs/ion-app_32.cjs.entry.js.map +0 -1
  340. package/dist/components/app.js.map +0 -1
  341. package/dist/components/content.js.map +0 -1
  342. package/dist/components/footer.js.map +0 -1
  343. package/dist/components/title.js.map +0 -1
  344. package/dist/components/toolbar.js.map +0 -1
  345. package/dist/elements/p-089421d7.entry.js +0 -8
  346. package/dist/elements/p-089421d7.entry.js.map +0 -1
  347. package/dist/elements/p-0edf98c5.entry.js +0 -2
  348. package/dist/elements/p-0feec79b.js +0 -6
  349. package/dist/elements/p-118e0bed.entry.js +0 -2
  350. package/dist/elements/p-2fa5ecde.js +0 -8
  351. package/dist/elements/p-4342e2ef.entry.js +0 -2
  352. package/dist/elements/p-546a0100.entry.js +0 -2
  353. package/dist/elements/p-5f19bcb1.entry.js +0 -2
  354. package/dist/elements/p-64af0b46.entry.js +0 -2
  355. package/dist/elements/p-7e36887e.js +0 -5
  356. package/dist/elements/p-86f80c54.entry.js +0 -2
  357. package/dist/elements/p-89b3cdad.entry.js +0 -2
  358. package/dist/elements/p-8eb42424.entry.js +0 -2
  359. package/dist/elements/p-8f98459a.entry.js +0 -2
  360. package/dist/elements/p-909f0d6e.entry.js +0 -2
  361. package/dist/elements/p-963acf5e.entry.js +0 -2
  362. package/dist/elements/p-9b3608b6.entry.js +0 -2
  363. package/dist/elements/p-acbfc962.entry.js +0 -2
  364. package/dist/elements/p-b115ebcf.entry.js +0 -2
  365. package/dist/elements/p-cc274814.entry.js +0 -2
  366. package/dist/elements/p-d3a247bd.entry.js +0 -2
  367. package/dist/elements/p-d5ff3d36.entry.js +0 -2
  368. package/dist/elements/p-de267699.js +0 -2
  369. package/dist/elements/p-e3734616.entry.js +0 -2
  370. package/dist/elements/p-e3d72483.entry.js +0 -2
  371. package/dist/elements/p-f05a0cca.entry.js +0 -2
  372. package/dist/elements/p-f82feb40.js +0 -5
  373. package/dist/esm/ion-app_32.entry.js.map +0 -1
  374. /package/dist/elements/{p-f82feb40.js.map → p-012387ef.js.map} +0 -0
  375. /package/dist/elements/{p-e06dbbcc.entry.js.map → p-0133f543.entry.js.map} +0 -0
  376. /package/dist/elements/{p-3aeb707f.entry.js.map → p-09a7b8e1.entry.js.map} +0 -0
  377. /package/dist/elements/{p-86136480.entry.js.map → p-11ad53dd.entry.js.map} +0 -0
  378. /package/dist/elements/{p-9365c31d.entry.js.map → p-122324d9.entry.js.map} +0 -0
  379. /package/dist/elements/{p-530932bb.js.map → p-163e3e87.js.map} +0 -0
  380. /package/dist/elements/{p-9b56d918.js.map → p-18d4a4f4.js.map} +0 -0
  381. /package/dist/elements/{p-b90d29b6.entry.js.map → p-18d9c4f7.entry.js.map} +0 -0
  382. /package/dist/elements/{p-69d9dbbf.entry.js.map → p-1a90b8bb.entry.js.map} +0 -0
  383. /package/dist/elements/{p-02b4f408.entry.js.map → p-1f36a3c0.entry.js.map} +0 -0
  384. /package/dist/elements/{p-c7ac1d8b.entry.js.map → p-200707c8.entry.js.map} +0 -0
  385. /package/dist/elements/{p-78982008.entry.js.map → p-2072bd89.entry.js.map} +0 -0
  386. /package/dist/elements/{p-170a54a2.js.map → p-20e2e8c1.js.map} +0 -0
  387. /package/dist/elements/{p-9e7f0522.js.map → p-25270f1a.js.map} +0 -0
  388. /package/dist/elements/{p-5f19bcb1.entry.js.map → p-27ec1e73.entry.js.map} +0 -0
  389. /package/dist/elements/{p-c4a822b5.entry.js.map → p-28b1f2dc.entry.js.map} +0 -0
  390. /package/dist/elements/{p-4d47eeb5.js.map → p-2a17fd31.js.map} +0 -0
  391. /package/dist/elements/{p-8d4278bb.entry.js.map → p-2adb9784.entry.js.map} +0 -0
  392. /package/dist/elements/{p-d212be68.entry.js.map → p-30685d32.entry.js.map} +0 -0
  393. /package/dist/elements/{p-8e1e3e7d.js.map → p-359bfe6a.js.map} +0 -0
  394. /package/dist/elements/{p-bba60e3b.entry.js.map → p-39cc0ada.entry.js.map} +0 -0
  395. /package/dist/elements/{p-af43acbb.entry.js.map → p-4c0808b4.entry.js.map} +0 -0
  396. /package/dist/elements/{p-b8ac0ee4.js.map → p-4d6e48bf.js.map} +0 -0
  397. /package/dist/elements/{p-28ad7b6e.entry.js.map → p-5298b7a1.entry.js.map} +0 -0
  398. /package/dist/elements/{p-0b1c92f2.entry.js.map → p-52c87099.entry.js.map} +0 -0
  399. /package/dist/elements/{p-2428b6bf.js.map → p-592177e8.js.map} +0 -0
  400. /package/dist/elements/{p-8b81a782.js.map → p-595c0a57.js.map} +0 -0
  401. /package/dist/elements/{p-e32a52ee.js.map → p-5a248cff.js.map} +0 -0
  402. /package/dist/elements/{p-cc62cb3d.entry.js.map → p-61a489ee.entry.js.map} +0 -0
  403. /package/dist/elements/{p-118e0bed.entry.js.map → p-6ac0c71c.entry.js.map} +0 -0
  404. /package/dist/elements/{p-6c9053ed.entry.js.map → p-6bcba1f6.entry.js.map} +0 -0
  405. /package/dist/elements/{p-ddc13326.entry.js.map → p-6e2a89ab.entry.js.map} +0 -0
  406. /package/dist/elements/{p-565128c5.entry.js.map → p-74ebe432.entry.js.map} +0 -0
  407. /package/dist/elements/{p-89b3cdad.entry.js.map → p-76543de1.entry.js.map} +0 -0
  408. /package/dist/elements/{p-d7231d27.entry.js.map → p-76e7559c.entry.js.map} +0 -0
  409. /package/dist/elements/{p-41e21640.entry.js.map → p-778d7821.entry.js.map} +0 -0
  410. /package/dist/elements/{p-f941317f.entry.js.map → p-78ba7248.entry.js.map} +0 -0
  411. /package/dist/elements/{p-6579450f.js.map → p-7a563988.js.map} +0 -0
  412. /package/dist/elements/{p-3c2b721e.js.map → p-7f507bcb.js.map} +0 -0
  413. /package/dist/elements/{p-0feec79b.js.map → p-8206b1f1.js.map} +0 -0
  414. /package/dist/elements/{p-b097a0ac.entry.js.map → p-82fb9396.entry.js.map} +0 -0
  415. /package/dist/elements/{p-d86e6e48.entry.js.map → p-8817e69b.entry.js.map} +0 -0
  416. /package/dist/elements/{p-86f80c54.entry.js.map → p-8865cb08.entry.js.map} +0 -0
  417. /package/dist/elements/{p-0951f046.entry.js.map → p-8b9b339b.entry.js.map} +0 -0
  418. /package/dist/elements/{p-553217d4.entry.js.map → p-8b9b7f79.entry.js.map} +0 -0
  419. /package/dist/elements/{p-86eaec56.entry.js.map → p-8c32e0ab.entry.js.map} +0 -0
  420. /package/dist/elements/{p-8f98459a.entry.js.map → p-8fe569b3.entry.js.map} +0 -0
  421. /package/dist/elements/{p-e3734616.entry.js.map → p-9090e8dc.entry.js.map} +0 -0
  422. /package/dist/elements/{p-fb11bb27.entry.js.map → p-916a6612.entry.js.map} +0 -0
  423. /package/dist/elements/{p-fa9aa28a.entry.js.map → p-a68e7901.entry.js.map} +0 -0
  424. /package/dist/elements/{p-69410d36.js.map → p-a91046dc.js.map} +0 -0
  425. /package/dist/elements/{p-325e5484.entry.js.map → p-aad12400.entry.js.map} +0 -0
  426. /package/dist/elements/{p-58418838.entry.js.map → p-ab92e9ad.entry.js.map} +0 -0
  427. /package/dist/elements/{p-d01e6782.entry.js.map → p-af3f8ab1.entry.js.map} +0 -0
  428. /package/dist/elements/{p-8eb42424.entry.js.map → p-b11e8f77.entry.js.map} +0 -0
  429. /package/dist/elements/{p-77d82071.entry.js.map → p-b19890bd.entry.js.map} +0 -0
  430. /package/dist/elements/{p-573b7dca.entry.js.map → p-b227f4a8.entry.js.map} +0 -0
  431. /package/dist/elements/{p-134b66b6.js.map → p-bb3054a3.js.map} +0 -0
  432. /package/dist/elements/{p-56bf9fdf.js.map → p-c2690129.js.map} +0 -0
  433. /package/dist/elements/{p-8b0695a7.entry.js.map → p-c445f3ac.entry.js.map} +0 -0
  434. /package/dist/elements/{p-2ba30f60.entry.js.map → p-c9faf4da.entry.js.map} +0 -0
  435. /package/dist/elements/{p-2fa5ecde.js.map → p-ca453b3d.js.map} +0 -0
  436. /package/dist/elements/{p-c23172a0.entry.js.map → p-cd9107d1.entry.js.map} +0 -0
  437. /package/dist/elements/{p-9b369d09.js.map → p-cebe59d4.js.map} +0 -0
  438. /package/dist/elements/{p-b67ce91f.entry.js.map → p-cfec477d.entry.js.map} +0 -0
  439. /package/dist/elements/{p-1c69ca01.js.map → p-d0fcc589.js.map} +0 -0
  440. /package/dist/elements/{p-257248f2.entry.js.map → p-d2458575.entry.js.map} +0 -0
  441. /package/dist/elements/{p-9b3608b6.entry.js.map → p-d2e7f4d4.entry.js.map} +0 -0
  442. /package/dist/elements/{p-3505dfe2.js.map → p-d6769f21.js.map} +0 -0
  443. /package/dist/elements/{p-a1a15808.entry.js.map → p-d6bf2b98.entry.js.map} +0 -0
  444. /package/dist/elements/{p-75cbc833.entry.js.map → p-d86570da.entry.js.map} +0 -0
  445. /package/dist/elements/{p-963acf5e.entry.js.map → p-d8e8bd9b.entry.js.map} +0 -0
  446. /package/dist/elements/{p-de267699.js.map → p-d8fc8b11.js.map} +0 -0
  447. /package/dist/elements/{p-0ddd5da3.entry.js.map → p-da5f6dcd.entry.js.map} +0 -0
  448. /package/dist/elements/{p-ab5544fc.entry.js.map → p-db793eec.entry.js.map} +0 -0
  449. /package/dist/elements/{p-7e36887e.js.map → p-db973275.js.map} +0 -0
  450. /package/dist/elements/{p-5f2c1e33.entry.js.map → p-e134ddc9.entry.js.map} +0 -0
  451. /package/dist/elements/{p-0752ec21.entry.js.map → p-e3ae9b45.entry.js.map} +0 -0
  452. /package/dist/elements/{p-ad2273d6.js.map → p-ecdb52e8.js.map} +0 -0
  453. /package/dist/elements/{p-2dddbb15.js.map → p-f1ef82a9.js.map} +0 -0
  454. /package/dist/elements/{p-d3a247bd.entry.js.map → p-f4440338.entry.js.map} +0 -0
  455. /package/dist/elements/{p-5bd948fa.entry.js.map → p-f981858f.entry.js.map} +0 -0
  456. /package/dist/elements/{p-f6b92b3c.entry.js.map → p-fd200088.entry.js.map} +0 -0
  457. /package/dist/elements/{p-b56ae71f.entry.js.map → p-fdeb6a78.entry.js.map} +0 -0
@@ -1,124 +1,19 @@
1
- import { r as registerInstance, h, H as Host, d as getElement, e as createEvent, f as readTask, i as forceUpdate, w as writeTask, j as getAssetPath, k as getRenderingRef } from './index-46b2983b.js';
2
- import { shouldUseCloseWatcher } from './hardware-back-button-80e72d27.js';
3
- import { p as printIonWarning } from './index-bec78e8b.js';
4
- import { g as getIonMode$1, c as config$1, a as isPlatform } from './ionic-global-006bfdaa.js';
5
- import { i as inheritAttributes$1, h as hasLazyBuild, c as componentOnReady, a as clamp, b as inheritAriaAttributes, d as debounceEvent, r as raf } from './helpers-ad2d8971.js';
1
+ import { r as registerInstance, h, H as Host, d as getElement, e as getAssetPath, f as readTask, w as writeTask, i as createEvent, j as forceUpdate, k as getRenderingRef } from './index-538226d8.js';
2
+ import { i as inheritAttributes$1, c as clamp, d as debounceEvent, a as componentOnReady, r as raf } from './helpers-a93a8cd2.js';
6
3
  import { o as openURL, c as createColorClasses$1, h as hostContext } from './theme-d75c68ae.js';
4
+ import { g as getIonMode$1, c as config$1 } from './ionic-global-163eb7af.js';
7
5
  import { i as isRTL$1 } from './dir-f50ace98.js';
8
- import { f as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-38b2da1b.js';
9
- import { c as createKeyboardController } from './keyboard-controller-c7a0d471.js';
10
6
  import { a as arrowBackSharp, c as closeCircle, b as closeSharp, s as searchOutline, d as searchSharp } from './index-9edae53a.js';
11
- import { s as store, B as BrokenFile } from './BrokenFile-0cbdf2f2.js';
7
+ import { s as store, B as BrokenFile } from './BrokenFile-660171a9.js';
12
8
  import { P as PodOS } from './index-7eb8c3eb.js';
13
9
  import { s as subscribeResource } from './ResourceAware-5f237305.js';
14
10
  import './gesture-controller-958242a2.js';
15
- import { t as toastController } from './overlays-f768dabb.js';
11
+ import { t as toastController } from './overlays-708b9a6f.js';
16
12
  import { s as subscribePodOs } from './PodOsAware-132573cd.js';
17
13
  import './index-6b94f340.js';
18
- import './keyboard-d981a33f.js';
19
- import './capacitor-8d3da60f.js';
20
- import './framework-delegate-0ffa1682.js';
21
-
22
- const appCss = "html.plt-mobile ion-app{user-select:none}html.plt-mobile ion-app [contenteditable]{user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}";
23
- const IonAppStyle0 = appCss;
24
-
25
- const App = class {
26
- constructor(hostRef) {
27
- registerInstance(this, hostRef);
28
- }
29
- componentDidLoad() {
30
- {
31
- rIC(async () => {
32
- const isHybrid = isPlatform(window, 'hybrid');
33
- if (!config$1.getBoolean('_testing')) {
34
- import('./index-c043b4c8.js').then((module) => module.startTapClick(config$1));
35
- }
36
- if (config$1.getBoolean('statusTap', isHybrid)) {
37
- import('./status-tap-96ab3acb.js').then((module) => module.startStatusTap());
38
- }
39
- if (config$1.getBoolean('inputShims', needInputShims())) {
40
- /**
41
- * needInputShims() ensures that only iOS and Android
42
- * platforms proceed into this block.
43
- */
44
- const platform = isPlatform(window, 'ios') ? 'ios' : 'android';
45
- import('./input-shims-2246db96.js').then((module) => module.startInputShims(config$1, platform));
46
- }
47
- const hardwareBackButtonModule = await import('./hardware-back-button-80e72d27.js');
48
- const supportsHardwareBackButtonEvents = isHybrid || shouldUseCloseWatcher();
49
- if (config$1.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
50
- hardwareBackButtonModule.startHardwareBackButton();
51
- }
52
- else {
53
- /**
54
- * If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
55
- * then the close watcher will not be used.
56
- */
57
- if (shouldUseCloseWatcher()) {
58
- printIonWarning('experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');
59
- }
60
- hardwareBackButtonModule.blockHardwareBackButton();
61
- }
62
- if (typeof window !== 'undefined') {
63
- import('./keyboard-5feb79bb.js').then((module) => module.startKeyboardAssist(window));
64
- }
65
- import('./focus-visible-cc065a93.js').then((module) => (this.focusVisible = module.startFocusVisible()));
66
- });
67
- }
68
- }
69
- /**
70
- * @internal
71
- * Used to set focus on an element that uses `ion-focusable`.
72
- * Do not use this if focusing the element as a result of a keyboard
73
- * event as the focus utility should handle this for us. This method
74
- * should be used when we want to programmatically focus an element as
75
- * a result of another user action. (Ex: We focus the first element
76
- * inside of a popover when the user presents it, but the popover is not always
77
- * presented as a result of keyboard action.)
78
- */
79
- async setFocus(elements) {
80
- if (this.focusVisible) {
81
- this.focusVisible.setFocus(elements);
82
- }
83
- }
84
- render() {
85
- const mode = getIonMode$1(this);
86
- return (h(Host, { key: '6d7c57453b4be454690e8f1a0721f1e3da8f92aa', class: {
87
- [mode]: true,
88
- 'ion-page': true,
89
- 'force-statusbar-padding': config$1.getBoolean('_forceStatusbarPadding'),
90
- } }));
91
- }
92
- get el() { return getElement(this); }
93
- };
94
- const needInputShims = () => {
95
- /**
96
- * iOS always needs input shims
97
- */
98
- const needsShimsIOS = isPlatform(window, 'ios') && isPlatform(window, 'mobile');
99
- if (needsShimsIOS) {
100
- return true;
101
- }
102
- /**
103
- * Android only needs input shims when running
104
- * in the browser and only if the browser is using the
105
- * new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
106
- */
107
- const isAndroidMobileWeb = isPlatform(window, 'android') && isPlatform(window, 'mobileweb');
108
- if (isAndroidMobileWeb) {
109
- return true;
110
- }
111
- return false;
112
- };
113
- const rIC = (callback) => {
114
- if ('requestIdleCallback' in window) {
115
- window.requestIdleCallback(callback);
116
- }
117
- else {
118
- setTimeout(callback, 32);
119
- }
120
- };
121
- App.style = IonAppStyle0;
14
+ import './hardware-back-button-e34ddb75.js';
15
+ import './framework-delegate-b5751311.js';
16
+ import './index-f7ac0403.js';
122
17
 
123
18
  const cardIosCss = ":host{--ion-safe-area-left:0px;--ion-safe-area-right:0px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;background:var(--background);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;overflow:hidden}:host(.ion-color){background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.card-disabled){cursor:default;opacity:0.3;pointer-events:none}.card-native{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;min-height:var(--min-height);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:inherit}.card-native::-moz-focus-inner{border:0}button,a{cursor:pointer;user-select:none;-webkit-user-drag:none}ion-ripple-effect{color:var(--ripple-color)}:host{--background:var(--ion-card-background, var(--ion-item-background, var(--ion-background-color, #fff)));--color:var(--ion-card-color, var(--ion-item-color, var(--ion-color-step-600, #666666)));-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:24px;margin-bottom:24px;border-radius:8px;transition:transform 500ms cubic-bezier(0.12, 0.72, 0.29, 1);font-size:0.875rem;box-shadow:0 4px 16px rgba(0, 0, 0, 0.12)}:host(.ion-activated){transform:scale3d(0.97, 0.97, 1)}";
124
19
  const IonCardIosStyle0 = cardIosCss;
@@ -229,868 +124,6 @@ CardHeader.style = {
229
124
  md: IonCardHeaderMdStyle0
230
125
  };
231
126
 
232
- const contentCss = ":host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.outer-content){--background:var(--ion-color-step-50, #f2f2f2)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom));position:absolute;color:var(--color);box-sizing:border-box;overflow:hidden;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:\"\"}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:flex;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;transform:translateZ(0)}";
233
- const IonContentStyle0 = contentCss;
234
-
235
- const Content = class {
236
- constructor(hostRef) {
237
- registerInstance(this, hostRef);
238
- this.ionScrollStart = createEvent(this, "ionScrollStart", 7);
239
- this.ionScroll = createEvent(this, "ionScroll", 7);
240
- this.ionScrollEnd = createEvent(this, "ionScrollEnd", 7);
241
- this.watchDog = null;
242
- this.isScrolling = false;
243
- this.lastScroll = 0;
244
- this.queued = false;
245
- this.cTop = -1;
246
- this.cBottom = -1;
247
- this.isMainContent = true;
248
- this.resizeTimeout = null;
249
- this.tabsElement = null;
250
- // Detail is used in a hot loop in the scroll event, by allocating it here
251
- // V8 will be able to inline any read/write to it since it's a monomorphic class.
252
- // https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html
253
- this.detail = {
254
- scrollTop: 0,
255
- scrollLeft: 0,
256
- type: 'scroll',
257
- event: undefined,
258
- startX: 0,
259
- startY: 0,
260
- startTime: 0,
261
- currentX: 0,
262
- currentY: 0,
263
- velocityX: 0,
264
- velocityY: 0,
265
- deltaX: 0,
266
- deltaY: 0,
267
- currentTime: 0,
268
- data: undefined,
269
- isScrolling: true,
270
- };
271
- this.color = undefined;
272
- this.fullscreen = false;
273
- this.forceOverscroll = undefined;
274
- this.scrollX = false;
275
- this.scrollY = true;
276
- this.scrollEvents = false;
277
- }
278
- connectedCallback() {
279
- this.isMainContent = this.el.closest('ion-menu, ion-popover, ion-modal') === null;
280
- /**
281
- * The fullscreen content offsets need to be
282
- * computed after the tab bar has loaded. Since
283
- * lazy evaluation means components are not hydrated
284
- * at the same time, we need to wait for the ionTabBarLoaded
285
- * event to fire. This does not impact dist-custom-elements
286
- * because there is no hydration there.
287
- */
288
- if (hasLazyBuild(this.el)) {
289
- /**
290
- * We need to cache the reference to the tabs.
291
- * If just the content is unmounted then we won't
292
- * be able to query for the closest tabs on disconnectedCallback
293
- * since the content has been removed from the DOM tree.
294
- */
295
- const closestTabs = (this.tabsElement = this.el.closest('ion-tabs'));
296
- if (closestTabs !== null) {
297
- /**
298
- * When adding and removing the event listener
299
- * we need to make sure we pass the same function reference
300
- * otherwise the event listener will not be removed properly.
301
- * We can't only pass `this.resize` because "this" in the function
302
- * context becomes a reference to IonTabs instead of IonContent.
303
- *
304
- * Additionally, we listen for ionTabBarLoaded on the IonTabs
305
- * instance rather than the IonTabBar instance. It's possible for
306
- * a tab bar to be conditionally rendered/mounted. Since ionTabBarLoaded
307
- * bubbles, we can catch any instances of child tab bars loading by listening
308
- * on IonTabs.
309
- */
310
- this.tabsLoadCallback = () => this.resize();
311
- closestTabs.addEventListener('ionTabBarLoaded', this.tabsLoadCallback);
312
- }
313
- }
314
- }
315
- disconnectedCallback() {
316
- this.onScrollEnd();
317
- if (hasLazyBuild(this.el)) {
318
- /**
319
- * The event listener and tabs caches need to
320
- * be cleared otherwise this will create a memory
321
- * leak where the IonTabs instance can never be
322
- * garbage collected.
323
- */
324
- const { tabsElement, tabsLoadCallback } = this;
325
- if (tabsElement !== null && tabsLoadCallback !== undefined) {
326
- tabsElement.removeEventListener('ionTabBarLoaded', tabsLoadCallback);
327
- }
328
- this.tabsElement = null;
329
- this.tabsLoadCallback = undefined;
330
- }
331
- }
332
- /**
333
- * Rotating certain devices can update
334
- * the safe area insets. As a result,
335
- * the fullscreen feature on ion-content
336
- * needs to be recalculated.
337
- *
338
- * We listen for "resize" because we
339
- * do not care what the orientation of
340
- * the device is. Other APIs
341
- * such as ScreenOrientation or
342
- * the deviceorientation event must have
343
- * permission from the user first whereas
344
- * the "resize" event does not.
345
- *
346
- * We also throttle the callback to minimize
347
- * thrashing when quickly resizing a window.
348
- */
349
- onResize() {
350
- if (this.resizeTimeout) {
351
- clearTimeout(this.resizeTimeout);
352
- this.resizeTimeout = null;
353
- }
354
- this.resizeTimeout = setTimeout(() => {
355
- /**
356
- * Resize should only happen
357
- * if the content is visible.
358
- * When the content is hidden
359
- * then offsetParent will be null.
360
- */
361
- if (this.el.offsetParent === null) {
362
- return;
363
- }
364
- this.resize();
365
- }, 100);
366
- }
367
- shouldForceOverscroll() {
368
- const { forceOverscroll } = this;
369
- const mode = getIonMode$1(this);
370
- return forceOverscroll === undefined ? mode === 'ios' && isPlatform('ios') : forceOverscroll;
371
- }
372
- resize() {
373
- /**
374
- * Only force update if the component is rendered in a browser context.
375
- * Using `forceUpdate` in a server context with pre-rendering can lead to an infinite loop.
376
- * The `hydrateDocument` function in `@stencil/core` will render the `ion-content`, but
377
- * `forceUpdate` will trigger another render, locking up the server.
378
- *
379
- * TODO: Remove if STENCIL-834 determines Stencil will account for this.
380
- */
381
- {
382
- if (this.fullscreen) {
383
- readTask(() => this.readDimensions());
384
- }
385
- else if (this.cTop !== 0 || this.cBottom !== 0) {
386
- this.cTop = this.cBottom = 0;
387
- forceUpdate(this);
388
- }
389
- }
390
- }
391
- readDimensions() {
392
- const page = getPageElement(this.el);
393
- const top = Math.max(this.el.offsetTop, 0);
394
- const bottom = Math.max(page.offsetHeight - top - this.el.offsetHeight, 0);
395
- const dirty = top !== this.cTop || bottom !== this.cBottom;
396
- if (dirty) {
397
- this.cTop = top;
398
- this.cBottom = bottom;
399
- forceUpdate(this);
400
- }
401
- }
402
- onScroll(ev) {
403
- const timeStamp = Date.now();
404
- const shouldStart = !this.isScrolling;
405
- this.lastScroll = timeStamp;
406
- if (shouldStart) {
407
- this.onScrollStart();
408
- }
409
- if (!this.queued && this.scrollEvents) {
410
- this.queued = true;
411
- readTask((ts) => {
412
- this.queued = false;
413
- this.detail.event = ev;
414
- updateScrollDetail(this.detail, this.scrollEl, ts, shouldStart);
415
- this.ionScroll.emit(this.detail);
416
- });
417
- }
418
- }
419
- /**
420
- * Get the element where the actual scrolling takes place.
421
- * This element can be used to subscribe to `scroll` events or manually modify
422
- * `scrollTop`. However, it's recommended to use the API provided by `ion-content`:
423
- *
424
- * i.e. Using `ionScroll`, `ionScrollStart`, `ionScrollEnd` for scrolling events
425
- * and `scrollToPoint()` to scroll the content into a certain point.
426
- */
427
- async getScrollElement() {
428
- /**
429
- * If this gets called in certain early lifecycle hooks (ex: Vue onMounted),
430
- * scrollEl won't be defined yet with the custom elements build, so wait for it to load in.
431
- */
432
- if (!this.scrollEl) {
433
- await new Promise((resolve) => componentOnReady(this.el, resolve));
434
- }
435
- return Promise.resolve(this.scrollEl);
436
- }
437
- /**
438
- * Returns the background content element.
439
- * @internal
440
- */
441
- async getBackgroundElement() {
442
- if (!this.backgroundContentEl) {
443
- await new Promise((resolve) => componentOnReady(this.el, resolve));
444
- }
445
- return Promise.resolve(this.backgroundContentEl);
446
- }
447
- /**
448
- * Scroll to the top of the component.
449
- *
450
- * @param duration The amount of time to take scrolling to the top. Defaults to `0`.
451
- */
452
- scrollToTop(duration = 0) {
453
- return this.scrollToPoint(undefined, 0, duration);
454
- }
455
- /**
456
- * Scroll to the bottom of the component.
457
- *
458
- * @param duration The amount of time to take scrolling to the bottom. Defaults to `0`.
459
- */
460
- async scrollToBottom(duration = 0) {
461
- const scrollEl = await this.getScrollElement();
462
- const y = scrollEl.scrollHeight - scrollEl.clientHeight;
463
- return this.scrollToPoint(undefined, y, duration);
464
- }
465
- /**
466
- * Scroll by a specified X/Y distance in the component.
467
- *
468
- * @param x The amount to scroll by on the horizontal axis.
469
- * @param y The amount to scroll by on the vertical axis.
470
- * @param duration The amount of time to take scrolling by that amount.
471
- */
472
- async scrollByPoint(x, y, duration) {
473
- const scrollEl = await this.getScrollElement();
474
- return this.scrollToPoint(x + scrollEl.scrollLeft, y + scrollEl.scrollTop, duration);
475
- }
476
- /**
477
- * Scroll to a specified X/Y location in the component.
478
- *
479
- * @param x The point to scroll to on the horizontal axis.
480
- * @param y The point to scroll to on the vertical axis.
481
- * @param duration The amount of time to take scrolling to that point. Defaults to `0`.
482
- */
483
- async scrollToPoint(x, y, duration = 0) {
484
- const el = await this.getScrollElement();
485
- if (duration < 32) {
486
- if (y != null) {
487
- el.scrollTop = y;
488
- }
489
- if (x != null) {
490
- el.scrollLeft = x;
491
- }
492
- return;
493
- }
494
- let resolve;
495
- let startTime = 0;
496
- const promise = new Promise((r) => (resolve = r));
497
- const fromY = el.scrollTop;
498
- const fromX = el.scrollLeft;
499
- const deltaY = y != null ? y - fromY : 0;
500
- const deltaX = x != null ? x - fromX : 0;
501
- // scroll loop
502
- const step = (timeStamp) => {
503
- const linearTime = Math.min(1, (timeStamp - startTime) / duration) - 1;
504
- const easedT = Math.pow(linearTime, 3) + 1;
505
- if (deltaY !== 0) {
506
- el.scrollTop = Math.floor(easedT * deltaY + fromY);
507
- }
508
- if (deltaX !== 0) {
509
- el.scrollLeft = Math.floor(easedT * deltaX + fromX);
510
- }
511
- if (easedT < 1) {
512
- // do not use DomController here
513
- // must use nativeRaf in order to fire in the next frame
514
- requestAnimationFrame(step);
515
- }
516
- else {
517
- resolve();
518
- }
519
- };
520
- // chill out for a frame first
521
- requestAnimationFrame((ts) => {
522
- startTime = ts;
523
- step(ts);
524
- });
525
- return promise;
526
- }
527
- onScrollStart() {
528
- this.isScrolling = true;
529
- this.ionScrollStart.emit({
530
- isScrolling: true,
531
- });
532
- if (this.watchDog) {
533
- clearInterval(this.watchDog);
534
- }
535
- // watchdog
536
- this.watchDog = setInterval(() => {
537
- if (this.lastScroll < Date.now() - 120) {
538
- this.onScrollEnd();
539
- }
540
- }, 100);
541
- }
542
- onScrollEnd() {
543
- if (this.watchDog)
544
- clearInterval(this.watchDog);
545
- this.watchDog = null;
546
- if (this.isScrolling) {
547
- this.isScrolling = false;
548
- this.ionScrollEnd.emit({
549
- isScrolling: false,
550
- });
551
- }
552
- }
553
- render() {
554
- const { isMainContent, scrollX, scrollY, el } = this;
555
- const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
556
- const mode = getIonMode$1(this);
557
- const forceOverscroll = this.shouldForceOverscroll();
558
- const transitionShadow = mode === 'ios';
559
- const TagType = isMainContent ? 'main' : 'div';
560
- this.resize();
561
- return (h(Host, { key: 'e13815c0e6f6095150b112d3a1aaf2f509aa0d0b', class: createColorClasses$1(this.color, {
562
- [mode]: true,
563
- 'content-sizing': hostContext('ion-popover', this.el),
564
- overscroll: forceOverscroll,
565
- [`content-${rtl}`]: true,
566
- }), style: {
567
- '--offset-top': `${this.cTop}px`,
568
- '--offset-bottom': `${this.cBottom}px`,
569
- } }, h("div", { key: '8006c4a10d8f7dc83c646246961d018a8097236e', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), h(TagType, { key: '4dd2f58421493f7a4ca42f8f5d7b85cda8e320ea', class: {
570
- 'inner-scroll': true,
571
- 'scroll-x': scrollX,
572
- 'scroll-y': scrollY,
573
- overscroll: (scrollX || scrollY) && forceOverscroll,
574
- }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '37904f8f1d8319156cd901feb21930ef674fe0f7' })), transitionShadow ? (h("div", { class: "transition-effect" }, h("div", { class: "transition-cover" }), h("div", { class: "transition-shadow" }))) : null, h("slot", { key: '8f696583903af0548d064dca1a6bae060e127485', name: "fixed" })));
575
- }
576
- get el() { return getElement(this); }
577
- };
578
- const getParentElement = (el) => {
579
- var _a;
580
- if (el.parentElement) {
581
- // normal element with a parent element
582
- return el.parentElement;
583
- }
584
- if ((_a = el.parentNode) === null || _a === void 0 ? void 0 : _a.host) {
585
- // shadow dom's document fragment
586
- return el.parentNode.host;
587
- }
588
- return null;
589
- };
590
- const getPageElement = (el) => {
591
- const tabs = el.closest('ion-tabs');
592
- if (tabs) {
593
- return tabs;
594
- }
595
- /**
596
- * If we're in a popover, we need to use its wrapper so we can account for space
597
- * between the popover and the edges of the screen. But if the popover contains
598
- * its own page element, we should use that instead.
599
- */
600
- const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
601
- if (page) {
602
- return page;
603
- }
604
- return getParentElement(el);
605
- };
606
- // ******** DOM READ ****************
607
- const updateScrollDetail = (detail, el, timestamp, shouldStart) => {
608
- const prevX = detail.currentX;
609
- const prevY = detail.currentY;
610
- const prevT = detail.currentTime;
611
- const currentX = el.scrollLeft;
612
- const currentY = el.scrollTop;
613
- const timeDelta = timestamp - prevT;
614
- if (shouldStart) {
615
- // remember the start positions
616
- detail.startTime = timestamp;
617
- detail.startX = currentX;
618
- detail.startY = currentY;
619
- detail.velocityX = detail.velocityY = 0;
620
- }
621
- detail.currentTime = timestamp;
622
- detail.currentX = detail.scrollLeft = currentX;
623
- detail.currentY = detail.scrollTop = currentY;
624
- detail.deltaX = currentX - detail.startX;
625
- detail.deltaY = currentY - detail.startY;
626
- if (timeDelta > 0 && timeDelta < 100) {
627
- const velocityX = (currentX - prevX) / timeDelta;
628
- const velocityY = (currentY - prevY) / timeDelta;
629
- detail.velocityX = velocityX * 0.7 + detail.velocityX * 0.3;
630
- detail.velocityY = velocityY * 0.7 + detail.velocityY * 0.3;
631
- }
632
- };
633
- Content.style = IonContentStyle0;
634
-
635
- /*!
636
- * (C) Ionic http://ionicframework.com - MIT License
637
- */
638
- const handleFooterFade = (scrollEl, baseEl) => {
639
- readTask(() => {
640
- const scrollTop = scrollEl.scrollTop;
641
- const maxScroll = scrollEl.scrollHeight - scrollEl.clientHeight;
642
- /**
643
- * Toolbar background will fade
644
- * out over fadeDuration in pixels.
645
- */
646
- const fadeDuration = 10;
647
- /**
648
- * Begin fading out maxScroll - 30px
649
- * from the bottom of the content.
650
- * Also determine how close we are
651
- * to starting the fade. If we are
652
- * before the starting point, the
653
- * scale value will get clamped to 0.
654
- * If we are after the maxScroll (rubber
655
- * band scrolling), the scale value will
656
- * get clamped to 1.
657
- */
658
- const fadeStart = maxScroll - fadeDuration;
659
- const distanceToStart = scrollTop - fadeStart;
660
- const scale = clamp(0, 1 - distanceToStart / fadeDuration, 1);
661
- writeTask(() => {
662
- baseEl.style.setProperty('--opacity-scale', scale.toString());
663
- });
664
- });
665
- };
666
-
667
- const footerIosCss = "ion-footer{display:block;position:relative;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports (backdrop-filter: blur(0)){.footer-background{left:0;right:0;top:0;bottom:0;position:absolute;backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}";
668
- const IonFooterIosStyle0 = footerIosCss;
669
-
670
- const footerMdCss = "ion-footer{display:block;position:relative;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-md{box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.ion-no-border{box-shadow:none}";
671
- const IonFooterMdStyle0 = footerMdCss;
672
-
673
- const Footer = class {
674
- constructor(hostRef) {
675
- registerInstance(this, hostRef);
676
- this.keyboardCtrl = null;
677
- this.checkCollapsibleFooter = () => {
678
- const mode = getIonMode$1(this);
679
- if (mode !== 'ios') {
680
- return;
681
- }
682
- const { collapse } = this;
683
- const hasFade = collapse === 'fade';
684
- this.destroyCollapsibleFooter();
685
- if (hasFade) {
686
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
687
- const contentEl = pageEl ? findIonContent(pageEl) : null;
688
- if (!contentEl) {
689
- printIonContentErrorMsg(this.el);
690
- return;
691
- }
692
- this.setupFadeFooter(contentEl);
693
- }
694
- };
695
- this.setupFadeFooter = async (contentEl) => {
696
- const scrollEl = (this.scrollEl = await getScrollElement(contentEl));
697
- /**
698
- * Handle fading of toolbars on scroll
699
- */
700
- this.contentScrollCallback = () => {
701
- handleFooterFade(scrollEl, this.el);
702
- };
703
- scrollEl.addEventListener('scroll', this.contentScrollCallback);
704
- handleFooterFade(scrollEl, this.el);
705
- };
706
- this.keyboardVisible = false;
707
- this.collapse = undefined;
708
- this.translucent = false;
709
- }
710
- componentDidLoad() {
711
- this.checkCollapsibleFooter();
712
- }
713
- componentDidUpdate() {
714
- this.checkCollapsibleFooter();
715
- }
716
- async connectedCallback() {
717
- this.keyboardCtrl = await createKeyboardController(async (keyboardOpen, waitForResize) => {
718
- /**
719
- * If the keyboard is hiding, then we need to wait
720
- * for the webview to resize. Otherwise, the footer
721
- * will flicker before the webview resizes.
722
- */
723
- if (keyboardOpen === false && waitForResize !== undefined) {
724
- await waitForResize;
725
- }
726
- this.keyboardVisible = keyboardOpen; // trigger re-render by updating state
727
- });
728
- }
729
- disconnectedCallback() {
730
- if (this.keyboardCtrl) {
731
- this.keyboardCtrl.destroy();
732
- }
733
- }
734
- destroyCollapsibleFooter() {
735
- if (this.scrollEl && this.contentScrollCallback) {
736
- this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
737
- this.contentScrollCallback = undefined;
738
- }
739
- }
740
- render() {
741
- const { translucent, collapse } = this;
742
- const mode = getIonMode$1(this);
743
- const tabs = this.el.closest('ion-tabs');
744
- const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
745
- return (h(Host, { key: 'dd8fa96901e8a09759a9621b6513f0492b3a6197', role: "contentinfo", class: {
746
- [mode]: true,
747
- // Used internally for styling
748
- [`footer-${mode}`]: true,
749
- [`footer-translucent`]: translucent,
750
- [`footer-translucent-${mode}`]: translucent,
751
- ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
752
- [`footer-collapse-${collapse}`]: collapse !== undefined,
753
- } }, mode === 'ios' && translucent && h("div", { key: '0fbb4ebf8e3951ff399f843dc11aab37fc48f8b7', class: "footer-background" }), h("slot", { key: 'ecb14a65e3b6960670446c4428e3095b3231a3b0' })));
754
- }
755
- get el() { return getElement(this); }
756
- };
757
- Footer.style = {
758
- ios: IonFooterIosStyle0,
759
- md: IonFooterMdStyle0
760
- };
761
-
762
- /*!
763
- * (C) Ionic http://ionicframework.com - MIT License
764
- */
765
- const TRANSITION = 'all 0.2s ease-in-out';
766
- const cloneElement = (tagName) => {
767
- const getCachedEl = document.querySelector(`${tagName}.ion-cloned-element`);
768
- if (getCachedEl !== null) {
769
- return getCachedEl;
770
- }
771
- const clonedEl = document.createElement(tagName);
772
- clonedEl.classList.add('ion-cloned-element');
773
- clonedEl.style.setProperty('display', 'none');
774
- document.body.appendChild(clonedEl);
775
- return clonedEl;
776
- };
777
- const createHeaderIndex = (headerEl) => {
778
- if (!headerEl) {
779
- return;
780
- }
781
- const toolbars = headerEl.querySelectorAll('ion-toolbar');
782
- return {
783
- el: headerEl,
784
- toolbars: Array.from(toolbars).map((toolbar) => {
785
- const ionTitleEl = toolbar.querySelector('ion-title');
786
- return {
787
- el: toolbar,
788
- background: toolbar.shadowRoot.querySelector('.toolbar-background'),
789
- ionTitleEl,
790
- innerTitleEl: ionTitleEl ? ionTitleEl.shadowRoot.querySelector('.toolbar-title') : null,
791
- ionButtonsEl: Array.from(toolbar.querySelectorAll('ion-buttons')),
792
- };
793
- }),
794
- };
795
- };
796
- const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
797
- readTask(() => {
798
- const scrollTop = scrollEl.scrollTop;
799
- const scale = clamp(1, 1 + -scrollTop / 500, 1.1);
800
- // Native refresher should not cause titles to scale
801
- const nativeRefresher = contentEl.querySelector('ion-refresher.refresher-native');
802
- if (nativeRefresher === null) {
803
- writeTask(() => {
804
- scaleLargeTitles(scrollHeaderIndex.toolbars, scale);
805
- });
806
- }
807
- });
808
- };
809
- const setToolbarBackgroundOpacity = (headerEl, opacity) => {
810
- /**
811
- * Fading in the backdrop opacity
812
- * should happen after the large title
813
- * has collapsed, so it is handled
814
- * by handleHeaderFade()
815
- */
816
- if (headerEl.collapse === 'fade') {
817
- return;
818
- }
819
- if (opacity === undefined) {
820
- headerEl.style.removeProperty('--opacity-scale');
821
- }
822
- else {
823
- headerEl.style.setProperty('--opacity-scale', opacity.toString());
824
- }
825
- };
826
- const handleToolbarBorderIntersection = (ev, mainHeaderIndex, scrollTop) => {
827
- if (!ev[0].isIntersecting) {
828
- return;
829
- }
830
- /**
831
- * There is a bug in Safari where overflow scrolling on a non-body element
832
- * does not always reset the scrollTop position to 0 when letting go. It will
833
- * set to 1 once the rubber band effect has ended. This causes the background to
834
- * appear slightly on certain app setups.
835
- *
836
- * Additionally, we check if user is rubber banding (scrolling is negative)
837
- * as this can mean they are using pull to refresh. Once the refresher starts,
838
- * the content is transformed which can cause the intersection observer to erroneously
839
- * fire here as well.
840
- */
841
- const scale = ev[0].intersectionRatio > 0.9 || scrollTop <= 0 ? 0 : ((1 - ev[0].intersectionRatio) * 100) / 75;
842
- setToolbarBackgroundOpacity(mainHeaderIndex.el, scale === 1 ? undefined : scale);
843
- };
844
- /**
845
- * If toolbars are intersecting, hide the scrollable toolbar content
846
- * and show the primary toolbar content. If the toolbars are not intersecting,
847
- * hide the primary toolbar content and show the scrollable toolbar content
848
- */
849
- const handleToolbarIntersection = (ev, // TODO(FW-2832): type (IntersectionObserverEntry[] triggers errors which should be sorted)
850
- mainHeaderIndex, scrollHeaderIndex, scrollEl) => {
851
- writeTask(() => {
852
- const scrollTop = scrollEl.scrollTop;
853
- handleToolbarBorderIntersection(ev, mainHeaderIndex, scrollTop);
854
- const event = ev[0];
855
- const intersection = event.intersectionRect;
856
- const intersectionArea = intersection.width * intersection.height;
857
- const rootArea = event.rootBounds.width * event.rootBounds.height;
858
- const isPageHidden = intersectionArea === 0 && rootArea === 0;
859
- const leftDiff = Math.abs(intersection.left - event.boundingClientRect.left);
860
- const rightDiff = Math.abs(intersection.right - event.boundingClientRect.right);
861
- const isPageTransitioning = intersectionArea > 0 && (leftDiff >= 5 || rightDiff >= 5);
862
- if (isPageHidden || isPageTransitioning) {
863
- return;
864
- }
865
- if (event.isIntersecting) {
866
- setHeaderActive(mainHeaderIndex, false);
867
- setHeaderActive(scrollHeaderIndex);
868
- }
869
- else {
870
- /**
871
- * There is a bug with IntersectionObserver on Safari
872
- * where `event.isIntersecting === false` when cancelling
873
- * a swipe to go back gesture. Checking the intersection
874
- * x, y, width, and height provides a workaround. This bug
875
- * does not happen when using Safari + Web Animations,
876
- * only Safari + CSS Animations.
877
- */
878
- const hasValidIntersection = (intersection.x === 0 && intersection.y === 0) || (intersection.width !== 0 && intersection.height !== 0);
879
- if (hasValidIntersection && scrollTop > 0) {
880
- setHeaderActive(mainHeaderIndex);
881
- setHeaderActive(scrollHeaderIndex, false);
882
- setToolbarBackgroundOpacity(mainHeaderIndex.el);
883
- }
884
- }
885
- });
886
- };
887
- const setHeaderActive = (headerIndex, active = true) => {
888
- const headerEl = headerIndex.el;
889
- if (active) {
890
- headerEl.classList.remove('header-collapse-condense-inactive');
891
- headerEl.removeAttribute('aria-hidden');
892
- }
893
- else {
894
- headerEl.classList.add('header-collapse-condense-inactive');
895
- headerEl.setAttribute('aria-hidden', 'true');
896
- }
897
- };
898
- const scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {
899
- toolbars.forEach((toolbar) => {
900
- const ionTitle = toolbar.ionTitleEl;
901
- const titleDiv = toolbar.innerTitleEl;
902
- if (!ionTitle || ionTitle.size !== 'large') {
903
- return;
904
- }
905
- titleDiv.style.transition = transition ? TRANSITION : '';
906
- titleDiv.style.transform = `scale3d(${scale}, ${scale}, 1)`;
907
- });
908
- };
909
- const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
910
- readTask(() => {
911
- const scrollTop = scrollEl.scrollTop;
912
- const baseElHeight = baseEl.clientHeight;
913
- const fadeStart = condenseHeader ? condenseHeader.clientHeight : 0;
914
- /**
915
- * If we are using fade header with a condense
916
- * header, then the toolbar backgrounds should
917
- * not begin to fade in until the condense
918
- * header has fully collapsed.
919
- *
920
- * Additionally, the main content should not
921
- * overflow out of the container until the
922
- * condense header has fully collapsed. When
923
- * using just the condense header the content
924
- * should overflow out of the container.
925
- */
926
- if (condenseHeader !== null && scrollTop < fadeStart) {
927
- baseEl.style.setProperty('--opacity-scale', '0');
928
- scrollEl.style.setProperty('clip-path', `inset(${baseElHeight}px 0px 0px 0px)`);
929
- return;
930
- }
931
- const distanceToStart = scrollTop - fadeStart;
932
- const fadeDuration = 10;
933
- const scale = clamp(0, distanceToStart / fadeDuration, 1);
934
- writeTask(() => {
935
- scrollEl.style.removeProperty('clip-path');
936
- baseEl.style.setProperty('--opacity-scale', scale.toString());
937
- });
938
- });
939
- };
940
-
941
- const headerIosCss = "ion-header{display:block;position:relative;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports (backdrop-filter: blur(0)){.header-background{left:0;right:0;top:0;bottom:0;position:absolute;backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:.8}.header-collapse-condense-inactive .header-background{backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{--background:var(--ion-background-color, #fff);z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{transition:all 0.2s ease-in-out}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header.header-ios:not(.header-collapse-main):has(~ion-content ion-header.header-ios[collapse=condense],~ion-content ion-header.header-ios.header-collapse-condense){opacity:0}";
942
- const IonHeaderIosStyle0 = headerIosCss;
943
-
944
- const headerMdCss = "ion-header{display:block;position:relative;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-md{box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-collapse-condense{display:none}.header-md.ion-no-border{box-shadow:none}";
945
- const IonHeaderMdStyle0 = headerMdCss;
946
-
947
- const Header = class {
948
- constructor(hostRef) {
949
- registerInstance(this, hostRef);
950
- this.inheritedAttributes = {};
951
- this.setupFadeHeader = async (contentEl, condenseHeader) => {
952
- const scrollEl = (this.scrollEl = await getScrollElement(contentEl));
953
- /**
954
- * Handle fading of toolbars on scroll
955
- */
956
- this.contentScrollCallback = () => {
957
- handleHeaderFade(this.scrollEl, this.el, condenseHeader);
958
- };
959
- scrollEl.addEventListener('scroll', this.contentScrollCallback);
960
- handleHeaderFade(this.scrollEl, this.el, condenseHeader);
961
- };
962
- this.collapse = undefined;
963
- this.translucent = false;
964
- }
965
- componentWillLoad() {
966
- this.inheritedAttributes = inheritAriaAttributes(this.el);
967
- }
968
- componentDidLoad() {
969
- this.checkCollapsibleHeader();
970
- }
971
- componentDidUpdate() {
972
- this.checkCollapsibleHeader();
973
- }
974
- disconnectedCallback() {
975
- this.destroyCollapsibleHeader();
976
- }
977
- async checkCollapsibleHeader() {
978
- const mode = getIonMode$1(this);
979
- if (mode !== 'ios') {
980
- return;
981
- }
982
- const { collapse } = this;
983
- const hasCondense = collapse === 'condense';
984
- const hasFade = collapse === 'fade';
985
- this.destroyCollapsibleHeader();
986
- if (hasCondense) {
987
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
988
- const contentEl = pageEl ? findIonContent(pageEl) : null;
989
- // Cloned elements are always needed in iOS transition
990
- writeTask(() => {
991
- const title = cloneElement('ion-title');
992
- title.size = 'large';
993
- cloneElement('ion-back-button');
994
- });
995
- await this.setupCondenseHeader(contentEl, pageEl);
996
- }
997
- else if (hasFade) {
998
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
999
- const contentEl = pageEl ? findIonContent(pageEl) : null;
1000
- if (!contentEl) {
1001
- printIonContentErrorMsg(this.el);
1002
- return;
1003
- }
1004
- const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
1005
- await this.setupFadeHeader(contentEl, condenseHeader);
1006
- }
1007
- }
1008
- destroyCollapsibleHeader() {
1009
- if (this.intersectionObserver) {
1010
- this.intersectionObserver.disconnect();
1011
- this.intersectionObserver = undefined;
1012
- }
1013
- if (this.scrollEl && this.contentScrollCallback) {
1014
- this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
1015
- this.contentScrollCallback = undefined;
1016
- }
1017
- if (this.collapsibleMainHeader) {
1018
- this.collapsibleMainHeader.classList.remove('header-collapse-main');
1019
- this.collapsibleMainHeader = undefined;
1020
- }
1021
- }
1022
- async setupCondenseHeader(contentEl, pageEl) {
1023
- if (!contentEl || !pageEl) {
1024
- printIonContentErrorMsg(this.el);
1025
- return;
1026
- }
1027
- if (typeof IntersectionObserver === 'undefined') {
1028
- return;
1029
- }
1030
- this.scrollEl = await getScrollElement(contentEl);
1031
- const headers = pageEl.querySelectorAll('ion-header');
1032
- this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
1033
- if (!this.collapsibleMainHeader) {
1034
- return;
1035
- }
1036
- const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
1037
- const scrollHeaderIndex = createHeaderIndex(this.el);
1038
- if (!mainHeaderIndex || !scrollHeaderIndex) {
1039
- return;
1040
- }
1041
- setHeaderActive(mainHeaderIndex, false);
1042
- setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
1043
- /**
1044
- * Handle interaction between toolbar collapse and
1045
- * showing/hiding content in the primary ion-header
1046
- * as well as progressively showing/hiding the main header
1047
- * border as the top-most toolbar collapses or expands.
1048
- */
1049
- const toolbarIntersection = (ev) => {
1050
- handleToolbarIntersection(ev, mainHeaderIndex, scrollHeaderIndex, this.scrollEl);
1051
- };
1052
- this.intersectionObserver = new IntersectionObserver(toolbarIntersection, {
1053
- root: contentEl,
1054
- threshold: [0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],
1055
- });
1056
- this.intersectionObserver.observe(scrollHeaderIndex.toolbars[scrollHeaderIndex.toolbars.length - 1].el);
1057
- /**
1058
- * Handle scaling of large iOS titles and
1059
- * showing/hiding border on last toolbar
1060
- * in primary header
1061
- */
1062
- this.contentScrollCallback = () => {
1063
- handleContentScroll(this.scrollEl, scrollHeaderIndex, contentEl);
1064
- };
1065
- this.scrollEl.addEventListener('scroll', this.contentScrollCallback);
1066
- writeTask(() => {
1067
- if (this.collapsibleMainHeader !== undefined) {
1068
- this.collapsibleMainHeader.classList.add('header-collapse-main');
1069
- }
1070
- });
1071
- }
1072
- render() {
1073
- const { translucent, inheritedAttributes } = this;
1074
- const mode = getIonMode$1(this);
1075
- const collapse = this.collapse || 'none';
1076
- // banner role must be at top level, so remove role if inside a menu
1077
- const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';
1078
- return (h(Host, Object.assign({ key: '9fa0af97b605f9fe98b13361bc3d1289745c549f', role: roleType, class: {
1079
- [mode]: true,
1080
- // Used internally for styling
1081
- [`header-${mode}`]: true,
1082
- [`header-translucent`]: this.translucent,
1083
- [`header-collapse-${collapse}`]: true,
1084
- [`header-translucent-${mode}`]: this.translucent,
1085
- } }, inheritedAttributes), mode === 'ios' && translucent && h("div", { key: '1a780d2625302f2465718e304bdd3794c89c9845', class: "header-background" }), h("slot", { key: 'b2b8557b44be40c590bfcc362ac4350f9f8b889e' })));
1086
- }
1087
- get el() { return getElement(this); }
1088
- };
1089
- Header.style = {
1090
- ios: IonHeaderIosStyle0,
1091
- md: IonHeaderMdStyle0
1092
- };
1093
-
1094
127
  let CACHED_MAP;
1095
128
  const getIconMap = () => {
1096
129
  if (typeof window === 'undefined') {
@@ -2018,121 +1051,6 @@ const SkeletonText = class {
2018
1051
  };
2019
1052
  SkeletonText.style = IonSkeletonTextStyle0;
2020
1053
 
2021
- const titleIosCss = ":host{--color:initial;display:flex;flex:1;align-items:center;transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;box-sizing:border-box;pointer-events:none}@supports (inset-inline-start: 0){:host{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host{left:0}:host-context([dir=rtl]){left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(:dir(rtl)){left:unset;right:unset;right:0}}}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;transform-origin:left center;position:static;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{transform-origin:calc(100% - inherit)}}";
2022
- const IonTitleIosStyle0 = titleIosCss;
2023
-
2024
- const titleMdCss = ":host{--color:initial;display:flex;flex:1;align-items:center;transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}";
2025
- const IonTitleMdStyle0 = titleMdCss;
2026
-
2027
- const ToolbarTitle = class {
2028
- constructor(hostRef) {
2029
- registerInstance(this, hostRef);
2030
- this.ionStyle = createEvent(this, "ionStyle", 7);
2031
- this.color = undefined;
2032
- this.size = undefined;
2033
- }
2034
- sizeChanged() {
2035
- this.emitStyle();
2036
- }
2037
- connectedCallback() {
2038
- this.emitStyle();
2039
- }
2040
- emitStyle() {
2041
- const size = this.getSize();
2042
- this.ionStyle.emit({
2043
- [`title-${size}`]: true,
2044
- });
2045
- }
2046
- getSize() {
2047
- return this.size !== undefined ? this.size : 'default';
2048
- }
2049
- render() {
2050
- const mode = getIonMode$1(this);
2051
- const size = this.getSize();
2052
- return (h(Host, { key: '6f43362b782ef7d340c241bb66f1469663c03cc1', class: createColorClasses$1(this.color, {
2053
- [mode]: true,
2054
- [`title-${size}`]: true,
2055
- 'title-rtl': document.dir === 'rtl',
2056
- }) }, h("div", { key: '9c3ff1a289e533ee3426b71ab5560fbea3529502', class: "toolbar-title" }, h("slot", { key: '50d5cc5a1519ad58f1994d2f8c8f08f62baac1fe' }))));
2057
- }
2058
- get el() { return getElement(this); }
2059
- static get watchers() { return {
2060
- "size": ["sizeChanged"]
2061
- }; }
2062
- };
2063
- ToolbarTitle.style = {
2064
- ios: IonTitleIosStyle0,
2065
- md: IonTitleMdStyle0
2066
- };
2067
-
2068
- const toolbarIosCss = ":host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:flex;position:relative;flex-direction:row;align-items:center;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, #f7f7f7));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.2))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{flex:1;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){order:2}::slotted([slot=secondary]){order:3}::slotted([slot=primary]){order:5;text-align:end}::slotted([slot=end]){order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{flex-wrap:wrap;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{flex:1;order:8;min-width:100%}";
2069
- const IonToolbarIosStyle0 = toolbarIosCss;
2070
-
2071
- const toolbarMdCss = ":host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:flex;position:relative;flex-direction:row;align-items:center;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, #c1c4cd)));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{flex:1;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){order:2}::slotted([slot=secondary]){order:4}::slotted([slot=primary]){order:5;text-align:end}::slotted([slot=end]){order:6;text-align:end}";
2072
- const IonToolbarMdStyle0 = toolbarMdCss;
2073
-
2074
- const Toolbar = class {
2075
- constructor(hostRef) {
2076
- registerInstance(this, hostRef);
2077
- this.childrenStyles = new Map();
2078
- this.color = undefined;
2079
- }
2080
- componentWillLoad() {
2081
- const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
2082
- const firstButtons = buttons.find((button) => {
2083
- return button.slot === 'start';
2084
- });
2085
- if (firstButtons) {
2086
- firstButtons.classList.add('buttons-first-slot');
2087
- }
2088
- const buttonsReversed = buttons.reverse();
2089
- const lastButtons = buttonsReversed.find((button) => button.slot === 'end') ||
2090
- buttonsReversed.find((button) => button.slot === 'primary') ||
2091
- buttonsReversed.find((button) => button.slot === 'secondary');
2092
- if (lastButtons) {
2093
- lastButtons.classList.add('buttons-last-slot');
2094
- }
2095
- }
2096
- childrenStyle(ev) {
2097
- ev.stopPropagation();
2098
- const tagName = ev.target.tagName;
2099
- const updatedStyles = ev.detail;
2100
- const newStyles = {};
2101
- const childStyles = this.childrenStyles.get(tagName) || {};
2102
- let hasStyleChange = false;
2103
- Object.keys(updatedStyles).forEach((key) => {
2104
- const childKey = `toolbar-${key}`;
2105
- const newValue = updatedStyles[key];
2106
- if (newValue !== childStyles[childKey]) {
2107
- hasStyleChange = true;
2108
- }
2109
- if (newValue) {
2110
- newStyles[childKey] = true;
2111
- }
2112
- });
2113
- if (hasStyleChange) {
2114
- this.childrenStyles.set(tagName, newStyles);
2115
- forceUpdate(this);
2116
- }
2117
- }
2118
- render() {
2119
- const mode = getIonMode$1(this);
2120
- const childStyles = {};
2121
- this.childrenStyles.forEach((value) => {
2122
- Object.assign(childStyles, value);
2123
- });
2124
- return (h(Host, { key: '8907ed75fbb2b1dced55c481bba6363f1dca815b', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
2125
- [mode]: true,
2126
- 'in-toolbar': hostContext('ion-toolbar', this.el),
2127
- })) }, h("div", { key: '6bfa09b08d6517f0d680f53b739854cecd631bc9', class: "toolbar-background" }), h("div", { key: '1531bd6dd9e0a5843309bba854b744c453037ad0', class: "toolbar-container" }, h("slot", { key: '881b41697d386eae651b019128573f0fa432cd33', name: "start" }), h("slot", { key: '64a284e6eae5311ac3125dfadb4bb32bdba9d089', name: "secondary" }), h("div", { key: 'c1f47503563b38084b27d7ba54f17ec478482b94', class: "toolbar-content" }, h("slot", { key: '9a85acfba72252705619ae32acae9c14f81aa57d' })), h("slot", { key: '89e08bd761dc6940dbebc5d06f5f080af204aa72', name: "primary" }), h("slot", { key: 'a1cb7d95627f8a3d24dd4b9c11718fc164f53674', name: "end" }))));
2128
- }
2129
- get el() { return getElement(this); }
2130
- };
2131
- Toolbar.style = {
2132
- ios: IonToolbarIosStyle0,
2133
- md: IonToolbarMdStyle0
2134
- };
2135
-
2136
1054
  const posAddNewThingCss = ":host{font-family:var(--font-sans);display:block}button#new{cursor:pointer;display:flex;align-items:center;justify-content:center;border:none;width:var(--scale-5);height:var(--scale-5);background-color:var(--pos-primary-color);color:var(--color-grey-50);font-size:var(--scale-6);border-radius:var(--radius-xs)}button#new:hover,button#new:focus{outline:none;filter:brightness(110%);box-shadow:var(--shadow-sm)}pos-new-thing-form{margin:var(--scale-3)}";
2137
1055
  const PosAddNewThingStyle0 = posAddNewThingCss;
2138
1056
 
@@ -2145,7 +1063,7 @@ const PosAddNewThing = class {
2145
1063
  this.dialog.showModal();
2146
1064
  }
2147
1065
  render() {
2148
- return (h(Host, { key: 'f68aeded06adc5372957f9a75438cfb630d305e9' }, h("button", { key: '21216bb0fcbf47fbaafa2435b7f9e41df9412be4', id: "new", title: "Add a new thing", onClick: () => this.openDialog() }, h("ion-icon", { key: '58d0dc9ac04ee40cdccc23ce46cc8736767a6bde', name: "add-circle-outline" })), h("pos-dialog", { key: 'dde1ef9d4f75860173868088c47f252e98f00288', ref: el => (this.dialog = el) }, h("span", { key: 'fb12cccee3d5514cb6db2e329aede9e05183f3c5', slot: "title" }, "Add a new thing"), h("pos-new-thing-form", { key: '01949fa90383f62cbe987dd206f837ebfa8d4e55', slot: "content", referenceUri: this.referenceUri }))));
1066
+ return (h(Host, { key: '2e632aa0d1699b39fd52f178c93bb510ac2d6e91' }, h("button", { key: '3830a37cc82868ed6bcbb4b88049da5de1a932c4', id: "new", title: "Add a new thing", onClick: () => this.openDialog() }, h("ion-icon", { key: 'efd48bfa658f4d58792e442ede0c22527ac1fb34', name: "add-circle-outline" })), h("pos-dialog", { key: '69be02ce0bf6a01ba7c919de67c87acc4a550983', ref: el => (this.dialog = el) }, h("span", { key: '8cfc152b49103ed239238af52f7c7de3f18df1b1', slot: "title" }, "Add a new thing"), h("pos-new-thing-form", { key: '4780a2a0c7254a577d38deac1d5078e8d5c7f82e', slot: "content", referenceUri: this.referenceUri }))));
2149
1067
  }
2150
1068
  };
2151
1069
  PosAddNewThing.style = PosAddNewThingStyle0;
@@ -3118,19 +2036,39 @@ const PosApp = class {
3118
2036
  }
3119
2037
  }
3120
2038
  render() {
3121
- return h("slot", { key: 'd44bd56f5036b319e90964aa8cb2c0ab60046f46' });
2039
+ return h("slot", { key: '0c1dd123a984543004e73308e33bab0afca708c7' });
3122
2040
  }
3123
2041
  };
3124
2042
 
2043
+ const posAppBrowserCss = "pos-router{margin:0;padding:0;display:flex;flex-direction:column;height:100vh}pos-navigation-bar{max-width:var(--width-lg);margin:0}pos-add-new-thing,pos-login{flex:0 1 auto;}header,footer{display:flex;gap:var(--size-1);height:auto;justify-content:center;align-items:center;padding:var(--size-1)}footer svg{width:var(--size-5);height:var(--size-5)}footer{font-size:var(--scale-fluid-000)}header{flex-wrap:wrap;padding:0 var(--size-8)}main{flex:1;max-height:100vh;overflow:auto}@media (max-width: 640px){header{padding:0 var(--size-1) var(--size-1);justify-content:space-between}pos-navigation-bar{flex-basis:100%;order:0}pos-add-new-thing,pos-login{order:1}}";
2044
+ const PosAppBrowserStyle0 = posAppBrowserCss;
2045
+
3125
2046
  const PosAppBrowser = class {
3126
2047
  constructor(hostRef) {
3127
2048
  registerInstance(this, hostRef);
3128
2049
  this.restorePreviousSession = false;
2050
+ this.uri = '';
3129
2051
  }
3130
2052
  render() {
3131
- return (h("pos-app", { key: 'b0cd0b818fdf4b747828e45722a2e5e2beca3fed', restorePreviousSession: this.restorePreviousSession }, h("pos-error-toast", { key: '48840fd1401920e5e925097c5e0fdbc84b0683a0' }, h("ion-app", { key: '739484cc781ab72aca520c8254ed0514b58c3ba3' }, h("ion-header", { key: 'e2f4cb34edc538c7e698fc0ed8e6a330ece3cfdc' }, h("ion-toolbar", { key: '25e12849dce08731864de78b9daa85c807a8d332' }, h("ion-title", { key: '1fb14f21d28e12bc3fe405fec7344bfd0987031e', slot: "start" }, "PodOS"), h("pos-login", { key: 'ffa9bb4105b5151d69ec8b2b2dbbe7038efc3612' }))), h("ion-content", { key: 'bbd8454b8b3cc65c650816112d2d43261335186b' }, h("pos-router", { key: 'e1c94f5dda22557fa417113a9168b5acef4cddfd' })), h("ion-footer", { key: '40623fc943a0a89c1a3ef23e23daebc653b5c5dc' }, h("ion-toolbar", { key: 'b3b6d497a9a19c0c0756b89c152ea2dc2ad25c41' }, h("ion-title", { key: '982679383f343e6f7a1a42d9110c1a53493c3b71' }, "PodOS Browser")))))));
3132
- }
3133
- };
2053
+ return (h(Host, { key: 'b154b596b7c172de223da89c4f6e113607111ff4' }, h("pos-app", { key: '057c6ea517b358513a292ee1b22a4ab3f847acb4', restorePreviousSession: this.restorePreviousSession }, h("pos-error-toast", { key: '818712bc4dfbba08a5091412931fba60529f1ce1' }, h("pos-router", { key: '58b23715dd4a0c4c981b92c43da41df4fde0bfe5', "onPod-os:route-changed": e => (this.uri = e.detail) }, h("header", { key: 'e83dcbaff0f013747922a62734856663e0d8e095' }, h("pos-add-new-thing", { key: 'e74961384b4c145bdf7d771fbae0547f83b95b78', referenceUri: this.uri }), h("pos-navigation-bar", { key: 'e3cb7e3e137f2615fdda8980444fd03bf009bbd3', uri: this.uri }), h("pos-login", { key: 'fe07f4cedb465911c76fc0c4520c6084090c9fed' })), h("main", { key: '993531497ec2d6ec8a9828519c1405568f2ab86b' }, h("pos-resource", { key: this.uri, uri: this.uri }, h("pos-type-router", { key: '0b4faa6fac3426438744c224d5966cf1b8312e4a' }))), h("footer", { key: 'cff5a02d8a14b478a4484ce105e53443b9b753ae' }, h(Logo, { key: 'd6a67415ba15c8b0a72517dd011b622564d9d8d2' }), h("span", { key: '5cfb56d1da679a022826b72082fe47cad150f055' }, "PodOS Browser")))))));
2054
+ }
2055
+ };
2056
+ const Logo = () => {
2057
+ return (h("svg", { viewBox: "0 0 400 400", xmlns: "http://www.w3.org/2000/svg" }, h("path", { d: "M50 350 L50 100 L200 50 L350 100 L350 350 Z", style: {
2058
+ 'fill': '#008BF8',
2059
+ 'stroke': '#008BF8',
2060
+ 'stroke-width': '70',
2061
+ }, "stroke-linejoin": "round" }), h("path", { d: "M100 300 L100 150 L200 120 L300 150 L300 300 L130 300 L130 370 L100 370Z", style: {
2062
+ 'fill': 'white',
2063
+ 'stroke': 'white',
2064
+ 'stroke-width': '45',
2065
+ }, "stroke-linejoin": "round" }), h("path", { d: "M150 250 L150 200 L200 180 L250 200 L250 250 Z", style: {
2066
+ 'fill': '#DC0073',
2067
+ 'stroke': '#DC0073',
2068
+ 'stroke-width': '20',
2069
+ }, "stroke-linejoin": "round" })));
2070
+ };
2071
+ PosAppBrowser.style = PosAppBrowserStyle0;
3134
2072
 
3135
2073
  const PosDescription = class {
3136
2074
  constructor(hostRef) {
@@ -3163,7 +2101,7 @@ const PosDialog = class {
3163
2101
  this.dialog.close();
3164
2102
  }
3165
2103
  render() {
3166
- return (h(Host, { key: '0bc83e22253fd17e9f8ffc1c81b80682050a0883' }, h("dialog", { key: '2a5d5ba49cfde551389d11f2f5ffb0dd065b26e1', ref: el => (this.dialog = el) }, h("header", { key: '09f35e49e79e9cb067926213d9e715048d57e0f4' }, h("slot", { key: '3f16be3db881b8f93aa1bcb0cf1cb2a19bade573', name: "title" }), h("button", { key: 'd4a566a54d6d5db752a1ae9c1c0eda34954103d9', tabindex: -1, id: "close", title: "Close", onClick: () => this.close() }, h("ion-icon", { key: '262f5f7233764471ab4dcd61808e65e6468bcffa', name: "close-outline" }))), h("slot", { key: 'de6782ef358e852a6d4d34d3bd37c222fbf64527', name: "content" }))));
2104
+ return (h(Host, { key: '2afede6b81d08df86698897989cf60ddd0924725' }, h("dialog", { key: '437b2817f0cf0a24d2c23705754666db08d86d7b', ref: el => (this.dialog = el) }, h("header", { key: 'b117318680cf8afd336ecb0a1833e527c0ab9b12' }, h("slot", { key: 'bfb23dd0fcd65c92dce927ddff6656e97a6a4b58', name: "title" }), h("button", { key: '954d0e64de334a658a96927921f213cba1e30715', tabindex: -1, id: "close", title: "Close", onClick: () => this.close() }, h("ion-icon", { key: 'c7b70eda40f3c087eadfb6cfeb6107cbe7747c21', name: "close-outline" }))), h("slot", { key: '9fc63ff77963a2564b18598c97bee19a73655c1a', name: "content" }))));
3167
2105
  }
3168
2106
  };
3169
2107
  PosDialog.style = PosDialogStyle0;
@@ -3196,7 +2134,7 @@ const PosErrorToast = class {
3196
2134
  await toast.present();
3197
2135
  }
3198
2136
  render() {
3199
- return h("slot", { key: '93ac613ea6c25c6533fbca6ee06201a97c39d87d' });
2137
+ return h("slot", { key: '8c5c8f5197184686f81602136672f35a62b2ea78' });
3200
2138
  }
3201
2139
  };
3202
2140
 
@@ -3292,7 +2230,7 @@ const PosLabel = class {
3292
2230
  }
3293
2231
  };
3294
2232
 
3295
- const posLoginCss = ":host{display:flex;gap:10px}.user-data{align-items:center;display:inline-flex;gap:10px}.user-data pos-picture{--width:40px;--height:40px;--border-radius:50%}pos-login-form{margin:var(--size-2)}dialog{margin-top:var(--size-10)}button#login,button#logout{outline:none;text-transform:uppercase;font-weight:var(--weight-bold);letter-spacing:var(--letter-xl);border:none;box-sizing:border-box;border-radius:var(--radius-xs);padding:var(--scale-000);box-shadow:var(--shadow-sm);cursor:pointer;color:var(--pos-primary-text-color);background-color:var(--pos-primary-color)}button#login:focus-within,button#logout:focus-within{outline:var(--pos-input-focus-outline)}button#login:focus,button#login:hover,button#logout:focus,button#logout:hover{filter:brightness(110%);box-shadow:var(--shadow-md)}";
2233
+ const posLoginCss = ".container{display:flex;align-items:center;gap:var(--size-2)}.user-data{align-items:center;display:inline-flex;gap:10px}.user-data pos-picture{--width:40px;--height:40px;--border-radius:50%}pos-login-form{margin:var(--size-2)}dialog{margin-top:var(--size-10)}button#login,button#logout{outline:none;font-weight:var(--weight-bold);letter-spacing:var(--letter-xl);border:none;box-sizing:border-box;border-radius:var(--radius-xs);padding:var(--size-2);box-shadow:var(--shadow-sm);color:var(--pos-primary-text-color);background-color:var(--pos-primary-color)}button#login:focus-within,button#logout:focus-within{outline:var(--pos-input-focus-outline)}button#login:focus,button#login:hover,button#logout:focus,button#logout:hover{filter:brightness(110%);box-shadow:var(--shadow-md)}";
3296
2234
  const PosLoginStyle0 = posLoginCss;
3297
2235
 
3298
2236
  const PosLogin = class {
@@ -3318,7 +2256,7 @@ const PosLogin = class {
3318
2256
  this.dialog.showModal();
3319
2257
  }
3320
2258
  render() {
3321
- return (h(Host, { key: '4d80604bf01d45172f793cc3a66ff9bfd853d6e8' }, store.state.isLoggedIn ? (h("pos-resource", { uri: store.state.webId }, h("span", { class: "user-data" }, h("pos-picture", null), h("pos-label", null)))) : (''), !store.state.isLoggedIn && (h("button", { key: 'c8d7cc5dfff6c6fd061876a295acb094cf13e620', id: "login", onClick: () => this.openDialog() }, "Login")), store.state.isLoggedIn && (h("button", { key: '7ee336f2d00cf71c36f5d2c87853e9eabe04366a', id: "logout", onClick: () => this.logout() }, "Logout")), h("pos-dialog", { key: '20b349d711044d71a876c4993577fd942e809bdb', ref: el => (this.dialog = el) }, h("span", { key: 'e7dc7cd69e392c7872a18f5129a7ab2545d74a57', slot: "title" }, "Sign in to your Pod"), h("pos-login-form", { key: 'bb17fa8b1632b286dd0a9d6ff68879730b276d82', "onPod-os:idp-url-selected": ev => this.login(ev), slot: "content" }))));
2259
+ return (h(Host, { key: '780beb7c8a3be6f4f834c0d165c264fc4ca57f9b' }, h("div", { key: '66d54e274fab1e72590338ebb3a3aae3ab1275d5', class: "container" }, store.state.isLoggedIn ? (h("pos-resource", { uri: store.state.webId }, h("span", { class: "user-data" }, h("pos-picture", null), h("pos-label", null)))) : (''), !store.state.isLoggedIn && (h("button", { key: '86196036b1ca3cfa505f3c1efbc2ceeb65843a91', id: "login", onClick: () => this.openDialog() }, "Login")), store.state.isLoggedIn && (h("button", { key: 'ae2d4298dc2300ea9b9812b162bc7c14573a1606', id: "logout", onClick: () => this.logout() }, "Logout"))), h("pos-dialog", { key: 'c4cd26d24bdb7a4fa12ed589843da5cc90253c6c', ref: el => (this.dialog = el) }, h("span", { key: '5e59b0cde7cc110262edc1c2cf21cca9704970c6', slot: "title" }, "Sign in to your Pod"), h("pos-login-form", { key: '32c76681860a47a7a6f56fcd1d54757923891967', "onPod-os:idp-url-selected": ev => this.login(ev), slot: "content" }))));
3322
2260
  }
3323
2261
  };
3324
2262
  PosLogin.style = PosLoginStyle0;
@@ -3337,7 +2275,7 @@ const PosLoginForm = class {
3337
2275
  this.canSubmit = Boolean(this.idpUrl);
3338
2276
  }
3339
2277
  render() {
3340
- return (h("form", { key: '7fde1bbc5d3047550052bca7319edb79c7f99977', method: "dialog", onSubmit: () => this.handleSubmit() }, h("label", { key: '251439f51b85a4cb510f6e3848231b709cc8e510', htmlFor: "idpUrl" }, "Please enter your Identity Provider"), h("input", { key: '9f552e4b8dd06dedf0a64307778607d0c910b386', id: "idpUrl", type: "url", value: this.idpUrl, required: true, onInput: e => this.handleChange(e), list: "suggestedIssuers", placeholder: "Type to search..." }), h("datalist", { key: '3db05059ada1e7e9444015de2017c4dc9278ed7b', id: "suggestedIssuers" }, h("option", { key: 'aa1e61b1e72368c34b367e1788d8628a8e295821', value: "https://solidcommunity.net" }, "solidcommunity.net"), h("option", { key: '6320ad809ca912e94c20e18bcee7ed17a348f3f1', value: "https://solidweb.org" }, "solidweb.org"), h("option", { key: 'b1c2ec5d91e0078db5f12128f44f95c99adb6b4e', value: "https://solidweb.me" }, "solidweb.me"), h("option", { key: 'eeb13ac45c75177601a91ff6a5205a7f549055e6', value: "https://inrupt.net" }, "inrupt.net"), h("option", { key: '11f5ad9045b9d6707562922f4179d25fa6917583', value: "https://login.inrupt.com" }, "Inrupt PodSpaces"), h("option", { key: '75057cfb45adec0016f23506f2a93712e497aaf4', value: "https://trinpod.us" }, "trinpod.us"), h("option", { key: 'b0963e48242377be16275eb4f69b7cceb30e6be8', value: "https://use.id" }, "use.id"), h("option", { key: '211ef60f11d5c5d2ac5777645ad20548bc73d874', value: "https://solid.redpencil.io" }, "redpencil.io"), h("option", { key: '5879da4e80fd09f049e4c2ba8819a6d17ff9b028', value: "https://datapod.grant.io" }, "Data Pod (grant.io)"), h("option", { key: 'f35cb3113271a67f154b04559d18cc6be3f362b1', value: "https://teamid.live" }, "teamid.live")), h("input", { key: 'f33a4cf13b5ddb46b0c019122a6ae71e7e701bb6', id: "login", type: "submit", value: "Login", disabled: !this.canSubmit })));
2278
+ return (h("form", { key: '92f9f517c1f20206c03c4a0ba0fa36cf44d03a4e', method: "dialog", onSubmit: () => this.handleSubmit() }, h("label", { key: '545072b27374d328f177cc7cd29a869f94084199', htmlFor: "idpUrl" }, "Please enter your Identity Provider"), h("input", { key: '702a8478a60f238aa571206709179735a6c4e94c', id: "idpUrl", type: "url", value: this.idpUrl, required: true, onInput: e => this.handleChange(e), list: "suggestedIssuers", placeholder: "Type to search..." }), h("datalist", { key: '1998a954b5b5af5f0db4134d5c5936a86ca3d938', id: "suggestedIssuers" }, h("option", { key: '10162042cea7e1080ae6dc1b22d417ea2c8bcdf1', value: "https://solidcommunity.net" }, "solidcommunity.net"), h("option", { key: 'd6fc9acff784dbf07ecd8370b8a864975c99b34c', value: "https://solidweb.org" }, "solidweb.org"), h("option", { key: 'd3980f1bbd66a092a3a8f26994d2e24c786bd311', value: "https://solidweb.me" }, "solidweb.me"), h("option", { key: 'c6e71652acbac29140c40f255b9f26cb50334bc9', value: "https://inrupt.net" }, "inrupt.net"), h("option", { key: 'c9b5cc8768bee481a34b95d6c993e4c75e63ecfd', value: "https://login.inrupt.com" }, "Inrupt PodSpaces"), h("option", { key: '97bb6676127f80f67337a1b0daa4dd367da21482', value: "https://trinpod.us" }, "trinpod.us"), h("option", { key: 'c8def1b84548f10bc2e7961139405ab5679e0dcc', value: "https://use.id" }, "use.id"), h("option", { key: 'e796fec0814bcafb4b3b48f9aff5efe9868243ba', value: "https://solid.redpencil.io" }, "redpencil.io"), h("option", { key: 'fd6632816dbad59dd8ebf3b2ab18d63b74bfd6ca', value: "https://datapod.grant.io" }, "Data Pod (grant.io)"), h("option", { key: 'c64c01e649cba6d8ff93b603e582369fd1bd5bd5', value: "https://teamid.live" }, "teamid.live")), h("input", { key: '2fe45bcb27fdb9f00680474b7e1cdfc989b0b0f2', id: "login", type: "submit", value: "Login", disabled: !this.canSubmit })));
3341
2279
  }
3342
2280
  handleChange(event) {
3343
2281
  this.validate();
@@ -3425,7 +2363,7 @@ const PosNavigationBar = class {
3425
2363
  }
3426
2364
  }
3427
2365
  render() {
3428
- return (h("form", { key: '2accd6147dcc87fcf5c2dd68b54296297150b75c', onSubmit: e => this.onSubmit(e) }, h("ion-searchbar", { key: 'a10e7d4af946c8676d5568c0756af7b86ce0fc57', enterkeyhint: "search", placeholder: "Search or enter URI", value: this.uri, debounce: 300, onIonChange: e => this.onChange(e), onIonInput: e => this.onChange(e) }), this.suggestions.length > 0 ? (h("div", { class: "suggestions" }, h("ol", null, this.suggestions.map((it, index) => (h("li", { class: index === this.selectedIndex ? 'selected' : '' }, h("pos-rich-link", { uri: it.ref }))))))) : null));
2366
+ return (h("form", { key: '0338ecb2fc05df87b7b1b9b46a3fe60dacf66a3a', onSubmit: e => this.onSubmit(e) }, h("ion-searchbar", { key: '691b8574fb64227895f521d501edd1d670b2cc6a', enterkeyhint: "search", placeholder: "Search or enter URI", value: this.uri, debounce: 300, onIonChange: e => this.onChange(e), onIonInput: e => this.onChange(e) }), this.suggestions.length > 0 ? (h("div", { class: "suggestions" }, h("ol", null, this.suggestions.map((it, index) => (h("li", { class: index === this.selectedIndex ? 'selected' : '' }, h("pos-rich-link", { uri: it.ref }))))))) : null));
3429
2367
  }
3430
2368
  };
3431
2369
  PosNavigationBar.style = PosNavigationBarStyle0;
@@ -3456,7 +2394,7 @@ const PosNewThingForm = class {
3456
2394
  subscribePodOs(this);
3457
2395
  }
3458
2396
  render() {
3459
- return (h("form", { key: '05e374959459dd5b51a8b34625301f3e355aba9a', method: "dialog", onSubmit: e => this.handleSubmit(e) }, h("label", { key: 'f18a7ac3b1d4dcdc28da5761c27405f7302e8f45', htmlFor: "type" }, "Type"), h("pos-select-term", { key: 'fad6874533d45e2539ebc25d6e2ed3aa925477b5', id: "type", placeholder: "", value: this.selectedTypeUri, "onPod-os:term-selected": e => this.onTermSelected(e) }), h("label", { key: 'a0fc71d7a8096ea789a35d61b389a7b96283f5bc', htmlFor: "name" }, "Name"), h("input", { key: 'f405b91039d011e9625495bc7ecaeab98d1da487', id: "name", type: "text", value: this.name, onInput: e => this.handleChange(e) }), this.newUri ? (h("div", { id: "new-uri", title: "This will be the URI of the new thing" }, this.newUri)) : null, h("input", { key: '82204f0a888beca696f5cecececcf2dea64a2eb2', id: "create", type: "submit", value: "Create", disabled: !this.canSubmit })));
2397
+ return (h("form", { key: 'd2e96a0788fc188f5d565a9f7cfd091cac2a50f9', method: "dialog", onSubmit: e => this.handleSubmit(e) }, h("label", { key: '06926ce3e0f9ed415559e05551e12d919fcfb355', htmlFor: "type" }, "Type"), h("pos-select-term", { key: '163341916328a9f18265125c9083afde595c617c', id: "type", placeholder: "", value: this.selectedTypeUri, "onPod-os:term-selected": e => this.onTermSelected(e) }), h("label", { key: 'f80187e539434d239649451da75f7b03a7735c6f', htmlFor: "name" }, "Name"), h("input", { key: '505d645e314a614300ac9e181cf0e9ece5ba564d', id: "name", type: "text", value: this.name, onInput: e => this.handleChange(e) }), this.newUri ? (h("div", { id: "new-uri", title: "This will be the URI of the new thing" }, this.newUri)) : null, h("input", { key: '5dc303fa9b68d363b417c4c6572bf5ff7afbea14', id: "create", type: "submit", value: "Create", disabled: !this.canSubmit })));
3460
2398
  }
3461
2399
  handleChange(event) {
3462
2400
  this.name = event.target.value;
@@ -3593,10 +2531,10 @@ const PosRichLink = class {
3593
2531
  this.uri = undefined;
3594
2532
  }
3595
2533
  render() {
3596
- return (h("a", { key: 'a5e376305dc74372b48c127d8df8d8c6d6c76974', class: "container", href: this.uri, onClick: e => {
2534
+ return (h("a", { key: '478e3fbeac417934283500edff87459f3ad155c9', class: "container", href: this.uri, onClick: e => {
3597
2535
  e.preventDefault();
3598
2536
  this.linkEmitter.emit(this.uri);
3599
- } }, h("pos-resource", { key: 'b9c6c0740fdb6708f386f68cd2506fccf6f1319e', lazy: true, uri: this.uri }, h("p", { key: '2b5e733ac4947ba896cd9aa2d770963067f075b7', class: "content" }, h("pos-label", { key: 'f5b57fbfea27e2b5dd06de89997b300f2788b0f8' }), h("pos-description", { key: '14c379c13217b0a4d96cb6645b24e4eda27cfce1' }), h("a", { key: 'cf29b9c0e4f1e1cc003b9471326c81ba8dee5eec', class: "uri", href: this.uri }, this.uri)))));
2537
+ } }, h("pos-resource", { key: 'c28c929cc2df484cbdf4a071aa2636246eedf6f1', lazy: true, uri: this.uri }, h("p", { key: 'fb9f9211aacfb0d2550ba52d76f32632c7a99a38', class: "content" }, h("pos-label", { key: 'b44b9b7ed43aa889f4c3f706399a9e5de1509fb2' }), h("pos-description", { key: '9db29a285402b80fa18a895bd58996d91d7ea71e' }), h("a", { key: 'd5c7d15883f1b65dc2b6557121ad9439a56ddbd6', class: "uri", href: this.uri }, this.uri)))));
3600
2538
  }
3601
2539
  };
3602
2540
  PosRichLink.style = PosRichLinkStyle0;
@@ -3862,20 +2800,6 @@ const createRouter = (opts) => {
3862
2800
  win.addEventListener('popstate', navigationChanged);
3863
2801
  return router;
3864
2802
  };
3865
- const Route = (props, children) => {
3866
- var _a;
3867
- if ('to' in props) {
3868
- return {
3869
- path: props.path,
3870
- to: props.to,
3871
- };
3872
- }
3873
- return {
3874
- path: props.path,
3875
- id: props.id,
3876
- jsx: (_a = props.render) !== null && _a !== void 0 ? _a : children,
3877
- };
3878
- };
3879
2803
  const matchPath = (pathname, path) => {
3880
2804
  if (typeof path === 'string') {
3881
2805
  if (path === pathname) {
@@ -3903,258 +2827,6 @@ const DEFAULT_PARSE_URL = (url) => {
3903
2827
  return url.pathname.toLowerCase();
3904
2828
  };
3905
2829
 
3906
- /**
3907
- * TS adaption of https://github.com/pillarjs/path-to-regexp/blob/master/index.js
3908
- */
3909
- /**
3910
- * Default configs.
3911
- */
3912
- const DEFAULT_DELIMITER = '/';
3913
- const DEFAULT_DELIMITERS = './';
3914
- /**
3915
- * The main path matching regexp utility.
3916
- */
3917
- const PATH_REGEXP = new RegExp([
3918
- // Match escaped characters that would otherwise appear in future matches.
3919
- // This allows the user to escape special characters that won't transform.
3920
- '(\\\\.)',
3921
- // Match Express-style parameters and un-named parameters with a prefix
3922
- // and optional suffixes. Matches appear as:
3923
- //
3924
- // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?"]
3925
- // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined]
3926
- '(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?'
3927
- ].join('|'), 'g');
3928
- /**
3929
- * Parse a string for the raw tokens.
3930
- */
3931
- const parse = (str, options) => {
3932
- var tokens = [];
3933
- var key = 0;
3934
- var index = 0;
3935
- var path = '';
3936
- var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER;
3937
- var delimiters = (options && options.delimiters) || DEFAULT_DELIMITERS;
3938
- var pathEscaped = false;
3939
- var res;
3940
- while ((res = PATH_REGEXP.exec(str)) !== null) {
3941
- var m = res[0];
3942
- var escaped = res[1];
3943
- var offset = res.index;
3944
- path += str.slice(index, offset);
3945
- index = offset + m.length;
3946
- // Ignore already escaped sequences.
3947
- if (escaped) {
3948
- path += escaped[1];
3949
- pathEscaped = true;
3950
- continue;
3951
- }
3952
- var prev = '';
3953
- var next = str[index];
3954
- var name = res[2];
3955
- var capture = res[3];
3956
- var group = res[4];
3957
- var modifier = res[5];
3958
- if (!pathEscaped && path.length) {
3959
- var k = path.length - 1;
3960
- if (delimiters.indexOf(path[k]) > -1) {
3961
- prev = path[k];
3962
- path = path.slice(0, k);
3963
- }
3964
- }
3965
- // Push the current path onto the tokens.
3966
- if (path) {
3967
- tokens.push(path);
3968
- path = '';
3969
- pathEscaped = false;
3970
- }
3971
- var partial = prev !== '' && next !== undefined && next !== prev;
3972
- var repeat = modifier === '+' || modifier === '*';
3973
- var optional = modifier === '?' || modifier === '*';
3974
- var delimiter = prev || defaultDelimiter;
3975
- var pattern = capture || group;
3976
- tokens.push({
3977
- name: name || key++,
3978
- prefix: prev,
3979
- delimiter: delimiter,
3980
- optional: optional,
3981
- repeat: repeat,
3982
- partial: partial,
3983
- pattern: pattern ? escapeGroup(pattern) : '[^' + escapeString(delimiter) + ']+?'
3984
- });
3985
- }
3986
- // Push any remaining characters.
3987
- if (path || index < str.length) {
3988
- tokens.push(path + str.substr(index));
3989
- }
3990
- return tokens;
3991
- };
3992
- /**
3993
- * Escape a regular expression string.
3994
- */
3995
- const escapeString = (str) => {
3996
- return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, '\\$1');
3997
- };
3998
- /**
3999
- * Escape the capturing group by escaping special characters and meaning.
4000
- */
4001
- const escapeGroup = (group) => {
4002
- return group.replace(/([=!:$/()])/g, '\\$1');
4003
- };
4004
- /**
4005
- * Get the flags for a regexp from the options.
4006
- */
4007
- const flags = (options) => {
4008
- return options && options.sensitive ? '' : 'i';
4009
- };
4010
- /**
4011
- * Pull out keys from a regexp.
4012
- */
4013
- const regexpToRegexp = (path, keys) => {
4014
- if (!keys)
4015
- return path;
4016
- // Use a negative lookahead to match only capturing groups.
4017
- var groups = path.source.match(/\((?!\?)/g);
4018
- if (groups) {
4019
- for (var i = 0; i < groups.length; i++) {
4020
- keys.push({
4021
- name: i,
4022
- prefix: null,
4023
- delimiter: null,
4024
- optional: false,
4025
- repeat: false,
4026
- partial: false,
4027
- pattern: null
4028
- });
4029
- }
4030
- }
4031
- return path;
4032
- };
4033
- /**
4034
- * Transform an array into a regexp.
4035
- */
4036
- const arrayToRegexp = (path, keys, options) => {
4037
- var parts = [];
4038
- for (var i = 0; i < path.length; i++) {
4039
- parts.push(pathToRegexp(path[i], keys, options).source);
4040
- }
4041
- return new RegExp('(?:' + parts.join('|') + ')', flags(options));
4042
- };
4043
- /**
4044
- * Create a path regexp from string input.
4045
- */
4046
- const stringToRegexp = (path, keys, options) => {
4047
- return tokensToRegExp(parse(path, options), keys, options);
4048
- };
4049
- /**
4050
- * Expose a function for taking tokens and returning a RegExp.
4051
- */
4052
- const tokensToRegExp = (tokens, keys, options) => {
4053
- options = options || {};
4054
- var strict = options.strict;
4055
- var end = options.end !== false;
4056
- var delimiter = escapeString(options.delimiter || DEFAULT_DELIMITER);
4057
- var delimiters = options.delimiters || DEFAULT_DELIMITERS;
4058
- var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|');
4059
- var route = '';
4060
- var isEndDelimited = false;
4061
- // Iterate over the tokens and create our regexp string.
4062
- for (var i = 0; i < tokens.length; i++) {
4063
- var token = tokens[i];
4064
- if (typeof token === 'string') {
4065
- route += escapeString(token);
4066
- isEndDelimited = i === tokens.length - 1 && delimiters.indexOf(token[token.length - 1]) > -1;
4067
- }
4068
- else {
4069
- var prefix = escapeString(token.prefix || '');
4070
- var capture = token.repeat
4071
- ? '(?:' + token.pattern + ')(?:' + prefix + '(?:' + token.pattern + '))*'
4072
- : token.pattern;
4073
- if (keys)
4074
- keys.push(token);
4075
- if (token.optional) {
4076
- if (token.partial) {
4077
- route += prefix + '(' + capture + ')?';
4078
- }
4079
- else {
4080
- route += '(?:' + prefix + '(' + capture + '))?';
4081
- }
4082
- }
4083
- else {
4084
- route += prefix + '(' + capture + ')';
4085
- }
4086
- }
4087
- }
4088
- if (end) {
4089
- if (!strict)
4090
- route += '(?:' + delimiter + ')?';
4091
- route += endsWith === '$' ? '$' : '(?=' + endsWith + ')';
4092
- }
4093
- else {
4094
- if (!strict)
4095
- route += '(?:' + delimiter + '(?=' + endsWith + '))?';
4096
- if (!isEndDelimited)
4097
- route += '(?=' + delimiter + '|' + endsWith + ')';
4098
- }
4099
- return new RegExp('^' + route, flags(options));
4100
- };
4101
- /**
4102
- * Normalize the given path string, returning a regular expression.
4103
- *
4104
- * An empty array can be passed in for the keys, which will hold the
4105
- * placeholder key descriptions. For example, using `/user/:id`, `keys` will
4106
- * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
4107
- */
4108
- const pathToRegexp = (path, keys, options) => {
4109
- if (path instanceof RegExp) {
4110
- return regexpToRegexp(path, keys);
4111
- }
4112
- if (Array.isArray(path)) {
4113
- return arrayToRegexp(path, keys, options);
4114
- }
4115
- return stringToRegexp(path, keys, options);
4116
- };
4117
-
4118
- let cacheCount = 0;
4119
- const patternCache = {};
4120
- const cacheLimit = 10000;
4121
- // Memoized function for creating the path match regex
4122
- const compilePath = (pattern, options) => {
4123
- const cacheKey = `${options.end}${options.strict}`;
4124
- const cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});
4125
- const cachePattern = JSON.stringify(pattern);
4126
- if (cache[cachePattern]) {
4127
- return cache[cachePattern];
4128
- }
4129
- const keys = [];
4130
- const re = pathToRegexp(pattern, keys, options);
4131
- const compiledPattern = { re, keys };
4132
- if (cacheCount < cacheLimit) {
4133
- cache[cachePattern] = compiledPattern;
4134
- cacheCount += 1;
4135
- }
4136
- return compiledPattern;
4137
- };
4138
- const match = (pathname, options = {}) => {
4139
- const { exact = false, strict = false } = options;
4140
- const { re, keys } = compilePath(pathname, { end: exact, strict });
4141
- return (path) => {
4142
- const match = re.exec(path);
4143
- if (!match) {
4144
- return undefined;
4145
- }
4146
- const [url, ...values] = match;
4147
- const isExact = path === url;
4148
- if (exact && !isExact) {
4149
- return undefined;
4150
- }
4151
- return keys.reduce((memo, key, index) => {
4152
- memo[key.name] = values[index];
4153
- return memo;
4154
- }, {});
4155
- };
4156
- };
4157
-
4158
2830
  const posRouterCss = ".toolbar{display:flex;flex-direction:row;gap:0;align-items:center;margin-left:0.5rem}pos-navigation-bar{flex-grow:1}";
4159
2831
  const PosRouterStyle0 = posRouterCss;
4160
2832
 
@@ -4162,6 +2834,7 @@ const Router = createRouter();
4162
2834
  const PosRouter = class {
4163
2835
  constructor(hostRef) {
4164
2836
  registerInstance(this, hostRef);
2837
+ this.routeChanged = createEvent(this, "pod-os:route-changed", 7);
4165
2838
  this.uri = undefined;
4166
2839
  }
4167
2840
  linkClicked(e) {
@@ -4181,9 +2854,10 @@ const PosRouter = class {
4181
2854
  }
4182
2855
  updateUri() {
4183
2856
  this.uri = new URLSearchParams(window.location.search).get('uri') || window.location.href;
2857
+ this.routeChanged.emit(this.uri);
4184
2858
  }
4185
2859
  render() {
4186
- return (h(Router.Switch, { key: '57f9081e368822ff79d98945592959d019e578b9' }, h(Route, { key: '9d92bd00f9594c3ecd54ab53ae2bbe68c74894f6', path: match('', { exact: false }) }, h("div", { key: 'a977487e785d053e4599704308fa5baac783c47d', class: "toolbar" }, h("pos-add-new-thing", { key: 'da79e7a8c6c5427437f5b8e4ce386ece5d89c0b8', referenceUri: this.uri }), h("pos-navigation-bar", { key: '9266285b028945079eb3411c00d958a56021dd7e', uri: this.uri })), h("pos-resource", { key: this.uri, uri: this.uri }, h("pos-type-router", { key: '82657153a1d34b49c4e711b348cece4191ad363b' })))));
2860
+ return h("slot", { key: '90cdd039ec5d00643bab4449814cce75e6aef855' });
4187
2861
  }
4188
2862
  };
4189
2863
  PosRouter.style = PosRouterStyle0;
@@ -4214,7 +2888,7 @@ const PosSelectTerm = class {
4214
2888
  this.termSelected.emit({ uri: event.target.value });
4215
2889
  }
4216
2890
  render() {
4217
- return (h(Host, { key: '3e62d57949e8598cb000c62a684d624c0dc44739' }, h("input", { key: '2c09ff6c88c48105ebd6f146b9e724fb113f7523', part: "input", list: "terms", placeholder: this.placeholder, value: this.value, onChange: ev => this.handleChange(ev) }), h("datalist", { key: '1f3e596be54d4e0f055dac00c99742945adee3b1', part: "terms", id: "terms" }, this.terms.map(term => (h("option", { value: term.uri }, term.shorthand))))));
2891
+ return (h(Host, { key: 'e73b3d7cb4dd291555b035c82959978ca0f665f3' }, h("input", { key: '9900762d64d4f7fcb31552e926bf71229e9b8ea4', part: "input", list: "terms", placeholder: this.placeholder, value: this.value, onChange: ev => this.handleChange(ev) }), h("datalist", { key: '71aca3b0d13973ea7e666e04ba09ff0f2d1483b0', part: "terms", id: "terms" }, this.terms.map(term => (h("option", { value: term.uri }, term.shorthand))))));
4218
2892
  }
4219
2893
  static get delegatesFocus() { return true; }
4220
2894
  static get watchers() { return {
@@ -4277,6 +2951,6 @@ const PosTypeRouter = class {
4277
2951
  }
4278
2952
  };
4279
2953
 
4280
- export { App as ion_app, Card as ion_card, CardContent as ion_card_content, CardHeader as ion_card_header, Content as ion_content, Footer as ion_footer, Header as ion_header, Icon as ion_icon, ProgressBar as ion_progress_bar, RippleEffect as ion_ripple_effect, Searchbar as ion_searchbar, SkeletonText as ion_skeleton_text, ToolbarTitle as ion_title, Toolbar as ion_toolbar, PosAddNewThing as pos_add_new_thing, PosApp as pos_app, PosAppBrowser as pos_app_browser, PosDescription as pos_description, PosDialog as pos_dialog, PosErrorToast as pos_error_toast, PosImage as pos_image, PosLabel as pos_label, PosLogin as pos_login, PosLoginForm as pos_login_form, PosNavigationBar as pos_navigation_bar, PosNewThingForm as pos_new_thing_form, PosPicture as pos_picture, PosResource as pos_resource, PosRichLink as pos_rich_link, PosRouter as pos_router, PosSelectTerm as pos_select_term, PosTypeRouter as pos_type_router };
2954
+ export { Card as ion_card, CardContent as ion_card_content, CardHeader as ion_card_header, Icon as ion_icon, ProgressBar as ion_progress_bar, RippleEffect as ion_ripple_effect, Searchbar as ion_searchbar, SkeletonText as ion_skeleton_text, PosAddNewThing as pos_add_new_thing, PosApp as pos_app, PosAppBrowser as pos_app_browser, PosDescription as pos_description, PosDialog as pos_dialog, PosErrorToast as pos_error_toast, PosImage as pos_image, PosLabel as pos_label, PosLogin as pos_login, PosLoginForm as pos_login_form, PosNavigationBar as pos_navigation_bar, PosNewThingForm as pos_new_thing_form, PosPicture as pos_picture, PosResource as pos_resource, PosRichLink as pos_rich_link, PosRouter as pos_router, PosSelectTerm as pos_select_term, PosTypeRouter as pos_type_router };
4281
2955
 
4282
- //# sourceMappingURL=ion-app_32.entry.js.map
2956
+ //# sourceMappingURL=ion-card_26.entry.js.map