wj-elements 0.1.131 → 0.1.132

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 (419) hide show
  1. package/dist/infinite-scroll.element-XVJukzjy.js +0 -1
  2. package/dist/list.element-Ce1vIm1O.js +0 -1
  3. package/dist/localize.js +0 -1
  4. package/dist/packages/index.d.ts +99 -0
  5. package/dist/packages/localize/localize.d.ts +17 -0
  6. package/dist/packages/translations/en-GB.d.ts +13 -0
  7. package/dist/packages/translations/sk-SK.d.ts +13 -0
  8. package/dist/packages/utils/animations.d.ts +2 -0
  9. package/dist/packages/utils/date.d.ts +1 -0
  10. package/dist/packages/utils/element-utils.d.ts +46 -0
  11. package/dist/packages/utils/event.d.ts +67 -0
  12. package/dist/packages/utils/localize.d.ts +4 -0
  13. package/dist/packages/utils/permissions-api.d.ts +34 -0
  14. package/dist/packages/utils/utils.d.ts +1 -0
  15. package/dist/packages/utils/wje-import-firefox.d.ts +0 -0
  16. package/dist/packages/utils/wje-import.d.ts +0 -0
  17. package/dist/packages/wje-accordion/accordion.d.ts +2 -0
  18. package/dist/packages/wje-accordion/accordion.element.d.ts +72 -0
  19. package/dist/packages/wje-accordion-item/accordion-item.d.ts +2 -0
  20. package/dist/packages/wje-accordion-item/accordion-item.element.d.ts +40 -0
  21. package/dist/packages/wje-animation/animation.d.ts +2 -0
  22. package/dist/packages/wje-animation/animation.element.d.ts +153 -0
  23. package/dist/packages/wje-animation/animation.test.d.ts +1 -0
  24. package/dist/packages/wje-aside/aside.d.ts +2 -0
  25. package/dist/packages/wje-aside/aside.element.d.ts +31 -0
  26. package/dist/packages/wje-avatar/avatar.d.ts +2 -0
  27. package/dist/packages/wje-avatar/avatar.element.d.ts +37 -0
  28. package/dist/packages/wje-avatar/service/service.d.ts +40 -0
  29. package/dist/packages/wje-badge/badge.d.ts +2 -0
  30. package/dist/packages/wje-badge/badge.element.d.ts +35 -0
  31. package/dist/packages/wje-badge/badge.test.d.ts +1 -0
  32. package/dist/packages/wje-breadcrumb/breadcrumb.d.ts +2 -0
  33. package/dist/packages/wje-breadcrumb/breadcrumb.element.d.ts +80 -0
  34. package/dist/packages/wje-breadcrumbs/breadcrumbs.d.ts +2 -0
  35. package/dist/packages/wje-breadcrumbs/breadcrumbs.element.d.ts +97 -0
  36. package/dist/packages/wje-breadcrumbs/breadcrumbs.test.d.ts +1 -0
  37. package/dist/packages/wje-button/button.d.ts +2 -0
  38. package/dist/packages/wje-button/button.element.d.ts +173 -0
  39. package/dist/packages/wje-button/button.test.d.ts +1 -0
  40. package/dist/packages/wje-button-group/button-group.d.ts +2 -0
  41. package/dist/packages/wje-button-group/button-group.element.d.ts +39 -0
  42. package/dist/packages/wje-card/card.d.ts +2 -0
  43. package/dist/packages/wje-card/card.element.d.ts +29 -0
  44. package/dist/packages/wje-card-content/card-content.d.ts +2 -0
  45. package/dist/packages/wje-card-content/card-content.element.d.ts +22 -0
  46. package/dist/packages/wje-card-controls/card-controls.d.ts +2 -0
  47. package/dist/packages/wje-card-controls/card-controls.element.d.ts +23 -0
  48. package/dist/packages/wje-card-header/card-header.d.ts +2 -0
  49. package/dist/packages/wje-card-header/card-header.element.d.ts +22 -0
  50. package/dist/packages/wje-card-subtitle/card-subtitle.d.ts +2 -0
  51. package/dist/packages/wje-card-subtitle/card-subtitle.element.d.ts +30 -0
  52. package/dist/packages/wje-card-title/card-title.d.ts +2 -0
  53. package/dist/packages/wje-card-title/card-title.element.d.ts +32 -0
  54. package/dist/packages/wje-carousel/carousel.d.ts +2 -0
  55. package/dist/packages/wje-carousel/carousel.element.d.ts +146 -0
  56. package/dist/packages/wje-carousel-item/carousel-item.d.ts +2 -0
  57. package/dist/packages/wje-carousel-item/carousel-item.element.d.ts +38 -0
  58. package/dist/packages/wje-checkbox/checkbox.d.ts +2 -0
  59. package/dist/packages/wje-checkbox/checkbox.element.d.ts +171 -0
  60. package/dist/packages/wje-chip/chip.d.ts +2 -0
  61. package/dist/packages/wje-chip/chip.element.d.ts +29 -0
  62. package/dist/packages/wje-col/col.d.ts +2 -0
  63. package/dist/packages/wje-col/col.element.d.ts +16 -0
  64. package/dist/packages/wje-color-picker/color-picker.d.ts +2 -0
  65. package/dist/packages/wje-color-picker/color-picker.element.d.ts +187 -0
  66. package/dist/packages/wje-container/container.d.ts +2 -0
  67. package/dist/packages/wje-container/container.element.d.ts +31 -0
  68. package/dist/packages/wje-copy-button/copy-button.d.ts +2 -0
  69. package/dist/packages/wje-copy-button/copy-button.element.d.ts +89 -0
  70. package/dist/packages/wje-copy-button/service/service.d.ts +12 -0
  71. package/dist/packages/wje-dialog/dialog.d.ts +2 -0
  72. package/dist/packages/wje-dialog/dialog.element.d.ts +116 -0
  73. package/dist/packages/wje-divider/divider.d.ts +2 -0
  74. package/dist/packages/wje-divider/divider.element.d.ts +32 -0
  75. package/dist/packages/wje-dropdown/dropdown.d.ts +2 -0
  76. package/dist/packages/wje-dropdown/dropdown.element.d.ts +85 -0
  77. package/dist/packages/wje-element/element.d.ts +312 -0
  78. package/dist/packages/wje-element/service/universal-service.d.ts +18 -0
  79. package/dist/packages/wje-file-upload/file-upload.d.ts +2 -0
  80. package/dist/packages/wje-file-upload/file-upload.element.d.ts +191 -0
  81. package/dist/packages/wje-file-upload/service/service.d.ts +70 -0
  82. package/dist/packages/wje-file-upload-item/file-upload-item.d.ts +2 -0
  83. package/dist/packages/wje-file-upload-item/file-upload-item.element.d.ts +62 -0
  84. package/dist/packages/wje-footer/footer.d.ts +2 -0
  85. package/dist/packages/wje-footer/footer.element.d.ts +28 -0
  86. package/dist/packages/wje-form/form.d.ts +2 -0
  87. package/dist/packages/wje-form/form.element.d.ts +28 -0
  88. package/dist/packages/wje-format-digital/format-digital.d.ts +2 -0
  89. package/dist/packages/wje-format-digital/format-digital.element.d.ts +87 -0
  90. package/dist/packages/wje-format-digital/format-digital.test.d.ts +1 -0
  91. package/dist/packages/wje-grid/grid.d.ts +2 -0
  92. package/dist/packages/wje-grid/grid.element.d.ts +26 -0
  93. package/dist/packages/wje-header/header.d.ts +2 -0
  94. package/dist/packages/wje-header/header.element.d.ts +35 -0
  95. package/dist/packages/wje-icon/icon.d.ts +2 -0
  96. package/dist/packages/wje-icon/icon.element.d.ts +40 -0
  97. package/dist/packages/wje-icon/service/service.d.ts +11 -0
  98. package/dist/packages/wje-icon-picker/icon-picker.d.ts +2 -0
  99. package/dist/packages/wje-icon-picker/icon-picker.element.d.ts +197 -0
  100. package/dist/packages/wje-img/img.d.ts +2 -0
  101. package/dist/packages/wje-img/img.element.d.ts +30 -0
  102. package/dist/packages/wje-img-comparer/img-comparer.d.ts +2 -0
  103. package/dist/packages/wje-img-comparer/img-comparer.element.d.ts +60 -0
  104. package/dist/packages/wje-img-comparer/service/service.d.ts +1 -0
  105. package/dist/packages/wje-infinite-scroll/infinite-scroll.d.ts +2 -0
  106. package/dist/packages/wje-infinite-scroll/infinite-scroll.element.d.ts +134 -0
  107. package/dist/packages/wje-input/input.d.ts +2 -0
  108. package/dist/packages/wje-input/input.element.d.ts +204 -0
  109. package/dist/packages/wje-input-file/input-file.d.ts +2 -0
  110. package/dist/packages/wje-input-file/input-file.element.d.ts +50 -0
  111. package/dist/packages/wje-item/item.d.ts +2 -0
  112. package/dist/packages/wje-item/item.element.d.ts +68 -0
  113. package/dist/packages/wje-kanban/kanban.d.ts +2 -0
  114. package/dist/packages/wje-kanban/kanban.element.d.ts +183 -0
  115. package/dist/packages/wje-label/label.d.ts +2 -0
  116. package/dist/packages/wje-label/label.element.d.ts +34 -0
  117. package/dist/packages/wje-list/list.d.ts +2 -0
  118. package/dist/packages/wje-list/list.element.d.ts +31 -0
  119. package/dist/packages/wje-main/main.d.ts +2 -0
  120. package/dist/packages/wje-main/main.element.d.ts +30 -0
  121. package/dist/packages/wje-masonry/masonry.d.ts +2 -0
  122. package/dist/packages/wje-masonry/masonry.element.d.ts +114 -0
  123. package/dist/packages/wje-masonry/service/service.d.ts +32 -0
  124. package/dist/packages/wje-menu/menu.d.ts +2 -0
  125. package/dist/packages/wje-menu/menu.element.d.ts +47 -0
  126. package/dist/packages/wje-menu-button/menu-button.d.ts +2 -0
  127. package/dist/packages/wje-menu-button/menu-button.element.d.ts +34 -0
  128. package/dist/packages/wje-menu-item/menu-item.d.ts +2 -0
  129. package/dist/packages/wje-menu-item/menu-item.element.d.ts +139 -0
  130. package/dist/packages/wje-menu-label/menu-label.d.ts +2 -0
  131. package/dist/packages/wje-menu-label/menu-label.element.d.ts +39 -0
  132. package/dist/packages/wje-option/option.d.ts +2 -0
  133. package/dist/packages/wje-option/option.element.d.ts +59 -0
  134. package/dist/packages/wje-options/options.d.ts +2 -0
  135. package/dist/packages/wje-options/options.element.d.ts +180 -0
  136. package/dist/packages/wje-orgchart/orgchart.d.ts +2 -0
  137. package/dist/packages/wje-orgchart/orgchart.element.d.ts +24 -0
  138. package/dist/packages/wje-orgchart-group/orgchart-group.d.ts +2 -0
  139. package/dist/packages/wje-orgchart-group/orgchart-group.element.d.ts +28 -0
  140. package/dist/packages/wje-orgchart-item/orgchart-item.d.ts +2 -0
  141. package/dist/packages/wje-orgchart-item/orgchart-item.element.d.ts +49 -0
  142. package/dist/packages/wje-panel/panel.d.ts +2 -0
  143. package/dist/packages/wje-panel/panel.element.d.ts +34 -0
  144. package/dist/packages/wje-popup/popup.d.ts +2 -0
  145. package/dist/packages/wje-popup/popup.element.d.ts +93 -0
  146. package/dist/packages/wje-progress-bar/progress-bar.d.ts +2 -0
  147. package/dist/packages/wje-progress-bar/progress-bar.element.d.ts +96 -0
  148. package/dist/packages/wje-qr-code/qr-code.d.ts +2 -0
  149. package/dist/packages/wje-qr-code/qr-code.element.d.ts +33 -0
  150. package/dist/packages/wje-radio/radio.d.ts +2 -0
  151. package/dist/packages/wje-radio/radio.element.d.ts +53 -0
  152. package/dist/packages/wje-radio-group/radio-group.d.ts +2 -0
  153. package/dist/packages/wje-radio-group/radio-group.element.d.ts +137 -0
  154. package/dist/packages/wje-rate/rate.d.ts +2 -0
  155. package/dist/packages/wje-rate/rate.element.d.ts +156 -0
  156. package/dist/packages/wje-relative-time/relative-time.d.ts +2 -0
  157. package/dist/packages/wje-relative-time/relative-time.element.d.ts +55 -0
  158. package/dist/packages/wje-relative-time/relative-time.test.d.ts +1 -0
  159. package/dist/packages/wje-reorder/reorder.d.ts +2 -0
  160. package/dist/packages/wje-reorder/reorder.element.d.ts +119 -0
  161. package/dist/packages/wje-reorder-dropzone/reorder-dropzone.d.ts +2 -0
  162. package/dist/packages/wje-reorder-dropzone/reorder-dropzone.element.d.ts +23 -0
  163. package/dist/packages/wje-reorder-handle/reorder-handle.d.ts +2 -0
  164. package/dist/packages/wje-reorder-handle/reorder-handle.element.d.ts +75 -0
  165. package/dist/packages/wje-reorder-item/reorder-item.d.ts +2 -0
  166. package/dist/packages/wje-reorder-item/reorder-item.element.d.ts +24 -0
  167. package/dist/packages/wje-route/route.d.ts +2 -0
  168. package/dist/packages/wje-route/route.element.d.ts +22 -0
  169. package/dist/packages/wje-router/router.d.ts +2 -0
  170. package/dist/packages/wje-router/router.element.d.ts +39 -0
  171. package/dist/packages/wje-router-link/router-link.d.ts +2 -0
  172. package/dist/packages/wje-router-link/router-link.element.d.ts +31 -0
  173. package/dist/packages/wje-router-outlet/router-outlet.d.ts +2 -0
  174. package/dist/packages/wje-router-outlet/router-outlet.element.d.ts +15 -0
  175. package/dist/packages/wje-row/row.d.ts +2 -0
  176. package/dist/packages/wje-row/row.element.d.ts +23 -0
  177. package/dist/packages/wje-select/select.d.ts +2 -0
  178. package/dist/packages/wje-select/select.element.d.ts +315 -0
  179. package/dist/packages/wje-slider/slider.d.ts +2 -0
  180. package/dist/packages/wje-slider/slider.element.d.ts +103 -0
  181. package/dist/packages/wje-split-view/service/service.d.ts +1 -0
  182. package/dist/packages/wje-split-view/split-view.d.ts +2 -0
  183. package/dist/packages/wje-split-view/split-view.element.d.ts +66 -0
  184. package/dist/packages/wje-status/status.d.ts +2 -0
  185. package/dist/packages/wje-status/status.element.d.ts +26 -0
  186. package/dist/packages/wje-step/step.d.ts +2 -0
  187. package/dist/packages/wje-step/step.element.d.ts +23 -0
  188. package/dist/packages/wje-stepper/stepper.d.ts +2 -0
  189. package/dist/packages/wje-stepper/stepper.element.d.ts +78 -0
  190. package/dist/packages/wje-store/default-store-actions.d.ts +20 -0
  191. package/dist/packages/wje-store/pubsub.d.ts +21 -0
  192. package/dist/packages/wje-store/store.d.ts +153 -0
  193. package/dist/packages/wje-tab/tab.d.ts +2 -0
  194. package/dist/packages/wje-tab/tab.element.d.ts +41 -0
  195. package/dist/packages/wje-tab-group/tab-group.d.ts +2 -0
  196. package/dist/packages/wje-tab-group/tab-group.element.d.ts +67 -0
  197. package/dist/packages/wje-tab-panel/tab-panel.d.ts +2 -0
  198. package/dist/packages/wje-tab-panel/tab-panel.element.d.ts +23 -0
  199. package/dist/packages/wje-textarea/textarea.d.ts +2 -0
  200. package/dist/packages/wje-textarea/textarea.element.d.ts +176 -0
  201. package/dist/packages/wje-thumbnail/thumbnail.d.ts +2 -0
  202. package/dist/packages/wje-thumbnail/thumbnail.element.d.ts +31 -0
  203. package/dist/packages/wje-timeline/timeline.d.ts +2 -0
  204. package/dist/packages/wje-timeline/timeline.element.d.ts +25 -0
  205. package/dist/packages/wje-timeline-item/timeline-item.d.ts +2 -0
  206. package/dist/packages/wje-timeline-item/timeline-item.element.d.ts +27 -0
  207. package/dist/packages/wje-toast/toast.d.ts +2 -0
  208. package/dist/packages/wje-toast/toast.element.d.ts +173 -0
  209. package/dist/packages/wje-toast/toast.test.d.ts +1 -0
  210. package/dist/packages/wje-toggle/toggle.d.ts +2 -0
  211. package/dist/packages/wje-toggle/toggle.element.d.ts +65 -0
  212. package/dist/packages/wje-toolbar/toolbar.d.ts +2 -0
  213. package/dist/packages/wje-toolbar/toolbar.element.d.ts +39 -0
  214. package/dist/packages/wje-toolbar-action/toolbar-action.d.ts +2 -0
  215. package/dist/packages/wje-toolbar-action/toolbar-action.element.d.ts +35 -0
  216. package/dist/packages/wje-tooltip/tooltip.d.ts +2 -0
  217. package/dist/packages/wje-tooltip/tooltip.element.d.ts +71 -0
  218. package/dist/packages/wje-visually-hidden/visually-hidden.d.ts +2 -0
  219. package/dist/packages/wje-visually-hidden/visually-hidden.element.d.ts +29 -0
  220. package/dist/{popup.element-4DNn6DjX.js → popup.element-tyYxow0p.js} +199 -80
  221. package/dist/router-links-CJnOdbas.js +0 -1
  222. package/dist/wje-accordion-item.js +0 -1
  223. package/dist/wje-accordion.js +0 -1
  224. package/dist/wje-animation.js +2 -5
  225. package/dist/wje-aside.js +0 -1
  226. package/dist/wje-avatar.js +0 -1
  227. package/dist/wje-badge.js +0 -1
  228. package/dist/wje-breadcrumb.js +0 -1
  229. package/dist/wje-breadcrumbs.js +0 -1
  230. package/dist/wje-button-group.js +0 -1
  231. package/dist/wje-button.js +0 -1
  232. package/dist/wje-card-content.js +0 -1
  233. package/dist/wje-card-controls.js +0 -1
  234. package/dist/wje-card-header.js +0 -1
  235. package/dist/wje-card-subtitle.js +0 -1
  236. package/dist/wje-card-title.js +0 -1
  237. package/dist/wje-card.js +0 -1
  238. package/dist/wje-carousel-item.js +0 -1
  239. package/dist/wje-carousel.js +0 -1
  240. package/dist/wje-checkbox.js +0 -1
  241. package/dist/wje-chip.js +0 -1
  242. package/dist/wje-col.js +0 -1
  243. package/dist/wje-color-picker.js +0 -1
  244. package/dist/wje-container.js +0 -1
  245. package/dist/wje-copy-button.js +0 -1
  246. package/dist/wje-dialog.js +29 -3
  247. package/dist/wje-divider.js +0 -1
  248. package/dist/wje-dropdown.js +1 -2
  249. package/dist/wje-element.js +0 -1
  250. package/dist/wje-fetchAndParseCSS.js +0 -1
  251. package/dist/wje-file-upload-item.js +0 -1
  252. package/dist/wje-file-upload.js +29 -14
  253. package/dist/wje-footer.js +0 -1
  254. package/dist/wje-form.js +0 -1
  255. package/dist/wje-format-digital.js +0 -1
  256. package/dist/wje-grid.js +0 -1
  257. package/dist/wje-header.js +0 -1
  258. package/dist/wje-icon-picker.js +1 -2
  259. package/dist/wje-icon.js +0 -1
  260. package/dist/wje-img-comparer.js +0 -1
  261. package/dist/wje-img.js +0 -1
  262. package/dist/wje-infinite-scroll.js +0 -1
  263. package/dist/wje-input-file.js +0 -1
  264. package/dist/wje-input.js +0 -1
  265. package/dist/wje-item.js +0 -1
  266. package/dist/wje-kanban.js +0 -1
  267. package/dist/wje-label.js +0 -1
  268. package/dist/wje-list.js +0 -1
  269. package/dist/wje-main.js +0 -1
  270. package/dist/wje-masonry.js +1 -3
  271. package/dist/wje-master.js +4 -9
  272. package/dist/wje-menu-button.js +0 -1
  273. package/dist/wje-menu-item.js +0 -1
  274. package/dist/wje-menu-label.js +0 -1
  275. package/dist/wje-menu.js +0 -1
  276. package/dist/wje-option.js +0 -1
  277. package/dist/wje-options.js +0 -1
  278. package/dist/wje-orgchart-group.js +0 -1
  279. package/dist/wje-orgchart-item.js +0 -1
  280. package/dist/wje-orgchart.js +0 -1
  281. package/dist/wje-popup.js +1 -2
  282. package/dist/wje-progress-bar.js +0 -1
  283. package/dist/wje-qr-code.js +2684 -2679
  284. package/dist/wje-radio-group.js +0 -1
  285. package/dist/wje-radio.js +0 -1
  286. package/dist/wje-rate.js +0 -1
  287. package/dist/wje-relative-time.js +0 -1
  288. package/dist/wje-reorder-dropzone.js +0 -1
  289. package/dist/wje-reorder-handle.js +0 -1
  290. package/dist/wje-reorder-item.js +0 -1
  291. package/dist/wje-reorder.js +0 -1
  292. package/dist/wje-route.js +0 -1
  293. package/dist/wje-router-link.js +0 -1
  294. package/dist/wje-router-outlet.js +0 -1
  295. package/dist/wje-routerx.js +0 -1
  296. package/dist/wje-row.js +0 -1
  297. package/dist/wje-select.js +1 -2
  298. package/dist/wje-slider.js +0 -1
  299. package/dist/wje-sliding-container.js +0 -1
  300. package/dist/wje-split-view.js +0 -1
  301. package/dist/wje-status.js +0 -1
  302. package/dist/wje-step.js +0 -1
  303. package/dist/wje-stepper.js +0 -1
  304. package/dist/wje-store.js +7 -7
  305. package/dist/wje-tab-group.js +0 -1
  306. package/dist/wje-tab-panel.js +0 -1
  307. package/dist/wje-tab.js +0 -1
  308. package/dist/wje-textarea.js +0 -1
  309. package/dist/wje-thumbnail.js +0 -1
  310. package/dist/wje-toast.js +0 -1
  311. package/dist/wje-toggle.js +0 -1
  312. package/dist/wje-toolbar-action.js +0 -1
  313. package/dist/wje-toolbar.js +0 -1
  314. package/dist/wje-tooltip.js +0 -1
  315. package/dist/wje-visually-hidden.js +0 -1
  316. package/package.json +20 -8
  317. package/dist/infinite-scroll.element-XVJukzjy.js.map +0 -1
  318. package/dist/list.element-Ce1vIm1O.js.map +0 -1
  319. package/dist/localize.js.map +0 -1
  320. package/dist/popup.element-4DNn6DjX.js.map +0 -1
  321. package/dist/router-links-CJnOdbas.js.map +0 -1
  322. package/dist/wje-accordion-item.js.map +0 -1
  323. package/dist/wje-accordion.js.map +0 -1
  324. package/dist/wje-animation.js.map +0 -1
  325. package/dist/wje-aside.js.map +0 -1
  326. package/dist/wje-avatar.js.map +0 -1
  327. package/dist/wje-badge.js.map +0 -1
  328. package/dist/wje-breadcrumb.js.map +0 -1
  329. package/dist/wje-breadcrumbs.js.map +0 -1
  330. package/dist/wje-button-group.js.map +0 -1
  331. package/dist/wje-button.js.map +0 -1
  332. package/dist/wje-card-content.js.map +0 -1
  333. package/dist/wje-card-controls.js.map +0 -1
  334. package/dist/wje-card-header.js.map +0 -1
  335. package/dist/wje-card-subtitle.js.map +0 -1
  336. package/dist/wje-card-title.js.map +0 -1
  337. package/dist/wje-card.js.map +0 -1
  338. package/dist/wje-carousel-item.js.map +0 -1
  339. package/dist/wje-carousel.js.map +0 -1
  340. package/dist/wje-checkbox.js.map +0 -1
  341. package/dist/wje-chip.js.map +0 -1
  342. package/dist/wje-col.js.map +0 -1
  343. package/dist/wje-color-picker.js.map +0 -1
  344. package/dist/wje-container.js.map +0 -1
  345. package/dist/wje-copy-button.js.map +0 -1
  346. package/dist/wje-dialog.js.map +0 -1
  347. package/dist/wje-divider.js.map +0 -1
  348. package/dist/wje-dropdown.js.map +0 -1
  349. package/dist/wje-element.js.map +0 -1
  350. package/dist/wje-fetchAndParseCSS.js.map +0 -1
  351. package/dist/wje-file-upload-item.js.map +0 -1
  352. package/dist/wje-file-upload.js.map +0 -1
  353. package/dist/wje-footer.js.map +0 -1
  354. package/dist/wje-form.js.map +0 -1
  355. package/dist/wje-format-digital.js.map +0 -1
  356. package/dist/wje-grid.js.map +0 -1
  357. package/dist/wje-header.js.map +0 -1
  358. package/dist/wje-icon-picker.js.map +0 -1
  359. package/dist/wje-icon.js.map +0 -1
  360. package/dist/wje-img-comparer.js.map +0 -1
  361. package/dist/wje-img.js.map +0 -1
  362. package/dist/wje-infinite-scroll.js.map +0 -1
  363. package/dist/wje-input-file.js.map +0 -1
  364. package/dist/wje-input.js.map +0 -1
  365. package/dist/wje-item.js.map +0 -1
  366. package/dist/wje-kanban.js.map +0 -1
  367. package/dist/wje-label.js.map +0 -1
  368. package/dist/wje-list.js.map +0 -1
  369. package/dist/wje-main.js.map +0 -1
  370. package/dist/wje-masonry.js.map +0 -1
  371. package/dist/wje-master.js.map +0 -1
  372. package/dist/wje-menu-button.js.map +0 -1
  373. package/dist/wje-menu-item.js.map +0 -1
  374. package/dist/wje-menu-label.js.map +0 -1
  375. package/dist/wje-menu.js.map +0 -1
  376. package/dist/wje-option.js.map +0 -1
  377. package/dist/wje-options.js.map +0 -1
  378. package/dist/wje-orgchart-group.js.map +0 -1
  379. package/dist/wje-orgchart-item.js.map +0 -1
  380. package/dist/wje-orgchart.js.map +0 -1
  381. package/dist/wje-popup.js.map +0 -1
  382. package/dist/wje-progress-bar.js.map +0 -1
  383. package/dist/wje-qr-code.js.map +0 -1
  384. package/dist/wje-radio-group.js.map +0 -1
  385. package/dist/wje-radio.js.map +0 -1
  386. package/dist/wje-rate.js.map +0 -1
  387. package/dist/wje-relative-time.js.map +0 -1
  388. package/dist/wje-reorder-dropzone.js.map +0 -1
  389. package/dist/wje-reorder-handle.js.map +0 -1
  390. package/dist/wje-reorder-item.js.map +0 -1
  391. package/dist/wje-reorder.js.map +0 -1
  392. package/dist/wje-route.js.map +0 -1
  393. package/dist/wje-router-link.js.map +0 -1
  394. package/dist/wje-router-outlet.js.map +0 -1
  395. package/dist/wje-routerx.js.map +0 -1
  396. package/dist/wje-row.js.map +0 -1
  397. package/dist/wje-select.js.map +0 -1
  398. package/dist/wje-slider.js.map +0 -1
  399. package/dist/wje-sliding-container.js.map +0 -1
  400. package/dist/wje-split-view.js.map +0 -1
  401. package/dist/wje-status.js.map +0 -1
  402. package/dist/wje-step.js.map +0 -1
  403. package/dist/wje-stepper.js.map +0 -1
  404. package/dist/wje-store.js.map +0 -1
  405. package/dist/wje-tab-group.js.map +0 -1
  406. package/dist/wje-tab-panel.js.map +0 -1
  407. package/dist/wje-tab.js.map +0 -1
  408. package/dist/wje-textarea.js.map +0 -1
  409. package/dist/wje-thumbnail.js.map +0 -1
  410. package/dist/wje-toast.js.map +0 -1
  411. package/dist/wje-toggle.js.map +0 -1
  412. package/dist/wje-toolbar-action.js.map +0 -1
  413. package/dist/wje-toolbar.js.map +0 -1
  414. package/dist/wje-tooltip.js.map +0 -1
  415. package/dist/wje-tree-item.js +0 -121
  416. package/dist/wje-tree-item.js.map +0 -1
  417. package/dist/wje-tree.js +0 -68
  418. package/dist/wje-tree.js.map +0 -1
  419. package/dist/wje-visually-hidden.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-radio-group.js","sources":["../packages/wje-radio-group/radio-group.element.js","../packages/wje-radio-group/radio-group.js"],"sourcesContent":["import { default as WJElement } from '../wje-element/element.js';\nimport Radio from '../wje-radio/radio.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * `RadioGroup` is a custom web component that represents a group of radio buttons.\n * @summary This element represents a group of radio buttons.\n * @documentation https://elements.webjet.sk/components/radio-group\n * @status stable\n * @augments {WJElement}\n * @slot - The default slot for the radio group.\n * @tag wje-radio-group\n */\n\nexport default class RadioGroup extends WJElement {\n /**\n * Creates an instance of RadioGroup.\n * @class\n */\n constructor() {\n super();\n\n this.internals = this.attachInternals();\n }\n\n className = 'RadioGroup';\n\n /**\n * Returns the CSS styles for the component.\n * @static\n * @returns {CSSStyleSheet}\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Whether the input is associated with a form.\n * @type {boolean}\n */\n static formAssociated = true;\n\n /**\n * Setter for the value attribute.\n * @param {string} value The value to set.\n */\n set value(value) {\n if (this.checkRadio(value)) {\n this.setAttribute('value', value);\n this.internals.setFormValue(value);\n }\n }\n\n /**\n * Getter for the value attribute.\n * @returns {string} The value of the attribute.\n */\n get value() {\n return this.getAttribute('value');\n }\n\n /**\n * Getter for the form attribute.\n * @returns {HTMLFormElement} The form the input is associated with.\n */\n get form() {\n return this.internals.form;\n }\n\n /**\n * Getter for the name attribute.\n * @returns {string} The name of the input.\n */\n get name() {\n return this.getAttribute('name');\n }\n\n /**\n * Getter for the type attribute.\n * @returns {string} The type of the input.\n */\n get type() {\n return this.localName;\n }\n\n /**\n * Getter for the validity attribute.\n * @returns {ValidityState} The validity state of the input.\n */\n get validity() {\n return this.internals.validity;\n }\n\n /**\n * Getter for the validationMessage attribute.\n * @returns {string} The validation message of the input.\n */\n get validationMessage() {\n return this.internals.validationMessage;\n }\n\n /**\n * Getter for the willValidate attribute.\n * @returns {boolean} Whether the input will be validated.\n */\n get willValidate() {\n return this.internals.willValidate;\n }\n\n /**\n * @summary Getter for the defaultValue attribute.\n * This method retrieves the 'value' attribute of the custom input element.\n * The 'value' attribute represents the default value of the input element.\n * If the 'value' attribute is not set, it returns an empty string.\n * @returns {string} The default value of the input element.\n */\n get defaultValue() {\n return this.getAttribute('value') ?? '';\n }\n\n /**\n * @summary Setter for the defaultValue attribute.\n * This method sets the 'value' attribute of the custom input element to the provided value.\n * The 'value' attribute represents the default value of the input element.\n * @param {string} value The value to set as the default value.\n */\n set defaultValue(value) {\n this.setAttribute('value', value);\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n }\n\n /**\n * Draws the component for the radio group.\n * @returns {DocumentFragment}\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n let native = document.createElement('div');\n native.classList.add('native-radio-group', this.hasAttribute('inline') ? 'wje-inline' : 'ddd');\n\n let slot = document.createElement('slot');\n\n let label = document.createElement('label');\n label.innerText = this.label;\n if (this.value && !this.hasAttribute('error')) label.classList.add('fade');\n\n if (this.label) {\n native.appendChild(label);\n }\n\n native.appendChild(slot);\n\n fragment.appendChild(native);\n\n return fragment;\n }\n\n /**\n * Adds event listeners after the component is drawn. Handles the selection of radio buttons.\n */\n afterDraw() {\n this.checkRadio(this.value);\n\n this.addEventListener('wje-radio:input', (e) => {\n if (this.checkRadio(e.detail.context.value)) {\n this.value = e.detail.context.value;\n }\n });\n }\n\n /**\n * Returns the radio button with the given value.\n * @param {string} value The value of the radio button.\n * @returns {Radio} The radio button.\n */\n getRadioByValue(value) {\n return this.getAllElements().find((el) => el instanceof Radio && el.value === value);\n }\n\n /**\n * Removes the check from all radio buttons.\n */\n removeCheck() {\n this.getAllElements().forEach((el) => {\n if (el instanceof Radio) el.checked = false;\n });\n }\n\n /**\n * Sets the given radio button to checked.\n */\n checkRadio(value) {\n this.removeCheck();\n\n const radio = this.getRadioByValue(value);\n if (radio) {\n radio.checked = true;\n return true;\n }\n\n console.error(`Radio with value ${value} not found`);\n return false;\n }\n\n /**\n * Retrieves all direct child elements of the current element.\n * @returns {HTMLElement[]} An array of child elements.\n */\n getAllElements() {\n return Array.from(this.children);\n }\n\n /**\n * The formResetCallback method is a built-in lifecycle callback that gets called when a form gets reset.\n * This method is responsible for resetting the value of the custom input element to its default value.\n * It also resets the form value and validity state in the form internals.\n * @function\n */\n formResetCallback() {\n // Set the value of the custom input element to its default value\n this.value = this.defaultValue;\n // Reset the form value in the form internals to the default value\n this.internals.setFormValue(this.defaultValue);\n // Reset the validity state in the form internals\n this.internals.setValidity({});\n }\n\n /**\n * The formStateRestoreCallback method is a built-in lifecycle callback that gets called when the state of a form-associated custom element is restored.\n * This method is responsible for restoring the value of the custom input element to its saved state.\n * It also restores the form value and validity state in the form internals to their saved states.\n * @param {object} state The saved state of the custom input element.\n * @function\n */\n formStateRestoreCallback(state) {\n // Set the value of the custom input element to its saved value\n this.value = state.value;\n // Restore the form value in the form internals to the saved value\n this.internals.setFormValue(state.value);\n // Restore the validity state in the form internals to the saved state\n this.internals.setValidity({});\n }\n\n /**\n * The formStateSaveCallback method is a built-in lifecycle callback that gets called when the state of a form-associated custom element is saved.\n * This method is responsible for saving the value of the custom input element.\n * @returns {object} The saved state of the custom input element.\n * @function\n */\n formStateSaveCallback() {\n return {\n value: this.value,\n };\n }\n\n /**\n * The formDisabledCallback method is a built-in lifecycle callback that gets called when the disabled state of a form-associated custom element changes.\n * This method is not implemented yet.\n * @param {boolean} disabled The new disabled state of the custom input element.\n * @function\n */\n formDisabledCallback(disabled) {\n console.warn('formDisabledCallback not implemented yet');\n }\n}\n","import RadioGroup from './radio-group.element.js';\n\nexport default RadioGroup;\n\nRadioGroup.define('wje-radio-group', RadioGroup);\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-radio.js","sources":["../packages/wje-radio/radio.element.js","../packages/wje-radio/radio.js"],"sourcesContent":["import { default as WJElement, event } from '../wje-element/element.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * @summary This class represents a Radio button element, extending the WJElement class.\n * @documentation https://elements.webjet.sk/components/radio\n * @status stable\n * @augments WJElement\n * @slot - Default slot for the radio button label content.\n * @csspart native-radio - The native wrapper for the radio button.\n * @cssproperty [--wje-radio-margin-inline=0] - Specifies the horizontal (left and right) margin for the radio button. Accepts any valid CSS length unit (e.g., `px`, `rem`, `%`) to control spacing on both sides of the component.\n * @cssproperty [--wje-radio-margin-top=0] - Defines the top margin for the radio button. Accepts any valid CSS length value to adjust vertical spacing above the component.\n * @cssproperty [--wje-radio-margin-bottom=0] - Sets the bottom margin for the radio button. Accepts any valid CSS length value to adjust vertical spacing below the component.\n * // @fires wje-radio:change - Dispatched when the radio button's state changes.\n * // @fires wje-radio:input - Dispatched when the radio button is interacted with.\n */\n\nexport default class Radio extends WJElement {\n /**\n * Creates an instance of Radio.\n */\n constructor() {\n super();\n\n this._checked = false;\n }\n\n /**\n * Sets the name of the radio button.\n * @param value\n */\n set checked(value) {\n this._checked = value;\n\n if (value) this.setAttribute('checked', '');\n else this.removeAttribute('checked');\n }\n\n /**\n * Gets the checked property of the radio button.\n * @returns {boolean}\n */\n get checked() {\n return this._checked;\n }\n\n /**\n * Sets the color of the radio button.\n * @type {string}\n */\n className = 'Radio';\n\n /**\n * Returns the CSS styles for the component.\n * @returns {CSSStyleSheet}\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Returns the list of attributes to observe for changes.\n * @static\n * @returns {Array<string>}\n */\n static get observedAttributes() {\n return ['checked'];\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n }\n\n /**\n * Draws the radio button.\n * @returns {DocumentFragment}\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n let native = document.createElement('div');\n native.classList.add('native-radio');\n\n if (this.color) native.classList.add(this.color);\n\n this.input = document.createElement('input');\n this.input.type = 'radio';\n this.input.id = 'radio';\n this.input.name = this.name + '-radio';\n this.input.checked = this.hasAttribute('checked');\n this.input.disabled = this.hasAttribute('disabled');\n\n let label = document.createElement('label');\n label.htmlFor = 'radio';\n label.innerHTML = '<slot></slot>';\n\n native.appendChild(this.input);\n native.appendChild(label);\n\n fragment.appendChild(native);\n\n return fragment;\n }\n\n /**\n * Sets up the event listeners for the component.\n */\n afterDraw() {\n if (!this.hasAttribute('disabled')) {\n event.addListener(this, 'click', 'wje-radio:change');\n event.addListener(this, 'click', 'wje-radio:input');\n }\n }\n\n /**\n * Called when an attribute changes.\n * @param {object} e\n */\n inputEvent = (e) => {\n this.checked = e.target.checked;\n };\n\n /**\n * Toggles the radio button.\n */\n beforeDisconnect() {\n event.removeElement(this);\n }\n}\n","import Radio from './radio.element.js';\n\nexport default Radio;\n\nRadio.define('wje-radio', Radio);\n"],"names":[],"mappings":";;;;;AAiBe,MAAM,cAAc,UAAU;AAAA;AAAA;AAAA;AAAA,EAIzC,cAAc;AACV;AA4BJ;AAAA;AAAA;AAAA;AAAA,qCAAY;AAuEZ;AAAA;AAAA;AAAA;AAAA,sCAAa,CAAC,MAAM;AAChB,WAAK,UAAU,EAAE,OAAO;AAAA,IAChC;AAnGQ,SAAK,WAAW;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,IAAI,QAAQ,OAAO;AACf,SAAK,WAAW;AAEhB,QAAI,MAAO,MAAK,aAAa,WAAW,EAAE;AAAA,QACrC,MAAK,gBAAgB,SAAS;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,IAAI,UAAU;AACV,WAAO,KAAK;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAYD,WAAW,gBAAgB;AACvB,WAAO;AAAA,EACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,WAAW,qBAAqB;AAC5B,WAAO,CAAC,SAAS;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKD,kBAAkB;AACd,SAAK,eAAe;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO;AACH,QAAI,WAAW,SAAS;AAExB,QAAI,SAAS,SAAS,cAAc,KAAK;AACzC,WAAO,UAAU,IAAI,cAAc;AAEnC,QAAI,KAAK,MAAO,QAAO,UAAU,IAAI,KAAK,KAAK;AAE/C,SAAK,QAAQ,SAAS,cAAc,OAAO;AAC3C,SAAK,MAAM,OAAO;AAClB,SAAK,MAAM,KAAK;AAChB,SAAK,MAAM,OAAO,KAAK,OAAO;AAC9B,SAAK,MAAM,UAAU,KAAK,aAAa,SAAS;AAChD,SAAK,MAAM,WAAW,KAAK,aAAa,UAAU;AAElD,QAAI,QAAQ,SAAS,cAAc,OAAO;AAC1C,UAAM,UAAU;AAChB,UAAM,YAAY;AAElB,WAAO,YAAY,KAAK,KAAK;AAC7B,WAAO,YAAY,KAAK;AAExB,aAAS,YAAY,MAAM;AAE3B,WAAO;AAAA,EACV;AAAA;AAAA;AAAA;AAAA,EAKD,YAAY;AACR,QAAI,CAAC,KAAK,aAAa,UAAU,GAAG;AAChC,YAAM,YAAY,MAAM,SAAS,kBAAkB;AACnD,YAAM,YAAY,MAAM,SAAS,iBAAiB;AAAA,IACrD;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAaD,mBAAmB;AACf,UAAM,cAAc,IAAI;AAAA,EAC3B;AACL;AC/HA,MAAM,OAAO,aAAa,KAAK;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-rate.js","sources":["../packages/wje-rate/rate.element.js","../packages/wje-rate/rate.js"],"sourcesContent":["import { default as WJElement } from '../wje-element/element.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * `Rate` is a custom web component that represents a rating component.\n * @summary This element represents a rating component.\n * @documentation https://elements.webjet.sk/components/rate\n * @status stable\n * @augments {WJElement}\n * @attribute {number} precision - The precision of the rating component.\n * @attribute {number} max - The maximum value of the rating component.\n * @attribute {Array<string>} icons - The icons of the rating component.\n * @csspart native - The native part of the rating component.\n * @cssproperty [--wje-rate-gap=.25rem] - Defines the spacing (gap) between individual items in the rating component. Accepts any valid CSS length unit (e.g., `px`, `rem`, `em`) to adjust the distance between rating elements.\n * @cssproperty [--wje-rate-color=var(--wje-color-contrast-11)] - Specifies the default color of the rating items. Accepts any valid CSS color value, including named colors, hex values, RGB, or CSS variables.\n * @cssproperty [--wje-rate-selected-color=var(--wje-color-danger-9)] - Sets the color for selected or highlighted rating items. This property helps visually distinguish selected ratings. Accepts any valid CSS color value.\n * @tag wje-rate\n */\n\nexport default class Rate extends WJElement {\n /**\n * Creates an instance of Rate.\n * @class\n */\n constructor() {\n super();\n }\n\n /**\n * Sets the precision of the rating component.\n * @param {number} value The value to set.\n */\n set precision(value) {\n this.setAttribute('precision', value);\n }\n\n /**\n * Gets the precision of the rating component.\n * @returns {number} The value of the precision.\n */\n get precision() {\n return this.hasAttribute('precision') ? +this.getAttribute('precision') : 1;\n }\n\n /**\n * Sets the maximum value of the rating component.\n * @param {number} value The value to set.\n */\n set max(value) {\n this.setAttribute('max', value);\n }\n\n /**\n * Gets the maximum value of the rating component.\n * @returns {number} The value of the maximum value.\n */\n get max() {\n return this.hasAttribute('icons') ? this.icons.length : +this.getAttribute('max');\n }\n\n /**\n * Sets the icons of the rating component.\n * @param {Array<string>} value The value to set.\n */\n set icons(value) {\n return value;\n }\n\n /**\n * Gets the icons of the rating component.\n * @returns {Array<string>} The value of the icons.\n */\n get icons() {\n return this.hasAttribute('icons') ? JSON.parse(this.getAttribute('icons').replace(/'/g, '\"')) : ['star'];\n }\n\n /**\n * Sets the value of the rating component.\n * @param {number} value The value to set.\n */\n set value(value) {\n this.setAttribute('value', value);\n }\n\n /**\n * Gets the value of the rating component.\n * @returns {number} The value of the rating component.\n */\n get value() {\n return this.hasAttribute('value') ? +this.getAttribute('value') : 0;\n }\n\n /**\n * Sets the hover value of the rating component.\n * @type {string}\n */\n className = 'Rate';\n\n /**\n * Returns the CSS styles for the component.\n * @static\n * @returns {CSSStyleSheet}\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Returns the list of attributes to observe for changes.\n * @static\n * @returns {Array<string>}\n */\n static get observedAttributes() {\n return ['is-hover'];\n }\n\n /**\n * Called when an attribute changes.\n * @param {string} name The name of the attribute that changed.\n * @param {string} old The old value of the attribute.\n * @param {string} newName The new value of the attribute.\n */\n attributeChangedCallback(name, old, newName) {\n if (name === 'is-hover') {\n // this.draw();\n }\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n }\n\n /**\n * Draws the component for the rating component.\n * @returns {DocumentFragment}\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n let native = document.createElement('div');\n native.setAttribute('part', 'native');\n native.classList.add('native-rate');\n\n this.native = native;\n\n if (this.hasAttribute('icons')) {\n let icons = this.icons;\n for (let i = 0; i < icons.length; i++) {\n native.appendChild(this.createIcons(i));\n }\n } else {\n for (let i = 0; i < this.max; i++) {\n native.appendChild(this.createIcons(i));\n }\n }\n\n this.changeRate();\n\n fragment.appendChild(native);\n\n return fragment;\n }\n\n /**\n * Adds event listeners after the component is drawn.\n */\n afterDraw() {\n if (this.hasAttribute('disabled') || this.hasAttribute('readonly')) {\n return;\n }\n\n this.addEventListener('mouseenter', this.onMouseEnter);\n this.addEventListener('mouseleave', this.onMouseLeave);\n this.addEventListener('mousemove', this.onMouseMove);\n this.addEventListener('touchstart', this.onTouchStart);\n this.addEventListener('touchend', this.onTouchEnd);\n this.addEventListener('touchmove', this.onTouchMove);\n this.addEventListener('click', this.onClick);\n }\n\n /**\n * Creates the icons for the rating component.\n * @param {number} i The index of the icon.\n * @returns {Element} The icon element.\n */\n createIcons(i) {\n let div = document.createElement('div');\n div.classList.add('wje-rate-icon');\n\n let icon = this.getIcons(i);\n let clone = icon.cloneNode(true);\n\n div.appendChild(icon);\n div.appendChild(clone);\n\n return div;\n }\n\n /**\n * Changes the rate of the rating component.\n */\n changeRate() {\n const icons = this.native.children;\n const rateValue =\n this.value !== this.hoverValue && this.hoverValue !== 0 && this.hoverValue !== undefined\n ? this.hoverValue\n : this.value;\n\n for (let i = 0; i < icons.length; i++) {\n const icon = icons[i];\n const firstIcon = icon.querySelector('wje-icon:first-child');\n const lastIcon = icon.querySelector('wje-icon:last-child');\n\n const isSelected = i < rateValue;\n const isPartial = rateValue > i && rateValue < i + 1;\n\n if (isSelected) {\n icon.classList.add('selected');\n if (this.hasAttribute('selected') && this.getAttribute('selected') === 'filled') {\n lastIcon.setAttribute('filled', '');\n }\n } else {\n icon.classList.remove('selected');\n lastIcon.removeAttribute('filled');\n }\n\n if (isPartial) {\n const percent = ((rateValue - i) * 100).toFixed(2);\n icon.classList.add('half');\n\n firstIcon.style.clipPath = `inset(0 0 0 ${percent}%)`;\n lastIcon.style.clipPath = `inset(0 ${100 - percent}% 0 0)`;\n\n lastIcon.removeAttribute('hidden');\n } else {\n icon.classList.remove('half');\n firstIcon.style.clipPath = ``;\n lastIcon.style.clipPath = ``;\n lastIcon.setAttribute('hidden', '');\n }\n\n icon.setAttribute('data-index', i);\n icon.setAttribute('data-rate', rateValue);\n }\n }\n\n /**\n * Event handler for the mouse enter event.\n * @param {Event} e The event.\n */\n onMouseEnter = (e) => {\n e.preventDefault();\n\n this.hoverValue = this.getValueFromXPosition(e.clientX);\n this.changeRate();\n };\n\n /**\n * Event handler for the mouse leave event.\n * @param {Event} e The event.\n */\n onMouseLeave = (e) => {\n e.preventDefault();\n\n this.hoverValue = 0;\n this.changeRate();\n };\n\n /**\n * Event handler for the mouse move event.\n * @param {Event} e The event.\n */\n onMouseMove = (e) => {\n e.preventDefault();\n\n let newValue = +this.getValueFromXPosition(e.clientX);\n if (newValue !== +this.hoverValue) {\n this.hoverValue = newValue;\n this.changeRate();\n }\n };\n\n /**\n * Event handler for the touch start event.\n * @param {Event} e The event.\n */\n onTouchStart = (e) => {\n e.preventDefault();\n\n this.hoverValue = this.getValueFromXPosition(e.touches[0].clientX);\n this.changeRate();\n };\n\n /**\n * Event handler for the touch end event.\n * @param {Event} e The event.\n */\n onTouchEnd = (e) => {\n e.preventDefault();\n\n this.hoverValue = 0;\n this.changeRate();\n };\n\n /**\n * Event handler for the touch move event.\n * @param {Event} e The event.\n */\n onTouchMove = (e) => {\n e.preventDefault();\n\n this.hoverValue = this.getValueFromXPosition(e.touches[0].clientX);\n this.changeRate();\n };\n\n /**\n * Event handler for the click event.\n * @param {Event} e The event.\n */\n onClick = (e) => {\n e.preventDefault();\n\n this.value = +this.hoverValue;\n };\n\n /**\n * Returns the icons for the rating component.\n * @param {number} index The index of the icon.\n * @returns {Element} The icon element.\n */\n getIcons(index) {\n let icon = document.createElement('wje-icon');\n icon.setAttribute('name', this.max ? this.icons[0] : this.icons[index]);\n\n if (this.hasAttribute('filled')) icon.setAttribute('filled', '');\n\n return icon;\n }\n\n /**\n * Returns the value from the x position.\n * @param {number} coordinate The x coordinate.\n * @returns {number} The value from the x position.\n */\n getValueFromXPosition(coordinate) {\n const { left, right, width } = this.native.getBoundingClientRect();\n const value = this.roundToPrecision(((coordinate - left) / width) * this.max, this.precision);\n\n return Math.min(Math.max(value, 0), this.max);\n }\n\n /**\n * Rounds a given number to the nearest specified precision.\n * @param {number} numberToRound The number to be rounded.\n * @param {number} [precision] The precision to which the number should be rounded.\n * @returns {number} - The rounded number.\n * @example\n * roundToPrecision(2.3); // Returns 2.5\n * roundToPrecision(2.3, 0.1); // Returns 2.3\n * roundToPrecision(2.6, 1); // Returns 3\n */\n roundToPrecision(numberToRound, precision = 0.5) {\n const multiplier = 1 / precision;\n return Math.ceil(numberToRound * multiplier) / multiplier;\n }\n}\n","import Rate from './rate.element.js';\n\nexport default Rate;\n\nRate.define('wje-rate', Rate);\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-relative-time.js","sources":["../packages/wje-relative-time/relative-time.element.js","../packages/wje-relative-time/relative-time.js"],"sourcesContent":["import { Localizer } from '../utils/localize.js';\nimport { default as WJElement } from '../wje-element/element.js';\n\n/**\n * `RelativeTime` is a custom web component that represents a relative time component.\n * @summary This element represents a relative time component.\n * @documentation https://elements.webjet.sk/components/relative-time\n * @status stable\n * @augments WJElement\n * @csspart native - The native part of the relative time component.\n * @tag wje-relative-time\n */\n\nexport default class RelativeTime extends WJElement {\n /**\n * Creates an instance of RelativeTime.\n * @class\n */\n constructor() {\n super();\n this.localizer = new Localizer(this);\n }\n\n /**\n * Sets the date of the relative time component.\n * @param value\n */\n set date(value) {\n this.setAttribute('date', value);\n }\n\n /**\n * Gets the date of the relative time component.\n * @returns {string}\n */\n get date() {\n return this.getAttribute('date');\n }\n\n /**\n * Sets the object date of the relative time component.\n * @param value\n */\n set objectDate(value) {\n this.setAttribute('object-date', value);\n }\n\n /**\n * Gets the object date of the relative time component.\n * @returns {Date}\n */\n get objectDate() {\n let date = new Date();\n let inputDate = this.date;\n\n if (!!inputDate && inputDate !== '') {\n inputDate = this.isISODate(inputDate) ? inputDate : +inputDate * 1000;\n\n date = new Date(inputDate);\n }\n\n return date;\n }\n\n /**\n * Sets the lang of the relative time component.\n * @type {string}\n */\n className = 'RelativeTime';\n\n /**\n * Returns the list of attributes to observe for changes.\n * @static\n * @returns {Array<string>}\n */\n static get observedAttributes() {\n return [];\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n }\n\n /**\n * Draws the component for the relative time.\n * @returns {DocumentFragment}\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n let element = document.createElement('div');\n element.setAttribute('part', 'native');\n element.classList.add('native-relative-time');\n element.innerText = this.getRelativeTimeString();\n\n fragment.appendChild(element);\n\n return fragment;\n }\n\n /**\n * Returns the relative time string for the given date.\n */\n getRelativeTimeString(lang = navigator.language) {\n if (this.objectDate.toString() === 'Invalid Date' || this.objectDate.toString() === 'NaN') {\n return '';\n }\n\n const timeMs = this.objectDate.getTime();\n\n const deltaSeconds = Math.round((timeMs - Date.now()) / 1000);\n\n const cutoffs = [60, 3600, 86400, 86400 * 7, 86400 * 30, 86400 * 365, Infinity];\n\n const units = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\n const unitIndex = cutoffs.findIndex((cutoff) => cutoff > Math.abs(deltaSeconds));\n const divisor = unitIndex ? cutoffs[unitIndex - 1] : 1;\n\n return this.localizer.relativeTime(\n this.getAttribute('lang'),\n Math.floor(deltaSeconds / divisor),\n units[unitIndex],\n { numeric: 'auto' }\n );\n }\n\n /**\n * Checks if the given string is an ISO date.\n * @param {string} str The string to check.\n * @returns {boolean} True if the string is an ISO date, false otherwise.\n */\n isISODate(str) {\n const date = new Date(str);\n return !isNaN(date.getTime());\n }\n}\n","import RelativeTime from './relative-time.element.js';\n\nexport default RelativeTime;\n\nRelativeTime.define('wje-relative-time', RelativeTime);\n"],"names":[],"mappings":";;;;;AAae,MAAM,qBAAqB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKhD,cAAc;AACV;AAiDJ;AAAA;AAAA;AAAA;AAAA,qCAAY;AAhDR,SAAK,YAAY,IAAI,UAAU,IAAI;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,IAAI,KAAK,OAAO;AACZ,SAAK,aAAa,QAAQ,KAAK;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,IAAI,OAAO;AACP,WAAO,KAAK,aAAa,MAAM;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,IAAI,WAAW,OAAO;AAClB,SAAK,aAAa,eAAe,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,IAAI,aAAa;AACb,QAAI,OAAO,oBAAI;AACf,QAAI,YAAY,KAAK;AAErB,QAAI,CAAC,CAAC,aAAa,cAAc,IAAI;AACjC,kBAAY,KAAK,UAAU,SAAS,IAAI,YAAY,CAAC,YAAY;AAEjE,aAAO,IAAI,KAAK,SAAS;AAAA,IAC5B;AAED,WAAO;AAAA,EACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaD,WAAW,qBAAqB;AAC5B,WAAO;EACV;AAAA;AAAA;AAAA;AAAA,EAKD,kBAAkB;AACd,SAAK,eAAe;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO;AACH,QAAI,WAAW,SAAS;AAExB,QAAI,UAAU,SAAS,cAAc,KAAK;AAC1C,YAAQ,aAAa,QAAQ,QAAQ;AACrC,YAAQ,UAAU,IAAI,sBAAsB;AAC5C,YAAQ,YAAY,KAAK;AAEzB,aAAS,YAAY,OAAO;AAE5B,WAAO;AAAA,EACV;AAAA;AAAA;AAAA;AAAA,EAKD,sBAAsB,OAAO,UAAU,UAAU;AAC7C,QAAI,KAAK,WAAW,eAAe,kBAAkB,KAAK,WAAW,SAAU,MAAK,OAAO;AACvF,aAAO;AAAA,IACV;AAED,UAAM,SAAS,KAAK,WAAW,QAAO;AAEtC,UAAM,eAAe,KAAK,OAAO,SAAS,KAAK,SAAS,GAAI;AAE5D,UAAM,UAAU,CAAC,IAAI,MAAM,OAAO,QAAQ,GAAG,QAAQ,IAAI,QAAQ,KAAK,QAAQ;AAE9E,UAAM,QAAQ,CAAC,UAAU,UAAU,QAAQ,OAAO,QAAQ,SAAS,MAAM;AACzE,UAAM,YAAY,QAAQ,UAAU,CAAC,WAAW,SAAS,KAAK,IAAI,YAAY,CAAC;AAC/E,UAAM,UAAU,YAAY,QAAQ,YAAY,CAAC,IAAI;AAErD,WAAO,KAAK,UAAU;AAAA,MAClB,KAAK,aAAa,MAAM;AAAA,MACxB,KAAK,MAAM,eAAe,OAAO;AAAA,MACjC,MAAM,SAAS;AAAA,MACf,EAAE,SAAS,OAAQ;AAAA,IAC/B;AAAA,EACK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,UAAU,KAAK;AACX,UAAM,OAAO,IAAI,KAAK,GAAG;AACzB,WAAO,CAAC,MAAM,KAAK,QAAS,CAAA;AAAA,EAC/B;AACL;ACtIA,aAAa,OAAO,qBAAqB,YAAY;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-reorder-dropzone.js","sources":["../packages/wje-reorder-dropzone/reorder-dropzone.element.js","../packages/wje-reorder-dropzone/reorder-dropzone.js"],"sourcesContent":["import { default as WJElement } from '../wje-element/element.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * `ReorderDropzone` is a custom web component that represents a reorder dropzone.\n * @summary This element represents a reorder dropzone.\n * @documentation https://elements.webjet.sk/components/reorder-dropzone\n * @status stable\n * @augments WJElement\n * @csspart native - The native part of the reorder dropzone.\n * @slot - The default slot for the reorder dropzone.\n * @tag wje-reorder-dropzone\n */\nexport default class ReorderDropzone extends WJElement {\n /**\n * Creates an instance of ReorderDropzone.\n */\n constructor() {\n super();\n }\n\n /**\n * The class name for the component.\n * @type {string}\n */\n className = 'ReorderDropzone';\n\n /**\n * Returns the CSS stylesheet for the component.\n * @returns {CSSStyleSheet} The CSS stylesheet.\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n }\n\n /**\n * Returns the list of observed attributes.\n * @returns {DocumentFragment}\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n let dropzone = document.createElement('div');\n dropzone.classList.add('dropzone');\n\n let slot = document.createElement('slot');\n\n dropzone.appendChild(slot);\n\n fragment.appendChild(dropzone);\n\n return fragment;\n }\n}\n","import ReorderDropzone from './reorder-dropzone.element';\n\nexport default ReorderDropzone;\n\nReorderDropzone.define('wje-reorder-dropzone', ReorderDropzone);\n"],"names":[],"mappings":";;;;;AAae,MAAM,wBAAwB,UAAU;AAAA;AAAA;AAAA;AAAA,EAInD,cAAc;AACV;AAOJ;AAAA;AAAA;AAAA;AAAA,qCAAY;AAAA,EANX;AAAA;AAAA;AAAA;AAAA;AAAA,EAYD,WAAW,gBAAgB;AACvB,WAAO;AAAA,EACV;AAAA;AAAA;AAAA;AAAA,EAKD,kBAAkB;AACd,SAAK,eAAe;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO;AACH,QAAI,WAAW,SAAS;AAExB,QAAI,WAAW,SAAS,cAAc,KAAK;AAC3C,aAAS,UAAU,IAAI,UAAU;AAEjC,QAAI,OAAO,SAAS,cAAc,MAAM;AAExC,aAAS,YAAY,IAAI;AAEzB,aAAS,YAAY,QAAQ;AAE7B,WAAO;AAAA,EACV;AACL;ACxDA,gBAAgB,OAAO,wBAAwB,eAAe;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-reorder-handle.js","sources":["../packages/wje-reorder-handle/reorder-handle.element.js","../packages/wje-reorder-handle/reorder-handle.js"],"sourcesContent":["import { default as WJElement } from '../wje-element/element.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * `ReorderHandle` is a custom web component that represents a reorder handle.\n * @summary This element represents a reorder handle.\n * @documentation https://elements.webjet.sk/components/reorder-handle\n * @status stable\n * @augments WJElement\n * @csspart native - The native part of the reorder handle.\n * @slot - The default slot for the reorder handle.\n * @tag wje-reorder-handle\n */\nexport default class ReorderHandle extends WJElement {\n /**\n * Creates an instance of ReorderHandle.\n */\n constructor() {\n super();\n this.addEventListener('mousedown', this.startDrag.bind(this));\n this.addEventListener('touchstart', this.startTouchDrag.bind(this));\n }\n\n /**\n * The class name for the component.\n * @type {string}\n */\n className = 'ReorderHandle';\n\n /**\n * Returns the CSS styles for the component.\n * @returns {*}\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Returns the list of attributes to observe for changes.\n * @returns {string[]}\n */\n static get observedAttributes() {\n return ['dropzone', 'parent'];\n }\n\n setupAttributes() {\n this.isShadowRoot = 'open';\n }\n\n /**\n * Draws the component.\n * @returns {DocumentFragment}\n */\n draw() {\n const fragment = document.createDocumentFragment();\n\n const container = document.createElement('div');\n container.classList.add('container');\n container.setAttribute('part', 'native');\n\n const slot = document.createElement('slot');\n\n container.appendChild(slot);\n\n fragment.appendChild(container);\n\n return fragment;\n }\n\n /**\n * Draws the component after it is connected to the DOM.\n */\n afterDraw() {\n if (this.hasAttribute('disabled')) {\n this.style.opacity = '.3';\n }\n }\n\n /**\n * Handles the attribute changes.\n * @param {DragEvent} event\n */\n startDrag(event) {\n if (this.hasAttribute('disabled') || this.hasAttribute('locked')) return;\n this.startDragAction(event.clientX, event.clientY);\n }\n\n /**\n * Handles the touch start event.\n * @param {TouchEvent} event\n */\n startTouchDrag(event) {\n if (this.hasAttribute('disabled') || this.hasAttribute('locked')) return;\n const touch = event.touches[0];\n this.startDragAction(touch.clientX, touch.clientY);\n }\n\n /**\n * Initiates the drag-and-drop action for a sortable element.\n * @param {number} clientX The x-coordinate of the mouse pointer at the start of the drag action.\n * @param {number} clientY The y-coordinate of the mouse pointer at the start of the drag action.\n */\n startDragAction(clientX, clientY) {\n let draggable;\n if (this.hasAttribute('parent')) {\n const parentSelector = this.getAttribute('parent');\n draggable = this.closest(parentSelector);\n } else {\n draggable = this.parentElement;\n }\n\n const initialContainer = this.getDropzone(draggable);\n\n if (!this.getAttribute('dropzone')) {\n this.setAttribute('dropzone', initialContainer.localName);\n }\n\n const rect = draggable.getBoundingClientRect();\n const offsetX = clientX - rect.left;\n const offsetY = clientY - rect.top;\n\n let placeholder = document.createElement('div');\n placeholder.classList.add('sortable-item');\n placeholder.style.visibility = 'hidden';\n placeholder.style.height = `${rect.height}px`;\n\n draggable.classList.add('dragging');\n\n draggable.style.position = 'fixed';\n draggable.style.zIndex = '1000';\n draggable.style.width = `${rect.width}px`;\n\n const moveAt = (pageX, pageY) => {\n draggable.style.left = `${pageX - offsetX - document.documentElement.scrollLeft}px`;\n draggable.style.top = `${pageY - offsetY - document.documentElement.scrollTop}px`;\n };\n\n moveAt(clientX, clientY);\n\n const onMouseMove = (event) => {\n moveAt(event.pageX, event.pageY);\n\n const dropzone = this.getClosestDropzone(event.clientX, event.clientY);\n if (!dropzone) return;\n\n const siblings = Array.from(dropzone.children).filter(\n (child) => child !== draggable && child !== placeholder\n );\n\n for (const sibling of siblings) {\n const siblingRect = sibling.getBoundingClientRect();\n\n if (sibling.children[0]?.hasAttribute('locked')) continue;\n\n if (event.clientY > siblingRect.top && event.clientY < siblingRect.bottom) {\n if (event.clientY < siblingRect.top + siblingRect.height / 2) {\n dropzone.insertBefore(placeholder, sibling);\n } else {\n dropzone.insertBefore(placeholder, sibling.nextSibling);\n }\n break;\n }\n }\n };\n\n const onMouseUp = () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n\n draggable.classList.remove('dragging');\n\n draggable.style.position = '';\n draggable.style.zIndex = '';\n draggable.style.left = '';\n draggable.style.top = '';\n draggable.style.width = '';\n\n const finalContainer = placeholder.parentElement;\n finalContainer.insertBefore(draggable, placeholder);\n finalContainer.removeChild(placeholder);\n\n this.reIndexItems(finalContainer);\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n\n initialContainer.insertBefore(placeholder, draggable);\n }\n\n /**\n * Retrieves the dropzone associated with the given element.\n * @param {HTMLElement} element The element from which to search for the closest dropzone.\n * @returns {HTMLElement|null} - The closest dropzone element matching the `dropzone` attribute, or the parent element if no dropzone is found.\n */\n getDropzone(element) {\n const dropzoneAttr = this.getAttribute('dropzone');\n if (dropzoneAttr) {\n let dropzone = element.closest(dropzoneAttr);\n if (dropzone) return dropzone;\n }\n return element.parentElement;\n }\n\n /**\n * Retrieves the closest dropzone element at the specified coordinates.\n * @param {number} clientX The x-coordinate relative to the viewport.\n * @param {number} clientY The y-coordinate relative to the viewport.\n * @returns {HTMLElement|null} - The closest dropzone element matching the `dropzone` attribute, or `null` if none is found.\n */\n getClosestDropzone(clientX, clientY) {\n const elements = this.getElementsFromPointAll(clientX, clientY);\n for (const element of elements) {\n if (element.matches(this.getAttribute('dropzone'))) {\n return element;\n }\n }\n return null;\n }\n\n /**\n * Retrieves all elements at the specified coordinates, including those within shadow DOMs.\n * @param {number} x The x-coordinate relative to the viewport.\n * @param {number} y The y-coordinate relative to the viewport.\n * @param {Document|ShadowRoot} [root] The root context in which to search. Defaults to the main document.\n * @param {Set<Node>} [visited] A set of already visited nodes to avoid infinite recursion in nested shadow DOMs.\n * @returns {HTMLElement[]} An array of all elements found at the specified coordinates, including shadow DOM elements.\n */\n getElementsFromPointAll(x, y, root = document, visited = new Set()) {\n if (visited.has(root)) return [];\n visited.add(root);\n\n const elements = root.elementsFromPoint(x, y);\n let allElements = [...elements];\n\n for (const element of elements) {\n if (element.shadowRoot && !visited.has(element.shadowRoot)) {\n allElements = allElements.concat(this.getElementsFromPointAll(x, y, element.shadowRoot, visited));\n }\n }\n\n return allElements;\n }\n\n /**\n * Re-indexes the items in the container.\n * @param container\n */\n reIndexItems(container) {\n const items = Array.from(container.children);\n let index = 0;\n\n items.forEach((child) => {\n if (child.children[0]?.hasAttribute('locked')) {\n child.dataset.index = index;\n } else {\n child.dataset.index = index;\n }\n index++;\n });\n }\n}\n","import ReorderHandle from './reorder-handle.element.js';\n\nexport default ReorderHandle;\n\nReorderHandle.define('wje-reorder-handle', ReorderHandle);\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-reorder-item.js","sources":["../packages/wje-reorder-item/reorder-item.element.js","../packages/wje-reorder-item/reorder-item.js"],"sourcesContent":["import { default as WJElement, WjElementUtils } from '../wje-element/element.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * `ReorderItem` is a custom web component that represents a reorder item.\n * @summary This element represents a reorder item.\n * @documentation https://elements.webjet.sk/components/reorder-item\n * @status stable\n * @augments WJElement\n * @csspart native-reorder-item - The native part of the reorder item.\n * @csspart handle-part - The handle part of the reorder item when the handle slot is present.\n * @slot - The default slot for the reorder item.\n * @tag wje-reorder-item\n */\nexport default class ReorderItem extends WJElement {\n /**\n * Creates an instance of ReorderItem.\n */\n constructor() {\n super();\n }\n\n /**\n * The class name for the component.\n * @type {string}\n */\n className = 'ReorderItem';\n\n /**\n * Returns the CSS stylesheet for the component.\n * @returns {CSSStyleSheet} The CSS stylesheet.\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n }\n\n /**\n * Returns the list of observed attributes.\n * @returns {DocumentFragment}\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n let wrapper = document.createElement('div');\n wrapper.classList.add('item');\n wrapper.setAttribute('part', 'native-reorder-item');\n\n let element = document.createElement('slot');\n element.classList.add('name');\n\n if (WjElementUtils.hasSlot(this, 'handle')) {\n const handle = document.createElement('slot');\n handle.classList.add('handle');\n handle.setAttribute('name', 'handle');\n handle.setAttribute('part', 'handle-part');\n\n wrapper.classList.add('item-w-handle');\n wrapper.appendChild(handle);\n } else {\n element.setAttribute('draggable', 'true');\n }\n\n wrapper.appendChild(element);\n\n fragment.appendChild(wrapper);\n\n return fragment;\n }\n}\n","import ReorderItem from './reorder-item.element.js';\n\nexport default ReorderItem;\n\nReorderItem.define('wje-reorder-item', ReorderItem);\n"],"names":[],"mappings":";;;;;AAce,MAAM,oBAAoB,UAAU;AAAA;AAAA;AAAA;AAAA,EAI/C,cAAc;AACV;AAOJ;AAAA;AAAA;AAAA;AAAA,qCAAY;AAAA,EANX;AAAA;AAAA;AAAA;AAAA;AAAA,EAYD,WAAW,gBAAgB;AACvB,WAAO;AAAA,EACV;AAAA;AAAA;AAAA;AAAA,EAKD,kBAAkB;AACd,SAAK,eAAe;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO;AACH,QAAI,WAAW,SAAS;AAExB,QAAI,UAAU,SAAS,cAAc,KAAK;AAC1C,YAAQ,UAAU,IAAI,MAAM;AAC5B,YAAQ,aAAa,QAAQ,qBAAqB;AAElD,QAAI,UAAU,SAAS,cAAc,MAAM;AAC3C,YAAQ,UAAU,IAAI,MAAM;AAE5B,QAAI,eAAe,QAAQ,MAAM,QAAQ,GAAG;AACxC,YAAM,SAAS,SAAS,cAAc,MAAM;AAC5C,aAAO,UAAU,IAAI,QAAQ;AAC7B,aAAO,aAAa,QAAQ,QAAQ;AACpC,aAAO,aAAa,QAAQ,aAAa;AAEzC,cAAQ,UAAU,IAAI,eAAe;AACrC,cAAQ,YAAY,MAAM;AAAA,IACtC,OAAe;AACH,cAAQ,aAAa,aAAa,MAAM;AAAA,IAC3C;AAED,YAAQ,YAAY,OAAO;AAE3B,aAAS,YAAY,OAAO;AAE5B,WAAO;AAAA,EACV;AACL;ACvEA,YAAY,OAAO,oBAAoB,WAAW;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-reorder.js","sources":["../packages/wje-reorder/reorder.element.js","../packages/wje-reorder/reorder.js"],"sourcesContent":["import { default as WJElement } from '../wje-element/element.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * `Reorder` is a custom web component that represents a reorder.\n * It extends from `WJElement`.\n * @summary This element represents a reorder.\n * @documentation https://elements.webjet.sk/components/reorder\n * @status stable\n * @augments WJElement\n * @csspart native - The native part of the reorder.\n * @slot - The default slot for the reorder.\n * // @fires wje-reorder:change - Event fired when the reorder is changed.\n * @tag wje-reorder\n */\n\nexport default class Reorder extends WJElement {\n /**\n * Creates an instance of Select.\n * @class\n */\n constructor() {\n super();\n this.dragEl = null;\n this.items = [];\n this.originalIndex = null;\n this.isDragging = false;\n this.offsetX = 0;\n this.offsetY = 0;\n this.cloneEl = null;\n }\n\n /**\n * The class name for the component.\n * @type {string}\n */\n className = 'Select';\n\n /**\n * Returns the CSS styles for the component.\n * @static\n * @returns {CSSStyleSheet}\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Returns the list of attributes to observe for changes.\n * @static\n * @returns {Array<string>}\n */\n static get observedAttributes() {\n return [];\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n }\n\n /**\n * Draws the component after it is connected to the DOM.\n * @returns {DocumentFragment}\n */\n draw() {\n const fragment = document.createDocumentFragment();\n\n const container = document.createElement('div');\n container.classList.add('container');\n container.setAttribute('part', 'native');\n\n const slot = document.createElement('slot');\n slot.classList.add('reorder-items');\n\n container.appendChild(slot);\n\n fragment.appendChild(container);\n\n this.container = container;\n\n return fragment;\n }\n\n /**\n * Adds event listeners after the component is drawn.\n */\n afterDraw() {\n const items = this.querySelectorAll('wje-reorder-item');\n const dropZones = this.querySelectorAll('wje-reorder-dropzone');\n this.container.classList.add(this.hasAttribute('reverse') ? 'reversed' : 'basic');\n\n if (dropZones) {\n dropZones.forEach((dropZone) => {\n this.container.classList.remove('container');\n this.container.classList.add('container-w-dropzones');\n });\n }\n\n if (items) {\n items.forEach((item) => {\n const handles = item.querySelectorAll('[slot=handle]');\n const draggableElement = handles.length > 0 ? handles : [item];\n\n draggableElement.forEach((element) => {\n this.attachEventListeners(element);\n });\n });\n }\n }\n\n /**\n * Attaches event listeners to the element.\n * @param element\n */\n attachEventListeners(element) {\n element.addEventListener('mousedown', this.mouseDown.bind(this), false);\n element.addEventListener('touchstart', this.touchStart.bind(this), false);\n element.addEventListener('dragstart', this.dragStart.bind(this), false);\n }\n\n /**\n * Handles the mouse down event.\n * @param {object} e\n */\n mouseDown(e) {\n this.startDragging(e.clientX, e.clientY, e.currentTarget);\n document.addEventListener('mousemove', this.mouseMove.bind(this), false);\n document.addEventListener('mouseup', this.mouseUp.bind(this), false);\n document.body.style.userSelect = 'none';\n }\n\n /**\n * Handles the touch start event.\n * @param e\n */\n touchStart(e) {\n const touch = e.touches[0];\n this.startDragging(touch.clientX, touch.clientY, e.currentTarget);\n document.addEventListener('touchmove', this.touchMove.bind(this), false);\n document.addEventListener('touchend', this.touchEnd.bind(this), false);\n document.body.style.userSelect = 'none';\n }\n\n /**\n * Initializes the dragging process for a reorderable item.\n * @param {number} clientX The x-coordinate of the mouse pointer when the drag starts.\n * @param {number} clientY The y-coordinate of the mouse pointer when the drag starts.\n * @param {HTMLElement} target The target element where the drag event originated.\n */\n startDragging(clientX, clientY, target) {\n if (this.hasAttribute('disabled')) {\n return;\n }\n\n this.isDragging = true;\n this.dragEl = target.closest('wje-reorder-item');\n\n this.createClone();\n\n this.dragEl.style.opacity = '0.3';\n\n const rect = this.dragEl.getBoundingClientRect();\n this.offsetX = clientX - rect.left;\n this.offsetY = clientY - rect.top;\n\n this.dragEl.classList.add('dragging');\n\n this.originalIndex = [...this.dragEl.parentNode.children].indexOf(this.dragEl);\n this.originalParent = this.dragEl.parentNode;\n }\n\n /**\n * Handles the mouse move event.\n * @param e\n */\n mouseMove(e) {\n if (!this.isDragging) return;\n this.moveElement(e.pageX, e.pageY);\n\n if (this.cloneEl) {\n this.cloneEl.style.left = `${e.pageX - this.offsetX}px`;\n this.cloneEl.style.top = `${e.pageY - this.offsetY}px`;\n }\n }\n\n /**\n * Handles the `touchmove` event and updates the position of the dragged element.\n * @param {TouchEvent} e The touch event containing touch position data.\n */\n touchMove(e) {\n if (!this.isDragging) return;\n const touch = e.touches[0];\n this.moveElement(touch.pageX, touch.pageY);\n }\n\n /**\n * Updates the position of the dragged element and handles reordering logic based on the mouse position.\n * @param {number} pageX The x-coordinate of the mouse pointer relative to the viewport during the move event.\n * @param {number} pageY The y-coordinate of the mouse pointer relative to the viewport during the move event.\n */\n moveElement(pageX, pageY) {\n const scrollX = window.scrollX || document.documentElement.scrollLeft;\n const scrollY = window.scrollY || document.documentElement.scrollTop;\n const adjustedPageX = pageX - scrollX;\n const adjustedPageY = pageY - scrollY;\n\n this.dragEl.style.left = `${adjustedPageX}px`;\n this.dragEl.style.top = `${adjustedPageY}px`;\n\n if (this.cloneEl) {\n this.cloneEl.style.left = `${adjustedPageX}px`;\n this.cloneEl.style.top = `${adjustedPageY}px`;\n }\n\n const items = this.querySelectorAll('wje-reorder-item');\n items.forEach((item) => {\n if (item === this.dragEl) return;\n\n const boundingBox = item.getBoundingClientRect();\n const mouseY = adjustedPageY - boundingBox.top;\n const mouseYPercent = (mouseY / boundingBox.height) * 100;\n\n if (mouseYPercent > 30 && this.isMovingDown(item)) {\n item.parentNode.insertBefore(this.dragEl, item.nextSibling);\n } else if (mouseYPercent < 30 && !this.isMovingDown(item)) {\n item.parentNode.insertBefore(this.dragEl, item);\n }\n });\n }\n\n /**\n * Handles the mouse up event.\n */\n mouseUp() {\n this.stopDragging();\n document.removeEventListener('mousemove', this.mouseMove.bind(this), false);\n document.removeEventListener('mouseup', this.mouseUp.bind(this), false);\n\n if (this.cloneEl) {\n this.cloneEl.remove();\n this.cloneEl = null;\n }\n\n if (this.dragEl) {\n this.dragEl.style.opacity = '1';\n }\n }\n\n /**\n * Handles the touch end event.\n */\n touchEnd() {\n this.stopDragging();\n document.removeEventListener('touchmove', this.touchMove.bind(this), false);\n document.removeEventListener('touchend', this.touchEnd.bind(this), false);\n }\n\n /**\n * Stops dragging the element.\n */\n stopDragging() {\n if (!this.isDragging) return;\n\n this.isDragging = false;\n this.dragEl.classList.remove('dragging');\n this.dragEl.style.left = '';\n this.dragEl.style.top = '';\n\n const parent = this.dragEl.parentNode;\n const newIndex = Array.from(parent.children).indexOf(this.dragEl);\n\n const newOrder = Array.from(parent.children).map((el) => {\n const clonedNode = el.cloneNode(true);\n const handle = clonedNode.querySelector('.handle');\n if (handle) {\n handle.remove();\n }\n return clonedNode.innerText.trim();\n });\n\n this.dispatchChange(this.originalIndex, newIndex, newOrder);\n document.body.style.userSelect = '';\n }\n\n /**\n * Prevents the default behavior of the `dragstart` event.\n * @param {DragEvent} e The drag event triggered when a drag operation starts.\n */\n dragStart(e) {\n e.preventDefault();\n }\n\n /**\n * Creates a clone of the element.\n */\n createClone() {\n this.cloneEl = this.dragEl.cloneNode(true);\n this.cloneEl.style.position = 'absolute';\n this.cloneEl.style.pointerEvents = 'none';\n this.cloneEl.style.visibility = 'visible';\n\n document.body.appendChild(this.cloneEl);\n }\n\n /**\n * Checks if the dragged element is moving down.\n * @param droppedElement\n * @returns {boolean}\n */\n isMovingDown(droppedElement) {\n const parent = droppedElement.parentNode;\n const dragIndex = Array.from(parent.children).indexOf(this.dragEl);\n const dropIndex = Array.from(parent.children).indexOf(droppedElement);\n\n return dragIndex < dropIndex;\n }\n\n /**\n * Dispatches a custom event to signal that a reordering operation has occurred.\n * @param {number} from The original index of the dragged item.\n * @param {number} to The new index of the dragged item after reordering.\n * @param {Array<number>} order The updated order of items after the reordering.\n * // @fires wje-reorder:change - Dispatched when the reordering is completed.\n * The event includes details about the initial position, the new position, and the new order.\n */\n dispatchChange(from, to, order) {\n this.dispatchEvent(\n new CustomEvent('wje-reorder:change', {\n detail: { from, to, order },\n })\n );\n }\n}\n","import Reorder from './reorder.element.js';\n\nexport default Reorder;\n\nReorder.define('wje-reorder', Reorder);\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-route.js","sources":["../packages/wje-route/route.element.js","../packages/wje-route/route.js"],"sourcesContent":["import { default as WJElement } from '../wje-element/element.js';\n\n/**\n * `Route` is a custom web component that represents a route in a routing system.\n * @summary This element represents a route in a routing system.\n * @documentation https://elements.webjet.sk/components/route\n * @status stable\n * @augments WJElement\n * @tag wje-route\n */\nexport default class Route extends WJElement {\n /**\n * Creates an instance of Route.\n * @class\n */\n constructor() {\n super();\n }\n\n className = 'Route';\n\n /**\n * Returns the list of attributes to observe for changes.\n * @static\n * @returns {Array<string>}\n */\n static get observedAttributes() {\n return [];\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n }\n\n /**\n * Draws the component for the route.\n * @returns {DocumentFragment}\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n let slot = document.createElement('slot');\n\n fragment.appendChild(slot);\n\n return fragment;\n }\n}\n","import Route from './route.element.js';\n\nexport default Route;\n\nRoute.define('wje-route', Route);\n"],"names":[],"mappings":";;;;AAUe,MAAM,cAAc,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKzC,cAAc;AACV;AAGJ,qCAAY;AAAA,EAFX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,WAAW,qBAAqB;AAC5B,WAAO;EACV;AAAA;AAAA;AAAA;AAAA,EAKD,kBAAkB;AACd,SAAK,eAAe;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO;AACH,QAAI,WAAW,SAAS;AAExB,QAAI,OAAO,SAAS,cAAc,MAAM;AAExC,aAAS,YAAY,IAAI;AAEzB,WAAO;AAAA,EACV;AACL;AC9CA,MAAM,OAAO,aAAa,KAAK;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-router-link.js","sources":["../packages/wje-router-link/router-link.element.js","../packages/wje-router-link/router-link.js"],"sourcesContent":["import { bindRouterLinks } from 'slick-router/middlewares/router-links.js';\n\nimport { default as WJElement } from '../wje-element/element.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * `RouterLink` is a custom web component that represents a router link in a routing system.\n * @summary This element represents a router link in a routing system.\n * @documentation https://elements.webjet.sk/components/router-link\n * @status stable\n * @augments {WJElement}\n * @slot - The default slot for the router link.\n * @tag wje-router-link\n */\nexport default class RouterLink extends WJElement {\n /**\n * Creates an instance of RouterLink.\n * @class\n */\n constructor() {\n super();\n }\n\n className = 'RouterLink';\n\n /**\n * Returns the CSS styles for the component.\n * @static\n * @returns {CSSStyleSheet}\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Returns the list of attributes to observe for changes.\n * @static\n * @returns {Array<string>}\n */\n static get observedAttributes() {\n return [];\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n this.setAttribute('active-class', 'active');\n }\n\n /**\n * Draws the component for the router link.\n * @returns {DocumentFragment}\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n let element = document.createElement('slot');\n\n fragment.appendChild(element);\n\n return fragment;\n }\n\n afterDraw(context, appStore, attributes) {\n this.unbindRouterLinks = bindRouterLinks(this.parentElement, { selector: false });\n }\n\n /**\n * Cleans up before the component is disconnected.\n */\n beforeDisconnect() {\n this.unbindRouterLinks?.();\n }\n}\n","import RouterLink from './router-link.element.js';\n\nexport default RouterLink;\n\nRouterLink.define('wje-router-link', RouterLink);\n"],"names":[],"mappings":";;;;;;AAce,MAAM,mBAAmB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9C,cAAc;AACV;AAGJ,qCAAY;AAAA,EAFX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,WAAW,gBAAgB;AACvB,WAAO;AAAA,EACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,WAAW,qBAAqB;AAC5B,WAAO;EACV;AAAA;AAAA;AAAA;AAAA,EAKD,kBAAkB;AACd,SAAK,eAAe;AACpB,SAAK,aAAa,gBAAgB,QAAQ;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO;AACH,QAAI,WAAW,SAAS;AAExB,QAAI,UAAU,SAAS,cAAc,MAAM;AAE3C,aAAS,YAAY,OAAO;AAE5B,WAAO;AAAA,EACV;AAAA,EAED,UAAU,SAAS,UAAU,YAAY;AACrC,SAAK,oBAAoB,gBAAgB,KAAK,eAAe,EAAE,UAAU,MAAK,CAAE;AAAA,EACnF;AAAA;AAAA;AAAA;AAAA,EAKD,mBAAmB;;AACf,eAAK,sBAAL;AAAA,EACH;AACL;ACvEA,WAAW,OAAO,mBAAmB,UAAU;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-router-outlet.js","sources":["../node_modules/slick-router/lib/components/animated-outlet.js","../packages/wje-router-outlet/router-outlet.element.js","../packages/wje-router-outlet/router-outlet.js"],"sourcesContent":["export class AnimationHook {\r\n constructor(options = {}) {\r\n this.options = options\r\n }\r\n\r\n getOption(outlet, name) {\r\n return outlet.hasAttribute(name) ? outlet.getAttribute(name) : this.options[name]\r\n }\r\n\r\n hasOption(outlet, name) {\r\n return outlet.hasAttribute(name) || this.options[name]\r\n }\r\n\r\n runParallel(outlet) {\r\n return this.hasOption(outlet, 'parallel')\r\n }\r\n\r\n beforeEnter(outlet, el) {}\r\n\r\n enter(outlet, el) {}\r\n\r\n leave(outlet, el, done) {\r\n done()\r\n }\r\n}\r\n\r\n// code extracted from vue\r\nconst raf = window.requestAnimationFrame\r\nconst TRANSITION = 'transition'\r\nconst ANIMATION = 'animation'\r\n\r\n// Transition property/event sniffing\r\nconst transitionProp = 'transition'\r\nconst transitionEndEvent = 'transitionend'\r\nconst animationProp = 'animation'\r\nconst animationEndEvent = 'animationend'\r\n\r\nfunction nextFrame(fn) {\r\n raf(function () {\r\n raf(fn)\r\n })\r\n}\r\n\r\nfunction whenTransitionEnds(el, cb) {\r\n const ref = getTransitionInfo(el)\r\n const type = ref.type\r\n const timeout = ref.timeout\r\n const propCount = ref.propCount\r\n if (!type) {\r\n return cb()\r\n }\r\n const event = type === TRANSITION ? transitionEndEvent : animationEndEvent\r\n let ended = 0\r\n const end = function () {\r\n el.removeEventListener(event, onEnd)\r\n cb()\r\n }\r\n const onEnd = function (e) {\r\n if (e.target === el) {\r\n if (++ended >= propCount) {\r\n end()\r\n }\r\n }\r\n }\r\n setTimeout(function () {\r\n if (ended < propCount) {\r\n end()\r\n }\r\n }, timeout + 1)\r\n el.addEventListener(event, onEnd)\r\n}\r\n\r\nfunction getTransitionInfo(el) {\r\n const styles = window.getComputedStyle(el)\r\n // JSDOM may return undefined for transition properties\r\n const transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ')\r\n const transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ')\r\n const transitionTimeout = getTimeout(transitionDelays, transitionDurations)\r\n const animationDelays = (styles[animationProp + 'Delay'] || '').split(', ')\r\n const animationDurations = (styles[animationProp + 'Duration'] || '').split(', ')\r\n const animationTimeout = getTimeout(animationDelays, animationDurations)\r\n\r\n const timeout = Math.max(transitionTimeout, animationTimeout)\r\n const type = timeout > 0 ? (transitionTimeout > animationTimeout ? TRANSITION : ANIMATION) : null\r\n const propCount = type\r\n ? type === TRANSITION\r\n ? transitionDurations.length\r\n : animationDurations.length\r\n : 0\r\n\r\n return {\r\n type,\r\n timeout,\r\n propCount,\r\n }\r\n}\r\n\r\nfunction getTimeout(delays, durations) {\r\n /* istanbul ignore next */\r\n while (delays.length < durations.length) {\r\n delays = delays.concat(delays)\r\n }\r\n\r\n return Math.max.apply(\r\n null,\r\n durations.map(function (d, i) {\r\n return toMs(d) + toMs(delays[i])\r\n }),\r\n )\r\n}\r\n\r\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\r\n// in a locale-dependent way, using a comma instead of a dot.\r\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\r\n// as a floor function) causing unexpected behaviors\r\nfunction toMs(s) {\r\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\r\n}\r\n\r\nfunction runTransition(el, name, type, cb) {\r\n el.classList.add(`${name}-${type}-active`)\r\n nextFrame(function () {\r\n el.classList.remove(`${name}-${type}`)\r\n el.classList.add(`${name}-${type}-to`)\r\n whenTransitionEnds(el, function () {\r\n el.classList.remove(`${name}-${type}-active`, `${name}-${type}-to`)\r\n if (cb) cb()\r\n })\r\n })\r\n}\r\n\r\nexport class GenericCSS extends AnimationHook {\r\n beforeEnter(outlet, el) {\r\n const name = outlet.getAttribute('animation') || 'outlet'\r\n el.classList.add(`${name}-enter`)\r\n }\r\n\r\n enter(outlet, el) {\r\n const name = outlet.getAttribute('animation') || 'outlet'\r\n runTransition(el, name, 'enter')\r\n }\r\n\r\n leave(outlet, el, done) {\r\n const name = outlet.getAttribute('animation') || 'outlet'\r\n el.classList.add(`${name}-leave`)\r\n runTransition(el, name, 'leave', done)\r\n }\r\n}\r\n\r\nexport class AnimateCSS extends AnimationHook {\r\n beforeEnter(outlet, el) {\r\n const enter = this.getOption(outlet, 'enter')\r\n if (enter) {\r\n el.style.display = 'none'\r\n }\r\n }\r\n\r\n enter(outlet, el) {\r\n const enter = this.getOption(outlet, 'enter')\r\n if (!enter) return\r\n el.style.display = 'block'\r\n el.classList.add('animated', enter)\r\n el.addEventListener(\r\n 'animationend',\r\n () => {\r\n el.classList.remove('animated', enter)\r\n },\r\n { once: true },\r\n )\r\n }\r\n\r\n leave(outlet, el, done) {\r\n const leave = this.getOption(outlet, 'leave')\r\n if (!leave) {\r\n done()\r\n return\r\n }\r\n el.classList.add('animated', leave)\r\n el.addEventListener('animationend', done, { once: true })\r\n }\r\n}\r\n\r\nconst animationRegistry = {}\r\nlet defaultHook\r\n\r\nexport function registerAnimation(name, AnimationHookClass, options = {}) {\r\n animationRegistry[name] = new AnimationHookClass(options)\r\n}\r\n\r\nexport function setDefaultAnimation(AnimationHookClass, options = {}) {\r\n defaultHook = new AnimationHookClass(options)\r\n}\r\n\r\nfunction getAnimationHook(name) {\r\n return animationRegistry[name] || defaultHook || (defaultHook = new GenericCSS())\r\n}\r\n\r\nexport class AnimatedOutlet extends HTMLElement {\r\n appendChild(el) {\r\n if (!this.hasAttribute('animation')) {\r\n super.appendChild(el)\r\n return\r\n }\r\n const hook = getAnimationHook(this.getAttribute('animation'))\r\n const runParallel = hook.runParallel(this)\r\n\r\n hook.beforeEnter(this, el)\r\n super.appendChild(el)\r\n if (!runParallel && this.removing) {\r\n // when removing a previous el, append animation is run after remove one\r\n this.appending = el\r\n } else {\r\n hook.enter(this, el)\r\n }\r\n }\r\n\r\n removeChild(el) {\r\n if (!this.hasAttribute('animation')) {\r\n super.removeChild(el)\r\n return\r\n }\r\n const hook = getAnimationHook(this.getAttribute('animation'))\r\n\r\n if (this.removing && this.removing.parentNode === this) {\r\n super.removeChild(this.removing)\r\n }\r\n\r\n if (el === this.appending) {\r\n if (el.parentNode === this) {\r\n super.removeChild(el)\r\n }\r\n this.removing = null\r\n return\r\n }\r\n\r\n this.removing = el\r\n hook.leave(this, el, () => {\r\n if (this.removing && this.removing.parentNode === this) {\r\n super.removeChild(this.removing)\r\n }\r\n if (this.appending) hook.enter(this, this.appending)\r\n this.appending = null\r\n this.removing = null\r\n })\r\n }\r\n}\r\n","import { AnimatedOutlet, GenericCSS, setDefaultAnimation } from 'slick-router/components/animated-outlet.js';\n\nsetDefaultAnimation(GenericCSS);\n\n/**\n * `Route` is a custom web component that represents a route in a routing system.\n * @summary This element represents a route in a routing system.\n * @documentation https://elements.webjet.sk/components/route\n * @status stable\n * @augments AnimatedOutlet\n * @tag wje-router-outlet\n */\nexport default class RouterOutlet extends AnimatedOutlet {\n /**\n * Creates an instance of Route.\n */\n constructor() {\n super();\n }\n\n /**\n * The class name for the component.\n * @type {string}\n */\n className = 'RouterOutlet';\n}\n","import { default as WJElement } from '../wje-element/element.js';\nimport RouterOutlet from './router-outlet.element.js';\n\nexport default RouterOutlet;\n\nWJElement.define('wje-router-outlet', RouterOutlet);\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-routerx.js","sources":["../node_modules/slick-router/lib/utils.js","../node_modules/slick-router/lib/invariant.js","../node_modules/slick-router/lib/function-dsl.js","../node_modules/slick-router/lib/array-dsl.js","../node_modules/slick-router/lib/path.js","../node_modules/slick-router/lib/events.js","../node_modules/slick-router/lib/locations/location-bar.js","../node_modules/slick-router/lib/locations/browser.js","../node_modules/slick-router/lib/locations/memory.js","../node_modules/slick-router/lib/constants.js","../node_modules/slick-router/lib/transition.js","../node_modules/slick-router/lib/links.js","../node_modules/slick-router/lib/logger.js","../node_modules/slick-router/lib/qs.js","../node_modules/regexparam/dist/index.mjs","../node_modules/slick-router/lib/patternCompiler.js","../node_modules/slick-router/lib/router.js","../node_modules/slick-router/lib/middlewares/wc.js","../node_modules/slick-router/lib/wc-router.js","../node_modules/slick-router/lib/middlewares/events.js","../packages/wje-router/router.element.js","../packages/wje-router/router.js"],"sourcesContent":["const assoc = (obj, attr, val) => {\r\n obj[attr] = val\r\n return obj\r\n}\r\nconst isArray = Array.isArray\r\n\r\nexport const keys = Object.keys\r\n\r\nexport const clone = (obj) => (obj ? (isArray(obj) ? obj.slice(0) : extend({}, obj)) : obj)\r\n\r\nexport const pick = (obj, attrs) =>\r\n attrs.reduce((acc, attr) => (obj[attr] === undefined ? acc : assoc(acc, attr, obj[attr])), {})\r\n\r\nexport const isEqual = (obj1, obj2) => {\r\n const keys1 = keys(obj1)\r\n return keys1.length === keys(obj2).length && keys1.every((key) => obj2[key] === obj1[key])\r\n}\r\n\r\nexport const extend = Object.assign\r\n","export default function invariant(condition, format, ...args) {\r\n if (!condition) {\r\n let argIndex = 0\r\n throw new Error('Invariant Violation: ' + format.replace(/%s/g, () => args[argIndex++]))\r\n }\r\n}\r\n","import invariant from './invariant.js'\r\n\r\n/**\r\n * @typedef {import(\"./router.js\").Route} Route\r\n */\r\n\r\n/**\r\n * @callback registerRoute\r\n * @param {string} name\r\n * @param {Object} options\r\n * @param {routeCallback} childrenCallback\r\n */\r\n\r\n/**\r\n * @callback routeCallback\r\n * @param {registerRoute} route\r\n */\r\n\r\n/**\r\n * @export\r\n * @param {routeCallback} callback\r\n * @return {Route[]}\r\n */\r\nexport default function functionDsl(callback) {\r\n let ancestors = []\r\n const matches = {}\r\n const names = {}\r\n\r\n callback(function route(name, options, childrenCallback) {\r\n let routes\r\n\r\n invariant(\r\n !names[name],\r\n 'Route names must be unique, but route \"%s\" is declared multiple times',\r\n name,\r\n )\r\n\r\n names[name] = true\r\n\r\n if (arguments.length === 1) {\r\n options = {}\r\n }\r\n\r\n if (arguments.length === 2 && typeof options === 'function') {\r\n childrenCallback = options\r\n options = {}\r\n }\r\n\r\n if (typeof options.path !== 'string') {\r\n const parts = name.split('.')\r\n options.path = parts[parts.length - 1]\r\n }\r\n\r\n // go to the next level\r\n if (childrenCallback) {\r\n ancestors = ancestors.concat(name)\r\n childrenCallback()\r\n routes = pop()\r\n ancestors.splice(-1)\r\n }\r\n\r\n // add the node to the tree\r\n push({\r\n name,\r\n path: options.path,\r\n routes: routes || [],\r\n options,\r\n })\r\n })\r\n\r\n function pop() {\r\n return matches[currentLevel()] || []\r\n }\r\n\r\n function push(route) {\r\n const level = currentLevel()\r\n matches[level] = matches[level] || []\r\n matches[level].push(route)\r\n }\r\n\r\n function currentLevel() {\r\n return ancestors.join('.')\r\n }\r\n\r\n return pop()\r\n}\r\n","/**\r\n * @typedef {import(\"./router.js\").Route} Route\r\n */\r\n\r\n/**\r\n * @typedef RouteDef\r\n * @property {string} name\r\n * @property {string} path\r\n * @property {RouteDef[]} children\r\n */\r\n\r\n/**\r\n * @export\r\n * @param {RouteDef[]} routes\r\n * @return {Route[]}\r\n */\r\nexport default function arrayDsl(routes) {\r\n const result = []\r\n\r\n routes.forEach(({ name, children, ...options }) => {\r\n if (typeof options.path !== 'string') {\r\n const parts = name.split('.')\r\n options.path = parts[parts.length - 1]\r\n }\r\n result.push({\r\n name,\r\n path: options.path,\r\n options,\r\n routes: children ? arrayDsl(children) : [],\r\n })\r\n })\r\n\r\n return result\r\n}\r\n","import invariant from './invariant.js'\r\n\r\nconst paramInjectMatcher = /:([a-zA-Z_$][a-zA-Z0-9_$?]*[?+*]?)/g\r\nconst specialParamChars = /[+*?]$/g\r\nconst queryMatcher = /\\?(.+)/\r\n\r\nconst _compiledPatterns = {}\r\n\r\nfunction compilePattern(pattern, compiler) {\r\n if (!(pattern in _compiledPatterns)) {\r\n _compiledPatterns[pattern] = compiler(pattern)\r\n }\r\n\r\n return _compiledPatterns[pattern]\r\n}\r\n\r\nexport function clearPatternCompilerCache() {\r\n for (const x in _compiledPatterns) {\r\n delete _compiledPatterns[x]\r\n }\r\n}\r\n\r\n/**\r\n * Returns an array of the names of all parameters in the given pattern.\r\n */\r\nexport function extractParamNames(pattern, compiler) {\r\n return compilePattern(pattern, compiler).paramNames\r\n}\r\n\r\n/**\r\n * Extracts the portions of the given URL path that match the given pattern\r\n * and returns an object of param name => value pairs. Returns null if the\r\n * pattern does not match the given path.\r\n */\r\nexport function extractParams(pattern, path, compiler) {\r\n const cp = compilePattern(pattern, compiler)\r\n const matcher = cp.matcher\r\n const paramNames = cp.paramNames\r\n const match = path.match(matcher)\r\n\r\n if (!match) {\r\n return null\r\n }\r\n\r\n const params = {}\r\n\r\n paramNames.forEach(function (paramName, index) {\r\n params[paramName] = match[index + 1] && decodeURIComponent(match[index + 1])\r\n })\r\n\r\n return params\r\n}\r\n\r\n/**\r\n * Returns a version of the given route path with params interpolated. Throws\r\n * if there is a dynamic segment of the route path for which there is no param.\r\n */\r\nexport function injectParams(pattern, params) {\r\n params = params || {}\r\n\r\n return pattern.replace(paramInjectMatcher, function (match, param) {\r\n const paramName = param.replace(specialParamChars, '')\r\n const lastChar = param.slice(-1)\r\n\r\n // If param is optional don't check for existence\r\n if (lastChar === '?' || lastChar === '*') {\r\n if (params[paramName] == null) {\r\n return ''\r\n }\r\n } else {\r\n invariant(\r\n params[paramName] != null,\r\n \"Missing '%s' parameter for path '%s'\",\r\n paramName,\r\n pattern,\r\n )\r\n }\r\n\r\n let paramValue = encodeURIComponent(params[paramName])\r\n if (lastChar === '*' || lastChar === '+') {\r\n // restore / for splats\r\n paramValue = paramValue.replace('%2F', '/')\r\n }\r\n return paramValue\r\n })\r\n}\r\n\r\n/**\r\n * Returns an object that is the result of parsing any query string contained\r\n * in the given path, null if the path contains no query string.\r\n */\r\nexport function extractQuery(qs, path) {\r\n const match = path.match(queryMatcher)\r\n return match && qs.parse(match[1])\r\n}\r\n\r\n/**\r\n * Returns a version of the given path with the parameters in the given\r\n * query merged into the query string.\r\n */\r\nexport function withQuery(qs, path, query) {\r\n const queryString = qs.stringify(query, { indices: false })\r\n\r\n if (queryString) {\r\n return withoutQuery(path) + '?' + queryString\r\n }\r\n\r\n return path\r\n}\r\n\r\n/**\r\n * Returns a version of the given path without the query string.\r\n */\r\nexport function withoutQuery(path) {\r\n return path.replace(queryMatcher, '')\r\n}\r\n","/**\r\n * Bind `el` event `type` to `fn`.\r\n *\r\n * @param {Element} el\r\n * @param {String} type\r\n * @param {Function} fn\r\n * @return {Function}\r\n * @api public\r\n */\r\n\r\nexport function bindEvent(el, type, fn) {\r\n el.addEventListener(type, fn)\r\n return fn\r\n}\r\n\r\n/**\r\n * Unbind `el` event `type`'s callback `fn`.\r\n *\r\n * @param {Element} el\r\n * @param {String} type\r\n * @param {Function} fn\r\n * @return {Function}\r\n * @api public\r\n */\r\n\r\nexport function unbindEvent(el, type, fn) {\r\n el.removeEventListener(type, fn)\r\n return fn\r\n}\r\n","/* eslint-disable */\r\n// LocationBar module extracted from Backbone.js 1.1.0\r\n//\r\n// the dependency on backbone, underscore and jquery have been removed to turn\r\n// this into a small standalone library for handling browser's history API\r\n// cross browser and with a fallback to hashchange events or polling.\r\n\r\nimport {extend} from '../utils.js'\r\nimport {bindEvent, unbindEvent} from '../events.js'\r\n\r\n// this is mostly original code with minor modifications\r\n// to avoid dependency on 3rd party libraries\r\n//\r\n// Backbone.History\r\n// ----------------\r\n\r\n// Handles cross-browser history management, based on either\r\n// [pushState](http://diveintohtml5.info/history.html) and real URLs, or\r\n// [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\r\n// and URL fragments.\r\nclass History {\r\n constructor() {\r\n this.handlers = [];\r\n this.checkUrl = this.checkUrl.bind(this);\r\n this.location = window.location;\r\n this.history = window.history;\r\n }\r\n\r\n // Set up all inheritable **Backbone.History** properties and methods.\r\n // Are we at the app root?\r\n atRoot() {\r\n return this.location.pathname.replace(/[^\\/]$/, '$&/') === this.root;\r\n }\r\n\r\n // Gets the true hash value. Cannot use location.hash directly due to bug\r\n // in Firefox where location.hash will always be decoded.\r\n getHash() {\r\n const match = this.location.href.match(/#(.*)$/);\r\n return match ? match[1] : '';\r\n }\r\n\r\n // Get the cross-browser normalized URL fragment, either from the URL,\r\n // the hash, or the override.\r\n getFragment(fragment, forcePushState) {\r\n if (fragment == null) {\r\n if (this._hasPushState || !this._wantsHashChange || forcePushState) {\r\n fragment = decodeURI(this.location.pathname + this.location.search);\r\n const root = this.root.replace(trailingSlash, '');\r\n if (!fragment.indexOf(root)) fragment = fragment.slice(root.length);\r\n } else {\r\n fragment = this.getHash();\r\n }\r\n }\r\n return fragment.replace(routeStripper, '');\r\n }\r\n\r\n // Start the hash change handling, returning `true` if the current URL matches\r\n // an existing route, and `false` otherwise.\r\n start(options = {}) {\r\n // MODIFICATION OF ORIGINAL BACKBONE.HISTORY\r\n // if (History.started) throw new Error(\"LocationBar has already been started\");\r\n // History.started = true;\r\n this.started = true;\r\n\r\n // Figure out the initial configuration.\r\n // Is pushState desired ... is it available?\r\n this.options = extend({root: '/'}, options);\r\n this.location = this.options.location || this.location;\r\n this.history = this.options.history || this.history;\r\n this.root = this.options.root;\r\n this._wantsHashChange = this.options.hashChange !== false;\r\n this._wantsPushState = !!this.options.pushState;\r\n this._hasPushState = this._wantsPushState;\r\n const fragment = this.getFragment();\r\n\r\n // Normalize root to always include a leading and trailing slash.\r\n this.root = (`/${this.root}/`).replace(rootStripper, '/');\r\n\r\n // Depending on whether we're using pushState or hashes, and whether\r\n // 'onhashchange' is supported, determine how we check the URL state.\r\n bindEvent(window, this._hasPushState ? 'popstate' : 'hashchange', this.checkUrl);\r\n\r\n // Determine if we need to change the base url, for a pushState link\r\n // opened by a non-pushState browser.\r\n this.fragment = fragment;\r\n const loc = this.location;\r\n\r\n // Transition from hashChange to pushState or vice versa if both are\r\n // requested.\r\n if (this._wantsHashChange && this._wantsPushState) {\r\n\r\n // If we've started off with a route from a `pushState`-enabled\r\n // browser, but we're currently in a browser that doesn't support it...\r\n if (!this._hasPushState && !this.atRoot()) {\r\n this.fragment = this.getFragment(null, true);\r\n this.location.replace(`${this.root}#${this.fragment}`);\r\n // Return immediately as browser will do redirect to new url\r\n return true;\r\n\r\n // Or if we've started out with a hash-based route, but we're currently\r\n // in a browser where it could be `pushState`-based instead...\r\n } else if (this._hasPushState && this.atRoot() && loc.hash) {\r\n this.fragment = this.getHash().replace(routeStripper, '');\r\n this.history.replaceState({}, document.title, this.root + this.fragment);\r\n }\r\n\r\n }\r\n\r\n if (!this.options.silent) return this.loadUrl();\r\n }\r\n\r\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\r\n // but possibly useful for unit testing Routers.\r\n stop() {\r\n unbindEvent(window, this._hasPushState ? 'popstate' : 'hashchange', this.checkUrl);\r\n this.started = false;\r\n }\r\n\r\n // Add a route to be tested when the fragment changes. Routes added later\r\n // may override previous routes.\r\n route(route, callback) {\r\n this.handlers.unshift({route, callback});\r\n }\r\n\r\n // Checks the current URL to see if it has changed, and if it has,\r\n // calls `loadUrl`.\r\n checkUrl() {\r\n const current = this.getFragment();\r\n if (current === this.fragment) return false;\r\n this.loadUrl();\r\n }\r\n\r\n // Attempt to load the current URL fragment. If a route succeeds with a\r\n // match, returns `true`. If no defined routes matches the fragment,\r\n // returns `false`.\r\n loadUrl(fragment) {\r\n fragment = this.fragment = this.getFragment(fragment);\r\n return this.handlers.some(handler => {\r\n if (handler.route.test(fragment)) {\r\n handler.callback(fragment);\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n // Save a fragment into the hash history, or replace the URL state if the\r\n // 'replace' option is passed. You are responsible for properly URL-encoding\r\n // the fragment in advance.\r\n //\r\n // The options object can contain `trigger: true` if you wish to have the\r\n // route callback be fired (not usually desirable), or `replace: true`, if\r\n // you wish to modify the current URL without adding an entry to the history.\r\n update(fragment, options) {\r\n if (!this.started) return false;\r\n if (!options || options === true) options = {trigger: !!options};\r\n\r\n let url = this.root + (fragment = this.getFragment(fragment || ''));\r\n\r\n // Strip the hash for matching.\r\n fragment = fragment.replace(pathStripper, '');\r\n\r\n if (this.fragment === fragment) return;\r\n this.fragment = fragment;\r\n\r\n // Don't include a trailing slash on the root.\r\n if (fragment === '' && url !== '/') url = url.slice(0, -1);\r\n\r\n // If pushState is available, we use it to set the fragment as a real URL.\r\n if (this._hasPushState) {\r\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\r\n\r\n // If hash changes haven't been explicitly disabled, update the hash\r\n // fragment to store history.\r\n } else if (this._wantsHashChange) {\r\n this._updateHash(this.location, fragment, options.replace);\r\n // If you've told us that you explicitly don't want fallback hashchange-\r\n // based history, then `update` becomes a page refresh.\r\n } else {\r\n return this.location.assign(url);\r\n }\r\n if (options.trigger) return this.loadUrl(fragment);\r\n }\r\n\r\n // Update the hash location, either replacing the current entry, or adding\r\n // a new one to the browser history.\r\n _updateHash(location, fragment, replace) {\r\n if (replace) {\r\n const href = location.href.replace(/(javascript:|#).*$/, '');\r\n location.replace(`${href}#${fragment}`);\r\n } else {\r\n // Some browsers require that `hash` contains a leading #.\r\n location.hash = `#${fragment}`;\r\n }\r\n }\r\n\r\n // add some features to History\r\n\r\n // a generic callback for any changes\r\n onChange(callback) {\r\n this.route(/^(.*?)$/, callback);\r\n }\r\n\r\n // checks if the browser has pushstate support\r\n hasPushState() {\r\n // MODIFICATION OF ORIGINAL BACKBONE.HISTORY\r\n if (!this.started) {\r\n throw new Error(\"only available after LocationBar.start()\");\r\n }\r\n return this._hasPushState;\r\n }\r\n}\r\n\r\n// Cached regex for stripping a leading hash/slash and trailing space.\r\nconst routeStripper = /^[#\\/]|\\s+$/g;\r\n\r\n// Cached regex for stripping leading and trailing slashes.\r\nconst rootStripper = /^\\/+|\\/+$/g;\r\n\r\n// Cached regex for removing a trailing slash.\r\nconst trailingSlash = /\\/$/;\r\n\r\n// Cached regex for stripping urls of hash.\r\nconst pathStripper = /#.*$/;\r\n\r\n\r\n// export\r\nexport default History;\r\n","import { extend } from '../utils.js'\r\nimport LocationBar from './location-bar.js'\r\n\r\nclass BrowserLocation {\r\n constructor(options = {}) {\r\n this.path = options.path || ''\r\n\r\n this.options = extend(\r\n {\r\n pushState: false,\r\n root: '/',\r\n },\r\n options,\r\n )\r\n\r\n // we're using the location-bar module for actual\r\n // URL management\r\n this.locationBar = new LocationBar()\r\n this.locationBar.onChange((path) => {\r\n this.handleURL(`/${path || ''}`)\r\n })\r\n\r\n this.locationBar.start(options)\r\n }\r\n\r\n /**\r\n * Get the current URL\r\n */\r\n\r\n getURL() {\r\n return this.path\r\n }\r\n\r\n /**\r\n * Set the current URL without triggering any events\r\n * back to the router. Add a new entry in browser's history.\r\n */\r\n\r\n setURL(path, options = {}) {\r\n if (this.path !== path) {\r\n this.path = path\r\n this.locationBar.update(path, extend({ trigger: true }, options))\r\n }\r\n }\r\n\r\n /**\r\n * Set the current URL without triggering any events\r\n * back to the router. Replace the latest entry in broser's history.\r\n */\r\n\r\n replaceURL(path, options = {}) {\r\n if (this.path !== path) {\r\n this.path = path\r\n this.locationBar.update(path, extend({ trigger: true, replace: true }, options))\r\n }\r\n }\r\n\r\n /**\r\n * Setup a URL change handler\r\n * @param {Function} callback\r\n */\r\n onChange(callback) {\r\n this.changeCallback = callback\r\n }\r\n\r\n /**\r\n * Given a path, generate a URL appending root\r\n * if pushState is used and # if hash state is used\r\n */\r\n formatURL(path) {\r\n if (this.locationBar.hasPushState()) {\r\n let rootURL = this.options.root\r\n if (path !== '') {\r\n rootURL = rootURL.replace(/\\/$/, '')\r\n }\r\n return rootURL + path\r\n } else {\r\n if (path[0] === '/') {\r\n path = path.substr(1)\r\n }\r\n return `#${path}`\r\n }\r\n }\r\n\r\n /**\r\n * When we use pushState with a custom root option,\r\n * we need to take care of removingRoot at certain points.\r\n * Specifically\r\n * - browserLocation.update() can be called with the full URL by router\r\n * - LocationBar expects all .update() calls to be called without root\r\n * - this method is public so that we could dispatch URLs without root in router\r\n */\r\n removeRoot(url) {\r\n if (this.options.pushState && this.options.root && this.options.root !== '/') {\r\n return url.replace(this.options.root, '')\r\n } else {\r\n return url\r\n }\r\n }\r\n\r\n /**\r\n * Stop listening to URL changes and link clicks\r\n */\r\n destroy() {\r\n this.locationBar.stop()\r\n }\r\n\r\n /**\r\n initially, the changeCallback won't be defined yet, but that's good\r\n because we dont' want to kick off routing right away, the router\r\n does that later by manually calling this handleURL method with the\r\n url it reads of the location. But it's important this is called\r\n first by Backbone, because we wanna set a correct this.path value\r\n\r\n @private\r\n */\r\n handleURL(url) {\r\n this.path = url\r\n if (this.changeCallback) {\r\n this.changeCallback(url)\r\n }\r\n }\r\n}\r\n\r\nexport default BrowserLocation\r\n","import { extend } from '../utils.js'\r\n\r\nclass MemoryLocation {\r\n constructor({ path }) {\r\n this.path = path || ''\r\n }\r\n\r\n getURL() {\r\n return this.path\r\n }\r\n\r\n setURL(path, options) {\r\n if (this.path !== path) {\r\n this.path = path\r\n this.handleURL(this.getURL(), options)\r\n }\r\n }\r\n\r\n replaceURL(path, options) {\r\n if (this.path !== path) {\r\n this.setURL(path, options)\r\n }\r\n }\r\n\r\n onChange(callback) {\r\n this.changeCallback = callback\r\n }\r\n\r\n handleURL(url, options = {}) {\r\n this.path = url\r\n options = extend({ trigger: true }, options)\r\n if (this.changeCallback && options.trigger) {\r\n this.changeCallback(url)\r\n }\r\n }\r\n\r\n removeRoot(url) {\r\n return url\r\n }\r\n\r\n formatURL(url) {\r\n return url\r\n }\r\n}\r\n\r\nexport default MemoryLocation\r\n","export const TRANSITION_REDIRECTED = 'TransitionRedirected'\r\n\r\nexport const TRANSITION_CANCELLED = 'TransitionCancelled'\r\n","import { clone } from './utils.js'\r\nimport invariant from './invariant.js'\r\nimport { TRANSITION_CANCELLED, TRANSITION_REDIRECTED } from './constants.js'\r\n\r\n/**\r\n * @typedef {import(\"./router.js\").Route} Route\r\n */\r\n\r\n/**\r\n * @typedef {Pick<Transition, 'routes' | 'pathname' | 'path' | 'params' | 'query' >} TransitionData\r\n */\r\n\r\n/**\r\n * @typedef Transition\r\n * @property {Route[]} routes\r\n * @property {string} pathname\r\n * @property {string} path\r\n * @property {Object} params\r\n * @property {Object} query\r\n * @property {TransitionData} prev\r\n * @property {(name: string, params?: any, query?: any) => Transition} redirectTo\r\n * @property {(name: string, params?: any, query?: any) => Transition} retry\r\n * @property {(error: string | Error) => void} cancel\r\n * @property {() => Promise<any>} followRedirects\r\n * @property {function} then\r\n * @property {function} catch\r\n * @property {boolean} noop\r\n * @property {boolean} isCancelled\r\n */\r\n\r\n/**\r\n * @param {*} router\r\n * @param {Transition} transition\r\n * @param {*} err\r\n */\r\nfunction runError(router, transition, err) {\r\n router.middleware.forEach((m) => {\r\n m.error && m.error(transition, err)\r\n })\r\n}\r\n\r\n/**\r\n * @export\r\n * @param {*} options\r\n * @return {Transition}\r\n */\r\nexport default function transition(options) {\r\n options = options || {}\r\n\r\n const router = options.router\r\n const log = router.log\r\n const logError = router.logError\r\n\r\n const path = options.path\r\n const match = options.match\r\n const routes = match.routes\r\n const params = match.params\r\n const pathname = match.pathname\r\n const query = match.query\r\n\r\n const id = options.id\r\n const startTime = Date.now()\r\n log('---')\r\n log('Transition #' + id, 'to', path)\r\n log(\r\n 'Transition #' + id,\r\n 'routes:',\r\n routes.map((r) => r.name),\r\n )\r\n log('Transition #' + id, 'params:', params)\r\n log('Transition #' + id, 'query:', query)\r\n\r\n // create the transition promise\r\n let resolve, reject\r\n const promise = new Promise(function (res, rej) {\r\n resolve = res\r\n reject = rej\r\n })\r\n\r\n // 1. make transition errors loud\r\n // 2. by adding this handler we make sure\r\n // we don't trigger the default 'Potentially\r\n // unhandled rejection' for cancellations\r\n promise\r\n .then(function () {\r\n log('Transition #' + id, 'completed in', Date.now() - startTime + 'ms')\r\n })\r\n .catch(function (err) {\r\n if (err.type !== TRANSITION_REDIRECTED && err.type !== TRANSITION_CANCELLED) {\r\n log('Transition #' + id, 'FAILED')\r\n logError(err)\r\n }\r\n })\r\n\r\n let cancelled = false\r\n\r\n const transition = {\r\n id,\r\n prev: {\r\n routes: clone(router.state.routes) || [],\r\n path: router.state.path || '',\r\n pathname: router.state.pathname || '',\r\n params: clone(router.state.params) || {},\r\n query: clone(router.state.query) || {},\r\n },\r\n routes: clone(routes),\r\n path,\r\n pathname,\r\n params: clone(params),\r\n query: clone(query),\r\n redirectTo: function (...args) {\r\n return router.transitionTo(...args)\r\n },\r\n retry: function () {\r\n return router.transitionTo(path)\r\n },\r\n cancel: function (err) {\r\n if (router.state.activeTransition !== transition) {\r\n return\r\n }\r\n\r\n if (transition.isCancelled) {\r\n return\r\n }\r\n\r\n router.state.activeTransition = null\r\n transition.isCancelled = true\r\n cancelled = true\r\n\r\n if (!err) {\r\n err = new Error(TRANSITION_CANCELLED)\r\n err.type = TRANSITION_CANCELLED\r\n }\r\n if (err.type === TRANSITION_CANCELLED) {\r\n log('Transition #' + id, 'cancelled')\r\n }\r\n if (err.type === TRANSITION_REDIRECTED) {\r\n log('Transition #' + id, 'redirected')\r\n }\r\n\r\n router.middleware.forEach((m) => {\r\n m.cancel && m.cancel(transition, err)\r\n })\r\n reject(err)\r\n },\r\n followRedirects: function () {\r\n return promise.catch(function (reason) {\r\n if (router.state.activeTransition) {\r\n return router.state.activeTransition.followRedirects()\r\n }\r\n return Promise.reject(reason)\r\n })\r\n },\r\n\r\n then: promise.then.bind(promise),\r\n catch: promise.catch.bind(promise),\r\n }\r\n\r\n router.middleware.forEach((m) => {\r\n m.before && m.before(transition)\r\n })\r\n\r\n // here we handle calls to all of the middlewares\r\n function callNext(i, prevResult) {\r\n let middleware\r\n let middlewareName\r\n // if transition has been cancelled - nothing left to do\r\n if (cancelled) {\r\n return\r\n }\r\n // done\r\n if (i < router.middleware.length) {\r\n middleware = router.middleware[i]\r\n middlewareName = middleware.name || 'anonymous'\r\n log('Transition #' + id, 'resolving middleware:', middlewareName)\r\n let middlewarePromise\r\n try {\r\n middlewarePromise = middleware.resolve\r\n ? middleware.resolve(transition, prevResult)\r\n : prevResult\r\n invariant(\r\n transition !== middlewarePromise,\r\n 'Middleware %s returned a transition which resulted in a deadlock',\r\n middlewareName,\r\n )\r\n } catch (err) {\r\n router.state.activeTransition = null\r\n runError(router, transition, err)\r\n return reject(err)\r\n }\r\n Promise.resolve(middlewarePromise)\r\n .then(function (result) {\r\n callNext(i + 1, result)\r\n })\r\n .catch(function (err) {\r\n log('Transition #' + id, 'resolving middleware:', middlewareName, 'FAILED')\r\n router.state.activeTransition = null\r\n runError(router, transition, err)\r\n reject(err)\r\n })\r\n } else {\r\n router.state = {\r\n activeTransition: null,\r\n routes,\r\n path,\r\n pathname,\r\n params,\r\n query,\r\n }\r\n router.middleware.forEach((m) => {\r\n m.done && m.done(transition)\r\n })\r\n resolve()\r\n }\r\n }\r\n\r\n if (!options.noop) {\r\n Promise.resolve().then(() => callNext(0))\r\n } else {\r\n resolve()\r\n }\r\n\r\n if (options.noop) {\r\n transition.noop = true\r\n }\r\n\r\n return transition\r\n}\r\n","import { bindEvent, unbindEvent } from './events.js'\r\n\r\n/**\r\n * Handle link delegation on `el` or the document,\r\n * and invoke `fn(e)` when clickable.\r\n *\r\n * @param {Element} el\r\n * @param {(e: Event, el: HTMLElement) => void} fn\r\n * @return {Function} dispose\r\n * @api public\r\n */\r\n\r\nexport function intercept(el, fn) {\r\n const cb = delegate(el, 'click', function (e, el) {\r\n if (clickable(e, el)) fn(e, el)\r\n })\r\n\r\n return function dispose() {\r\n unbindEvent(el, 'click', cb)\r\n }\r\n}\r\n\r\n/**\r\n * Delegate event `type` to links\r\n * and invoke `fn(e)`. A callback function\r\n * is returned which may be passed to `.unbind()`.\r\n *\r\n * @param {HTMLElement} el\r\n * @param {String} selector\r\n * @param {String} type\r\n * @param {(e: Event, el: HTMLElement) => void} fn\r\n * @return {Function}\r\n * @api public\r\n */\r\n\r\nfunction delegate(el, type, fn) {\r\n return bindEvent(el, type, function (e) {\r\n const el = e.target.closest('a')\r\n if (el) {\r\n fn(e, el)\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * Check if `e` is clickable.\r\n */\r\n\r\n/**\r\n * @param {Event} e\r\n * @param {HTMLElement} el\r\n * @return {Boolean | undefined}\r\n */\r\nfunction clickable(e, el) {\r\n if (which(e) !== 1) return\r\n if (e.metaKey || e.ctrlKey || e.shiftKey) return\r\n if (e.defaultPrevented) return\r\n\r\n // check target\r\n if (el.target) return\r\n\r\n // check for data-bypass attribute\r\n if (el.getAttribute('data-bypass') !== null) return\r\n\r\n // inspect the href\r\n const href = el.getAttribute('href')\r\n if (!href || href.length === 0) return\r\n\r\n // don't handle hash links, external/absolute links, email links and javascript links\r\n if (/^(#|https{0,1}:\\/\\/|mailto|javascript:)/i.test(href)) return\r\n\r\n return true\r\n}\r\n\r\n/**\r\n * Event button.\r\n */\r\n\r\nfunction which(e) {\r\n e = e || window.event\r\n return e.which === null ? e.button : e.which\r\n}\r\n","export default function defineLogger(router, method, fn) {\r\n if (fn === true) return\r\n router[method] = typeof fn === 'function' ? fn : () => {}\r\n}\r\n","export default {\r\n parse(querystring) {\r\n return querystring.split('&').reduce((acc, pair) => {\r\n const parts = pair.split('=')\r\n acc[parts[0]] = decodeURIComponent(parts[1])\r\n return acc\r\n }, {})\r\n },\r\n\r\n stringify(params) {\r\n return Object.keys(params)\r\n .reduce((acc, key) => {\r\n if (params[key] !== undefined) {\r\n acc.push(key + '=' + encodeURIComponent(params[key]))\r\n }\r\n return acc\r\n }, [])\r\n .join('&')\r\n },\r\n}\r\n","/**\n * @param {string|RegExp} input The route pattern\n * @param {boolean} [loose] Allow open-ended matching. Ignored with `RegExp` input.\n */\nexport function parse(input, loose) {\n\tif (input instanceof RegExp) return { keys:false, pattern:input };\n\tvar c, o, tmp, ext, keys=[], pattern='', arr = input.split('/');\n\tarr[0] || arr.shift();\n\n\twhile (tmp = arr.shift()) {\n\t\tc = tmp[0];\n\t\tif (c === '*') {\n\t\t\tkeys.push(c);\n\t\t\tpattern += tmp[1] === '?' ? '(?:/(.*))?' : '/(.*)';\n\t\t} else if (c === ':') {\n\t\t\to = tmp.indexOf('?', 1);\n\t\t\text = tmp.indexOf('.', 1);\n\t\t\tkeys.push( tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length) );\n\t\t\tpattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';\n\t\t\tif (!!~ext) pattern += (!!~o ? '?' : '') + '\\\\' + tmp.substring(ext);\n\t\t} else {\n\t\t\tpattern += '/' + tmp;\n\t\t}\n\t}\n\n\treturn {\n\t\tkeys: keys,\n\t\tpattern: new RegExp('^' + pattern + (loose ? '(?=$|\\/)' : '\\/?$'), 'i')\n\t};\n}\n\nvar RGX = /(\\/|^)([:*][^/]*?)(\\?)?(?=[/.]|$)/g;\n\n// error if key missing?\nexport function inject(route, values) {\n\treturn route.replace(RGX, (x, lead, key, optional) => {\n\t\tx = values[key=='*' ? key : key.substring(1)];\n\t\treturn x ? '/'+x : (optional || key=='*') ? '' : '/' + key;\n\t});\n}\n","import { parse } from 'regexparam'\r\n\r\nconst splatRegex = /:(\\w+)\\*/\r\n\r\nexport function patternCompiler(pattern) {\r\n // hack to add (partial) named splat support\r\n const splatMatch = splatRegex.exec(pattern)\r\n const normalizedPattern = splatMatch ? pattern.replace(splatRegex, '*') : pattern\r\n\r\n const { pattern: matcher, keys } = parse(normalizedPattern)\r\n\r\n const paramNames = splatMatch ? keys.map((key) => (key === '*' ? splatMatch[1] : key)) : keys\r\n\r\n return {\r\n matcher,\r\n paramNames,\r\n }\r\n}\r\n","/* eslint-disable array-callback-return */\r\nimport { pick, clone, extend, isEqual, keys } from './utils.js'\r\nimport functionDsl from './function-dsl.js'\r\nimport arrayDsl from './array-dsl.js'\r\nimport {\r\n withQuery,\r\n withoutQuery,\r\n injectParams,\r\n extractParams,\r\n extractParamNames,\r\n extractQuery,\r\n} from './path.js'\r\nimport invariant from './invariant.js'\r\nimport BrowserLocation from './locations/browser.js'\r\nimport MemoryLocation from './locations/memory.js'\r\nimport transition from './transition.js'\r\nimport { intercept } from './links.js'\r\nimport defineLogger from './logger.js'\r\nimport qs from './qs.js'\r\nimport { patternCompiler } from './patternCompiler.js'\r\nimport { TRANSITION_CANCELLED, TRANSITION_REDIRECTED } from './constants.js'\r\n\r\n/**\r\n * @typedef {import('./function-dsl.js').routeCallback} routeCallback\r\n * @typedef {import('./array-dsl.js').RouteDef} RouteDef\r\n * @typedef {import('./transition.js').Transition} Transition\r\n *\r\n * @typedef Route\r\n * @property {String} name\r\n * @property {String} path\r\n * @property {Object} options\r\n * @property {Route[]} routes\r\n *\r\n\r\n * @typedef {Object | 'browser' | 'memory'} LocationParam\r\n *\r\n *\r\n * @typedef RouterOptions\r\n * @property {routeCallback | RouteDef[]} [routes]\r\n * @property {LocationParam} [location]\r\n * @property {Boolean} [logError]\r\n * @property {Object} [qs]\r\n * @property {Object} [patternCompiler]\r\n *\r\n */\r\n\r\nclass Router {\r\n /**\r\n * @param {RouterOptions} [options]\r\n */\r\n constructor(options = {}) {\r\n this.nextId = 1\r\n this.state = {}\r\n this.middleware = []\r\n this.options = extend(\r\n {\r\n location: 'browser',\r\n logError: true,\r\n qs,\r\n patternCompiler,\r\n },\r\n options,\r\n )\r\n defineLogger(this, 'log', this.options.log)\r\n defineLogger(this, 'logError', this.options.logError)\r\n if (options.routes) {\r\n this.map(options.routes)\r\n }\r\n }\r\n\r\n /**\r\n * Add a middleware\r\n * @param {Function} middleware\r\n * @return {Router}\r\n * @api public\r\n */\r\n use(middleware, options = {}) {\r\n const m = typeof middleware === 'function' ? { resolve: middleware } : middleware\r\n typeof options.at === 'number'\r\n ? this.middleware.splice(options.at, 0, m)\r\n : this.middleware.push(m)\r\n m.create && m.create(this)\r\n return this\r\n }\r\n\r\n /**\r\n * Add the route map\r\n * @param {routeCallback | RouteDef[]} routes\r\n * @return {Router}\r\n * @api public\r\n */\r\n map(routes) {\r\n // create the route tree\r\n this.routes = Array.isArray(routes) ? arrayDsl(routes) : functionDsl(routes)\r\n\r\n // create the matcher list, which is like a flattened\r\n // list of routes = a list of all branches of the route tree\r\n const matchers = (this.matchers = [])\r\n // keep track of whether duplicate paths have been created,\r\n // in which case we'll warn the dev\r\n const dupes = {}\r\n // keep track of abstract routes to build index route forwarding\r\n const abstracts = {}\r\n\r\n eachBranch({ routes: this.routes }, [], (routes) => {\r\n // concatenate the paths of the list of routes\r\n let path = routes.reduce(\r\n (\r\n memo,\r\n r, // reset if there's a leading slash, otherwise concat\r\n ) =>\r\n // and keep resetting the trailing slash\r\n (r.path[0] === '/' ? r.path : `${memo}/${r.path}`).replace(/\\/$/, ''),\r\n '',\r\n )\r\n // ensure we have a leading slash\r\n if (path === '') {\r\n path = '/'\r\n }\r\n\r\n const lastRoute = routes[routes.length - 1]\r\n\r\n if (lastRoute.options.abstract) {\r\n abstracts[path] = lastRoute.name\r\n return\r\n }\r\n\r\n if (lastRoute.path === '') {\r\n let matcher\r\n matchers.some((m) => {\r\n if (m.path === path) {\r\n matcher = m\r\n return true\r\n }\r\n })\r\n\r\n if (matcher) {\r\n // remap the matcher of a parent route\r\n matcher.routes = routes\r\n } else if (abstracts[path]) {\r\n matchers.push({\r\n routes,\r\n name: abstracts[path],\r\n path,\r\n })\r\n }\r\n }\r\n\r\n // register routes\r\n matchers.push({\r\n routes,\r\n name: lastRoute.name,\r\n path,\r\n })\r\n\r\n // dupe detection\r\n if (dupes[path] && lastRoute.path !== '') {\r\n throw new Error(\r\n `Routes ${dupes[path]} and ${lastRoute.name} have the same url path '${path}'`,\r\n )\r\n }\r\n dupes[path] = lastRoute.name\r\n })\r\n\r\n function eachBranch(node, memo, fn) {\r\n node.routes.forEach((route) => {\r\n fn(memo.concat(route))\r\n\r\n if (route.routes.length) {\r\n eachBranch(route, memo.concat(route), fn)\r\n }\r\n })\r\n }\r\n\r\n return this\r\n }\r\n\r\n /**\r\n * Starts listening to the location changes.\r\n * @param {String} [path]\r\n * @return {Transition} initial transition\r\n *\r\n * @api public\r\n */\r\n listen(path) {\r\n const location = (this.location = this.createLocation(path || ''))\r\n // setup the location onChange handler\r\n location.onChange((url) => {\r\n const previousUrl = this.state.path\r\n this.dispatch(url).catch((err) => {\r\n if (err && err.type === TRANSITION_CANCELLED) {\r\n // reset the URL in case the transition has been cancelled\r\n this.location.replaceURL(previousUrl, { trigger: false })\r\n }\r\n return err\r\n })\r\n })\r\n // and also kick off the initial transition\r\n return this.dispatch(location.getURL())\r\n }\r\n\r\n /**\r\n * Transition to a different route. Passe in url or a route name followed by params and query\r\n * @param {String} name url or route name\r\n * @param {Object} [params] Optional\r\n * @param {Object} [query] Optional\r\n * @return {Transition} transition\r\n *\r\n * @api public\r\n */\r\n transitionTo(name, params, query) {\r\n if (this.state.activeTransition) {\r\n return this.replaceWith(name, params, query)\r\n }\r\n return this.doTransition('setURL', name, params, query)\r\n }\r\n\r\n /**\r\n * Like transitionTo, but doesn't leave an entry in the browser's history,\r\n * so clicking back will skip this route\r\n * @param {String} name url or route name followed by params and query\r\n * @param {Record<string, any>} [params]\r\n * @param {Record<string, any>} [query]\r\n * @return {Transition} transition\r\n *\r\n * @api public\r\n */\r\n replaceWith(name, params, query) {\r\n return this.doTransition('replaceURL', name, params, query)\r\n }\r\n\r\n /**\r\n * Create an href\r\n * @param {String} name target route name\r\n * @param {Object} [params]\r\n * @param {Object} [query]\r\n * @return {String} href\r\n *\r\n * @api public\r\n */\r\n generate(name, params, query) {\r\n invariant(this.location, 'call .listen() before using .generate()')\r\n let matcher\r\n\r\n query = query || {}\r\n\r\n this.matchers.forEach((m) => {\r\n if (m.name === name) {\r\n matcher = m\r\n }\r\n })\r\n\r\n if (!matcher) {\r\n throw new Error(`No route is named ${name}`)\r\n }\r\n\r\n const url = withQuery(this.options.qs, injectParams(matcher.path, params), query)\r\n return this.location.formatURL(url)\r\n }\r\n\r\n /**\r\n * Stop listening to URL changes\r\n * @api public\r\n */\r\n destroy() {\r\n if (this.location && this.location.destroy) {\r\n this.location.destroy()\r\n }\r\n if (this.state.activeTransition) {\r\n this.state.activeTransition.cancel()\r\n }\r\n this.state = {}\r\n this.middleware.forEach((m) => {\r\n m.destroy && m.destroy(this)\r\n })\r\n }\r\n\r\n /**\r\n * Check if the given route/params/query combo is active\r\n * @param {String} name target route name\r\n * @param {Record<string, any>} [params]\r\n * @param {Record<string, any>} [query]\r\n * @param {Boolean} [exact]\r\n * @return {Boolean}\r\n *\r\n * @api public\r\n */\r\n isActive(name, params, query, exact) {\r\n const activeRoutes = this.state.routes || []\r\n const activeParams = this.state.params\r\n const activeQuery = this.state.query\r\n\r\n let isActive =\r\n activeRoutes.some((route) => route.name === name) &&\r\n (!exact || activeRoutes[activeRoutes.length - 1].name === name)\r\n isActive =\r\n isActive && (!params || keys(params).every((key) => activeParams[key] === params[key]))\r\n isActive = isActive && (!query || keys(query).every((key) => activeQuery[key] === query[key]))\r\n\r\n return isActive\r\n }\r\n\r\n /**\r\n * @api private\r\n * @param {String} method pushState or replaceState\r\n * @param {String} name target route name\r\n * @param {Object} [params]\r\n * @param {Object} [query]\r\n * @return {Transition} transition\r\n */\r\n doTransition(method, name, params, query) {\r\n const previousUrl = this.location.getURL()\r\n\r\n let url = name\r\n if (url[0] !== '/') {\r\n url = this.generate(name, params, query)\r\n url = url.replace(/^#/, '/')\r\n }\r\n\r\n if (this.options.pushState) {\r\n url = this.location.removeRoot(url)\r\n }\r\n\r\n const transition = this.dispatch(url)\r\n\r\n transition.catch((err) => {\r\n if (err && err.type === TRANSITION_CANCELLED) {\r\n // reset the URL in case the transition has been cancelled\r\n this.location.replaceURL(previousUrl, { trigger: false })\r\n }\r\n return err\r\n })\r\n\r\n this.location[method](url, { trigger: false })\r\n\r\n return transition\r\n }\r\n\r\n /**\r\n * Match the path against the routes\r\n * @param {String} path\r\n * @return {Object} the list of matching routes and params\r\n *\r\n * @api private\r\n */\r\n match(path) {\r\n path = (path || '').replace(/\\/$/, '') || '/'\r\n let params\r\n let routes = []\r\n const pathWithoutQuery = withoutQuery(path)\r\n const { qs, patternCompiler } = this.options\r\n this.matchers.some((matcher) => {\r\n params = extractParams(matcher.path, pathWithoutQuery, patternCompiler)\r\n if (params) {\r\n routes = matcher.routes\r\n return true\r\n }\r\n })\r\n return {\r\n routes: routes.map(descriptor),\r\n params: params || {},\r\n pathname: pathWithoutQuery,\r\n query: extractQuery(qs, path) || {},\r\n }\r\n\r\n // clone the data (only a shallow clone of options)\r\n // to make sure the internal route store is not mutated\r\n // by the middleware. The middleware can mutate data\r\n // before it gets passed into the resolve middleware, but\r\n // only within the same transition. New transitions\r\n // will get to use pristine data.\r\n function descriptor(route) {\r\n return {\r\n name: route.name,\r\n path: route.path,\r\n params: pick(params, extractParamNames(route.path, patternCompiler)),\r\n options: clone(route.options),\r\n }\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} path\r\n * @returns {Transition}\r\n */\r\n dispatch(path) {\r\n const match = this.match(path)\r\n const query = match.query\r\n const pathname = match.pathname\r\n\r\n const activeTransition = this.state.activeTransition\r\n\r\n // if we already have an active transition with all the same\r\n // params - return that and don't do anything else\r\n if (\r\n activeTransition &&\r\n activeTransition.pathname === pathname &&\r\n isEqual(activeTransition.query, query)\r\n ) {\r\n return activeTransition\r\n }\r\n\r\n // otherwise, cancel the active transition since we're\r\n // redirecting (or initiating a brand new transition)\r\n if (activeTransition) {\r\n const err = new Error(TRANSITION_REDIRECTED)\r\n err.type = TRANSITION_REDIRECTED\r\n err.nextPath = path\r\n activeTransition.cancel(err)\r\n }\r\n\r\n // if there is no active transition, check if\r\n // this is a noop transition, in which case, return\r\n // a transition to respect the function signature,\r\n // but don't actually run any of the middleware\r\n if (!activeTransition) {\r\n if (this.state.pathname === pathname && isEqual(this.state.query, query)) {\r\n return transition({\r\n id: this.nextId++,\r\n path,\r\n match,\r\n noop: true,\r\n router: this,\r\n })\r\n }\r\n }\r\n\r\n const t = transition({\r\n id: this.nextId++,\r\n path,\r\n match,\r\n router: this,\r\n })\r\n\r\n this.state.activeTransition = t\r\n\r\n return t\r\n }\r\n\r\n /**\r\n * Create the default location.\r\n * This is used when no custom location is passed to\r\n * the listen call.\r\n * @param {LocationParam} path\r\n * @return {Object} location\r\n *\r\n * @api private\r\n */\r\n createLocation(path) {\r\n const location = this.options.location\r\n if (typeof location !== 'string') {\r\n return location\r\n }\r\n if (location === 'browser') {\r\n return new BrowserLocation(pick(this.options, ['pushState', 'root']))\r\n } else if (location === 'memory') {\r\n return new MemoryLocation({ path })\r\n } else {\r\n throw new Error('Location can be `browser`, `memory` or a custom implementation')\r\n }\r\n }\r\n\r\n log(...args) {\r\n console.info(...args)\r\n }\r\n\r\n logError(...args) {\r\n console.error(...args)\r\n }\r\n}\r\n\r\n/**\r\n *\r\n * @param {Event} event\r\n * @param {HTMLAnchorElement} link\r\n * @param {Router} router\r\n */\r\nfunction defaultClickHandler(event, link, router) {\r\n event.preventDefault()\r\n router.transitionTo(router.location.removeRoot(link.getAttribute('href')))\r\n}\r\n\r\n/**\r\n * @description Helper to intercept links when using pushState but server is not configured for it\r\n * Link clicks are handled via the router avoiding browser page reload\r\n * @param {Router} router\r\n * @param {HTMLElement} el\r\n * @param {(e: Event, link: HTMLAnchorElement, router: Router) => void} clickHandler\r\n * @returns {Function} dispose\r\n */\r\nfunction interceptLinks(router, el = document, clickHandler = defaultClickHandler) {\r\n return intercept(el, (event, link) => clickHandler(event, link, router))\r\n}\r\n\r\nexport { Router, interceptLinks }\r\n","const resolved = Promise.resolve()\r\nlet routeElMap = Object.create(null)\r\nlet routeComponentMap = Object.create(null)\r\nlet routePropertiesMap = Object.create(null)\r\n\r\nlet router, rootOutlet, rootOutletEl\r\n\r\n/**\r\n * @typedef {import(\"../transition.js\").Transition} Transition\r\n *\r\n * @typedef WCRouteDef\r\n * @property {string} name\r\n * @property {string} path\r\n * @property {string | Function} component\r\n * @property {Object.<string, PropertyHook | PropertyHook[]>} [properties]\r\n * @property {boolean} [reuse]\r\n * @property {function(Transition): Promise<boolean> | boolean} [beforeEnter]\r\n * @property {function(Transition): Promise<boolean> | boolean} [beforeLeave]\r\n * @property {function(Transition): Promise<void> | void} [afterEnter]\r\n * @property {function(Transition): Promise<void> | void} [afterLeave]\r\n */\r\n\r\n/**\r\n * @callback PropertySetter\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n\r\n/**\r\n * @typedef PropertyHook\r\n * @property {function(PropertySetter): void} [init]\r\n * @property {function(Transition, PropertySetter): void} [enter]\r\n * @property {function(Transition, PropertySetter): void} [leave]\r\n * @property {function(*, HTMLElement): void} [update]\r\n */\r\n\r\n/**\r\n * @param {*} value\r\n * @return {*}\r\n */\r\nfunction parseNumber(value) {\r\n const n = parseFloat(value)\r\n const isNumeric = value == n // eslint-disable-line eqeqeq\r\n return isNumeric ? n : value\r\n}\r\n\r\nfunction getFormattedValue(value, format) {\r\n let v = value\r\n if (v !== undefined) {\r\n if (format === 'number') {\r\n v = parseNumber(value)\r\n } else if (typeof format === 'function') {\r\n v = format(value)\r\n }\r\n }\r\n return v\r\n}\r\n\r\n/**\r\n * @param {*} value\r\n * @returns {PropertyHook}\r\n */\r\nexport function fromValue(value) {\r\n return {\r\n init(setValue) {\r\n setValue(value)\r\n },\r\n }\r\n}\r\n\r\n/**\r\n * @param {string} key\r\n * @param {string | Function} [format]\r\n * @returns {PropertyHook}\r\n */\r\nexport function fromQuery(queryKey, format) {\r\n return {\r\n enter(transition, setValue) {\r\n setValue(transition.query[queryKey], format)\r\n },\r\n }\r\n}\r\n\r\n/**\r\n *\r\n * @param {string} paramKey\r\n * @param {string | Function} format\r\n * @returns {PropertyHook}\r\n */\r\nexport function fromParam(paramKey, format) {\r\n return {\r\n enter(transition, setValue) {\r\n setValue(transition.params[paramKey], format)\r\n },\r\n }\r\n}\r\n\r\nexport function getRouteEl(route) {\r\n return routeElMap[route.name]\r\n}\r\n\r\nfunction create(instance) {\r\n router = instance\r\n rootOutlet = instance.options.outlet\r\n}\r\n\r\nfunction destroy() {\r\n router = null\r\n routeElMap = Object.create(null)\r\n routeComponentMap = Object.create(null)\r\n routePropertiesMap = Object.create(null)\r\n rootOutletEl = null\r\n}\r\n\r\nfunction isEqual(obj1, obj2) {\r\n const keys1 = Object.keys(obj1)\r\n return keys1.length === Object.keys(obj2).length && keys1.every((key) => obj2[key] === obj1[key])\r\n}\r\n\r\nfunction getOutlet(el) {\r\n const renderRoot = el.shadowRoot || el\r\n return renderRoot.querySelector(el.constructor.outlet || 'router-outlet')\r\n}\r\n\r\nfunction resolveRootOutlet() {\r\n if (rootOutletEl) return rootOutletEl\r\n if (!rootOutlet) return document.body\r\n rootOutletEl = typeof rootOutlet === 'string' ? document.querySelector(rootOutlet) : rootOutlet\r\n if (!rootOutletEl) {\r\n throw new Error(`slick-router(wc): Invalid outlet option ${rootOutlet}`)\r\n }\r\n return rootOutletEl\r\n}\r\n\r\nfunction getParentEl(transition, parentIndex) {\r\n let parent = transition.routes[parentIndex]\r\n while (parent) {\r\n if (parent.options.component) {\r\n return routeElMap[parent.name]\r\n }\r\n parent = transition.routes[--parentIndex]\r\n }\r\n}\r\n\r\nfunction getChangingIndex(prevRoutes, currentRoutes) {\r\n let index, prev, current\r\n const count = Math.max(prevRoutes.length, currentRoutes.length)\r\n for (index = 0; index < count; index++) {\r\n prev = prevRoutes[index]\r\n current = currentRoutes[index]\r\n if (!(prev && current) || prev.name !== current.name || !isEqual(prev.params, current.params)) {\r\n break\r\n }\r\n }\r\n return index\r\n}\r\n\r\nfunction runPropertyHookMethod(transition, routes, method) {\r\n for (let i = 0; i < routes.length; i++) {\r\n const { route } = routes[i]\r\n const propertiesData = routePropertiesMap[route.name]\r\n for (const { hooks, set } of Object.values(propertiesData)) {\r\n hooks.forEach((hook) => {\r\n if (typeof hook[method] === 'function') {\r\n hook[method](transition, set)\r\n }\r\n })\r\n }\r\n }\r\n}\r\n\r\nasync function runLifeCycle(transition, routes, prefix, suffix) {\r\n for (let i = 0; i < routes.length; i++) {\r\n let result\r\n const { route, el } = routes[i]\r\n const routeMethod = route.options[`${prefix}${suffix}`]\r\n if (typeof routeMethod === 'function') {\r\n result = await routeMethod(transition)\r\n if (result === false) {\r\n transition.cancel()\r\n }\r\n }\r\n if (transition.isCancelled) break\r\n const elMethod = el && el[`${prefix}Route${suffix}`]\r\n if (typeof elMethod === 'function') {\r\n result = await elMethod.call(el, transition)\r\n if (result === false) {\r\n transition.cancel()\r\n }\r\n }\r\n if (transition.isCancelled) break\r\n }\r\n}\r\n\r\nfunction resolveModule(value) {\r\n return value && value.__esModule ? value.default : value\r\n}\r\n\r\nfunction initPropertyHook(value) {\r\n if (value && typeof value === 'object') return value\r\n return fromValue(value)\r\n}\r\n\r\nfunction initProperties(route) {\r\n let propertiesData = routePropertiesMap[route.name]\r\n if (!propertiesData) {\r\n propertiesData = routePropertiesMap[route.name] = Object.create(null)\r\n const properties = route.options.properties\r\n if (properties) {\r\n for (const [name, hookOrValue] of Object.entries(properties)) {\r\n const hooks = Array.isArray(hookOrValue)\r\n ? hookOrValue.map(initPropertyHook)\r\n : [initPropertyHook(hookOrValue)]\r\n\r\n const set = (v, format) => {\r\n const propertyData = propertiesData[name]\r\n const newValue = getFormattedValue(v, format)\r\n if (propertyData.value === newValue) return\r\n propertyData.value = newValue\r\n const el = routeElMap[route.name]\r\n if (el) {\r\n el[name] = newValue\r\n }\r\n hooks.forEach((hook) => {\r\n if (typeof hook.update === 'function') {\r\n hook.update(newValue, el)\r\n }\r\n })\r\n }\r\n propertiesData[name] = { hooks, set }\r\n hooks.forEach((hook) => {\r\n if (typeof hook.init === 'function') {\r\n hook.init(set)\r\n }\r\n })\r\n }\r\n }\r\n }\r\n}\r\n\r\nasync function resolveRoutes(routes) {\r\n const result = []\r\n\r\n for (const route of routes) {\r\n let el = route.options.reuse ? routeElMap[route.name] : undefined\r\n let Component = route.options.component\r\n if (!el && Component) {\r\n if (typeof Component === 'function' && !(Component.prototype instanceof HTMLElement)) {\r\n Component =\r\n routeComponentMap[route.name] ||\r\n (routeComponentMap[route.name] = resolveModule(await Component(route)))\r\n }\r\n el = typeof Component === 'string' ? document.createElement(Component) : new Component()\r\n routeElMap[route.name] = el\r\n el.$router = router\r\n }\r\n\r\n initProperties(route)\r\n\r\n result.push({ el, route })\r\n }\r\n return result\r\n}\r\n\r\nfunction applyProperties(el, route) {\r\n const propertiesData = routePropertiesMap[route.name]\r\n Object.entries(propertiesData).forEach(([name, { value }]) => {\r\n el[name] = value\r\n })\r\n}\r\n\r\nconst removedEls = new WeakSet()\r\nconst outletCurrentEl = new WeakMap()\r\n\r\nasync function renderElements(transition, activated, changingIndex) {\r\n // set properties of not activated elements\r\n const { path, pathname, routes, params, query } = transition\r\n const routeState = { path, pathname, routes, params, query }\r\n for (let k = 0; k < changingIndex; k++) {\r\n const route = transition.routes[k]\r\n const el = routeElMap[route.name]\r\n if (el) {\r\n el.$route = routeState\r\n applyProperties(el, route)\r\n }\r\n }\r\n for (let i = 0; i < activated.length; i++) {\r\n const { el, route } = activated[i]\r\n if (el) {\r\n const parentEl = getParentEl(transition, changingIndex + i - 1)\r\n const outletEl = parentEl ? getOutlet(parentEl) : resolveRootOutlet()\r\n if (outletEl) {\r\n const currentEl = outletCurrentEl.get(outletEl) || outletEl.firstElementChild\r\n if (currentEl) {\r\n outletEl.removeChild(currentEl)\r\n removedEls.add(currentEl)\r\n }\r\n el.$route = routeState\r\n applyProperties(el, route)\r\n outletEl.appendChild(el)\r\n outletCurrentEl.set(outletEl, el)\r\n await (el.updateComplete || resolved)\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction updateDOMTree(activated, deactivated) {\r\n let parentElRemoved\r\n for (let routeIndex = deactivated.length - 1; routeIndex >= 0; routeIndex--) {\r\n const { route, el } = deactivated[routeIndex]\r\n if (!activated.some(({ route: activeRoute }) => activeRoute.name === route.name)) {\r\n if (el) {\r\n // removes only the parent el from the deactivated els\r\n // and don't remove elements that were queued to be removed\r\n // necessary for lazy removal done in animations\r\n if (!parentElRemoved && !removedEls.has(el)) el.remove()\r\n parentElRemoved = true\r\n }\r\n routeElMap[route.name] = undefined\r\n }\r\n }\r\n}\r\n\r\nasync function resolve(transition) {\r\n const prevRoutes = transition.prev.routes\r\n const changingIndex = getChangingIndex(prevRoutes, transition.routes)\r\n const deactivated = []\r\n\r\n // deactivate previous routes from child to parent\r\n for (let routeIndex = prevRoutes.length - 1; routeIndex >= changingIndex; routeIndex--) {\r\n const route = prevRoutes[routeIndex]\r\n deactivated.push({ el: routeElMap[route.name], route })\r\n }\r\n\r\n await runLifeCycle(transition, deactivated, 'before', 'Leave')\r\n\r\n if (transition.isCancelled) return\r\n\r\n const activated = await resolveRoutes(transition.routes.slice(changingIndex))\r\n\r\n await runLifeCycle(transition, activated, 'before', 'Enter')\r\n\r\n if (transition.isCancelled) return\r\n\r\n runPropertyHookMethod(transition, activated, 'enter')\r\n\r\n await renderElements(transition, activated, changingIndex)\r\n\r\n updateDOMTree(activated, deactivated)\r\n\r\n transition.activated = activated\r\n transition.deactivated = deactivated\r\n}\r\n\r\nfunction done(transition) {\r\n runPropertyHookMethod(transition, transition.deactivated, 'leave')\r\n runLifeCycle(transition, transition.deactivated, 'after', 'Leave')\r\n runLifeCycle(transition, transition.activated, 'after', 'Enter')\r\n}\r\n\r\nexport const wc = {\r\n create,\r\n destroy,\r\n resolve,\r\n done,\r\n}\r\n","import { Router as CoreRouter, interceptLinks } from './router.js'\r\nimport { wc, fromParam, fromQuery, fromValue, getRouteEl } from './middlewares/wc.js'\r\nimport { routerLinks } from './middlewares/router-links.js'\r\nimport './components/router-links.js'\r\n\r\n/**\r\n * @typedef {import(\"./middlewares/wc.js\").WCRouteDef} WCRouteDef\r\n * @typedef {import(\"./middlewares/wc.js\").PropertyHook} PropertyHook\r\n * @typedef {import(\"./transition.js\").Transition} Transition\r\n */\r\n\r\nclass Router extends CoreRouter {\r\n constructor(options) {\r\n super(options)\r\n this.use(wc)\r\n this.use(routerLinks)\r\n }\r\n}\r\n\r\nexport { Router, interceptLinks, fromParam, fromQuery, fromValue, getRouteEl }\r\n","let eventPrefix\r\n\r\nfunction trigger(name, detail) {\r\n window.dispatchEvent(new CustomEvent(`${eventPrefix}${name}`, { detail }))\r\n}\r\n\r\nexport const events = {\r\n create: function (router) {\r\n eventPrefix = router.options.eventPrefix || 'router-'\r\n },\r\n\r\n before: function (transition) {\r\n trigger('before:transition', { transition })\r\n },\r\n\r\n done: function (transition) {\r\n trigger('transition', { transition })\r\n },\r\n\r\n cancel: function (transition, error) {\r\n if (error.type !== 'TransitionRedirected') {\r\n trigger('abort', { transition, error })\r\n }\r\n },\r\n\r\n error: function (transition, error) {\r\n trigger('abort', { transition, error })\r\n trigger('error', { transition, error })\r\n },\r\n}\r\n","import { interceptLinks, Router } from 'slick-router';\n//import {Router as CoreRouter, interceptLinks} from 'slick-router/core.js';\nimport { events } from 'slick-router/middlewares/events.js';\n\nimport { default as WJElement } from '../wje-element/element.js';\n\n/**\n * `Routerx` is a custom web component that represents a router in a routing system.\n * @summary This element represents a router in a routing system.\n * @documentation https://elements.webjet.sk/components/router\n * @status stable\n * @augments {WJElement}\n * @tag wje-router\n */\nexport default class Routerx extends WJElement {\n /**\n * Creates an instance of Routerx.\n * @class\n */\n constructor() {\n super();\n }\n\n className = 'Routerx';\n\n /**\n * Returns the list of attributes to observe for changes.\n * @static\n * @returns {Array<string>}\n */\n static get observedAttributes() {\n return [];\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n }\n\n /**\n * Sets up the router after the component is drawn.\n */\n beforeDraw() {\n const htmlString = this.outerHTML;\n\n const parser = new DOMParser();\n const htmlDocument = parser.parseFromString(htmlString, 'text/html');\n const rootElement = htmlDocument.querySelector('wje-router');\n\n const routes = this.parseElement(rootElement).root;\n\n this.router = new Router({\n outlet: this.outlet || 'wje-router-outlet',\n log: false,\n logError: true,\n root: this.root || '/',\n pushState: true,\n });\n\n this.router.map(routes);\n this.router.use(this.setBreadcrumb);\n this.router.use(events);\n this.router.use(this.resetScrollPosition);\n this.router.listen();\n\n this.unbindIntercept = interceptLinks(this.router);\n }\n\n /**\n * Parses an element and returns an object representation.\n * @param {Element} element The element to parse.\n * @returns {object} The object representation of the element.\n */\n parseElement(element) {\n const obj = {};\n const attributes = element.attributes;\n\n for (let i = 0; i < attributes.length; i++) {\n const attributeName = attributes[i].name;\n const attributeValue = attributes[i].value;\n\n if (attributeName === 'component' && attributeValue.indexOf('.js') > -1) {\n // eslint-disable-next-line jsdoc/no-bad-blocks\n obj.component = () => import(/* @vite-ignore */ attributeValue);\n } else {\n if (attributeName !== 'shadow') {\n const camelCase = attributeName.replace(/-([a-z])/g, (g) => g[1].toUpperCase());\n obj[camelCase] = attributeValue;\n }\n }\n }\n\n const children = [];\n const childElements = Array.from(element.children);\n\n childElements.forEach((childElement) => {\n children.push(this.parseElement(childElement));\n });\n\n if (children.length > 0 && element.tagName === 'WJE-ROUTE') {\n obj.children = children;\n } else {\n obj.root = children;\n }\n\n return obj;\n }\n\n /**\n * Sets the breadcrumb for the transition.\n * @param {object} transition The transition object.\n */\n setBreadcrumb = (transition) => {\n let breadcrumb = [\n ...transition.routes\n .filter((obj) => 'breadcrumb' in obj.options)\n .map((b, i) => {\n return {\n name: b.options.breadcrumbPath || b.name,\n text:\n b.options.breadcrumb instanceof Function\n ? b.options.breadcrumb?.(transition)\n : b.options.breadcrumb,\n params: { ...b.params, ...transition.params },\n path: this.router.generate(b.name, { ...b.params, ...transition.params }),\n };\n }),\n ];\n\n transition.breadcrumbs = breadcrumb;\n };\n\n /**\n * Resets the scroll position.\n * @param {object} transition The transition object.\n */\n resetScrollPosition = (transition) => {\n window.scrollTo(0, 0);\n };\n\n /**\n * Cleans up before the component is disconnected.\n */\n beforeDisconnect() {\n this.unbindIntercept();\n this.router.destroy();\n }\n}\n","import Routerx from './router.element.js';\n\nexport default Routerx;\n\nRouterx.define('wje-router', Routerx);\n"],"names":["isEqual","qs","LocationBar","router","transition","resolve","el","keys","routes","patternCompiler","Router","CoreRouter"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wje-row.js","sources":["../packages/wje-row/row.element.js","../packages/wje-row/row.js"],"sourcesContent":["import { default as WJElement } from '../wje-element/element.js';\nimport styles from './scss/styles.scss?inline';\n\n/**\n * `Row` is a custom web component that represents a row in a layout system.\n * @summary This element represents a row in a layout system.\n * @documentation https://elements.webjet.sk/components/row\n * @status stable\n * @augments WJElement\n * @slot - The default slot for the row.\n * @tag wje-row\n */\nexport default class Row extends WJElement {\n /**\n * Creates an instance of Row.\n * @class\n */\n constructor() {\n super();\n }\n\n /**\n * The class name for the component.\n * @type {string}\n */\n className = 'Row';\n\n /**\n * Returns the CSS styles for the component.\n * @static\n * @returns {CSSStyleSheet}\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n }\n\n /**\n * Draws the component for the row.\n * @returns {DocumentFragment}\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n if (this.hasAttribute('wrap')) this.classList.add('wje-wrap');\n\n let element = document.createElement('slot');\n\n fragment.appendChild(element);\n\n return fragment;\n }\n}\n","import Row from './row.element.js';\n\nexport default Row;\n\nRow.define('wje-row', Row);\n"],"names":[],"mappings":";;;;;AAYe,MAAM,YAAY,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvC,cAAc;AACV;AAOJ;AAAA;AAAA;AAAA;AAAA,qCAAY;AAAA,EANX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaD,WAAW,gBAAgB;AACvB,WAAO;AAAA,EACV;AAAA;AAAA;AAAA;AAAA,EAKD,kBAAkB;AACd,SAAK,eAAe;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO;AACH,QAAI,WAAW,SAAS;AAExB,QAAI,KAAK,aAAa,MAAM,EAAG,MAAK,UAAU,IAAI,UAAU;AAE5D,QAAI,UAAU,SAAS,cAAc,MAAM;AAE3C,aAAS,YAAY,OAAO;AAE5B,WAAO;AAAA,EACV;AACL;ACtDA,IAAI,OAAO,WAAW,GAAG;"}