@sparkle-learning/core 0.0.32 → 0.0.33

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 (252) hide show
  1. package/dist/cjs/PrivateRoute-482697a6.js +35 -0
  2. package/dist/cjs/{PrivateRoute-043bb7d3.js → auth.service-f878f6ab.js} +0 -30
  3. package/dist/cjs/dom-utils-b8befdd5.js +63 -0
  4. package/dist/cjs/header-mobile-collapse_2.cjs.entry.js +112 -0
  5. package/dist/cjs/index-07e8aa51.js +3071 -0
  6. package/dist/cjs/index.cjs.js +6 -5
  7. package/dist/cjs/injectHistory-77d41284.js +9 -0
  8. package/dist/cjs/ion-avatar.cjs.entry.js +25 -0
  9. package/dist/cjs/ion-button_3.cjs.entry.js +383 -0
  10. package/dist/cjs/ion-card_2.cjs.entry.js +93 -0
  11. package/dist/cjs/ion-checkbox_4.cjs.entry.js +370 -0
  12. package/dist/cjs/ion-col_3.cjs.entry.js +155 -0
  13. package/dist/cjs/ion-icon_2.cjs.entry.js +397 -0
  14. package/dist/cjs/ion-input_2.cjs.entry.js +316 -0
  15. package/dist/cjs/ion-label_2.cjs.entry.js +126 -0
  16. package/dist/cjs/ion-range.cjs.entry.js +445 -0
  17. package/dist/cjs/ion-spinner.cjs.entry.js +64 -0
  18. package/dist/cjs/loader.cjs.js +1 -1
  19. package/dist/cjs/match-path-84c9f7ca.js +511 -0
  20. package/dist/cjs/sparkle-card_3.cjs.entry.js +91 -0
  21. package/dist/cjs/sparkle-core.cjs.js +1 -1
  22. package/dist/cjs/sparkle-course-root.cjs.entry.js +145 -0
  23. package/dist/cjs/sparkle-dropdown.cjs.entry.js +61 -0
  24. package/dist/cjs/{header-mobile-collapse_61.cjs.entry.js → sparkle-export-lessons_6.cjs.entry.js} +8863 -17662
  25. package/dist/cjs/sparkle-facilitator-header_19.cjs.entry.js +2129 -0
  26. package/dist/cjs/sparkle-feedback.cjs.entry.js +2 -1
  27. package/dist/cjs/sparkle-goal-progress.cjs.entry.js +19 -0
  28. package/dist/cjs/sparkle-gww-item.cjs.entry.js +74 -0
  29. package/dist/cjs/sparkle-intro.cjs.entry.js +26 -0
  30. package/dist/cjs/sparkle-menu-toggle_3.cjs.entry.js +236 -0
  31. package/dist/cjs/sparkle-validation-error.cjs.entry.js +21 -0
  32. package/dist/cjs/stencil-route-link.cjs.entry.js +77 -0
  33. package/dist/cjs/stencil-router-redirect.cjs.entry.js +32 -0
  34. package/dist/cjs/student.service-7af424fe.js +61 -0
  35. package/dist/cjs/user.store-3d29139d.js +21 -0
  36. package/dist/collection/collection-manifest.json +1 -0
  37. package/dist/collection/components/sparkle-intro/sparkle-intro.css +16 -0
  38. package/dist/collection/components/sparkle-intro/sparkle-intro.js +35 -0
  39. package/dist/esm/PrivateRoute-f59ba6b5.js +33 -0
  40. package/dist/esm/{animation-b306f6c2.js → animation-7b083379.js} +1 -1
  41. package/dist/esm/{PrivateRoute-b9937c45.js → auth.service-7ab0ac58.js} +3 -32
  42. package/dist/esm/{auth.store-3ed2389e.js → auth.store-98fad96d.js} +2 -2
  43. package/dist/esm/dom-utils-8e73e88b.js +55 -0
  44. package/dist/esm/{facilitator.service-ec0a9739.js → facilitator.service-1524bf89.js} +1 -1
  45. package/dist/esm/{feed.service-33b83cb7.js → feed.service-4900fc62.js} +2 -2
  46. package/dist/esm/{framework-delegate-3bc58c27.js → framework-delegate-518bd233.js} +1 -1
  47. package/dist/esm/header-mobile-collapse_2.entry.js +107 -0
  48. package/dist/esm/{helpers-39367fe1.js → helpers-9d0930de.js} +1 -1
  49. package/dist/esm/{icons-61dec176.js → icons-05b6ce86.js} +1 -1
  50. package/dist/esm/{index-c26d8655.js → index-8de9446b.js} +3 -3
  51. package/dist/esm/index-c92f99d4.js +3067 -0
  52. package/dist/esm/{index-dc61f152.js → index-ea26196a.js} +1 -1
  53. package/dist/esm/{index-9594837e.js → index-fa5e93c5.js} +2 -2
  54. package/dist/esm/{index.es-97dd8174.js → index.es-89cff481.js} +3 -3
  55. package/dist/esm/index.js +5 -4
  56. package/dist/esm/injectHistory-52d0c7eb.js +7 -0
  57. package/dist/esm/{input-shims-cc98ea92.js → input-shims-7f04e044.js} +1 -1
  58. package/dist/esm/ion-accordion.entry.js +2 -2
  59. package/dist/esm/ion-action-sheet_4.entry.js +5 -5
  60. package/dist/esm/ion-app.entry.js +3 -3
  61. package/dist/esm/ion-avatar.entry.js +21 -0
  62. package/dist/esm/ion-back-button.entry.js +2 -2
  63. package/dist/esm/ion-breadcrumb.entry.js +2 -2
  64. package/dist/esm/ion-button_3.entry.js +377 -0
  65. package/dist/esm/ion-card_2.entry.js +88 -0
  66. package/dist/esm/ion-checkbox_4.entry.js +363 -0
  67. package/dist/esm/ion-col_3.entry.js +149 -0
  68. package/dist/esm/ion-content_2.entry.js +1 -1
  69. package/dist/esm/ion-datetime.entry.js +2 -2
  70. package/dist/esm/ion-fab-button.entry.js +1 -1
  71. package/dist/esm/ion-footer.entry.js +1 -1
  72. package/dist/esm/ion-icon_2.entry.js +392 -0
  73. package/dist/esm/ion-img.entry.js +1 -1
  74. package/dist/esm/ion-infinite-scroll.entry.js +1 -1
  75. package/dist/esm/ion-input_2.entry.js +311 -0
  76. package/dist/esm/ion-item-options.entry.js +1 -1
  77. package/dist/esm/ion-item-sliding.entry.js +1 -1
  78. package/dist/esm/ion-label_2.entry.js +121 -0
  79. package/dist/esm/ion-loading.entry.js +3 -3
  80. package/dist/esm/ion-menu-button.entry.js +5 -5
  81. package/dist/esm/ion-menu-toggle.entry.js +4 -4
  82. package/dist/esm/ion-menu.entry.js +4 -4
  83. package/dist/esm/ion-modal.entry.js +5 -5
  84. package/dist/esm/ion-nav.entry.js +4 -4
  85. package/dist/esm/ion-picker-column-internal_2.entry.js +1 -1
  86. package/dist/esm/ion-picker-column.entry.js +1 -1
  87. package/dist/esm/ion-picker.entry.js +3 -3
  88. package/dist/esm/ion-progress-bar.entry.js +1 -1
  89. package/dist/esm/ion-range.entry.js +441 -0
  90. package/dist/esm/ion-refresher-content.entry.js +1 -1
  91. package/dist/esm/ion-refresher.entry.js +2 -2
  92. package/dist/esm/ion-reorder-group.entry.js +1 -1
  93. package/dist/esm/ion-reorder.entry.js +1 -1
  94. package/dist/esm/ion-router-outlet.entry.js +4 -4
  95. package/dist/esm/ion-router.entry.js +1 -1
  96. package/dist/esm/ion-searchbar.entry.js +2 -2
  97. package/dist/esm/ion-segment-button.entry.js +1 -1
  98. package/dist/esm/ion-segment.entry.js +1 -1
  99. package/dist/esm/ion-select_2.entry.js +2 -2
  100. package/dist/esm/ion-slides.entry.js +1 -1
  101. package/dist/esm/ion-spinner.entry.js +60 -0
  102. package/dist/esm/ion-tab.entry.js +2 -2
  103. package/dist/esm/ion-textarea.entry.js +1 -1
  104. package/dist/esm/ion-toast.entry.js +3 -3
  105. package/dist/esm/ion-toggle.entry.js +1 -1
  106. package/dist/esm/ion-virtual-scroll.entry.js +1 -1
  107. package/dist/esm/{ios.transition-b4ca8a33.js → ios.transition-db4f4ca6.js} +3 -3
  108. package/dist/esm/loader.js +1 -1
  109. package/dist/esm/match-path-36fdf5c7.js +499 -0
  110. package/dist/esm/{md.transition-ca5e0322.js → md.transition-8294b503.js} +3 -3
  111. package/dist/esm/{menu-toggle-util-7fa22c2f.js → menu-toggle-util-06adade3.js} +1 -1
  112. package/dist/esm/{overlays-34cfa9e0.js → overlays-5c777f10.js} +2 -2
  113. package/dist/esm/{purify-ffce2b4c.js → purify-eb68cf1d.js} +1 -1
  114. package/dist/esm/sparkle-animation-player.entry.js +1 -1
  115. package/dist/esm/sparkle-card_3.entry.js +85 -0
  116. package/dist/esm/sparkle-code.entry.js +1 -1
  117. package/dist/esm/sparkle-core.js +1 -1
  118. package/dist/esm/sparkle-course-root.entry.js +141 -0
  119. package/dist/esm/sparkle-dropdown.entry.js +57 -0
  120. package/dist/esm/{header-mobile-collapse_61.entry.js → sparkle-export-lessons_6.entry.js} +8858 -17602
  121. package/dist/esm/sparkle-facilitator-header_19.entry.js +2107 -0
  122. package/dist/esm/sparkle-facilitator-notes-form.entry.js +4 -4
  123. package/dist/esm/sparkle-feedback.entry.js +5 -4
  124. package/dist/esm/sparkle-goal-form.entry.js +5 -5
  125. package/dist/esm/sparkle-goal-progress.entry.js +15 -0
  126. package/dist/esm/sparkle-gww-item.entry.js +70 -0
  127. package/dist/esm/sparkle-intro.entry.js +22 -0
  128. package/dist/esm/sparkle-menu-collapsible.entry.js +1 -1
  129. package/dist/esm/sparkle-menu-toggle_3.entry.js +230 -0
  130. package/dist/esm/sparkle-validation-error.entry.js +17 -0
  131. package/dist/esm/{status-tap-6351a0cb.js → status-tap-e8c0c752.js} +1 -1
  132. package/dist/esm/stencil-route-link.entry.js +73 -0
  133. package/dist/esm/stencil-router-redirect.entry.js +28 -0
  134. package/dist/esm/{student.service-29b688ba.js → student.service-c2f44f3a.js} +3 -18
  135. package/dist/esm/{swipe-back-34251834.js → swipe-back-9a3b2cdd.js} +1 -1
  136. package/dist/esm/{tap-click-13f1fb0d.js → tap-click-cca25060.js} +1 -1
  137. package/dist/esm/user.store-e6ff7558.js +19 -0
  138. package/dist/esm/{util-6ef753e9.js → util-a831d09d.js} +1 -1
  139. package/dist/sparkle-core/index.esm.js +1 -1
  140. package/dist/sparkle-core/p-021fde3c.entry.js +1 -0
  141. package/dist/sparkle-core/p-034306e2.js +1 -0
  142. package/dist/sparkle-core/{p-6c90bde6.entry.js → p-034aa29f.entry.js} +1 -1
  143. package/dist/sparkle-core/p-06c0cce3.entry.js +1 -0
  144. package/dist/sparkle-core/{p-9cfdeb18.entry.js → p-08923b40.entry.js} +1 -1
  145. package/dist/sparkle-core/{p-513794b0.js → p-0ad99881.js} +1 -1
  146. package/dist/sparkle-core/{p-95004267.entry.js → p-11234d0f.entry.js} +1 -1
  147. package/dist/sparkle-core/{p-9a17f2ad.js → p-1133fcbd.js} +2 -2
  148. package/dist/sparkle-core/{p-faa912d7.entry.js → p-1551190a.entry.js} +1 -1
  149. package/dist/sparkle-core/p-1728ead7.js +1 -0
  150. package/dist/sparkle-core/{p-ae1f145d.entry.js → p-1e8c22e0.entry.js} +1 -1
  151. package/dist/sparkle-core/p-232cc3bc.js +1 -0
  152. package/dist/sparkle-core/{p-289a35ed.entry.js → p-28950db0.entry.js} +1 -1
  153. package/dist/sparkle-core/p-2af82cc1.entry.js +1 -0
  154. package/dist/sparkle-core/p-2bd4c60e.js +1 -0
  155. package/dist/sparkle-core/p-2f437793.entry.js +348 -0
  156. package/dist/sparkle-core/p-330ccc7c.entry.js +1 -0
  157. package/dist/sparkle-core/{p-838fa86d.entry.js → p-337f92b0.entry.js} +1 -1
  158. package/dist/sparkle-core/{p-857f3696.entry.js → p-35c5c110.entry.js} +1 -1
  159. package/dist/sparkle-core/p-3ff617d5.js +1 -0
  160. package/dist/sparkle-core/{p-9c1772c3.js → p-401feeb0.js} +1 -1
  161. package/dist/sparkle-core/{p-5a3d0e6b.js → p-4028676b.js} +1 -1
  162. package/dist/sparkle-core/{p-1cef8572.js → p-41124baa.js} +1 -1
  163. package/dist/sparkle-core/{p-0187adef.entry.js → p-41af3793.entry.js} +1 -1
  164. package/dist/sparkle-core/p-43a7391b.entry.js +1 -0
  165. package/dist/sparkle-core/{p-855ca600.js → p-44c23f72.js} +1 -1
  166. package/dist/sparkle-core/{p-c1376096.entry.js → p-4550e10f.entry.js} +1 -1
  167. package/dist/sparkle-core/{p-660e0742.js → p-4a72626a.js} +1 -1
  168. package/dist/sparkle-core/{p-e1cba44b.entry.js → p-4ba57978.entry.js} +1 -1
  169. package/dist/sparkle-core/{p-935e7cfc.js → p-4bd4dab2.js} +1 -1
  170. package/dist/sparkle-core/{p-d5b05ece.entry.js → p-4ef4b8bd.entry.js} +1 -1
  171. package/dist/sparkle-core/{p-55ae49e1.js → p-4f144efa.js} +1 -1
  172. package/dist/sparkle-core/{p-713590fc.js → p-52d4715a.js} +1 -1
  173. package/dist/sparkle-core/{p-bca0e465.entry.js → p-52f1d1ca.entry.js} +1 -1
  174. package/dist/sparkle-core/{p-7e61973d.entry.js → p-5a98d42e.entry.js} +1 -1
  175. package/dist/sparkle-core/{p-99b43ee1.entry.js → p-5e4ec238.entry.js} +1 -1
  176. package/dist/sparkle-core/{p-e6b66cef.entry.js → p-5ec7fd67.entry.js} +1 -1
  177. package/dist/sparkle-core/p-618f6f82.entry.js +1 -0
  178. package/dist/sparkle-core/p-65ca1fb2.entry.js +1 -0
  179. package/dist/sparkle-core/{p-a080e768.entry.js → p-663fafa9.entry.js} +1 -1
  180. package/dist/sparkle-core/p-67f71099.entry.js +4 -0
  181. package/dist/sparkle-core/{p-6e88764b.entry.js → p-6a16b9ef.entry.js} +2 -2
  182. package/dist/sparkle-core/p-6b6a8f0a.entry.js +1 -0
  183. package/dist/sparkle-core/p-6c5b5ea2.entry.js +1 -0
  184. package/dist/sparkle-core/{p-941eaa3a.entry.js → p-6ebf52fb.entry.js} +1 -1
  185. package/dist/sparkle-core/p-6f45db93.js +1 -0
  186. package/dist/sparkle-core/p-74106ca8.entry.js +1 -0
  187. package/dist/sparkle-core/{p-6fbe3ca3.entry.js → p-7568dcab.entry.js} +1 -1
  188. package/dist/sparkle-core/p-7703bae9.entry.js +1 -0
  189. package/dist/sparkle-core/p-77c23496.entry.js +1 -0
  190. package/dist/sparkle-core/p-79606a41.entry.js +1 -0
  191. package/dist/sparkle-core/p-7976e88c.entry.js +1 -0
  192. package/dist/sparkle-core/p-7c1f59ec.js +1 -0
  193. package/dist/sparkle-core/p-7de0a22b.entry.js +1 -0
  194. package/dist/sparkle-core/p-848fe770.entry.js +1 -0
  195. package/dist/sparkle-core/{p-cbbeed67.entry.js → p-85429b12.entry.js} +1 -1
  196. package/dist/sparkle-core/{p-64e72f8f.js → p-86d099f1.js} +2 -2
  197. package/dist/sparkle-core/{p-389500fd.js → p-87549bb7.js} +2 -2
  198. package/dist/sparkle-core/{p-1b78dea1.entry.js → p-8c470e28.entry.js} +1 -1
  199. package/dist/sparkle-core/{p-50aac721.entry.js → p-90466494.entry.js} +1 -1
  200. package/dist/sparkle-core/p-954c89c2.entry.js +1 -0
  201. package/dist/sparkle-core/{p-f4001fdf.js → p-95d01c4c.js} +1 -1
  202. package/dist/sparkle-core/{p-6ee40949.js → p-987c64eb.js} +1 -1
  203. package/dist/sparkle-core/{p-1af044f7.js → p-a7832a51.js} +1 -1
  204. package/dist/sparkle-core/p-a89dea80.entry.js +1 -0
  205. package/dist/sparkle-core/p-aef8aa31.entry.js +1 -0
  206. package/dist/sparkle-core/{p-6c6145cd.js → p-b17dd6df.js} +2 -2
  207. package/dist/sparkle-core/{p-5ff6416d.entry.js → p-b21d0d9f.entry.js} +1 -1
  208. package/dist/sparkle-core/p-b7dafaae.entry.js +1 -0
  209. package/dist/sparkle-core/{p-c3986a52.entry.js → p-bd062288.entry.js} +1 -1
  210. package/dist/sparkle-core/{p-c1279cc9.entry.js → p-beb401e3.entry.js} +1 -1
  211. package/dist/sparkle-core/p-bef34cfe.entry.js +1 -0
  212. package/dist/sparkle-core/{p-6bf07a28.js → p-c1c59771.js} +1 -1
  213. package/dist/sparkle-core/p-c4104929.entry.js +1 -0
  214. package/dist/sparkle-core/{p-173d5461.entry.js → p-c748f64e.entry.js} +1 -1
  215. package/dist/sparkle-core/{p-d4a435f8.entry.js → p-c753207f.entry.js} +1 -1
  216. package/dist/sparkle-core/{p-18e62133.entry.js → p-c8ae9e47.entry.js} +1 -1
  217. package/dist/sparkle-core/p-c8ed0575.js +1 -0
  218. package/dist/sparkle-core/{p-8fe2e51f.entry.js → p-c96b24bd.entry.js} +2 -2
  219. package/dist/sparkle-core/p-ce13171b.entry.js +1 -0
  220. package/dist/sparkle-core/{p-5c9aa1f9.entry.js → p-d00f550b.entry.js} +1 -1
  221. package/dist/sparkle-core/p-d394eed1.entry.js +1 -0
  222. package/dist/sparkle-core/p-d48e95c1.entry.js +1 -0
  223. package/dist/sparkle-core/p-d4b1a14a.entry.js +1 -0
  224. package/dist/sparkle-core/{p-b81e20fe.entry.js → p-d56efeac.entry.js} +1 -1
  225. package/dist/sparkle-core/{p-932bfb69.entry.js → p-d59a5984.entry.js} +1 -1
  226. package/dist/sparkle-core/p-d8aff730.entry.js +1 -0
  227. package/dist/sparkle-core/{p-5d2e54ee.entry.js → p-da8921d0.entry.js} +1 -1
  228. package/dist/sparkle-core/{p-a1cab0f3.js → p-e08059b6.js} +2 -2
  229. package/dist/sparkle-core/{p-5598650a.entry.js → p-ec4d22e3.entry.js} +1 -1
  230. package/dist/sparkle-core/{p-eb70a23c.entry.js → p-ed3eed72.entry.js} +1 -1
  231. package/dist/sparkle-core/{p-a7cc0052.entry.js → p-ee0717e1.entry.js} +1 -1
  232. package/dist/sparkle-core/p-ef2dace6.js +4 -0
  233. package/dist/sparkle-core/{p-2ee6a5f9.entry.js → p-f1106984.entry.js} +1 -1
  234. package/dist/sparkle-core/p-f61ca75c.entry.js +1 -0
  235. package/dist/sparkle-core/{p-e225581a.js → p-f6bafe1d.js} +1 -1
  236. package/dist/sparkle-core/{p-1df05176.js → p-ff4d6858.js} +1 -1
  237. package/dist/sparkle-core/sparkle-core.esm.js +1 -1
  238. package/dist/types/components/sparkle-intro/sparkle-intro.d.ts +7 -0
  239. package/dist/types/components.d.ts +13 -0
  240. package/package.json +1 -1
  241. package/dist/cjs/student.service-744c3155.js +0 -77
  242. package/dist/sparkle-core/p-03189863.js +0 -1
  243. package/dist/sparkle-core/p-0f899097.entry.js +0 -352
  244. package/dist/sparkle-core/p-1339830f.entry.js +0 -1
  245. package/dist/sparkle-core/p-145e40f5.entry.js +0 -1
  246. package/dist/sparkle-core/p-547b70c6.entry.js +0 -1
  247. package/dist/sparkle-core/p-6bbabb80.entry.js +0 -1
  248. package/dist/sparkle-core/p-950effe7.entry.js +0 -1
  249. package/dist/sparkle-core/p-d8d3524a.js +0 -1
  250. package/dist/sparkle-core/p-e0fced48.entry.js +0 -1
  251. package/dist/sparkle-core/p-e72d4450.js +0 -4
  252. package/dist/sparkle-core/p-fc933591.entry.js +0 -1
@@ -0,0 +1,33 @@
1
+ import { h } from './index-5568e3fa.js';
2
+ import { A as AuthStore } from './auth.store-98fad96d.js';
3
+
4
+ function isGranted(permissionName) {
5
+ return sparkle.auth.isGranted(permissionName);
6
+ }
7
+
8
+ var __rest = (undefined && undefined.__rest) || function (s, e) {
9
+ var t = {};
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
11
+ t[p] = s[p];
12
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
13
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
14
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
15
+ t[p[i]] = s[p[i]];
16
+ }
17
+ return t;
18
+ };
19
+ const Route = (_a) => {
20
+ var { component, permission, render } = _a, props = __rest(_a, ["component", "permission", "render"]);
21
+ const Component = component;
22
+ return (h("stencil-route", Object.assign({}, props, { routeRender: (props) => {
23
+ if (!AuthStore.state.isAuthenticated)
24
+ return (h("stencil-router-redirect", { url: "/login" }));
25
+ if (permission && !isGranted(permission)) {
26
+ return (h("stencil-router-redirect", { url: "/unauthorized" }));
27
+ }
28
+ return Component ? h(Component, Object.assign({}, props, props.componentProps)) : render(props);
29
+ } })));
30
+ };
31
+ const PrivateRoute = Route;
32
+
33
+ export { PrivateRoute as P };
@@ -1,4 +1,4 @@
1
- import { k as raf } from './helpers-39367fe1.js';
1
+ import { b as raf } from './helpers-9d0930de.js';
2
2
 
3
3
  /*!
4
4
  * (C) Ionic http://ionicframework.com - MIT License
@@ -1,6 +1,6 @@
1
- import { c as getAssetPath, h } from './index-5568e3fa.js';
1
+ import { c as getAssetPath } from './index-5568e3fa.js';
2
2
  import { s as set, r as remove, g as get } from './localstorage.service-4bf408c8.js';
3
- import { A as AuthStore, H as HttpService } from './auth.store-3ed2389e.js';
3
+ import { A as AuthStore, H as HttpService } from './auth.store-98fad96d.js';
4
4
 
5
5
  //import * as abpTypings from '../lib/abp';
6
6
  class Utils {
@@ -191,33 +191,4 @@ class AuthService {
191
191
  }
192
192
  }
193
193
 
194
- function isGranted(permissionName) {
195
- return sparkle.auth.isGranted(permissionName);
196
- }
197
-
198
- var __rest = (undefined && undefined.__rest) || function (s, e) {
199
- var t = {};
200
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
201
- t[p] = s[p];
202
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
203
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
204
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
205
- t[p[i]] = s[p[i]];
206
- }
207
- return t;
208
- };
209
- const Route = (_a) => {
210
- var { component, permission, render } = _a, props = __rest(_a, ["component", "permission", "render"]);
211
- const Component = component;
212
- return (h("stencil-route", Object.assign({}, props, { routeRender: (props) => {
213
- if (!AuthStore.state.isAuthenticated)
214
- return (h("stencil-router-redirect", { url: "/login" }));
215
- if (permission && !isGranted(permission)) {
216
- return (h("stencil-router-redirect", { url: "/unauthorized" }));
217
- }
218
- return Component ? h(Component, Object.assign({}, props, props.componentProps)) : render(props);
219
- } })));
220
- };
221
- const PrivateRoute = Route;
222
-
223
- export { AuthService as A, PrivateRoute as P, initSetupConfig as i, setupConfig as s };
194
+ export { AuthService as A, initSetupConfig as i, setupConfig as s };
@@ -1,4 +1,4 @@
1
- import { t as toastController } from './overlays-34cfa9e0.js';
1
+ import { t as toastController } from './overlays-5c777f10.js';
2
2
  import { E as EnvironmentConfigService } from './environment-config.service-2b5d692b.js';
3
3
  import { d as getRenderingRef, f as forceUpdate } from './index-5568e3fa.js';
4
4
 
@@ -4058,4 +4058,4 @@ onChange('authUser', (authUser) => {
4058
4058
  });
4059
4059
  const AuthStore = { state, onChange, reset };
4060
4060
 
4061
- export { AuthStore as A, HttpService as H, TocStore as T, commonjsGlobal as a, createStore as b, createCommonjsModule as c, getDefaultExportFromCjs as g };
4061
+ export { AuthStore as A, HttpService as H, TocStore as T, createCommonjsModule as a, commonjsGlobal as b, createStore as c, getDefaultExportFromCjs as g };
@@ -0,0 +1,55 @@
1
+ const getConfirmation = (win, message, callback) => (callback(win.confirm(message)));
2
+ const isModifiedEvent = (ev) => (ev.metaKey || ev.altKey || ev.ctrlKey || ev.shiftKey);
3
+ /**
4
+ * Returns true if the HTML5 history API is supported. Taken from Modernizr.
5
+ *
6
+ * https://github.com/Modernizr/Modernizr/blob/master/LICENSE
7
+ * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js
8
+ * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586
9
+ */
10
+ const supportsHistory = (win) => {
11
+ const ua = win.navigator.userAgent;
12
+ if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&
13
+ ua.indexOf('Mobile Safari') !== -1 &&
14
+ ua.indexOf('Chrome') === -1 &&
15
+ ua.indexOf('Windows Phone') === -1) {
16
+ return false;
17
+ }
18
+ return win.history && 'pushState' in win.history;
19
+ };
20
+ /**
21
+ * Returns true if browser fires popstate on hash change.
22
+ * IE10 and IE11 do not.
23
+ */
24
+ const supportsPopStateOnHashChange = (nav) => (nav.userAgent.indexOf('Trident') === -1);
25
+ /**
26
+ * Returns false if using go(n) with hash history causes a full page reload.
27
+ */
28
+ const supportsGoWithoutReloadUsingHash = (nav) => (nav.userAgent.indexOf('Firefox') === -1);
29
+ const isExtraneousPopstateEvent = (nav, event) => (event.state === undefined &&
30
+ nav.userAgent.indexOf('CriOS') === -1);
31
+ const storageAvailable = (win, type) => {
32
+ const storage = win[type];
33
+ const x = '__storage_test__';
34
+ try {
35
+ storage.setItem(x, x);
36
+ storage.removeItem(x);
37
+ return true;
38
+ }
39
+ catch (e) {
40
+ return e instanceof DOMException && (
41
+ // everything except Firefox
42
+ e.code === 22 ||
43
+ // Firefox
44
+ e.code === 1014 ||
45
+ // test name field too, because code might not be present
46
+ // everything except Firefox
47
+ e.name === 'QuotaExceededError' ||
48
+ // Firefox
49
+ e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
50
+ // acknowledge QuotaExceededError only if there's something already stored
51
+ storage.length !== 0;
52
+ }
53
+ };
54
+
55
+ export { supportsHistory as a, supportsPopStateOnHashChange as b, supportsGoWithoutReloadUsingHash as c, isModifiedEvent as d, getConfirmation as g, isExtraneousPopstateEvent as i, storageAvailable as s };
@@ -1,4 +1,4 @@
1
- import { b as createStore, H as HttpService } from './auth.store-3ed2389e.js';
1
+ import { c as createStore, H as HttpService } from './auth.store-98fad96d.js';
2
2
 
3
3
  const { state, onChange } = createStore({
4
4
  pageNotes: [],
@@ -1,5 +1,5 @@
1
- import { b as createStore, H as HttpService } from './auth.store-3ed2389e.js';
2
- import { S as SparkleGlobal } from './util-6ef753e9.js';
1
+ import { c as createStore, H as HttpService } from './auth.store-98fad96d.js';
2
+ import { S as SparkleGlobal } from './util-a831d09d.js';
3
3
 
4
4
  const { state: state$1, onChange } = createStore({
5
5
  goals: [],
@@ -1,4 +1,4 @@
1
- import { c as componentOnReady } from './helpers-39367fe1.js';
1
+ import { c as componentOnReady } from './helpers-9d0930de.js';
2
2
 
3
3
  /*!
4
4
  * (C) Ionic http://ionicframework.com - MIT License
@@ -0,0 +1,107 @@
1
+ import { r as registerInstance, h, e as getElement } from './index-5568e3fa.js';
2
+ import { a as MoreDots } from './icons-05b6ce86.js';
3
+
4
+ const headerMobileCollapseCss = "header-mobile-collapse,header-mobile-collapse .header-mobile-collapse__content{flex:1;display:flex;justify-content:flex-end;align-items:center}header-mobile-collapse .ionic-sub-header__mobile-toggle{display:none;padding-top:14px;pointer-events:none;padding-left:8px}header-mobile-collapse .ionic-sub-header__mobile-toggle svg{height:20px;width:20px}header-mobile-collapse .UtilNav{margin-left:auto}header-mobile-collapse>ionic-search{padding-right:8px;padding-top:4px;display:none}header-mobile-collapse .label-sm-only .Dropdown-button-label,header-mobile-collapse .sm-only{display:none}@media (max-width: 800px){header-mobile-collapse .ionic-sub-header__mobile-toggle{display:block;cursor:pointer;padding-top:14px;pointer-events:all;transition:0.2s transform ease 0.1s;transform-origin:66% 50%}header-mobile-collapse .header-mobile-collapse__backdrop{position:fixed;top:100%;height:100vh;left:0;right:0;background:rgba(0, 0, 0, 0.1);cursor:pointer;opacity:0;pointer-events:none;transition:0.4s opacity}header-mobile-collapse.ionic-sub-header--mobile-active .header-mobile-collapse__backdrop{opacity:1;pointer-events:all}header-mobile-collapse>ionic-search{display:block}header-mobile-collapse .header-mobile-collapse__content{display:flex;flex-direction:column;align-items:stretch;position:fixed;width:100vw;left:0;background:white;box-shadow:0px 1px 3px rgba(2, 8, 20, 0.06), 0px 1px 2px rgba(2, 8, 20, 0.04);top:56px;padding:16px 16px 8px;max-height:calc(100vh - 64px);overflow:auto;pointer-events:none;opacity:0;transform:translateY(-10px);transition:transform 0.2s cubic-bezier(0.36, 0.66, 0.04, 1), opacity 0.2s linear}header-mobile-collapse.ionic-sub-header--mobile-active .header-mobile-collapse__content{opacity:1;pointer-events:all;transform:translateY(0);transition:transform 0.25s cubic-bezier(0.17, 0.67, 0.52, 1), opacity 0.1s linear}header-mobile-collapse .sparkle-dropdown,header-mobile-collapse .SectionNav .Dropdown{align-self:stretch}header-mobile-collapse .Dropdown .Dropdown-button,header-mobile-collapse .UtilNav .sm-only{width:100%;display:flex;justify-content:space-between;color:#5b708b;font-size:20px;line-height:24px;letter-spacing:-0.03em;padding:13px 0 14px}header-mobile-collapse .Dropdown--left .Dropdown-button{padding-left:16px;padding-right:14px;margin-bottom:10px;padding-top:10px;height:44px;box-shadow:0px 1px 2px rgba(2, 8, 20, 0.04)}header-mobile-collapse .Dropdown .Dropdown-button .Dropdown-arrow{height:26px;width:20px;margin-right:-4px}header-mobile-collapse .SectionNav .Dropdown,header-mobile-collapse .SectionNav-tabs>*{margin-right:0}header-mobile-collapse .Dropdown:focus{outline:none}header-mobile-collapse .SectionNav-tabs stencil-route-link{height:45px}header-mobile-collapse .Dropdown--right .Dropdown-button{text-align:left}header-mobile-collapse .SectionNav stencil-route,header-mobile-collapse .SectionNav-tabs,header-mobile-collapse .UtilNav{display:flex;flex-direction:column;margin-left:0;align-items:stretch}header-mobile-collapse .UtilNav>*{margin-left:0;border-bottom:1px solid #e6e6e8}header-mobile-collapse .UtilNav>:last-child{border-bottom:none}header-mobile-collapse .Dropdown-panel{position:static;border-bottom:1px solid var(--text-color--lighter)}header-mobile-collapse .SectionNav-tabs a{font-size:20px;line-height:24px;letter-spacing:-0.02em;color:#5b708b;padding-left:16px;padding-right:14px;font-weight:400}header-mobile-collapse .UtilNav a{padding:0}header-mobile-collapse .SectionNav-tabs .link-active{background:rgba(var(--ion-color-primary-rgb), 0.12);color:var(--ion-color-primary);display:flex;justify-content:space-between;width:100%;border-radius:8px}header-mobile-collapse .SectionNav-tabs .link-active::after{content:'\\2713';position:static;background:none;width:auto;font-size:16px}header-mobile-collapse .SectionNav-tabs{position:relative;padding-bottom:8px;margin-bottom:18px;margin-top:5px}header-mobile-collapse .SectionNav-tabs::after{position:absolute;bottom:0;left:-16px;width:100vw;border-bottom:1px solid #e6e6e8;content:''}header-mobile-collapse .header-mobile-collapse__content ionic-search{display:none}header-mobile-collapse .UtilNav::before{content:'More';font-size:20px;line-height:24px;letter-spacing:0.01em;color:#000;padding:6px 2px 8px}header-mobile-collapse .label-sm-only .Dropdown-button-label,header-mobile-collapse .sm-only{display:block}header-mobile-collapse .label-sm-only .Dropdown-icon,header-mobile-collapse .lg-only{display:none}header-mobile-collapse .label-sm-only .Dropdown-icon+.Dropdown-arrow{fill:#5b708b}header-mobile-collapse .UtilNav .sm-only .Dropdown-arrow{height:26px;width:20px;margin-right:-4px;fill:#b2becd}header-mobile-collapse .Dropdown-panel a{padding:8px;font-size:16px}header-mobile-collapse .Dropdown.is-open .Dropdown-panel{position:static}}";
5
+
6
+ const HeaderMobileCollapse = class {
7
+ constructor(hostRef) {
8
+ registerInstance(this, hostRef);
9
+ this.darkMode = true;
10
+ this.mobileDropdownActive = false;
11
+ this.stuck = false;
12
+ this.queued = false;
13
+ }
14
+ deactivate() {
15
+ setTimeout(() => {
16
+ this.el.classList.remove('ionic-sub-header--mobile-active');
17
+ }, 200); // give the page a chance to load in the background so it's pretty
18
+ }
19
+ getTriggerEl() {
20
+ // return (<div class="ionic-sub-header__trigger"></div>)
21
+ const trigger = document.createElement('div');
22
+ trigger.id = 'ionic-sub-header__trigger';
23
+ return trigger;
24
+ }
25
+ componentDidLoad() {
26
+ // tslint:disable-next-line
27
+ if (!this.el.before) {
28
+ return;
29
+ }
30
+ this.el.before(this.getTriggerEl());
31
+ this.init();
32
+ requestAnimationFrame(() => {
33
+ this.el.classList.add('ionic-sub-header--initialized');
34
+ });
35
+ }
36
+ init() {
37
+ this.observer = new IntersectionObserver(entries => {
38
+ if (this.queued) {
39
+ return;
40
+ }
41
+ // no intersection with screen
42
+ if (!this.stuck && entries[0].intersectionRatio === 0) {
43
+ this.queued = true;
44
+ requestAnimationFrame(() => {
45
+ this.el.classList.add('ionic-sub-header--stuck');
46
+ this.stuck = true;
47
+ this.queued = false;
48
+ });
49
+ // fully intersects with screen
50
+ }
51
+ else if (this.stuck && entries[0].intersectionRatio === 1) {
52
+ this.queued = true;
53
+ requestAnimationFrame(() => {
54
+ this.el.classList.remove('ionic-sub-header--stuck');
55
+ this.stuck = false;
56
+ this.queued = false;
57
+ });
58
+ }
59
+ }, { threshold: [0, 1] });
60
+ const headerEl = document.getElementById('ionic-sub-header__trigger');
61
+ if (this.el && headerEl) {
62
+ this.observer.observe(headerEl);
63
+ setTimeout(() => {
64
+ this.el.classList.add('ionic-sub-header--initialized');
65
+ const navBar = document.querySelector('.navbar-default');
66
+ if (navBar) {
67
+ navBar.classList.add('navbar--not-fixed');
68
+ }
69
+ }, 405);
70
+ }
71
+ }
72
+ handleMobileToggleClick() {
73
+ this.el.classList.toggle('ionic-sub-header--mobile-active');
74
+ }
75
+ render() {
76
+ return ([
77
+ h("div", { class: "header-mobile-collapse__backdrop", onClick: () => this.deactivate() }),
78
+ h("a", { class: "ionic-sub-header__mobile-toggle", onClick: () => this.handleMobileToggleClick() }, h(MoreDots, null)),
79
+ h("div", { class: "header-mobile-collapse__content" }, h("slot", null))
80
+ ]);
81
+ }
82
+ get el() { return getElement(this); }
83
+ };
84
+ HeaderMobileCollapse.style = headerMobileCollapseCss;
85
+
86
+ const buttonCss = "sparkle-button{background-color:rgba(var(--ion-color-sparkle-rgb), var(--bg-alpha, 0.06));border-radius:6px;color:var(--accent-color);display:inline-block;font-weight:600;white-space:nowrap;box-shadow:0 1px 3px rgba(0,0,0,.1)}sparkle-button a,sparkle-button button{color:inherit;display:inline-block;font-size:inherit;font-weight:inherit;padding:0.75em 1.5em}sparkle-button button{appearance:none;background:none;border:none;line-height:inherit}sparkle-button svg{fill:currentColor;height:1em;margin-bottom:-0.125em;width:1em}sparkle-button[round]{border-radius:2em}sparkle-button[primary]{background-color:rgba(var(--ion-color-sparkle-rgb));color:var(--ion-color-sparkle-contrast)}@media (hover: hover){sparkle-button:hover{--bg-alpha:0.08}sparkle-button:active{--bg-alpha:0.1}}";
87
+
88
+ const SparkleButton = class {
89
+ constructor(hostRef) {
90
+ registerInstance(this, hostRef);
91
+ this.round = false;
92
+ this.primary = false;
93
+ }
94
+ render() {
95
+ if (this.href !== undefined) {
96
+ const isInternal = /^\/course/.test(this.href);
97
+ if (isInternal) {
98
+ return (h("stencil-route-link", { url: this.href }, h("slot", null)));
99
+ }
100
+ return (h("a", { href: this.href }, h("slot", null)));
101
+ }
102
+ return (h("button", null, h("slot", null)));
103
+ }
104
+ };
105
+ SparkleButton.style = buttonCss;
106
+
107
+ export { HeaderMobileCollapse as header_mobile_collapse, SparkleButton as sparkle_button };
@@ -334,4 +334,4 @@ const shallowEqualStringMap = (map1, map2) => {
334
334
  return true;
335
335
  };
336
336
 
337
- export { addEventListener as a, getAriaLabel as b, componentOnReady as c, renderHiddenInput as d, debounceEvent as e, focusElement as f, getElementRoot as g, hasShadowDom as h, inheritAttributes as i, findItemLabel as j, raf as k, clamp as l, isEndSide as m, assert as n, debounce as o, pointerCoord as p, now as q, removeEventListener as r, shallowEqualStringMap as s, transitionEndAsync as t };
337
+ export { addEventListener as a, raf as b, componentOnReady as c, renderHiddenInput as d, clamp as e, focusElement as f, getElementRoot as g, isEndSide as h, inheritAttributes as i, assert as j, debounce as k, debounceEvent as l, findItemLabel as m, getAriaLabel as n, hasShadowDom as o, pointerCoord as p, now as q, removeEventListener as r, shallowEqualStringMap as s, transitionEndAsync as t };
@@ -15,4 +15,4 @@ const MoreDots = (props) => (h("svg", Object.assign({ viewBox: "0 0 4 16" }, pro
15
15
  const CheckmarkSoft = (props) => (h("svg", Object.assign({ viewBox: "0 0 512 512" }, props),
16
16
  h("path", { d: "M362.6 192.9L345 174.8c-.7-.8-1.8-1.2-2.8-1.2-1.1 0-2.1.4-2.8 1.2l-122 122.9-44.4-44.4c-.8-.8-1.8-1.2-2.8-1.2-1 0-2 .4-2.8 1.2l-17.8 17.8c-1.6 1.6-1.6 4.1 0 5.7l56 56c3.6 3.6 8 5.7 11.7 5.7 5.3 0 9.9-3.9 11.6-5.5h.1l133.7-134.4c1.4-1.7 1.4-4.2-.1-5.7z" })));
17
17
 
18
- export { BackArrow as B, CheckmarkSoft as C, DownArrow as D, ForwardArrow as F, MoreDots as M, Outbound as O, Menu as a };
18
+ export { BackArrow as B, CheckmarkSoft as C, DownArrow as D, ForwardArrow as F, Menu as M, Outbound as O, MoreDots as a };
@@ -1,5 +1,5 @@
1
1
  import { w as writeTask, B as Build } from './index-5568e3fa.js';
2
- import { c as componentOnReady, k as raf } from './helpers-39367fe1.js';
2
+ import { c as componentOnReady, b as raf } from './helpers-9d0930de.js';
3
3
 
4
4
  /*!
5
5
  * (C) Ionic http://ionicframework.com - MIT License
@@ -13,8 +13,8 @@ const LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';
13
13
  /*!
14
14
  * (C) Ionic http://ionicframework.com - MIT License
15
15
  */
16
- const iosTransitionAnimation = () => import('./ios.transition-b4ca8a33.js');
17
- const mdTransitionAnimation = () => import('./md.transition-ca5e0322.js');
16
+ const iosTransitionAnimation = () => import('./ios.transition-db4f4ca6.js');
17
+ const mdTransitionAnimation = () => import('./md.transition-8294b503.js');
18
18
  const transition = (opts) => {
19
19
  return new Promise((resolve, reject) => {
20
20
  writeTask(() => {