@pod-os/elements 0.0.1 → 0.0.2-c322656

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 (483) hide show
  1. package/dist/cjs/{animation-bd89cfc5.js → animation-5840e4df.js} +1 -1
  2. package/dist/cjs/{app-globals-01ad6c72.js → app-globals-8793f3b5.js} +1 -1
  3. package/dist/cjs/{button-active-e6ddc8af.js → button-active-dc62e864.js} +3 -3
  4. package/dist/cjs/{cubic-bezier-24e309bf.js → cubic-bezier-dcb7bfef.js} +0 -0
  5. package/dist/cjs/elements.cjs.js +5 -5
  6. package/dist/cjs/{focus-visible-1583bc8e.js → focus-visible-16c98640.js} +0 -0
  7. package/dist/cjs/{framework-delegate-0a2d58a6.js → framework-delegate-c45292a3.js} +1 -1
  8. package/dist/cjs/{gesture-controller-e824cfb3.js → gesture-controller-fbbe9a65.js} +0 -0
  9. package/dist/cjs/{haptic-415dac5b.js → haptic-09e73337.js} +0 -0
  10. package/dist/cjs/{hardware-back-button-ca468aae.js → hardware-back-button-01027575.js} +0 -0
  11. package/dist/cjs/{helpers-ff618d5e.js → helpers-398ced09.js} +67 -0
  12. package/dist/cjs/{index-6bf2cd3d.js → index-0aae2825.js} +121 -79
  13. package/dist/cjs/{index-427d03fb.js → index-6bbae9b1.js} +0 -0
  14. package/dist/cjs/{index-5663f42c.js → index-b8164b0b.js} +4 -4
  15. package/dist/cjs/{index-5571e89c.js → index-d01d9183.js} +1 -1
  16. package/dist/cjs/{index-b29012b2.js → index-fdf96391.js} +4 -4
  17. package/dist/cjs/{input-shims-23510d35.js → input-shims-e959d9e2.js} +1 -1
  18. package/dist/cjs/ion-action-sheet.cjs.entry.js +13 -13
  19. package/dist/cjs/ion-alert.cjs.entry.js +12 -12
  20. package/dist/cjs/{ion-app_32.cjs.entry.js → ion-app_34.cjs.entry.js} +475 -64
  21. package/dist/cjs/ion-avatar.cjs.entry.js +2 -2
  22. package/dist/cjs/ion-back-button.cjs.entry.js +9 -5
  23. package/dist/cjs/ion-backdrop.cjs.entry.js +3 -3
  24. package/dist/cjs/ion-badge.cjs.entry.js +3 -3
  25. package/dist/cjs/ion-buttons.cjs.entry.js +2 -2
  26. package/dist/cjs/ion-card-subtitle.cjs.entry.js +30 -0
  27. package/dist/cjs/ion-checkbox.cjs.entry.js +4 -4
  28. package/dist/cjs/ion-chip.cjs.entry.js +3 -3
  29. package/dist/cjs/ion-datetime.cjs.entry.js +6 -6
  30. package/dist/cjs/ion-fab-button.cjs.entry.js +3 -3
  31. package/dist/cjs/ion-fab-list.cjs.entry.js +2 -2
  32. package/dist/cjs/ion-fab.cjs.entry.js +2 -2
  33. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  34. package/dist/cjs/ion-infinite-scroll-content.cjs.entry.js +3 -3
  35. package/dist/cjs/ion-infinite-scroll.cjs.entry.js +2 -2
  36. package/dist/cjs/ion-input.cjs.entry.js +5 -5
  37. package/dist/cjs/ion-item-option.cjs.entry.js +3 -3
  38. package/dist/cjs/ion-item-options.cjs.entry.js +3 -3
  39. package/dist/cjs/ion-item-sliding.cjs.entry.js +4 -4
  40. package/dist/cjs/ion-list-header_3.cjs.entry.js +4 -4
  41. package/dist/cjs/ion-loading.cjs.entry.js +8 -8
  42. package/dist/cjs/ion-menu-button.cjs.entry.js +9 -9
  43. package/dist/cjs/ion-menu-toggle.cjs.entry.js +7 -7
  44. package/dist/cjs/ion-menu.cjs.entry.js +117 -13
  45. package/dist/cjs/ion-modal.cjs.entry.js +12 -12
  46. package/dist/cjs/ion-nav-link.cjs.entry.js +1 -1
  47. package/dist/cjs/ion-nav.cjs.entry.js +7 -7
  48. package/dist/cjs/ion-note.cjs.entry.js +3 -3
  49. package/dist/cjs/ion-picker-column.cjs.entry.js +5 -5
  50. package/dist/cjs/ion-picker.cjs.entry.js +7 -7
  51. package/dist/cjs/ion-popover.cjs.entry.js +11 -11
  52. package/dist/cjs/ion-range.cjs.entry.js +6 -6
  53. package/dist/cjs/ion-refresher-content.cjs.entry.js +4 -4
  54. package/dist/cjs/ion-refresher.cjs.entry.js +9 -9
  55. package/dist/cjs/ion-reorder-group.cjs.entry.js +4 -4
  56. package/dist/cjs/ion-reorder.cjs.entry.js +2 -2
  57. package/dist/cjs/ion-route-redirect.cjs.entry.js +1 -1
  58. package/dist/cjs/ion-route.cjs.entry.js +1 -1
  59. package/dist/cjs/ion-router-link.cjs.entry.js +3 -3
  60. package/dist/cjs/ion-router-outlet.cjs.entry.js +7 -7
  61. package/dist/cjs/ion-router.cjs.entry.js +48 -8
  62. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  63. package/dist/cjs/ion-segment-button.cjs.entry.js +4 -4
  64. package/dist/cjs/ion-segment.cjs.entry.js +5 -5
  65. package/dist/cjs/ion-select-option.cjs.entry.js +2 -2
  66. package/dist/cjs/ion-select-popover.cjs.entry.js +6 -6
  67. package/dist/cjs/ion-select.cjs.entry.js +6 -6
  68. package/dist/cjs/ion-skeleton-text.cjs.entry.js +3 -3
  69. package/dist/cjs/ion-slide.cjs.entry.js +2 -2
  70. package/dist/cjs/ion-slides.cjs.entry.js +8 -27
  71. package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
  72. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-tab-bar.cjs.entry.js +3 -3
  74. package/dist/cjs/ion-tab-button.cjs.entry.js +2 -2
  75. package/dist/cjs/ion-tab.cjs.entry.js +3 -3
  76. package/dist/cjs/ion-tabs.cjs.entry.js +1 -1
  77. package/dist/cjs/ion-text.cjs.entry.js +3 -3
  78. package/dist/cjs/ion-textarea.cjs.entry.js +5 -5
  79. package/dist/cjs/ion-thumbnail.cjs.entry.js +2 -2
  80. package/dist/cjs/ion-toast.cjs.entry.js +8 -8
  81. package/dist/cjs/ion-toggle.cjs.entry.js +6 -6
  82. package/dist/cjs/ion-virtual-scroll.cjs.entry.js +2 -2
  83. package/dist/cjs/{ionic-global-167e590d.js → ionic-global-a6599940.js} +1 -1
  84. package/dist/cjs/{ios.transition-2250af96.js → ios.transition-b6fe660c.js} +4 -4
  85. package/dist/cjs/{keyboard-1dcbde6c.js → keyboard-9e8103e4.js} +0 -0
  86. package/dist/cjs/loader.cjs.js +5 -5
  87. package/dist/cjs/{md.transition-e801e09e.js → md.transition-af65cb42.js} +4 -4
  88. package/dist/cjs/{menu-toggle-util-48d3b587.js → menu-toggle-util-e66c2545.js} +1 -1
  89. package/dist/cjs/{overlays-0c3389b6.js → overlays-7d879e64.js} +3 -3
  90. package/dist/cjs/{spinner-configs-559523fd.js → spinner-configs-fb16b986.js} +0 -0
  91. package/dist/cjs/{status-tap-da644888.js → status-tap-869e1b97.js} +2 -2
  92. package/dist/cjs/{swipe-back-a15422cc.js → swipe-back-c4a778df.js} +3 -3
  93. package/dist/cjs/{swiper.bundle-8c897c07.js → swiper.bundle-bcbafede.js} +0 -0
  94. package/dist/cjs/{tap-click-9c4dcea3.js → tap-click-f24cb477.js} +1 -1
  95. package/dist/cjs/{theme-98ccfc24.js → theme-2259d0f5.js} +0 -0
  96. package/dist/collection/apps/pos-app-generic/pos-app-generic.js +21 -0
  97. package/dist/collection/collection-manifest.json +6 -3
  98. package/dist/collection/components/pos-app/pos-app.js +6 -6
  99. package/dist/collection/components/pos-demo-app/pos-demo-app.js +3 -34
  100. package/dist/collection/components/pos-login/pos-login.js +7 -7
  101. package/dist/collection/components/pos-resource/pos-resource.js +6 -3
  102. package/dist/collection/components/pos-reverse-relations/pos-reverse-relations.js +43 -0
  103. package/dist/collection/components/pos-rich-link/pos-rich-link.js +1 -1
  104. package/dist/collection/components/pos-router/pos-router.js +38 -0
  105. package/dist/collection/store/session.js +2 -2
  106. package/dist/collection/test/mockPodOS.js +15 -1
  107. package/dist/custom-elements/index.d.ts +18 -0
  108. package/dist/custom-elements/index.js +879 -242
  109. package/dist/elements/elements.css +1 -1
  110. package/dist/elements/elements.esm.js +1 -1
  111. package/dist/elements/{p-252ee244.entry.js → p-025c9a9b.entry.js} +1 -1
  112. package/dist/elements/p-039fd555.js +1 -0
  113. package/dist/elements/{p-f2660943.js → p-03bda390.js} +0 -0
  114. package/dist/elements/{p-4ea63d49.entry.js → p-03cde843.entry.js} +1 -1
  115. package/dist/elements/p-0452fb27.entry.js +1 -0
  116. package/dist/elements/{p-2bb4eed0.entry.js → p-0931b188.entry.js} +1 -1
  117. package/dist/elements/p-0addb25c.entry.js +1 -0
  118. package/dist/elements/p-10e4ca40.entry.js +1 -0
  119. package/dist/elements/p-12094a99.entry.js +1 -0
  120. package/dist/elements/{p-22c3fe84.js → p-16427279.js} +1 -1
  121. package/dist/elements/{p-35ae10a1.entry.js → p-17758df3.entry.js} +1 -1
  122. package/dist/elements/p-1aa0e849.js +1 -0
  123. package/dist/elements/{p-1672bb59.js → p-1bb1a7ba.js} +1 -1
  124. package/dist/elements/{p-c563b4de.js → p-1d4a2c61.js} +0 -0
  125. package/dist/elements/p-1d8e7db1.entry.js +1 -0
  126. package/dist/elements/{p-073c4b46.entry.js → p-1f6a9d65.entry.js} +1 -1
  127. package/dist/elements/{p-c9c31823.entry.js → p-2145cf89.entry.js} +1 -1
  128. package/dist/elements/{p-d3820644.entry.js → p-22fc3a24.entry.js} +1 -1
  129. package/dist/elements/p-2c2ae808.js +1 -0
  130. package/dist/elements/p-30ceacb9.entry.js +1 -0
  131. package/dist/elements/{p-7dbfc316.js → p-312e6979.js} +0 -0
  132. package/dist/elements/{p-8f72be08.js → p-37de7110.js} +0 -0
  133. package/dist/elements/{p-5dcf40ab.entry.js → p-387aff19.entry.js} +1 -1
  134. package/dist/elements/{p-21a76883.js → p-38bde1d3.js} +1 -1
  135. package/dist/elements/{p-10a1d53e.entry.js → p-3a26e7e5.entry.js} +1 -1
  136. package/dist/elements/{p-b41e0ead.entry.js → p-3e6db2fa.entry.js} +1 -1
  137. package/dist/elements/p-46221508.entry.js +1 -0
  138. package/dist/elements/{p-3bf3b9ee.entry.js → p-4b8b50f2.entry.js} +1 -1
  139. package/dist/elements/{p-b85f2273.entry.js → p-51c7cb3f.entry.js} +1 -1
  140. package/dist/elements/{p-44da9fdb.entry.js → p-5628f80d.entry.js} +1 -1
  141. package/dist/elements/{p-52b26eb1.entry.js → p-57f7c0c2.entry.js} +1 -1
  142. package/dist/elements/{p-37fb0153.entry.js → p-58625104.entry.js} +1 -1
  143. package/dist/elements/p-66bbe62d.entry.js +1 -0
  144. package/dist/elements/{p-7748825d.entry.js → p-671b4546.entry.js} +1 -1
  145. package/dist/elements/p-675e436c.js +1 -0
  146. package/dist/elements/{p-adaf489e.entry.js → p-6e905d35.entry.js} +1 -1
  147. package/dist/elements/p-7003c175.entry.js +1 -0
  148. package/dist/elements/p-7010f947.entry.js +1 -0
  149. package/dist/elements/p-70f5d1c1.entry.js +1 -0
  150. package/dist/elements/p-735719e4.js +1 -0
  151. package/dist/elements/{p-9ab5469e.entry.js → p-78cd25d1.entry.js} +1 -1
  152. package/dist/elements/{p-762052a8.entry.js → p-80adc18b.entry.js} +1 -1
  153. package/dist/elements/{p-58fde612.entry.js → p-8544ef1b.entry.js} +1 -1
  154. package/dist/elements/p-854dbdf1.js +1 -0
  155. package/dist/elements/{p-6428a29b.entry.js → p-856e2a7d.entry.js} +1 -1
  156. package/dist/elements/{p-8fc9298a.js → p-874c2b44.js} +0 -0
  157. package/dist/elements/{p-6c8effa6.entry.js → p-8aaf51be.entry.js} +1 -1
  158. package/dist/elements/{p-cf929f00.entry.js → p-8b372444.entry.js} +1 -1
  159. package/dist/elements/{p-c2396e45.js → p-8d1d6062.js} +1 -1
  160. package/dist/elements/{p-6d0e7670.entry.js → p-8d8e018a.entry.js} +1 -1
  161. package/dist/elements/{p-894597a1.entry.js → p-90ab8eff.entry.js} +1 -1
  162. package/dist/elements/{p-2e4e8117.js → p-91fe653f.js} +0 -0
  163. package/dist/elements/p-92a0735b.js +1 -0
  164. package/dist/elements/{p-f5849699.js → p-98c79eda.js} +1 -1
  165. package/dist/elements/{p-c6685d24.entry.js → p-99837f0d.entry.js} +1 -1
  166. package/dist/elements/{p-0bbdf7ee.entry.js → p-9a05c749.entry.js} +1 -1
  167. package/dist/elements/{p-c358ebf9.entry.js → p-9b2ff01b.entry.js} +1 -1
  168. package/dist/elements/p-9b903903.js +1 -0
  169. package/dist/elements/{p-677eed6e.entry.js → p-a08b2157.entry.js} +1 -1
  170. package/dist/elements/{p-627c2a27.entry.js → p-a0ee39e8.entry.js} +1 -1
  171. package/dist/elements/{p-c46ee782.entry.js → p-a5b00718.entry.js} +1 -1
  172. package/dist/elements/p-a712c2f6.js +2 -0
  173. package/dist/elements/p-a9dafdf2.entry.js +1 -0
  174. package/dist/elements/{p-aef0bba0.js → p-aab0f63c.js} +0 -0
  175. package/dist/elements/{p-670281d8.entry.js → p-b04936a5.entry.js} +1 -1
  176. package/dist/elements/{p-69104d78.entry.js → p-b4ab884c.entry.js} +1 -1
  177. package/dist/elements/{p-559e271a.entry.js → p-b7cd6fef.entry.js} +1 -1
  178. package/dist/elements/p-b84ab0eb.js +1 -0
  179. package/dist/elements/{p-89d2245e.entry.js → p-bcc3c37c.entry.js} +1 -1
  180. package/dist/elements/p-bf5cd642.entry.js +1 -0
  181. package/dist/elements/{p-111520a0.js → p-c1e7fbfb.js} +0 -0
  182. package/dist/elements/p-c3e16816.entry.js +1 -0
  183. package/dist/elements/p-c67ec320.js +1 -0
  184. package/dist/elements/{p-3d2c1009.entry.js → p-c6dbdd06.entry.js} +1 -1
  185. package/dist/elements/{p-73a89fc4.entry.js → p-c7feb66f.entry.js} +1 -1
  186. package/dist/elements/{p-258f83d6.entry.js → p-c8663562.entry.js} +1 -1
  187. package/dist/elements/{p-0773b39d.entry.js → p-c94f01cf.entry.js} +1 -1
  188. package/dist/elements/{p-051e7d1c.entry.js → p-c96b5885.entry.js} +1 -1
  189. package/dist/elements/p-ca395368.entry.js +1 -0
  190. package/dist/elements/{p-417a8dd6.js → p-ca69d6c9.js} +0 -0
  191. package/dist/elements/{p-8f9f5815.entry.js → p-cf79afd2.entry.js} +1 -1
  192. package/dist/elements/{p-7840618d.js → p-cfc0e54d.js} +0 -0
  193. package/dist/elements/{p-20488e32.entry.js → p-d4ac974f.entry.js} +1 -1
  194. package/dist/elements/{p-3d052ec7.entry.js → p-d6012b74.entry.js} +1 -1
  195. package/dist/elements/{p-b5c94073.entry.js → p-d82c8102.entry.js} +1 -1
  196. package/dist/elements/{p-996d272b.entry.js → p-d9570980.entry.js} +1 -1
  197. package/dist/elements/{p-e4cd9daa.entry.js → p-da1d4d15.entry.js} +1 -1
  198. package/dist/elements/p-e8b8da88.entry.js +1 -0
  199. package/dist/elements/{p-7735ce2a.js → p-ec47a369.js} +1 -1
  200. package/dist/elements/{p-39e69ceb.entry.js → p-f35bc63b.entry.js} +1 -1
  201. package/dist/elements/{p-d7bc38e3.entry.js → p-f4120adc.entry.js} +1 -1
  202. package/dist/elements/p-f5b9742c.js +1 -0
  203. package/dist/elements/{p-5e6fdd4f.entry.js → p-f91f59f9.entry.js} +1 -1
  204. package/dist/esm/{animation-23699cc5.js → animation-cb124ae5.js} +1 -1
  205. package/dist/esm/{app-globals-b3330c28.js → app-globals-6c3cceb6.js} +1 -1
  206. package/dist/esm/{button-active-8918719c.js → button-active-1cd0f291.js} +3 -3
  207. package/dist/esm/{cubic-bezier-ed243a9b.js → cubic-bezier-108b8579.js} +0 -0
  208. package/dist/esm/elements.js +5 -5
  209. package/dist/esm/{focus-visible-abf04ce3.js → focus-visible-edb28f19.js} +0 -0
  210. package/dist/esm/{framework-delegate-0a271c52.js → framework-delegate-ef487ffc.js} +1 -1
  211. package/dist/esm/{gesture-controller-604336b7.js → gesture-controller-8f35af24.js} +0 -0
  212. package/dist/esm/{haptic-67928174.js → haptic-c424e670.js} +0 -0
  213. package/dist/esm/{hardware-back-button-508e48cf.js → hardware-back-button-bb4c578a.js} +0 -0
  214. package/dist/esm/{helpers-dffac6f7.js → helpers-af16fc18.js} +67 -1
  215. package/dist/esm/{index-82f710ea.js → index-082b47ce.js} +121 -79
  216. package/dist/esm/{index-f910ce2c.js → index-178a7a06.js} +4 -4
  217. package/dist/esm/{index-51ec9e66.js → index-3a1bd803.js} +2 -2
  218. package/dist/esm/{index-cc97b114.js → index-8d682224.js} +0 -0
  219. package/dist/esm/{index-db7c08b4.js → index-edb45c26.js} +4 -4
  220. package/dist/esm/{input-shims-9c0b3bc9.js → input-shims-dbfbbeff.js} +1 -1
  221. package/dist/esm/ion-action-sheet.entry.js +13 -13
  222. package/dist/esm/ion-alert.entry.js +12 -12
  223. package/dist/esm/{ion-app_32.entry.js → ion-app_34.entry.js} +471 -62
  224. package/dist/esm/ion-avatar.entry.js +2 -2
  225. package/dist/esm/ion-back-button.entry.js +9 -5
  226. package/dist/esm/ion-backdrop.entry.js +3 -3
  227. package/dist/esm/ion-badge.entry.js +3 -3
  228. package/dist/esm/ion-buttons.entry.js +2 -2
  229. package/dist/esm/ion-card-subtitle.entry.js +26 -0
  230. package/dist/esm/ion-checkbox.entry.js +4 -4
  231. package/dist/esm/ion-chip.entry.js +3 -3
  232. package/dist/esm/ion-datetime.entry.js +6 -6
  233. package/dist/esm/ion-fab-button.entry.js +3 -3
  234. package/dist/esm/ion-fab-list.entry.js +2 -2
  235. package/dist/esm/ion-fab.entry.js +2 -2
  236. package/dist/esm/ion-img.entry.js +2 -2
  237. package/dist/esm/ion-infinite-scroll-content.entry.js +3 -3
  238. package/dist/esm/ion-infinite-scroll.entry.js +2 -2
  239. package/dist/esm/ion-input.entry.js +5 -5
  240. package/dist/esm/ion-item-option.entry.js +3 -3
  241. package/dist/esm/ion-item-options.entry.js +3 -3
  242. package/dist/esm/ion-item-sliding.entry.js +4 -4
  243. package/dist/esm/ion-list-header_3.entry.js +4 -4
  244. package/dist/esm/ion-loading.entry.js +8 -8
  245. package/dist/esm/ion-menu-button.entry.js +9 -9
  246. package/dist/esm/ion-menu-toggle.entry.js +7 -7
  247. package/dist/esm/ion-menu.entry.js +117 -13
  248. package/dist/esm/ion-modal.entry.js +12 -12
  249. package/dist/esm/ion-nav-link.entry.js +1 -1
  250. package/dist/esm/ion-nav.entry.js +7 -7
  251. package/dist/esm/ion-note.entry.js +3 -3
  252. package/dist/esm/ion-picker-column.entry.js +5 -5
  253. package/dist/esm/ion-picker.entry.js +7 -7
  254. package/dist/esm/ion-popover.entry.js +11 -11
  255. package/dist/esm/ion-range.entry.js +6 -6
  256. package/dist/esm/ion-refresher-content.entry.js +4 -4
  257. package/dist/esm/ion-refresher.entry.js +9 -9
  258. package/dist/esm/ion-reorder-group.entry.js +4 -4
  259. package/dist/esm/ion-reorder.entry.js +2 -2
  260. package/dist/esm/ion-route-redirect.entry.js +1 -1
  261. package/dist/esm/ion-route.entry.js +1 -1
  262. package/dist/esm/ion-router-link.entry.js +3 -3
  263. package/dist/esm/ion-router-outlet.entry.js +7 -7
  264. package/dist/esm/ion-router.entry.js +48 -8
  265. package/dist/esm/ion-searchbar.entry.js +4 -4
  266. package/dist/esm/ion-segment-button.entry.js +4 -4
  267. package/dist/esm/ion-segment.entry.js +5 -5
  268. package/dist/esm/ion-select-option.entry.js +2 -2
  269. package/dist/esm/ion-select-popover.entry.js +6 -6
  270. package/dist/esm/ion-select.entry.js +6 -6
  271. package/dist/esm/ion-skeleton-text.entry.js +3 -3
  272. package/dist/esm/ion-slide.entry.js +2 -2
  273. package/dist/esm/ion-slides.entry.js +8 -27
  274. package/dist/esm/ion-spinner.entry.js +4 -4
  275. package/dist/esm/ion-split-pane.entry.js +2 -2
  276. package/dist/esm/ion-tab-bar.entry.js +3 -3
  277. package/dist/esm/ion-tab-button.entry.js +2 -2
  278. package/dist/esm/ion-tab.entry.js +3 -3
  279. package/dist/esm/ion-tabs.entry.js +1 -1
  280. package/dist/esm/ion-text.entry.js +3 -3
  281. package/dist/esm/ion-textarea.entry.js +5 -5
  282. package/dist/esm/ion-thumbnail.entry.js +2 -2
  283. package/dist/esm/ion-toast.entry.js +8 -8
  284. package/dist/esm/ion-toggle.entry.js +6 -6
  285. package/dist/esm/ion-virtual-scroll.entry.js +2 -2
  286. package/dist/esm/{ionic-global-fadc16f8.js → ionic-global-b8056dd2.js} +1 -1
  287. package/dist/esm/{ios.transition-dd5b9636.js → ios.transition-ab339f2c.js} +4 -4
  288. package/dist/esm/{keyboard-06906eac.js → keyboard-e6abcb80.js} +0 -0
  289. package/dist/esm/loader.js +5 -5
  290. package/dist/esm/{md.transition-6a0a5df0.js → md.transition-1ed7c8eb.js} +4 -4
  291. package/dist/esm/{menu-toggle-util-0e5e4140.js → menu-toggle-util-d2db3453.js} +1 -1
  292. package/dist/esm/{overlays-6a09f1ef.js → overlays-423fcd0a.js} +3 -3
  293. package/dist/esm/polyfills/core-js.js +0 -0
  294. package/dist/esm/polyfills/css-shim.js +1 -1
  295. package/dist/esm/polyfills/dom.js +0 -0
  296. package/dist/esm/polyfills/es5-html-element.js +0 -0
  297. package/dist/esm/polyfills/index.js +0 -0
  298. package/dist/esm/polyfills/system.js +0 -0
  299. package/dist/esm/{spinner-configs-9536fae2.js → spinner-configs-aaf2a1a9.js} +0 -0
  300. package/dist/esm/{status-tap-54b1c888.js → status-tap-3e0a5551.js} +2 -2
  301. package/dist/esm/{swipe-back-5459ab3a.js → swipe-back-7e655479.js} +3 -3
  302. package/dist/esm/{swiper.bundle-b6a959de.js → swiper.bundle-2dd16264.js} +0 -0
  303. package/dist/esm/{tap-click-e0215d5a.js → tap-click-faa3d392.js} +1 -1
  304. package/dist/esm/{theme-12606872.js → theme-d21826a7.js} +0 -0
  305. package/dist/types/apps/pos-app-generic/pos-app-generic.d.ts +3 -0
  306. package/dist/types/components/pos-app/pos-app.d.ts +2 -2
  307. package/dist/types/components/pos-demo-app/pos-demo-app.d.ts +0 -2
  308. package/dist/types/components/pos-login/pos-login.d.ts +1 -1
  309. package/dist/types/components/pos-resource/pos-resource.d.ts +1 -1
  310. package/dist/types/components/pos-reverse-relations/pos-reverse-relations.d.ts +8 -0
  311. package/dist/types/components/pos-rich-link/pos-rich-link.d.ts +1 -1
  312. package/dist/types/components/pos-router/pos-router.d.ts +8 -0
  313. package/dist/types/components.d.ts +79 -7
  314. package/dist/types/stencil-public-runtime.d.ts +6 -4
  315. package/dist/types/store/session.d.ts +3 -3
  316. package/dist/types/test/mockPodOS.d.ts +1 -0
  317. package/loader/index.d.ts +0 -1
  318. package/package.json +19 -10
  319. package/readme.md +9 -64
  320. package/dist/elements/p-0ce985f2.entry.js +0 -1
  321. package/dist/elements/p-2ae62ee2.entry.js +0 -1
  322. package/dist/elements/p-3783db21.entry.js +0 -1
  323. package/dist/elements/p-3eb3ceda.js +0 -1
  324. package/dist/elements/p-4261cf00.entry.js +0 -1
  325. package/dist/elements/p-4e81f5a3.js +0 -1
  326. package/dist/elements/p-4f428fec.js +0 -1
  327. package/dist/elements/p-514a156e.entry.js +0 -1
  328. package/dist/elements/p-64fbf059.entry.js +0 -1
  329. package/dist/elements/p-6f125c33.entry.js +0 -1
  330. package/dist/elements/p-7e4727c5.entry.js +0 -1
  331. package/dist/elements/p-825cd4a4.js +0 -1
  332. package/dist/elements/p-8e7bb098.js +0 -1
  333. package/dist/elements/p-94ccf933.js +0 -1
  334. package/dist/elements/p-974e28d1.entry.js +0 -1
  335. package/dist/elements/p-a856c740.entry.js +0 -1
  336. package/dist/elements/p-aae3bbd8.js +0 -1
  337. package/dist/elements/p-bc8ab428.entry.js +0 -1
  338. package/dist/elements/p-cb3dd05c.entry.js +0 -1
  339. package/dist/elements/p-cd151f5b.js +0 -1
  340. package/dist/elements/p-cd981ec5.js +0 -1
  341. package/dist/elements/p-d9cf0163.js +0 -1
  342. package/dist/elements/p-db2e69b4.js +0 -1
  343. package/dist/elements/p-deec7dde.entry.js +0 -1
  344. package/dist/elements/p-e110bbef.entry.js +0 -1
  345. package/dist/elements/p-f8e7eda0.js +0 -1
  346. package/dist/elements/p-fba364fd.entry.js +0 -1
  347. package/dist/node_modules/@ionic/core/dist/collection/components/action-sheet/action-sheet.ios.css +0 -371
  348. package/dist/node_modules/@ionic/core/dist/collection/components/action-sheet/action-sheet.md.css +0 -287
  349. package/dist/node_modules/@ionic/core/dist/collection/components/alert/alert.ios.css +0 -494
  350. package/dist/node_modules/@ionic/core/dist/collection/components/alert/alert.md.css +0 -502
  351. package/dist/node_modules/@ionic/core/dist/collection/components/app/app.css +0 -17
  352. package/dist/node_modules/@ionic/core/dist/collection/components/avatar/avatar.ios.css +0 -22
  353. package/dist/node_modules/@ionic/core/dist/collection/components/avatar/avatar.md.css +0 -22
  354. package/dist/node_modules/@ionic/core/dist/collection/components/back-button/back-button.ios.css +0 -281
  355. package/dist/node_modules/@ionic/core/dist/collection/components/back-button/back-button.md.css +0 -309
  356. package/dist/node_modules/@ionic/core/dist/collection/components/backdrop/backdrop.ios.css +0 -26
  357. package/dist/node_modules/@ionic/core/dist/collection/components/backdrop/backdrop.md.css +0 -26
  358. package/dist/node_modules/@ionic/core/dist/collection/components/badge/badge.ios.css +0 -58
  359. package/dist/node_modules/@ionic/core/dist/collection/components/badge/badge.md.css +0 -62
  360. package/dist/node_modules/@ionic/core/dist/collection/components/button/button.ios.css +0 -439
  361. package/dist/node_modules/@ionic/core/dist/collection/components/button/button.md.css +0 -428
  362. package/dist/node_modules/@ionic/core/dist/collection/components/buttons/buttons.ios.css +0 -128
  363. package/dist/node_modules/@ionic/core/dist/collection/components/buttons/buttons.md.css +0 -151
  364. package/dist/node_modules/@ionic/core/dist/collection/components/card/card.ios.css +0 -101
  365. package/dist/node_modules/@ionic/core/dist/collection/components/card/card.md.css +0 -95
  366. package/dist/node_modules/@ionic/core/dist/collection/components/card-content/card-content.ios.css +0 -61
  367. package/dist/node_modules/@ionic/core/dist/collection/components/card-content/card-content.md.css +0 -63
  368. package/dist/node_modules/@ionic/core/dist/collection/components/card-header/card-header.ios.css +0 -37
  369. package/dist/node_modules/@ionic/core/dist/collection/components/card-header/card-header.md.css +0 -35
  370. package/dist/node_modules/@ionic/core/dist/collection/components/card-subtitle/card-subtitle.ios.css +0 -28
  371. package/dist/node_modules/@ionic/core/dist/collection/components/card-subtitle/card-subtitle.md.css +0 -26
  372. package/dist/node_modules/@ionic/core/dist/collection/components/card-title/card-title.ios.css +0 -27
  373. package/dist/node_modules/@ionic/core/dist/collection/components/card-title/card-title.md.css +0 -27
  374. package/dist/node_modules/@ionic/core/dist/collection/components/checkbox/checkbox.ios.css +0 -169
  375. package/dist/node_modules/@ionic/core/dist/collection/components/checkbox/checkbox.md.css +0 -172
  376. package/dist/node_modules/@ionic/core/dist/collection/components/chip/chip.ios.css +0 -200
  377. package/dist/node_modules/@ionic/core/dist/collection/components/chip/chip.md.css +0 -200
  378. package/dist/node_modules/@ionic/core/dist/collection/components/col/col.css +0 -108
  379. package/dist/node_modules/@ionic/core/dist/collection/components/content/content.css +0 -184
  380. package/dist/node_modules/@ionic/core/dist/collection/components/datetime/datetime.ios.css +0 -106
  381. package/dist/node_modules/@ionic/core/dist/collection/components/datetime/datetime.md.css +0 -106
  382. package/dist/node_modules/@ionic/core/dist/collection/components/fab/fab.css +0 -61
  383. package/dist/node_modules/@ionic/core/dist/collection/components/fab-button/fab-button.ios.css +0 -338
  384. package/dist/node_modules/@ionic/core/dist/collection/components/fab-button/fab-button.md.css +0 -307
  385. package/dist/node_modules/@ionic/core/dist/collection/components/fab-list/fab-list.css +0 -116
  386. package/dist/node_modules/@ionic/core/dist/collection/components/footer/footer.ios.css +0 -33
  387. package/dist/node_modules/@ionic/core/dist/collection/components/footer/footer.md.css +0 -37
  388. package/dist/node_modules/@ionic/core/dist/collection/components/grid/grid.css +0 -151
  389. package/dist/node_modules/@ionic/core/dist/collection/components/header/header.ios.css +0 -92
  390. package/dist/node_modules/@ionic/core/dist/collection/components/header/header.md.css +0 -40
  391. package/dist/node_modules/@ionic/core/dist/collection/components/img/img.css +0 -12
  392. package/dist/node_modules/@ionic/core/dist/collection/components/infinite-scroll/infinite-scroll.css +0 -8
  393. package/dist/node_modules/@ionic/core/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +0 -54
  394. package/dist/node_modules/@ionic/core/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +0 -54
  395. package/dist/node_modules/@ionic/core/dist/collection/components/input/input.ios.css +0 -185
  396. package/dist/node_modules/@ionic/core/dist/collection/components/input/input.md.css +0 -185
  397. package/dist/node_modules/@ionic/core/dist/collection/components/item/item.ios.css +0 -580
  398. package/dist/node_modules/@ionic/core/dist/collection/components/item/item.md.css +0 -654
  399. package/dist/node_modules/@ionic/core/dist/collection/components/item-divider/item-divider.ios.css +0 -204
  400. package/dist/node_modules/@ionic/core/dist/collection/components/item-divider/item-divider.md.css +0 -297
  401. package/dist/node_modules/@ionic/core/dist/collection/components/item-group/item-group.ios.css +0 -3
  402. package/dist/node_modules/@ionic/core/dist/collection/components/item-group/item-group.md.css +0 -3
  403. package/dist/node_modules/@ionic/core/dist/collection/components/item-option/item-option.ios.css +0 -186
  404. package/dist/node_modules/@ionic/core/dist/collection/components/item-option/item-option.md.css +0 -180
  405. package/dist/node_modules/@ionic/core/dist/collection/components/item-options/item-options.ios.css +0 -88
  406. package/dist/node_modules/@ionic/core/dist/collection/components/item-options/item-options.md.css +0 -85
  407. package/dist/node_modules/@ionic/core/dist/collection/components/item-sliding/item-sliding.css +0 -42
  408. package/dist/node_modules/@ionic/core/dist/collection/components/label/label.ios.css +0 -156
  409. package/dist/node_modules/@ionic/core/dist/collection/components/label/label.md.css +0 -172
  410. package/dist/node_modules/@ionic/core/dist/collection/components/list/list.ios.css +0 -91
  411. package/dist/node_modules/@ionic/core/dist/collection/components/list/list.md.css +0 -114
  412. package/dist/node_modules/@ionic/core/dist/collection/components/list-header/list-header.ios.css +0 -118
  413. package/dist/node_modules/@ionic/core/dist/collection/components/list-header/list-header.md.css +0 -94
  414. package/dist/node_modules/@ionic/core/dist/collection/components/loading/loading.ios.css +0 -114
  415. package/dist/node_modules/@ionic/core/dist/collection/components/loading/loading.md.css +0 -105
  416. package/dist/node_modules/@ionic/core/dist/collection/components/menu/menu.ios.css +0 -131
  417. package/dist/node_modules/@ionic/core/dist/collection/components/menu/menu.md.css +0 -127
  418. package/dist/node_modules/@ionic/core/dist/collection/components/menu-button/menu-button.ios.css +0 -175
  419. package/dist/node_modules/@ionic/core/dist/collection/components/menu-button/menu-button.md.css +0 -178
  420. package/dist/node_modules/@ionic/core/dist/collection/components/menu-toggle/menu-toggle.css +0 -3
  421. package/dist/node_modules/@ionic/core/dist/collection/components/modal/modal.ios.css +0 -159
  422. package/dist/node_modules/@ionic/core/dist/collection/components/modal/modal.md.css +0 -105
  423. package/dist/node_modules/@ionic/core/dist/collection/components/nav/nav.css +0 -10
  424. package/dist/node_modules/@ionic/core/dist/collection/components/note/note.ios.css +0 -16
  425. package/dist/node_modules/@ionic/core/dist/collection/components/note/note.md.css +0 -17
  426. package/dist/node_modules/@ionic/core/dist/collection/components/picker/picker.ios.css +0 -217
  427. package/dist/node_modules/@ionic/core/dist/collection/components/picker/picker.md.css +0 -204
  428. package/dist/node_modules/@ionic/core/dist/collection/components/picker-column/picker-column.ios.css +0 -122
  429. package/dist/node_modules/@ionic/core/dist/collection/components/picker-column/picker-column.md.css +0 -123
  430. package/dist/node_modules/@ionic/core/dist/collection/components/popover/popover.ios.css +0 -118
  431. package/dist/node_modules/@ionic/core/dist/collection/components/popover/popover.md.css +0 -83
  432. package/dist/node_modules/@ionic/core/dist/collection/components/progress-bar/progress-bar.ios.css +0 -206
  433. package/dist/node_modules/@ionic/core/dist/collection/components/progress-bar/progress-bar.md.css +0 -206
  434. package/dist/node_modules/@ionic/core/dist/collection/components/radio/radio.ios.css +0 -177
  435. package/dist/node_modules/@ionic/core/dist/collection/components/radio/radio.md.css +0 -178
  436. package/dist/node_modules/@ionic/core/dist/collection/components/range/range.ios.css +0 -275
  437. package/dist/node_modules/@ionic/core/dist/collection/components/range/range.md.css +0 -320
  438. package/dist/node_modules/@ionic/core/dist/collection/components/refresher/refresher.ios.css +0 -177
  439. package/dist/node_modules/@ionic/core/dist/collection/components/refresher/refresher.md.css +0 -210
  440. package/dist/node_modules/@ionic/core/dist/collection/components/reorder/reorder.ios.css +0 -15
  441. package/dist/node_modules/@ionic/core/dist/collection/components/reorder/reorder.md.css +0 -15
  442. package/dist/node_modules/@ionic/core/dist/collection/components/reorder-group/reorder-group.css +0 -33
  443. package/dist/node_modules/@ionic/core/dist/collection/components/ripple-effect/ripple-effect.css +0 -58
  444. package/dist/node_modules/@ionic/core/dist/collection/components/router-link/router-link.css +0 -29
  445. package/dist/node_modules/@ionic/core/dist/collection/components/router-outlet/route-outlet.css +0 -10
  446. package/dist/node_modules/@ionic/core/dist/collection/components/row/row.css +0 -4
  447. package/dist/node_modules/@ionic/core/dist/collection/components/searchbar/searchbar.ios.css +0 -348
  448. package/dist/node_modules/@ionic/core/dist/collection/components/searchbar/searchbar.md.css +0 -279
  449. package/dist/node_modules/@ionic/core/dist/collection/components/segment/segment.ios.css +0 -65
  450. package/dist/node_modules/@ionic/core/dist/collection/components/segment/segment.md.css +0 -36
  451. package/dist/node_modules/@ionic/core/dist/collection/components/segment-button/segment-button.ios.css +0 -446
  452. package/dist/node_modules/@ionic/core/dist/collection/components/segment-button/segment-button.md.css +0 -424
  453. package/dist/node_modules/@ionic/core/dist/collection/components/select/select.ios.css +0 -145
  454. package/dist/node_modules/@ionic/core/dist/collection/components/select/select.md.css +0 -149
  455. package/dist/node_modules/@ionic/core/dist/collection/components/select-option/select-option.css +0 -3
  456. package/dist/node_modules/@ionic/core/dist/collection/components/select-popover/select-popover.css +0 -14
  457. package/dist/node_modules/@ionic/core/dist/collection/components/skeleton-text/skeleton-text.css +0 -53
  458. package/dist/node_modules/@ionic/core/dist/collection/components/slide/slide.css +0 -31
  459. package/dist/node_modules/@ionic/core/dist/collection/components/slides/slides.ios.css +0 -764
  460. package/dist/node_modules/@ionic/core/dist/collection/components/slides/slides.md.css +0 -764
  461. package/dist/node_modules/@ionic/core/dist/collection/components/spinner/spinner.css +0 -154
  462. package/dist/node_modules/@ionic/core/dist/collection/components/split-pane/split-pane.ios.css +0 -108
  463. package/dist/node_modules/@ionic/core/dist/collection/components/split-pane/split-pane.md.css +0 -108
  464. package/dist/node_modules/@ionic/core/dist/collection/components/tab/tab.css +0 -4
  465. package/dist/node_modules/@ionic/core/dist/collection/components/tab-bar/tab-bar.ios.css +0 -97
  466. package/dist/node_modules/@ionic/core/dist/collection/components/tab-bar/tab-bar.md.css +0 -82
  467. package/dist/node_modules/@ionic/core/dist/collection/components/tab-button/tab-button.ios.css +0 -308
  468. package/dist/node_modules/@ionic/core/dist/collection/components/tab-button/tab-button.md.css +0 -331
  469. package/dist/node_modules/@ionic/core/dist/collection/components/tabs/tabs.css +0 -19
  470. package/dist/node_modules/@ionic/core/dist/collection/components/text/text.css +0 -3
  471. package/dist/node_modules/@ionic/core/dist/collection/components/textarea/textarea.ios.css +0 -158
  472. package/dist/node_modules/@ionic/core/dist/collection/components/textarea/textarea.md.css +0 -162
  473. package/dist/node_modules/@ionic/core/dist/collection/components/thumbnail/thumbnail.css +0 -21
  474. package/dist/node_modules/@ionic/core/dist/collection/components/title/title.ios.css +0 -122
  475. package/dist/node_modules/@ionic/core/dist/collection/components/title/title.md.css +0 -55
  476. package/dist/node_modules/@ionic/core/dist/collection/components/toast/toast.ios.css +0 -250
  477. package/dist/node_modules/@ionic/core/dist/collection/components/toast/toast.md.css +0 -283
  478. package/dist/node_modules/@ionic/core/dist/collection/components/toggle/toggle.ios.css +0 -237
  479. package/dist/node_modules/@ionic/core/dist/collection/components/toggle/toggle.md.css +0 -234
  480. package/dist/node_modules/@ionic/core/dist/collection/components/toolbar/toolbar.ios.css +0 -174
  481. package/dist/node_modules/@ionic/core/dist/collection/components/toolbar/toolbar.md.css +0 -167
  482. package/dist/node_modules/@ionic/core/dist/collection/components/virtual-scroll/virtual-scroll.css +0 -21
  483. package/dist/node_modules/ionicons/dist/collection/components/icon/icon.css +0 -101
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-6bf2cd3d.js');
6
- const ionicGlobal = require('./ionic-global-167e590d.js');
7
- const helpers = require('./helpers-ff618d5e.js');
8
- const theme = require('./theme-98ccfc24.js');
5
+ const index = require('./index-0aae2825.js');
6
+ const ionicGlobal = require('./ionic-global-a6599940.js');
7
+ const helpers = require('./helpers-398ced09.js');
8
+ const theme = require('./theme-2259d0f5.js');
9
9
 
10
10
  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}";
11
11
 
@@ -18,15 +18,15 @@ const App = class {
18
18
  rIC(async () => {
19
19
  const isHybrid = ionicGlobal.isPlatform(window, 'hybrid');
20
20
  if (!ionicGlobal.config.getBoolean('_testing')) {
21
- Promise.resolve().then(function () { return require('./tap-click-9c4dcea3.js'); }).then(module => module.startTapClick(ionicGlobal.config));
21
+ Promise.resolve().then(function () { return require('./tap-click-f24cb477.js'); }).then(module => module.startTapClick(ionicGlobal.config));
22
22
  }
23
23
  if (ionicGlobal.config.getBoolean('statusTap', isHybrid)) {
24
- Promise.resolve().then(function () { return require('./status-tap-da644888.js'); }).then(module => module.startStatusTap());
24
+ Promise.resolve().then(function () { return require('./status-tap-869e1b97.js'); }).then(module => module.startStatusTap());
25
25
  }
26
26
  if (ionicGlobal.config.getBoolean('inputShims', needInputShims())) {
27
- Promise.resolve().then(function () { return require('./input-shims-23510d35.js'); }).then(module => module.startInputShims(ionicGlobal.config));
27
+ Promise.resolve().then(function () { return require('./input-shims-e959d9e2.js'); }).then(module => module.startInputShims(ionicGlobal.config));
28
28
  }
29
- const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-ca468aae.js'); });
29
+ const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-01027575.js'); });
30
30
  if (ionicGlobal.config.getBoolean('hardwareBackButton', isHybrid)) {
31
31
  hardwareBackButtonModule.startHardwareBackButton();
32
32
  }
@@ -34,9 +34,9 @@ const App = class {
34
34
  hardwareBackButtonModule.blockHardwareBackButton();
35
35
  }
36
36
  if (typeof window !== 'undefined') {
37
- Promise.resolve().then(function () { return require('./keyboard-1dcbde6c.js'); }).then(module => module.startKeyboardAssist(window));
37
+ Promise.resolve().then(function () { return require('./keyboard-9e8103e4.js'); }).then(module => module.startKeyboardAssist(window));
38
38
  }
39
- Promise.resolve().then(function () { return require('./focus-visible-1583bc8e.js'); }).then(module => module.startFocusVisible());
39
+ Promise.resolve().then(function () { return require('./focus-visible-16c98640.js'); }).then(module => module.startFocusVisible());
40
40
  });
41
41
  }
42
42
  }
@@ -128,7 +128,7 @@ const Button = class {
128
128
  this.inToolbar = !!this.el.closest('ion-buttons');
129
129
  this.inListHeader = !!this.el.closest('ion-list-header');
130
130
  this.inItem = !!this.el.closest('ion-item') || !!this.el.closest('ion-item-divider');
131
- this.inheritedAttributes = helpers.inheritAttributes(this.el, ['aria-label']);
131
+ this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
132
132
  }
133
133
  get hasIconOnly() {
134
134
  return !!this.el.querySelector('[slot="icon-only"]');
@@ -293,27 +293,6 @@ CardHeader.style = {
293
293
  md: cardHeaderMdCss
294
294
  };
295
295
 
296
- const cardSubtitleIosCss = ":host{display:block;position:relative;color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}:host{--color:var(--ion-color-step-600, #666666);margin-left:0;margin-right:0;margin-top:0;margin-bottom:4px;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-size:12px;font-weight:700;letter-spacing:0.4px;text-transform:uppercase}";
297
-
298
- const cardSubtitleMdCss = ":host{display:block;position:relative;color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}:host{--color:var(--ion-color-step-550, #737373);margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-size:14px;font-weight:500}";
299
-
300
- const CardSubtitle = class {
301
- constructor(hostRef) {
302
- index.registerInstance(this, hostRef);
303
- }
304
- render() {
305
- const mode = ionicGlobal.getIonMode(this);
306
- return (index.h(index.Host, { role: "heading", "aria-level": "3", class: theme.createColorClasses(this.color, {
307
- 'ion-inherit-color': true,
308
- [mode]: true
309
- }) }, index.h("slot", null)));
310
- }
311
- };
312
- CardSubtitle.style = {
313
- ios: cardSubtitleIosCss,
314
- md: cardSubtitleMdCss
315
- };
316
-
317
296
  const cardTitleIosCss = ":host{display:block;position:relative;color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}:host{--color:var(--ion-text-color, #000);margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-size:28px;font-weight:700;line-height:1.2}";
318
297
 
319
298
  const cardTitleMdCss = ":host{display:block;position:relative;color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}:host{--color:var(--ion-color-step-850, #262626);margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-size:20px;font-weight:500;line-height:1.2}";
@@ -445,7 +424,7 @@ const Col = class {
445
424
  };
446
425
  Col.style = colCss;
447
426
 
448
- 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);padding-left:var(--padding-start);padding-right: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}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.inner-scroll{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{touch-action:pan-y;overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{touch-action:pan-x;overflow-x:var(--overflow);overscroll-behavior-x:contain}.scroll-x.scroll-y{touch-action:auto}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:\"\"}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){contain:none}:host(.content-sizing) .inner-scroll{position:relative}.transition-effect{display:none;position:absolute;left:-100%;width:100%;height:100vh;opacity:0;pointer-events:none}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;right:0;width:10px;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAgCAYAAAAIXrg4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTE3MDgzRkQ5QTkyMTFFOUEwNzQ5MkJFREE1NUY2MjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTE3MDgzRkU5QTkyMTFFOUEwNzQ5MkJFREE1NUY2MjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxMTcwODNGQjlBOTIxMUU5QTA3NDkyQkVEQTU1RjYyNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMTcwODNGQzlBOTIxMUU5QTA3NDkyQkVEQTU1RjYyNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmePEuQAAABNSURBVHjaYvz//z8DIxAwMDAwATGMhmFmPDQuOSZks0AMmoJBaQHjkPfB0Lfg/2gQjVow+HPy/yHvg9GiYjQfjMbBqAWjFgy/4hogwADYqwdzxy5BuwAAAABJRU5ErkJggg==);background-repeat:repeat-y;background-size:10px 16px}::slotted([slot=fixed]){position:absolute}";
427
+ 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);padding-left:var(--padding-start);padding-right: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}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.inner-scroll{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{touch-action:pan-y;overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{touch-action:pan-x;overflow-x:var(--overflow);overscroll-behavior-x:contain}.scroll-x.scroll-y{touch-action:auto}.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;left:-100%;width:100%;height:100vh;opacity:0;pointer-events:none}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;right:0;width:10px;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAgCAYAAAAIXrg4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTE3MDgzRkQ5QTkyMTFFOUEwNzQ5MkJFREE1NUY2MjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTE3MDgzRkU5QTkyMTFFOUEwNzQ5MkJFREE1NUY2MjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxMTcwODNGQjlBOTIxMUU5QTA3NDkyQkVEQTU1RjYyNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMTcwODNGQzlBOTIxMUU5QTA3NDkyQkVEQTU1RjYyNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmePEuQAAABNSURBVHjaYvz//z8DIxAwMDAwATGMhmFmPDQuOSZks0AMmoJBaQHjkPfB0Lfg/2gQjVow+HPy/yHvg9GiYjQfjMbBqAWjFgy/4hogwADYqwdzxy5BuwAAAABJRU5ErkJggg==);background-repeat:repeat-y;background-size:10px 16px}::slotted([slot=fixed]){position:absolute;transform:translateZ(0)}";
449
428
 
450
429
  const Content = class {
451
430
  constructor(hostRef) {
@@ -509,12 +488,6 @@ const Content = class {
509
488
  onAppLoad() {
510
489
  this.resize();
511
490
  }
512
- onClick(ev) {
513
- if (this.isScrolling) {
514
- ev.preventDefault();
515
- ev.stopPropagation();
516
- }
517
- }
518
491
  shouldForceOverscroll() {
519
492
  const { forceOverscroll } = this;
520
493
  const mode = ionicGlobal.getIonMode(this);
@@ -713,7 +686,12 @@ const getPageElement = (el) => {
713
686
  if (tabs) {
714
687
  return tabs;
715
688
  }
716
- const page = el.closest('ion-app,ion-page,.ion-page,page-inner');
689
+ /**
690
+ * If we're in a popover, we need to use its wrapper so we can account for space
691
+ * between the popover and the edges of the screen. But if the popover contains
692
+ * its own page element, we should use that instead.
693
+ */
694
+ const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
717
695
  if (page) {
718
696
  return page;
719
697
  }
@@ -957,7 +935,7 @@ const Header = class {
957
935
  this.translucent = false;
958
936
  }
959
937
  componentWillLoad() {
960
- this.inheritedAttributes = helpers.inheritAttributes(this.el, ['role']);
938
+ this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
961
939
  }
962
940
  async componentDidLoad() {
963
941
  await this.checkCollapsibleHeader();
@@ -1051,7 +1029,9 @@ const Header = class {
1051
1029
  const { translucent, inheritedAttributes } = this;
1052
1030
  const mode = ionicGlobal.getIonMode(this);
1053
1031
  const collapse = this.collapse || 'none';
1054
- return (index.h(index.Host, Object.assign({ role: "banner", class: {
1032
+ // banner role must be at top level, so remove role if inside a menu
1033
+ const roleType = theme.hostContext('ion-menu', this.el) ? 'none' : 'banner';
1034
+ return (index.h(index.Host, Object.assign({ role: roleType, class: {
1055
1035
  [mode]: true,
1056
1036
  // Used internally for styling
1057
1037
  [`header-${mode}`]: true,
@@ -1343,6 +1323,7 @@ const Item = class {
1343
1323
  this.labelColorStyles = {};
1344
1324
  this.itemStyles = new Map();
1345
1325
  this.multipleInputs = false;
1326
+ this.focusable = true;
1346
1327
  /**
1347
1328
  * If `true`, a button tag will be rendered and the item will be tappable.
1348
1329
  */
@@ -1416,7 +1397,10 @@ const Item = class {
1416
1397
  }
1417
1398
  }
1418
1399
  componentDidLoad() {
1419
- helpers.raf(() => this.setMultipleInputs());
1400
+ helpers.raf(() => {
1401
+ this.setMultipleInputs();
1402
+ this.focusable = this.isFocusable();
1403
+ });
1420
1404
  }
1421
1405
  // If the item contains multiple clickable elements and/or inputs, then the item
1422
1406
  // should not have a clickable input cover over the entire item to prevent
@@ -1452,6 +1436,10 @@ const Item = class {
1452
1436
  canActivate() {
1453
1437
  return (this.isClickable() || this.hasCover());
1454
1438
  }
1439
+ isFocusable() {
1440
+ const focusableChild = this.el.querySelector('.ion-focusable');
1441
+ return (this.canActivate() || focusableChild !== null);
1442
+ }
1455
1443
  getFirstInput() {
1456
1444
  const inputs = this.el.querySelectorAll('ion-input, ion-textarea');
1457
1445
  return inputs[0];
@@ -1513,7 +1501,7 @@ const Item = class {
1513
1501
  'in-list': theme.hostContext('ion-list', this.el),
1514
1502
  'item-multiple-inputs': this.multipleInputs,
1515
1503
  'ion-activatable': canActivate,
1516
- 'ion-focusable': true,
1504
+ 'ion-focusable': this.focusable
1517
1505
  })) }, index.h(TagType, Object.assign({}, attrs, { class: "item-native", part: "native", disabled: disabled }, clickFn), index.h("slot", { name: "start" }), index.h("div", { class: "item-inner" }, index.h("div", { class: "input-wrapper" }, index.h("slot", null)), index.h("slot", { name: "end" }), showDetail && index.h("ion-icon", { icon: detailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true" }), index.h("div", { class: "item-inner-highlight" })), canActivate && mode === 'md' && index.h("ion-ripple-effect", null)), index.h("div", { class: "item-highlight" })));
1518
1506
  }
1519
1507
  static get delegatesFocus() { return true; }
@@ -2150,7 +2138,7 @@ const createStore = (defaultState, shouldUpdate) => {
2150
2138
 
2151
2139
  const getIdpUrl = () => prompt('Please enter your Identity Provider URL', 'http://localhost:3000');
2152
2140
 
2153
- const { state } = createStore({
2141
+ const store = createStore({
2154
2142
  getIdpUrl,
2155
2143
  isLoggedIn: false,
2156
2144
  webId: '',
@@ -2169,11 +2157,11 @@ const PosApp = class {
2169
2157
  this.os = createPodOS();
2170
2158
  this.os.handleIncomingRedirect();
2171
2159
  this.os.trackSession(sessionInfo => {
2172
- state.isLoggedIn = sessionInfo.isLoggedIn;
2173
- state.webId = sessionInfo.webId;
2160
+ store.state.isLoggedIn = sessionInfo.isLoggedIn;
2161
+ store.state.webId = sessionInfo.webId;
2174
2162
  });
2175
2163
  }
2176
- async consumeOs(event) {
2164
+ async initializeOs(event) {
2177
2165
  event.stopPropagation();
2178
2166
  event.detail(this.os);
2179
2167
  }
@@ -2182,16 +2170,21 @@ const PosApp = class {
2182
2170
  }
2183
2171
  };
2184
2172
 
2185
- const PosDemoApp = class {
2173
+ const PosAppGeneric = class {
2186
2174
  constructor(hostRef) {
2187
2175
  index.registerInstance(this, hostRef);
2188
- this.url = 'http://localhost:3000/alice/games/minecraft#it';
2189
2176
  }
2190
- linkClicked(e) {
2191
- this.url = e.detail;
2177
+ render() {
2178
+ return (index.h("ion-grid", null, index.h("ion-row", null, index.h("ion-col", { size: "12", "size-sm": true }, index.h("ion-card", null, index.h("ion-card-header", null, index.h("img", { src: "https://dummyimage.com/250/ffffff/000000" }), index.h("ion-card-title", null, index.h("pos-label", null))), index.h("ion-card-content", null, index.h("pos-description", null)))), index.h("ion-col", { size: "12", "size-sm": true }, index.h("pos-literals", null)), index.h("ion-col", { size: "12", "size-sm": true }, index.h("pos-relations", null), index.h("pos-reverse-relations", null)))));
2179
+ }
2180
+ };
2181
+
2182
+ const PosDemoApp = class {
2183
+ constructor(hostRef) {
2184
+ index.registerInstance(this, hostRef);
2192
2185
  }
2193
2186
  render() {
2194
- return (index.h("pos-app", null, index.h("ion-header", null, index.h("ion-toolbar", null, index.h("ion-title", { slot: "start" }, "pod os"), index.h("pos-login", null))), index.h("ion-content", { class: "ion-padding" }, index.h("pos-resource", { uri: this.url }, index.h("ion-grid", null, index.h("ion-row", null, index.h("ion-col", { size: "12", "size-sm": true }, index.h("ion-card", null, index.h("ion-card-header", null, index.h("img", { src: "https://upload.wikimedia.org/wikipedia/de/5/57/Minecraft_logo-SVG.svg" }), index.h("ion-card-subtitle", null, "VideoGame"), index.h("ion-card-title", null, index.h("pos-label", null))), index.h("ion-card-content", null, index.h("pos-description", null)))), index.h("ion-col", { size: "12", "size-sm": true }, index.h("pos-literals", null)), index.h("ion-col", { size: "12", "size-sm": true }, index.h("pos-relations", null)))))), index.h("ion-footer", null, index.h("ion-toolbar", null, index.h("ion-title", null, "Footer")))));
2187
+ return (index.h("pos-app", null, index.h("ion-header", null, index.h("ion-toolbar", null, index.h("ion-title", { slot: "start" }, "pod os"), index.h("pos-login", null))), index.h("ion-content", null, index.h("pos-router", null)), index.h("ion-footer", null, index.h("ion-toolbar", null, index.h("ion-title", null, "Footer")))));
2195
2188
  }
2196
2189
  };
2197
2190
 
@@ -2211,7 +2204,7 @@ const PosDescription = class {
2211
2204
  }
2212
2205
  };
2213
2206
 
2214
- const PosLabel$1 = class {
2207
+ const PosLabel = class {
2215
2208
  constructor(hostRef) {
2216
2209
  index.registerInstance(this, hostRef);
2217
2210
  this.getResource = index.createEvent(this, "pod-os:resource", 7);
@@ -2248,23 +2241,23 @@ const PosLiterals = class {
2248
2241
  const PosLogin = class {
2249
2242
  constructor(hostRef) {
2250
2243
  index.registerInstance(this, hostRef);
2251
- this.consumeOsEmitter = index.createEvent(this, "consumeOs", 7);
2244
+ this.initializeOsEmitter = index.createEvent(this, "pod-os:init", 7);
2252
2245
  this.setOs = async (os) => {
2253
2246
  this.os = os;
2254
2247
  };
2255
2248
  }
2256
2249
  componentWillLoad() {
2257
- this.consumeOsEmitter.emit(this.setOs);
2250
+ this.initializeOsEmitter.emit(this.setOs);
2258
2251
  }
2259
2252
  login() {
2260
- const idp = state.getIdpUrl();
2253
+ const idp = store.state.getIdpUrl();
2261
2254
  this.os.login(idp);
2262
2255
  }
2263
2256
  logout() {
2264
2257
  this.os.logout();
2265
2258
  }
2266
2259
  render() {
2267
- return (index.h(index.Host, null, state.isLoggedIn ? (index.h("pos-resource", { uri: state.webId }, index.h("pos-label", null))) : (''), !state.isLoggedIn && index.h("ion-button", { onClick: () => this.login() }, "Login"), state.isLoggedIn && index.h("ion-button", { onClick: () => this.logout() }, "Logout")));
2260
+ return (index.h(index.Host, null, store.state.isLoggedIn ? (index.h("pos-resource", { uri: store.state.webId }, index.h("pos-label", null))) : (''), !store.state.isLoggedIn && index.h("ion-button", { onClick: () => this.login() }, "Login"), store.state.isLoggedIn && index.h("ion-button", { onClick: () => this.logout() }, "Logout")));
2268
2261
  }
2269
2262
  };
2270
2263
 
@@ -2289,7 +2282,7 @@ const PosRelations = class {
2289
2282
  const PosResource = class {
2290
2283
  constructor(hostRef) {
2291
2284
  index.registerInstance(this, hostRef);
2292
- this.consumeOsEmitter = index.createEvent(this, "consumeOs", 7);
2285
+ this.initializeOsEmitter = index.createEvent(this, "pod-os:init", 7);
2293
2286
  this.consumers = [];
2294
2287
  this.lazy = false;
2295
2288
  this.loading = true;
@@ -2298,7 +2291,8 @@ const PosResource = class {
2298
2291
  };
2299
2292
  }
2300
2293
  componentWillLoad() {
2301
- this.consumeOsEmitter.emit(this.setOs);
2294
+ store.onChange('isLoggedIn', () => this.loadResource());
2295
+ this.initializeOsEmitter.emit(this.setOs);
2302
2296
  }
2303
2297
  async provideResource(event) {
2304
2298
  event.stopPropagation();
@@ -2320,6 +2314,7 @@ const PosResource = class {
2320
2314
  await this.os.fetch(this.uri);
2321
2315
  }
2322
2316
  this.resource = this.os.store.get(this.uri);
2317
+ this.error = null;
2323
2318
  this.consumers.forEach(consumer => {
2324
2319
  consumer.detail(this.resource);
2325
2320
  });
@@ -2346,7 +2341,25 @@ const PosResource = class {
2346
2341
  }; }
2347
2342
  };
2348
2343
 
2349
- const PosLabel = class {
2344
+ const PosReverseRelations = class {
2345
+ constructor(hostRef) {
2346
+ index.registerInstance(this, hostRef);
2347
+ this.getResource = index.createEvent(this, "pod-os:resource", 7);
2348
+ this.data = [];
2349
+ this.setResource = async (resource) => {
2350
+ this.data = resource.reverseRelations();
2351
+ };
2352
+ }
2353
+ componentWillLoad() {
2354
+ this.getResource.emit(this.setResource);
2355
+ }
2356
+ render() {
2357
+ const items = this.data.map(it => (index.h("ion-item-group", null, index.h("ion-item-divider", null, index.h("ion-label", null, "is ", it.predicate, " of")), it.uris.map(uri => (index.h("pos-rich-link", { uri: uri }))))));
2358
+ return this.data.length > 0 ? index.h("ion-list", null, items) : null;
2359
+ }
2360
+ };
2361
+
2362
+ const PosRichLink = class {
2350
2363
  constructor(hostRef) {
2351
2364
  index.registerInstance(this, hostRef);
2352
2365
  this.linkEmitter = index.createEvent(this, "pod-os:link", 7);
@@ -2359,12 +2372,407 @@ const PosLabel = class {
2359
2372
  }
2360
2373
  };
2361
2374
 
2375
+ const createRouter = (opts) => {
2376
+ var _a;
2377
+ const win = window;
2378
+ const url = new URL(win.location.href);
2379
+ const parseURL = (_a = opts === null || opts === void 0 ? void 0 : opts.parseURL) !== null && _a !== void 0 ? _a : DEFAULT_PARSE_URL;
2380
+ const { state, onChange, dispose } = createStore({
2381
+ url,
2382
+ activePath: parseURL(url)
2383
+ }, (newV, oldV, prop) => {
2384
+ if (prop === 'url') {
2385
+ return newV.href !== oldV.href;
2386
+ }
2387
+ return newV !== oldV;
2388
+ });
2389
+ const push = (href) => {
2390
+ history.pushState(null, null, href);
2391
+ const url = new URL(href, document.baseURI);
2392
+ state.url = url;
2393
+ state.activePath = parseURL(url);
2394
+ };
2395
+ const match = (routes) => {
2396
+ const { activePath } = state;
2397
+ for (let route of routes) {
2398
+ const params = matchPath(activePath, route.path);
2399
+ if (params) {
2400
+ if (route.to != null) {
2401
+ const to = (typeof route.to === 'string')
2402
+ ? route.to
2403
+ : route.to(activePath);
2404
+ push(to);
2405
+ return match(routes);
2406
+ }
2407
+ else {
2408
+ return { params, route };
2409
+ }
2410
+ }
2411
+ }
2412
+ return undefined;
2413
+ };
2414
+ const navigationChanged = () => {
2415
+ const url = new URL(win.location.href);
2416
+ state.url = url;
2417
+ state.activePath = parseURL(url);
2418
+ };
2419
+ const Switch = (_, childrenRoutes) => {
2420
+ const result = match(childrenRoutes);
2421
+ if (result) {
2422
+ if (typeof result.route.jsx === 'function') {
2423
+ return result.route.jsx(result.params);
2424
+ }
2425
+ else {
2426
+ return result.route.jsx;
2427
+ }
2428
+ }
2429
+ };
2430
+ const disposeRouter = () => {
2431
+ win.removeEventListener('popstate', navigationChanged);
2432
+ dispose();
2433
+ };
2434
+ const router = {
2435
+ Switch,
2436
+ get url() {
2437
+ return state.url;
2438
+ },
2439
+ get activePath() {
2440
+ return state.activePath;
2441
+ },
2442
+ push,
2443
+ onChange: onChange,
2444
+ dispose: disposeRouter,
2445
+ };
2446
+ // Initial update
2447
+ navigationChanged();
2448
+ // Listen URL changes
2449
+ win.addEventListener('popstate', navigationChanged);
2450
+ return router;
2451
+ };
2452
+ const Route = (props, children) => {
2453
+ var _a;
2454
+ if ('to' in props) {
2455
+ return {
2456
+ path: props.path,
2457
+ to: props.to,
2458
+ };
2459
+ }
2460
+ return {
2461
+ path: props.path,
2462
+ id: props.id,
2463
+ jsx: (_a = props.render) !== null && _a !== void 0 ? _a : children,
2464
+ };
2465
+ };
2466
+ const matchPath = (pathname, path) => {
2467
+ if (typeof path === 'string') {
2468
+ if (path === pathname) {
2469
+ return {};
2470
+ }
2471
+ }
2472
+ else if (typeof path === 'function') {
2473
+ const params = path(pathname);
2474
+ if (params) {
2475
+ return params === true
2476
+ ? {}
2477
+ : { ...params };
2478
+ }
2479
+ }
2480
+ else {
2481
+ const results = path.exec(pathname);
2482
+ if (results) {
2483
+ path.lastIndex = 0;
2484
+ return { ...results };
2485
+ }
2486
+ }
2487
+ return undefined;
2488
+ };
2489
+ const DEFAULT_PARSE_URL = (url) => {
2490
+ return url.pathname.toLowerCase();
2491
+ };
2492
+
2493
+ /**
2494
+ * TS adaption of https://github.com/pillarjs/path-to-regexp/blob/master/index.js
2495
+ */
2496
+ /**
2497
+ * Default configs.
2498
+ */
2499
+ const DEFAULT_DELIMITER = '/';
2500
+ const DEFAULT_DELIMITERS = './';
2501
+ /**
2502
+ * The main path matching regexp utility.
2503
+ */
2504
+ const PATH_REGEXP = new RegExp([
2505
+ // Match escaped characters that would otherwise appear in future matches.
2506
+ // This allows the user to escape special characters that won't transform.
2507
+ '(\\\\.)',
2508
+ // Match Express-style parameters and un-named parameters with a prefix
2509
+ // and optional suffixes. Matches appear as:
2510
+ //
2511
+ // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?"]
2512
+ // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined]
2513
+ '(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?'
2514
+ ].join('|'), 'g');
2515
+ /**
2516
+ * Parse a string for the raw tokens.
2517
+ */
2518
+ const parse = (str, options) => {
2519
+ var tokens = [];
2520
+ var key = 0;
2521
+ var index = 0;
2522
+ var path = '';
2523
+ var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER;
2524
+ var delimiters = (options && options.delimiters) || DEFAULT_DELIMITERS;
2525
+ var pathEscaped = false;
2526
+ var res;
2527
+ while ((res = PATH_REGEXP.exec(str)) !== null) {
2528
+ var m = res[0];
2529
+ var escaped = res[1];
2530
+ var offset = res.index;
2531
+ path += str.slice(index, offset);
2532
+ index = offset + m.length;
2533
+ // Ignore already escaped sequences.
2534
+ if (escaped) {
2535
+ path += escaped[1];
2536
+ pathEscaped = true;
2537
+ continue;
2538
+ }
2539
+ var prev = '';
2540
+ var next = str[index];
2541
+ var name = res[2];
2542
+ var capture = res[3];
2543
+ var group = res[4];
2544
+ var modifier = res[5];
2545
+ if (!pathEscaped && path.length) {
2546
+ var k = path.length - 1;
2547
+ if (delimiters.indexOf(path[k]) > -1) {
2548
+ prev = path[k];
2549
+ path = path.slice(0, k);
2550
+ }
2551
+ }
2552
+ // Push the current path onto the tokens.
2553
+ if (path) {
2554
+ tokens.push(path);
2555
+ path = '';
2556
+ pathEscaped = false;
2557
+ }
2558
+ var partial = prev !== '' && next !== undefined && next !== prev;
2559
+ var repeat = modifier === '+' || modifier === '*';
2560
+ var optional = modifier === '?' || modifier === '*';
2561
+ var delimiter = prev || defaultDelimiter;
2562
+ var pattern = capture || group;
2563
+ tokens.push({
2564
+ name: name || key++,
2565
+ prefix: prev,
2566
+ delimiter: delimiter,
2567
+ optional: optional,
2568
+ repeat: repeat,
2569
+ partial: partial,
2570
+ pattern: pattern ? escapeGroup(pattern) : '[^' + escapeString(delimiter) + ']+?'
2571
+ });
2572
+ }
2573
+ // Push any remaining characters.
2574
+ if (path || index < str.length) {
2575
+ tokens.push(path + str.substr(index));
2576
+ }
2577
+ return tokens;
2578
+ };
2579
+ /**
2580
+ * Escape a regular expression string.
2581
+ */
2582
+ const escapeString = (str) => {
2583
+ return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, '\\$1');
2584
+ };
2585
+ /**
2586
+ * Escape the capturing group by escaping special characters and meaning.
2587
+ */
2588
+ const escapeGroup = (group) => {
2589
+ return group.replace(/([=!:$/()])/g, '\\$1');
2590
+ };
2591
+ /**
2592
+ * Get the flags for a regexp from the options.
2593
+ */
2594
+ const flags = (options) => {
2595
+ return options && options.sensitive ? '' : 'i';
2596
+ };
2597
+ /**
2598
+ * Pull out keys from a regexp.
2599
+ */
2600
+ const regexpToRegexp = (path, keys) => {
2601
+ if (!keys)
2602
+ return path;
2603
+ // Use a negative lookahead to match only capturing groups.
2604
+ var groups = path.source.match(/\((?!\?)/g);
2605
+ if (groups) {
2606
+ for (var i = 0; i < groups.length; i++) {
2607
+ keys.push({
2608
+ name: i,
2609
+ prefix: null,
2610
+ delimiter: null,
2611
+ optional: false,
2612
+ repeat: false,
2613
+ partial: false,
2614
+ pattern: null
2615
+ });
2616
+ }
2617
+ }
2618
+ return path;
2619
+ };
2620
+ /**
2621
+ * Transform an array into a regexp.
2622
+ */
2623
+ const arrayToRegexp = (path, keys, options) => {
2624
+ var parts = [];
2625
+ for (var i = 0; i < path.length; i++) {
2626
+ parts.push(pathToRegexp(path[i], keys, options).source);
2627
+ }
2628
+ return new RegExp('(?:' + parts.join('|') + ')', flags(options));
2629
+ };
2630
+ /**
2631
+ * Create a path regexp from string input.
2632
+ */
2633
+ const stringToRegexp = (path, keys, options) => {
2634
+ return tokensToRegExp(parse(path, options), keys, options);
2635
+ };
2636
+ /**
2637
+ * Expose a function for taking tokens and returning a RegExp.
2638
+ */
2639
+ const tokensToRegExp = (tokens, keys, options) => {
2640
+ options = options || {};
2641
+ var strict = options.strict;
2642
+ var end = options.end !== false;
2643
+ var delimiter = escapeString(options.delimiter || DEFAULT_DELIMITER);
2644
+ var delimiters = options.delimiters || DEFAULT_DELIMITERS;
2645
+ var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|');
2646
+ var route = '';
2647
+ var isEndDelimited = false;
2648
+ // Iterate over the tokens and create our regexp string.
2649
+ for (var i = 0; i < tokens.length; i++) {
2650
+ var token = tokens[i];
2651
+ if (typeof token === 'string') {
2652
+ route += escapeString(token);
2653
+ isEndDelimited = i === tokens.length - 1 && delimiters.indexOf(token[token.length - 1]) > -1;
2654
+ }
2655
+ else {
2656
+ var prefix = escapeString(token.prefix || '');
2657
+ var capture = token.repeat
2658
+ ? '(?:' + token.pattern + ')(?:' + prefix + '(?:' + token.pattern + '))*'
2659
+ : token.pattern;
2660
+ if (keys)
2661
+ keys.push(token);
2662
+ if (token.optional) {
2663
+ if (token.partial) {
2664
+ route += prefix + '(' + capture + ')?';
2665
+ }
2666
+ else {
2667
+ route += '(?:' + prefix + '(' + capture + '))?';
2668
+ }
2669
+ }
2670
+ else {
2671
+ route += prefix + '(' + capture + ')';
2672
+ }
2673
+ }
2674
+ }
2675
+ if (end) {
2676
+ if (!strict)
2677
+ route += '(?:' + delimiter + ')?';
2678
+ route += endsWith === '$' ? '$' : '(?=' + endsWith + ')';
2679
+ }
2680
+ else {
2681
+ if (!strict)
2682
+ route += '(?:' + delimiter + '(?=' + endsWith + '))?';
2683
+ if (!isEndDelimited)
2684
+ route += '(?=' + delimiter + '|' + endsWith + ')';
2685
+ }
2686
+ return new RegExp('^' + route, flags(options));
2687
+ };
2688
+ /**
2689
+ * Normalize the given path string, returning a regular expression.
2690
+ *
2691
+ * An empty array can be passed in for the keys, which will hold the
2692
+ * placeholder key descriptions. For example, using `/user/:id`, `keys` will
2693
+ * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
2694
+ */
2695
+ const pathToRegexp = (path, keys, options) => {
2696
+ if (path instanceof RegExp) {
2697
+ return regexpToRegexp(path, keys);
2698
+ }
2699
+ if (Array.isArray(path)) {
2700
+ return arrayToRegexp(path, keys, options);
2701
+ }
2702
+ return stringToRegexp(path, keys, options);
2703
+ };
2704
+
2705
+ let cacheCount = 0;
2706
+ const patternCache = {};
2707
+ const cacheLimit = 10000;
2708
+ // Memoized function for creating the path match regex
2709
+ const compilePath = (pattern, options) => {
2710
+ const cacheKey = `${options.end}${options.strict}`;
2711
+ const cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});
2712
+ const cachePattern = JSON.stringify(pattern);
2713
+ if (cache[cachePattern]) {
2714
+ return cache[cachePattern];
2715
+ }
2716
+ const keys = [];
2717
+ const re = pathToRegexp(pattern, keys, options);
2718
+ const compiledPattern = { re, keys };
2719
+ if (cacheCount < cacheLimit) {
2720
+ cache[cachePattern] = compiledPattern;
2721
+ cacheCount += 1;
2722
+ }
2723
+ return compiledPattern;
2724
+ };
2725
+ const match = (pathname, options = {}) => {
2726
+ const { exact = false, strict = false } = options;
2727
+ const { re, keys } = compilePath(pathname, { end: exact, strict });
2728
+ return (path) => {
2729
+ const match = re.exec(path);
2730
+ if (!match) {
2731
+ return undefined;
2732
+ }
2733
+ const [url, ...values] = match;
2734
+ const isExact = path === url;
2735
+ if (exact && !isExact) {
2736
+ return undefined;
2737
+ }
2738
+ return keys.reduce((memo, key, index) => {
2739
+ memo[key.name] = values[index];
2740
+ return memo;
2741
+ }, {});
2742
+ };
2743
+ };
2744
+
2745
+ const Router = createRouter();
2746
+ const PosRouter = class {
2747
+ constructor(hostRef) {
2748
+ index.registerInstance(this, hostRef);
2749
+ }
2750
+ linkClicked(e) {
2751
+ this.navigate(e.detail);
2752
+ }
2753
+ componentWillLoad() {
2754
+ this.updateUri();
2755
+ Router.onChange('url', () => {
2756
+ this.updateUri();
2757
+ });
2758
+ }
2759
+ navigate(uri) {
2760
+ Router.push('?uri=' + encodeURIComponent(uri));
2761
+ }
2762
+ updateUri() {
2763
+ this.uri = new URLSearchParams(window.location.search).get('uri') || window.location.href;
2764
+ }
2765
+ render() {
2766
+ console.log('render router', this.uri);
2767
+ return (index.h(Router.Switch, null, index.h(Route, { path: match('', { exact: false }) }, index.h("pos-resource", { key: this.uri, uri: this.uri }, index.h("pos-app-generic", null)))));
2768
+ }
2769
+ };
2770
+
2362
2771
  exports.ion_app = App;
2363
2772
  exports.ion_button = Button;
2364
2773
  exports.ion_card = Card;
2365
2774
  exports.ion_card_content = CardContent;
2366
2775
  exports.ion_card_header = CardHeader;
2367
- exports.ion_card_subtitle = CardSubtitle;
2368
2776
  exports.ion_card_title = CardTitle;
2369
2777
  exports.ion_col = Col;
2370
2778
  exports.ion_content = Content;
@@ -2383,11 +2791,14 @@ exports.ion_row = Row;
2383
2791
  exports.ion_title = ToolbarTitle;
2384
2792
  exports.ion_toolbar = Toolbar;
2385
2793
  exports.pos_app = PosApp;
2794
+ exports.pos_app_generic = PosAppGeneric;
2386
2795
  exports.pos_demo_app = PosDemoApp;
2387
2796
  exports.pos_description = PosDescription;
2388
- exports.pos_label = PosLabel$1;
2797
+ exports.pos_label = PosLabel;
2389
2798
  exports.pos_literals = PosLiterals;
2390
2799
  exports.pos_login = PosLogin;
2391
2800
  exports.pos_relations = PosRelations;
2392
2801
  exports.pos_resource = PosResource;
2393
- exports.pos_rich_link = PosLabel;
2802
+ exports.pos_reverse_relations = PosReverseRelations;
2803
+ exports.pos_rich_link = PosRichLink;
2804
+ exports.pos_router = PosRouter;