@cmtlyt/lingshu-toolkit 0.5.0 → 0.6.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 +10 -0
- package/dist/665.js +1 -0
- package/dist/893.js +1 -0
- package/dist/react/index.js +1 -205
- package/dist/react/use-boolean/index.d.ts +2 -1
- package/dist/react/use-boolean/index.js +1 -16
- package/dist/react/use-controllable-value/index.d.ts +3 -3
- package/dist/react/use-controllable-value/index.js +1 -32
- package/dist/react/use-counter/index.d.ts +2 -2
- package/dist/react/use-counter/index.js +1 -49
- package/dist/react/use-force-update/index.d.ts +2 -1
- package/dist/react/use-force-update/index.js +1 -6
- package/dist/react/use-mount/index.d.ts +2 -1
- package/dist/react/use-mount/index.js +1 -16
- package/dist/react/use-ref-state/index.d.ts +3 -2
- package/dist/react/use-ref-state/index.js +1 -33
- package/dist/react/use-storage/index.d.ts +2 -1
- package/dist/react/use-storage/index.js +1 -15
- package/dist/react/use-title/index.d.ts +2 -2
- package/dist/react/use-title/index.js +1 -24
- package/dist/react/use-toggle/index.d.ts +4 -4
- package/dist/react/use-toggle/index.js +1 -26
- package/dist/react/use-valid-data/index.d.ts +5 -4
- package/dist/react/use-valid-data/index.js +1 -14
- package/dist/shared/allx/index.d.ts +2 -1
- package/dist/shared/allx/index.js +1 -44
- package/dist/shared/allx/types.d.ts +6 -0
- package/dist/shared/allx/utils.d.ts +9 -7
- package/dist/shared/allx/utils.js +1 -94
- package/dist/shared/animation/index.d.ts +3 -2
- package/dist/shared/animation/index.js +1 -77
- package/dist/shared/animation/types.d.ts +8 -0
- package/dist/shared/animation/utils.d.ts +3 -10
- package/dist/shared/animation/utils.js +1 -134
- package/dist/shared/api-controller/create-api.js +1 -79
- package/dist/shared/api-controller/index.js +1 -3
- package/dist/shared/api-controller/request.js +1 -66
- package/dist/shared/api-controller/types.d.ts +26 -27
- package/dist/shared/api-controller/utils.d.ts +6 -15
- package/dist/shared/api-controller/utils.js +1 -96
- package/dist/shared/condition-merge/index.d.ts +6 -6
- package/dist/shared/condition-merge/index.js +1 -30
- package/dist/shared/create-storage-handler/index.d.ts +4 -3
- package/dist/shared/create-storage-handler/index.js +1 -68
- package/dist/shared/data-handler/index.d.ts +4 -3
- package/dist/shared/data-handler/index.js +1 -77
- package/dist/shared/data-handler/tools.d.ts +6 -23
- package/dist/shared/data-handler/tools.js +1 -48
- package/dist/shared/data-handler/types.d.ts +20 -2
- package/dist/shared/data-mixed-manager/constants.js +1 -9
- package/dist/shared/data-mixed-manager/index.js +1 -226
- package/dist/shared/data-mixed-manager/types.d.ts +1 -2
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.js +1 -957
- package/dist/shared/logger/index.d.ts +2 -2
- package/dist/shared/logger/index.js +1 -10
- package/dist/shared/priority-queue/index.d.ts +45 -0
- package/dist/shared/priority-queue/index.js +1 -0
- package/dist/shared/priority-queue/types.d.ts +10 -0
- package/dist/shared/priority-queue/types.js +0 -0
- package/dist/shared/priority-queue/utils.d.ts +7 -0
- package/dist/shared/priority-queue/utils.js +1 -0
- package/dist/shared/throw-error/index.d.ts +4 -3
- package/dist/shared/throw-error/index.js +1 -10
- package/dist/shared/try-call/index.d.ts +3 -3
- package/dist/shared/try-call/index.js +1 -59
- package/dist/shared/types/index.js +1 -2
- package/dist/shared/types/pack.d.ts +2 -2
- package/dist/shared/types/pack.js +1 -1
- package/dist/shared/utils/base.d.ts +1 -1
- package/dist/shared/utils/base.js +1 -6
- package/dist/shared/utils/index.js +1 -2
- package/dist/shared/utils/verify.d.ts +1 -1
- package/dist/shared/utils/verify.js +1 -67
- package/dist/shared/with-resolvers/index.d.ts +5 -3
- package/dist/shared/with-resolvers/index.js +1 -15
- package/dist/vue/index.js +1 -29
- package/dist/vue/use-title/index.d.ts +2 -2
- package/dist/vue/use-title/index.js +1 -29
- package/package.json +26 -26
- package/dist/247.js +0 -66
- package/dist/707.js +0 -142
- package/dist/react/use-boolean/index.test.d.ts +0 -1
- package/dist/react/use-controllable-value/index.test.d.ts +0 -1
- package/dist/react/use-counter/index.test.d.ts +0 -1
- package/dist/react/use-force-update/index.test.d.ts +0 -1
- package/dist/react/use-mount/index.test.d.ts +0 -1
- package/dist/react/use-ref-state/index.test.d.ts +0 -1
- package/dist/react/use-storage/index.test.d.ts +0 -1
- package/dist/react/use-title/index.test.d.ts +0 -1
- package/dist/react/use-toggle/index.test.d.ts +0 -1
- package/dist/react/use-valid-data/index.test.d.ts +0 -1
- package/dist/shared/allx/__test__/allsettled.test.d.ts +0 -1
- package/dist/shared/allx/__test__/basic.test.d.ts +0 -1
- package/dist/shared/allx/__test__/circular-dependency.test.d.ts +0 -1
- package/dist/shared/allx/__test__/dependency.test.d.ts +0 -1
- package/dist/shared/allx/__test__/edge-cases.test.d.ts +0 -1
- package/dist/shared/allx/__test__/error-handling.test.d.ts +0 -1
- package/dist/shared/allx/__test__/execution-order.test.d.ts +0 -1
- package/dist/shared/allx/__test__/falsy-values.test.d.ts +0 -1
- package/dist/shared/allx/__test__/performance.test.d.ts +0 -1
- package/dist/shared/allx/__test__/type-checking.test.d.ts +0 -1
- package/dist/shared/allx/__test__/use-cases.test.d.ts +0 -1
- package/dist/shared/animation/__test__/animation-pause-resume.test.d.ts +0 -1
- package/dist/shared/animation/__test__/animation.test.d.ts +0 -1
- package/dist/shared/animation/__test__/step-animation.test.d.ts +0 -1
- package/dist/shared/animation/__test__/utils.test.d.ts +0 -1
- package/dist/shared/api-controller/__test__/index.browser.test.d.ts +0 -1
- package/dist/shared/api-controller/__test__/index.node.test.d.ts +0 -1
- package/dist/shared/condition-merge/index.test-d.js +0 -108
- package/dist/shared/condition-merge/index.test.d.ts +0 -1
- package/dist/shared/create-storage-handler/index.browser.test.d.ts +0 -1
- package/dist/shared/create-storage-handler/index.test.d.ts +0 -1
- package/dist/shared/data-handler/index.test.d.ts +0 -1
- package/dist/shared/data-mixed-manager/__test__/basic.test.d.ts +0 -1
- package/dist/shared/data-mixed-manager/__test__/build-options.test.d.ts +0 -1
- package/dist/shared/data-mixed-manager/__test__/constructor-options.test.d.ts +0 -1
- package/dist/shared/data-mixed-manager/__test__/data-management.test.d.ts +0 -1
- package/dist/shared/data-mixed-manager/__test__/edge-cases.test.d.ts +0 -1
- package/dist/shared/data-mixed-manager/__test__/events.browser.test.d.ts +0 -1
- package/dist/shared/data-mixed-manager/__test__/events.test.d.ts +0 -1
- package/dist/shared/data-mixed-manager/__test__/fixed-slots.test.d.ts +0 -1
- package/dist/shared/data-mixed-manager/__test__/insert-mode.test.d.ts +0 -1
- package/dist/shared/throw-error/index.test.d.ts +0 -1
- package/dist/shared/try-call/index.test.d.ts +0 -1
- package/dist/shared/utils/__test__/base.test.d.ts +0 -1
- package/dist/shared/utils/__test__/verify.test.d.ts +0 -1
- package/dist/shared/with-resolvers/index.test.d.ts +0 -1
- package/dist/test/utils.d.ts +0 -13
- package/dist/vue/use-title/index.test.d.ts +0 -1
|
@@ -1,226 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { throwError } from "../throw-error/index.js";
|
|
3
|
-
import { SLOT_TYPE } from "./constants.js";
|
|
4
|
-
const validInfo = $dt({
|
|
5
|
-
name: $t.string('default'),
|
|
6
|
-
fixedSlots: $t.array([]),
|
|
7
|
-
dataList: $t.array([]),
|
|
8
|
-
listener: $t.object({})
|
|
9
|
-
});
|
|
10
|
-
class DataMixedManager extends EventTarget {
|
|
11
|
-
addEventListener(...args) {
|
|
12
|
-
return super.addEventListener.apply(this, args);
|
|
13
|
-
}
|
|
14
|
-
removeEventListener(...args) {
|
|
15
|
-
return super.removeEventListener.apply(this, args);
|
|
16
|
-
}
|
|
17
|
-
options;
|
|
18
|
-
fixedSlots = new Map();
|
|
19
|
-
dataList = [];
|
|
20
|
-
mixedData = [];
|
|
21
|
-
lastMixedSlotIdx = -1;
|
|
22
|
-
prevDataLength = 0;
|
|
23
|
-
isBatching = false;
|
|
24
|
-
constructor(options){
|
|
25
|
-
super();
|
|
26
|
-
const validOptions = dataHandler(options || {}, validInfo, {
|
|
27
|
-
unwrap: true
|
|
28
|
-
});
|
|
29
|
-
const { fixedSlots, dataList, listener } = validOptions;
|
|
30
|
-
this.options = validOptions;
|
|
31
|
-
this.addFixedSlots(fixedSlots, {
|
|
32
|
-
lazy: true
|
|
33
|
-
});
|
|
34
|
-
this.appendList(dataList);
|
|
35
|
-
try {
|
|
36
|
-
this.initListener(listener);
|
|
37
|
-
} catch (error) {
|
|
38
|
-
throwError('dataMixedManager', error.message, error.constructor);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
initListener(listener) {
|
|
42
|
-
const listenerNames = Object.keys(listener);
|
|
43
|
-
for(let i = 0, name = listenerNames[i], handler = listener[name]; i < listenerNames.length; name = listenerNames[++i], handler = listener[name])this.addEventListener(name, handler);
|
|
44
|
-
}
|
|
45
|
-
getTypeText(_type) {
|
|
46
|
-
switch(_type){
|
|
47
|
-
case SLOT_TYPE.fixed:
|
|
48
|
-
return 'fixed';
|
|
49
|
-
case SLOT_TYPE.insert:
|
|
50
|
-
return 'insert';
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
buildSlotConfig(config, type) {
|
|
54
|
-
const typeText = this.getTypeText(config.type || type);
|
|
55
|
-
return {
|
|
56
|
-
...config,
|
|
57
|
-
type: typeText,
|
|
58
|
-
inputPosition: config.position,
|
|
59
|
-
insertMode: config.insertMode || 'cover'
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
addFixedSlot(config, buildOptions) {
|
|
63
|
-
const realConfig = this.reorderFixedSlots(this.buildSlotConfig(config, SLOT_TYPE.fixed));
|
|
64
|
-
this.fixedSlots.set(realConfig.position, realConfig);
|
|
65
|
-
this.buildMixedData(buildOptions);
|
|
66
|
-
return realConfig.position;
|
|
67
|
-
}
|
|
68
|
-
reorderFixedSlots(config) {
|
|
69
|
-
const { position: oldPosition, insertMode } = config;
|
|
70
|
-
if (null == insertMode || 'cover' === insertMode || !this.fixedSlots.has(oldPosition)) return {
|
|
71
|
-
...config,
|
|
72
|
-
inputPosition: oldPosition
|
|
73
|
-
};
|
|
74
|
-
const position = 'after' === insertMode ? oldPosition + 1 : oldPosition;
|
|
75
|
-
for(let i = position + 1, preItem = this.fixedSlots.get(i - 1), currItem = this.fixedSlots.get(i); preItem; ++i, preItem = currItem, currItem = this.fixedSlots.get(i)){
|
|
76
|
-
preItem.position = i;
|
|
77
|
-
this.fixedSlots.set(i, preItem);
|
|
78
|
-
}
|
|
79
|
-
return {
|
|
80
|
-
...config,
|
|
81
|
-
position,
|
|
82
|
-
inputPosition: oldPosition
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
addFixedSlots(configs, buildOptions) {
|
|
86
|
-
if (!configs.length) return [];
|
|
87
|
-
const positions = this.batchUpdate(()=>configs.map((config)=>this.addFixedSlot(config)));
|
|
88
|
-
this.buildMixedData(buildOptions);
|
|
89
|
-
return positions;
|
|
90
|
-
}
|
|
91
|
-
deleteFixedSlot(position, buildOptions) {
|
|
92
|
-
this.fixedSlots.delete(position);
|
|
93
|
-
this.buildMixedData(buildOptions);
|
|
94
|
-
}
|
|
95
|
-
deleteFixedSlots(positions, buildOptions) {
|
|
96
|
-
if (!positions.length) return;
|
|
97
|
-
this.batchUpdate(()=>positions.forEach((position)=>void this.deleteFixedSlot(position)));
|
|
98
|
-
this.buildMixedData(buildOptions);
|
|
99
|
-
}
|
|
100
|
-
batchUpdate(callback) {
|
|
101
|
-
try {
|
|
102
|
-
this.isBatching = true;
|
|
103
|
-
const result = callback();
|
|
104
|
-
return result;
|
|
105
|
-
} finally{
|
|
106
|
-
this.isBatching = false;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
clearFixedSlots(buildOptions) {
|
|
110
|
-
this.fixedSlots.clear();
|
|
111
|
-
this.buildMixedData(buildOptions);
|
|
112
|
-
}
|
|
113
|
-
appendList(list, buildOptions) {
|
|
114
|
-
if (!list.length) return;
|
|
115
|
-
this.dataList.push(...list);
|
|
116
|
-
this.buildMixedData({
|
|
117
|
-
...buildOptions,
|
|
118
|
-
lazy: true === (buildOptions || {}).lazy
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
clearList() {
|
|
122
|
-
this.dataList.length = 0;
|
|
123
|
-
this.mixedData.length = 0;
|
|
124
|
-
this.dispatch('change', {
|
|
125
|
-
mode: 'clear',
|
|
126
|
-
mixedData: this.getMixedData({
|
|
127
|
-
mode: 'rebuild'
|
|
128
|
-
})
|
|
129
|
-
});
|
|
130
|
-
this.dispatch('clear');
|
|
131
|
-
}
|
|
132
|
-
getMixedData(buildOptions) {
|
|
133
|
-
this.buildMixedData({
|
|
134
|
-
...buildOptions,
|
|
135
|
-
lazy: false
|
|
136
|
-
});
|
|
137
|
-
return this.mixedData.slice();
|
|
138
|
-
}
|
|
139
|
-
dispatch(name, data) {
|
|
140
|
-
const detail = {
|
|
141
|
-
name: this.options.name,
|
|
142
|
-
...data
|
|
143
|
-
};
|
|
144
|
-
this.dispatchEvent(new CustomEvent(name, {
|
|
145
|
-
detail
|
|
146
|
-
}));
|
|
147
|
-
if ("u" > typeof window) window.dispatchEvent(new CustomEvent(`[DMM]:${name}`, {
|
|
148
|
-
detail
|
|
149
|
-
}));
|
|
150
|
-
}
|
|
151
|
-
buildMixedData(buildOptions) {
|
|
152
|
-
if (this.isBatching) return;
|
|
153
|
-
const { lazy, mode } = buildOptions || {};
|
|
154
|
-
if ('rebuild' === mode) {
|
|
155
|
-
this.prevDataLength = 0;
|
|
156
|
-
this.lastMixedSlotIdx = -1;
|
|
157
|
-
}
|
|
158
|
-
if (false !== lazy || this.dataList.length <= this.prevDataLength) return;
|
|
159
|
-
let dataStartIdx = this.prevDataLength;
|
|
160
|
-
const dataEndIdx = this.dataList.length;
|
|
161
|
-
const newItemCount = dataEndIdx - dataStartIdx;
|
|
162
|
-
this.prevDataLength = dataEndIdx;
|
|
163
|
-
const isPatchMode = dataStartIdx > 0;
|
|
164
|
-
const filteredSlots = this.sliceSlots(isPatchMode ? this.mixedData.length : this.lastMixedSlotIdx, this.mixedData.length + newItemCount);
|
|
165
|
-
this.lastMixedSlotIdx = filteredSlots.at(-1) ?? this.lastMixedSlotIdx;
|
|
166
|
-
let mixedStartIdx = isPatchMode ? this.mixedData.length : 0;
|
|
167
|
-
this.mixedData.length = (isPatchMode ? newItemCount + mixedStartIdx : dataEndIdx) + filteredSlots.length;
|
|
168
|
-
for(let fpIdx = 0, fpItem = filteredSlots[fpIdx]; dataStartIdx < dataEndIdx; ++mixedStartIdx)if (mixedStartIdx === fpItem) {
|
|
169
|
-
const fixedSlot = this.fixedSlots.get(fpItem);
|
|
170
|
-
this.mixedData[mixedStartIdx] = {
|
|
171
|
-
isFixed: true,
|
|
172
|
-
type: fixedSlot.type,
|
|
173
|
-
data: fixedSlot.data
|
|
174
|
-
};
|
|
175
|
-
fpItem = filteredSlots[++fpIdx];
|
|
176
|
-
} else {
|
|
177
|
-
this.mixedData[mixedStartIdx] = {
|
|
178
|
-
isFixed: false,
|
|
179
|
-
type: 'plain',
|
|
180
|
-
data: this.dataList[dataStartIdx]
|
|
181
|
-
};
|
|
182
|
-
++dataStartIdx;
|
|
183
|
-
}
|
|
184
|
-
this.dispatch('change', {
|
|
185
|
-
mode: isPatchMode ? 'patch' : 'rebuild',
|
|
186
|
-
mixedData: this.mixedData.slice()
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
sliceSlots(startIdx, endIdx = 1 / 0) {
|
|
190
|
-
let prevItem = -2;
|
|
191
|
-
let count = 0;
|
|
192
|
-
return Array.from(this.fixedSlots.keys()).sort((ai, bi)=>ai - bi).filter((item)=>{
|
|
193
|
-
if (item >= startIdx && item < endIdx + count || item - 1 === prevItem) {
|
|
194
|
-
++count;
|
|
195
|
-
prevItem = item;
|
|
196
|
-
return true;
|
|
197
|
-
}
|
|
198
|
-
return false;
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
insertSlot(config) {
|
|
202
|
-
const realPosition = this.addFixedSlot({
|
|
203
|
-
...config,
|
|
204
|
-
type: SLOT_TYPE.insert
|
|
205
|
-
});
|
|
206
|
-
if (realPosition > this.mixedData.length) return realPosition;
|
|
207
|
-
this.buildMixedData({
|
|
208
|
-
lazy: false,
|
|
209
|
-
mode: 'rebuild'
|
|
210
|
-
});
|
|
211
|
-
return realPosition;
|
|
212
|
-
}
|
|
213
|
-
insertSlots(configs) {
|
|
214
|
-
if (!configs.length) return [];
|
|
215
|
-
const positions = this.batchUpdate(()=>configs.map((config)=>this.insertSlot(config)));
|
|
216
|
-
this.buildMixedData({
|
|
217
|
-
lazy: false,
|
|
218
|
-
mode: 'rebuild'
|
|
219
|
-
});
|
|
220
|
-
return positions;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
function dataMixedManager(options) {
|
|
224
|
-
return new DataMixedManager(options);
|
|
225
|
-
}
|
|
226
|
-
export { dataMixedManager };
|
|
1
|
+
import{$dt as t,$t as e,dataHandler as i}from"../data-handler/index.js";import{throwError as s}from"../throw-error/index.js";import{isEmptyArray as a,isNullOrUndef as d}from"../utils/verify.js";import{SLOT_TYPE as l}from"./constants.js";let r=t({name:e.string("default"),fixedSlots:e.array([]),dataList:e.array([]),listener:e.object({})});class h extends EventTarget{addEventListener(...t){super.addEventListener.apply(this,t)}removeEventListener(...t){super.removeEventListener.apply(this,t)}options;fixedSlots=new Map;dataList=[];mixedData=[];lastMixedSlotIdx=-1;prevDataLength=0;isBatching=!1;constructor(t){super();let e=i(t||{},r,{unwrap:!0}),{fixedSlots:a,dataList:d,listener:l}=e;this.options=e,this.addFixedSlots(a,{lazy:!0}),this.appendList(d);try{this.initListener(l)}catch(t){s("dataMixedManager",t.message,t.constructor)}}initListener(t){let e=Object.keys(t);for(let i=0,s=e[i],a=t[s];i<e.length;a=t[s=e[++i]])this.addEventListener(s,a)}getTypeText(t){switch(t){case l.fixed:return"fixed";case l.insert:return"insert"}}buildSlotConfig(t,e){let i=this.getTypeText(t.type||e);return{...t,type:i,inputPosition:t.position,insertMode:t.insertMode??"cover"}}addFixedSlot(t,e){let i=this.reorderFixedSlots(this.buildSlotConfig(t,l.fixed));return this.fixedSlots.set(i.position,i),this.buildMixedData(e),i.position}reorderFixedSlots(t){let{position:e,insertMode:i}=t;if(d(i)||"cover"===i||!this.fixedSlots.has(e))return{...t,inputPosition:e};let s="after"===i?e+1:e;for(let t=s+1,e=this.fixedSlots.get(t-1),i=this.fixedSlots.get(t);e;++t,e=i,i=this.fixedSlots.get(t))e.position=t,this.fixedSlots.set(t,e);return{...t,position:s,inputPosition:e}}addFixedSlots(t,e){if(a(t))return[];let i=this.batchUpdate(()=>t.map(t=>this.addFixedSlot(t)));return this.buildMixedData(e),i}deleteFixedSlot(t,e){this.fixedSlots.delete(t),this.buildMixedData(e)}deleteFixedSlots(t,e){a(t)||(this.batchUpdate(()=>t.forEach(t=>void this.deleteFixedSlot(t))),this.buildMixedData(e))}batchUpdate(t){try{return this.isBatching=!0,t()}finally{this.isBatching=!1}}clearFixedSlots(t){this.fixedSlots.clear(),this.buildMixedData(t)}appendList(t,e){a(t)||(this.dataList.push(...t),this.buildMixedData({...e,lazy:!0===(e||{}).lazy}))}clearList(){this.dataList.length=0,this.mixedData.length=0,this.dispatch("change",{mode:"clear",mixedData:this.getMixedData({mode:"rebuild"})}),this.dispatch("clear")}getMixedData(t){return this.buildMixedData({...t,lazy:!1}),this.mixedData.slice()}dispatch(t,e){let i={name:this.options.name,...e};this.dispatchEvent(new CustomEvent(t,{detail:i})),void 0!==globalThis.window&&globalThis.window.dispatchEvent(new CustomEvent(`[DMM]:${t}`,{detail:i}))}buildMixedData(t){if(this.isBatching)return;let{lazy:e,mode:i}=t||{};if("rebuild"===i&&(this.prevDataLength=0,this.lastMixedSlotIdx=-1),!1!==e||this.dataList.length<=this.prevDataLength)return;let s=this.prevDataLength,a=this.dataList.length,d=a-s;this.prevDataLength=a;let l=s>0,r=this.sliceSlots(l?this.mixedData.length:this.lastMixedSlotIdx,this.mixedData.length+d);this.lastMixedSlotIdx=r.at(-1)??this.lastMixedSlotIdx;let h=l?this.mixedData.length:0;this.mixedData.length=(l?d+h:a)+r.length;for(let t=0,e=r[t];s<a;++h)if(h===e){let i=this.fixedSlots.get(e);this.mixedData[h]={isFixed:!0,type:i.type,data:i.data},e=r[++t]}else this.mixedData[h]={isFixed:!1,type:"plain",data:this.dataList[s]},++s;this.dispatch("change",{mode:l?"patch":"rebuild",mixedData:this.mixedData.slice()})}sliceSlots(t,e=1/0){let i=-2,s=0;return Array.from(this.fixedSlots.keys()).sort((t,e)=>t-e).filter(a=>(a>=t&&a<e+s||a-1===i)&&(++s,i=a,!0))}insertSlot(t){let e=this.addFixedSlot({...t,type:l.insert});return e>this.mixedData.length||this.buildMixedData({lazy:!1,mode:"rebuild"}),e}insertSlots(t){if(a(t))return[];let e=this.batchUpdate(()=>t.map(t=>this.insertSlot(t)));return this.buildMixedData({lazy:!1,mode:"rebuild"}),e}}function n(t){return new h(t)}export{n as dataMixedManager};
|
|
@@ -59,7 +59,7 @@ export interface BuildOptions {
|
|
|
59
59
|
/** 构建模式:rebuild-全量重建,patch-增量更新 */
|
|
60
60
|
mode?: 'rebuild' | 'patch';
|
|
61
61
|
}
|
|
62
|
-
interface DiffEventDetailMap<T> {
|
|
62
|
+
export interface DiffEventDetailMap<T> {
|
|
63
63
|
change: {
|
|
64
64
|
mode: NonNullable<BuildOptions['mode']> | 'clear';
|
|
65
65
|
mixedData: MixedDataItem<T>[];
|
|
@@ -87,4 +87,3 @@ export interface DataMixedManagerOptions<T> {
|
|
|
87
87
|
[K in keyof EventDetailMap<T>]?: DMMEventHandler<T, K>;
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
|
-
export {};
|
package/dist/shared/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export * from './condition-merge';
|
|
|
5
5
|
export * from './create-storage-handler';
|
|
6
6
|
export * from './data-handler';
|
|
7
7
|
export * from './data-mixed-manager';
|
|
8
|
+
export * from './priority-queue';
|
|
8
9
|
export * from './throw-error';
|
|
9
10
|
export * from './try-call';
|
|
10
11
|
export * from './types';
|