v-dict 2.0.7 → 2.0.9
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/react/index.cjs +63 -73
- package/dist/react/index.js +64 -74
- package/dist/types/dict.d.ts +2 -11
- package/package.json +1 -1
package/dist/react/index.cjs
CHANGED
|
@@ -207,33 +207,6 @@ function createDictManager(createDictManagerOptions = {}) {
|
|
|
207
207
|
function getMapSnapshot() {
|
|
208
208
|
return maps[code];
|
|
209
209
|
}
|
|
210
|
-
const createStateFromMap = (map = /* @__PURE__ */ new Map()) => {
|
|
211
|
-
const newObj = /* @__PURE__ */ Object.create(null);
|
|
212
|
-
const newList = [];
|
|
213
|
-
mapToObj(map, {
|
|
214
|
-
obj: newObj,
|
|
215
|
-
itemTransformer
|
|
216
|
-
});
|
|
217
|
-
mapToList(map, {
|
|
218
|
-
list: newList,
|
|
219
|
-
itemTransformer
|
|
220
|
-
});
|
|
221
|
-
const newE = Object.fromEntries(
|
|
222
|
-
Array.from(map.keys()).map((key) => {
|
|
223
|
-
var _a;
|
|
224
|
-
return [key, (_a = transformer == null ? void 0 : transformer(key)) != null ? _a : key];
|
|
225
|
-
})
|
|
226
|
-
);
|
|
227
|
-
const getItem = (value) => {
|
|
228
|
-
return value !== null && value !== void 0 ? newObj[value] : null;
|
|
229
|
-
};
|
|
230
|
-
return {
|
|
231
|
-
map: newObj,
|
|
232
|
-
list: newList,
|
|
233
|
-
E: newE,
|
|
234
|
-
getItem
|
|
235
|
-
};
|
|
236
|
-
};
|
|
237
210
|
function useDict(useDictOptions = {}) {
|
|
238
211
|
const mergedOptions = {
|
|
239
212
|
clone: false,
|
|
@@ -242,77 +215,94 @@ function createDictManager(createDictManagerOptions = {}) {
|
|
|
242
215
|
...useDictOptions
|
|
243
216
|
};
|
|
244
217
|
const { clone, immediate, refresh } = mergedOptions;
|
|
245
|
-
const stateRef = react.useRef(createStateFromMap());
|
|
246
|
-
const clonedLoadPromiseRef = react.useRef(null);
|
|
247
218
|
const globalMap = react.useSyncExternalStore(subscribeMap, getMapSnapshot);
|
|
248
219
|
const [clonedMap, setClonedMap] = react.useState(/* @__PURE__ */ new Map());
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
220
|
+
const createStateFromMap = (map = /* @__PURE__ */ new Map()) => {
|
|
221
|
+
const newObj = /* @__PURE__ */ Object.create(null);
|
|
222
|
+
const newList = [];
|
|
223
|
+
mapToObj(map, {
|
|
224
|
+
obj: newObj,
|
|
225
|
+
itemTransformer
|
|
226
|
+
});
|
|
227
|
+
mapToList(map, {
|
|
228
|
+
list: newList,
|
|
229
|
+
itemTransformer
|
|
230
|
+
});
|
|
231
|
+
const newE = Object.fromEntries(
|
|
232
|
+
Array.from(map.keys()).map((key) => {
|
|
233
|
+
var _a;
|
|
234
|
+
return [key, (_a = transformer == null ? void 0 : transformer(key)) != null ? _a : key];
|
|
235
|
+
})
|
|
236
|
+
);
|
|
237
|
+
const getItem = (value) => {
|
|
238
|
+
return value !== null && value !== void 0 ? newObj[value] : null;
|
|
239
|
+
};
|
|
240
|
+
return {
|
|
241
|
+
map: newObj,
|
|
242
|
+
list: newList,
|
|
243
|
+
E: newE,
|
|
244
|
+
getItem
|
|
245
|
+
};
|
|
246
|
+
};
|
|
247
|
+
const stateRef = react.useRef({
|
|
248
|
+
...createStateFromMap(clonedMap),
|
|
249
|
+
clear: () => {
|
|
261
250
|
if (!clone) {
|
|
262
|
-
maps[code] =
|
|
251
|
+
maps[code] = /* @__PURE__ */ new Map();
|
|
263
252
|
emitChange(code);
|
|
264
|
-
|
|
265
|
-
setClonedMap(map2);
|
|
253
|
+
return;
|
|
266
254
|
}
|
|
267
|
-
|
|
268
|
-
|
|
255
|
+
setClonedMap(/* @__PURE__ */ new Map());
|
|
256
|
+
},
|
|
257
|
+
loadPromise: !clone ? globalLoadPromise : createPromise(),
|
|
258
|
+
async load(options) {
|
|
259
|
+
const oldLoadPromise = stateRef.current.loadPromise;
|
|
260
|
+
stateRef.current.loadPromise = createPromise();
|
|
269
261
|
if (!clone) {
|
|
270
|
-
globalLoadPromise.
|
|
271
|
-
} else {
|
|
272
|
-
(_a = clonedLoadPromiseRef.current) == null ? void 0 : _a.resolve(void 0);
|
|
262
|
+
globalLoadPromise = stateRef.current.loadPromise;
|
|
273
263
|
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
264
|
+
loadDict({ ...mergedOptions, ...options }).then((map) => {
|
|
265
|
+
Object.assign(stateRef.current, createStateFromMap(map));
|
|
266
|
+
if (!clone) {
|
|
267
|
+
maps[code] = map;
|
|
268
|
+
emitChange(code);
|
|
269
|
+
} else {
|
|
270
|
+
setClonedMap(map);
|
|
271
|
+
}
|
|
272
|
+
oldLoadPromise == null ? void 0 : oldLoadPromise.resolve(void 0);
|
|
273
|
+
stateRef.current.loadPromise.resolve(void 0);
|
|
274
|
+
});
|
|
275
|
+
return stateRef.current.loadPromise;
|
|
282
276
|
}
|
|
283
|
-
|
|
284
|
-
|
|
277
|
+
});
|
|
278
|
+
if (!clone) {
|
|
279
|
+
Object.assign(stateRef.current, createStateFromMap(globalMap));
|
|
280
|
+
}
|
|
285
281
|
react.useEffect(() => {
|
|
286
282
|
if (remote && !immediate) {
|
|
287
283
|
return;
|
|
288
284
|
}
|
|
289
285
|
if (clone) {
|
|
290
|
-
load();
|
|
286
|
+
stateRef.current.load();
|
|
291
287
|
} else {
|
|
292
288
|
if (!init) {
|
|
293
289
|
init = true;
|
|
294
|
-
load();
|
|
290
|
+
stateRef.current.load();
|
|
295
291
|
} else if (refresh) {
|
|
296
|
-
load();
|
|
292
|
+
stateRef.current.load();
|
|
297
293
|
}
|
|
298
294
|
}
|
|
299
295
|
}, []);
|
|
300
296
|
const ctx = react.useMemo(() => {
|
|
301
|
-
const value = {
|
|
302
|
-
...state,
|
|
303
|
-
loadPromise,
|
|
304
|
-
load,
|
|
305
|
-
clear: clear2
|
|
306
|
-
};
|
|
307
297
|
return {
|
|
308
|
-
...
|
|
298
|
+
...stateRef.current,
|
|
309
299
|
// @ts-ignore
|
|
310
|
-
...managerExtra == null ? void 0 : managerExtra(
|
|
300
|
+
...managerExtra == null ? void 0 : managerExtra(stateRef.current),
|
|
311
301
|
// @ts-ignore
|
|
312
|
-
...extra == null ? void 0 : extra(
|
|
313
|
-
stateRef
|
|
302
|
+
...extra == null ? void 0 : extra(stateRef.current),
|
|
303
|
+
ref: stateRef
|
|
314
304
|
};
|
|
315
|
-
}, [
|
|
305
|
+
}, [!clone ? globalMap : clonedMap]);
|
|
316
306
|
return ctx;
|
|
317
307
|
}
|
|
318
308
|
useDict.extend = (extendCode2, extendOptions) => {
|
package/dist/react/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { warn, isFunction, cloneDeep, createPromise, toMap, merge, mapToObj, mapToList } from '../chunk-E7KZBQBQ.js';
|
|
2
2
|
export { defineDictData } from '../chunk-E7KZBQBQ.js';
|
|
3
|
-
import {
|
|
3
|
+
import { useSyncExternalStore, useState, useRef, useEffect, useMemo } from 'react';
|
|
4
4
|
|
|
5
5
|
function createDictManager(createDictManagerOptions = {}) {
|
|
6
6
|
const {
|
|
@@ -78,33 +78,6 @@ function createDictManager(createDictManagerOptions = {}) {
|
|
|
78
78
|
function getMapSnapshot() {
|
|
79
79
|
return maps[code];
|
|
80
80
|
}
|
|
81
|
-
const createStateFromMap = (map = /* @__PURE__ */ new Map()) => {
|
|
82
|
-
const newObj = /* @__PURE__ */ Object.create(null);
|
|
83
|
-
const newList = [];
|
|
84
|
-
mapToObj(map, {
|
|
85
|
-
obj: newObj,
|
|
86
|
-
itemTransformer
|
|
87
|
-
});
|
|
88
|
-
mapToList(map, {
|
|
89
|
-
list: newList,
|
|
90
|
-
itemTransformer
|
|
91
|
-
});
|
|
92
|
-
const newE = Object.fromEntries(
|
|
93
|
-
Array.from(map.keys()).map((key) => {
|
|
94
|
-
var _a;
|
|
95
|
-
return [key, (_a = transformer == null ? void 0 : transformer(key)) != null ? _a : key];
|
|
96
|
-
})
|
|
97
|
-
);
|
|
98
|
-
const getItem = (value) => {
|
|
99
|
-
return value !== null && value !== void 0 ? newObj[value] : null;
|
|
100
|
-
};
|
|
101
|
-
return {
|
|
102
|
-
map: newObj,
|
|
103
|
-
list: newList,
|
|
104
|
-
E: newE,
|
|
105
|
-
getItem
|
|
106
|
-
};
|
|
107
|
-
};
|
|
108
81
|
function useDict(useDictOptions = {}) {
|
|
109
82
|
const mergedOptions = {
|
|
110
83
|
clone: false,
|
|
@@ -113,77 +86,94 @@ function createDictManager(createDictManagerOptions = {}) {
|
|
|
113
86
|
...useDictOptions
|
|
114
87
|
};
|
|
115
88
|
const { clone, immediate, refresh } = mergedOptions;
|
|
116
|
-
const stateRef = useRef(createStateFromMap());
|
|
117
|
-
const clonedLoadPromiseRef = useRef(null);
|
|
118
89
|
const globalMap = useSyncExternalStore(subscribeMap, getMapSnapshot);
|
|
119
90
|
const [clonedMap, setClonedMap] = useState(/* @__PURE__ */ new Map());
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
91
|
+
const createStateFromMap = (map = /* @__PURE__ */ new Map()) => {
|
|
92
|
+
const newObj = /* @__PURE__ */ Object.create(null);
|
|
93
|
+
const newList = [];
|
|
94
|
+
mapToObj(map, {
|
|
95
|
+
obj: newObj,
|
|
96
|
+
itemTransformer
|
|
97
|
+
});
|
|
98
|
+
mapToList(map, {
|
|
99
|
+
list: newList,
|
|
100
|
+
itemTransformer
|
|
101
|
+
});
|
|
102
|
+
const newE = Object.fromEntries(
|
|
103
|
+
Array.from(map.keys()).map((key) => {
|
|
104
|
+
var _a;
|
|
105
|
+
return [key, (_a = transformer == null ? void 0 : transformer(key)) != null ? _a : key];
|
|
106
|
+
})
|
|
107
|
+
);
|
|
108
|
+
const getItem = (value) => {
|
|
109
|
+
return value !== null && value !== void 0 ? newObj[value] : null;
|
|
110
|
+
};
|
|
111
|
+
return {
|
|
112
|
+
map: newObj,
|
|
113
|
+
list: newList,
|
|
114
|
+
E: newE,
|
|
115
|
+
getItem
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
const stateRef = useRef({
|
|
119
|
+
...createStateFromMap(clonedMap),
|
|
120
|
+
clear: () => {
|
|
132
121
|
if (!clone) {
|
|
133
|
-
maps[code] =
|
|
122
|
+
maps[code] = /* @__PURE__ */ new Map();
|
|
134
123
|
emitChange(code);
|
|
135
|
-
|
|
136
|
-
setClonedMap(map2);
|
|
124
|
+
return;
|
|
137
125
|
}
|
|
138
|
-
|
|
139
|
-
|
|
126
|
+
setClonedMap(/* @__PURE__ */ new Map());
|
|
127
|
+
},
|
|
128
|
+
loadPromise: !clone ? globalLoadPromise : createPromise(),
|
|
129
|
+
async load(options) {
|
|
130
|
+
const oldLoadPromise = stateRef.current.loadPromise;
|
|
131
|
+
stateRef.current.loadPromise = createPromise();
|
|
140
132
|
if (!clone) {
|
|
141
|
-
globalLoadPromise.
|
|
142
|
-
} else {
|
|
143
|
-
(_a = clonedLoadPromiseRef.current) == null ? void 0 : _a.resolve(void 0);
|
|
133
|
+
globalLoadPromise = stateRef.current.loadPromise;
|
|
144
134
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
135
|
+
loadDict({ ...mergedOptions, ...options }).then((map) => {
|
|
136
|
+
Object.assign(stateRef.current, createStateFromMap(map));
|
|
137
|
+
if (!clone) {
|
|
138
|
+
maps[code] = map;
|
|
139
|
+
emitChange(code);
|
|
140
|
+
} else {
|
|
141
|
+
setClonedMap(map);
|
|
142
|
+
}
|
|
143
|
+
oldLoadPromise == null ? void 0 : oldLoadPromise.resolve(void 0);
|
|
144
|
+
stateRef.current.loadPromise.resolve(void 0);
|
|
145
|
+
});
|
|
146
|
+
return stateRef.current.loadPromise;
|
|
153
147
|
}
|
|
154
|
-
|
|
155
|
-
|
|
148
|
+
});
|
|
149
|
+
if (!clone) {
|
|
150
|
+
Object.assign(stateRef.current, createStateFromMap(globalMap));
|
|
151
|
+
}
|
|
156
152
|
useEffect(() => {
|
|
157
153
|
if (remote && !immediate) {
|
|
158
154
|
return;
|
|
159
155
|
}
|
|
160
156
|
if (clone) {
|
|
161
|
-
load();
|
|
157
|
+
stateRef.current.load();
|
|
162
158
|
} else {
|
|
163
159
|
if (!init) {
|
|
164
160
|
init = true;
|
|
165
|
-
load();
|
|
161
|
+
stateRef.current.load();
|
|
166
162
|
} else if (refresh) {
|
|
167
|
-
load();
|
|
163
|
+
stateRef.current.load();
|
|
168
164
|
}
|
|
169
165
|
}
|
|
170
166
|
}, []);
|
|
171
167
|
const ctx = useMemo(() => {
|
|
172
|
-
const value = {
|
|
173
|
-
...state,
|
|
174
|
-
loadPromise,
|
|
175
|
-
load,
|
|
176
|
-
clear: clear2
|
|
177
|
-
};
|
|
178
168
|
return {
|
|
179
|
-
...
|
|
169
|
+
...stateRef.current,
|
|
180
170
|
// @ts-ignore
|
|
181
|
-
...managerExtra == null ? void 0 : managerExtra(
|
|
171
|
+
...managerExtra == null ? void 0 : managerExtra(stateRef.current),
|
|
182
172
|
// @ts-ignore
|
|
183
|
-
...extra == null ? void 0 : extra(
|
|
184
|
-
stateRef
|
|
173
|
+
...extra == null ? void 0 : extra(stateRef.current),
|
|
174
|
+
ref: stateRef
|
|
185
175
|
};
|
|
186
|
-
}, [
|
|
176
|
+
}, [!clone ? globalMap : clonedMap]);
|
|
187
177
|
return ctx;
|
|
188
178
|
}
|
|
189
179
|
useDict.extend = (extendCode2, extendOptions) => {
|
package/dist/types/dict.d.ts
CHANGED
|
@@ -21,17 +21,8 @@ export type Dict<K extends PropertyKey = PropertyKey, I extends Recordable = Dic
|
|
|
21
21
|
load: (options?: O) => LoadPromise;
|
|
22
22
|
clear: () => void;
|
|
23
23
|
getItem: (value?: I['value'] | Nil) => I | Nil;
|
|
24
|
-
|
|
25
|
-
current:
|
|
26
|
-
list: I[];
|
|
27
|
-
E: {
|
|
28
|
-
[X in K]: X;
|
|
29
|
-
};
|
|
30
|
-
map: {
|
|
31
|
-
[X in K]: I;
|
|
32
|
-
};
|
|
33
|
-
getItem: (value?: I['value'] | Nil) => I | Nil;
|
|
34
|
-
};
|
|
24
|
+
ref?: {
|
|
25
|
+
current: Omit<Dict<K, I, O>, 'ref'>;
|
|
35
26
|
};
|
|
36
27
|
};
|
|
37
28
|
export type Fetch = (code: string, options: Recordable) => MaybePromise<DictItemRecord[]>;
|