@leaflink/stash 51.9.3 → 51.11.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/assets/icons/cloud-share.svg +1 -0
- package/assets/spritesheet.svg +1 -1
- package/dist/Accordion.js.map +1 -1
- package/dist/Accordion.vue.d.ts +7 -38
- package/dist/ActionsDropdown.js +2 -2
- package/dist/ActionsDropdown.js.map +1 -1
- package/dist/ActionsDropdown.vue.d.ts +0 -74
- package/dist/AddressSelect.js +56 -60
- package/dist/AddressSelect.js.map +1 -1
- package/dist/AddressSelect.vue.d.ts +8 -65
- package/dist/Alert.js.map +1 -1
- package/dist/Alert.vue.d.ts +4 -41
- package/dist/AppNavigationItem.js.map +1 -1
- package/dist/AppNavigationItem.vue.d.ts +5 -32
- package/dist/AppSidebar.js.map +1 -1
- package/dist/AppSidebar.vue.d.ts +8 -35
- package/dist/AppTopbar.js +1 -1
- package/dist/AppTopbar.js.map +1 -1
- package/dist/AppTopbar.vue.d.ts +4 -33
- package/dist/Avatar.js.map +1 -1
- package/dist/Avatar.vue.d.ts +5 -44
- 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 +6 -55
- package/dist/Box.vue.d.ts +3 -36
- 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 +5 -50
- package/dist/ButtonGroup.js +33 -37
- package/dist/ButtonGroup.js.map +1 -1
- package/dist/ButtonGroup.vue.d.ts +6 -39
- package/dist/Card.js.map +1 -1
- package/dist/Card.vue.d.ts +5 -32
- 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 +2 -15
- package/dist/CardMedia.js.map +1 -1
- package/dist/CardMedia.vue.d.ts +2 -15
- package/dist/Carousel.js +66 -72
- 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 +8 -53
- package/dist/ChevronToggle.vue.d.ts +7 -34
- 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 +10 -52
- package/dist/ConfirmationCodeInput.js +40 -44
- package/dist/ConfirmationCodeInput.js.map +1 -1
- package/dist/ConfirmationCodeInput.vue.d.ts +8 -43
- package/dist/ContextSwitcher.js.map +1 -1
- package/dist/ContextSwitcher.vue.d.ts +6 -41
- package/dist/Copy.js.map +1 -1
- package/dist/Copy.vue.d.ts +3 -34
- package/dist/CurrencyInput.js +20 -21
- package/dist/CurrencyInput.js.map +1 -1
- package/dist/CurrencyInput.vue.d.ts +125 -46
- package/dist/CustomRender.js.map +1 -1
- package/dist/DataView.js +94 -96
- package/dist/DataView.js.map +1 -1
- package/dist/DataView.keys-aSOnA4AD.js.map +1 -1
- package/dist/DataView.vue.d.ts +15 -57
- package/dist/DataViewFilters.js +127 -139
- package/dist/DataViewFilters.js.map +1 -1
- package/dist/DataViewFilters.keys-BLu07FiP.js.map +1 -1
- package/dist/DataViewFilters.vue.d.ts +9 -54
- package/dist/DataViewSortButton.js +2 -2
- package/dist/DataViewSortButton.js.map +1 -1
- package/dist/DataViewSortButton.vue.d.ts +3 -30
- package/dist/DataViewToolbar.js +146 -71
- package/dist/DataViewToolbar.js.map +1 -1
- package/dist/DataViewToolbar.vue.d.ts +106 -40
- package/dist/DatePicker.js +4524 -4636
- package/dist/DatePicker.js.map +1 -1
- package/dist/DatePicker.vue.d.ts +32 -81
- package/dist/DescriptionList.js.map +1 -1
- package/dist/DescriptionList.vue.d.ts +3 -32
- 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 +10 -53
- package/dist/Divider.js.map +1 -1
- package/dist/Dropdown.js +89 -95
- package/dist/Dropdown.js.map +1 -1
- package/dist/Dropdown.vue.d.ts +12 -48
- package/dist/EmptyState.js +1 -1
- package/dist/EmptyState.js.map +1 -1
- package/dist/EmptyState.vue.d.ts +5 -62
- package/dist/Expand.vue.d.ts +10 -40
- package/dist/Expand.vue_vue_type_script_setup_true_lang-CiONJfAp.js.map +1 -1
- package/dist/Field.vue.d.ts +4 -53
- package/dist/Field.vue_vue_type_script_setup_true_lang-DI6z3AE9.js.map +1 -1
- package/dist/FileUpload.js +72 -74
- package/dist/FileUpload.js.map +1 -1
- package/dist/FileUpload.vue.d.ts +10 -44
- package/dist/FilterChip.js.map +1 -1
- package/dist/FilterChip.vue.d.ts +6 -41
- package/dist/FilterDrawerItem.js +21 -21
- package/dist/FilterDrawerItem.js.map +1 -1
- package/dist/FilterDrawerItem.vue.d.ts +6 -23
- package/dist/FilterDropdown.js +63 -69
- package/dist/FilterDropdown.js.map +1 -1
- package/dist/FilterDropdown.vue.d.ts +122 -35
- package/dist/FilterSelect.js.map +1 -1
- package/dist/FilterSelect.vue.d.ts +4 -31
- package/dist/Filters.js +157 -164
- package/dist/Filters.js.map +1 -1
- package/dist/Filters.vue.d.ts +0 -2190
- package/dist/HttpError.js +7 -7
- package/dist/HttpError.js.map +1 -1
- package/dist/HttpError.vue.d.ts +4 -41
- package/dist/Icon.js +16 -15
- package/dist/Icon.js.map +1 -1
- package/dist/Icon.vue.d.ts +4 -37
- package/dist/IconLabel.js.map +1 -1
- package/dist/IconLabel.vue.d.ts +6 -41
- package/dist/Illustration.js +2 -2
- package/dist/Illustration.vue.d.ts +3 -42
- package/dist/{Illustration.vue_vue_type_script_setup_true_lang-BrqEF8xe.js → Illustration.vue_vue_type_script_setup_true_lang-BVzzNsRt.js} +11 -11
- package/dist/{Illustration.vue_vue_type_script_setup_true_lang-BrqEF8xe.js.map → Illustration.vue_vue_type_script_setup_true_lang-BVzzNsRt.js.map} +1 -1
- package/dist/Image.js +2 -2
- package/dist/Image.vue.d.ts +5 -40
- package/dist/{Image.vue_vue_type_script_setup_true_lang-D5u4av0_.js → Image.vue_vue_type_script_setup_true_lang-Dg2Zk2r2.js} +37 -41
- package/dist/{Image.vue_vue_type_script_setup_true_lang-D5u4av0_.js.map → Image.vue_vue_type_script_setup_true_lang-Dg2Zk2r2.js.map} +1 -1
- package/dist/InlineEdit.js.map +1 -1
- package/dist/InlineEdit.vue.d.ts +126 -47
- package/dist/Input.js.map +1 -1
- package/dist/Input.vue.d.ts +12 -45
- package/dist/InputOptions.js +66 -69
- package/dist/InputOptions.js.map +1 -1
- package/dist/InputOptions.vue.d.ts +10 -55
- package/dist/IntegrationIcon.js +7 -7
- package/dist/IntegrationIcon.js.map +1 -1
- package/dist/IntegrationIcon.vue.d.ts +3 -36
- package/dist/Label.vue.d.ts +3 -42
- 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 +3 -30
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItem.vue.d.ts +0 -294
- package/dist/ListItemCell.js.map +1 -1
- package/dist/ListItemCell.vue.d.ts +0 -21
- package/dist/ListView.js +4 -7
- package/dist/ListView.js.map +1 -1
- package/dist/ListView.types.d.ts +0 -29
- package/dist/ListView.vue.d.ts +0 -5496
- 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 +6 -41
- package/dist/{Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js → Logo.vue_vue_type_script_setup_true_lang-Y3iE9utm.js} +17 -17
- package/dist/Logo.vue_vue_type_script_setup_true_lang-Y3iE9utm.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-B4jpNe7x.js +12 -0
- package/dist/{MenusPlugin-Bk6UW6o9.js.map → MenusPlugin-B4jpNe7x.js.map} +1 -1
- package/dist/Metric.js.map +1 -1
- package/dist/Metric.vue.d.ts +3 -34
- package/dist/Modal.js +62 -64
- package/dist/Modal.js.map +1 -1
- package/dist/Modal.vue.d.ts +13 -60
- package/dist/Modals.js +17 -18
- 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.keys-CEsrW2f0.js.map +1 -1
- package/dist/Module.types-B1FfGGac.js.map +1 -1
- package/dist/Module.vue.d.ts +2 -29
- 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 +5 -39
- package/dist/MoreActions.js +489 -0
- package/dist/MoreActions.js.map +1 -0
- package/dist/MoreActions.vue.d.ts +203 -0
- package/dist/ObfuscateText.js.map +1 -1
- package/dist/ObfuscateText.vue.d.ts +3 -40
- package/dist/PageContent.js.map +1 -1
- package/dist/PageContent.vue.d.ts +3 -30
- package/dist/PageHeader.js.map +1 -1
- package/dist/PageHeader.vue.d.ts +6 -35
- package/dist/PageNavigation.js +50 -50
- package/dist/PageNavigation.js.map +1 -1
- package/dist/PageNavigation.vue.d.ts +7 -36
- package/dist/Paginate.js.map +1 -1
- package/dist/Paginate.vue.d.ts +5 -40
- package/dist/PlaidLink.js.map +1 -1
- package/dist/PlaidLink.vue.d.ts +12 -49
- package/dist/QuickAction.js.map +1 -1
- package/dist/QuickAction.vue.d.ts +3 -16
- package/dist/Radio.js.map +1 -1
- package/dist/Radio.vue.d.ts +0 -93
- package/dist/RadioGroup.js +94 -101
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioGroup.vue.d.ts +116 -42
- package/dist/RadioNew.js +96 -99
- package/dist/RadioNew.js.map +1 -1
- package/dist/RadioNew.vue.d.ts +7 -48
- package/dist/RangeInput.js.map +1 -1
- package/dist/RangeInput.vue.d.ts +1 -1
- package/dist/SearchBar.js +38 -39
- package/dist/SearchBar.js.map +1 -1
- package/dist/SearchBar.vue.d.ts +127 -44
- package/dist/SectionHeader.js.map +1 -1
- package/dist/SectionHeader.vue.d.ts +6 -37
- package/dist/Select.js +171 -183
- package/dist/Select.js.map +1 -1
- package/dist/Select.vue.d.ts +23 -102
- package/dist/SelectStatus.js +38 -38
- package/dist/SelectStatus.js.map +1 -1
- package/dist/SelectStatus.vue.d.ts +227 -47
- package/dist/Skeleton.js.map +1 -1
- package/dist/Skeleton.vue.d.ts +3 -34
- package/dist/Step.js +44 -44
- package/dist/Step.js.map +1 -1
- package/dist/Step.vue.d.ts +4 -43
- package/dist/Stepper.js.map +1 -1
- package/dist/Stepper.vue.d.ts +9 -44
- package/dist/Switch.js.map +1 -1
- package/dist/Switch.vue.d.ts +8 -47
- package/dist/Tab.js +9 -9
- package/dist/Tab.js.map +1 -1
- package/dist/Tab.vue.d.ts +2 -15
- package/dist/TabPanel.js.map +1 -1
- package/dist/TabPanel.vue.d.ts +3 -30
- package/dist/Table.js +53 -59
- package/dist/Table.js.map +1 -1
- package/dist/Table.keys-LHQf6FEH.js.map +1 -1
- package/dist/Table.vue.d.ts +3 -50
- package/dist/TableCell.js +1 -1
- package/dist/TableCell.js.map +1 -1
- package/dist/TableCell.vue.d.ts +3 -32
- package/dist/TableHeaderCell.js +1 -1
- package/dist/TableHeaderCell.js.map +1 -1
- package/dist/TableHeaderCell.vue.d.ts +3 -30
- package/dist/TableHeaderRow.js +47 -45
- package/dist/TableHeaderRow.js.map +1 -1
- package/dist/TableHeaderRow.vue.d.ts +5 -34
- package/dist/TableRow.js +60 -61
- package/dist/TableRow.js.map +1 -1
- package/dist/TableRow.vue.d.ts +7 -48
- package/dist/Tabs.js +2 -2
- package/dist/Tabs.vue.d.ts +4 -31
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js +78 -0
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js.map +1 -0
- package/dist/TextEditor.js +2414 -2420
- package/dist/TextEditor.js.map +1 -1
- package/dist/TextEditor.vue.d.ts +9 -40
- package/dist/Textarea.js +69 -69
- package/dist/Textarea.js.map +1 -1
- package/dist/Textarea.vue.d.ts +9 -44
- 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.keys-EJ4qFNhx.js.map +1 -1
- package/dist/ThumbnailGroup.vue.d.ts +26 -22
- package/dist/Timeline.js.map +1 -1
- package/dist/Timeline.vue.d.ts +3 -32
- 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 +3 -30
- package/dist/Toasts.js.map +1 -1
- package/dist/ToastsPlugin.js +11 -11
- package/dist/ToastsPlugin.js.map +1 -1
- package/dist/Tooltip.js +29 -30
- package/dist/Tooltip.js.map +1 -1
- package/dist/Tooltip.vue.d.ts +11 -43
- package/dist/colors-DDDVvqfQ.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/directives/autofocus.js.map +1 -1
- package/dist/directives/clickoutside.js.map +1 -1
- package/dist/directives/observe.js.map +1 -1
- package/dist/directives/sticky.js.map +1 -1
- package/dist/directives/tooltip.js +3 -3
- package/dist/directives/tooltip.js.map +1 -1
- package/dist/directives/viewable.js +39 -44
- package/dist/directives/viewable.js.map +1 -1
- package/dist/{floating-ui.vue-pzUuloyX.js → floating-ui.vue-CL01Y9ER.js} +2 -2
- package/dist/{floating-ui.vue-pzUuloyX.js.map → floating-ui.vue-CL01Y9ER.js.map} +1 -1
- package/dist/formatDateTime-DG7kBc2T.js +1414 -0
- package/dist/{formatDateTime-Dz8bXV0R.js.map → formatDateTime-DG7kBc2T.js.map} +1 -1
- package/dist/index-D6bxWkZ1.js.map +1 -1
- package/dist/index-XZqpB2_R.js +294 -0
- package/dist/{index-ConQ3o31.js.map → index-XZqpB2_R.js.map} +1 -1
- package/dist/index.js +99 -104
- package/dist/index.js.map +1 -1
- package/dist/isDefined-DzVx0B6k.js.map +1 -1
- package/dist/keys-BEdEsanp.js.map +1 -1
- package/dist/keys-C8Zfr_By.js.map +1 -1
- package/dist/locale.js.map +1 -1
- package/dist/misc-CHQs-G03.js.map +1 -1
- package/dist/obfuscateText.d.ts +1 -1
- package/dist/parseISO-wlfIB_QJ.js.map +1 -1
- package/dist/searchFuzzy-DBDE6jkd.js +408 -0
- package/dist/{searchFuzzy-DRasJ33G.js.map → searchFuzzy-DBDE6jkd.js.map} +1 -1
- package/dist/statusLevels-D8EgtE_L.js.map +1 -1
- package/dist/storage.js.map +1 -1
- package/dist/tailwind-base.d.ts +18 -0
- package/dist/tailwind-base.js +19 -9
- package/dist/tailwind-base.js.map +1 -1
- package/dist/toTimeZone-Coq1oPTt.js.map +1 -1
- package/dist/useConfirmBeforeClosing.js.map +1 -1
- package/dist/useDialog.d.ts +2 -2
- package/dist/useDialog.js +21 -25
- package/dist/useDialog.js.map +1 -1
- package/dist/useGoogleMaps.js +108 -110
- package/dist/useGoogleMaps.js.map +1 -1
- package/dist/useMediaQuery.d.ts +0 -6
- package/dist/useMediaQuery.js +11 -15
- package/dist/useMediaQuery.js.map +1 -1
- package/dist/useModals.d.ts +1 -1
- package/dist/useModals.js.map +1 -1
- package/dist/usePaginationStats-d_q39naC.js.map +1 -1
- package/dist/usePlaidLink.js +20 -27
- package/dist/usePlaidLink.js.map +1 -1
- package/dist/useScriptTag.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 +54 -63
- package/dist/useSortable.js.map +1 -1
- package/dist/useStepper.d.ts +2 -2
- package/dist/useStepper.js +36 -40
- package/dist/useStepper.js.map +1 -1
- package/dist/useToasts.js +23 -23
- package/dist/useToasts.js.map +1 -1
- package/dist/useValidation.js +96 -100
- 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/colorScheme.js +2 -2
- package/dist/utils/colorScheme.js.map +1 -1
- package/dist/utils/createQueryString.js.map +1 -1
- package/dist/utils/createValidDate.js.map +1 -1
- package/dist/utils/formatDateTime.js +1 -1
- package/dist/utils/getContrastingTextColor.js.map +1 -1
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/normalizeDate.js.map +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 +12 -13
- package/tailwind-base.ts +12 -1
- package/types/vite.d.ts +7 -0
- package/types/vitest.d.ts +7 -0
- package/dist/Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js.map +0 -1
- package/dist/MenusPlugin-Bk6UW6o9.js +0 -12
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-CmnBP4i1.js +0 -159
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-CmnBP4i1.js.map +0 -1
- package/dist/formatDateTime-Dz8bXV0R.js +0 -1418
- package/dist/index-ConQ3o31.js +0 -128
- package/dist/searchFuzzy-DRasJ33G.js +0 -409
package/dist/usePlaidLink.js
CHANGED
|
@@ -1,42 +1,35 @@
|
|
|
1
|
-
import { ref as
|
|
2
|
-
import
|
|
3
|
-
const
|
|
4
|
-
function
|
|
5
|
-
const { isLoaded:
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
if (
|
|
1
|
+
import { ref as r, watchSyncEffect as d, toValue as c, computed as s, onUnmounted as f } from "vue";
|
|
2
|
+
import v from "./useScriptTag.js";
|
|
3
|
+
const p = "https://cdn.plaid.com/link/v2/stable/link-initialize.js";
|
|
4
|
+
function L(l) {
|
|
5
|
+
const { isLoaded: t, error: i } = v(p), e = r(null), o = r(!1);
|
|
6
|
+
d(() => {
|
|
7
|
+
const a = c(l);
|
|
8
|
+
if (t.value && !(!a.token && !a.receivedRedirectUri)) {
|
|
9
9
|
if (!window.Plaid)
|
|
10
10
|
throw new Error("Error loading Plaid SDK");
|
|
11
|
-
n(),
|
|
12
|
-
...
|
|
11
|
+
n(), e.value = window.Plaid.create({
|
|
12
|
+
...a,
|
|
13
13
|
onLoad: () => {
|
|
14
|
-
|
|
15
|
-
t.value = !0, (o = e.onLoad) == null || o.call(e);
|
|
14
|
+
o.value = !0, a.onLoad?.();
|
|
16
15
|
}
|
|
17
16
|
});
|
|
18
17
|
}
|
|
19
18
|
});
|
|
20
|
-
const
|
|
21
|
-
() => !
|
|
19
|
+
const u = s(
|
|
20
|
+
() => !i.value && e.value !== null && (t.value || o.value)
|
|
22
21
|
);
|
|
23
22
|
function n() {
|
|
24
|
-
|
|
23
|
+
e.value && (e.value.exit({ force: !0 }), e.value.destroy(), o.value = !1);
|
|
25
24
|
}
|
|
26
|
-
return
|
|
27
|
-
ready:
|
|
28
|
-
error:
|
|
29
|
-
open: () =>
|
|
30
|
-
|
|
31
|
-
return (e = a.value) == null ? void 0 : e.open();
|
|
32
|
-
},
|
|
33
|
-
exit: (e) => {
|
|
34
|
-
var o;
|
|
35
|
-
return (o = a.value) == null ? void 0 : o.exit(e);
|
|
36
|
-
}
|
|
25
|
+
return f(n), {
|
|
26
|
+
ready: u,
|
|
27
|
+
error: i,
|
|
28
|
+
open: () => e.value?.open(),
|
|
29
|
+
exit: (a) => e.value?.exit(a)
|
|
37
30
|
};
|
|
38
31
|
}
|
|
39
32
|
export {
|
|
40
|
-
|
|
33
|
+
L as default
|
|
41
34
|
};
|
|
42
35
|
//# sourceMappingURL=usePlaidLink.js.map
|
package/dist/usePlaidLink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePlaidLink.js","sources":["../src/composables/usePlaidLink/usePlaidLink.ts"],"sourcesContent":["import { computed, MaybeRef, onUnmounted, ref, toValue, watchSyncEffect } from 'vue';\n\nimport { Plaid } from '../../../types/plaid';\nimport useScriptTag from '../useScriptTag/useScriptTag';\n\nconst PLAID_SDK_URL = 'https://cdn.plaid.com/link/v2/stable/link-initialize.js';\n\nexport default function usePlaidLink(options: MaybeRef<Plaid.CreateConfig>) {\n const { isLoaded: isPlaidScriptLoaded, error } = useScriptTag(PLAID_SDK_URL);\n\n const plaid = ref<Plaid.LinkHandler | null>(null);\n const iframeLoaded = ref(false);\n\n // We want to trigger this as soon as options ref changes\n watchSyncEffect(() => {\n const optionsVal = toValue(options);\n\n if (!isPlaidScriptLoaded.value) {\n return;\n }\n\n if (!optionsVal.token && !optionsVal.receivedRedirectUri) {\n return;\n }\n\n if (!window.Plaid) {\n throw new Error('Error loading Plaid SDK');\n }\n\n // destroy & exit existing instances so we don't\n // have multiple Plaid link modals at the same time\n teardown();\n\n plaid.value = window.Plaid.create({\n ...optionsVal,\n onLoad: () => {\n iframeLoaded.value = true;\n optionsVal.onLoad?.();\n },\n });\n });\n\n const ready = computed(\n () => !error.value && plaid.value !== null && (isPlaidScriptLoaded.value || iframeLoaded.value),\n );\n\n function teardown() {\n if (plaid.value) {\n plaid.value.exit({ force: true });\n plaid.value.destroy();\n\n iframeLoaded.value = false;\n }\n }\n\n onUnmounted(teardown);\n\n return {\n ready,\n error,\n open: () => plaid.value?.open(),\n exit: (options?: Plaid.ExitOptions) => plaid.value?.exit(options),\n };\n}\n"],"names":["PLAID_SDK_URL","usePlaidLink","options","isPlaidScriptLoaded","error","useScriptTag","plaid","ref","iframeLoaded","watchSyncEffect","optionsVal","toValue","teardown","
|
|
1
|
+
{"version":3,"file":"usePlaidLink.js","sources":["../src/composables/usePlaidLink/usePlaidLink.ts"],"sourcesContent":["import { computed, MaybeRef, onUnmounted, ref, toValue, watchSyncEffect } from 'vue';\n\nimport { Plaid } from '../../../types/plaid';\nimport useScriptTag from '../useScriptTag/useScriptTag';\n\nconst PLAID_SDK_URL = 'https://cdn.plaid.com/link/v2/stable/link-initialize.js';\n\nexport default function usePlaidLink(options: MaybeRef<Plaid.CreateConfig>) {\n const { isLoaded: isPlaidScriptLoaded, error } = useScriptTag(PLAID_SDK_URL);\n\n const plaid = ref<Plaid.LinkHandler | null>(null);\n const iframeLoaded = ref(false);\n\n // We want to trigger this as soon as options ref changes\n watchSyncEffect(() => {\n const optionsVal = toValue(options);\n\n if (!isPlaidScriptLoaded.value) {\n return;\n }\n\n if (!optionsVal.token && !optionsVal.receivedRedirectUri) {\n return;\n }\n\n if (!window.Plaid) {\n throw new Error('Error loading Plaid SDK');\n }\n\n // destroy & exit existing instances so we don't\n // have multiple Plaid link modals at the same time\n teardown();\n\n plaid.value = window.Plaid.create({\n ...optionsVal,\n onLoad: () => {\n iframeLoaded.value = true;\n optionsVal.onLoad?.();\n },\n });\n });\n\n const ready = computed(\n () => !error.value && plaid.value !== null && (isPlaidScriptLoaded.value || iframeLoaded.value),\n );\n\n function teardown() {\n if (plaid.value) {\n plaid.value.exit({ force: true });\n plaid.value.destroy();\n\n iframeLoaded.value = false;\n }\n }\n\n onUnmounted(teardown);\n\n return {\n ready,\n error,\n open: () => plaid.value?.open(),\n exit: (options?: Plaid.ExitOptions) => plaid.value?.exit(options),\n };\n}\n"],"names":["PLAID_SDK_URL","usePlaidLink","options","isPlaidScriptLoaded","error","useScriptTag","plaid","ref","iframeLoaded","watchSyncEffect","optionsVal","toValue","teardown","ready","computed","onUnmounted"],"mappings":";;AAKA,MAAMA,IAAgB;AAEtB,SAAwBC,EAAaC,GAAuC;AAC1E,QAAM,EAAE,UAAUC,GAAqB,OAAAC,EAAA,IAAUC,EAAaL,CAAa,GAErEM,IAAQC,EAA8B,IAAI,GAC1CC,IAAeD,EAAI,EAAK;AAG9B,EAAAE,EAAgB,MAAM;AACpB,UAAMC,IAAaC,EAAQT,CAAO;AAElC,QAAKC,EAAoB,SAIrB,GAACO,EAAW,SAAS,CAACA,EAAW,sBAIrC;AAAA,UAAI,CAAC,OAAO;AACV,cAAM,IAAI,MAAM,yBAAyB;AAK3C,MAAAE,EAAA,GAEAN,EAAM,QAAQ,OAAO,MAAM,OAAO;AAAA,QAChC,GAAGI;AAAA,QACH,QAAQ,MAAM;AACZ,UAAAF,EAAa,QAAQ,IACrBE,EAAW,SAAA;AAAA,QACb;AAAA,MAAA,CACD;AAAA;AAAA,EACH,CAAC;AAED,QAAMG,IAAQC;AAAA,IACZ,MAAM,CAACV,EAAM,SAASE,EAAM,UAAU,SAASH,EAAoB,SAASK,EAAa;AAAA,EAAA;AAG3F,WAASI,IAAW;AAClB,IAAIN,EAAM,UACRA,EAAM,MAAM,KAAK,EAAE,OAAO,IAAM,GAChCA,EAAM,MAAM,QAAA,GAEZE,EAAa,QAAQ;AAAA,EAEzB;AAEA,SAAAO,EAAYH,CAAQ,GAEb;AAAA,IACL,OAAAC;AAAA,IACA,OAAAT;AAAA,IACA,MAAM,MAAME,EAAM,OAAO,KAAA;AAAA,IACzB,MAAM,CAACJ,MAAgCI,EAAM,OAAO,KAAKJ,CAAO;AAAA,EAAA;AAEpE;"}
|
package/dist/useScriptTag.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScriptTag.js","sources":["../src/composables/useScriptTag/useScriptTag.ts"],"sourcesContent":["import { onMounted, onUnmounted, ref } from 'vue';\n\ntype UseScriptOptions = {\n manual: boolean;\n};\n\nexport default function useScriptTag(url: string, options: UseScriptOptions = { manual: false }) {\n const scriptTag = ref<HTMLScriptElement | null>(null);\n const isLoaded = ref(false);\n const error = ref<Error | null>(null);\n\n const setIsLoaded = () => (isLoaded.value = true);\n const setError = (e: ErrorEvent) => (error.value = e.error);\n\n function loadScript() {\n let el = document.querySelector<HTMLScriptElement>(`script[src=\"${url}\"]`);\n\n if (!el) {\n isLoaded.value = false;\n error.value = null;\n\n el = document.createElement('script');\n\n el.type = 'text/javascript';\n el.async = true;\n el.src = url;\n el.addEventListener('load', setIsLoaded);\n el.addEventListener('error', setError);\n document.head.appendChild(el);\n } else {\n isLoaded.value = true;\n }\n\n scriptTag.value = el;\n }\n\n function unloadScript() {\n if (!document) {\n return;\n }\n\n const elToBeRemoved = document.querySelector<HTMLScriptElement>(`script[src=\"${url}\"]`);\n\n if (elToBeRemoved) {\n elToBeRemoved.removeEventListener('load', setIsLoaded);\n elToBeRemoved.removeEventListener('error', setError);\n\n document.head.removeChild(elToBeRemoved);\n\n scriptTag.value = null;\n isLoaded.value = false;\n }\n }\n\n if (!options.manual) {\n onMounted(loadScript);\n onUnmounted(unloadScript);\n }\n\n return { scriptTag, load: loadScript, unload: unloadScript, isLoaded, error };\n}\n"],"names":["useScriptTag","url","options","scriptTag","ref","isLoaded","error","setIsLoaded","setError","loadScript","el","unloadScript","elToBeRemoved","onMounted","onUnmounted"],"mappings":";AAMA,SAAwBA,EAAaC,GAAaC,IAA4B,EAAE,QAAQ,MAAS;
|
|
1
|
+
{"version":3,"file":"useScriptTag.js","sources":["../src/composables/useScriptTag/useScriptTag.ts"],"sourcesContent":["import { onMounted, onUnmounted, ref } from 'vue';\n\ntype UseScriptOptions = {\n manual: boolean;\n};\n\nexport default function useScriptTag(url: string, options: UseScriptOptions = { manual: false }) {\n const scriptTag = ref<HTMLScriptElement | null>(null);\n const isLoaded = ref(false);\n const error = ref<Error | null>(null);\n\n const setIsLoaded = () => (isLoaded.value = true);\n const setError = (e: ErrorEvent) => (error.value = e.error);\n\n function loadScript() {\n let el = document.querySelector<HTMLScriptElement>(`script[src=\"${url}\"]`);\n\n if (!el) {\n isLoaded.value = false;\n error.value = null;\n\n el = document.createElement('script');\n\n el.type = 'text/javascript';\n el.async = true;\n el.src = url;\n el.addEventListener('load', setIsLoaded);\n el.addEventListener('error', setError);\n document.head.appendChild(el);\n } else {\n isLoaded.value = true;\n }\n\n scriptTag.value = el;\n }\n\n function unloadScript() {\n if (!document) {\n return;\n }\n\n const elToBeRemoved = document.querySelector<HTMLScriptElement>(`script[src=\"${url}\"]`);\n\n if (elToBeRemoved) {\n elToBeRemoved.removeEventListener('load', setIsLoaded);\n elToBeRemoved.removeEventListener('error', setError);\n\n document.head.removeChild(elToBeRemoved);\n\n scriptTag.value = null;\n isLoaded.value = false;\n }\n }\n\n if (!options.manual) {\n onMounted(loadScript);\n onUnmounted(unloadScript);\n }\n\n return { scriptTag, load: loadScript, unload: unloadScript, isLoaded, error };\n}\n"],"names":["useScriptTag","url","options","scriptTag","ref","isLoaded","error","setIsLoaded","setError","loadScript","el","unloadScript","elToBeRemoved","onMounted","onUnmounted"],"mappings":";AAMA,SAAwBA,EAAaC,GAAaC,IAA4B,EAAE,QAAQ,MAAS;AAC/F,QAAMC,IAAYC,EAA8B,IAAI,GAC9CC,IAAWD,EAAI,EAAK,GACpBE,IAAQF,EAAkB,IAAI,GAE9BG,IAAc,MAAOF,EAAS,QAAQ,IACtCG,IAAW,CAAC,MAAmBF,EAAM,QAAQ,EAAE;AAErD,WAASG,IAAa;AACpB,QAAIC,IAAK,SAAS,cAAiC,eAAeT,CAAG,IAAI;AAEzE,IAAKS,IAaHL,EAAS,QAAQ,MAZjBA,EAAS,QAAQ,IACjBC,EAAM,QAAQ,MAEdI,IAAK,SAAS,cAAc,QAAQ,GAEpCA,EAAG,OAAO,mBACVA,EAAG,QAAQ,IACXA,EAAG,MAAMT,GACTS,EAAG,iBAAiB,QAAQH,CAAW,GACvCG,EAAG,iBAAiB,SAASF,CAAQ,GACrC,SAAS,KAAK,YAAYE,CAAE,IAK9BP,EAAU,QAAQO;AAAA,EACpB;AAEA,WAASC,IAAe;AACtB,QAAI,CAAC;AACH;AAGF,UAAMC,IAAgB,SAAS,cAAiC,eAAeX,CAAG,IAAI;AAEtF,IAAIW,MACFA,EAAc,oBAAoB,QAAQL,CAAW,GACrDK,EAAc,oBAAoB,SAASJ,CAAQ,GAEnD,SAAS,KAAK,YAAYI,CAAa,GAEvCT,EAAU,QAAQ,MAClBE,EAAS,QAAQ;AAAA,EAErB;AAEA,SAAKH,EAAQ,WACXW,EAAUJ,CAAU,GACpBK,EAAYH,CAAY,IAGnB,EAAE,WAAAR,GAAW,MAAMM,GAAY,QAAQE,GAAc,UAAAN,GAAU,OAAAC,EAAA;AACxE;"}
|
package/dist/useSearch.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import f from "lodash-es/get";
|
|
2
|
-
import { computed as
|
|
3
|
-
import { i as
|
|
4
|
-
import { normalizeText as
|
|
5
|
-
function S({ items: t, fieldNames:
|
|
6
|
-
const
|
|
2
|
+
import { computed as s } from "vue";
|
|
3
|
+
import { i as l, s as p } from "./searchFuzzy-DBDE6jkd.js";
|
|
4
|
+
import { normalizeText as h } from "./utils/helpers.js";
|
|
5
|
+
function S({ items: t, fieldNames: e, trackBy: a = "id" }) {
|
|
6
|
+
const i = s(() => {
|
|
7
7
|
const r = {};
|
|
8
|
-
return !
|
|
9
|
-
const n = String(
|
|
10
|
-
r[n] =
|
|
8
|
+
return !e || !e.length || t.value.forEach((o) => {
|
|
9
|
+
const n = String(o[a]);
|
|
10
|
+
r[n] = e.map((u) => h(f(o, u.split(".")))).filter(Boolean).join(" ");
|
|
11
11
|
}), r;
|
|
12
12
|
});
|
|
13
|
-
function
|
|
14
|
-
return
|
|
15
|
-
const
|
|
16
|
-
return
|
|
13
|
+
function c(r, o) {
|
|
14
|
+
return o?.fuzzy && l(t.value) ? p(r, t.value, { fieldNames: e }) : t.value.filter((n) => {
|
|
15
|
+
const u = String(n[a]);
|
|
16
|
+
return i.value[u].includes(r.trim().toLowerCase());
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
return {
|
|
20
|
-
searchFor:
|
|
20
|
+
searchFor: c
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
export {
|
package/dist/useSearch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSearch.js","sources":["../src/composables/useSearch/useSearch.ts"],"sourcesContent":["import get from 'lodash-es/get';\nimport { computed } from 'vue';\n\nimport { isListOfObjects } from '../../../types/utils';\nimport { normalizeText } from '../../utils/helpers';\nimport searchFuzzy from '../../utils/searchFuzzy';\nimport { SearchMap, UseSearchArgs } from './useSearch.types';\n\nexport default function useSearch<Item = unknown>({ items, fieldNames, trackBy = 'id' }: UseSearchArgs<Item>) {\n const searchMap = computed<SearchMap>(() => {\n const newSearchMap = {};\n\n if (!fieldNames || !fieldNames.length) {\n return newSearchMap;\n }\n\n items.value.forEach((item) => {\n const itemKey = String(item[trackBy]);\n\n newSearchMap[itemKey] = fieldNames\n .map((fieldName) => {\n return normalizeText(get(item, fieldName.split('.'))); // get the field's value\n })\n .filter(Boolean)\n .join(' ');\n });\n\n return newSearchMap;\n });\n\n /**\n * Filter `items` by the `fieldNames`'s values.\n * @param options.fuzzy - will use fuzzy search if true\n */\n function searchFor(\n searchTerm: string,\n options?: {\n fuzzy?: boolean;\n },\n ): Item[] {\n if (options?.fuzzy && isListOfObjects(items.value)) {\n return searchFuzzy<Item>(searchTerm, items.value, { fieldNames });\n }\n\n return items.value.filter((item) => {\n const itemKey = String(item[trackBy]);\n\n return searchMap.value[itemKey].includes(searchTerm.trim().toLowerCase());\n });\n }\n\n return {\n searchFor,\n };\n}\n\nexport * from './useSearch.types';\n"],"names":["useSearch","items","fieldNames","trackBy","searchMap","computed","newSearchMap","item","itemKey","fieldName","normalizeText","get","searchFor","searchTerm","options","isListOfObjects","searchFuzzy"],"mappings":";;;;AAQA,SAAwBA,EAA0B,EAAE,OAAAC,GAAO,YAAAC,GAAY,SAAAC,IAAU,QAA6B;
|
|
1
|
+
{"version":3,"file":"useSearch.js","sources":["../src/composables/useSearch/useSearch.ts"],"sourcesContent":["import get from 'lodash-es/get';\nimport { computed } from 'vue';\n\nimport { isListOfObjects } from '../../../types/utils';\nimport { normalizeText } from '../../utils/helpers';\nimport searchFuzzy from '../../utils/searchFuzzy';\nimport { SearchMap, UseSearchArgs } from './useSearch.types';\n\nexport default function useSearch<Item = unknown>({ items, fieldNames, trackBy = 'id' }: UseSearchArgs<Item>) {\n const searchMap = computed<SearchMap>(() => {\n const newSearchMap = {};\n\n if (!fieldNames || !fieldNames.length) {\n return newSearchMap;\n }\n\n items.value.forEach((item) => {\n const itemKey = String(item[trackBy]);\n\n newSearchMap[itemKey] = fieldNames\n .map((fieldName) => {\n return normalizeText(get(item, fieldName.split('.'))); // get the field's value\n })\n .filter(Boolean)\n .join(' ');\n });\n\n return newSearchMap;\n });\n\n /**\n * Filter `items` by the `fieldNames`'s values.\n * @param options.fuzzy - will use fuzzy search if true\n */\n function searchFor(\n searchTerm: string,\n options?: {\n fuzzy?: boolean;\n },\n ): Item[] {\n if (options?.fuzzy && isListOfObjects(items.value)) {\n return searchFuzzy<Item>(searchTerm, items.value, { fieldNames });\n }\n\n return items.value.filter((item) => {\n const itemKey = String(item[trackBy]);\n\n return searchMap.value[itemKey].includes(searchTerm.trim().toLowerCase());\n });\n }\n\n return {\n searchFor,\n };\n}\n\nexport * from './useSearch.types';\n"],"names":["useSearch","items","fieldNames","trackBy","searchMap","computed","newSearchMap","item","itemKey","fieldName","normalizeText","get","searchFor","searchTerm","options","isListOfObjects","searchFuzzy"],"mappings":";;;;AAQA,SAAwBA,EAA0B,EAAE,OAAAC,GAAO,YAAAC,GAAY,SAAAC,IAAU,QAA6B;AAC5G,QAAMC,IAAYC,EAAoB,MAAM;AAC1C,UAAMC,IAAe,CAAA;AAErB,WAAI,CAACJ,KAAc,CAACA,EAAW,UAI/BD,EAAM,MAAM,QAAQ,CAACM,MAAS;AAC5B,YAAMC,IAAU,OAAOD,EAAKJ,CAAO,CAAC;AAEpC,MAAAG,EAAaE,CAAO,IAAIN,EACrB,IAAI,CAACO,MACGC,EAAcC,EAAIJ,GAAME,EAAU,MAAM,GAAG,CAAC,CAAC,CACrD,EACA,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,IACb,CAAC,GAEMH;AAAA,EACT,CAAC;AAMD,WAASM,EACPC,GACAC,GAGQ;AACR,WAAIA,GAAS,SAASC,EAAgBd,EAAM,KAAK,IACxCe,EAAkBH,GAAYZ,EAAM,OAAO,EAAE,YAAAC,GAAY,IAG3DD,EAAM,MAAM,OAAO,CAACM,MAAS;AAClC,YAAMC,IAAU,OAAOD,EAAKJ,CAAO,CAAC;AAEpC,aAAOC,EAAU,MAAMI,CAAO,EAAE,SAASK,EAAW,OAAO,aAAa;AAAA,IAC1E,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,WAAAD;AAAA,EAAA;AAEJ;"}
|
package/dist/useSelection.js
CHANGED
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
import { computed as
|
|
2
|
-
function
|
|
3
|
-
items:
|
|
4
|
-
trackBy:
|
|
5
|
-
shouldDisable:
|
|
1
|
+
import { computed as r, toValue as N, ref as T } from "vue";
|
|
2
|
+
function x({
|
|
3
|
+
items: y,
|
|
4
|
+
trackBy: p = "id",
|
|
5
|
+
shouldDisable: u,
|
|
6
6
|
shouldPreselect: o
|
|
7
7
|
}) {
|
|
8
|
-
const
|
|
9
|
-
function
|
|
10
|
-
return String(e[
|
|
8
|
+
const f = r(() => N(y));
|
|
9
|
+
function n(e) {
|
|
10
|
+
return String(e[p]);
|
|
11
11
|
}
|
|
12
|
-
const
|
|
13
|
-
() =>
|
|
14
|
-
(e,
|
|
12
|
+
const l = r(
|
|
13
|
+
() => f.value.reduce(
|
|
14
|
+
(e, c) => (e[n(c)] = c, e),
|
|
15
15
|
{}
|
|
16
16
|
)
|
|
17
|
-
),
|
|
18
|
-
function
|
|
19
|
-
|
|
17
|
+
), t = T(/* @__PURE__ */ new Set());
|
|
18
|
+
function g(e) {
|
|
19
|
+
u?.(l.value[n(e)]) || t.value.add(n(e));
|
|
20
20
|
}
|
|
21
|
-
function
|
|
22
|
-
|
|
21
|
+
function A(e) {
|
|
22
|
+
u?.(l.value[n(e)]) || t.value.delete(n(e));
|
|
23
23
|
}
|
|
24
|
-
function
|
|
25
|
-
if (
|
|
24
|
+
function m(e) {
|
|
25
|
+
if (u?.(l.value[n(e)]))
|
|
26
26
|
return;
|
|
27
|
-
|
|
27
|
+
t.value.has(n(e)) ? t.value.delete(n(e)) : t.value.add(n(e));
|
|
28
28
|
}
|
|
29
|
-
function
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
function v() {
|
|
30
|
+
f.value.forEach((e) => {
|
|
31
|
+
u?.(e) || t.value.add(n(e));
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
function a() {
|
|
35
|
-
typeof
|
|
36
|
-
|
|
37
|
-
}) :
|
|
35
|
+
typeof u == "function" ? t.value.forEach((e, c) => {
|
|
36
|
+
u(l.value[c]) || t.value.delete(c);
|
|
37
|
+
}) : t.value.clear();
|
|
38
38
|
}
|
|
39
|
-
function
|
|
40
|
-
|
|
39
|
+
function E() {
|
|
40
|
+
d.value ? a() : v();
|
|
41
41
|
}
|
|
42
42
|
function i() {
|
|
43
|
-
a(), typeof o == "function" &&
|
|
44
|
-
o(e) &&
|
|
43
|
+
a(), typeof o == "function" && f.value.forEach((e) => {
|
|
44
|
+
o(e) && t.value.add(n(e));
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
|
-
function
|
|
48
|
-
return
|
|
47
|
+
function k(e) {
|
|
48
|
+
return t.value.has(n(e));
|
|
49
49
|
}
|
|
50
|
-
function
|
|
51
|
-
return typeof
|
|
50
|
+
function z(e) {
|
|
51
|
+
return typeof u != "function" ? !1 : u(l.value[n(e)]);
|
|
52
52
|
}
|
|
53
|
-
const
|
|
54
|
-
if (typeof
|
|
55
|
-
return
|
|
56
|
-
for (const e of
|
|
57
|
-
if (!
|
|
53
|
+
const I = r(() => Array.from(t.value.keys()).map((e) => l.value[e])), s = r(() => t.value.size === f.value.length), d = r(() => {
|
|
54
|
+
if (typeof u != "function")
|
|
55
|
+
return s.value;
|
|
56
|
+
for (const e of f.value)
|
|
57
|
+
if (!u(e) && !t.value.has(n(e)))
|
|
58
58
|
return !1;
|
|
59
59
|
return !0;
|
|
60
|
-
}),
|
|
61
|
-
if (typeof
|
|
62
|
-
return
|
|
63
|
-
for (const e of
|
|
64
|
-
if (!
|
|
60
|
+
}), S = r(() => t.value.size > 0), K = r(() => {
|
|
61
|
+
if (typeof u != "function")
|
|
62
|
+
return S.value;
|
|
63
|
+
for (const e of t.value.keys())
|
|
64
|
+
if (!u(l.value[e]))
|
|
65
65
|
return !0;
|
|
66
66
|
return !1;
|
|
67
67
|
});
|
|
68
68
|
return i(), {
|
|
69
|
-
select:
|
|
70
|
-
unselect:
|
|
71
|
-
selectToggle:
|
|
72
|
-
selectAll:
|
|
69
|
+
select: g,
|
|
70
|
+
unselect: A,
|
|
71
|
+
selectToggle: m,
|
|
72
|
+
selectAll: v,
|
|
73
73
|
unselectAll: a,
|
|
74
|
-
selectToggleAll:
|
|
74
|
+
selectToggleAll: E,
|
|
75
75
|
resetSelection: i,
|
|
76
|
-
isSelected:
|
|
77
|
-
isSelectDisabled:
|
|
78
|
-
selectedItems:
|
|
79
|
-
allSelected:
|
|
80
|
-
allNonDisabledSelected:
|
|
81
|
-
someSelected:
|
|
82
|
-
someNonDisabledSelected:
|
|
76
|
+
isSelected: k,
|
|
77
|
+
isSelectDisabled: z,
|
|
78
|
+
selectedItems: I,
|
|
79
|
+
allSelected: s,
|
|
80
|
+
allNonDisabledSelected: d,
|
|
81
|
+
someSelected: S,
|
|
82
|
+
someNonDisabledSelected: K
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
85
|
export {
|
|
86
|
-
|
|
86
|
+
x as default
|
|
87
87
|
};
|
|
88
88
|
//# sourceMappingURL=useSelection.js.map
|
package/dist/useSelection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelection.js","sources":["../src/composables/useSelection/useSelection.ts"],"sourcesContent":["import { computed, ref, toValue } from 'vue';\n\nimport { UseSelection, UseSelectionArgs } from './useSelection.types';\n\nexport default function useSelection<Item extends object>({\n items,\n trackBy = 'id',\n shouldDisable,\n shouldPreselect,\n}: UseSelectionArgs<Item>): UseSelection<Item> {\n const itemsRef = computed(() => toValue(items));\n\n function getItemKey(item: Item) {\n return String(item[trackBy]);\n }\n\n const itemsByKey = computed(() =>\n itemsRef.value.reduce(\n (map, item) => {\n map[getItemKey(item)] = item;\n\n return map;\n },\n {} as { [key: string]: Item },\n ),\n );\n\n /**\n * A set of item keys that are currently selected, regardless if they are disabled\n */\n const selectedSet = ref(new Set<string>());\n\n function select(item: Item) {\n if (shouldDisable?.(itemsByKey.value[getItemKey(item)])) {\n return;\n }\n\n selectedSet.value.add(getItemKey(item));\n }\n\n function unselect(item: Item) {\n if (shouldDisable?.(itemsByKey.value[getItemKey(item)])) {\n return;\n }\n\n selectedSet.value.delete(getItemKey(item));\n }\n\n function selectToggle(item: Item) {\n if (shouldDisable?.(itemsByKey.value[getItemKey(item)])) {\n return;\n }\n\n const isSelected = selectedSet.value.has(getItemKey(item));\n\n if (isSelected) {\n selectedSet.value.delete(getItemKey(item));\n } else {\n selectedSet.value.add(getItemKey(item));\n }\n }\n\n function selectAll() {\n itemsRef.value.forEach((item) => {\n if (!shouldDisable?.(item)) {\n selectedSet.value.add(getItemKey(item));\n }\n });\n }\n\n function unselectAll() {\n if (typeof shouldDisable === 'function') {\n selectedSet.value.forEach((_isSelected, itemKey) => {\n if (!shouldDisable(itemsByKey.value[itemKey])) {\n selectedSet.value.delete(itemKey);\n }\n });\n } else {\n selectedSet.value.clear();\n }\n }\n\n function selectToggleAll() {\n if (allNonDisabledSelected.value) {\n unselectAll();\n } else {\n selectAll();\n }\n }\n\n function resetSelection() {\n unselectAll();\n\n if (typeof shouldPreselect === 'function') {\n itemsRef.value.forEach((item) => {\n if (shouldPreselect(item)) {\n selectedSet.value.add(getItemKey(item));\n }\n });\n }\n }\n\n function isSelected(item: Item) {\n return selectedSet.value.has(getItemKey(item));\n }\n\n function isSelectDisabled(item: Item) {\n if (typeof shouldDisable !== 'function') {\n return false;\n }\n\n return shouldDisable(itemsByKey.value[getItemKey(item)]);\n }\n\n const selectedItems = computed(() => {\n return Array.from(selectedSet.value.keys()).map((itemKey) => itemsByKey.value[itemKey]);\n });\n\n const allSelected = computed(() => {\n return selectedSet.value.size === itemsRef.value.length;\n });\n\n const allNonDisabledSelected = computed(() => {\n if (typeof shouldDisable !== 'function') {\n return allSelected.value;\n }\n\n for (const item of itemsRef.value) {\n if (!shouldDisable(item) && !selectedSet.value.has(getItemKey(item))) {\n return false;\n }\n }\n\n return true;\n });\n\n const someSelected = computed(() => {\n return selectedSet.value.size > 0;\n });\n\n const someNonDisabledSelected = computed(() => {\n if (typeof shouldDisable !== 'function') {\n return someSelected.value;\n }\n\n for (const itemKey of selectedSet.value.keys()) {\n if (!shouldDisable(itemsByKey.value[itemKey])) {\n return true;\n }\n }\n\n return false;\n });\n\n resetSelection();\n\n return {\n select,\n unselect,\n selectToggle,\n selectAll,\n unselectAll,\n selectToggleAll,\n resetSelection,\n isSelected,\n isSelectDisabled,\n selectedItems,\n allSelected,\n allNonDisabledSelected,\n someSelected,\n someNonDisabledSelected,\n };\n}\n\nexport * from './useSelection.types';\n"],"names":["useSelection","items","trackBy","shouldDisable","shouldPreselect","itemsRef","computed","toValue","getItemKey","item","itemsByKey","map","selectedSet","ref","select","unselect","selectToggle","selectAll","unselectAll","_isSelected","itemKey","selectToggleAll","allNonDisabledSelected","resetSelection","isSelected","isSelectDisabled","selectedItems","allSelected","someSelected","someNonDisabledSelected"],"mappings":";AAIA,SAAwBA,EAAkC;AAAA,EACxD,OAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,eAAAC;AAAA,EACA,iBAAAC;AACF,GAA+C;AAC7C,QAAMC,IAAWC,EAAS,MAAMC,EAAQN,CAAK,CAAC;AAE9C,WAASO,EAAWC,GAAY;
|
|
1
|
+
{"version":3,"file":"useSelection.js","sources":["../src/composables/useSelection/useSelection.ts"],"sourcesContent":["import { computed, ref, toValue } from 'vue';\n\nimport { UseSelection, UseSelectionArgs } from './useSelection.types';\n\nexport default function useSelection<Item extends object>({\n items,\n trackBy = 'id',\n shouldDisable,\n shouldPreselect,\n}: UseSelectionArgs<Item>): UseSelection<Item> {\n const itemsRef = computed(() => toValue(items));\n\n function getItemKey(item: Item) {\n return String(item[trackBy]);\n }\n\n const itemsByKey = computed(() =>\n itemsRef.value.reduce(\n (map, item) => {\n map[getItemKey(item)] = item;\n\n return map;\n },\n {} as { [key: string]: Item },\n ),\n );\n\n /**\n * A set of item keys that are currently selected, regardless if they are disabled\n */\n const selectedSet = ref(new Set<string>());\n\n function select(item: Item) {\n if (shouldDisable?.(itemsByKey.value[getItemKey(item)])) {\n return;\n }\n\n selectedSet.value.add(getItemKey(item));\n }\n\n function unselect(item: Item) {\n if (shouldDisable?.(itemsByKey.value[getItemKey(item)])) {\n return;\n }\n\n selectedSet.value.delete(getItemKey(item));\n }\n\n function selectToggle(item: Item) {\n if (shouldDisable?.(itemsByKey.value[getItemKey(item)])) {\n return;\n }\n\n const isSelected = selectedSet.value.has(getItemKey(item));\n\n if (isSelected) {\n selectedSet.value.delete(getItemKey(item));\n } else {\n selectedSet.value.add(getItemKey(item));\n }\n }\n\n function selectAll() {\n itemsRef.value.forEach((item) => {\n if (!shouldDisable?.(item)) {\n selectedSet.value.add(getItemKey(item));\n }\n });\n }\n\n function unselectAll() {\n if (typeof shouldDisable === 'function') {\n selectedSet.value.forEach((_isSelected, itemKey) => {\n if (!shouldDisable(itemsByKey.value[itemKey])) {\n selectedSet.value.delete(itemKey);\n }\n });\n } else {\n selectedSet.value.clear();\n }\n }\n\n function selectToggleAll() {\n if (allNonDisabledSelected.value) {\n unselectAll();\n } else {\n selectAll();\n }\n }\n\n function resetSelection() {\n unselectAll();\n\n if (typeof shouldPreselect === 'function') {\n itemsRef.value.forEach((item) => {\n if (shouldPreselect(item)) {\n selectedSet.value.add(getItemKey(item));\n }\n });\n }\n }\n\n function isSelected(item: Item) {\n return selectedSet.value.has(getItemKey(item));\n }\n\n function isSelectDisabled(item: Item) {\n if (typeof shouldDisable !== 'function') {\n return false;\n }\n\n return shouldDisable(itemsByKey.value[getItemKey(item)]);\n }\n\n const selectedItems = computed(() => {\n return Array.from(selectedSet.value.keys()).map((itemKey) => itemsByKey.value[itemKey]);\n });\n\n const allSelected = computed(() => {\n return selectedSet.value.size === itemsRef.value.length;\n });\n\n const allNonDisabledSelected = computed(() => {\n if (typeof shouldDisable !== 'function') {\n return allSelected.value;\n }\n\n for (const item of itemsRef.value) {\n if (!shouldDisable(item) && !selectedSet.value.has(getItemKey(item))) {\n return false;\n }\n }\n\n return true;\n });\n\n const someSelected = computed(() => {\n return selectedSet.value.size > 0;\n });\n\n const someNonDisabledSelected = computed(() => {\n if (typeof shouldDisable !== 'function') {\n return someSelected.value;\n }\n\n for (const itemKey of selectedSet.value.keys()) {\n if (!shouldDisable(itemsByKey.value[itemKey])) {\n return true;\n }\n }\n\n return false;\n });\n\n resetSelection();\n\n return {\n select,\n unselect,\n selectToggle,\n selectAll,\n unselectAll,\n selectToggleAll,\n resetSelection,\n isSelected,\n isSelectDisabled,\n selectedItems,\n allSelected,\n allNonDisabledSelected,\n someSelected,\n someNonDisabledSelected,\n };\n}\n\nexport * from './useSelection.types';\n"],"names":["useSelection","items","trackBy","shouldDisable","shouldPreselect","itemsRef","computed","toValue","getItemKey","item","itemsByKey","map","selectedSet","ref","select","unselect","selectToggle","selectAll","unselectAll","_isSelected","itemKey","selectToggleAll","allNonDisabledSelected","resetSelection","isSelected","isSelectDisabled","selectedItems","allSelected","someSelected","someNonDisabledSelected"],"mappings":";AAIA,SAAwBA,EAAkC;AAAA,EACxD,OAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,eAAAC;AAAA,EACA,iBAAAC;AACF,GAA+C;AAC7C,QAAMC,IAAWC,EAAS,MAAMC,EAAQN,CAAK,CAAC;AAE9C,WAASO,EAAWC,GAAY;AAC9B,WAAO,OAAOA,EAAKP,CAAO,CAAC;AAAA,EAC7B;AAEA,QAAMQ,IAAaJ;AAAA,IAAS,MAC1BD,EAAS,MAAM;AAAA,MACb,CAACM,GAAKF,OACJE,EAAIH,EAAWC,CAAI,CAAC,IAAIA,GAEjBE;AAAA,MAET,CAAA;AAAA,IAAC;AAAA,EACH,GAMIC,IAAcC,EAAI,oBAAI,KAAa;AAEzC,WAASC,EAAOL,GAAY;AAC1B,IAAIN,IAAgBO,EAAW,MAAMF,EAAWC,CAAI,CAAC,CAAC,KAItDG,EAAY,MAAM,IAAIJ,EAAWC,CAAI,CAAC;AAAA,EACxC;AAEA,WAASM,EAASN,GAAY;AAC5B,IAAIN,IAAgBO,EAAW,MAAMF,EAAWC,CAAI,CAAC,CAAC,KAItDG,EAAY,MAAM,OAAOJ,EAAWC,CAAI,CAAC;AAAA,EAC3C;AAEA,WAASO,EAAaP,GAAY;AAChC,QAAIN,IAAgBO,EAAW,MAAMF,EAAWC,CAAI,CAAC,CAAC;AACpD;AAKF,IAFmBG,EAAY,MAAM,IAAIJ,EAAWC,CAAI,CAAC,IAGvDG,EAAY,MAAM,OAAOJ,EAAWC,CAAI,CAAC,IAEzCG,EAAY,MAAM,IAAIJ,EAAWC,CAAI,CAAC;AAAA,EAE1C;AAEA,WAASQ,IAAY;AACnB,IAAAZ,EAAS,MAAM,QAAQ,CAACI,MAAS;AAC/B,MAAKN,IAAgBM,CAAI,KACvBG,EAAY,MAAM,IAAIJ,EAAWC,CAAI,CAAC;AAAA,IAE1C,CAAC;AAAA,EACH;AAEA,WAASS,IAAc;AACrB,IAAI,OAAOf,KAAkB,aAC3BS,EAAY,MAAM,QAAQ,CAACO,GAAaC,MAAY;AAClD,MAAKjB,EAAcO,EAAW,MAAMU,CAAO,CAAC,KAC1CR,EAAY,MAAM,OAAOQ,CAAO;AAAA,IAEpC,CAAC,IAEDR,EAAY,MAAM,MAAA;AAAA,EAEtB;AAEA,WAASS,IAAkB;AACzB,IAAIC,EAAuB,QACzBJ,EAAA,IAEAD,EAAA;AAAA,EAEJ;AAEA,WAASM,IAAiB;AACxB,IAAAL,EAAA,GAEI,OAAOd,KAAoB,cAC7BC,EAAS,MAAM,QAAQ,CAACI,MAAS;AAC/B,MAAIL,EAAgBK,CAAI,KACtBG,EAAY,MAAM,IAAIJ,EAAWC,CAAI,CAAC;AAAA,IAE1C,CAAC;AAAA,EAEL;AAEA,WAASe,EAAWf,GAAY;AAC9B,WAAOG,EAAY,MAAM,IAAIJ,EAAWC,CAAI,CAAC;AAAA,EAC/C;AAEA,WAASgB,EAAiBhB,GAAY;AACpC,WAAI,OAAON,KAAkB,aACpB,KAGFA,EAAcO,EAAW,MAAMF,EAAWC,CAAI,CAAC,CAAC;AAAA,EACzD;AAEA,QAAMiB,IAAgBpB,EAAS,MACtB,MAAM,KAAKM,EAAY,MAAM,KAAA,CAAM,EAAE,IAAI,CAACQ,MAAYV,EAAW,MAAMU,CAAO,CAAC,CACvF,GAEKO,IAAcrB,EAAS,MACpBM,EAAY,MAAM,SAASP,EAAS,MAAM,MAClD,GAEKiB,IAAyBhB,EAAS,MAAM;AAC5C,QAAI,OAAOH,KAAkB;AAC3B,aAAOwB,EAAY;AAGrB,eAAWlB,KAAQJ,EAAS;AAC1B,UAAI,CAACF,EAAcM,CAAI,KAAK,CAACG,EAAY,MAAM,IAAIJ,EAAWC,CAAI,CAAC;AACjE,eAAO;AAIX,WAAO;AAAA,EACT,CAAC,GAEKmB,IAAetB,EAAS,MACrBM,EAAY,MAAM,OAAO,CACjC,GAEKiB,IAA0BvB,EAAS,MAAM;AAC7C,QAAI,OAAOH,KAAkB;AAC3B,aAAOyB,EAAa;AAGtB,eAAWR,KAAWR,EAAY,MAAM,KAAA;AACtC,UAAI,CAACT,EAAcO,EAAW,MAAMU,CAAO,CAAC;AAC1C,eAAO;AAIX,WAAO;AAAA,EACT,CAAC;AAED,SAAAG,EAAA,GAEO;AAAA,IACL,QAAAT;AAAA,IACA,UAAAC;AAAA,IACA,cAAAC;AAAA,IACA,WAAAC;AAAA,IACA,aAAAC;AAAA,IACA,iBAAAG;AAAA,IACA,gBAAAE;AAAA,IACA,YAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,wBAAAL;AAAA,IACA,cAAAM;AAAA,IACA,yBAAAC;AAAA,EAAA;AAEJ;"}
|
package/dist/useSortable.js
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { u as
|
|
3
|
-
import { isRef as
|
|
4
|
-
function
|
|
5
|
-
if (
|
|
6
|
-
const r =
|
|
1
|
+
import d from "@leaflink/snitch";
|
|
2
|
+
import { u as C } from "./index-XZqpB2_R.js";
|
|
3
|
+
import { isRef as I, toValue as D, nextTick as w, computed as i, ref as y, watch as A, onMounted as S, onBeforeUnmount as $ } from "vue";
|
|
4
|
+
function G({ list: o, from: l, to: e }) {
|
|
5
|
+
if (l === e) return;
|
|
6
|
+
const r = I(o), a = r ? [...D(o)] : D(o);
|
|
7
7
|
if (e >= 0 && e < a.length) {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
a.splice(e, 0,
|
|
8
|
+
const s = a.splice(l, 1)[0];
|
|
9
|
+
w(() => {
|
|
10
|
+
a.splice(e, 0, s), r && (o.value = a);
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
function
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
e.classList.add(...s), e.style.position = "absolute", e.style.top = "-9999px", e.style.listStyle = "none", e.setAttribute("data-test", `${e.dataset.test}|ghost`), e.removeAttribute("draggable"), document.body.appendChild(e), (a = n.dataTransfer) == null || a.setDragImage(e, e.offsetWidth / 2, e.offsetHeight / 2);
|
|
14
|
+
function O(o, l) {
|
|
15
|
+
const e = v(o.target).cloneNode(!0);
|
|
16
|
+
e.classList.add(...l), e.style.position = "absolute", e.style.top = "-9999px", e.style.listStyle = "none", e.setAttribute("data-test", `${e.dataset.test}|ghost`), e.removeAttribute("draggable"), document.body.appendChild(e), o.dataTransfer?.setDragImage(e, e.offsetWidth / 2, e.offsetHeight / 2);
|
|
18
17
|
function r() {
|
|
19
18
|
requestAnimationFrame(() => {
|
|
20
19
|
document.body.removeChild(e);
|
|
@@ -25,45 +24,38 @@ function B(n, s) {
|
|
|
25
24
|
cleanupGhostElement: r
|
|
26
25
|
};
|
|
27
26
|
}
|
|
28
|
-
function
|
|
29
|
-
const
|
|
30
|
-
if (!
|
|
31
|
-
return
|
|
27
|
+
function v(o) {
|
|
28
|
+
const l = o?.closest("[draggable=true]");
|
|
29
|
+
if (!l) throw new Error("Draggable element not found");
|
|
30
|
+
return l;
|
|
32
31
|
}
|
|
33
|
-
function
|
|
34
|
-
isEnabled:
|
|
35
|
-
sortInPlace:
|
|
32
|
+
function k({
|
|
33
|
+
isEnabled: o = !0,
|
|
34
|
+
sortInPlace: l = !0,
|
|
36
35
|
...e
|
|
37
36
|
}) {
|
|
38
|
-
const r = i(() =>
|
|
39
|
-
var t;
|
|
40
|
-
return ((t = e.ghostClass) == null ? void 0 : t.split(" ")) || [];
|
|
41
|
-
}), f = i(() => {
|
|
42
|
-
var t;
|
|
43
|
-
return ((t = e.chosenClass) == null ? void 0 : t.split(" ")) || [];
|
|
44
|
-
}), g = (t) => {
|
|
45
|
-
var l;
|
|
37
|
+
const r = i(() => C(e.ref)), a = y(-1), s = y(-1), b = i(() => a.value !== -1), T = i(() => e.ghostClass?.split(" ") || []), f = i(() => e.chosenClass?.split(" ") || []), g = (t) => {
|
|
46
38
|
if (!(!t.dataTransfer || !r.value)) {
|
|
47
39
|
t.dataTransfer.setData("text/plain", ""), t.dataTransfer.effectAllowed = "move";
|
|
48
40
|
try {
|
|
49
|
-
const
|
|
50
|
-
if (
|
|
51
|
-
const { cleanupGhostElement:
|
|
52
|
-
|
|
53
|
-
} catch (
|
|
54
|
-
|
|
41
|
+
const n = v(t.target), u = Array.from(r.value.children).indexOf(n);
|
|
42
|
+
if (u === -1) return;
|
|
43
|
+
const { cleanupGhostElement: c } = O(t, T.value);
|
|
44
|
+
s.value = a.value = u, n.classList.add(...f.value), c(), e.onDragStart?.({ ...t, oldIndex: u });
|
|
45
|
+
} catch (n) {
|
|
46
|
+
d.error(`Error in drag start: ${n}`);
|
|
55
47
|
}
|
|
56
48
|
}
|
|
57
49
|
}, m = (t) => {
|
|
58
50
|
if (!(!t.dataTransfer || !r.value)) {
|
|
59
51
|
t.dataTransfer.dropEffect = "move";
|
|
60
52
|
try {
|
|
61
|
-
const
|
|
62
|
-
if (
|
|
63
|
-
const
|
|
64
|
-
r.value.insertBefore(
|
|
65
|
-
} catch (
|
|
66
|
-
|
|
53
|
+
const n = v(t.target), u = Array.from(r.value.children).indexOf(n);
|
|
54
|
+
if (u === -1 || u === a.value) return;
|
|
55
|
+
const c = r.value.children[a.value];
|
|
56
|
+
r.value.insertBefore(c, u < a.value ? n : n.nextSibling), a.value = u;
|
|
57
|
+
} catch (n) {
|
|
58
|
+
d.error(`Error in drag enter: ${n}`);
|
|
67
59
|
}
|
|
68
60
|
}
|
|
69
61
|
};
|
|
@@ -73,44 +65,43 @@ function q({
|
|
|
73
65
|
function E(t) {
|
|
74
66
|
if (t.preventDefault(), !!r.value)
|
|
75
67
|
try {
|
|
76
|
-
if (
|
|
77
|
-
|
|
78
|
-
} catch (
|
|
79
|
-
|
|
68
|
+
if (s.value === a.value || !l) return;
|
|
69
|
+
G({ list: e.list, from: s.value, to: a.value });
|
|
70
|
+
} catch (n) {
|
|
71
|
+
d.error(`Error in drag drop: ${n}`);
|
|
80
72
|
}
|
|
81
73
|
}
|
|
82
|
-
function
|
|
83
|
-
var l;
|
|
74
|
+
function p(t) {
|
|
84
75
|
try {
|
|
85
|
-
|
|
76
|
+
v(t.target).classList.remove(...f.value), e.onDragEnd?.({
|
|
86
77
|
...t,
|
|
87
|
-
oldIndex:
|
|
78
|
+
oldIndex: s.value,
|
|
88
79
|
newIndex: a.value
|
|
89
|
-
}),
|
|
90
|
-
} catch (
|
|
91
|
-
|
|
80
|
+
}), s.value = a.value = -1;
|
|
81
|
+
} catch (n) {
|
|
82
|
+
d.error(`Error in drag end: ${n}`);
|
|
92
83
|
}
|
|
93
84
|
}
|
|
94
|
-
|
|
95
|
-
() =>
|
|
96
|
-
() =>
|
|
85
|
+
A(
|
|
86
|
+
() => o,
|
|
87
|
+
() => o ? L() : x()
|
|
97
88
|
);
|
|
98
|
-
function
|
|
99
|
-
r.value && (r.value.addEventListener("dragstart", g), r.value.addEventListener("dragend",
|
|
89
|
+
function L() {
|
|
90
|
+
r.value && (r.value.addEventListener("dragstart", g), r.value.addEventListener("dragend", p), r.value.addEventListener("dragenter", m), r.value.addEventListener("dragover", h), r.value.addEventListener("drop", E));
|
|
100
91
|
}
|
|
101
92
|
function x() {
|
|
102
|
-
r.value && (r.value.removeEventListener("dragstart", g), r.value.removeEventListener("dragend",
|
|
93
|
+
r.value && (r.value.removeEventListener("dragstart", g), r.value.removeEventListener("dragend", p), r.value.removeEventListener("dragenter", m), r.value.removeEventListener("dragover", h), r.value.removeEventListener("drop", E));
|
|
103
94
|
}
|
|
104
|
-
return
|
|
105
|
-
|
|
106
|
-
}),
|
|
95
|
+
return S(() => {
|
|
96
|
+
o && L();
|
|
97
|
+
}), $(x), {
|
|
107
98
|
isDragging: b,
|
|
108
|
-
oldIndex:
|
|
99
|
+
oldIndex: s,
|
|
109
100
|
newIndex: a
|
|
110
101
|
};
|
|
111
102
|
}
|
|
112
103
|
export {
|
|
113
|
-
|
|
114
|
-
|
|
104
|
+
k as default,
|
|
105
|
+
G as moveSortableElements
|
|
115
106
|
};
|
|
116
107
|
//# sourceMappingURL=useSortable.js.map
|
package/dist/useSortable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSortable.js","sources":["../src/composables/useSortable/useSortable.utils.ts","../src/composables/useSortable/useSortable.ts"],"sourcesContent":["import { isRef, nextTick, Ref, toValue } from 'vue';\n\nimport { MoveSortableElementsOptions } from './useSortable.types';\n\n/**\n * Move sortable elements in the list\n * @param list List of sortable elements\n * @param from Original element position\n * @param to New element position\n */\nexport function moveSortableElements<ListItem>({ list, from, to }: MoveSortableElementsOptions<ListItem>): void {\n if (from === to) return;\n\n const _listIsRef = isRef(list);\n // When the list is a ref, make a shallow copy of it to avoid repeatedly triggering side effects when moving elements\n const listCopy = _listIsRef ? [...toValue(list)] : toValue(list);\n\n if (to >= 0 && to < listCopy.length) {\n const element = listCopy.splice(from, 1)[0];\n nextTick(() => {\n listCopy.splice(to, 0, element);\n // When list is ref, assign listCopy to list.value\n if (_listIsRef) (list as Ref).value = listCopy;\n });\n }\n}\n\n/**\n * Create a ghost element for dragging, which is the element that follows the cursor while dragging\n * @param e Drag event\n * @param ghostClass Custom classes to be added to the ghost element\n * @returns Ghost element and cleanup function\n */\nexport function createGhostElement(e: DragEvent, ghostClass: string[]) {\n const ghost = getValidDragTarget(e.target as HTMLElement).cloneNode(true) as HTMLElement;\n\n ghost.classList.add(...ghostClass);\n\n ghost.style.position = 'absolute';\n ghost.style.top = '-9999px';\n ghost.style.listStyle = 'none';\n ghost.setAttribute('data-test', `${ghost.dataset.test}|ghost`);\n ghost.removeAttribute('draggable');\n\n document.body.appendChild(ghost);\n\n e.dataTransfer?.setDragImage(ghost, ghost.offsetWidth / 2, ghost.offsetHeight / 2);\n\n function cleanupGhostElement() {\n requestAnimationFrame(() => {\n document.body.removeChild(ghost);\n });\n }\n\n return {\n ghost,\n cleanupGhostElement,\n };\n}\n\n/**\n * Get the valid draggable target element\n * @param element\n * @returns Draggable element\n */\nexport function getValidDragTarget(element: HTMLElement | null) {\n const dragElement = element?.closest<HTMLElement>('[draggable=true]');\n if (!dragElement) throw new Error('Draggable element not found');\n return dragElement;\n}\n","import logger from '@leaflink/snitch';\nimport { unrefElement } from '@vueuse/core';\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue';\n\nimport type { UseSortableOptions, UseSortableReturn } from './useSortable.types';\nimport { createGhostElement, getValidDragTarget, moveSortableElements } from './useSortable.utils';\n\nexport * from './useSortable.types';\nexport { moveSortableElements } from './useSortable.utils';\n\nexport default function useSortable<SortableItem>({\n isEnabled = true,\n sortInPlace = true,\n ...options\n}: UseSortableOptions<SortableItem>): UseSortableReturn {\n const parentEl = computed(() => unrefElement(options.ref));\n\n const newIndex = ref(-1);\n const oldIndex = ref(-1);\n\n const isDragging = computed(() => newIndex.value !== -1);\n\n const ghostClasses = computed(() => options.ghostClass?.split(' ') || []);\n const chosenClasses = computed(() => options.chosenClass?.split(' ') || []);\n\n const handleDragStart = (e: DragEvent) => {\n if (!e.dataTransfer || !parentEl.value) return;\n e.dataTransfer.setData('text/plain', ''); // Required for Firefox\n e.dataTransfer.effectAllowed = 'move';\n\n try {\n const target = getValidDragTarget(e.target as HTMLElement);\n\n const index = Array.from(parentEl.value.children).indexOf(target);\n if (index === -1) return;\n\n const { cleanupGhostElement } = createGhostElement(e, ghostClasses.value);\n\n oldIndex.value = newIndex.value = index;\n\n target.classList.add(...chosenClasses.value);\n\n cleanupGhostElement();\n\n options.onDragStart?.({ ...e, oldIndex: index });\n } catch (error) {\n logger.error(`Error in drag start: ${error}`);\n }\n };\n\n const handleDragEnter = (e: DragEvent) => {\n if (!e.dataTransfer || !parentEl.value) return;\n e.dataTransfer.dropEffect = 'move';\n\n try {\n const target = getValidDragTarget(e.target as HTMLElement);\n\n const index = Array.from(parentEl.value.children).indexOf(target);\n if (index === -1 || index === newIndex.value) return;\n\n const draggedEl = parentEl.value.children[newIndex.value];\n parentEl.value.insertBefore(draggedEl, index < newIndex.value ? target : target.nextSibling);\n\n newIndex.value = index;\n } catch (error) {\n logger.error(`Error in drag enter: ${error}`);\n }\n };\n\n function handleDragOver(e: DragEvent) {\n e.preventDefault(); // Required to allow dropping\n }\n\n function handleDrop(e: DragEvent) {\n e.preventDefault();\n\n if (!parentEl.value) return;\n\n try {\n if (oldIndex.value === newIndex.value || !sortInPlace) return;\n moveSortableElements({ list: options.list, from: oldIndex.value, to: newIndex.value });\n } catch (error) {\n logger.error(`Error in drag drop: ${error}`);\n }\n }\n\n function handleDragEnd(e: DragEvent) {\n try {\n const target = getValidDragTarget(e.target as HTMLElement);\n\n target.classList.remove(...chosenClasses.value);\n\n options.onDragEnd?.({\n ...e,\n oldIndex: oldIndex.value,\n newIndex: newIndex.value,\n });\n\n oldIndex.value = newIndex.value = -1;\n } catch (error) {\n logger.error(`Error in drag end: ${error}`);\n }\n }\n\n watch(\n () => isEnabled,\n () => (isEnabled ? setupListeners() : removeListeners()),\n );\n\n function setupListeners() {\n if (!parentEl.value) return;\n\n parentEl.value.addEventListener('dragstart', handleDragStart);\n parentEl.value.addEventListener('dragend', handleDragEnd);\n parentEl.value.addEventListener('dragenter', handleDragEnter);\n parentEl.value.addEventListener('dragover', handleDragOver);\n parentEl.value.addEventListener('drop', handleDrop);\n }\n\n function removeListeners() {\n if (!parentEl.value) return;\n\n parentEl.value.removeEventListener('dragstart', handleDragStart);\n parentEl.value.removeEventListener('dragend', handleDragEnd);\n parentEl.value.removeEventListener('dragenter', handleDragEnter);\n parentEl.value.removeEventListener('dragover', handleDragOver);\n parentEl.value.removeEventListener('drop', handleDrop);\n }\n\n onMounted(() => {\n if (!isEnabled) return;\n setupListeners();\n });\n\n onBeforeUnmount(removeListeners);\n\n return {\n isDragging,\n oldIndex,\n newIndex,\n };\n}\n"],"names":["moveSortableElements","list","from","to","_listIsRef","isRef","listCopy","toValue","element","nextTick","createGhostElement","e","ghostClass","ghost","getValidDragTarget","_a","cleanupGhostElement","dragElement","useSortable","isEnabled","sortInPlace","options","parentEl","computed","unrefElement","newIndex","ref","oldIndex","isDragging","ghostClasses","chosenClasses","handleDragStart","target","index","error","logger","handleDragEnter","draggedEl","handleDragOver","handleDrop","handleDragEnd","watch","setupListeners","removeListeners","onMounted","onBeforeUnmount"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSortable.js","sources":["../src/composables/useSortable/useSortable.utils.ts","../src/composables/useSortable/useSortable.ts"],"sourcesContent":["import { isRef, nextTick, Ref, toValue } from 'vue';\n\nimport { MoveSortableElementsOptions } from './useSortable.types';\n\n/**\n * Move sortable elements in the list\n * @param list List of sortable elements\n * @param from Original element position\n * @param to New element position\n */\nexport function moveSortableElements<ListItem>({ list, from, to }: MoveSortableElementsOptions<ListItem>): void {\n if (from === to) return;\n\n const _listIsRef = isRef(list);\n // When the list is a ref, make a shallow copy of it to avoid repeatedly triggering side effects when moving elements\n const listCopy = _listIsRef ? [...toValue(list)] : toValue(list);\n\n if (to >= 0 && to < listCopy.length) {\n const element = listCopy.splice(from, 1)[0];\n nextTick(() => {\n listCopy.splice(to, 0, element);\n // When list is ref, assign listCopy to list.value\n if (_listIsRef) (list as Ref).value = listCopy;\n });\n }\n}\n\n/**\n * Create a ghost element for dragging, which is the element that follows the cursor while dragging\n * @param e Drag event\n * @param ghostClass Custom classes to be added to the ghost element\n * @returns Ghost element and cleanup function\n */\nexport function createGhostElement(e: DragEvent, ghostClass: string[]) {\n const ghost = getValidDragTarget(e.target as HTMLElement).cloneNode(true) as HTMLElement;\n\n ghost.classList.add(...ghostClass);\n\n ghost.style.position = 'absolute';\n ghost.style.top = '-9999px';\n ghost.style.listStyle = 'none';\n ghost.setAttribute('data-test', `${ghost.dataset.test}|ghost`);\n ghost.removeAttribute('draggable');\n\n document.body.appendChild(ghost);\n\n e.dataTransfer?.setDragImage(ghost, ghost.offsetWidth / 2, ghost.offsetHeight / 2);\n\n function cleanupGhostElement() {\n requestAnimationFrame(() => {\n document.body.removeChild(ghost);\n });\n }\n\n return {\n ghost,\n cleanupGhostElement,\n };\n}\n\n/**\n * Get the valid draggable target element\n * @param element\n * @returns Draggable element\n */\nexport function getValidDragTarget(element: HTMLElement | null) {\n const dragElement = element?.closest<HTMLElement>('[draggable=true]');\n if (!dragElement) throw new Error('Draggable element not found');\n return dragElement;\n}\n","import logger from '@leaflink/snitch';\nimport { unrefElement } from '@vueuse/core';\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue';\n\nimport type { UseSortableOptions, UseSortableReturn } from './useSortable.types';\nimport { createGhostElement, getValidDragTarget, moveSortableElements } from './useSortable.utils';\n\nexport * from './useSortable.types';\nexport { moveSortableElements } from './useSortable.utils';\n\nexport default function useSortable<SortableItem>({\n isEnabled = true,\n sortInPlace = true,\n ...options\n}: UseSortableOptions<SortableItem>): UseSortableReturn {\n const parentEl = computed(() => unrefElement(options.ref));\n\n const newIndex = ref(-1);\n const oldIndex = ref(-1);\n\n const isDragging = computed(() => newIndex.value !== -1);\n\n const ghostClasses = computed(() => options.ghostClass?.split(' ') || []);\n const chosenClasses = computed(() => options.chosenClass?.split(' ') || []);\n\n const handleDragStart = (e: DragEvent) => {\n if (!e.dataTransfer || !parentEl.value) return;\n e.dataTransfer.setData('text/plain', ''); // Required for Firefox\n e.dataTransfer.effectAllowed = 'move';\n\n try {\n const target = getValidDragTarget(e.target as HTMLElement);\n\n const index = Array.from(parentEl.value.children).indexOf(target);\n if (index === -1) return;\n\n const { cleanupGhostElement } = createGhostElement(e, ghostClasses.value);\n\n oldIndex.value = newIndex.value = index;\n\n target.classList.add(...chosenClasses.value);\n\n cleanupGhostElement();\n\n options.onDragStart?.({ ...e, oldIndex: index });\n } catch (error) {\n logger.error(`Error in drag start: ${error}`);\n }\n };\n\n const handleDragEnter = (e: DragEvent) => {\n if (!e.dataTransfer || !parentEl.value) return;\n e.dataTransfer.dropEffect = 'move';\n\n try {\n const target = getValidDragTarget(e.target as HTMLElement);\n\n const index = Array.from(parentEl.value.children).indexOf(target);\n if (index === -1 || index === newIndex.value) return;\n\n const draggedEl = parentEl.value.children[newIndex.value];\n parentEl.value.insertBefore(draggedEl, index < newIndex.value ? target : target.nextSibling);\n\n newIndex.value = index;\n } catch (error) {\n logger.error(`Error in drag enter: ${error}`);\n }\n };\n\n function handleDragOver(e: DragEvent) {\n e.preventDefault(); // Required to allow dropping\n }\n\n function handleDrop(e: DragEvent) {\n e.preventDefault();\n\n if (!parentEl.value) return;\n\n try {\n if (oldIndex.value === newIndex.value || !sortInPlace) return;\n moveSortableElements({ list: options.list, from: oldIndex.value, to: newIndex.value });\n } catch (error) {\n logger.error(`Error in drag drop: ${error}`);\n }\n }\n\n function handleDragEnd(e: DragEvent) {\n try {\n const target = getValidDragTarget(e.target as HTMLElement);\n\n target.classList.remove(...chosenClasses.value);\n\n options.onDragEnd?.({\n ...e,\n oldIndex: oldIndex.value,\n newIndex: newIndex.value,\n });\n\n oldIndex.value = newIndex.value = -1;\n } catch (error) {\n logger.error(`Error in drag end: ${error}`);\n }\n }\n\n watch(\n () => isEnabled,\n () => (isEnabled ? setupListeners() : removeListeners()),\n );\n\n function setupListeners() {\n if (!parentEl.value) return;\n\n parentEl.value.addEventListener('dragstart', handleDragStart);\n parentEl.value.addEventListener('dragend', handleDragEnd);\n parentEl.value.addEventListener('dragenter', handleDragEnter);\n parentEl.value.addEventListener('dragover', handleDragOver);\n parentEl.value.addEventListener('drop', handleDrop);\n }\n\n function removeListeners() {\n if (!parentEl.value) return;\n\n parentEl.value.removeEventListener('dragstart', handleDragStart);\n parentEl.value.removeEventListener('dragend', handleDragEnd);\n parentEl.value.removeEventListener('dragenter', handleDragEnter);\n parentEl.value.removeEventListener('dragover', handleDragOver);\n parentEl.value.removeEventListener('drop', handleDrop);\n }\n\n onMounted(() => {\n if (!isEnabled) return;\n setupListeners();\n });\n\n onBeforeUnmount(removeListeners);\n\n return {\n isDragging,\n oldIndex,\n newIndex,\n };\n}\n"],"names":["moveSortableElements","list","from","to","_listIsRef","isRef","listCopy","toValue","element","nextTick","createGhostElement","e","ghostClass","ghost","getValidDragTarget","cleanupGhostElement","dragElement","useSortable","isEnabled","sortInPlace","options","parentEl","computed","unrefElement","newIndex","ref","oldIndex","isDragging","ghostClasses","chosenClasses","handleDragStart","target","index","error","logger","handleDragEnter","draggedEl","handleDragOver","handleDrop","handleDragEnd","watch","setupListeners","removeListeners","onMounted","onBeforeUnmount"],"mappings":"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"}
|
package/dist/useStepper.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ComputedRef } from 'vue';
|
|
2
2
|
import { Ref } from 'vue';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
declare interface StepDefinition {
|
|
5
5
|
completed: boolean;
|
|
6
6
|
substeps: Array<Omit<StepDefinition, 'substeps'>>;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
declare interface StepperOptions {
|
|
10
10
|
/**
|
|
11
11
|
* If true, the stepper will prevent skipping steps
|
|
12
12
|
*/
|