@vnejs/plugins.canvas.layer 0.1.3 → 0.1.5

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/const/events.js CHANGED
@@ -2,7 +2,9 @@ export const SUBSCRIBE_EVENTS = {
2
2
  SHOW: "vne:layer:show",
3
3
  HIDE: "vne:layer:hide",
4
4
  UPDATE: "vne:layer:update",
5
- FORCE_UPDATE: "vne:layer:force_update",
5
+
6
+ UPDATE_FORCE: "vne:layer:update_force",
7
+ UPDATE_FAST: "vne:layer:update_fast",
6
8
 
7
9
  CHILD_RM: "vne:layer:child_rm",
8
10
  CHILDS_RM: "vne:layer:childs_rm",
@@ -1,5 +1,14 @@
1
1
  import { Module } from "@vnejs/module";
2
2
 
3
+ const getPromiseAndResolve = () => {
4
+ const obj = {};
5
+ obj.promise = new Promise((resolve) => {
6
+ obj.resolve = resolve;
7
+ });
8
+
9
+ return obj;
10
+ };
11
+
3
12
  export class LayerFilters extends Module {
4
13
  name = "layer.filters";
5
14
 
@@ -23,18 +32,28 @@ export class LayerFilters extends Module {
23
32
  this.emit(this.EVENTS.SCENARIO.NEXT, { module: this.name });
24
33
  };
25
34
 
26
- setFilter = (layer, filter, duration) => this.emit(this.EVENTS.LAYER.FILTER_SET, { layer, filter, duration });
35
+ setFilter = (layer, filter, duration) => {
36
+ const { resolve: skipResolve, promise: skipPromise } = getPromiseAndResolve();
37
+
38
+ return this.emit(this.EVENTS.INTERACT.PUSH_POP, {
39
+ key: `${this.name}_${layer}`,
40
+ skipHandler: () => this.emit(this.EVENTS.LAYER.FILTER_SET, { layer, filter, duration: 0 }).then(skipResolve),
41
+ handler: () => Promise.race([this.emit(this.EVENTS.LAYER.FILTER_SET, { layer, filter, duration }), skipPromise]),
42
+ });
43
+ };
44
+
45
+ onStateSet = async ({ [this.name]: state } = {}) => {
46
+ const clonedState = await this.emitOne(this.EVENTS.VENDORS.CLONE, state);
27
47
 
28
- onStateSet = ({ [this.name]: state } = {}) => {
29
48
  const oldLayers = Object.keys(this.state.filters);
30
- const newLayers = Object.keys(state.filters);
49
+ const newLayers = Object.keys(clonedState.filters);
31
50
 
32
51
  const promises = [];
33
52
 
34
53
  oldLayers.forEach((layer) => !newLayers.includes(layer) && promises.push(this.setFilter(layer, "", 0)));
35
- newLayers.forEach((layer) => promises.push(this.setFilter(layer, state.filters[layer], 0)));
54
+ newLayers.forEach((layer) => promises.push(this.setFilter(layer, clonedState.filters[layer], 0)));
36
55
 
37
- this.setState(state);
56
+ this.state.filters = clonedState.filters;
38
57
 
39
58
  return Promise.all(promises);
40
59
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vnejs/plugins.canvas.layer",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",