@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.
- package/README.md +41 -12
- package/dist/Accordion.js.map +1 -1
- package/dist/Accordion.vue.d.ts +37 -6
- package/dist/ActionsDropdown.js +2 -2
- package/dist/ActionsDropdown.js.map +1 -1
- package/dist/ActionsDropdown.vue.d.ts +74 -0
- package/dist/AddressSelect.js +60 -56
- package/dist/AddressSelect.js.map +1 -1
- package/dist/AddressSelect.vue.d.ts +65 -8
- package/dist/Alert.js.map +1 -1
- package/dist/Alert.vue.d.ts +41 -4
- package/dist/AppNavigationItem.js.map +1 -1
- package/dist/AppNavigationItem.vue.d.ts +31 -4
- package/dist/AppSidebar.js.map +1 -1
- package/dist/AppSidebar.vue.d.ts +35 -8
- package/dist/AppTopbar.js +1 -1
- package/dist/AppTopbar.js.map +1 -1
- package/dist/AppTopbar.vue.d.ts +33 -4
- package/dist/Avatar.js.map +1 -1
- package/dist/Avatar.vue.d.ts +44 -5
- package/dist/Backdrop.js.map +1 -1
- package/dist/Backdrop.vue.d.ts +1 -1
- package/dist/Badge.js.map +1 -1
- package/dist/Badge.vue.d.ts +55 -6
- package/dist/Box.vue.d.ts +36 -3
- package/dist/Box.vue_vue_type_script_setup_true_lang-rFnvwLVY.js.map +1 -1
- package/dist/Button.js.map +1 -1
- package/dist/Button.vue.d.ts +50 -5
- package/dist/ButtonGroup.js +37 -33
- package/dist/ButtonGroup.js.map +1 -1
- package/dist/ButtonGroup.vue.d.ts +39 -6
- package/dist/Card.js.map +1 -1
- package/dist/Card.vue.d.ts +32 -5
- package/dist/CardContent.js.map +1 -1
- package/dist/CardContent.vue.d.ts +1 -1
- package/dist/CardFooter.js.map +1 -1
- package/dist/CardFooter.vue.d.ts +1 -1
- package/dist/CardHeader.js.map +1 -1
- package/dist/CardHeader.vue.d.ts +15 -2
- package/dist/CardMedia.js.map +1 -1
- package/dist/CardMedia.vue.d.ts +15 -2
- package/dist/Carousel.js +72 -66
- package/dist/Carousel.js.map +1 -1
- package/dist/Carousel.vue.d.ts +10 -10
- package/dist/Checkbox.js.map +1 -1
- package/dist/Checkbox.vue.d.ts +53 -8
- package/dist/ChevronToggle.vue.d.ts +34 -7
- package/dist/ChevronToggle.vue_vue_type_script_setup_true_lang-Ce_qOXfR.js.map +1 -1
- package/dist/Chip.js.map +1 -1
- package/dist/Chip.vue.d.ts +52 -10
- package/dist/ConfirmationCodeInput.js +44 -40
- package/dist/ConfirmationCodeInput.js.map +1 -1
- package/dist/ConfirmationCodeInput.vue.d.ts +43 -8
- package/dist/ContextSwitcher.js.map +1 -1
- package/dist/ContextSwitcher.vue.d.ts +41 -6
- package/dist/Copy.js.map +1 -1
- package/dist/Copy.vue.d.ts +34 -3
- package/dist/CurrencyInput.js +21 -20
- package/dist/CurrencyInput.js.map +1 -1
- package/dist/CurrencyInput.vue.d.ts +46 -125
- package/dist/DataView.js +96 -94
- package/dist/DataView.js.map +1 -1
- package/dist/DataView.vue.d.ts +57 -12
- package/dist/DataViewFilters.js +139 -127
- package/dist/DataViewFilters.js.map +1 -1
- package/dist/DataViewFilters.vue.d.ts +54 -9
- package/dist/DataViewSortButton.js +2 -2
- package/dist/DataViewSortButton.js.map +1 -1
- package/dist/DataViewSortButton.vue.d.ts +30 -3
- package/dist/DataViewToolbar.js +81 -148
- package/dist/DataViewToolbar.js.map +1 -1
- package/dist/DataViewToolbar.vue.d.ts +40 -106
- package/dist/DatePicker.js +4640 -4528
- package/dist/DatePicker.js.map +1 -1
- package/dist/DatePicker.vue.d.ts +79 -30
- package/dist/DescriptionList.js.map +1 -1
- package/dist/DescriptionList.vue.d.ts +32 -3
- package/dist/DescriptionListDetail.js.map +1 -1
- package/dist/DescriptionListDetail.vue.d.ts +1 -1
- package/dist/DescriptionListGroup.js.map +1 -1
- package/dist/DescriptionListGroup.vue.d.ts +1 -1
- package/dist/DescriptionListTerm.js.map +1 -1
- package/dist/DescriptionListTerm.vue.d.ts +1 -1
- package/dist/Dialog.js.map +1 -1
- package/dist/Dialog.vue.d.ts +53 -10
- package/dist/Divider.js.map +1 -1
- package/dist/Dropdown.js +95 -89
- package/dist/Dropdown.js.map +1 -1
- package/dist/Dropdown.vue.d.ts +48 -12
- package/dist/EmptyState.js +1 -1
- package/dist/EmptyState.js.map +1 -1
- package/dist/EmptyState.vue.d.ts +62 -5
- package/dist/Expand.vue.d.ts +40 -10
- package/dist/Expand.vue_vue_type_script_setup_true_lang-CiONJfAp.js.map +1 -1
- package/dist/Field.vue.d.ts +53 -4
- package/dist/Field.vue_vue_type_script_setup_true_lang-DI6z3AE9.js.map +1 -1
- package/dist/FileUpload.js +74 -72
- package/dist/FileUpload.js.map +1 -1
- package/dist/FileUpload.vue.d.ts +44 -10
- package/dist/FilterChip.js.map +1 -1
- package/dist/FilterChip.vue.d.ts +41 -6
- package/dist/FilterDrawerItem.js +21 -21
- package/dist/FilterDrawerItem.js.map +1 -1
- package/dist/FilterDrawerItem.vue.d.ts +23 -6
- package/dist/FilterDropdown.js +69 -63
- package/dist/FilterDropdown.js.map +1 -1
- package/dist/FilterDropdown.vue.d.ts +35 -122
- package/dist/FilterSelect.js.map +1 -1
- package/dist/FilterSelect.vue.d.ts +31 -4
- package/dist/Filters.js +164 -157
- package/dist/Filters.js.map +1 -1
- package/dist/Filters.vue.d.ts +2190 -0
- package/dist/HttpError.js +7 -7
- package/dist/HttpError.js.map +1 -1
- package/dist/HttpError.vue.d.ts +41 -4
- package/dist/Icon.js +17 -17
- package/dist/Icon.js.map +1 -1
- package/dist/Icon.vue.d.ts +36 -3
- package/dist/IconLabel.js.map +1 -1
- package/dist/IconLabel.vue.d.ts +40 -5
- package/dist/Illustration.js +2 -2
- package/dist/Illustration.vue.d.ts +42 -3
- package/dist/{Illustration.vue_vue_type_script_setup_true_lang-BVzzNsRt.js → Illustration.vue_vue_type_script_setup_true_lang-BrqEF8xe.js} +11 -11
- 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
- package/dist/Image.js +2 -2
- package/dist/Image.vue.d.ts +40 -5
- package/dist/{Image.vue_vue_type_script_setup_true_lang-Dg2Zk2r2.js → Image.vue_vue_type_script_setup_true_lang-D5u4av0_.js} +41 -37
- 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
- package/dist/InlineEdit.js.map +1 -1
- package/dist/InlineEdit.vue.d.ts +47 -126
- package/dist/Input.js.map +1 -1
- package/dist/Input.vue.d.ts +45 -12
- package/dist/InputOptions.js +69 -66
- package/dist/InputOptions.js.map +1 -1
- package/dist/InputOptions.vue.d.ts +55 -10
- package/dist/IntegrationIcon.js +7 -7
- package/dist/IntegrationIcon.js.map +1 -1
- package/dist/IntegrationIcon.vue.d.ts +36 -3
- package/dist/Label.vue.d.ts +42 -3
- package/dist/Label.vue_vue_type_script_setup_true_lang-CNquF3AP.js.map +1 -1
- package/dist/LicenseChip.js.map +1 -1
- package/dist/LicenseChip.vue.d.ts +30 -3
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItem.vue.d.ts +294 -0
- package/dist/ListItemCell.js.map +1 -1
- package/dist/ListItemCell.vue.d.ts +21 -0
- package/dist/ListView.js +7 -4
- package/dist/ListView.js.map +1 -1
- package/dist/ListView.types.d.ts +29 -0
- package/dist/ListView.vue.d.ts +5496 -0
- package/dist/Loading.js +2 -2
- package/dist/Loading.js.map +1 -1
- package/dist/Loading.vue.d.ts +1 -1
- package/dist/Logo.js +1 -1
- package/dist/Logo.vue.d.ts +41 -6
- package/dist/{Logo.vue_vue_type_script_setup_true_lang-Y3iE9utm.js → Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js} +17 -17
- package/dist/Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js.map +1 -0
- package/dist/Menu.js.map +1 -1
- package/dist/Menu.vue.d.ts +1 -1
- package/dist/MenuItem.js.map +1 -1
- package/dist/MenuItem.vue.d.ts +1 -1
- package/dist/MenusPlugin-Bk6UW6o9.js +12 -0
- package/dist/{MenusPlugin-B4jpNe7x.js.map → MenusPlugin-Bk6UW6o9.js.map} +1 -1
- package/dist/Metric.js.map +1 -1
- package/dist/Metric.vue.d.ts +34 -3
- package/dist/Modal.js +64 -62
- package/dist/Modal.js.map +1 -1
- package/dist/Modal.vue.d.ts +60 -13
- package/dist/Modals.js +18 -17
- package/dist/Modals.js.map +1 -1
- package/dist/ModalsPlugin.js +11 -11
- package/dist/ModalsPlugin.js.map +1 -1
- package/dist/Module.js.map +1 -1
- package/dist/Module.vue.d.ts +29 -2
- package/dist/ModuleContent.js.map +1 -1
- package/dist/ModuleContent.vue.d.ts +3 -3
- package/dist/ModuleFooter.js.map +1 -1
- package/dist/ModuleFooter.vue.d.ts +1 -1
- package/dist/ModuleHeader.js.map +1 -1
- package/dist/ModuleHeader.vue.d.ts +39 -5
- package/dist/MoreActions.js +125 -123
- package/dist/MoreActions.js.map +1 -1
- package/dist/MoreActions.vue.d.ts +46 -123
- package/dist/ObfuscateText.js.map +1 -1
- package/dist/ObfuscateText.vue.d.ts +40 -3
- package/dist/PageContent.js.map +1 -1
- package/dist/PageContent.vue.d.ts +30 -3
- package/dist/PageHeader.js.map +1 -1
- package/dist/PageHeader.vue.d.ts +35 -6
- package/dist/PageNavigation.js +50 -50
- package/dist/PageNavigation.js.map +1 -1
- package/dist/PageNavigation.vue.d.ts +36 -7
- package/dist/Paginate.js.map +1 -1
- package/dist/Paginate.vue.d.ts +40 -5
- package/dist/PlaidLink.js.map +1 -1
- package/dist/PlaidLink.vue.d.ts +49 -12
- package/dist/QuickAction.js.map +1 -1
- package/dist/QuickAction.vue.d.ts +15 -2
- package/dist/Radio.js.map +1 -1
- package/dist/Radio.vue.d.ts +93 -0
- package/dist/RadioGroup.js +101 -94
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioGroup.vue.d.ts +42 -116
- package/dist/RadioNew.js +99 -96
- package/dist/RadioNew.js.map +1 -1
- package/dist/RadioNew.vue.d.ts +48 -7
- package/dist/RangeInput.js.map +1 -1
- package/dist/RangeInput.vue.d.ts +1 -1
- package/dist/SearchBar.js +39 -38
- package/dist/SearchBar.js.map +1 -1
- package/dist/SearchBar.vue.d.ts +44 -127
- package/dist/SectionHeader.js.map +1 -1
- package/dist/SectionHeader.vue.d.ts +36 -5
- package/dist/Select.js +183 -171
- package/dist/Select.js.map +1 -1
- package/dist/Select.vue.d.ts +102 -23
- package/dist/SelectStatus.js +38 -38
- package/dist/SelectStatus.js.map +1 -1
- package/dist/SelectStatus.vue.d.ts +46 -226
- package/dist/Skeleton.js.map +1 -1
- package/dist/Skeleton.vue.d.ts +34 -3
- package/dist/Step.js +44 -44
- package/dist/Step.js.map +1 -1
- package/dist/Step.vue.d.ts +43 -4
- package/dist/Stepper.js.map +1 -1
- package/dist/Stepper.vue.d.ts +44 -9
- package/dist/Switch.js.map +1 -1
- package/dist/Switch.vue.d.ts +47 -8
- package/dist/Tab.js +9 -9
- package/dist/Tab.js.map +1 -1
- package/dist/Tab.vue.d.ts +15 -2
- package/dist/TabPanel.js.map +1 -1
- package/dist/TabPanel.vue.d.ts +30 -3
- package/dist/Table.js +59 -53
- package/dist/Table.js.map +1 -1
- package/dist/Table.vue.d.ts +50 -3
- package/dist/TableCell.js +1 -1
- package/dist/TableCell.js.map +1 -1
- package/dist/TableCell.vue.d.ts +32 -3
- package/dist/TableHeaderCell.js +1 -1
- package/dist/TableHeaderCell.js.map +1 -1
- package/dist/TableHeaderCell.vue.d.ts +30 -3
- package/dist/TableHeaderRow.js +1 -1
- package/dist/TableHeaderRow.js.map +1 -1
- package/dist/TableHeaderRow.vue.d.ts +34 -5
- package/dist/TableRow.js +44 -43
- package/dist/TableRow.js.map +1 -1
- package/dist/TableRow.vue.d.ts +48 -7
- package/dist/Tabs.js +2 -2
- package/dist/Tabs.vue.d.ts +31 -4
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-CmnBP4i1.js +159 -0
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-CmnBP4i1.js.map +1 -0
- package/dist/TextEditor.js +2422 -2416
- package/dist/TextEditor.js.map +1 -1
- package/dist/TextEditor.vue.d.ts +39 -8
- package/dist/Textarea.js +32 -29
- package/dist/Textarea.js.map +1 -1
- package/dist/Textarea.vue.d.ts +44 -9
- package/dist/Thumbnail.js +1 -1
- package/dist/Thumbnail.js.map +1 -1
- package/dist/Thumbnail.vue.d.ts +4 -4
- package/dist/ThumbnailEmpty.js.map +1 -1
- package/dist/ThumbnailEmpty.vue.d.ts +1 -1
- package/dist/ThumbnailGroup.js.map +1 -1
- package/dist/ThumbnailGroup.vue.d.ts +22 -26
- package/dist/Timeline.js.map +1 -1
- package/dist/Timeline.vue.d.ts +32 -3
- package/dist/TimelineItem.js.map +1 -1
- package/dist/TimelineItem.vue.d.ts +1 -1
- package/dist/Toast.js.map +1 -1
- package/dist/Toast.vue.d.ts +30 -3
- package/dist/Toasts.js.map +1 -1
- package/dist/ToastsPlugin.js +11 -11
- package/dist/ToastsPlugin.js.map +1 -1
- package/dist/Tooltip.js +30 -29
- package/dist/Tooltip.js.map +1 -1
- package/dist/Tooltip.vue.d.ts +43 -11
- package/dist/components.css +1 -1
- package/dist/directives/observe.js +8 -8
- package/dist/directives/observe.js.map +1 -1
- package/dist/directives/tooltip.js +3 -3
- package/dist/directives/tooltip.js.map +1 -1
- package/dist/directives/viewable.js +44 -39
- package/dist/directives/viewable.js.map +1 -1
- package/dist/floating-ui.vue-DLFiymOf.js +1093 -0
- package/dist/floating-ui.vue-DLFiymOf.js.map +1 -0
- package/dist/formatDateTime-Dz8bXV0R.js +1418 -0
- package/dist/formatDateTime-Dz8bXV0R.js.map +1 -0
- package/dist/index-D6bxWkZ1.js.map +1 -1
- package/dist/{index-XZqpB2_R.js → index-DA_ft08e.js} +9 -9
- package/dist/index-DA_ft08e.js.map +1 -0
- package/dist/index.js +106 -101
- package/dist/index.js.map +1 -1
- package/dist/isValid-DN-HkCoi.js.map +1 -1
- package/dist/obfuscateText.d.ts +1 -1
- package/dist/parseISO-wlfIB_QJ.js.map +1 -1
- package/dist/searchFuzzy-B3TsUO-V.js +409 -0
- package/dist/searchFuzzy-B3TsUO-V.js.map +1 -0
- package/dist/toTimeZone-Coq1oPTt.js.map +1 -1
- package/dist/useDialog.d.ts +2 -2
- package/dist/useDialog.js +25 -21
- package/dist/useDialog.js.map +1 -1
- package/dist/useGoogleMaps.js +110 -108
- package/dist/useGoogleMaps.js.map +1 -1
- package/dist/useMediaQuery.d.ts +6 -0
- package/dist/useMediaQuery.js +15 -11
- package/dist/useMediaQuery.js.map +1 -1
- package/dist/useModals.d.ts +1 -1
- package/dist/usePlaidLink.js +27 -20
- package/dist/usePlaidLink.js.map +1 -1
- package/dist/useSearch.js +13 -13
- package/dist/useSearch.js.map +1 -1
- package/dist/useSelection.js +56 -56
- package/dist/useSelection.js.map +1 -1
- package/dist/useSortable.js +63 -54
- package/dist/useSortable.js.map +1 -1
- package/dist/useStepper.d.ts +2 -2
- package/dist/useStepper.js +40 -36
- package/dist/useStepper.js.map +1 -1
- package/dist/useToasts.js +23 -23
- package/dist/useToasts.js.map +1 -1
- package/dist/useValidation.js +100 -96
- package/dist/useValidation.js.map +1 -1
- package/dist/utils/calculateElementOverflow.js +4 -4
- package/dist/utils/calculateElementOverflow.js.map +1 -1
- package/dist/utils/formatDateTime.js +1 -1
- package/dist/utils/obfuscateText.js +6 -6
- package/dist/utils/obfuscateText.js.map +1 -1
- package/dist/utils/searchFuzzy.js +1 -1
- package/dist/utils/storage.js +23 -23
- package/dist/utils/storage.js.map +1 -1
- package/package.json +32 -19
- package/dist/Logo.vue_vue_type_script_setup_true_lang-Y3iE9utm.js.map +0 -1
- package/dist/MenusPlugin-B4jpNe7x.js +0 -12
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js +0 -78
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js.map +0 -1
- package/dist/floating-ui.vue-CL01Y9ER.js +0 -1075
- package/dist/floating-ui.vue-CL01Y9ER.js.map +0 -1
- package/dist/formatDateTime-DG7kBc2T.js +0 -1414
- package/dist/formatDateTime-DG7kBc2T.js.map +0 -1
- package/dist/index-XZqpB2_R.js.map +0 -1
- package/dist/searchFuzzy-DBDE6jkd.js +0 -408
- package/dist/searchFuzzy-DBDE6jkd.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const
|
|
1
|
+
const t = Symbol("v-observe");
|
|
2
2
|
function o(e) {
|
|
3
|
-
e.dataset.vObserved =
|
|
3
|
+
e.dataset.vObserved = "yes";
|
|
4
4
|
}
|
|
5
5
|
function r(e) {
|
|
6
|
-
e.dataset.vObserved =
|
|
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
|
|
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],
|
|
20
|
-
if (!
|
|
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
|
-
|
|
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
|
-
|
|
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":["
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
this
|
|
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,
|
|
36
|
-
|
|
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
|
|
42
|
+
let i = t[0];
|
|
39
43
|
if (t.length > 1) {
|
|
40
|
-
const
|
|
41
|
-
|
|
44
|
+
const r = t.find((l) => l.isIntersecting);
|
|
45
|
+
r && (i = r);
|
|
42
46
|
}
|
|
43
47
|
if (this.callback) {
|
|
44
|
-
const
|
|
45
|
-
if (
|
|
48
|
+
const r = i.isIntersecting && i.intersectionRatio >= this.threshold;
|
|
49
|
+
if (r === this.oldResult)
|
|
46
50
|
return;
|
|
47
|
-
this.oldResult =
|
|
51
|
+
this.oldResult = r, this.callback(r, i);
|
|
48
52
|
}
|
|
49
|
-
}, this.intersectionObserverOptions)),
|
|
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
|
|
64
|
+
function h(s, { modifiers: e = {}, value: t }) {
|
|
65
|
+
var r;
|
|
61
66
|
if (!t)
|
|
62
67
|
return;
|
|
63
|
-
if (t.intersection
|
|
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
|
|
66
|
-
|
|
70
|
+
const i = new u(s, t, e);
|
|
71
|
+
s[n] = i;
|
|
67
72
|
}
|
|
68
|
-
function
|
|
69
|
-
if (
|
|
73
|
+
function p(s, { modifiers: e, value: t, oldValue: i }) {
|
|
74
|
+
if (a(t, i) || t.toString() === i.toString())
|
|
70
75
|
return;
|
|
71
|
-
const
|
|
76
|
+
const r = s[n];
|
|
72
77
|
if (!t) {
|
|
73
|
-
|
|
78
|
+
c(s);
|
|
74
79
|
return;
|
|
75
80
|
}
|
|
76
|
-
|
|
81
|
+
r ? r.createObserver(t) : h(s, { modifiers: e, value: t });
|
|
77
82
|
}
|
|
78
|
-
function
|
|
79
|
-
const e =
|
|
80
|
-
e && (e.destroyObserver(), delete
|
|
83
|
+
function c(s) {
|
|
84
|
+
const e = s[n];
|
|
85
|
+
e && (e.destroyObserver(), delete s[n]);
|
|
81
86
|
}
|
|
82
|
-
const
|
|
83
|
-
beforeMount:
|
|
84
|
-
updated:
|
|
85
|
-
unmounted:
|
|
87
|
+
const y = {
|
|
88
|
+
beforeMount: h,
|
|
89
|
+
updated: p,
|
|
90
|
+
unmounted: c
|
|
86
91
|
};
|
|
87
92
|
export {
|
|
88
|
-
|
|
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":"
|
|
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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"}
|