@lvce-editor/virtual-dom 1.26.0 → 1.28.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/dist/index.d.ts CHANGED
@@ -27,3 +27,7 @@ export const applyPatch: (
27
27
  $Element: HTMLElement,
28
28
  patches: readonly any[],
29
29
  ) => void
30
+
31
+ export const getFileHandles: (
32
+ ids: readonly number[],
33
+ ) => Promise<readonly FileSystemHandle>
package/dist/index.js CHANGED
@@ -262,14 +262,14 @@ const getComponentUidFromEvent = event => {
262
262
  return getComponentUid(currentTarget || target);
263
263
  };
264
264
 
265
- const state = {
265
+ const state$1 = {
266
266
  ipc: undefined
267
267
  };
268
268
  const getIpc = () => {
269
- return state.ipc;
269
+ return state$1.ipc;
270
270
  };
271
271
  const setIpc = value => {
272
- state.ipc = value;
272
+ state$1.ipc = value;
273
273
  };
274
274
 
275
275
  const cache = new Map();
@@ -279,7 +279,7 @@ const has = listener => {
279
279
  const set = (listener, value) => {
280
280
  cache.set(listener, value);
281
281
  };
282
- const get = listener => {
282
+ const get$1 = listener => {
283
283
  return cache.get(listener);
284
284
  };
285
285
 
@@ -307,7 +307,7 @@ const getWrappedListener = (listener, returnValue) => {
307
307
  nameAnonymousFunction(wrapped, listener.name);
308
308
  set(listener, wrapped);
309
309
  }
310
- return get(listener);
310
+ return get$1(listener);
311
311
  };
312
312
 
313
313
  const getOptions = fn => {
@@ -488,7 +488,7 @@ const removeChild = ($Element, index) => {
488
488
  const $Child = $Element.children[index];
489
489
  $Child.remove();
490
490
  };
491
- const add = ($Element, nodes) => {
491
+ const add$1 = ($Element, nodes) => {
492
492
  renderInternal($Element, nodes, {}, {});
493
493
  };
494
494
 
@@ -518,7 +518,7 @@ const applyPatch = ($Element, patches) => {
518
518
  removeChild($Current, patch.index);
519
519
  break;
520
520
  case Add:
521
- add($Current, patch.nodes);
521
+ add$1($Current, patch.nodes);
522
522
  break;
523
523
  case NavigateSibling:
524
524
  $Current = $Current.parentNode.childNodes[patch.index];
@@ -533,8 +533,36 @@ const applyPatch = ($Element, patches) => {
533
533
  }
534
534
  };
535
535
 
536
+ let id = 0;
537
+ const create = () => {
538
+ return ++id;
539
+ };
540
+
541
+ const state = Object.create(null);
542
+ const get = id => {
543
+ return state[id];
544
+ };
545
+ const getFileHandles = async ids => {
546
+ const promises = ids.map(id => get(id));
547
+ const handles = await Promise.all(promises);
548
+ return handles;
549
+ };
550
+ const add = promise => {
551
+ const id = create();
552
+ state[id] = promise;
553
+ return id;
554
+ };
555
+
556
+ const handleDataTransferFiles = async event => {
557
+ const items = [...event.dataTransfer.items];
558
+ const promises = items.map(item => item.getAsFileSystemHandle());
559
+ const ids = promises.map(promise => add(promise));
560
+ return ids;
561
+ };
536
562
  const getEventListenerArg = (param, event) => {
537
563
  switch (param) {
564
+ case 'event.dataTransfer.files2':
565
+ return handleDataTransferFiles(event);
538
566
  case 'event.clientX':
539
567
  return event.clientX;
540
568
  case 'event.x':
@@ -549,6 +577,8 @@ const getEventListenerArg = (param, event) => {
549
577
  return event.target.value;
550
578
  case 'event.isTrusted':
551
579
  return event.isTrusted;
580
+ case 'event.dataTransfer.files':
581
+ return event.dataTransfer.files;
552
582
  case 'event.target.className':
553
583
  return event.target.className;
554
584
  case 'event.data':
@@ -716,4 +746,4 @@ const rememberFocus = ($Viewlet, dom, eventMap, uid = 0) => {
716
746
  return $Viewlet;
717
747
  };
718
748
 
719
- export { applyPatch, getComponentUid, getComponentUidFromEvent, registerEventListeners, rememberFocus, render, renderInto, setComponentUid, setIpc };
749
+ export { applyPatch, getComponentUid, getComponentUidFromEvent, getFileHandles, registerEventListeners, rememberFocus, render, renderInto, setComponentUid, setIpc };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/virtual-dom",
3
- "version": "1.26.0",
3
+ "version": "1.28.0",
4
4
  "main": "dist/index.js",
5
5
  "type": "module",
6
6
  "keywords": [],
@@ -0,0 +1,21 @@
1
+ import * as Id from '../Id/Id.ts'
2
+
3
+ const state: Record<number, Promise<FileSystemHandle>> = Object.create(null)
4
+
5
+ export const get = (id: number): Promise<FileSystemHandle> => {
6
+ return state[id]
7
+ }
8
+
9
+ export const getFileHandles = async (
10
+ ids: readonly number[],
11
+ ): Promise<readonly FileSystemHandle[]> => {
12
+ const promises = ids.map((id) => get(id))
13
+ const handles = await Promise.all(promises)
14
+ return handles
15
+ }
16
+
17
+ export const add = (promise: Promise<FileSystemHandle>): number => {
18
+ const id = Id.create()
19
+ state[id] = promise
20
+ return id
21
+ }
@@ -1,5 +1,18 @@
1
+ import * as FileHandles from '../FileHandles/FileHandles.ts'
2
+
3
+ const handleDataTransferFiles = async (
4
+ event: any,
5
+ ): Promise<readonly number[]> => {
6
+ const items = [...event.dataTransfer.items]
7
+ const promises = items.map((item) => item.getAsFileSystemHandle())
8
+ const ids = promises.map((promise) => FileHandles.add(promise))
9
+ return ids
10
+ }
11
+
1
12
  export const getEventListenerArg = (param: string, event: any): any => {
2
13
  switch (param) {
14
+ case 'event.dataTransfer.files2':
15
+ return handleDataTransferFiles(event)
3
16
  case 'event.clientX':
4
17
  return event.clientX
5
18
  case 'event.x':
@@ -14,6 +27,8 @@ export const getEventListenerArg = (param: string, event: any): any => {
14
27
  return event.target.value
15
28
  case 'event.isTrusted':
16
29
  return event.isTrusted
30
+ case 'event.dataTransfer.files':
31
+ return event.dataTransfer.files
17
32
  case 'event.target.className':
18
33
  return event.target.className
19
34
  case 'event.data':
@@ -0,0 +1,5 @@
1
+ let id = 0
2
+
3
+ export const create = (): number => {
4
+ return ++id
5
+ }
@@ -8,3 +8,4 @@ export { setIpc } from '../IpcState/IpcState.ts'
8
8
  export { registerEventListeners } from '../RegisterEventListeners/RegisterEventListeners.ts'
9
9
  export { rememberFocus } from '../RememberFocus/RememberFocus.ts'
10
10
  export { render, renderInto } from '../VirtualDom/VirtualDom.ts'
11
+ export { getFileHandles } from '../FileHandles/FileHandles.ts'