@leaflink/stash 51.11.0 → 51.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/README.md +41 -12
  2. package/dist/Accordion.js.map +1 -1
  3. package/dist/Accordion.vue.d.ts +37 -6
  4. package/dist/ActionsDropdown.js +2 -2
  5. package/dist/ActionsDropdown.js.map +1 -1
  6. package/dist/ActionsDropdown.vue.d.ts +74 -0
  7. package/dist/AddressSelect.js +60 -56
  8. package/dist/AddressSelect.js.map +1 -1
  9. package/dist/AddressSelect.vue.d.ts +65 -8
  10. package/dist/Alert.js.map +1 -1
  11. package/dist/Alert.vue.d.ts +41 -4
  12. package/dist/AppNavigationItem.js.map +1 -1
  13. package/dist/AppNavigationItem.vue.d.ts +31 -4
  14. package/dist/AppSidebar.js.map +1 -1
  15. package/dist/AppSidebar.vue.d.ts +35 -8
  16. package/dist/AppTopbar.js +1 -1
  17. package/dist/AppTopbar.js.map +1 -1
  18. package/dist/AppTopbar.vue.d.ts +33 -4
  19. package/dist/Avatar.js.map +1 -1
  20. package/dist/Avatar.vue.d.ts +44 -5
  21. package/dist/Backdrop.js.map +1 -1
  22. package/dist/Backdrop.vue.d.ts +1 -1
  23. package/dist/Badge.js.map +1 -1
  24. package/dist/Badge.vue.d.ts +55 -6
  25. package/dist/Box.vue.d.ts +36 -3
  26. package/dist/Box.vue_vue_type_script_setup_true_lang-rFnvwLVY.js.map +1 -1
  27. package/dist/Button.js.map +1 -1
  28. package/dist/Button.vue.d.ts +50 -5
  29. package/dist/ButtonGroup.js +37 -33
  30. package/dist/ButtonGroup.js.map +1 -1
  31. package/dist/ButtonGroup.vue.d.ts +39 -6
  32. package/dist/Card.js.map +1 -1
  33. package/dist/Card.vue.d.ts +32 -5
  34. package/dist/CardContent.js.map +1 -1
  35. package/dist/CardContent.vue.d.ts +1 -1
  36. package/dist/CardFooter.js.map +1 -1
  37. package/dist/CardFooter.vue.d.ts +1 -1
  38. package/dist/CardHeader.js.map +1 -1
  39. package/dist/CardHeader.vue.d.ts +15 -2
  40. package/dist/CardMedia.js.map +1 -1
  41. package/dist/CardMedia.vue.d.ts +15 -2
  42. package/dist/Carousel.js +72 -66
  43. package/dist/Carousel.js.map +1 -1
  44. package/dist/Carousel.vue.d.ts +10 -10
  45. package/dist/Checkbox.js.map +1 -1
  46. package/dist/Checkbox.vue.d.ts +53 -8
  47. package/dist/ChevronToggle.vue.d.ts +34 -7
  48. package/dist/ChevronToggle.vue_vue_type_script_setup_true_lang-Ce_qOXfR.js.map +1 -1
  49. package/dist/Chip.js.map +1 -1
  50. package/dist/Chip.vue.d.ts +52 -10
  51. package/dist/ConfirmationCodeInput.js +44 -40
  52. package/dist/ConfirmationCodeInput.js.map +1 -1
  53. package/dist/ConfirmationCodeInput.vue.d.ts +43 -8
  54. package/dist/ContextSwitcher.js.map +1 -1
  55. package/dist/ContextSwitcher.vue.d.ts +41 -6
  56. package/dist/Copy.js.map +1 -1
  57. package/dist/Copy.vue.d.ts +34 -3
  58. package/dist/CurrencyInput.js +21 -20
  59. package/dist/CurrencyInput.js.map +1 -1
  60. package/dist/CurrencyInput.vue.d.ts +46 -125
  61. package/dist/DataView.js +96 -94
  62. package/dist/DataView.js.map +1 -1
  63. package/dist/DataView.vue.d.ts +57 -12
  64. package/dist/DataViewFilters.js +139 -127
  65. package/dist/DataViewFilters.js.map +1 -1
  66. package/dist/DataViewFilters.vue.d.ts +54 -9
  67. package/dist/DataViewSortButton.js +2 -2
  68. package/dist/DataViewSortButton.js.map +1 -1
  69. package/dist/DataViewSortButton.vue.d.ts +30 -3
  70. package/dist/DataViewToolbar.js +81 -148
  71. package/dist/DataViewToolbar.js.map +1 -1
  72. package/dist/DataViewToolbar.vue.d.ts +40 -106
  73. package/dist/DatePicker.js +4640 -4528
  74. package/dist/DatePicker.js.map +1 -1
  75. package/dist/DatePicker.vue.d.ts +79 -30
  76. package/dist/DescriptionList.js.map +1 -1
  77. package/dist/DescriptionList.vue.d.ts +32 -3
  78. package/dist/DescriptionListDetail.js.map +1 -1
  79. package/dist/DescriptionListDetail.vue.d.ts +1 -1
  80. package/dist/DescriptionListGroup.js.map +1 -1
  81. package/dist/DescriptionListGroup.vue.d.ts +1 -1
  82. package/dist/DescriptionListTerm.js.map +1 -1
  83. package/dist/DescriptionListTerm.vue.d.ts +1 -1
  84. package/dist/Dialog.js.map +1 -1
  85. package/dist/Dialog.vue.d.ts +53 -10
  86. package/dist/Divider.js.map +1 -1
  87. package/dist/Dropdown.js +95 -89
  88. package/dist/Dropdown.js.map +1 -1
  89. package/dist/Dropdown.vue.d.ts +48 -12
  90. package/dist/EmptyState.js +1 -1
  91. package/dist/EmptyState.js.map +1 -1
  92. package/dist/EmptyState.vue.d.ts +62 -5
  93. package/dist/Expand.vue.d.ts +40 -10
  94. package/dist/Expand.vue_vue_type_script_setup_true_lang-CiONJfAp.js.map +1 -1
  95. package/dist/Field.vue.d.ts +53 -4
  96. package/dist/Field.vue_vue_type_script_setup_true_lang-DI6z3AE9.js.map +1 -1
  97. package/dist/FileUpload.js +74 -72
  98. package/dist/FileUpload.js.map +1 -1
  99. package/dist/FileUpload.vue.d.ts +44 -10
  100. package/dist/FilterChip.js.map +1 -1
  101. package/dist/FilterChip.vue.d.ts +41 -6
  102. package/dist/FilterDrawerItem.js +21 -21
  103. package/dist/FilterDrawerItem.js.map +1 -1
  104. package/dist/FilterDrawerItem.vue.d.ts +23 -6
  105. package/dist/FilterDropdown.js +69 -63
  106. package/dist/FilterDropdown.js.map +1 -1
  107. package/dist/FilterDropdown.vue.d.ts +35 -122
  108. package/dist/FilterSelect.js.map +1 -1
  109. package/dist/FilterSelect.vue.d.ts +31 -4
  110. package/dist/Filters.js +164 -157
  111. package/dist/Filters.js.map +1 -1
  112. package/dist/Filters.vue.d.ts +2190 -0
  113. package/dist/HttpError.js +7 -7
  114. package/dist/HttpError.js.map +1 -1
  115. package/dist/HttpError.vue.d.ts +41 -4
  116. package/dist/Icon.js +17 -17
  117. package/dist/Icon.js.map +1 -1
  118. package/dist/Icon.vue.d.ts +36 -3
  119. package/dist/IconLabel.js.map +1 -1
  120. package/dist/IconLabel.vue.d.ts +40 -5
  121. package/dist/Illustration.js +2 -2
  122. package/dist/Illustration.vue.d.ts +42 -3
  123. package/dist/{Illustration.vue_vue_type_script_setup_true_lang-BVzzNsRt.js → Illustration.vue_vue_type_script_setup_true_lang-BrqEF8xe.js} +11 -11
  124. package/dist/{Illustration.vue_vue_type_script_setup_true_lang-BVzzNsRt.js.map → Illustration.vue_vue_type_script_setup_true_lang-BrqEF8xe.js.map} +1 -1
  125. package/dist/Image.js +2 -2
  126. package/dist/Image.vue.d.ts +40 -5
  127. package/dist/{Image.vue_vue_type_script_setup_true_lang-Dg2Zk2r2.js → Image.vue_vue_type_script_setup_true_lang-D5u4av0_.js} +41 -37
  128. package/dist/{Image.vue_vue_type_script_setup_true_lang-Dg2Zk2r2.js.map → Image.vue_vue_type_script_setup_true_lang-D5u4av0_.js.map} +1 -1
  129. package/dist/InlineEdit.js.map +1 -1
  130. package/dist/InlineEdit.vue.d.ts +47 -126
  131. package/dist/Input.js.map +1 -1
  132. package/dist/Input.vue.d.ts +45 -12
  133. package/dist/InputOptions.js +69 -66
  134. package/dist/InputOptions.js.map +1 -1
  135. package/dist/InputOptions.vue.d.ts +55 -10
  136. package/dist/IntegrationIcon.js +7 -7
  137. package/dist/IntegrationIcon.js.map +1 -1
  138. package/dist/IntegrationIcon.vue.d.ts +36 -3
  139. package/dist/Label.vue.d.ts +42 -3
  140. package/dist/Label.vue_vue_type_script_setup_true_lang-CNquF3AP.js.map +1 -1
  141. package/dist/LicenseChip.js.map +1 -1
  142. package/dist/LicenseChip.vue.d.ts +30 -3
  143. package/dist/ListItem.js.map +1 -1
  144. package/dist/ListItem.vue.d.ts +294 -0
  145. package/dist/ListItemCell.js.map +1 -1
  146. package/dist/ListItemCell.vue.d.ts +21 -0
  147. package/dist/ListView.js +7 -4
  148. package/dist/ListView.js.map +1 -1
  149. package/dist/ListView.types.d.ts +29 -0
  150. package/dist/ListView.vue.d.ts +5496 -0
  151. package/dist/Loading.js +2 -2
  152. package/dist/Loading.js.map +1 -1
  153. package/dist/Loading.vue.d.ts +1 -1
  154. package/dist/Logo.js +1 -1
  155. package/dist/Logo.vue.d.ts +41 -6
  156. package/dist/{Logo.vue_vue_type_script_setup_true_lang-Y3iE9utm.js → Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js} +17 -17
  157. package/dist/Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js.map +1 -0
  158. package/dist/Menu.js.map +1 -1
  159. package/dist/Menu.vue.d.ts +1 -1
  160. package/dist/MenuItem.js.map +1 -1
  161. package/dist/MenuItem.vue.d.ts +1 -1
  162. package/dist/MenusPlugin-Bk6UW6o9.js +12 -0
  163. package/dist/{MenusPlugin-B4jpNe7x.js.map → MenusPlugin-Bk6UW6o9.js.map} +1 -1
  164. package/dist/Metric.js.map +1 -1
  165. package/dist/Metric.vue.d.ts +34 -3
  166. package/dist/Modal.js +64 -62
  167. package/dist/Modal.js.map +1 -1
  168. package/dist/Modal.vue.d.ts +60 -13
  169. package/dist/Modals.js +18 -17
  170. package/dist/Modals.js.map +1 -1
  171. package/dist/ModalsPlugin.js +11 -11
  172. package/dist/ModalsPlugin.js.map +1 -1
  173. package/dist/Module.js.map +1 -1
  174. package/dist/Module.vue.d.ts +29 -2
  175. package/dist/ModuleContent.js.map +1 -1
  176. package/dist/ModuleContent.vue.d.ts +3 -3
  177. package/dist/ModuleFooter.js.map +1 -1
  178. package/dist/ModuleFooter.vue.d.ts +1 -1
  179. package/dist/ModuleHeader.js.map +1 -1
  180. package/dist/ModuleHeader.vue.d.ts +39 -5
  181. package/dist/MoreActions.js +125 -123
  182. package/dist/MoreActions.js.map +1 -1
  183. package/dist/MoreActions.vue.d.ts +46 -123
  184. package/dist/ObfuscateText.js.map +1 -1
  185. package/dist/ObfuscateText.vue.d.ts +40 -3
  186. package/dist/PageContent.js.map +1 -1
  187. package/dist/PageContent.vue.d.ts +30 -3
  188. package/dist/PageHeader.js.map +1 -1
  189. package/dist/PageHeader.vue.d.ts +35 -6
  190. package/dist/PageNavigation.js +50 -50
  191. package/dist/PageNavigation.js.map +1 -1
  192. package/dist/PageNavigation.vue.d.ts +36 -7
  193. package/dist/Paginate.js.map +1 -1
  194. package/dist/Paginate.vue.d.ts +40 -5
  195. package/dist/PlaidLink.js.map +1 -1
  196. package/dist/PlaidLink.vue.d.ts +49 -12
  197. package/dist/QuickAction.js.map +1 -1
  198. package/dist/QuickAction.vue.d.ts +15 -2
  199. package/dist/Radio.js.map +1 -1
  200. package/dist/Radio.vue.d.ts +93 -0
  201. package/dist/RadioGroup.js +101 -94
  202. package/dist/RadioGroup.js.map +1 -1
  203. package/dist/RadioGroup.vue.d.ts +42 -116
  204. package/dist/RadioNew.js +99 -96
  205. package/dist/RadioNew.js.map +1 -1
  206. package/dist/RadioNew.vue.d.ts +48 -7
  207. package/dist/RangeInput.js.map +1 -1
  208. package/dist/RangeInput.vue.d.ts +1 -1
  209. package/dist/SearchBar.js +39 -38
  210. package/dist/SearchBar.js.map +1 -1
  211. package/dist/SearchBar.vue.d.ts +44 -127
  212. package/dist/SectionHeader.js.map +1 -1
  213. package/dist/SectionHeader.vue.d.ts +36 -5
  214. package/dist/Select.js +183 -171
  215. package/dist/Select.js.map +1 -1
  216. package/dist/Select.vue.d.ts +102 -23
  217. package/dist/SelectStatus.js +38 -38
  218. package/dist/SelectStatus.js.map +1 -1
  219. package/dist/SelectStatus.vue.d.ts +46 -226
  220. package/dist/Skeleton.js.map +1 -1
  221. package/dist/Skeleton.vue.d.ts +34 -3
  222. package/dist/Step.js +44 -44
  223. package/dist/Step.js.map +1 -1
  224. package/dist/Step.vue.d.ts +43 -4
  225. package/dist/Stepper.js.map +1 -1
  226. package/dist/Stepper.vue.d.ts +44 -9
  227. package/dist/Switch.js.map +1 -1
  228. package/dist/Switch.vue.d.ts +47 -8
  229. package/dist/Tab.js +9 -9
  230. package/dist/Tab.js.map +1 -1
  231. package/dist/Tab.vue.d.ts +15 -2
  232. package/dist/TabPanel.js.map +1 -1
  233. package/dist/TabPanel.vue.d.ts +30 -3
  234. package/dist/Table.js +59 -53
  235. package/dist/Table.js.map +1 -1
  236. package/dist/Table.vue.d.ts +50 -3
  237. package/dist/TableCell.js +1 -1
  238. package/dist/TableCell.js.map +1 -1
  239. package/dist/TableCell.vue.d.ts +32 -3
  240. package/dist/TableHeaderCell.js +1 -1
  241. package/dist/TableHeaderCell.js.map +1 -1
  242. package/dist/TableHeaderCell.vue.d.ts +30 -3
  243. package/dist/TableHeaderRow.js +1 -1
  244. package/dist/TableHeaderRow.js.map +1 -1
  245. package/dist/TableHeaderRow.vue.d.ts +34 -5
  246. package/dist/TableRow.js +44 -43
  247. package/dist/TableRow.js.map +1 -1
  248. package/dist/TableRow.vue.d.ts +48 -7
  249. package/dist/Tabs.js +2 -2
  250. package/dist/Tabs.vue.d.ts +31 -4
  251. package/dist/Tabs.vue_vue_type_script_setup_true_lang-CmnBP4i1.js +159 -0
  252. package/dist/Tabs.vue_vue_type_script_setup_true_lang-CmnBP4i1.js.map +1 -0
  253. package/dist/TextEditor.js +2422 -2416
  254. package/dist/TextEditor.js.map +1 -1
  255. package/dist/TextEditor.vue.d.ts +39 -8
  256. package/dist/Textarea.js +32 -29
  257. package/dist/Textarea.js.map +1 -1
  258. package/dist/Textarea.vue.d.ts +44 -9
  259. package/dist/Thumbnail.js +1 -1
  260. package/dist/Thumbnail.js.map +1 -1
  261. package/dist/Thumbnail.vue.d.ts +4 -4
  262. package/dist/ThumbnailEmpty.js.map +1 -1
  263. package/dist/ThumbnailEmpty.vue.d.ts +1 -1
  264. package/dist/ThumbnailGroup.js.map +1 -1
  265. package/dist/ThumbnailGroup.vue.d.ts +22 -26
  266. package/dist/Timeline.js.map +1 -1
  267. package/dist/Timeline.vue.d.ts +32 -3
  268. package/dist/TimelineItem.js.map +1 -1
  269. package/dist/TimelineItem.vue.d.ts +1 -1
  270. package/dist/Toast.js.map +1 -1
  271. package/dist/Toast.vue.d.ts +30 -3
  272. package/dist/Toasts.js.map +1 -1
  273. package/dist/ToastsPlugin.js +11 -11
  274. package/dist/ToastsPlugin.js.map +1 -1
  275. package/dist/Tooltip.js +30 -29
  276. package/dist/Tooltip.js.map +1 -1
  277. package/dist/Tooltip.vue.d.ts +43 -11
  278. package/dist/components.css +1 -1
  279. package/dist/directives/observe.js +8 -8
  280. package/dist/directives/observe.js.map +1 -1
  281. package/dist/directives/tooltip.js +3 -3
  282. package/dist/directives/tooltip.js.map +1 -1
  283. package/dist/directives/viewable.js +44 -39
  284. package/dist/directives/viewable.js.map +1 -1
  285. package/dist/floating-ui.vue-DLFiymOf.js +1093 -0
  286. package/dist/floating-ui.vue-DLFiymOf.js.map +1 -0
  287. package/dist/formatDateTime-Dz8bXV0R.js +1418 -0
  288. package/dist/formatDateTime-Dz8bXV0R.js.map +1 -0
  289. package/dist/index-D6bxWkZ1.js.map +1 -1
  290. package/dist/{index-XZqpB2_R.js → index-DA_ft08e.js} +9 -9
  291. package/dist/index-DA_ft08e.js.map +1 -0
  292. package/dist/index.js +106 -101
  293. package/dist/index.js.map +1 -1
  294. package/dist/isValid-DN-HkCoi.js.map +1 -1
  295. package/dist/obfuscateText.d.ts +1 -1
  296. package/dist/parseISO-wlfIB_QJ.js.map +1 -1
  297. package/dist/searchFuzzy-B3TsUO-V.js +409 -0
  298. package/dist/searchFuzzy-B3TsUO-V.js.map +1 -0
  299. package/dist/toTimeZone-Coq1oPTt.js.map +1 -1
  300. package/dist/useDialog.d.ts +2 -2
  301. package/dist/useDialog.js +25 -21
  302. package/dist/useDialog.js.map +1 -1
  303. package/dist/useGoogleMaps.js +110 -108
  304. package/dist/useGoogleMaps.js.map +1 -1
  305. package/dist/useMediaQuery.d.ts +6 -0
  306. package/dist/useMediaQuery.js +15 -11
  307. package/dist/useMediaQuery.js.map +1 -1
  308. package/dist/useModals.d.ts +1 -1
  309. package/dist/usePlaidLink.js +27 -20
  310. package/dist/usePlaidLink.js.map +1 -1
  311. package/dist/useSearch.js +13 -13
  312. package/dist/useSearch.js.map +1 -1
  313. package/dist/useSelection.js +56 -56
  314. package/dist/useSelection.js.map +1 -1
  315. package/dist/useSortable.js +63 -54
  316. package/dist/useSortable.js.map +1 -1
  317. package/dist/useStepper.d.ts +2 -2
  318. package/dist/useStepper.js +40 -36
  319. package/dist/useStepper.js.map +1 -1
  320. package/dist/useToasts.js +23 -23
  321. package/dist/useToasts.js.map +1 -1
  322. package/dist/useValidation.js +100 -96
  323. package/dist/useValidation.js.map +1 -1
  324. package/dist/utils/calculateElementOverflow.js +4 -4
  325. package/dist/utils/calculateElementOverflow.js.map +1 -1
  326. package/dist/utils/formatDateTime.js +1 -1
  327. package/dist/utils/obfuscateText.js +6 -6
  328. package/dist/utils/obfuscateText.js.map +1 -1
  329. package/dist/utils/searchFuzzy.js +1 -1
  330. package/dist/utils/storage.js +23 -23
  331. package/dist/utils/storage.js.map +1 -1
  332. package/package.json +32 -19
  333. package/dist/Logo.vue_vue_type_script_setup_true_lang-Y3iE9utm.js.map +0 -1
  334. package/dist/MenusPlugin-B4jpNe7x.js +0 -12
  335. package/dist/Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js +0 -78
  336. package/dist/Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js.map +0 -1
  337. package/dist/floating-ui.vue-CL01Y9ER.js +0 -1075
  338. package/dist/floating-ui.vue-CL01Y9ER.js.map +0 -1
  339. package/dist/formatDateTime-DG7kBc2T.js +0 -1414
  340. package/dist/formatDateTime-DG7kBc2T.js.map +0 -1
  341. package/dist/index-XZqpB2_R.js.map +0 -1
  342. package/dist/searchFuzzy-DBDE6jkd.js +0 -408
  343. package/dist/searchFuzzy-DBDE6jkd.js.map +0 -1
@@ -1,9 +1,9 @@
1
- const i = "yes", b = "no", t = Symbol("v-observe");
1
+ const t = Symbol("v-observe");
2
2
  function o(e) {
3
- e.dataset.vObserved = i;
3
+ e.dataset.vObserved = "yes";
4
4
  }
5
5
  function r(e) {
6
- e.dataset.vObserved = b;
6
+ e.dataset.vObserved = "no";
7
7
  }
8
8
  function c(e, n) {
9
9
  e[t] = n;
@@ -11,13 +11,13 @@ function c(e, n) {
11
11
  function v(e) {
12
12
  e[t] = void 0;
13
13
  }
14
- const f = {
14
+ const u = {
15
15
  mounted(e, { value: n }) {
16
16
  n instanceof IntersectionObserver ? (n.observe(e), o(e), c(e, n)) : (r(e), v(e));
17
17
  },
18
18
  updated(e, { value: n }) {
19
- const s = e[t], d = n === s, u = e.dataset.vObserved === i, a = n instanceof IntersectionObserver;
20
- if (!u) {
19
+ const s = e[t], i = n === s, d = e.dataset.vObserved === "yes", a = n instanceof IntersectionObserver;
20
+ if (!d) {
21
21
  a && (n.observe(e), o(e), c(e, n));
22
22
  return;
23
23
  }
@@ -25,7 +25,7 @@ const f = {
25
25
  r(e), s && (s.unobserve(e), v(e));
26
26
  return;
27
27
  }
28
- d || (s && s.unobserve(e), n.observe(e), o(e), c(e, n));
28
+ i || (s && s.unobserve(e), n.observe(e), o(e), c(e, n));
29
29
  },
30
30
  unmounted(e) {
31
31
  const n = e[t];
@@ -33,6 +33,6 @@ const f = {
33
33
  }
34
34
  };
35
35
  export {
36
- f as default
36
+ u as default
37
37
  };
38
38
  //# sourceMappingURL=observe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"observe.js","sources":["../../src/directives/observe/observe.ts"],"sourcesContent":["const YES = 'yes';\nconst NO = 'no';\nconst observerKey = Symbol('v-observe');\n\nfunction markObserved(el) {\n el.dataset.vObserved = YES;\n}\n\nfunction markNotObserved(el) {\n el.dataset.vObserved = NO;\n}\n\nfunction cacheObserver(el, observer) {\n el[observerKey] = observer;\n}\n\nfunction removeCachedObserver(el) {\n el[observerKey] = undefined;\n}\n\nexport default {\n mounted(el, { value: observer }) {\n if (observer instanceof IntersectionObserver) {\n observer.observe(el);\n markObserved(el);\n cacheObserver(el, observer);\n } else {\n markNotObserved(el);\n removeCachedObserver(el);\n }\n },\n\n updated(el, { value: observer }) {\n const cached = el[observerKey];\n const sameObserver = observer === cached;\n const observed = el.dataset.vObserved === YES;\n const newObserver = observer instanceof IntersectionObserver;\n\n if (!observed) {\n if (newObserver) {\n observer.observe(el);\n markObserved(el);\n cacheObserver(el, observer);\n }\n\n return;\n }\n\n if (!newObserver) {\n markNotObserved(el);\n\n if (cached) {\n cached.unobserve(el);\n removeCachedObserver(el);\n }\n\n return;\n }\n\n if (sameObserver) {\n return;\n }\n\n if (cached) {\n cached.unobserve(el);\n }\n\n observer.observe(el);\n markObserved(el);\n cacheObserver(el, observer);\n },\n\n unmounted(el) {\n const cached = el[observerKey];\n\n if (cached instanceof IntersectionObserver) {\n cached.unobserve(el);\n }\n\n markNotObserved(el);\n removeCachedObserver(el);\n },\n};\n"],"names":["YES","NO","observerKey","markObserved","el","markNotObserved","cacheObserver","observer","removeCachedObserver","observe","cached","sameObserver","observed","newObserver"],"mappings":"AAAA,MAAMA,IAAM,OACNC,IAAK,MACLC,IAAc,OAAO,WAAW;AAEtC,SAASC,EAAaC,GAAI;AACxB,EAAAA,EAAG,QAAQ,YAAYJ;AACzB;AAEA,SAASK,EAAgBD,GAAI;AAC3B,EAAAA,EAAG,QAAQ,YAAYH;AACzB;AAEA,SAASK,EAAcF,GAAIG,GAAU;AACnC,EAAAH,EAAGF,CAAW,IAAIK;AACpB;AAEA,SAASC,EAAqBJ,GAAI;AAChC,EAAAA,EAAGF,CAAW,IAAI;AACpB;AAEA,MAAAO,IAAe;AAAA,EACb,QAAQL,GAAI,EAAE,OAAOG,KAAY;AAC/B,IAAIA,aAAoB,wBACtBA,EAAS,QAAQH,CAAE,GACnBD,EAAaC,CAAE,GACfE,EAAcF,GAAIG,CAAQ,MAE1BF,EAAgBD,CAAE,GAClBI,EAAqBJ,CAAE;AAAA,EAE3B;AAAA,EAEA,QAAQA,GAAI,EAAE,OAAOG,KAAY;AAC/B,UAAMG,IAASN,EAAGF,CAAW,GACvBS,IAAeJ,MAAaG,GAC5BE,IAAWR,EAAG,QAAQ,cAAcJ,GACpCa,IAAcN,aAAoB;AAExC,QAAI,CAACK,GAAU;AACb,MAAIC,MACFN,EAAS,QAAQH,CAAE,GACnBD,EAAaC,CAAE,GACfE,EAAcF,GAAIG,CAAQ;AAG5B;AAAA,IACF;AAEA,QAAI,CAACM,GAAa;AAChB,MAAAR,EAAgBD,CAAE,GAEdM,MACFA,EAAO,UAAUN,CAAE,GACnBI,EAAqBJ,CAAE;AAGzB;AAAA,IACF;AAEA,IAAIO,MAIAD,KACFA,EAAO,UAAUN,CAAE,GAGrBG,EAAS,QAAQH,CAAE,GACnBD,EAAaC,CAAE,GACfE,EAAcF,GAAIG,CAAQ;AAAA,EAC5B;AAAA,EAEA,UAAUH,GAAI;AACZ,UAAMM,IAASN,EAAGF,CAAW;AAE7B,IAAIQ,aAAkB,wBACpBA,EAAO,UAAUN,CAAE,GAGrBC,EAAgBD,CAAE,GAClBI,EAAqBJ,CAAE;AAAA,EACzB;AACF;"}
1
+ {"version":3,"file":"observe.js","sources":["../../src/directives/observe/observe.ts"],"sourcesContent":["const YES = 'yes';\nconst NO = 'no';\nconst observerKey = Symbol('v-observe');\n\nfunction markObserved(el) {\n el.dataset.vObserved = YES;\n}\n\nfunction markNotObserved(el) {\n el.dataset.vObserved = NO;\n}\n\nfunction cacheObserver(el, observer) {\n el[observerKey] = observer;\n}\n\nfunction removeCachedObserver(el) {\n el[observerKey] = undefined;\n}\n\nexport default {\n mounted(el, { value: observer }) {\n if (observer instanceof IntersectionObserver) {\n observer.observe(el);\n markObserved(el);\n cacheObserver(el, observer);\n } else {\n markNotObserved(el);\n removeCachedObserver(el);\n }\n },\n\n updated(el, { value: observer }) {\n const cached = el[observerKey];\n const sameObserver = observer === cached;\n const observed = el.dataset.vObserved === YES;\n const newObserver = observer instanceof IntersectionObserver;\n\n if (!observed) {\n if (newObserver) {\n observer.observe(el);\n markObserved(el);\n cacheObserver(el, observer);\n }\n\n return;\n }\n\n if (!newObserver) {\n markNotObserved(el);\n\n if (cached) {\n cached.unobserve(el);\n removeCachedObserver(el);\n }\n\n return;\n }\n\n if (sameObserver) {\n return;\n }\n\n if (cached) {\n cached.unobserve(el);\n }\n\n observer.observe(el);\n markObserved(el);\n cacheObserver(el, observer);\n },\n\n unmounted(el) {\n const cached = el[observerKey];\n\n if (cached instanceof IntersectionObserver) {\n cached.unobserve(el);\n }\n\n markNotObserved(el);\n removeCachedObserver(el);\n },\n};\n"],"names":["observerKey","markObserved","el","markNotObserved","cacheObserver","observer","removeCachedObserver","observe","cached","sameObserver","observed","newObserver"],"mappings":"AAEA,MAAMA,IAAc,OAAO,WAAW;AAEtC,SAASC,EAAaC,GAAI;AACxB,EAAAA,EAAG,QAAQ,YAAY;AACzB;AAEA,SAASC,EAAgBD,GAAI;AAC3B,EAAAA,EAAG,QAAQ,YAAY;AACzB;AAEA,SAASE,EAAcF,GAAIG,GAAU;AACnC,EAAAH,EAAGF,CAAW,IAAIK;AACpB;AAEA,SAASC,EAAqBJ,GAAI;AAChC,EAAAA,EAAGF,CAAW,IAAI;AACpB;AAEA,MAAAO,IAAe;AAAA,EACb,QAAQL,GAAI,EAAE,OAAOG,KAAY;AAC/B,IAAIA,aAAoB,wBACtBA,EAAS,QAAQH,CAAE,GACnBD,EAAaC,CAAE,GACfE,EAAcF,GAAIG,CAAQ,MAE1BF,EAAgBD,CAAE,GAClBI,EAAqBJ,CAAE;AAAA,EAE3B;AAAA,EAEA,QAAQA,GAAI,EAAE,OAAOG,KAAY;AAC/B,UAAMG,IAASN,EAAGF,CAAW,GACvBS,IAAeJ,MAAaG,GAC5BE,IAAWR,EAAG,QAAQ,cAAc,OACpCS,IAAcN,aAAoB;AAExC,QAAI,CAACK,GAAU;AACb,MAAIC,MACFN,EAAS,QAAQH,CAAE,GACnBD,EAAaC,CAAE,GACfE,EAAcF,GAAIG,CAAQ;AAG5B;AAAA,IACF;AAEA,QAAI,CAACM,GAAa;AAChB,MAAAR,EAAgBD,CAAE,GAEdM,MACFA,EAAO,UAAUN,CAAE,GACnBI,EAAqBJ,CAAE;AAGzB;AAAA,IACF;AAEA,IAAIO,MAIAD,KACFA,EAAO,UAAUN,CAAE,GAGrBG,EAAS,QAAQH,CAAE,GACnBD,EAAaC,CAAE,GACfE,EAAcF,GAAIG,CAAQ;AAAA,EAC5B;AAAA,EAEA,UAAUH,GAAI;AACZ,UAAMM,IAASN,EAAGF,CAAW;AAE7B,IAAIQ,aAAkB,wBACpBA,EAAO,UAAUN,CAAE,GAGrBC,EAAgBD,CAAE,GAClBI,EAAqBJ,CAAE;AAAA,EACzB;AACF;"}
@@ -16,7 +16,7 @@ function c(t, o) {
16
16
  e.classList.value = r, e.setAttribute("role", "tooltip"), e.innerHTML = o.value, t.appendChild(e), t.classList.add("tooltip-toggle"), t.tabIndex = 0, d().then(() => {
17
17
  if (r.includes("bottom") || r.includes("top")) {
18
18
  const s = m(e);
19
- if (s?.value) {
19
+ if (s != null && s.value) {
20
20
  const l = s.side === "right" ? "-" : "";
21
21
  e.style.setProperty("--offset", `${l}${s.value}`);
22
22
  }
@@ -41,7 +41,7 @@ function a(t, o) {
41
41
  function f(t) {
42
42
  t.observer && document.body && (t.observer.unobserve(document.body), t.observer.disconnect(), t.observer = void 0);
43
43
  }
44
- const L = {
44
+ const T = {
45
45
  beforeMount(t, o) {
46
46
  c(t, o), a(t, o);
47
47
  },
@@ -55,6 +55,6 @@ const L = {
55
55
  };
56
56
  export {
57
57
  u as Positions,
58
- L as default
58
+ T as default
59
59
  };
60
60
  //# sourceMappingURL=tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sources":["../../src/directives/tooltip/tooltip.ts"],"sourcesContent":["import debounce from 'lodash-es/debounce';\nimport { DirectiveBinding, nextTick } from 'vue';\n\nimport calculateElementOverflow from '../../utils/calculateElementOverflow';\n\nexport enum Positions {\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right',\n Top = 'top',\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype HTMLDirectiveElement = HTMLElement & { observer?: ResizeObserver; cachedVal: any };\n\nconst defaultPosition = Positions.Top;\nconst positions = Object.values(Positions);\n\n/**\n * Gets position name based on modifiers provided. Defaults to Top.\n */\nfunction getPosition(modifiers: Record<string, boolean>): Positions {\n let position = defaultPosition;\n\n positions.forEach((pos) => {\n if (modifiers[pos]) {\n position = pos;\n return false;\n }\n });\n\n return position;\n}\n\n/**\n * Appends a new tooltip element to the directive element.\n *\n * Adds .tooltip-toggle class to element.\n *\n */\nfunction mount(el: HTMLDirectiveElement, binding: DirectiveBinding) {\n if (binding.value) {\n const tooltip = document.createElement('div');\n // @ts-expect-error - todo: fix this\n const styles = `tooltip tooltip--${getPosition(binding.modifiers)}`;\n\n tooltip.classList.value = styles;\n tooltip.setAttribute('role', 'tooltip');\n tooltip.innerHTML = binding.value;\n\n el.appendChild(tooltip);\n\n // Add classname to wrapper element for styling\n el.classList.add('tooltip-toggle');\n // Apply tabindex to make focusable (if it doesn't already have)\n el.tabIndex = 0;\n\n nextTick().then(() => {\n if (styles.includes('bottom') || styles.includes('top')) {\n const overflow = calculateElementOverflow(tooltip);\n\n if (overflow?.value) {\n const symbol = overflow.side === 'right' ? '-' : '';\n\n tooltip.style.setProperty('--offset', `${symbol}${overflow.value}`);\n }\n }\n });\n }\n}\n\n/**\n * Removes tooltip & cleans up any classnames added\n */\nfunction unmount(el: HTMLElement) {\n const tooltip = el.querySelector('.tooltip');\n\n el.classList.remove('tooltip-toggle');\n el.style.removeProperty('--offset');\n\n if (tooltip) {\n tooltip.remove();\n }\n}\n\n/**\n * Remounts tooltip to re-calc placement\n */\nfunction remount(el: HTMLDirectiveElement, binding: DirectiveBinding) {\n unmount(el);\n mount(el, binding);\n\n // If the value has not changed, avoid re-initializing observer\n // This prevents a `remount` infinite loop\n if (el.cachedVal !== binding.value) {\n el.cachedVal = binding.value;\n destroyObserver(el);\n setupObserver(el, binding);\n }\n}\n\n/**\n * Initializes a ResizeObserver for the current element to remount on resize\n */\nfunction setupObserver(el: HTMLDirectiveElement, binding: DirectiveBinding) {\n /**\n * Cache value on element because when we setup observer\n * it's still referencing the original value from on `beforeMount`.\n * When the directive updates with a new value, we'll verify\n * the new value is different from the cached one during remount.\n */\n el.cachedVal = binding.value;\n\n if ('ResizeObserver' in window && 'body' in document) {\n // debounce to limit remounts to after resize\n el.observer = new ResizeObserver(\n debounce(() => {\n remount(el, binding);\n }, 300),\n );\n\n el.observer.observe(document.body);\n }\n}\n\n/**\n * Removes the current observer\n */\nfunction destroyObserver(el: HTMLDirectiveElement) {\n if (el.observer && document.body) {\n el.observer.unobserve(document.body);\n el.observer.disconnect();\n el.observer = undefined;\n }\n}\n\n/**\n * Tooltip directive\n * @deprecated Use the `Tooltip` component from `@leaflink/stash/Tooltip.vue` instead\n */\nexport default {\n beforeMount(el: HTMLDirectiveElement, binding: DirectiveBinding) {\n mount(el, binding);\n setupObserver(el, binding);\n },\n\n updated(el: HTMLDirectiveElement, binding: DirectiveBinding) {\n const { oldValue, value } = binding;\n\n if (oldValue !== value) {\n remount(el, binding);\n }\n },\n\n unmounted(el: HTMLDirectiveElement) {\n destroyObserver(el);\n unmount(el);\n },\n};\n"],"names":["Positions","defaultPosition","positions","getPosition","modifiers","position","pos","mount","el","binding","tooltip","styles","nextTick","overflow","calculateElementOverflow","symbol","unmount","remount","destroyObserver","setupObserver","debounce","vTooltip","oldValue","value"],"mappings":";;;AAKO,IAAKA,sBAAAA,OACVA,EAAA,SAAS,UACTA,EAAA,OAAO,QACPA,EAAA,QAAQ,SACRA,EAAA,MAAM,OAJIA,IAAAA,KAAA,CAAA,CAAA;AAUZ,MAAMC,IAAkB,OAClBC,IAAY,OAAO,OAAOF,CAAS;AAKzC,SAASG,EAAYC,GAA+C;AAClE,MAAIC,IAAWJ;AAEf,SAAAC,EAAU,QAAQ,CAACI,MAAQ;AACzB,QAAIF,EAAUE,CAAG;AACf,aAAAD,IAAWC,GACJ;AAAA,EAEX,CAAC,GAEMD;AACT;AAQA,SAASE,EAAMC,GAA0BC,GAA2B;AAClE,MAAIA,EAAQ,OAAO;AACjB,UAAMC,IAAU,SAAS,cAAc,KAAK,GAEtCC,IAAS,oBAAoBR,EAAYM,EAAQ,SAAS,CAAC;AAEjE,IAAAC,EAAQ,UAAU,QAAQC,GAC1BD,EAAQ,aAAa,QAAQ,SAAS,GACtCA,EAAQ,YAAYD,EAAQ,OAE5BD,EAAG,YAAYE,CAAO,GAGtBF,EAAG,UAAU,IAAI,gBAAgB,GAEjCA,EAAG,WAAW,GAEdI,EAAA,EAAW,KAAK,MAAM;AACpB,UAAID,EAAO,SAAS,QAAQ,KAAKA,EAAO,SAAS,KAAK,GAAG;AACvD,cAAME,IAAWC,EAAyBJ,CAAO;AAEjD,YAAIG,GAAU,OAAO;AACnB,gBAAME,IAASF,EAAS,SAAS,UAAU,MAAM;AAEjD,UAAAH,EAAQ,MAAM,YAAY,YAAY,GAAGK,CAAM,GAAGF,EAAS,KAAK,EAAE;AAAA,QACpE;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAKA,SAASG,EAAQR,GAAiB;AAChC,QAAME,IAAUF,EAAG,cAAc,UAAU;AAE3C,EAAAA,EAAG,UAAU,OAAO,gBAAgB,GACpCA,EAAG,MAAM,eAAe,UAAU,GAE9BE,KACFA,EAAQ,OAAA;AAEZ;AAKA,SAASO,EAAQT,GAA0BC,GAA2B;AACpE,EAAAO,EAAQR,CAAE,GACVD,EAAMC,GAAIC,CAAO,GAIbD,EAAG,cAAcC,EAAQ,UAC3BD,EAAG,YAAYC,EAAQ,OACvBS,EAAgBV,CAAE,GAClBW,EAAcX,GAAIC,CAAO;AAE7B;AAKA,SAASU,EAAcX,GAA0BC,GAA2B;AAO1E,EAAAD,EAAG,YAAYC,EAAQ,OAEnB,oBAAoB,UAAU,UAAU,aAE1CD,EAAG,WAAW,IAAI;AAAA,IAChBY,EAAS,MAAM;AACb,MAAAH,EAAQT,GAAIC,CAAO;AAAA,IACrB,GAAG,GAAG;AAAA,EAAA,GAGRD,EAAG,SAAS,QAAQ,SAAS,IAAI;AAErC;AAKA,SAASU,EAAgBV,GAA0B;AACjD,EAAIA,EAAG,YAAY,SAAS,SAC1BA,EAAG,SAAS,UAAU,SAAS,IAAI,GACnCA,EAAG,SAAS,WAAA,GACZA,EAAG,WAAW;AAElB;AAMA,MAAAa,IAAe;AAAA,EACb,YAAYb,GAA0BC,GAA2B;AAC/D,IAAAF,EAAMC,GAAIC,CAAO,GACjBU,EAAcX,GAAIC,CAAO;AAAA,EAC3B;AAAA,EAEA,QAAQD,GAA0BC,GAA2B;AAC3D,UAAM,EAAE,UAAAa,GAAU,OAAAC,EAAA,IAAUd;AAE5B,IAAIa,MAAaC,KACfN,EAAQT,GAAIC,CAAO;AAAA,EAEvB;AAAA,EAEA,UAAUD,GAA0B;AAClC,IAAAU,EAAgBV,CAAE,GAClBQ,EAAQR,CAAE;AAAA,EACZ;AACF;"}
1
+ {"version":3,"file":"tooltip.js","sources":["../../src/directives/tooltip/tooltip.ts"],"sourcesContent":["import debounce from 'lodash-es/debounce';\nimport { DirectiveBinding, nextTick } from 'vue';\n\nimport calculateElementOverflow from '../../utils/calculateElementOverflow';\n\nexport enum Positions {\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right',\n Top = 'top',\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype HTMLDirectiveElement = HTMLElement & { observer?: ResizeObserver; cachedVal: any };\n\nconst defaultPosition = Positions.Top;\nconst positions = Object.values(Positions);\n\n/**\n * Gets position name based on modifiers provided. Defaults to Top.\n */\nfunction getPosition(modifiers: Record<string, boolean>): Positions {\n let position = defaultPosition;\n\n positions.forEach((pos) => {\n if (modifiers[pos]) {\n position = pos;\n return false;\n }\n });\n\n return position;\n}\n\n/**\n * Appends a new tooltip element to the directive element.\n *\n * Adds .tooltip-toggle class to element.\n *\n */\nfunction mount(el: HTMLDirectiveElement, binding: DirectiveBinding) {\n if (binding.value) {\n const tooltip = document.createElement('div');\n\n const styles = `tooltip tooltip--${getPosition(binding.modifiers)}`;\n\n tooltip.classList.value = styles;\n tooltip.setAttribute('role', 'tooltip');\n tooltip.innerHTML = binding.value;\n\n el.appendChild(tooltip);\n\n // Add classname to wrapper element for styling\n el.classList.add('tooltip-toggle');\n // Apply tabindex to make focusable (if it doesn't already have)\n el.tabIndex = 0;\n\n nextTick().then(() => {\n if (styles.includes('bottom') || styles.includes('top')) {\n const overflow = calculateElementOverflow(tooltip);\n\n if (overflow?.value) {\n const symbol = overflow.side === 'right' ? '-' : '';\n\n tooltip.style.setProperty('--offset', `${symbol}${overflow.value}`);\n }\n }\n });\n }\n}\n\n/**\n * Removes tooltip & cleans up any classnames added\n */\nfunction unmount(el: HTMLElement) {\n const tooltip = el.querySelector('.tooltip');\n\n el.classList.remove('tooltip-toggle');\n el.style.removeProperty('--offset');\n\n if (tooltip) {\n tooltip.remove();\n }\n}\n\n/**\n * Remounts tooltip to re-calc placement\n */\nfunction remount(el: HTMLDirectiveElement, binding: DirectiveBinding) {\n unmount(el);\n mount(el, binding);\n\n // If the value has not changed, avoid re-initializing observer\n // This prevents a `remount` infinite loop\n if (el.cachedVal !== binding.value) {\n el.cachedVal = binding.value;\n destroyObserver(el);\n setupObserver(el, binding);\n }\n}\n\n/**\n * Initializes a ResizeObserver for the current element to remount on resize\n */\nfunction setupObserver(el: HTMLDirectiveElement, binding: DirectiveBinding) {\n /**\n * Cache value on element because when we setup observer\n * it's still referencing the original value from on `beforeMount`.\n * When the directive updates with a new value, we'll verify\n * the new value is different from the cached one during remount.\n */\n el.cachedVal = binding.value;\n\n if ('ResizeObserver' in window && 'body' in document) {\n // debounce to limit remounts to after resize\n el.observer = new ResizeObserver(\n debounce(() => {\n remount(el, binding);\n }, 300),\n );\n\n el.observer.observe(document.body);\n }\n}\n\n/**\n * Removes the current observer\n */\nfunction destroyObserver(el: HTMLDirectiveElement) {\n if (el.observer && document.body) {\n el.observer.unobserve(document.body);\n el.observer.disconnect();\n el.observer = undefined;\n }\n}\n\n/**\n * Tooltip directive\n * @deprecated Use the `Tooltip` component from `@leaflink/stash/Tooltip.vue` instead\n */\nexport default {\n beforeMount(el: HTMLDirectiveElement, binding: DirectiveBinding) {\n mount(el, binding);\n setupObserver(el, binding);\n },\n\n updated(el: HTMLDirectiveElement, binding: DirectiveBinding) {\n const { oldValue, value } = binding;\n\n if (oldValue !== value) {\n remount(el, binding);\n }\n },\n\n unmounted(el: HTMLDirectiveElement) {\n destroyObserver(el);\n unmount(el);\n },\n};\n"],"names":["Positions","defaultPosition","positions","getPosition","modifiers","position","pos","mount","el","binding","tooltip","styles","nextTick","overflow","calculateElementOverflow","symbol","unmount","remount","destroyObserver","setupObserver","debounce","vTooltip","oldValue","value"],"mappings":";;;AAKO,IAAKA,sBAAAA,OACVA,EAAA,SAAS,UACTA,EAAA,OAAO,QACPA,EAAA,QAAQ,SACRA,EAAA,MAAM,OAJIA,IAAAA,KAAA,CAAA,CAAA;AAUZ,MAAMC,IAAkB,OAClBC,IAAY,OAAO,OAAOF,CAAS;AAKzC,SAASG,EAAYC,GAA+C;AAClE,MAAIC,IAAWJ;AAEf,SAAAC,EAAU,QAAQ,CAACI,MAAQ;AACzB,QAAIF,EAAUE,CAAG;AACf,aAAAD,IAAWC,GACJ;AAAA,EAEX,CAAC,GAEMD;AACT;AAQA,SAASE,EAAMC,GAA0BC,GAA2B;AAClE,MAAIA,EAAQ,OAAO;AACjB,UAAMC,IAAU,SAAS,cAAc,KAAK,GAEtCC,IAAS,oBAAoBR,EAAYM,EAAQ,SAAS,CAAC;AAEjE,IAAAC,EAAQ,UAAU,QAAQC,GAC1BD,EAAQ,aAAa,QAAQ,SAAS,GACtCA,EAAQ,YAAYD,EAAQ,OAE5BD,EAAG,YAAYE,CAAO,GAGtBF,EAAG,UAAU,IAAI,gBAAgB,GAEjCA,EAAG,WAAW,GAEdI,EAAA,EAAW,KAAK,MAAM;AACpB,UAAID,EAAO,SAAS,QAAQ,KAAKA,EAAO,SAAS,KAAK,GAAG;AACvD,cAAME,IAAWC,EAAyBJ,CAAO;AAEjD,YAAIG,KAAA,QAAAA,EAAU,OAAO;AACnB,gBAAME,IAASF,EAAS,SAAS,UAAU,MAAM;AAEjD,UAAAH,EAAQ,MAAM,YAAY,YAAY,GAAGK,CAAM,GAAGF,EAAS,KAAK,EAAE;AAAA,QACpE;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAKA,SAASG,EAAQR,GAAiB;AAChC,QAAME,IAAUF,EAAG,cAAc,UAAU;AAE3C,EAAAA,EAAG,UAAU,OAAO,gBAAgB,GACpCA,EAAG,MAAM,eAAe,UAAU,GAE9BE,KACFA,EAAQ,OAAA;AAEZ;AAKA,SAASO,EAAQT,GAA0BC,GAA2B;AACpE,EAAAO,EAAQR,CAAE,GACVD,EAAMC,GAAIC,CAAO,GAIbD,EAAG,cAAcC,EAAQ,UAC3BD,EAAG,YAAYC,EAAQ,OACvBS,EAAgBV,CAAE,GAClBW,EAAcX,GAAIC,CAAO;AAE7B;AAKA,SAASU,EAAcX,GAA0BC,GAA2B;AAO1E,EAAAD,EAAG,YAAYC,EAAQ,OAEnB,oBAAoB,UAAU,UAAU,aAE1CD,EAAG,WAAW,IAAI;AAAA,IAChBY,EAAS,MAAM;AACb,MAAAH,EAAQT,GAAIC,CAAO;AAAA,IACrB,GAAG,GAAG;AAAA,EAAA,GAGRD,EAAG,SAAS,QAAQ,SAAS,IAAI;AAErC;AAKA,SAASU,EAAgBV,GAA0B;AACjD,EAAIA,EAAG,YAAY,SAAS,SAC1BA,EAAG,SAAS,UAAU,SAAS,IAAI,GACnCA,EAAG,SAAS,WAAA,GACZA,EAAG,WAAW;AAElB;AAMA,MAAAa,IAAe;AAAA,EACb,YAAYb,GAA0BC,GAA2B;AAC/D,IAAAF,EAAMC,GAAIC,CAAO,GACjBU,EAAcX,GAAIC,CAAO;AAAA,EAC3B;AAAA,EAEA,QAAQD,GAA0BC,GAA2B;AAC3D,UAAM,EAAE,UAAAa,GAAU,OAAAC,EAAA,IAAUd;AAE5B,IAAIa,MAAaC,KACfN,EAAQT,GAAIC,CAAO;AAAA,EAEvB;AAAA,EAEA,UAAUD,GAA0B;AAClC,IAAAU,EAAgBV,CAAE,GAClBQ,EAAQR,CAAE;AAAA,EACZ;AACF;"}
@@ -1,16 +1,19 @@
1
- import l from "lodash-es/isEqual";
2
- import { nextTick as b } from "vue";
3
- const o = Symbol("v-viewable");
4
- class f {
5
- observer;
6
- el;
7
- frozen;
8
- options;
9
- oldResult;
10
- callback;
11
- modifiers;
12
- constructor(e, t, s = {}) {
13
- this.el = e, this.modifiers = s, this.observer = null, this.callback = null, this.frozen = !1, this.options = {
1
+ var b = Object.defineProperty;
2
+ var f = (s, e, t) => e in s ? b(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
3
+ var o = (s, e, t) => f(s, typeof e != "symbol" ? e + "" : e, t);
4
+ import a from "lodash-es/isEqual";
5
+ import { nextTick as d } from "vue";
6
+ const n = Symbol("v-viewable");
7
+ class u {
8
+ constructor(e, t, i = {}) {
9
+ o(this, "observer");
10
+ o(this, "el");
11
+ o(this, "frozen");
12
+ o(this, "options");
13
+ o(this, "oldResult");
14
+ o(this, "callback");
15
+ o(this, "modifiers");
16
+ this.el = e, this.modifiers = i, this.observer = null, this.callback = null, this.frozen = !1, this.options = {
14
17
  callback: () => {
15
18
  },
16
19
  intersection: {}
@@ -32,21 +35,22 @@ class f {
32
35
  };
33
36
  }
34
37
  createObserver(e) {
35
- this.observer && this.destroyObserver(), !this.frozen && (this.options = this.processOptions(e), this.callback = (t, s) => {
36
- this.options.callback(t, s), t && this.modifiers?.once && (this.frozen = !0, this.destroyObserver());
38
+ this.observer && this.destroyObserver(), !this.frozen && (this.options = this.processOptions(e), this.callback = (t, i) => {
39
+ var r;
40
+ this.options.callback(t, i), t && ((r = this.modifiers) != null && r.once) && (this.frozen = !0, this.destroyObserver());
37
41
  }, this.oldResult = void 0, "IntersectionObserver" in window && (this.observer = new IntersectionObserver((t) => {
38
- let s = t[0];
42
+ let i = t[0];
39
43
  if (t.length > 1) {
40
- const i = t.find((c) => c.isIntersecting);
41
- i && (s = i);
44
+ const r = t.find((l) => l.isIntersecting);
45
+ r && (i = r);
42
46
  }
43
47
  if (this.callback) {
44
- const i = s.isIntersecting && s.intersectionRatio >= this.threshold;
45
- if (i === this.oldResult)
48
+ const r = i.isIntersecting && i.intersectionRatio >= this.threshold;
49
+ if (r === this.oldResult)
46
50
  return;
47
- this.oldResult = i, this.callback(i, s);
51
+ this.oldResult = r, this.callback(r, i);
48
52
  }
49
- }, this.intersectionObserverOptions)), b(() => {
53
+ }, this.intersectionObserverOptions)), d(() => {
50
54
  this.observer && this.observer.observe(this.el);
51
55
  }));
52
56
  }
@@ -57,34 +61,35 @@ class f {
57
61
  return typeof e == "function" ? { callback: e } : e;
58
62
  }
59
63
  }
60
- function n(r, { modifiers: e = {}, value: t }) {
64
+ function h(s, { modifiers: e = {}, value: t }) {
65
+ var r;
61
66
  if (!t)
62
67
  return;
63
- if (t.intersection?.threshold instanceof Array)
68
+ if (((r = t.intersection) == null ? void 0 : r.threshold) instanceof Array)
64
69
  throw new Error("`threshold` must be a number. v-viewable does not support `threshold` as an array.");
65
- const s = new f(r, t, e);
66
- r[o] = s;
70
+ const i = new u(s, t, e);
71
+ s[n] = i;
67
72
  }
68
- function a(r, { modifiers: e, value: t, oldValue: s }) {
69
- if (l(t, s) || t.toString() === s.toString())
73
+ function p(s, { modifiers: e, value: t, oldValue: i }) {
74
+ if (a(t, i) || t.toString() === i.toString())
70
75
  return;
71
- const i = r[o];
76
+ const r = s[n];
72
77
  if (!t) {
73
- h(r);
78
+ c(s);
74
79
  return;
75
80
  }
76
- i ? i.createObserver(t) : n(r, { modifiers: e, value: t });
81
+ r ? r.createObserver(t) : h(s, { modifiers: e, value: t });
77
82
  }
78
- function h(r) {
79
- const e = r[o];
80
- e && (e.destroyObserver(), delete r[o]);
83
+ function c(s) {
84
+ const e = s[n];
85
+ e && (e.destroyObserver(), delete s[n]);
81
86
  }
82
- const p = {
83
- beforeMount: n,
84
- updated: a,
85
- unmounted: h
87
+ const y = {
88
+ beforeMount: h,
89
+ updated: p,
90
+ unmounted: c
86
91
  };
87
92
  export {
88
- p as default
93
+ y as default
89
94
  };
90
95
  //# sourceMappingURL=viewable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewable.js","sources":["../../src/directives/viewable/viewable.ts"],"sourcesContent":["import isEqual from 'lodash-es/isEqual';\nimport { nextTick } from 'vue';\n\nconst viewableKey = Symbol('v-viewable');\n\ntype ViewableCallback = (result: boolean, entry: IntersectionObserverEntry) => void;\n\nclass ViewableState {\n private observer: IntersectionObserver | null;\n private el: Element;\n private frozen: boolean;\n private options: {\n callback: ViewableCallback;\n intersection: IntersectionObserverInit;\n };\n private oldResult: undefined | boolean;\n private callback: ViewableCallback | null;\n private modifiers?: {\n once?: boolean;\n };\n\n constructor(el, options, modifiers = {}) {\n this.el = el;\n this.modifiers = modifiers;\n this.observer = null;\n this.callback = null;\n this.frozen = false;\n this.options = {\n callback: () => {},\n intersection: {},\n };\n this.createObserver(options);\n }\n\n /**\n * Default threshold of 100%.\n * Informs when the element is 100% visibile, or at the provided threshold(s)\n * Does not support an array of values.\n * @see: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#thresholds\n */\n get threshold() {\n return this.options.intersection && typeof this.options.intersection.threshold === 'number'\n ? this.options.intersection.threshold\n : 1;\n }\n\n get intersectionObserverOptions() {\n return {\n threshold: this.threshold,\n ...this.options.intersection,\n };\n }\n\n createObserver(options) {\n if (this.observer) {\n this.destroyObserver();\n }\n\n if (this.frozen) {\n return;\n }\n\n this.options = this.processOptions(options);\n\n this.callback = (result, entry) => {\n this.options.callback(result, entry);\n\n if (result && this.modifiers?.once) {\n this.frozen = true;\n this.destroyObserver();\n }\n };\n\n this.oldResult = undefined;\n\n if ('IntersectionObserver' in window) {\n this.observer = new IntersectionObserver((entries) => {\n let entry = entries[0];\n\n if (entries.length > 1) {\n const intersectingEntry = entries.find((e) => e.isIntersecting);\n\n if (intersectingEntry) {\n entry = intersectingEntry;\n }\n }\n\n if (this.callback) {\n // Use isIntersecting if possible because browsers can report isIntersecting as true, but intersectionRatio as 0, when something very slowly enters the viewport.\n const result = entry.isIntersecting && entry.intersectionRatio >= this.threshold;\n\n if (result === this.oldResult) {\n return;\n }\n\n this.oldResult = result;\n this.callback(result, entry);\n }\n }, this.intersectionObserverOptions);\n }\n\n // Wait for the element to be in document\n nextTick(() => {\n if (this.observer) {\n this.observer.observe(this.el);\n }\n });\n }\n\n destroyObserver() {\n if (this.observer) {\n this.observer.unobserve(this.el);\n this.observer.disconnect();\n this.observer = null;\n }\n }\n\n private processOptions(value) {\n const options =\n typeof value === 'function'\n ? { callback: value } // Simple options (callback-only)\n : value; // Options object\n\n return options;\n }\n}\n\nfunction mount(el, { modifiers = {}, value }) {\n if (!value) {\n return;\n }\n\n if (value.intersection?.threshold instanceof Array) {\n throw new Error('`threshold` must be a number. v-viewable does not support `threshold` as an array.');\n }\n\n const state = new ViewableState(el, value, modifiers);\n\n el[viewableKey] = state;\n}\n\nfunction updated(el, { modifiers, value, oldValue }) {\n if (isEqual(value, oldValue) || value.toString() === oldValue.toString()) {\n return;\n }\n\n const state = el[viewableKey];\n\n if (!value) {\n unmount(el);\n return;\n }\n\n if (state) {\n state.createObserver(value);\n } else {\n mount(el, { modifiers, value });\n }\n}\n\nfunction unmount(el) {\n const state = el[viewableKey];\n\n if (state) {\n state.destroyObserver();\n delete el[viewableKey];\n }\n}\n\nexport default {\n beforeMount: mount,\n updated,\n unmounted: unmount,\n};\n"],"names":["viewableKey","ViewableState","el","options","modifiers","result","entry","entries","intersectingEntry","e","nextTick","value","mount","state","updated","oldValue","isEqual","unmount","viewable"],"mappings":"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"}
1
+ {"version":3,"file":"viewable.js","sources":["../../src/directives/viewable/viewable.ts"],"sourcesContent":["import isEqual from 'lodash-es/isEqual';\nimport { nextTick } from 'vue';\n\nconst viewableKey = Symbol('v-viewable');\n\ntype ViewableCallback = (result: boolean, entry: IntersectionObserverEntry) => void;\n\nclass ViewableState {\n private observer: IntersectionObserver | null;\n private el: Element;\n private frozen: boolean;\n private options: {\n callback: ViewableCallback;\n intersection: IntersectionObserverInit;\n };\n private oldResult: undefined | boolean;\n private callback: ViewableCallback | null;\n private modifiers?: {\n once?: boolean;\n };\n\n constructor(el, options, modifiers = {}) {\n this.el = el;\n this.modifiers = modifiers;\n this.observer = null;\n this.callback = null;\n this.frozen = false;\n this.options = {\n callback: () => {},\n intersection: {},\n };\n this.createObserver(options);\n }\n\n /**\n * Default threshold of 100%.\n * Informs when the element is 100% visibile, or at the provided threshold(s)\n * Does not support an array of values.\n * @see: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#thresholds\n */\n get threshold() {\n return this.options.intersection && typeof this.options.intersection.threshold === 'number'\n ? this.options.intersection.threshold\n : 1;\n }\n\n get intersectionObserverOptions() {\n return {\n threshold: this.threshold,\n ...this.options.intersection,\n };\n }\n\n createObserver(options) {\n if (this.observer) {\n this.destroyObserver();\n }\n\n if (this.frozen) {\n return;\n }\n\n this.options = this.processOptions(options);\n\n this.callback = (result, entry) => {\n this.options.callback(result, entry);\n\n if (result && this.modifiers?.once) {\n this.frozen = true;\n this.destroyObserver();\n }\n };\n\n this.oldResult = undefined;\n\n if ('IntersectionObserver' in window) {\n this.observer = new IntersectionObserver((entries) => {\n let entry = entries[0];\n\n if (entries.length > 1) {\n const intersectingEntry = entries.find((e) => e.isIntersecting);\n\n if (intersectingEntry) {\n entry = intersectingEntry;\n }\n }\n\n if (this.callback) {\n // Use isIntersecting if possible because browsers can report isIntersecting as true, but intersectionRatio as 0, when something very slowly enters the viewport.\n const result = entry.isIntersecting && entry.intersectionRatio >= this.threshold;\n\n if (result === this.oldResult) {\n return;\n }\n\n this.oldResult = result;\n this.callback(result, entry);\n }\n }, this.intersectionObserverOptions);\n }\n\n // Wait for the element to be in document\n nextTick(() => {\n if (this.observer) {\n this.observer.observe(this.el);\n }\n });\n }\n\n destroyObserver() {\n if (this.observer) {\n this.observer.unobserve(this.el);\n this.observer.disconnect();\n this.observer = null;\n }\n }\n\n private processOptions(value) {\n const options =\n typeof value === 'function'\n ? { callback: value } // Simple options (callback-only)\n : value; // Options object\n\n return options;\n }\n}\n\nfunction mount(el, { modifiers = {}, value }) {\n if (!value) {\n return;\n }\n\n if (value.intersection?.threshold instanceof Array) {\n throw new Error('`threshold` must be a number. v-viewable does not support `threshold` as an array.');\n }\n\n const state = new ViewableState(el, value, modifiers);\n\n el[viewableKey] = state;\n}\n\nfunction updated(el, { modifiers, value, oldValue }) {\n if (isEqual(value, oldValue) || value.toString() === oldValue.toString()) {\n return;\n }\n\n const state = el[viewableKey];\n\n if (!value) {\n unmount(el);\n return;\n }\n\n if (state) {\n state.createObserver(value);\n } else {\n mount(el, { modifiers, value });\n }\n}\n\nfunction unmount(el) {\n const state = el[viewableKey];\n\n if (state) {\n state.destroyObserver();\n delete el[viewableKey];\n }\n}\n\nexport default {\n beforeMount: mount,\n updated,\n unmounted: unmount,\n};\n"],"names":["viewableKey","ViewableState","el","options","modifiers","__publicField","result","entry","_a","entries","intersectingEntry","e","nextTick","value","mount","state","updated","oldValue","isEqual","unmount","viewable"],"mappings":"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"}