@ngxsmk/cdk 1.3.2 → 3.0.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 (199) hide show
  1. package/README.md +1 -1
  2. package/cva-base/cva-base.d.ts +34 -0
  3. package/cva-base/cva-base.d.ts.map +1 -0
  4. package/cva-base/index.d.ts +2 -0
  5. package/cva-base/index.d.ts.map +1 -0
  6. package/cva-base/ngxsmk-cdk-cva-base.d.ts.map +1 -0
  7. package/esm2022/cva-base/cva-base.mjs +45 -0
  8. package/esm2022/cva-base/index.mjs +2 -0
  9. package/esm2022/cva-base/ngxsmk-cdk-cva-base.mjs +5 -0
  10. package/esm2022/input-group/index.mjs +3 -0
  11. package/esm2022/input-group/input-group-engine.mjs +219 -0
  12. package/esm2022/input-group/models/index.mjs +2 -0
  13. package/esm2022/input-group/models/input-group.model.mjs +2 -0
  14. package/esm2022/input-group/ngxsmk-cdk-input-group.mjs +5 -0
  15. package/esm2022/listbox-keyboard/index.mjs +2 -0
  16. package/esm2022/listbox-keyboard/listbox-keyboard.mjs +145 -0
  17. package/esm2022/listbox-keyboard/ngxsmk-cdk-listbox-keyboard.mjs +5 -0
  18. package/esm2022/public-api.mjs +10 -1
  19. package/esm2022/roving-focus/index.mjs +2 -0
  20. package/esm2022/roving-focus/ngxsmk-cdk-roving-focus.mjs +5 -0
  21. package/esm2022/roving-focus/roving-focus.mjs +176 -0
  22. package/esm2022/scheduler/index.mjs +5 -0
  23. package/esm2022/scheduler/models/date-range.mjs +2 -0
  24. package/esm2022/scheduler/models/event.model.mjs +2 -0
  25. package/esm2022/scheduler/models/index.mjs +6 -0
  26. package/esm2022/scheduler/models/resource.model.mjs +5 -0
  27. package/esm2022/scheduler/models/selection.model.mjs +7 -0
  28. package/esm2022/scheduler/models/view.model.mjs +7 -0
  29. package/esm2022/scheduler/ngxsmk-cdk-scheduler.mjs +5 -0
  30. package/esm2022/scheduler/plugin/drag-plugin.mjs +82 -0
  31. package/esm2022/scheduler/plugin/index.mjs +8 -0
  32. package/esm2022/scheduler/plugin/keyboard-plugin.mjs +150 -0
  33. package/esm2022/scheduler/plugin/plugin-host.mjs +48 -0
  34. package/esm2022/scheduler/plugin/plugin.types.mjs +2 -0
  35. package/esm2022/scheduler/plugin/resize-plugin.mjs +74 -0
  36. package/esm2022/scheduler/plugin/selection-plugin.mjs +84 -0
  37. package/esm2022/scheduler/plugin/tooltip-plugin.mjs +103 -0
  38. package/esm2022/scheduler/scheduler-engine.mjs +316 -0
  39. package/esm2022/scheduler/utils/date-utils.mjs +131 -0
  40. package/esm2022/scheduler/utils/index.mjs +3 -0
  41. package/esm2022/scheduler/utils/snap.mjs +24 -0
  42. package/esm2022/scroll-lock/scroll-lock.mjs +22 -5
  43. package/esm2022/skip-link/index.mjs +2 -0
  44. package/esm2022/skip-link/ngxsmk-cdk-skip-link.mjs +5 -0
  45. package/esm2022/skip-link/skip-link.mjs +33 -0
  46. package/esm2022/spreadsheet/index.mjs +5 -0
  47. package/esm2022/spreadsheet/models/cell.model.mjs +2 -0
  48. package/esm2022/spreadsheet/models/column.model.mjs +2 -0
  49. package/esm2022/spreadsheet/models/filter.model.mjs +2 -0
  50. package/esm2022/spreadsheet/models/formula.model.mjs +2 -0
  51. package/esm2022/spreadsheet/models/index.mjs +8 -0
  52. package/esm2022/spreadsheet/models/row.model.mjs +2 -0
  53. package/esm2022/spreadsheet/models/selection.model.mjs +2 -0
  54. package/esm2022/spreadsheet/models/sort.model.mjs +2 -0
  55. package/esm2022/spreadsheet/ngxsmk-cdk-spreadsheet.mjs +5 -0
  56. package/esm2022/spreadsheet/plugin/clipboard-plugin.mjs +171 -0
  57. package/esm2022/spreadsheet/plugin/filter-plugin.mjs +87 -0
  58. package/esm2022/spreadsheet/plugin/formula-plugin.mjs +456 -0
  59. package/esm2022/spreadsheet/plugin/index.mjs +10 -0
  60. package/esm2022/spreadsheet/plugin/plugin-host.mjs +188 -0
  61. package/esm2022/spreadsheet/plugin/plugin.types.mjs +2 -0
  62. package/esm2022/spreadsheet/plugin/selection-plugin.mjs +114 -0
  63. package/esm2022/spreadsheet/plugin/sort-plugin.mjs +63 -0
  64. package/esm2022/spreadsheet/plugin/undo-plugin.mjs +138 -0
  65. package/esm2022/spreadsheet/plugin/validation-plugin.mjs +71 -0
  66. package/esm2022/spreadsheet/spreadsheet-engine.mjs +547 -0
  67. package/esm2022/spreadsheet/utils/cell-utils.mjs +129 -0
  68. package/esm2022/spreadsheet/utils/index.mjs +2 -0
  69. package/fesm2022/ngxsmk-cdk-cva-base.mjs +52 -0
  70. package/fesm2022/ngxsmk-cdk-cva-base.mjs.map +1 -0
  71. package/fesm2022/ngxsmk-cdk-input-group.mjs +226 -0
  72. package/fesm2022/ngxsmk-cdk-input-group.mjs.map +1 -0
  73. package/fesm2022/ngxsmk-cdk-listbox-keyboard.mjs +152 -0
  74. package/fesm2022/ngxsmk-cdk-listbox-keyboard.mjs.map +1 -0
  75. package/fesm2022/ngxsmk-cdk-roving-focus.mjs +183 -0
  76. package/fesm2022/ngxsmk-cdk-roving-focus.mjs.map +1 -0
  77. package/fesm2022/ngxsmk-cdk-scheduler.mjs +1035 -0
  78. package/fesm2022/ngxsmk-cdk-scheduler.mjs.map +1 -0
  79. package/fesm2022/ngxsmk-cdk-scroll-lock.mjs +21 -4
  80. package/fesm2022/ngxsmk-cdk-scroll-lock.mjs.map +1 -1
  81. package/fesm2022/ngxsmk-cdk-skip-link.mjs +40 -0
  82. package/fesm2022/ngxsmk-cdk-skip-link.mjs.map +1 -0
  83. package/fesm2022/ngxsmk-cdk-spreadsheet.mjs +1969 -0
  84. package/fesm2022/ngxsmk-cdk-spreadsheet.mjs.map +1 -0
  85. package/fesm2022/ngxsmk-cdk.mjs +5 -0
  86. package/fesm2022/ngxsmk-cdk.mjs.map +1 -1
  87. package/input-group/index.d.ts +3 -0
  88. package/input-group/index.d.ts.map +1 -0
  89. package/input-group/input-group-engine.d.ts +88 -0
  90. package/input-group/input-group-engine.d.ts.map +1 -0
  91. package/input-group/models/index.d.ts +2 -0
  92. package/input-group/models/index.d.ts.map +1 -0
  93. package/input-group/models/input-group.model.d.ts +114 -0
  94. package/input-group/models/input-group.model.d.ts.map +1 -0
  95. package/input-group/ngxsmk-cdk-input-group.d.ts.map +1 -0
  96. package/listbox-keyboard/index.d.ts +2 -0
  97. package/listbox-keyboard/index.d.ts.map +1 -0
  98. package/listbox-keyboard/listbox-keyboard.d.ts +60 -0
  99. package/listbox-keyboard/listbox-keyboard.d.ts.map +1 -0
  100. package/listbox-keyboard/ngxsmk-cdk-listbox-keyboard.d.ts.map +1 -0
  101. package/package.json +59 -17
  102. package/public-api.d.ts +8 -0
  103. package/public-api.d.ts.map +1 -1
  104. package/roving-focus/index.d.ts +2 -0
  105. package/roving-focus/index.d.ts.map +1 -0
  106. package/roving-focus/ngxsmk-cdk-roving-focus.d.ts.map +1 -0
  107. package/roving-focus/roving-focus.d.ts +61 -0
  108. package/roving-focus/roving-focus.d.ts.map +1 -0
  109. package/scheduler/index.d.ts +5 -0
  110. package/scheduler/index.d.ts.map +1 -0
  111. package/scheduler/models/date-range.d.ts +6 -0
  112. package/scheduler/models/date-range.d.ts.map +1 -0
  113. package/scheduler/models/event.model.d.ts +50 -0
  114. package/scheduler/models/event.model.d.ts.map +1 -0
  115. package/scheduler/models/index.d.ts +6 -0
  116. package/scheduler/models/index.d.ts.map +1 -0
  117. package/scheduler/models/resource.model.d.ts +16 -0
  118. package/scheduler/models/resource.model.d.ts.map +1 -0
  119. package/scheduler/models/selection.model.d.ts +12 -0
  120. package/scheduler/models/selection.model.d.ts.map +1 -0
  121. package/scheduler/models/view.model.d.ts +21 -0
  122. package/scheduler/models/view.model.d.ts.map +1 -0
  123. package/scheduler/ngxsmk-cdk-scheduler.d.ts.map +1 -0
  124. package/scheduler/plugin/drag-plugin.d.ts +28 -0
  125. package/scheduler/plugin/drag-plugin.d.ts.map +1 -0
  126. package/scheduler/plugin/index.d.ts +8 -0
  127. package/scheduler/plugin/index.d.ts.map +1 -0
  128. package/scheduler/plugin/keyboard-plugin.d.ts +24 -0
  129. package/scheduler/plugin/keyboard-plugin.d.ts.map +1 -0
  130. package/scheduler/plugin/plugin-host.d.ts +16 -0
  131. package/scheduler/plugin/plugin-host.d.ts.map +1 -0
  132. package/scheduler/plugin/plugin.types.d.ts +9 -0
  133. package/scheduler/plugin/plugin.types.d.ts.map +1 -0
  134. package/scheduler/plugin/resize-plugin.d.ts +26 -0
  135. package/scheduler/plugin/resize-plugin.d.ts.map +1 -0
  136. package/scheduler/plugin/selection-plugin.d.ts +40 -0
  137. package/scheduler/plugin/selection-plugin.d.ts.map +1 -0
  138. package/scheduler/plugin/tooltip-plugin.d.ts +41 -0
  139. package/scheduler/plugin/tooltip-plugin.d.ts.map +1 -0
  140. package/scheduler/scheduler-engine.d.ts +95 -0
  141. package/scheduler/scheduler-engine.d.ts.map +1 -0
  142. package/scheduler/utils/date-utils.d.ts +26 -0
  143. package/scheduler/utils/date-utils.d.ts.map +1 -0
  144. package/scheduler/utils/index.d.ts +3 -0
  145. package/scheduler/utils/index.d.ts.map +1 -0
  146. package/scheduler/utils/snap.d.ts +7 -0
  147. package/scheduler/utils/snap.d.ts.map +1 -0
  148. package/scroll-lock/scroll-lock.d.ts +2 -0
  149. package/scroll-lock/scroll-lock.d.ts.map +1 -1
  150. package/skip-link/index.d.ts +2 -0
  151. package/skip-link/index.d.ts.map +1 -0
  152. package/skip-link/ngxsmk-cdk-skip-link.d.ts.map +1 -0
  153. package/skip-link/skip-link.d.ts +18 -0
  154. package/skip-link/skip-link.d.ts.map +1 -0
  155. package/spreadsheet/index.d.ts +5 -0
  156. package/spreadsheet/index.d.ts.map +1 -0
  157. package/spreadsheet/models/cell.model.d.ts +44 -0
  158. package/spreadsheet/models/cell.model.d.ts.map +1 -0
  159. package/spreadsheet/models/column.model.d.ts +77 -0
  160. package/spreadsheet/models/column.model.d.ts.map +1 -0
  161. package/spreadsheet/models/filter.model.d.ts +15 -0
  162. package/spreadsheet/models/filter.model.d.ts.map +1 -0
  163. package/spreadsheet/models/formula.model.d.ts +65 -0
  164. package/spreadsheet/models/formula.model.d.ts.map +1 -0
  165. package/spreadsheet/models/index.d.ts +8 -0
  166. package/spreadsheet/models/index.d.ts.map +1 -0
  167. package/spreadsheet/models/row.model.d.ts +33 -0
  168. package/spreadsheet/models/row.model.d.ts.map +1 -0
  169. package/spreadsheet/models/selection.model.d.ts +18 -0
  170. package/spreadsheet/models/selection.model.d.ts.map +1 -0
  171. package/spreadsheet/models/sort.model.d.ts +14 -0
  172. package/spreadsheet/models/sort.model.d.ts.map +1 -0
  173. package/spreadsheet/ngxsmk-cdk-spreadsheet.d.ts.map +1 -0
  174. package/spreadsheet/plugin/clipboard-plugin.d.ts +24 -0
  175. package/spreadsheet/plugin/clipboard-plugin.d.ts.map +1 -0
  176. package/spreadsheet/plugin/filter-plugin.d.ts +21 -0
  177. package/spreadsheet/plugin/filter-plugin.d.ts.map +1 -0
  178. package/spreadsheet/plugin/formula-plugin.d.ts +39 -0
  179. package/spreadsheet/plugin/formula-plugin.d.ts.map +1 -0
  180. package/spreadsheet/plugin/index.d.ts +10 -0
  181. package/spreadsheet/plugin/index.d.ts.map +1 -0
  182. package/spreadsheet/plugin/plugin-host.d.ts +66 -0
  183. package/spreadsheet/plugin/plugin-host.d.ts.map +1 -0
  184. package/spreadsheet/plugin/plugin.types.d.ts +58 -0
  185. package/spreadsheet/plugin/plugin.types.d.ts.map +1 -0
  186. package/spreadsheet/plugin/selection-plugin.d.ts +28 -0
  187. package/spreadsheet/plugin/selection-plugin.d.ts.map +1 -0
  188. package/spreadsheet/plugin/sort-plugin.d.ts +18 -0
  189. package/spreadsheet/plugin/sort-plugin.d.ts.map +1 -0
  190. package/spreadsheet/plugin/undo-plugin.d.ts +40 -0
  191. package/spreadsheet/plugin/undo-plugin.d.ts.map +1 -0
  192. package/spreadsheet/plugin/validation-plugin.d.ts +29 -0
  193. package/spreadsheet/plugin/validation-plugin.d.ts.map +1 -0
  194. package/spreadsheet/spreadsheet-engine.d.ts +194 -0
  195. package/spreadsheet/spreadsheet-engine.d.ts.map +1 -0
  196. package/spreadsheet/utils/cell-utils.d.ts +26 -0
  197. package/spreadsheet/utils/cell-utils.d.ts.map +1 -0
  198. package/spreadsheet/utils/index.d.ts +2 -0
  199. package/spreadsheet/utils/index.d.ts.map +1 -0
@@ -1,5 +1,5 @@
1
- import { Injectable, inject } from '@angular/core';
2
- import { DOCUMENT } from '@angular/common';
1
+ import { Injectable, inject, PLATFORM_ID } from '@angular/core';
2
+ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
5
5
  * Locks body scrolling (for dialogs, drawers, sheets). Reference-counted so
@@ -9,31 +9,48 @@ import * as i0 from "@angular/core";
9
9
  export class NgxsmkScrollLock {
10
10
  constructor() {
11
11
  this.document = inject(DOCUMENT);
12
+ this.platformId = inject(PLATFORM_ID);
12
13
  this.locks = 0;
13
14
  this.previousOverflow = '';
14
15
  this.previousPaddingRight = '';
16
+ this.previousOverscroll = '';
15
17
  }
16
18
  lock() {
19
+ if (!isPlatformBrowser(this.platformId)) {
20
+ return;
21
+ }
17
22
  if (this.locks++ > 0) {
18
23
  return;
19
24
  }
20
- const body = this.document.body;
25
+ const body = this.document?.body;
26
+ if (!body) {
27
+ return;
28
+ }
21
29
  const window = this.document.defaultView;
22
30
  const scrollbar = window ? window.innerWidth - this.document.documentElement.clientWidth : 0;
23
31
  this.previousOverflow = body.style.overflow;
24
32
  this.previousPaddingRight = body.style.paddingRight;
33
+ this.previousOverscroll = body.style.overscrollBehavior;
25
34
  body.style.overflow = 'hidden';
35
+ body.style.overscrollBehavior = 'none';
26
36
  if (scrollbar > 0) {
27
37
  body.style.paddingRight = `${scrollbar}px`;
28
38
  }
29
39
  }
30
40
  unlock() {
41
+ if (!isPlatformBrowser(this.platformId)) {
42
+ return;
43
+ }
31
44
  if (this.locks === 0 || --this.locks > 0) {
32
45
  return;
33
46
  }
34
- const body = this.document.body;
47
+ const body = this.document?.body;
48
+ if (!body) {
49
+ return;
50
+ }
35
51
  body.style.overflow = this.previousOverflow;
36
52
  body.style.paddingRight = this.previousPaddingRight;
53
+ body.style.overscrollBehavior = this.previousOverscroll;
37
54
  }
38
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkScrollLock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
39
56
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkScrollLock, providedIn: 'root' }); }
@@ -42,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
42
59
  type: Injectable,
43
60
  args: [{ providedIn: 'root' }]
44
61
  }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2Nyb2xsLWxvY2svc2Nyb2xsLWxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUzQzs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVtQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JDLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIseUJBQW9CLEdBQUcsRUFBRSxDQUFDO0tBMEJuQztJQXhCQyxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQzVDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDL0IsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsR0FBRyxTQUFTLElBQUksQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDdEQsQ0FBQzs4R0E3QlUsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FESCxNQUFNOzsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIExvY2tzIGJvZHkgc2Nyb2xsaW5nIChmb3IgZGlhbG9ncywgZHJhd2Vycywgc2hlZXRzKS4gUmVmZXJlbmNlLWNvdW50ZWQgc29cbiAqIG5lc3RlZCBvdmVybGF5cyBjYW4gbG9jayBpbmRlcGVuZGVudGx5OyBjb21wZW5zYXRlcyBmb3Igc2Nyb2xsYmFyIHdpZHRoIHRvXG4gKiBwcmV2ZW50IGxheW91dCBzaGlmdC5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOZ3hzbWtTY3JvbGxMb2NrIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgbG9ja3MgPSAwO1xuICBwcml2YXRlIHByZXZpb3VzT3ZlcmZsb3cgPSAnJztcbiAgcHJpdmF0ZSBwcmV2aW91c1BhZGRpbmdSaWdodCA9ICcnO1xuXG4gIGxvY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9ja3MrKyA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYm9keSA9IHRoaXMuZG9jdW1lbnQuYm9keTtcbiAgICBjb25zdCB3aW5kb3cgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgIGNvbnN0IHNjcm9sbGJhciA9IHdpbmRvdyA/IHdpbmRvdy5pbm5lcldpZHRoIC0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggOiAwO1xuXG4gICAgdGhpcy5wcmV2aW91c092ZXJmbG93ID0gYm9keS5zdHlsZS5vdmVyZmxvdztcbiAgICB0aGlzLnByZXZpb3VzUGFkZGluZ1JpZ2h0ID0gYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ7XG4gICAgYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgIGlmIChzY3JvbGxiYXIgPiAwKSB7XG4gICAgICBib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke3Njcm9sbGJhcn1weGA7XG4gICAgfVxuICB9XG5cbiAgdW5sb2NrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvY2tzID09PSAwIHx8IC0tdGhpcy5sb2NrcyA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYm9keSA9IHRoaXMuZG9jdW1lbnQuYm9keTtcbiAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gdGhpcy5wcmV2aW91c092ZXJmbG93O1xuICAgIGJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ID0gdGhpcy5wcmV2aW91c1BhZGRpbmdSaWdodDtcbiAgfVxufVxuIl19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2Nyb2xsLWxvY2svc2Nyb2xsLWxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFOUQ7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFbUIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQzFCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztLQTBDakM7SUF4Q0MsSUFBSTtRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQzVDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUNwRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUV4RCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUM7UUFDdkMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsR0FBRyxTQUFTLElBQUksQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUMxRCxDQUFDOzhHQS9DVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQURILE1BQU07OzJGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBMb2NrcyBib2R5IHNjcm9sbGluZyAoZm9yIGRpYWxvZ3MsIGRyYXdlcnMsIHNoZWV0cykuIFJlZmVyZW5jZS1jb3VudGVkIHNvXG4gKiBuZXN0ZWQgb3ZlcmxheXMgY2FuIGxvY2sgaW5kZXBlbmRlbnRseTsgY29tcGVuc2F0ZXMgZm9yIHNjcm9sbGJhciB3aWR0aCB0b1xuICogcHJldmVudCBsYXlvdXQgc2hpZnQuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTmd4c21rU2Nyb2xsTG9jayB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIGxvY2tzID0gMDtcbiAgcHJpdmF0ZSBwcmV2aW91c092ZXJmbG93ID0gJyc7XG4gIHByaXZhdGUgcHJldmlvdXNQYWRkaW5nUmlnaHQgPSAnJztcbiAgcHJpdmF0ZSBwcmV2aW91c092ZXJzY3JvbGwgPSAnJztcblxuICBsb2NrKCk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5sb2NrcysrID4gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gdGhpcy5kb2N1bWVudD8uYm9keTtcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgd2luZG93ID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldztcbiAgICBjb25zdCBzY3JvbGxiYXIgPSB3aW5kb3cgPyB3aW5kb3cuaW5uZXJXaWR0aCAtIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDogMDtcblxuICAgIHRoaXMucHJldmlvdXNPdmVyZmxvdyA9IGJvZHkuc3R5bGUub3ZlcmZsb3c7XG4gICAgdGhpcy5wcmV2aW91c1BhZGRpbmdSaWdodCA9IGJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0O1xuICAgIHRoaXMucHJldmlvdXNPdmVyc2Nyb2xsID0gYm9keS5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3I7XG5cbiAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgYm9keS5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3IgPSAnbm9uZSc7XG4gICAgaWYgKHNjcm9sbGJhciA+IDApIHtcbiAgICAgIGJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ID0gYCR7c2Nyb2xsYmFyfXB4YDtcbiAgICB9XG4gIH1cblxuICB1bmxvY2soKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmxvY2tzID09PSAwIHx8IC0tdGhpcy5sb2NrcyA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYm9keSA9IHRoaXMuZG9jdW1lbnQ/LmJvZHk7XG4gICAgaWYgKCFib2R5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSB0aGlzLnByZXZpb3VzT3ZlcmZsb3c7XG4gICAgYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSB0aGlzLnByZXZpb3VzUGFkZGluZ1JpZ2h0O1xuICAgIGJvZHkuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yID0gdGhpcy5wcmV2aW91c092ZXJzY3JvbGw7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './skip-link';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2tpcC1saW5rL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9za2lwLWxpbmsnO1xuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1za2lwLWxpbmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2tpcC1saW5rL25neHNtay1jZGstc2tpcC1saW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,33 @@
1
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Accessible skip navigation link for keyboard users to bypass repetitive header navigation.
5
+ * Renders off-screen by default, sliding into view when focused via Tab.
6
+ *
7
+ * ```html
8
+ * <ngxsmk-skip-link targetId="main-content" label="Skip to main content" />
9
+ * ```
10
+ */
11
+ export class NgxsmkSkipLink {
12
+ constructor() {
13
+ /** Target HTML ID anchor to scroll/focus to. Default: 'main-content'. */
14
+ this.targetId = input('main-content');
15
+ /** Label text rendered inside the skip link. Default: 'Skip to content'. */
16
+ this.label = input('Skip to content');
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkSkipLink, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.0", type: NgxsmkSkipLink, isStandalone: true, selector: "ngxsmk-skip-link", inputs: { targetId: { classPropertyName: "targetId", publicName: "targetId", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
20
+ <a [href]="'#' + targetId()" class="ngxsmk-skip-link">
21
+ {{ label() }}
22
+ </a>
23
+ `, isInline: true, styles: [".ngxsmk-skip-link{position:absolute;top:-9999px;inset-inline-start:var(--ngxsmk-space-4, 1rem);z-index:var(--ngxsmk-z-popover, 1000);padding:var(--ngxsmk-space-3, .75rem) var(--ngxsmk-space-4, 1rem);background:var(--ngxsmk-color-primary, #7c3aed);color:var(--ngxsmk-color-on-primary, #ffffff);font-family:var(--ngxsmk-font-sans, system-ui);font-size:var(--ngxsmk-text-body-sm-size, .875rem);font-weight:600;text-decoration:none;border-radius:var(--ngxsmk-radius-md, .375rem);box-shadow:var(--ngxsmk-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, .1));outline:none;transition:top .15s ease-out}.ngxsmk-skip-link:focus{top:var(--ngxsmk-space-4, 1rem);box-shadow:var(--ngxsmk-focus-ring)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkSkipLink, decorators: [{
26
+ type: Component,
27
+ args: [{ standalone: true, selector: 'ngxsmk-skip-link', template: `
28
+ <a [href]="'#' + targetId()" class="ngxsmk-skip-link">
29
+ {{ label() }}
30
+ </a>
31
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".ngxsmk-skip-link{position:absolute;top:-9999px;inset-inline-start:var(--ngxsmk-space-4, 1rem);z-index:var(--ngxsmk-z-popover, 1000);padding:var(--ngxsmk-space-3, .75rem) var(--ngxsmk-space-4, 1rem);background:var(--ngxsmk-color-primary, #7c3aed);color:var(--ngxsmk-color-on-primary, #ffffff);font-family:var(--ngxsmk-font-sans, system-ui);font-size:var(--ngxsmk-text-body-sm-size, .875rem);font-weight:600;text-decoration:none;border-radius:var(--ngxsmk-radius-md, .375rem);box-shadow:var(--ngxsmk-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, .1));outline:none;transition:top .15s ease-out}.ngxsmk-skip-link:focus{top:var(--ngxsmk-space-4, 1rem);box-shadow:var(--ngxsmk-focus-ring)}\n"] }]
32
+ }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcC1saW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3NraXAtbGluay9za2lwLWxpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTFFOzs7Ozs7O0dBT0c7QUFtQ0gsTUFBTSxPQUFPLGNBQWM7SUFsQzNCO1FBbUNFLHlFQUF5RTtRQUNoRSxhQUFRLEdBQUcsS0FBSyxDQUFTLGNBQWMsQ0FBQyxDQUFDO1FBRWxELDRFQUE0RTtRQUNuRSxVQUFLLEdBQUcsS0FBSyxDQUFTLGlCQUFpQixDQUFDLENBQUM7S0FDbkQ7OEdBTlksY0FBYztrR0FBZCxjQUFjLGlWQS9CZjs7OztHQUlUOzsyRkEyQlUsY0FBYztrQkFsQzFCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGtCQUFrQixZQUNsQjs7OztHQUlULG1CQXlCZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQWNjZXNzaWJsZSBza2lwIG5hdmlnYXRpb24gbGluayBmb3Iga2V5Ym9hcmQgdXNlcnMgdG8gYnlwYXNzIHJlcGV0aXRpdmUgaGVhZGVyIG5hdmlnYXRpb24uXG4gKiBSZW5kZXJzIG9mZi1zY3JlZW4gYnkgZGVmYXVsdCwgc2xpZGluZyBpbnRvIHZpZXcgd2hlbiBmb2N1c2VkIHZpYSBUYWIuXG4gKlxuICogYGBgaHRtbFxuICogPG5neHNtay1za2lwLWxpbmsgdGFyZ2V0SWQ9XCJtYWluLWNvbnRlbnRcIiBsYWJlbD1cIlNraXAgdG8gbWFpbiBjb250ZW50XCIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICduZ3hzbWstc2tpcC1saW5rJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YSBbaHJlZl09XCInIycgKyB0YXJnZXRJZCgpXCIgY2xhc3M9XCJuZ3hzbWstc2tpcC1saW5rXCI+XG4gICAgICB7eyBsYWJlbCgpIH19XG4gICAgPC9hPlxuICBgLFxuICBzdHlsZXM6IGBcbiAgICAubmd4c21rLXNraXAtbGluayB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IC05OTk5cHg7XG4gICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IHZhcigtLW5neHNtay1zcGFjZS00LCAxcmVtKTtcbiAgICAgIHotaW5kZXg6IHZhcigtLW5neHNtay16LXBvcG92ZXIsIDEwMDApO1xuICAgICAgcGFkZGluZzogdmFyKC0tbmd4c21rLXNwYWNlLTMsIDAuNzVyZW0pIHZhcigtLW5neHNtay1zcGFjZS00LCAxcmVtKTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5LCAjN2MzYWVkKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSwgI2ZmZmZmZik7XG4gICAgICBmb250LWZhbWlseTogdmFyKC0tbmd4c21rLWZvbnQtc2Fucywgc3lzdGVtLXVpKTtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbmd4c21rLXRleHQtYm9keS1zbS1zaXplLCAwLjg3NXJlbSk7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbmd4c21rLXJhZGl1cy1tZCwgMC4zNzVyZW0pO1xuICAgICAgYm94LXNoYWRvdzogdmFyKC0tbmd4c21rLXNoYWRvdy1sZywgMCAxMHB4IDE1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIHRyYW5zaXRpb246IHRvcCAwLjE1cyBlYXNlLW91dDtcbiAgICB9XG5cbiAgICAubmd4c21rLXNraXAtbGluazpmb2N1cyB7XG4gICAgICB0b3A6IHZhcigtLW5neHNtay1zcGFjZS00LCAxcmVtKTtcbiAgICAgIGJveC1zaGFkb3c6IHZhcigtLW5neHNtay1mb2N1cy1yaW5nKTtcbiAgICB9XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hzbWtTa2lwTGluayB7XG4gIC8qKiBUYXJnZXQgSFRNTCBJRCBhbmNob3IgdG8gc2Nyb2xsL2ZvY3VzIHRvLiBEZWZhdWx0OiAnbWFpbi1jb250ZW50Jy4gKi9cbiAgcmVhZG9ubHkgdGFyZ2V0SWQgPSBpbnB1dDxzdHJpbmc+KCdtYWluLWNvbnRlbnQnKTtcblxuICAvKiogTGFiZWwgdGV4dCByZW5kZXJlZCBpbnNpZGUgdGhlIHNraXAgbGluay4gRGVmYXVsdDogJ1NraXAgdG8gY29udGVudCcuICovXG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQ8c3RyaW5nPignU2tpcCB0byBjb250ZW50Jyk7XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export * from './spreadsheet-engine';
2
+ export * from './models';
3
+ export * from './plugin';
4
+ export * from './utils';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc3ByZWFkc2hlZXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3ByZWFkc2hlZXQtZW5naW5lJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2luJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zcHJlYWRzaGVldC9tb2RlbHMvY2VsbC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFN1cHBvcnRlZCBjZWxsIHZhbHVlIHR5cGVzLiAqL1xuZXhwb3J0IHR5cGUgQ2VsbFZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4vKiogQ2VsbCB0eXBlIGRldGVybWluZXMgcmVuZGVyaW5nIGFuZCBlZGl0aW5nIGJlaGF2aW9yLiAqL1xuZXhwb3J0IHR5cGUgQ2VsbFR5cGUgPVxuICB8ICd0ZXh0J1xuICB8ICdudW1iZXInXG4gIHwgJ2N1cnJlbmN5J1xuICB8ICdwZXJjZW50YWdlJ1xuICB8ICdib29sZWFuJ1xuICB8ICdjaGVja2JveCdcbiAgfCAnZGF0ZSdcbiAgfCAnZGF0ZXRpbWUnXG4gIHwgJ3RpbWUnXG4gIHwgJ3NlbGVjdCdcbiAgfCAncmF0aW5nJ1xuICB8ICdwcm9ncmVzcydcbiAgfCAnbGluaydcbiAgfCAnaW1hZ2UnXG4gIHwgJ2ljb24nXG4gIHwgJ2JhZGdlJ1xuICB8ICdqc29uJ1xuICB8ICdjb2RlJ1xuICB8ICdodG1sJ1xuICB8ICdtYXJrZG93bidcbiAgfCAnY3VzdG9tJztcblxuLyoqIENlbGwgbWV0YWRhdGEgY2FycmllZCBhbG9uZ3NpZGUgdGhlIHJhdyB2YWx1ZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbE1ldGEge1xuICByZWFkb25seSB0eXBlOiBDZWxsVHlwZTtcbiAgcmVhZG9ubHkgZWRpdGFibGU/OiBib29sZWFuO1xuICByZWFkb25seSBzZWxlY3RhYmxlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2xhc3NOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBzdHlsZT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IGNvbFNwYW4/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHJvd1NwYW4/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHRvb2x0aXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFyaWFMYWJlbD86IHN0cmluZztcbiAgLyoqIFZhbGlkYXRpb24gZXJyb3JzIGFwcGxpZWQgdG8gdGhpcyBjZWxsLiAqL1xuICByZWFkb25seSBlcnJvcnM/OiBzdHJpbmdbXTtcbiAgLyoqIEN1c3RvbSBmb3JtYXR0aW5nIHN0cmluZyAoZS5nLiAnJCMsIyMwLjAwJyBmb3IgY3VycmVuY3kpLiAqL1xuICByZWFkb25seSBmb3JtYXQ/OiBzdHJpbmc7XG59XG5cbi8qKiBBIGNlbGwgaXMgYSB2YWx1ZSArIG1ldGFkYXRhIHBhaXIga2V5ZWQgYnkgaXRzIGNvbHVtbiBmaWVsZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbCB7XG4gIHJlYWRvbmx5IHZhbHVlOiBDZWxsVmFsdWU7XG4gIHJlYWRvbmx5IG1ldGE/OiBDZWxsTWV0YTtcbn1cblxuLyoqIEVkaXQgc3RhdGUgdHJhY2tzIHRoZSBsaWZlY3ljbGUgb2YgYW4gaW4tcHJvZ3Jlc3MgZWRpdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbEVkaXRTdGF0ZSB7XG4gIHJlYWRvbmx5IHJvd0luZGV4OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvbElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9yaWdpbmFsVmFsdWU6IENlbGxWYWx1ZTtcbiAgcmVhZG9ubHkgY3VycmVudFZhbHVlOiBDZWxsVmFsdWU7XG4gIHJlYWRvbmx5IGRpcnR5OiBib29sZWFuO1xufVxuXG4vKiogQ2VsbCBhZGRyZXNzIOKAkyByb3cgKyBjb2x1bW4gaW5kZXggcGFpci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbEFkZHJlc3Mge1xuICByZWFkb25seSByb3c6IG51bWJlcjtcbiAgcmVhZG9ubHkgY29sOiBudW1iZXI7XG59XG5cbi8qKiBSZWN0YW5ndWxhciBzZWxlY3Rpb24gcmFuZ2UgaW4gZ3JpZCBjb29yZGluYXRlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbFJhbmdlIHtcbiAgcmVhZG9ubHkgc3RhcnQ6IENlbGxBZGRyZXNzO1xuICByZWFkb25seSBlbmQ6IENlbGxBZGRyZXNzO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3NwcmVhZHNoZWV0L21vZGVscy9jb2x1bW4ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2VsbFR5cGUsIENlbGxNZXRhIH0gZnJvbSAnLi9jZWxsLm1vZGVsJztcblxuLyoqIFNvcnQgZGlyZWN0aW9uLiAqL1xuZXhwb3J0IHR5cGUgU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnIHwgbnVsbDtcblxuLyoqIENvbHVtbiB3aWR0aCBwcmVzZXQuICovXG5leHBvcnQgdHlwZSBDb2x1bW5XaWR0aFByZXNldCA9ICdhdXRvJyB8ICdjb21wYWN0JyB8ICdjb21mb3J0YWJsZScgfCAnd2lkZSc7XG5cbi8qKiBEZWZpbmVzIGEgY29sdW1uJ3Mgc2NoZW1hIGFuZCBiZWhhdmlvdXIuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkRlZiB7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciAvIGZpZWxkIGtleS4gKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgaGVhZGVyIHRleHQuICovXG4gIHJlYWRvbmx5IGhlYWRlcjogc3RyaW5nO1xuICAvKiogU3ViLWhlYWRlciAvIHNlY29uZGFyeSBsYWJlbC4gKi9cbiAgcmVhZG9ubHkgc3ViSGVhZGVyPzogc3RyaW5nO1xuICAvKiogVGhlIGNlbGwgdHlwZSBmb3IgYWxsIGNlbGxzIGluIHRoaXMgY29sdW1uLiBEZWZhdWx0cyB0byAndGV4dCcuICovXG4gIHJlYWRvbmx5IGNlbGxUeXBlPzogQ2VsbFR5cGU7XG4gIC8qKiBXaGV0aGVyIGNlbGxzIGluIHRoaXMgY29sdW1uIGFyZSBlZGl0YWJsZS4gKi9cbiAgcmVhZG9ubHkgZWRpdGFibGU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgY29sdW1uIGlzIHNvcnRhYmxlLiAqL1xuICByZWFkb25seSBzb3J0YWJsZT86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBjb2x1bW4gaXMgZmlsdGVyYWJsZS4gKi9cbiAgcmVhZG9ubHkgZmlsdGVyYWJsZT86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBjb2x1bW4gaXMgcmVzaXphYmxlLiAqL1xuICByZWFkb25seSByZXNpemFibGU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgY29sdW1uIGNhbiBiZSByZW9yZGVyZWQgdmlhIGRyYWcuICovXG4gIHJlYWRvbmx5IHJlb3JkZXJhYmxlPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbHVtbiBjYW4gYmUgaGlkZGVuLiAqL1xuICByZWFkb25seSBoaWRlYWJsZT86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBjb2x1bW4gaXMgY3VycmVudGx5IHZpc2libGUuICovXG4gIHJlYWRvbmx5IHZpc2libGU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgY29sdW1uIGlzIHBpbm5lZCAoZnJvemVuKS4gKi9cbiAgcmVhZG9ubHkgcGlubmVkPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8IGZhbHNlO1xuICAvKiogSW5pdGlhbCBzb3J0IGRpcmVjdGlvbi4gKi9cbiAgcmVhZG9ubHkgc29ydD86IFNvcnREaXJlY3Rpb247XG4gIC8qKiBTb3J0IGNvbXBhcmF0b3IgZnVuY3Rpb24uICovXG4gIHJlYWRvbmx5IGNvbXBhcmF0b3I/OiAoYTogdW5rbm93biwgYjogdW5rbm93biwgZGlyOiBTb3J0RGlyZWN0aW9uKSA9PiBudW1iZXI7XG4gIC8qKiBNaW5pbXVtIHdpZHRoIGluIHB4LiAqL1xuICByZWFkb25seSBtaW5XaWR0aD86IG51bWJlcjtcbiAgLyoqIE1heGltdW0gd2lkdGggaW4gcHguICovXG4gIHJlYWRvbmx5IG1heFdpZHRoPzogbnVtYmVyO1xuICAvKiogRGVmYXVsdCB3aWR0aCBpbiBweC4gRmFsbHMgYmFjayB0byBhdXRvIGlmIHVuc2V0LiAqL1xuICByZWFkb25seSB3aWR0aD86IG51bWJlcjtcbiAgLyoqIEFsaWdubWVudC4gKi9cbiAgcmVhZG9ubHkgYWxpZ24/OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCc7XG4gIC8qKiBUb29sdGlwIC8gZGVzY3JpcHRpb24gZm9yIHRoZSBoZWFkZXIuICovXG4gIHJlYWRvbmx5IHRvb2x0aXA/OiBzdHJpbmc7XG4gIC8qKiBDdXN0b20gaGVhZGVyIENTUyBjbGFzcy4gKi9cbiAgcmVhZG9ubHkgaGVhZGVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKiogQ3VzdG9tIGNlbGwgQ1NTIGNsYXNzIGZhY3RvcnkuICovXG4gIHJlYWRvbmx5IGNlbGxDbGFzc05hbWU/OiBzdHJpbmcgfCAoKHZhbHVlOiB1bmtub3duLCByb3dJbmRleDogbnVtYmVyKSA9PiBzdHJpbmcpO1xuICAvKiogQ3VzdG9tIGNlbGwgc3R5bGUgZmFjdG9yeS4gKi9cbiAgcmVhZG9ubHkgY2VsbFN0eWxlPzpcbiAgICBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgKCh2YWx1ZTogdW5rbm93biwgcm93SW5kZXg6IG51bWJlcikgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG4gIC8qKiBDZWxsIG1ldGEgYXBwbGllZCB0byBldmVyeSBjZWxsIGluIHRoaXMgY29sdW1uLiAqL1xuICByZWFkb25seSBjZWxsTWV0YT86IFBhcnRpYWw8Q2VsbE1ldGE+O1xuICAvKiogRGVmYXVsdCB2YWx1ZSBmb3IgbmV3IHJvd3MuICovXG4gIHJlYWRvbmx5IGRlZmF1bHRWYWx1ZT86IHVua25vd247XG4gIC8qKiBWYWx1ZSBmb3JtYXR0ZXIg4oCTIHRyYW5zZm9ybXMgcmF3IHZhbHVlIGZvciBkaXNwbGF5LiAqL1xuICByZWFkb25seSBmb3JtYXR0ZXI/OiAodmFsdWU6IHVua25vd24sIHJvdzogdW5rbm93bikgPT4gc3RyaW5nO1xuICAvKiogVmFsdWUgcGFyc2VyIOKAkyB0cmFuc2Zvcm1zIGRpc3BsYXkgc3RyaW5nIGJhY2sgdG8gcmF3IHZhbHVlIG9uIGVkaXQuICovXG4gIHJlYWRvbmx5IHBhcnNlcj86IChyYXc6IHN0cmluZykgPT4gdW5rbm93bjtcbiAgLyoqIEN1c3RvbSBoZWFkZXIgdGVtcGxhdGUga2V5IChtYXRjaGVzIEluamVjdGlvblRva2VuIG5hbWUpLiAqL1xuICByZWFkb25seSBoZWFkZXJUZW1wbGF0ZT86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBjZWxsIHRlbXBsYXRlIGtleS4gKi9cbiAgcmVhZG9ubHkgY2VsbFRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogQ3VzdG9tIGVkaXRvciB0ZW1wbGF0ZSBrZXkuICovXG4gIHJlYWRvbmx5IGVkaXRvclRlbXBsYXRlPzogc3RyaW5nO1xufVxuXG4vKiogUnVudGltZSBjb2x1bW4gc3RhdGUgKG11dGFibGUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5TdGF0ZSB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdpZHRoOiBudW1iZXI7XG4gIHJlYWRvbmx5IHZpc2libGU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHBpbm5lZDogJ2xlZnQnIHwgJ3JpZ2h0JyB8IGZhbHNlO1xuICByZWFkb25seSBzb3J0OiBTb3J0RGlyZWN0aW9uO1xuICByZWFkb25seSBzb3J0SW5kZXg/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG9yZGVyOiBudW1iZXI7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3NwcmVhZHNoZWV0L21vZGVscy9maWx0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBGaWx0ZXIgb3BlcmF0b3IgZm9yIGEgc2luZ2xlIGNvbHVtbi4gKi9cbmV4cG9ydCB0eXBlIEZpbHRlck9wZXJhdG9yID1cbiAgfCAnZXF1YWxzJ1xuICB8ICdub3RFcXVhbHMnXG4gIHwgJ2NvbnRhaW5zJ1xuICB8ICdub3RDb250YWlucydcbiAgfCAnc3RhcnRzV2l0aCdcbiAgfCAnZW5kc1dpdGgnXG4gIHwgJ2d0J1xuICB8ICdndGUnXG4gIHwgJ2x0J1xuICB8ICdsdGUnXG4gIHwgJ2JldHdlZW4nXG4gIHwgJ2luJ1xuICB8ICdlbXB0eSdcbiAgfCAnbm90RW1wdHknO1xuXG4vKiogQSBzaW5nbGUgZmlsdGVyIGNyaXRlcmlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyQ3JpdGVyaW9uIHtcbiAgcmVhZG9ubHkgY29sSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yO1xuICByZWFkb25seSB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHkgdmFsdWVUbz86IHVua25vd247XG59XG5cbi8qKiBUaGUgZW5naW5lJ3MgZmlsdGVyIHN0YXRlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJTdGF0ZSB7XG4gIHJlYWRvbmx5IGNyaXRlcmlhOiByZWFkb25seSBGaWx0ZXJDcml0ZXJpb25bXTtcbiAgcmVhZG9ubHkgbW9kZTogJ2FuZCcgfCAnb3InO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXVsYS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zcHJlYWRzaGVldC9tb2RlbHMvZm9ybXVsYS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEFTVCBub2RlIHR5cGVzIGZvciBwYXJzZWQgZm9ybXVsYXMuICovXG5leHBvcnQgdHlwZSBGb3JtdWxhTm9kZVR5cGUgPVxuICB8ICdjZWxsX3JlZidcbiAgfCAncmFuZ2VfcmVmJ1xuICB8ICdudW1iZXInXG4gIHwgJ3N0cmluZydcbiAgfCAnYm9vbGVhbidcbiAgfCAnYmluYXJ5X29wJ1xuICB8ICd1bmFyeV9vcCdcbiAgfCAnZnVuY3Rpb25fY2FsbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybXVsYU5vZGUge1xuICByZWFkb25seSB0eXBlOiBGb3JtdWxhTm9kZVR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbFJlZk5vZGUgZXh0ZW5kcyBGb3JtdWxhTm9kZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdjZWxsX3JlZic7XG4gIHJlYWRvbmx5IGNvbDogc3RyaW5nO1xuICByZWFkb25seSByb3c6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYW5nZVJlZk5vZGUgZXh0ZW5kcyBGb3JtdWxhTm9kZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdyYW5nZV9yZWYnO1xuICByZWFkb25seSBzdGFydENvbDogc3RyaW5nO1xuICByZWFkb25seSBzdGFydFJvdzogbnVtYmVyO1xuICByZWFkb25seSBlbmRDb2w6IHN0cmluZztcbiAgcmVhZG9ubHkgZW5kUm93OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyTm9kZSBleHRlbmRzIEZvcm11bGFOb2RlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bWJlcic7XG4gIHJlYWRvbmx5IHZhbHVlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTm9kZSBleHRlbmRzIEZvcm11bGFOb2RlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3N0cmluZyc7XG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbk5vZGUgZXh0ZW5kcyBGb3JtdWxhTm9kZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdib29sZWFuJztcbiAgcmVhZG9ubHkgdmFsdWU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmluYXJ5T3BOb2RlIGV4dGVuZHMgRm9ybXVsYU5vZGUge1xuICByZWFkb25seSB0eXBlOiAnYmluYXJ5X29wJztcbiAgcmVhZG9ubHkgb3A6ICcrJyB8ICctJyB8ICcqJyB8ICcvJyB8ICcmJyB8ICc9JyB8ICc8PicgfCAnPicgfCAnPCcgfCAnPj0nIHwgJzw9JztcbiAgcmVhZG9ubHkgbGVmdDogRm9ybXVsYU5vZGU7XG4gIHJlYWRvbmx5IHJpZ2h0OiBGb3JtdWxhTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbmFyeU9wTm9kZSBleHRlbmRzIEZvcm11bGFOb2RlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3VuYXJ5X29wJztcbiAgcmVhZG9ubHkgb3A6ICctJyB8ICcrJztcbiAgcmVhZG9ubHkgb3BlcmFuZDogRm9ybXVsYU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25DYWxsTm9kZSBleHRlbmRzIEZvcm11bGFOb2RlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2Z1bmN0aW9uX2NhbGwnO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFyZ3M6IEZvcm11bGFOb2RlW107XG59XG5cbi8qKiBSZXN1bHQgb2YgZXZhbHVhdGluZyBhIGZvcm11bGEuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm11bGFSZXN1bHQge1xuICByZWFkb25seSB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG51bGw7XG4gIHJlYWRvbmx5IGVycm9yPzogc3RyaW5nO1xufVxuXG4vKiogRGVwZW5kZW5jeSBlZGdlIGluIHRoZSBmb3JtdWxhIGdyYXBoLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtdWxhRGVwZW5kZW5jeSB7XG4gIC8qKiBDZWxsIHRoYXQgY29udGFpbnMgdGhlIGZvcm11bGEuICovXG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xuICAvKiogQ2VsbChzKSB0aGUgZm9ybXVsYSBkZXBlbmRzIG9uLiAqL1xuICByZWFkb25seSB0YXJnZXRzOiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuLyoqIEJ1aWx0LWluIGZ1bmN0aW9uIHNpZ25hdHVyZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybXVsYUZ1bmN0aW9uIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBtaW5BcmdzOiBudW1iZXI7XG4gIHJlYWRvbmx5IG1heEFyZ3M6IG51bWJlcjtcbiAgcmVhZG9ubHkgZm46IChhcmdzOiAobnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG51bGwpW10pID0+IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4gfCBudWxsO1xufVxuIl19
@@ -0,0 +1,8 @@
1
+ export * from './cell.model';
2
+ export * from './column.model';
3
+ export * from './row.model';
4
+ export * from './selection.model';
5
+ export * from './sort.model';
6
+ export * from './filter.model';
7
+ export * from './formula.model';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc3ByZWFkc2hlZXQvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NlbGwubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2x1bW4ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3cubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3Rpb24ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3J0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybXVsYS5tb2RlbCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3NwcmVhZHNoZWV0L21vZGVscy9yb3cubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2VsbCB9IGZyb20gJy4vY2VsbC5tb2RlbCc7XG5cbi8qKiBBIHJvdyBpcyBhIG1hcCBvZiBjb2x1bW4taWQg4oaSIENlbGwuICovXG5leHBvcnQgdHlwZSBSb3dEYXRhID0gUmVjb3JkPHN0cmluZywgQ2VsbD47XG5cbi8qKiBSb3cgZGVmaW5pdGlvbiB3aXRoIG9wdGlvbmFsIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3dEZWYge1xuICAvKiogVW5pcXVlIHJvdyBpZGVudGlmaWVyLiAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICAvKiogVGhlIGNlbGwgZGF0YSBrZXllZCBieSBjb2x1bW4gaWQuICovXG4gIHJlYWRvbmx5IGNlbGxzOiBSb3dEYXRhO1xuICAvKiogV2hldGhlciB0aGUgcm93IGlzIHNlbGVjdGFibGUuICovXG4gIHJlYWRvbmx5IHNlbGVjdGFibGU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgcm93IGlzIGVkaXRhYmxlIChvdmVycmlkZXMgY29sdW1uLWxldmVsKS4gKi9cbiAgcmVhZG9ubHkgZWRpdGFibGU/OiBib29sZWFuO1xuICAvKiogQ3VzdG9tIENTUyBjbGFzcyBhcHBsaWVkIHRvIHRoZSByb3cuICovXG4gIHJlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBpbmxpbmUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIHJvdy4gKi9cbiAgcmVhZG9ubHkgc3R5bGU/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKiogR3JvdXBpbmcga2V5IGZvciB0cmVlIC8gbWFzdGVyLWRldGFpbC4gKi9cbiAgcmVhZG9ubHkgZ3JvdXBLZXk/OiBzdHJpbmc7XG4gIC8qKiBQYXJlbnQgcm93IGlkIGZvciB0cmVlIGRhdGEuICovXG4gIHJlYWRvbmx5IHBhcmVudElkPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGlzIHJvdyBpcyBleHBhbmRlZCAodHJlZSBkYXRhKS4gKi9cbiAgcmVhZG9ubHkgZXhwYW5kZWQ/OiBib29sZWFuO1xuICAvKiogUm93IGxldmVsIGluIHRoZSB0cmVlIGhpZXJhcmNoeS4gKi9cbiAgcmVhZG9ubHkgbGV2ZWw/OiBudW1iZXI7XG4gIC8qKiBMb2FkaW5nIHBsYWNlaG9sZGVyIGZsYWcgZm9yIGxhenkgcm93cy4gKi9cbiAgcmVhZG9ubHkgbG9hZGluZz86IGJvb2xlYW47XG59XG5cbi8qKiBTdW1tYXJ5IC8gYWdncmVnYXRlIHJvdy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VtbWFyeVJvdyBleHRlbmRzIFJvd0RlZiB7XG4gIHJlYWRvbmx5IGlzU3VtbWFyeTogdHJ1ZTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3NwcmVhZHNoZWV0L21vZGVscy9zZWxlY3Rpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2VsbEFkZHJlc3MsIENlbGxSYW5nZSB9IGZyb20gJy4vY2VsbC5tb2RlbCc7XG5cbi8qKiBXaGF0IGlzIGN1cnJlbnRseSBzZWxlY3RlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uU3RhdGUge1xuICAvKiogQ3VycmVudGx5IGFjdGl2ZSBjZWxsIChrZXlib2FyZCBmb2N1cykuICovXG4gIHJlYWRvbmx5IGFjdGl2ZUNlbGw6IENlbGxBZGRyZXNzIHwgbnVsbDtcbiAgLyoqIFJlY3Rhbmd1bGFyIHJhbmdlIHNlbGVjdGlvbi4gKi9cbiAgcmVhZG9ubHkgcmFuZ2U6IENlbGxSYW5nZSB8IG51bGw7XG4gIC8qKiBTZXQgb2Ygc2VsZWN0ZWQgcm93IGluZGljZXMuICovXG4gIHJlYWRvbmx5IHNlbGVjdGVkUm93czogUmVhZG9ubHlTZXQ8bnVtYmVyPjtcbiAgLyoqIFNldCBvZiBzZWxlY3RlZCBjb2x1bW4gaW5kaWNlcy4gKi9cbiAgcmVhZG9ubHkgc2VsZWN0ZWRDb2xzOiBSZWFkb25seVNldDxudW1iZXI+O1xuICAvKiogU2VsZWN0aW9uIG1vZGUuICovXG4gIHJlYWRvbmx5IG1vZGU6IFNlbGVjdGlvbk1vZGU7XG4gIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBkcmFnZ2luZyB0byBleHRlbmQgc2VsZWN0aW9uLiAqL1xuICByZWFkb25seSBkcmFnZ2luZzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgU2VsZWN0aW9uTW9kZSA9ICdjZWxsJyB8ICdyYW5nZScgfCAncm93JyB8ICdjb2x1bW4nIHwgJ25vbmUnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zcHJlYWRzaGVldC9tb2RlbHMvc29ydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi9jb2x1bW4ubW9kZWwnO1xuXG4vKiogQSBzaW5nbGUgc29ydCBjcml0ZXJpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRDcml0ZXJpb24ge1xuICByZWFkb25seSBjb2xJZDogc3RyaW5nO1xuICByZWFkb25seSBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG4gIC8qKiBGb3IgbXVsdGktc29ydCwgdGhlIHByaW9yaXR5IGluZGV4LiAqL1xuICByZWFkb25seSBpbmRleDogbnVtYmVyO1xufVxuXG4vKiogVGhlIGVuZ2luZSdzIHNvcnQgc3RhdGUuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRTdGF0ZSB7XG4gIHJlYWRvbmx5IGNyaXRlcmlhOiByZWFkb25seSBTb3J0Q3JpdGVyaW9uW107XG4gIHJlYWRvbmx5IG11bHRpU29ydDogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1zcHJlYWRzaGVldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zcHJlYWRzaGVldC9uZ3hzbWstY2RrLXNwcmVhZHNoZWV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,171 @@
1
+ /**
2
+ * ClipboardPlugin handles copy/paste/cut operations.
3
+ * Reads from and writes to the system clipboard via the Clipboard API.
4
+ */
5
+ export class ClipboardPlugin {
6
+ constructor() {
7
+ this.name = 'clipboard';
8
+ this.priority = 30;
9
+ this._engine = null;
10
+ this._cutCells = null;
11
+ }
12
+ onInit(engine) {
13
+ this._engine = engine;
14
+ }
15
+ /** Copy the current selection to the clipboard. */
16
+ async copy() {
17
+ if (!this._engine)
18
+ return;
19
+ const sel = this._engine.selection();
20
+ if (!sel.range)
21
+ return;
22
+ const tsv = this._selectionToTsv(sel.range.start.row, sel.range.start.col, sel.range.end.row, sel.range.end.col);
23
+ try {
24
+ await navigator.clipboard.writeText(tsv);
25
+ }
26
+ catch {
27
+ // Fallback: use a temporary textarea
28
+ this._copyToTextarea(tsv);
29
+ }
30
+ }
31
+ /** Cut the current selection (copy + clear). */
32
+ async cut() {
33
+ if (!this._engine)
34
+ return;
35
+ const sel = this._engine.selection();
36
+ if (!sel.range)
37
+ return;
38
+ const startRow = Math.min(sel.range.start.row, sel.range.end.row);
39
+ const startCol = Math.min(sel.range.start.col, sel.range.end.col);
40
+ const endRow = Math.max(sel.range.start.row, sel.range.end.row);
41
+ const endCol = Math.max(sel.range.start.col, sel.range.end.col);
42
+ this._cutCells = [];
43
+ const rows = [...this._engine.rowData()];
44
+ const cols = this._engine.columnDefs();
45
+ for (let r = startRow; r <= endRow; r++) {
46
+ for (let c = startCol; c <= endCol; c++) {
47
+ const colId = cols[c]?.id;
48
+ if (colId) {
49
+ this._cutCells.push({ row: r, col: c, value: rows[r]?.cells[colId]?.value ?? null });
50
+ }
51
+ }
52
+ }
53
+ await this.copy();
54
+ this.clearSelectionContent();
55
+ }
56
+ /** Paste clipboard content starting at the active cell. */
57
+ async paste() {
58
+ if (!this._engine)
59
+ return;
60
+ const sel = this._engine.selection();
61
+ const activeCell = sel.activeCell;
62
+ if (!activeCell)
63
+ return;
64
+ let text;
65
+ try {
66
+ text = await navigator.clipboard.readText();
67
+ }
68
+ catch {
69
+ return;
70
+ }
71
+ if (!text)
72
+ return;
73
+ const lines = text.split('\n').filter((l) => l.length > 0);
74
+ const cols = this._engine.columnDefs();
75
+ const rows = [...this._engine.rowData()];
76
+ const startRow = activeCell.row;
77
+ const startCol = activeCell.col;
78
+ for (let r = 0; r < lines.length; r++) {
79
+ const cells = lines[r].split('\t');
80
+ const targetRow = startRow + r;
81
+ if (targetRow >= rows.length)
82
+ break;
83
+ for (let c = 0; c < cells.length; c++) {
84
+ const targetCol = startCol + c;
85
+ if (targetCol >= cols.length)
86
+ break;
87
+ const colId = cols[targetCol].id;
88
+ const rowData = rows[targetRow];
89
+ if (rowData) {
90
+ const raw = cells[c].trim();
91
+ const value = parseClipboardValue(raw);
92
+ rows[targetRow] = {
93
+ ...rowData,
94
+ cells: { ...rowData.cells, [colId]: { value, meta: rowData.cells[colId]?.meta } },
95
+ };
96
+ }
97
+ }
98
+ }
99
+ this._engine.rowData.set(rows);
100
+ }
101
+ /** Clear the content of selected cells. */
102
+ clearSelectionContent() {
103
+ if (!this._engine)
104
+ return;
105
+ const sel = this._engine.selection();
106
+ if (!sel.range)
107
+ return;
108
+ const startRow = Math.min(sel.range.start.row, sel.range.end.row);
109
+ const startCol = Math.min(sel.range.start.col, sel.range.end.col);
110
+ const endRow = Math.max(sel.range.start.row, sel.range.end.row);
111
+ const endCol = Math.max(sel.range.start.col, sel.range.end.col);
112
+ const rows = [...this._engine.rowData()];
113
+ const cols = this._engine.columnDefs();
114
+ for (let r = startRow; r <= endRow; r++) {
115
+ for (let c = startCol; c <= endCol; c++) {
116
+ const colId = cols[c]?.id;
117
+ if (colId && rows[r]) {
118
+ rows[r] = {
119
+ ...rows[r],
120
+ cells: { ...rows[r].cells, [colId]: { value: null, meta: rows[r].cells[colId]?.meta } },
121
+ };
122
+ }
123
+ }
124
+ }
125
+ this._engine.rowData.set(rows);
126
+ }
127
+ _selectionToTsv(startRow, startCol, endRow, endCol) {
128
+ if (!this._engine)
129
+ return '';
130
+ const rows = this._engine.rowData();
131
+ const cols = this._engine.columnDefs();
132
+ const minRow = Math.min(startRow, endRow);
133
+ const maxRow = Math.max(startRow, endRow);
134
+ const minCol = Math.min(startCol, endCol);
135
+ const maxCol = Math.max(startCol, endCol);
136
+ const lines = [];
137
+ for (let r = minRow; r <= maxRow; r++) {
138
+ const cells = [];
139
+ for (let c = minCol; c <= maxCol; c++) {
140
+ const colId = cols[c]?.id;
141
+ const val = colId ? rows[r]?.cells[colId]?.value : null;
142
+ cells.push(val == null ? '' : String(val));
143
+ }
144
+ lines.push(cells.join('\t'));
145
+ }
146
+ return lines.join('\n');
147
+ }
148
+ _copyToTextarea(text) {
149
+ const ta = document.createElement('textarea');
150
+ ta.value = text;
151
+ ta.style.position = 'fixed';
152
+ ta.style.left = '-9999px';
153
+ document.body.appendChild(ta);
154
+ ta.select();
155
+ document.execCommand('copy');
156
+ document.body.removeChild(ta);
157
+ }
158
+ }
159
+ function parseClipboardValue(raw) {
160
+ if (raw === '')
161
+ return null;
162
+ if (raw === 'TRUE')
163
+ return true;
164
+ if (raw === 'FALSE')
165
+ return false;
166
+ const num = Number(raw);
167
+ if (!isNaN(num) && raw !== '')
168
+ return num;
169
+ return raw;
170
+ }
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zcHJlYWRzaGVldC9wbHVnaW4vY2xpcGJvYXJkLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNXLFNBQUksR0FBRyxXQUFXLENBQUM7UUFDbkIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVmLFlBQU8sR0FBNkIsSUFBSSxDQUFDO1FBQ3pDLGNBQVMsR0FBNEQsSUFBSSxDQUFDO0lBdUtwRixDQUFDO0lBcktDLE1BQU0sQ0FBQyxNQUF5QjtRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRUQsbURBQW1EO0lBQ25ELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSztZQUFFLE9BQU87UUFFdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FDOUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUNuQixHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQ25CLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFDakIsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUNsQixDQUFDO1FBQ0YsSUFBSSxDQUFDO1lBQ0gsTUFBTSxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AscUNBQXFDO1lBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsS0FBSyxDQUFDLEdBQUc7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUV2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLEtBQUssSUFBSSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDdkYsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxLQUFLLENBQUMsS0FBSztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUV4QixJQUFJLElBQVksQ0FBQztRQUNqQixJQUFJLENBQUM7WUFDSCxJQUFJLEdBQUcsTUFBTSxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUVsQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDekMsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBRWhDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxNQUFNLFNBQVMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLE1BQU07WUFFcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxTQUFTLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU07b0JBQUUsTUFBTTtnQkFFcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxLQUFLLEdBQWMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRzt3QkFDaEIsR0FBRyxPQUFPO3dCQUNWLEtBQUssRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFO3FCQUNsRixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLHFCQUFxQjtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUV2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVoRSxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLEtBQUssSUFBSSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRzt3QkFDUixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ1YsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFO3FCQUN4RixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sZUFBZSxDQUNyQixRQUFnQixFQUNoQixRQUFnQixFQUNoQixNQUFjLEVBQ2QsTUFBYztRQUVkLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUxQyxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7UUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztZQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDeEQsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBWTtRQUNsQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUM1QixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFDMUIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFFRCxTQUFTLG1CQUFtQixDQUFDLEdBQVc7SUFDdEMsSUFBSSxHQUFHLEtBQUssRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzVCLElBQUksR0FBRyxLQUFLLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQztJQUNoQyxJQUFJLEdBQUcsS0FBSyxPQUFPO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDbEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxLQUFLLEVBQUU7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUMxQyxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNwcmVhZHNoZWV0UGx1Z2luIH0gZnJvbSAnLi9wbHVnaW4udHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBTcHJlYWRzaGVldEVuZ2luZSB9IGZyb20gJy4uL3NwcmVhZHNoZWV0LWVuZ2luZSc7XG5pbXBvcnQgdHlwZSB7IENlbGxWYWx1ZSB9IGZyb20gJy4uL21vZGVscyc7XG5cbi8qKlxuICogQ2xpcGJvYXJkUGx1Z2luIGhhbmRsZXMgY29weS9wYXN0ZS9jdXQgb3BlcmF0aW9ucy5cbiAqIFJlYWRzIGZyb20gYW5kIHdyaXRlcyB0byB0aGUgc3lzdGVtIGNsaXBib2FyZCB2aWEgdGhlIENsaXBib2FyZCBBUEkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbGlwYm9hcmRQbHVnaW4gaW1wbGVtZW50cyBTcHJlYWRzaGVldFBsdWdpbiB7XG4gIHJlYWRvbmx5IG5hbWUgPSAnY2xpcGJvYXJkJztcbiAgcmVhZG9ubHkgcHJpb3JpdHkgPSAzMDtcblxuICBwcml2YXRlIF9lbmdpbmU6IFNwcmVhZHNoZWV0RW5naW5lIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2N1dENlbGxzOiB7IHJvdzogbnVtYmVyOyBjb2w6IG51bWJlcjsgdmFsdWU6IENlbGxWYWx1ZSB9W10gfCBudWxsID0gbnVsbDtcblxuICBvbkluaXQoZW5naW5lOiBTcHJlYWRzaGVldEVuZ2luZSk6IHZvaWQge1xuICAgIHRoaXMuX2VuZ2luZSA9IGVuZ2luZTtcbiAgfVxuXG4gIC8qKiBDb3B5IHRoZSBjdXJyZW50IHNlbGVjdGlvbiB0byB0aGUgY2xpcGJvYXJkLiAqL1xuICBhc3luYyBjb3B5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fZW5naW5lKSByZXR1cm47XG4gICAgY29uc3Qgc2VsID0gdGhpcy5fZW5naW5lLnNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsLnJhbmdlKSByZXR1cm47XG5cbiAgICBjb25zdCB0c3YgPSB0aGlzLl9zZWxlY3Rpb25Ub1RzdihcbiAgICAgIHNlbC5yYW5nZS5zdGFydC5yb3csXG4gICAgICBzZWwucmFuZ2Uuc3RhcnQuY29sLFxuICAgICAgc2VsLnJhbmdlLmVuZC5yb3csXG4gICAgICBzZWwucmFuZ2UuZW5kLmNvbCxcbiAgICApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0c3YpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRmFsbGJhY2s6IHVzZSBhIHRlbXBvcmFyeSB0ZXh0YXJlYVxuICAgICAgdGhpcy5fY29weVRvVGV4dGFyZWEodHN2KTtcbiAgICB9XG4gIH1cblxuICAvKiogQ3V0IHRoZSBjdXJyZW50IHNlbGVjdGlvbiAoY29weSArIGNsZWFyKS4gKi9cbiAgYXN5bmMgY3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fZW5naW5lKSByZXR1cm47XG4gICAgY29uc3Qgc2VsID0gdGhpcy5fZW5naW5lLnNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsLnJhbmdlKSByZXR1cm47XG5cbiAgICBjb25zdCBzdGFydFJvdyA9IE1hdGgubWluKHNlbC5yYW5nZS5zdGFydC5yb3csIHNlbC5yYW5nZS5lbmQucm93KTtcbiAgICBjb25zdCBzdGFydENvbCA9IE1hdGgubWluKHNlbC5yYW5nZS5zdGFydC5jb2wsIHNlbC5yYW5nZS5lbmQuY29sKTtcbiAgICBjb25zdCBlbmRSb3cgPSBNYXRoLm1heChzZWwucmFuZ2Uuc3RhcnQucm93LCBzZWwucmFuZ2UuZW5kLnJvdyk7XG4gICAgY29uc3QgZW5kQ29sID0gTWF0aC5tYXgoc2VsLnJhbmdlLnN0YXJ0LmNvbCwgc2VsLnJhbmdlLmVuZC5jb2wpO1xuXG4gICAgdGhpcy5fY3V0Q2VsbHMgPSBbXTtcbiAgICBjb25zdCByb3dzID0gWy4uLnRoaXMuX2VuZ2luZS5yb3dEYXRhKCldO1xuICAgIGNvbnN0IGNvbHMgPSB0aGlzLl9lbmdpbmUuY29sdW1uRGVmcygpO1xuXG4gICAgZm9yIChsZXQgciA9IHN0YXJ0Um93OyByIDw9IGVuZFJvdzsgcisrKSB7XG4gICAgICBmb3IgKGxldCBjID0gc3RhcnRDb2w7IGMgPD0gZW5kQ29sOyBjKyspIHtcbiAgICAgICAgY29uc3QgY29sSWQgPSBjb2xzW2NdPy5pZDtcbiAgICAgICAgaWYgKGNvbElkKSB7XG4gICAgICAgICAgdGhpcy5fY3V0Q2VsbHMucHVzaCh7IHJvdzogciwgY29sOiBjLCB2YWx1ZTogcm93c1tyXT8uY2VsbHNbY29sSWRdPy52YWx1ZSA/PyBudWxsIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5jb3B5KCk7XG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbkNvbnRlbnQoKTtcbiAgfVxuXG4gIC8qKiBQYXN0ZSBjbGlwYm9hcmQgY29udGVudCBzdGFydGluZyBhdCB0aGUgYWN0aXZlIGNlbGwuICovXG4gIGFzeW5jIHBhc3RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fZW5naW5lKSByZXR1cm47XG4gICAgY29uc3Qgc2VsID0gdGhpcy5fZW5naW5lLnNlbGVjdGlvbigpO1xuICAgIGNvbnN0IGFjdGl2ZUNlbGwgPSBzZWwuYWN0aXZlQ2VsbDtcbiAgICBpZiAoIWFjdGl2ZUNlbGwpIHJldHVybjtcblxuICAgIGxldCB0ZXh0OiBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHRleHQgPSBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWRUZXh0KCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0ZXh0KSByZXR1cm47XG5cbiAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpLmZpbHRlcigobCkgPT4gbC5sZW5ndGggPiAwKTtcbiAgICBjb25zdCBjb2xzID0gdGhpcy5fZW5naW5lLmNvbHVtbkRlZnMoKTtcbiAgICBjb25zdCByb3dzID0gWy4uLnRoaXMuX2VuZ2luZS5yb3dEYXRhKCldO1xuICAgIGNvbnN0IHN0YXJ0Um93ID0gYWN0aXZlQ2VsbC5yb3c7XG4gICAgY29uc3Qgc3RhcnRDb2wgPSBhY3RpdmVDZWxsLmNvbDtcblxuICAgIGZvciAobGV0IHIgPSAwOyByIDwgbGluZXMubGVuZ3RoOyByKyspIHtcbiAgICAgIGNvbnN0IGNlbGxzID0gbGluZXNbcl0uc3BsaXQoJ1xcdCcpO1xuICAgICAgY29uc3QgdGFyZ2V0Um93ID0gc3RhcnRSb3cgKyByO1xuICAgICAgaWYgKHRhcmdldFJvdyA+PSByb3dzLmxlbmd0aCkgYnJlYWs7XG5cbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgY2VsbHMubGVuZ3RoOyBjKyspIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0Q29sID0gc3RhcnRDb2wgKyBjO1xuICAgICAgICBpZiAodGFyZ2V0Q29sID49IGNvbHMubGVuZ3RoKSBicmVhaztcblxuICAgICAgICBjb25zdCBjb2xJZCA9IGNvbHNbdGFyZ2V0Q29sXS5pZDtcbiAgICAgICAgY29uc3Qgcm93RGF0YSA9IHJvd3NbdGFyZ2V0Um93XTtcbiAgICAgICAgaWYgKHJvd0RhdGEpIHtcbiAgICAgICAgICBjb25zdCByYXcgPSBjZWxsc1tjXS50cmltKCk7XG4gICAgICAgICAgY29uc3QgdmFsdWU6IENlbGxWYWx1ZSA9IHBhcnNlQ2xpcGJvYXJkVmFsdWUocmF3KTtcbiAgICAgICAgICByb3dzW3RhcmdldFJvd10gPSB7XG4gICAgICAgICAgICAuLi5yb3dEYXRhLFxuICAgICAgICAgICAgY2VsbHM6IHsgLi4ucm93RGF0YS5jZWxscywgW2NvbElkXTogeyB2YWx1ZSwgbWV0YTogcm93RGF0YS5jZWxsc1tjb2xJZF0/Lm1ldGEgfSB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9lbmdpbmUucm93RGF0YS5zZXQocm93cyk7XG4gIH1cblxuICAvKiogQ2xlYXIgdGhlIGNvbnRlbnQgb2Ygc2VsZWN0ZWQgY2VsbHMuICovXG4gIGNsZWFyU2VsZWN0aW9uQ29udGVudCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2VuZ2luZSkgcmV0dXJuO1xuICAgIGNvbnN0IHNlbCA9IHRoaXMuX2VuZ2luZS5zZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbC5yYW5nZSkgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhcnRSb3cgPSBNYXRoLm1pbihzZWwucmFuZ2Uuc3RhcnQucm93LCBzZWwucmFuZ2UuZW5kLnJvdyk7XG4gICAgY29uc3Qgc3RhcnRDb2wgPSBNYXRoLm1pbihzZWwucmFuZ2Uuc3RhcnQuY29sLCBzZWwucmFuZ2UuZW5kLmNvbCk7XG4gICAgY29uc3QgZW5kUm93ID0gTWF0aC5tYXgoc2VsLnJhbmdlLnN0YXJ0LnJvdywgc2VsLnJhbmdlLmVuZC5yb3cpO1xuICAgIGNvbnN0IGVuZENvbCA9IE1hdGgubWF4KHNlbC5yYW5nZS5zdGFydC5jb2wsIHNlbC5yYW5nZS5lbmQuY29sKTtcblxuICAgIGNvbnN0IHJvd3MgPSBbLi4udGhpcy5fZW5naW5lLnJvd0RhdGEoKV07XG4gICAgY29uc3QgY29scyA9IHRoaXMuX2VuZ2luZS5jb2x1bW5EZWZzKCk7XG5cbiAgICBmb3IgKGxldCByID0gc3RhcnRSb3c7IHIgPD0gZW5kUm93OyByKyspIHtcbiAgICAgIGZvciAobGV0IGMgPSBzdGFydENvbDsgYyA8PSBlbmRDb2w7IGMrKykge1xuICAgICAgICBjb25zdCBjb2xJZCA9IGNvbHNbY10/LmlkO1xuICAgICAgICBpZiAoY29sSWQgJiYgcm93c1tyXSkge1xuICAgICAgICAgIHJvd3Nbcl0gPSB7XG4gICAgICAgICAgICAuLi5yb3dzW3JdLFxuICAgICAgICAgICAgY2VsbHM6IHsgLi4ucm93c1tyXS5jZWxscywgW2NvbElkXTogeyB2YWx1ZTogbnVsbCwgbWV0YTogcm93c1tyXS5jZWxsc1tjb2xJZF0/Lm1ldGEgfSB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9lbmdpbmUucm93RGF0YS5zZXQocm93cyk7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3Rpb25Ub1RzdihcbiAgICBzdGFydFJvdzogbnVtYmVyLFxuICAgIHN0YXJ0Q29sOiBudW1iZXIsXG4gICAgZW5kUm93OiBudW1iZXIsXG4gICAgZW5kQ29sOiBudW1iZXIsXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9lbmdpbmUpIHJldHVybiAnJztcbiAgICBjb25zdCByb3dzID0gdGhpcy5fZW5naW5lLnJvd0RhdGEoKTtcbiAgICBjb25zdCBjb2xzID0gdGhpcy5fZW5naW5lLmNvbHVtbkRlZnMoKTtcbiAgICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydFJvdywgZW5kUm93KTtcbiAgICBjb25zdCBtYXhSb3cgPSBNYXRoLm1heChzdGFydFJvdywgZW5kUm93KTtcbiAgICBjb25zdCBtaW5Db2wgPSBNYXRoLm1pbihzdGFydENvbCwgZW5kQ29sKTtcbiAgICBjb25zdCBtYXhDb2wgPSBNYXRoLm1heChzdGFydENvbCwgZW5kQ29sKTtcblxuICAgIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IHIgPSBtaW5Sb3c7IHIgPD0gbWF4Um93OyByKyspIHtcbiAgICAgIGNvbnN0IGNlbGxzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgYyA9IG1pbkNvbDsgYyA8PSBtYXhDb2w7IGMrKykge1xuICAgICAgICBjb25zdCBjb2xJZCA9IGNvbHNbY10/LmlkO1xuICAgICAgICBjb25zdCB2YWwgPSBjb2xJZCA/IHJvd3Nbcl0/LmNlbGxzW2NvbElkXT8udmFsdWUgOiBudWxsO1xuICAgICAgICBjZWxscy5wdXNoKHZhbCA9PSBudWxsID8gJycgOiBTdHJpbmcodmFsKSk7XG4gICAgICB9XG4gICAgICBsaW5lcy5wdXNoKGNlbGxzLmpvaW4oJ1xcdCcpKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29weVRvVGV4dGFyZWEodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xuICAgIHRhLnZhbHVlID0gdGV4dDtcbiAgICB0YS5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgdGEuc3R5bGUubGVmdCA9ICctOTk5OXB4JztcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhKTtcbiAgICB0YS5zZWxlY3QoKTtcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGEpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ2xpcGJvYXJkVmFsdWUocmF3OiBzdHJpbmcpOiBDZWxsVmFsdWUge1xuICBpZiAocmF3ID09PSAnJykgcmV0dXJuIG51bGw7XG4gIGlmIChyYXcgPT09ICdUUlVFJykgcmV0dXJuIHRydWU7XG4gIGlmIChyYXcgPT09ICdGQUxTRScpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgbnVtID0gTnVtYmVyKHJhdyk7XG4gIGlmICghaXNOYU4obnVtKSAmJiByYXcgIT09ICcnKSByZXR1cm4gbnVtO1xuICByZXR1cm4gcmF3O1xufVxuIl19
@@ -0,0 +1,87 @@
1
+ /**
2
+ * FilterPlugin applies column-level filters to the row set.
3
+ * Stores original rows and restores on clear.
4
+ */
5
+ export class FilterPlugin {
6
+ constructor() {
7
+ this.name = 'filter';
8
+ this.priority = 20;
9
+ this._engine = null;
10
+ this._originalRows = [];
11
+ }
12
+ onInit(engine) {
13
+ this._engine = engine;
14
+ this._originalRows = engine.rowData();
15
+ }
16
+ /** Apply filter criteria. */
17
+ applyFilter(criteria, mode) {
18
+ if (!this._engine)
19
+ return;
20
+ if (criteria.length === 0) {
21
+ this._engine.rowData.set([...this._originalRows]);
22
+ return;
23
+ }
24
+ this._originalRows = this._engine.rowData();
25
+ const filtered = this._originalRows.filter((row) => {
26
+ const results = criteria.map((c) => matchesCriterion(row.cells[c.colId]?.value, c));
27
+ return mode === 'and' ? results.every(Boolean) : results.some(Boolean);
28
+ });
29
+ this._engine.rowData.set(filtered);
30
+ }
31
+ /** Clear all filters and restore original rows. */
32
+ clearFilter() {
33
+ if (!this._engine)
34
+ return;
35
+ this._engine.rowData.set([...this._originalRows]);
36
+ }
37
+ onBeforeFilter() {
38
+ return true;
39
+ }
40
+ onAfterFilter() {
41
+ // Sync original rows when data changes externally
42
+ if (this._engine) {
43
+ this._originalRows = this._engine.rowData();
44
+ }
45
+ }
46
+ }
47
+ function matchesCriterion(value, criterion) {
48
+ const v = value == null ? '' : String(value).toLowerCase();
49
+ const c = criterion.value == null ? '' : String(criterion.value).toLowerCase();
50
+ switch (criterion.operator) {
51
+ case 'equals':
52
+ return v === c;
53
+ case 'notEquals':
54
+ return v !== c;
55
+ case 'contains':
56
+ return v.includes(c);
57
+ case 'notContains':
58
+ return !v.includes(c);
59
+ case 'startsWith':
60
+ return v.startsWith(c);
61
+ case 'endsWith':
62
+ return v.endsWith(c);
63
+ case 'gt':
64
+ return Number(value) > Number(criterion.value);
65
+ case 'gte':
66
+ return Number(value) >= Number(criterion.value);
67
+ case 'lt':
68
+ return Number(value) < Number(criterion.value);
69
+ case 'lte':
70
+ return Number(value) <= Number(criterion.value);
71
+ case 'between': {
72
+ const num = Number(value);
73
+ return num >= Number(criterion.value) && num <= Number(criterion.valueTo);
74
+ }
75
+ case 'in': {
76
+ const arr = Array.isArray(criterion.value) ? criterion.value : [];
77
+ return arr.some((item) => String(item).toLowerCase() === v);
78
+ }
79
+ case 'empty':
80
+ return v === '';
81
+ case 'notEmpty':
82
+ return v !== '';
83
+ default:
84
+ return true;
85
+ }
86
+ }
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zcHJlYWRzaGVldC9wbHVnaW4vZmlsdGVyLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUF6QjtRQUNXLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDaEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVmLFlBQU8sR0FBNkIsSUFBSSxDQUFDO1FBQ3pDLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQztJQXdDaEQsQ0FBQztJQXRDQyxNQUFNLENBQUMsTUFBeUI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixXQUFXLENBQUMsUUFBb0MsRUFBRSxJQUFrQjtRQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQzFCLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ2xELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FB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Q0FBQztRQUNELEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNWLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELEtBQUssT0FBTztZQUNWLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixLQUFLLFVBQVU7WUFDYixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEI7WUFDRSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3ByZWFkc2hlZXRQbHVnaW4gfSBmcm9tICcuL3BsdWdpbi50eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFNwcmVhZHNoZWV0RW5naW5lIH0gZnJvbSAnLi4vc3ByZWFkc2hlZXQtZW5naW5lJztcbmltcG9ydCB0eXBlIHsgRmlsdGVyQ3JpdGVyaW9uLCBSb3dEZWYgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG4vKipcbiAqIEZpbHRlclBsdWdpbiBhcHBsaWVzIGNvbHVtbi1sZXZlbCBmaWx0ZXJzIHRvIHRoZSByb3cgc2V0LlxuICogU3RvcmVzIG9yaWdpbmFsIHJvd3MgYW5kIHJlc3RvcmVzIG9uIGNsZWFyLlxuICovXG5leHBvcnQgY2xhc3MgRmlsdGVyUGx1Z2luIGltcGxlbWVudHMgU3ByZWFkc2hlZXRQbHVnaW4ge1xuICByZWFkb25seSBuYW1lID0gJ2ZpbHRlcic7XG4gIHJlYWRvbmx5IHByaW9yaXR5ID0gMjA7XG5cbiAgcHJpdmF0ZSBfZW5naW5lOiBTcHJlYWRzaGVldEVuZ2luZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9vcmlnaW5hbFJvd3M6IHJlYWRvbmx5IFJvd0RlZltdID0gW107XG5cbiAgb25Jbml0KGVuZ2luZTogU3ByZWFkc2hlZXRFbmdpbmUpOiB2b2lkIHtcbiAgICB0aGlzLl9lbmdpbmUgPSBlbmdpbmU7XG4gICAgdGhpcy5fb3JpZ2luYWxSb3dzID0gZW5naW5lLnJvd0RhdGEoKTtcbiAgfVxuXG4gIC8qKiBBcHBseSBmaWx0ZXIgY3JpdGVyaWEuICovXG4gIGFwcGx5RmlsdGVyKGNyaXRlcmlhOiByZWFkb25seSBGaWx0ZXJDcml0ZXJpb25bXSwgbW9kZTogJ2FuZCcgfCAnb3InKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9lbmdpbmUpIHJldHVybjtcbiAgICBpZiAoY3JpdGVyaWEubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9lbmdpbmUucm93RGF0YS5zZXQoWy4uLnRoaXMuX29yaWdpbmFsUm93c10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX29yaWdpbmFsUm93cyA9IHRoaXMuX2VuZ2luZS5yb3dEYXRhKCk7XG4gICAgY29uc3QgZmlsdGVyZWQgPSB0aGlzLl9vcmlnaW5hbFJvd3MuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBjcml0ZXJpYS5tYXAoKGMpID0+IG1hdGNoZXNDcml0ZXJpb24ocm93LmNlbGxzW2MuY29sSWRdPy52YWx1ZSwgYykpO1xuICAgICAgcmV0dXJuIG1vZGUgPT09ICdhbmQnID8gcmVzdWx0cy5ldmVyeShCb29sZWFuKSA6IHJlc3VsdHMuc29tZShCb29sZWFuKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2VuZ2luZS5yb3dEYXRhLnNldChmaWx0ZXJlZCk7XG4gIH1cblxuICAvKiogQ2xlYXIgYWxsIGZpbHRlcnMgYW5kIHJlc3RvcmUgb3JpZ2luYWwgcm93cy4gKi9cbiAgY2xlYXJGaWx0ZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9lbmdpbmUpIHJldHVybjtcbiAgICB0aGlzLl9lbmdpbmUucm93RGF0YS5zZXQoWy4uLnRoaXMuX29yaWdpbmFsUm93c10pO1xuICB9XG5cbiAgb25CZWZvcmVGaWx0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvbkFmdGVyRmlsdGVyKCk6IHZvaWQge1xuICAgIC8vIFN5bmMgb3JpZ2luYWwgcm93cyB3aGVuIGRhdGEgY2hhbmdlcyBleHRlcm5hbGx5XG4gICAgaWYgKHRoaXMuX2VuZ2luZSkge1xuICAgICAgdGhpcy5fb3JpZ2luYWxSb3dzID0gdGhpcy5fZW5naW5lLnJvd0RhdGEoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hlc0NyaXRlcmlvbih2YWx1ZTogdW5rbm93biwgY3JpdGVyaW9uOiBGaWx0ZXJDcml0ZXJpb24pOiBib29sZWFuIHtcbiAgY29uc3QgdiA9IHZhbHVlID09IG51bGwgPyAnJyA6IFN0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgYyA9IGNyaXRlcmlvbi52YWx1ZSA9PSBudWxsID8gJycgOiBTdHJpbmcoY3JpdGVyaW9uLnZhbHVlKS50b0xvd2VyQ2FzZSgpO1xuXG4gIHN3aXRjaCAoY3JpdGVyaW9uLm9wZXJhdG9yKSB7XG4gICAgY2FzZSAnZXF1YWxzJzpcbiAgICAgIHJldHVybiB2ID09PSBjO1xuICAgIGNhc2UgJ25vdEVxdWFscyc6XG4gICAgICByZXR1cm4gdiAhPT0gYztcbiAgICBjYXNlICdjb250YWlucyc6XG4gICAgICByZXR1cm4gdi5pbmNsdWRlcyhjKTtcbiAgICBjYXNlICdub3RDb250YWlucyc6XG4gICAgICByZXR1cm4gIXYuaW5jbHVkZXMoYyk7XG4gICAgY2FzZSAnc3RhcnRzV2l0aCc6XG4gICAgICByZXR1cm4gdi5zdGFydHNXaXRoKGMpO1xuICAgIGNhc2UgJ2VuZHNXaXRoJzpcbiAgICAgIHJldHVybiB2LmVuZHNXaXRoKGMpO1xuICAgIGNhc2UgJ2d0JzpcbiAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpID4gTnVtYmVyKGNyaXRlcmlvbi52YWx1ZSk7XG4gICAgY2FzZSAnZ3RlJzpcbiAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpID49IE51bWJlcihjcml0ZXJpb24udmFsdWUpO1xuICAgIGNhc2UgJ2x0JzpcbiAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpIDwgTnVtYmVyKGNyaXRlcmlvbi52YWx1ZSk7XG4gICAgY2FzZSAnbHRlJzpcbiAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpIDw9IE51bWJlcihjcml0ZXJpb24udmFsdWUpO1xuICAgIGNhc2UgJ2JldHdlZW4nOiB7XG4gICAgICBjb25zdCBudW0gPSBOdW1iZXIodmFsdWUpO1xuICAgICAgcmV0dXJuIG51bSA+PSBOdW1iZXIoY3JpdGVyaW9uLnZhbHVlKSAmJiBudW0gPD0gTnVtYmVyKGNyaXRlcmlvbi52YWx1ZVRvKTtcbiAgICB9XG4gICAgY2FzZSAnaW4nOiB7XG4gICAgICBjb25zdCBhcnIgPSBBcnJheS5pc0FycmF5KGNyaXRlcmlvbi52YWx1ZSkgPyBjcml0ZXJpb24udmFsdWUgOiBbXTtcbiAgICAgIHJldHVybiBhcnIuc29tZSgoaXRlbSkgPT4gU3RyaW5nKGl0ZW0pLnRvTG93ZXJDYXNlKCkgPT09IHYpO1xuICAgIH1cbiAgICBjYXNlICdlbXB0eSc6XG4gICAgICByZXR1cm4gdiA9PT0gJyc7XG4gICAgY2FzZSAnbm90RW1wdHknOlxuICAgICAgcmV0dXJuIHYgIT09ICcnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19