@ax-design/reveal-highlight 0.3.0-alpha.6 → 0.4.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.
Files changed (86) hide show
  1. package/README.md +0 -8
  2. package/build/BaseConfig.d.ts +43 -0
  3. package/build/BaseConfig.d.ts.map +1 -0
  4. package/build/CanvasConfig.d.ts +7 -92
  5. package/build/CanvasConfig.d.ts.map +1 -1
  6. package/build/CustomElements.d.ts +18 -4
  7. package/build/CustomElements.d.ts.map +1 -1
  8. package/build/Profiler.d.ts.map +1 -1
  9. package/build/RevealBoundryStore.d.ts +50 -10
  10. package/build/RevealBoundryStore.d.ts.map +1 -1
  11. package/build/RevealStateManager.d.ts +3 -0
  12. package/build/RevealStateManager.d.ts.map +1 -1
  13. package/build/SvgConfig.d.ts +17 -0
  14. package/build/SvgConfig.d.ts.map +1 -0
  15. package/build/index.d.ts.map +1 -1
  16. package/build/main.js +169 -17
  17. package/build/utils/extractRGBValue.d.ts +2 -0
  18. package/build/utils/extractRGBValue.d.ts.map +1 -0
  19. package/build/utils/isValidateBorderDecorationType.d.ts +3 -0
  20. package/build/utils/isValidateBorderDecorationType.d.ts.map +1 -0
  21. package/build/utils/types.d.ts +103 -0
  22. package/build/utils/types.d.ts.map +1 -0
  23. package/build/variables.d.ts +1 -1
  24. package/build/variables.d.ts.map +1 -1
  25. package/docs/demo/index.html +70 -143
  26. package/docs/demo/ng.html +992 -0
  27. package/es/BaseConfig.d.ts +43 -0
  28. package/es/BaseConfig.d.ts.map +1 -0
  29. package/es/BaseConfig.js +220 -0
  30. package/es/BaseConfig.js.map +1 -0
  31. package/es/CanvasConfig.d.ts +7 -92
  32. package/es/CanvasConfig.d.ts.map +1 -1
  33. package/es/CanvasConfig.js +35 -233
  34. package/es/CanvasConfig.js.map +1 -1
  35. package/es/CustomElements.d.ts +18 -4
  36. package/es/CustomElements.d.ts.map +1 -1
  37. package/es/CustomElements.js +82 -7
  38. package/es/CustomElements.js.map +1 -1
  39. package/es/Profiler.d.ts.map +1 -1
  40. package/es/Profiler.js +0 -2
  41. package/es/Profiler.js.map +1 -1
  42. package/es/RevealBoundryStore.d.ts +50 -10
  43. package/es/RevealBoundryStore.d.ts.map +1 -1
  44. package/es/RevealBoundryStore.js +129 -35
  45. package/es/RevealBoundryStore.js.map +1 -1
  46. package/es/RevealStateManager.d.ts +3 -0
  47. package/es/RevealStateManager.d.ts.map +1 -1
  48. package/es/RevealStateManager.js +35 -8
  49. package/es/RevealStateManager.js.map +1 -1
  50. package/es/SvgConfig.d.ts +17 -0
  51. package/es/SvgConfig.d.ts.map +1 -0
  52. package/es/SvgConfig.js +346 -0
  53. package/es/SvgConfig.js.map +1 -0
  54. package/es/index.d.ts.map +1 -1
  55. package/es/index.js +15 -21
  56. package/es/index.js.map +1 -1
  57. package/es/utils/extractRGBValue.d.ts +2 -0
  58. package/es/utils/extractRGBValue.d.ts.map +1 -0
  59. package/es/utils/extractRGBValue.js +48 -0
  60. package/es/utils/extractRGBValue.js.map +1 -0
  61. package/es/utils/isValidateBorderDecorationType.d.ts +3 -0
  62. package/es/utils/isValidateBorderDecorationType.d.ts.map +1 -0
  63. package/es/utils/isValidateBorderDecorationType.js +10 -0
  64. package/es/utils/isValidateBorderDecorationType.js.map +1 -0
  65. package/es/utils/types.d.ts +103 -0
  66. package/es/utils/types.d.ts.map +1 -0
  67. package/es/utils/types.js +2 -0
  68. package/es/utils/types.js.map +1 -0
  69. package/es/variables.d.ts +1 -1
  70. package/es/variables.d.ts.map +1 -1
  71. package/es/variables.js +1 -1
  72. package/es/variables.js.map +1 -1
  73. package/package.json +30 -30
  74. package/src/BaseConfig.ts +311 -0
  75. package/src/CanvasConfig.ts +66 -377
  76. package/src/CustomElements.ts +97 -14
  77. package/src/Profiler.ts +0 -3
  78. package/src/RevealBoundryStore.ts +138 -39
  79. package/src/RevealStateManager.ts +40 -10
  80. package/src/SvgConfig.ts +422 -0
  81. package/src/index.ts +15 -21
  82. package/src/utils/extractRGBValue.ts +58 -0
  83. package/src/utils/isValidateBorderDecorationType.ts +8 -0
  84. package/src/utils/types.ts +106 -0
  85. package/src/variables.ts +1 -1
  86. package/.yarnrc.yml +0 -1
package/es/Profiler.js CHANGED
@@ -3,9 +3,7 @@ const downloadText = (filename, text) => {
3
3
  element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
4
4
  element.setAttribute('download', filename);
5
5
  element.style.display = 'none';
6
- document.body.appendChild(element);
7
6
  element.click();
8
- document.body.removeChild(element);
9
7
  };
10
8
  export class Profiler {
11
9
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"Profiler.js","sourceRoot":"","sources":["../src/Profiler.ts"],"names":[],"mappings":"AAKA,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,IAAY,EAAE,EAAE;IACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,gCAAgC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE3C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEnC,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,OAAO,QAAQ;IAArB;QACY,aAAQ,GAAW,CAAC,CAAC;QAC7B,SAAI,GAAkB,EAAE,CAAC;IA0B7B,CAAC;IAxBG,WAAW;QACP,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,OAAe,SAAS;QACzB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACX,IAAI;YACJ,IAAI;SACP,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACtC,CAAC;IAED,SAAS;QACL,IAAI,MAAM,GAAG,aAAa,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;SAC3D;QAED,YAAY,CAAC,oCAAoC,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;CACJ"}
1
+ {"version":3,"file":"Profiler.js","sourceRoot":"","sources":["../src/Profiler.ts"],"names":[],"mappings":"AAKA,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,IAAY,EAAE,EAAE;IACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,gCAAgC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE3C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAE/B,OAAO,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,OAAO,QAAQ;IAArB;QACY,aAAQ,GAAW,CAAC,CAAC;QAC7B,SAAI,GAAkB,EAAE,CAAC;IA0B7B,CAAC;IAxBG,WAAW;QACP,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,OAAe,SAAS;QACzB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACX,IAAI;YACJ,IAAI;SACP,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACtC,CAAC;IAED,SAAS;QACL,IAAI,MAAM,GAAG,aAAa,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;SAC3D;QAED,YAAY,CAAC,oCAAoC,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;CACJ"}
@@ -1,4 +1,6 @@
1
1
  import { CanvasConfig } from './CanvasConfig.js';
2
+ import { SvgConfig } from './SvgConfig.js';
3
+ declare type Config = CanvasConfig | SvgConfig;
2
4
  export declare class RevealBoundaryStore {
3
5
  id: number;
4
6
  container: HTMLElement;
@@ -7,10 +9,9 @@ export declare class RevealBoundaryStore {
7
9
  paintedClientX: number;
8
10
  paintedClientY: number;
9
11
  mouseInBoundary: boolean;
10
- canvasList: CanvasConfig[];
11
- animationQueue: CanvasConfig[];
12
+ canvasList: Config[];
13
+ animationQueue: Config[];
12
14
  animationFrame: number | null;
13
- dirty: boolean;
14
15
  mouseUpClientX: null;
15
16
  mouseUpClientY: null;
16
17
  mouseDownAnimateStartFrame: null;
@@ -20,18 +21,57 @@ export declare class RevealBoundaryStore {
20
21
  mousePressed: boolean;
21
22
  mouseReleased: boolean;
22
23
  maxRadius: number;
24
+ requestedAnimationFrame: boolean;
23
25
  constructor(id: number, $el: HTMLElement);
24
- addReveal: ($canvas: HTMLCanvasElement, $container: HTMLElement) => void;
25
- removeReveal: ($el: HTMLCanvasElement) => void;
26
+ addReveal: ($element: HTMLCanvasElement | SVGElement, $container: HTMLElement) => void;
27
+ removeReveal: ($el: HTMLCanvasElement | SVGElement) => void;
26
28
  updateMaxRadius: (x: number) => void;
27
- onPointerMoveOnScreen: (x: number, y: number) => boolean;
29
+ requestPaintAll: (cleanup?: boolean | undefined) => void;
30
+ updatePointerPosition: (x: number, y: number) => void;
31
+ onPointerMoveOnScreen: (x: number, y: number) => true | undefined;
32
+ /**
33
+ * Repaint all canvas while user's pointer has entered the boundary.
34
+ */
28
35
  onPointerEnterBoundary: () => void;
36
+ /**
37
+ * Clear all canvas while user's pointer leave the bounary.
38
+ */
29
39
  onPointerLeaveBoundary: () => void;
30
- paintAll: (frame: number, force?: boolean | undefined) => void;
31
- resetAll: () => void;
40
+ /**
41
+ * The painting method that draw everything on your screen.
42
+ * @param frame current frame index, if this value is 0, it means all canvas
43
+ * should be cleaned.
44
+ * @param skipSamePointerPositionCheck Literally.
45
+ */
46
+ private paintAll;
47
+ /**
48
+ * Clear all canvas.
49
+ */
50
+ clearAll: (forAnimation: boolean) => void;
51
+ /**
52
+ * This is the effect while user pressed on the reveal highlight,
53
+ * the ripple start to spread slowly.
54
+ */
32
55
  initializeAnimation: () => void;
56
+ /**
57
+ * This is the effect while user released it's pointer, the spreading
58
+ * ripple animation will start to accelerate.
59
+ */
33
60
  switchAnimation: () => void;
34
- cleanUpAnimation: (config: CanvasConfig) => void;
35
- getRevealAnimationConfig: () => CanvasConfig | null;
61
+ /**
62
+ * Cleanup all animations.
63
+ * @param skipPaint Only cleanup data or also clean up the canvas
64
+ * @param forceClean Clean the canvas or not
65
+ */
66
+ cleanupAnimation: (skipPaint?: boolean | undefined, forceClean?: boolean | undefined) => void;
67
+ /**
68
+ * Clean up the config of an animation, but the canvas won't cleaned up.
69
+ * @param config The config to be cleaned up.
70
+ * @param skipPaint Skip painting.
71
+ * @param forceClean Force clear the painting.
72
+ */
73
+ cleanUpAnimationUnit: (config: Config, skipPaint?: boolean | undefined, forceClean?: boolean | undefined) => void;
74
+ getRevealAnimationConfig: () => Config | null;
36
75
  }
76
+ export {};
37
77
  //# sourceMappingURL=RevealBoundryStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RevealBoundryStore.d.ts","sourceRoot":"","sources":["../src/RevealBoundryStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,qBAAa,mBAAmB;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,WAAW,CAAC;IAGvB,OAAO,SAAS;IAChB,OAAO,SAAS;IAGhB,cAAc,SAAS;IACvB,cAAc,SAAS;IAEvB,eAAe,UAAS;IACxB,UAAU,EAAE,YAAY,EAAE,CAAM;IAEhC,cAAc,EAAE,YAAY,EAAE,CAAM;IACpC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IACrC,KAAK,UAAS;IAEd,cAAc,OAAQ;IACtB,cAAc,OAAQ;IACtB,0BAA0B,OAAQ;IAClC,4BAA4B,OAAQ;IACpC,6BAA6B,OAAQ;IACrC,0BAA0B,OAAQ;IAClC,YAAY,UAAS;IACrB,aAAa,UAAS;IAEtB,SAAS,SAAM;gBAEH,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW;IAKxC,SAAS,YAAa,iBAAiB,cAAc,WAAW,UAQ9D;IAEF,YAAY,QAAS,iBAAiB,UAIpC;IAEF,eAAe,MAAO,MAAM,UAE3B;IAED,qBAAqB,MAAO,MAAM,KAAK,MAAM,aAc5C;IAED,sBAAsB,aAMpB;IAEF,sBAAsB,aAGpB;IAEF,QAAQ,UAAW,MAAM,uCAkDvB;IAEF,QAAQ,aAKN;IAEF,mBAAmB,aAYjB;IAEF,eAAe,aASb;IAEF,gBAAgB,WAAY,YAAY,UAgBtC;IAEF,wBAAwB,4BAEtB;CACL"}
1
+ {"version":3,"file":"RevealBoundryStore.d.ts","sourceRoot":"","sources":["../src/RevealBoundryStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,aAAK,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;AAEvC,qBAAa,mBAAmB;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,WAAW,CAAC;IAGvB,OAAO,SAAS;IAChB,OAAO,SAAS;IAGhB,cAAc,SAAS;IACvB,cAAc,SAAS;IAEvB,eAAe,UAAS;IACxB,UAAU,EAAE,MAAM,EAAE,CAAM;IAE1B,cAAc,EAAE,MAAM,EAAE,CAAM;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAErC,cAAc,OAAQ;IACtB,cAAc,OAAQ;IACtB,0BAA0B,OAAQ;IAClC,4BAA4B,OAAQ;IACpC,6BAA6B,OAAQ;IACrC,0BAA0B,OAAQ;IAClC,YAAY,UAAS;IACrB,aAAa,UAAS;IAEtB,SAAS,SAAM;IAEf,uBAAuB,UAAS;gBAEpB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW;IAKxC,SAAS,aAAc,iBAAiB,GAAG,UAAU,cAAc,WAAW,UAiB5E;IAEF,YAAY,QAAS,iBAAiB,GAAG,UAAU,UAIjD;IAEF,eAAe,MAAO,MAAM,UAE1B;IAEF,eAAe,0CAQb;IAEF,qBAAqB,MAAO,MAAM,KAAK,MAAM,UAc5C;IAED,qBAAqB,MAAO,MAAM,KAAK,MAAM,sBAK3C;IAEF;;OAEG;IACH,sBAAsB,aAMpB;IAEF;;OAEG;IACH,sBAAsB,aAGpB;IAEF;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAsEd;IAEF;;OAEG;IACH,QAAQ,iBAAkB,OAAO,UAE/B;IAEF;;;OAGG;IACH,mBAAmB,aAYjB;IAEF;;;OAGG;IACH,eAAe,aAWb;IAEF;;;;OAIG;IACH,gBAAgB,8EAMf;IAED;;;;;OAKG;IACH,oBAAoB,WAAY,MAAM,6EAwBpC;IAEF,wBAAwB,sBAEtB;CACL"}
@@ -1,4 +1,5 @@
1
1
  import { CanvasConfig } from './CanvasConfig.js';
2
+ import { SvgConfig } from './SvgConfig.js';
2
3
  export class RevealBoundaryStore {
3
4
  constructor(id, $el) {
4
5
  // The current cursor position relative to window.
@@ -11,7 +12,6 @@ export class RevealBoundaryStore {
11
12
  this.canvasList = [];
12
13
  this.animationQueue = [];
13
14
  this.animationFrame = null;
14
- this.dirty = false;
15
15
  this.mouseUpClientX = null;
16
16
  this.mouseUpClientY = null;
17
17
  this.mouseDownAnimateStartFrame = null;
@@ -21,94 +21,156 @@ export class RevealBoundaryStore {
21
21
  this.mousePressed = false;
22
22
  this.mouseReleased = false;
23
23
  this.maxRadius = -1;
24
- this.addReveal = ($canvas, $container) => {
25
- const canvasConfig = new CanvasConfig(this, $canvas, $container);
26
- canvasConfig.cacheBoundingRect();
27
- canvasConfig.cacheCanvasPaintingStyle();
28
- canvasConfig.updateCachedBitmap();
29
- this.canvasList.push(canvasConfig);
24
+ this.requestedAnimationFrame = false;
25
+ this.addReveal = ($element, $container) => {
26
+ let config;
27
+ const elementType = Object.prototype.toString.call($element);
28
+ if (elementType === '[object HTMLCanvasElement]') {
29
+ config = new CanvasConfig(this, $element, $container);
30
+ }
31
+ else if (elementType === '[object SVGSVGElement]') {
32
+ config = new SvgConfig(this, $element, $container);
33
+ }
34
+ else {
35
+ throw new TypeError(`Unknown element type, got: ${elementType}, Canvas or SVG element expected.`);
36
+ }
37
+ config.cacheBoundingRect();
38
+ config.cacheCanvasPaintingStyle();
39
+ config.updateCachedBitmap();
40
+ this.canvasList.push(config);
30
41
  };
31
42
  this.removeReveal = ($el) => {
32
43
  this.canvasList = this.canvasList.filter((config) => {
33
- return config && config.canvas === $el;
44
+ return config && config.element !== $el;
34
45
  });
35
46
  };
36
47
  this.updateMaxRadius = (x) => {
37
48
  this.maxRadius = Math.max(x, this.maxRadius);
38
49
  };
39
- this.onPointerMoveOnScreen = (x, y) => {
50
+ this.requestPaintAll = (cleanup) => {
51
+ if (this.requestedAnimationFrame)
52
+ return;
53
+ this.requestedAnimationFrame = true;
54
+ this.animationFrame = window.requestAnimationFrame((frame) => {
55
+ this.requestedAnimationFrame = false;
56
+ this.paintAll(cleanup ? -1 : frame, true);
57
+ });
58
+ };
59
+ this.updatePointerPosition = (x, y) => {
60
+ this.clientX = x;
61
+ this.clientY = y;
40
62
  const boundingBox = this.container.getBoundingClientRect();
63
+ let mouseInBoundary = true;
41
64
  if (x < boundingBox.left - this.maxRadius)
42
- return false;
65
+ mouseInBoundary = false;
43
66
  if (x > boundingBox.right + this.maxRadius)
44
- return false;
67
+ mouseInBoundary = false;
45
68
  if (y < boundingBox.top - this.maxRadius)
46
- return false;
69
+ mouseInBoundary = false;
47
70
  if (y > boundingBox.bottom + this.maxRadius)
48
- return false;
49
- this.mouseInBoundary = true;
50
- this.clientX = x;
51
- this.clientY = y;
52
- this.animationFrame = window.requestAnimationFrame(this.paintAll);
71
+ mouseInBoundary = false;
72
+ this.mouseInBoundary = mouseInBoundary;
73
+ };
74
+ this.onPointerMoveOnScreen = (x, y) => {
75
+ this.updatePointerPosition(x, y);
76
+ if (!this.mouseInBoundary)
77
+ return;
78
+ this.requestPaintAll();
53
79
  return true;
54
80
  };
81
+ /**
82
+ * Repaint all canvas while user's pointer has entered the boundary.
83
+ */
55
84
  this.onPointerEnterBoundary = () => {
56
85
  this.mouseInBoundary = true;
57
86
  if (!this.animationFrame) {
58
- this.animationFrame = window.requestAnimationFrame(this.paintAll);
87
+ this.requestPaintAll();
59
88
  }
60
89
  };
90
+ /**
91
+ * Clear all canvas while user's pointer leave the bounary.
92
+ */
61
93
  this.onPointerLeaveBoundary = () => {
62
94
  this.mouseInBoundary = false;
63
- this.paintAll(0, true);
95
+ this.requestPaintAll(true);
64
96
  };
65
- this.paintAll = (frame, force) => {
66
- if (!force && !this.mouseInBoundary && this.animationQueue.length === 0) {
97
+ /**
98
+ * The painting method that draw everything on your screen.
99
+ * @param frame current frame index, if this value is 0, it means all canvas
100
+ * should be cleaned.
101
+ * @param skipSamePointerPositionCheck Literally.
102
+ */
103
+ this.paintAll = (frame, skipSamePointerPositionCheck) => {
104
+ if (!skipSamePointerPositionCheck && !this.mouseInBoundary && this.animationQueue.length === 0) {
67
105
  return;
68
106
  }
107
+ // Animation duration checkup
69
108
  for (let i = 0; i < this.animationQueue.length; i++) {
70
109
  const config = this.animationQueue[i];
71
110
  if (!frame || config.currentFrameId === frame) {
72
- return;
111
+ continue;
73
112
  }
74
113
  config.currentFrameId = frame;
114
+ // Initialize the animation parameter
75
115
  if (config.mouseDownAnimateStartFrame === null) {
76
116
  config.mouseDownAnimateStartFrame = frame;
77
117
  }
118
+ // Calculate how long the animation has been playing
78
119
  const relativeFrame = frame - config.mouseDownAnimateStartFrame;
79
120
  config.mouseDownAnimateCurrentFrame = relativeFrame;
80
121
  const speed = config.cachedStyle.pressAnimationSpeed;
81
122
  const accelerateRate = config.cachedStyle.releaseAnimationAccelerateRate;
123
+ // We assume that Ripple is a one-way linear process from
124
+ // no diffusion to fully diffused,
125
+ // and Logic Frame represents the progress of the animation
126
+ // in this process.
82
127
  let unitLogicFrame = relativeFrame;
83
128
  if (config.mouseReleased && config.mouseDownAnimateReleasedFrame) {
84
129
  unitLogicFrame += (relativeFrame - config.mouseDownAnimateReleasedFrame) * accelerateRate;
85
130
  }
86
131
  config.mouseDownAnimateLogicFrame = unitLogicFrame / speed;
87
132
  if (config.mouseDownAnimateLogicFrame > 1) {
88
- this.cleanUpAnimation(config);
133
+ // It will be cleaned later
134
+ config.cleanedUpForAnimation = true;
89
135
  }
90
136
  }
137
+ // Paint the canvas one by one
91
138
  for (let i = 0; i < this.canvasList.length; i++) {
92
139
  const config = this.canvasList[i];
93
140
  config.currentFrameId = frame;
94
- config.paint(force);
141
+ if (config.cleanedUpForAnimation) {
142
+ this.cleanUpAnimationUnit(config, false);
143
+ config.cleanedUpForAnimation = false;
144
+ }
145
+ else {
146
+ const isPlayingAnimation = this.animationQueue.indexOf(config) === -1;
147
+ if (this.mouseInBoundary || isPlayingAnimation) {
148
+ config.paint(skipSamePointerPositionCheck);
149
+ }
150
+ else {
151
+ config.clear(false);
152
+ }
153
+ }
95
154
  }
96
- this.dirty = true;
97
155
  this.paintedClientX = this.clientX;
98
156
  this.paintedClientY = this.clientY;
99
157
  if (this.mouseInBoundary || this.animationQueue.length !== 0) {
100
- this.animationFrame = window.requestAnimationFrame(this.paintAll);
158
+ this.requestPaintAll();
101
159
  }
102
160
  else {
103
161
  this.animationFrame = null;
104
162
  }
105
163
  };
106
- this.resetAll = () => {
107
- for (let i = 0; i < this.canvasList.length; i++) {
108
- const config = this.canvasList[i];
109
- config.paint();
110
- }
164
+ /**
165
+ * Clear all canvas.
166
+ */
167
+ this.clearAll = (forAnimation) => {
168
+ this.cleanupAnimation(forAnimation, true);
111
169
  };
170
+ /**
171
+ * This is the effect while user pressed on the reveal highlight,
172
+ * the ripple start to spread slowly.
173
+ */
112
174
  this.initializeAnimation = () => {
113
175
  const config = this.canvasList.find((x) => x.mouseInCanvas());
114
176
  if (!config)
@@ -120,17 +182,39 @@ export class RevealBoundaryStore {
120
182
  config.mousePressed = true;
121
183
  config.mouseReleased = false;
122
184
  };
185
+ /**
186
+ * This is the effect while user released it's pointer, the spreading
187
+ * ripple animation will start to accelerate.
188
+ */
123
189
  this.switchAnimation = () => {
124
- this.animationQueue.forEach((config) => {
190
+ for (let i = 0; i < this.animationQueue.length; i++) {
191
+ const config = this.animationQueue[i];
125
192
  if (!config.mouseReleased) {
126
193
  config.mouseReleased = true;
127
194
  config.mouseDownAnimateReleasedFrame = config.mouseDownAnimateCurrentFrame;
128
195
  config.mouseUpClientX = this.clientX;
129
196
  config.mouseUpClientY = this.clientY;
130
197
  }
131
- });
198
+ }
132
199
  };
133
- this.cleanUpAnimation = (config) => {
200
+ /**
201
+ * Cleanup all animations.
202
+ * @param skipPaint Only cleanup data or also clean up the canvas
203
+ * @param forceClean Clean the canvas or not
204
+ */
205
+ this.cleanupAnimation = (skipPaint, forceClean) => {
206
+ for (let i = 0; i < this.animationQueue.length; i++) {
207
+ const config = this.animationQueue[i];
208
+ this.cleanUpAnimationUnit(config, skipPaint, forceClean);
209
+ }
210
+ };
211
+ /**
212
+ * Clean up the config of an animation, but the canvas won't cleaned up.
213
+ * @param config The config to be cleaned up.
214
+ * @param skipPaint Skip painting.
215
+ * @param forceClean Force clear the painting.
216
+ */
217
+ this.cleanUpAnimationUnit = (config, skipPaint, forceClean) => {
134
218
  config.mouseUpClientX = null;
135
219
  config.mouseUpClientY = null;
136
220
  config.mouseDownAnimateStartFrame = null;
@@ -143,7 +227,17 @@ export class RevealBoundaryStore {
143
227
  if (configIdx > -1) {
144
228
  this.animationQueue.splice(configIdx, 1);
145
229
  }
146
- config.paint(true);
230
+ if (!skipPaint) {
231
+ if (forceClean) {
232
+ config.clear(false);
233
+ }
234
+ else if (this.mouseInBoundary) {
235
+ config.paint(true);
236
+ }
237
+ else {
238
+ config.clear(true);
239
+ }
240
+ }
147
241
  };
148
242
  this.getRevealAnimationConfig = () => {
149
243
  return this.canvasList.find((x) => x.mouseInCanvas()) || null;
@@ -1 +1 @@
1
- {"version":3,"file":"RevealBoundryStore.js","sourceRoot":"","sources":["../src/RevealBoundryStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RevealBoundryStore.js","sourceRoot":"","sources":["../src/RevealBoundryStore.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,9 @@ export declare class RevealStateManager {
6
6
  cachedMouseX: number;
7
7
  cachedMouseY: number;
8
8
  constructor();
9
+ pointerLeaveScheduled: boolean;
10
+ handlePointerLeave: () => void;
11
+ handlePointerMove: (event: PointerEvent) => void;
9
12
  traverseBoundaries: () => void;
10
13
  newBoundary: ($el: HTMLElement) => RevealBoundaryStore;
11
14
  removeBoundary: (store: RevealBoundaryStore) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"RevealStateManager.d.ts","sourceRoot":"","sources":["../src/RevealStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAI9D,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAA6B;IAE7C,OAAO,CAAC,2BAA2B,CAAS;IAC5C,YAAY,SAAM;IAClB,YAAY,SAAM;;IAkBlB,kBAAkB,aAKjB;IAED,WAAW,QAAS,WAAW,yBAO7B;IAEF,cAAc,UAAW,mBAAmB,UAE1C;CACL"}
1
+ {"version":3,"file":"RevealStateManager.d.ts","sourceRoot":"","sources":["../src/RevealStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAI9D,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAA6B;IAE7C,OAAO,CAAC,2BAA2B,CAAS;IAC5C,YAAY,SAAM;IAClB,YAAY,SAAM;;IAsBlB,qBAAqB,UAAS;IAE9B,kBAAkB,aAYjB;IAED,iBAAiB,UAAW,YAAY,UAQtC;IAEF,kBAAkB,aAKhB;IAEF,WAAW,QAAS,WAAW,yBAO7B;IAEF,cAAc,UAAW,mBAAmB,UAE1C;CACL"}
@@ -7,6 +7,26 @@ export class RevealStateManager {
7
7
  this.requestedTraverseBoundaries = false;
8
8
  this.cachedMouseX = -1;
9
9
  this.cachedMouseY = -1;
10
+ this.pointerLeaveScheduled = false;
11
+ this.handlePointerLeave = () => {
12
+ if (this.pointerLeaveScheduled)
13
+ return;
14
+ this.pointerLeaveScheduled = true;
15
+ window.requestAnimationFrame(() => {
16
+ for (let i = 0; i < this._storage.length; i++) {
17
+ this._storage[i].onPointerLeaveBoundary();
18
+ }
19
+ this.pointerLeaveScheduled = false;
20
+ });
21
+ };
22
+ this.handlePointerMove = (event) => {
23
+ this.cachedMouseX = event.clientX;
24
+ this.cachedMouseY = event.clientY;
25
+ if (!this.requestedTraverseBoundaries) {
26
+ window.requestAnimationFrame(this.traverseBoundaries);
27
+ this.requestedTraverseBoundaries = true;
28
+ }
29
+ };
10
30
  this.traverseBoundaries = () => {
11
31
  this.requestedTraverseBoundaries = false;
12
32
  for (let i = 0; i < this._storage.length; i++) {
@@ -20,18 +40,25 @@ export class RevealStateManager {
20
40
  return store;
21
41
  };
22
42
  this.removeBoundary = (store) => {
23
- this._storage = this._storage.filter(x => x !== store);
43
+ this._storage = this._storage.filter((x) => x !== store);
24
44
  };
25
45
  if (config.borderDetectionMode === 'experimentalAutoFit') {
26
46
  if (typeof Window === 'undefined')
27
47
  return;
28
- window.addEventListener('pointermove', (event) => {
29
- this.cachedMouseX = event.clientX;
30
- this.cachedMouseY = event.clientY;
31
- if (!this.requestedTraverseBoundaries) {
32
- window.requestAnimationFrame(this.traverseBoundaries);
33
- this.requestedTraverseBoundaries = true;
34
- }
48
+ window.addEventListener('pointermove', this.handlePointerMove);
49
+ // This is for touch screen
50
+ // Window.pointerleave won't be triggered if the finger
51
+ // leave the screen, so we use pointer up here.
52
+ window.addEventListener('pointerup', (ev) => {
53
+ if (ev.pointerType !== 'mouse')
54
+ this.handlePointerLeave();
55
+ });
56
+ // This is for desktop
57
+ // If the mouse leave the window, we need to terminate
58
+ // all animations and clean up the canvas.
59
+ window.addEventListener('pointerleave', (ev) => {
60
+ if (ev.pointerType === 'mouse')
61
+ this.handlePointerLeave();
35
62
  });
36
63
  }
37
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RevealStateManager.js","sourceRoot":"","sources":["../src/RevealStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAO,kBAAkB;IAQ3B;QAPQ,mBAAc,GAAG,CAAC,CAAC;QACnB,aAAQ,GAA0B,EAAE,CAAC;QAErC,gCAA2B,GAAG,KAAK,CAAC;QAC5C,iBAAY,GAAG,CAAC,CAAC,CAAC;QAClB,iBAAY,GAAG,CAAC,CAAC,CAAC;QAkBlB,uBAAkB,GAAG,GAAG,EAAE;YACtB,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aAChF;QACL,CAAC,CAAA;QAED,gBAAW,GAAG,CAAC,GAAgB,EAAE,EAAE;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAErC,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1B,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QAEF,mBAAc,GAAG,CAAC,KAA0B,EAAE,EAAE;YAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QAC3D,CAAC,CAAC;QAjCE,IAAI,MAAM,CAAC,mBAAmB,KAAK,qBAAqB,EAAE;YACtD,IAAI,OAAO,MAAM,KAAK,WAAW;gBAAE,OAAO;YAE1C,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC7C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;gBAElC,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;oBACnC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBACtD,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;iBAC3C;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;CAqBJ"}
1
+ {"version":3,"file":"RevealStateManager.js","sourceRoot":"","sources":["../src/RevealStateManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { RevealBoundaryStore } from './RevealBoundryStore.js';
2
+ import type { CachedRevealPath } from './utils/types.js';
3
+ import { BaseConfig } from './BaseConfig.js';
4
+ export declare class SvgConfig extends BaseConfig<SVGSVGElement> {
5
+ protected cachedImg: CachedRevealPath;
6
+ constructor(store: RevealBoundaryStore, $svg: SVGSVGElement, $container: HTMLElement);
7
+ updateCachedBitmap: () => void;
8
+ updateCachedReveal: () => void;
9
+ private updateAnimateGrd;
10
+ private updateGradientPosition;
11
+ private drawShape;
12
+ syncSizeToElement: (x: SVGSVGElement) => void;
13
+ clear: (forAnimation: boolean) => void;
14
+ private internalClear;
15
+ paint: (skipSamePointerPositionCheck?: boolean | undefined) => boolean;
16
+ }
17
+ //# sourceMappingURL=SvgConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgConfig.d.ts","sourceRoot":"","sources":["../src/SvgConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,SAAU,SAAQ,UAAU,CAAC,aAAa,CAAC;IACpD,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC;gBAE1B,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW;IAuDpF,kBAAkB,aACjB;IAED,kBAAkB,aA2BhB;IAEF,OAAO,CAAC,gBAAgB,CA0BtB;IAEF,OAAO,CAAC,sBAAsB,CAQ7B;IAED,OAAO,CAAC,SAAS,CAgJf;IAEF,iBAAiB,MAAO,aAAa,UASnC;IAEF,KAAK,iBAAkB,OAAO,UAI7B;IAED,OAAO,CAAC,aAAa,CAWpB;IAED,KAAK,0DAA6C,OAAO,CA8GvD;CACL"}