tracked-instance 1.0.19 → 1.0.20
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/dist/index.mjs +9 -9
- package/dist/types/collection.d.ts +4 -4
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1675,39 +1675,40 @@ function useTrackedInstance(initialData) {
|
|
|
1675
1675
|
}
|
|
1676
1676
|
|
|
1677
1677
|
// src/collection.ts
|
|
1678
|
-
import { computed as computed2,
|
|
1678
|
+
import { computed as computed2, markRaw, ref } from "vue";
|
|
1679
1679
|
var useCollection = (createItemMeta = () => void 0) => {
|
|
1680
|
-
const items =
|
|
1680
|
+
const items = ref([]);
|
|
1681
1681
|
const isDirty = computed2(
|
|
1682
|
-
() => items.value.some(({
|
|
1682
|
+
() => items.value.some(({
|
|
1683
|
+
instance,
|
|
1684
|
+
isRemoved,
|
|
1685
|
+
isNew
|
|
1686
|
+
}) => instance.isDirty.value || isNew.value || isRemoved.value)
|
|
1683
1687
|
);
|
|
1684
1688
|
const createItem = (item, isNew) => {
|
|
1685
1689
|
const instance = useTrackedInstance(item);
|
|
1686
|
-
return {
|
|
1690
|
+
return markRaw({
|
|
1687
1691
|
isRemoved: ref(false),
|
|
1688
1692
|
isNew: ref(isNew),
|
|
1689
1693
|
instance,
|
|
1690
1694
|
meta: createItemMeta(instance)
|
|
1691
|
-
};
|
|
1695
|
+
});
|
|
1692
1696
|
};
|
|
1693
1697
|
const add = (item, index = items.value.length) => {
|
|
1694
1698
|
const newItem = createItem(item, true);
|
|
1695
1699
|
items.value.splice(index, 0, newItem);
|
|
1696
|
-
triggerRef(items);
|
|
1697
1700
|
return newItem;
|
|
1698
1701
|
};
|
|
1699
1702
|
const remove = (index, isHardRemove = false) => {
|
|
1700
1703
|
const item = items.value[index];
|
|
1701
1704
|
if (item.isNew.value || isHardRemove) {
|
|
1702
1705
|
items.value.splice(index, 1);
|
|
1703
|
-
triggerRef(items);
|
|
1704
1706
|
} else {
|
|
1705
1707
|
items.value[index].isRemoved.value = true;
|
|
1706
1708
|
}
|
|
1707
1709
|
};
|
|
1708
1710
|
const loadData = (loadedItems) => {
|
|
1709
1711
|
items.value = loadedItems.map((item) => createItem(item, false));
|
|
1710
|
-
triggerRef(items);
|
|
1711
1712
|
};
|
|
1712
1713
|
const reset = () => {
|
|
1713
1714
|
items.value = items.value.filter(({ isNew }) => !isNew.value);
|
|
@@ -1715,7 +1716,6 @@ var useCollection = (createItemMeta = () => void 0) => {
|
|
|
1715
1716
|
item.isRemoved.value = false;
|
|
1716
1717
|
item.instance.reset();
|
|
1717
1718
|
}
|
|
1718
|
-
triggerRef(items);
|
|
1719
1719
|
};
|
|
1720
1720
|
return {
|
|
1721
1721
|
items,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { ComputedRef,
|
|
1
|
+
import { ComputedRef, Raw, Ref } from 'vue';
|
|
2
2
|
import { TrackedInstance } from './tracked-instance';
|
|
3
|
-
export
|
|
3
|
+
export type CollectionItem<Item, Meta = undefined> = Raw<{
|
|
4
4
|
instance: TrackedInstance<Item>;
|
|
5
5
|
meta: Meta;
|
|
6
6
|
isRemoved: Ref<boolean>;
|
|
7
7
|
isNew: Ref<boolean>;
|
|
8
|
-
}
|
|
8
|
+
}>;
|
|
9
9
|
export interface Collection<Item, Meta = undefined> {
|
|
10
|
-
items:
|
|
10
|
+
items: Ref<CollectionItem<Item, Meta>[]>;
|
|
11
11
|
isDirty: ComputedRef<boolean>;
|
|
12
12
|
add: (item: Item, afterIndex?: number) => CollectionItem<Item, Meta>;
|
|
13
13
|
remove: (index: number, isHardRemove?: boolean) => void;
|