@difizen/libro-search 0.1.0 → 0.1.2

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 (37) hide show
  1. package/es/abstract-search-provider.d.ts +2 -1
  2. package/es/abstract-search-provider.d.ts.map +1 -1
  3. package/es/index.less +10 -8
  4. package/es/libro-search-engine-text.d.ts +1 -1
  5. package/es/libro-search-generic-provider.d.ts +5 -4
  6. package/es/libro-search-generic-provider.d.ts.map +1 -1
  7. package/es/libro-search-generic-provider.js +11 -11
  8. package/es/libro-search-manager.d.ts +1 -1
  9. package/es/libro-search-manager.d.ts.map +1 -1
  10. package/es/libro-search-manager.js +3 -3
  11. package/es/libro-search-model.d.ts +4 -4
  12. package/es/libro-search-model.d.ts.map +1 -1
  13. package/es/libro-search-model.js +19 -9
  14. package/es/libro-search-protocol.d.ts +1 -13
  15. package/es/libro-search-protocol.d.ts.map +1 -1
  16. package/es/libro-search-protocol.js +0 -5
  17. package/es/libro-search-provider.d.ts +11 -7
  18. package/es/libro-search-provider.d.ts.map +1 -1
  19. package/es/libro-search-provider.js +70 -13
  20. package/es/libro-search-utils.d.ts +1 -1
  21. package/es/libro-search-utils.d.ts.map +1 -1
  22. package/es/libro-search-utils.js +11 -7
  23. package/es/libro-search-view.d.ts +11 -11
  24. package/es/libro-search-view.d.ts.map +1 -1
  25. package/es/libro-search-view.js +136 -79
  26. package/package.json +4 -3
  27. package/src/abstract-search-provider.ts +1 -2
  28. package/src/index.less +10 -8
  29. package/src/libro-search-engine-text.ts +1 -1
  30. package/src/libro-search-generic-provider.ts +6 -6
  31. package/src/libro-search-manager.ts +4 -3
  32. package/src/libro-search-model.ts +10 -11
  33. package/src/libro-search-protocol.ts +1 -16
  34. package/src/libro-search-provider.ts +88 -41
  35. package/src/libro-search-utils.spec.ts +2 -2
  36. package/src/libro-search-utils.ts +11 -9
  37. package/src/libro-search-view.tsx +63 -43
@@ -20,13 +20,17 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
20
20
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
21
21
  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
22
22
  function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.'); }
23
- import { LibroView } from '@difizen/libro-core';
24
- import { inject, prop, transient, watch, equals } from '@difizen/mana-app';
23
+ import { EditorCellView, LibroView, VirtualizedManagerHelper } from '@difizen/libro-core';
24
+ import { inject, prop, transient, equals } from '@difizen/mana-app';
25
25
  import { Deferred, DisposableCollection } from '@difizen/mana-app';
26
26
  import { l10n } from '@difizen/mana-l10n';
27
27
  import { AbstractSearchProvider } from "./abstract-search-provider.js";
28
28
  import { LibroCellSearchProvider } from "./libro-cell-search-provider.js";
29
29
  import { SearchProviderOption } from "./libro-search-protocol.js";
30
+ export function elementInViewport(el) {
31
+ var boundingClientRect = el.getBoundingClientRect();
32
+ return boundingClientRect.top >= 0 && boundingClientRect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && boundingClientRect.left >= 0 && boundingClientRect.right <= (window.innerWidth || document.documentElement.clientWidth);
33
+ }
30
34
  export var LibroSearchProviderFactory = Symbol('LibroSearchProviderFactory');
31
35
  /**
32
36
  * Libro view search provider
@@ -37,7 +41,7 @@ export var LibroSearchProvider = (_dec = transient(), _dec2 = inject(LibroCellSe
37
41
  /**
38
42
  * @param option Provide the view to search in
39
43
  */
40
- function LibroSearchProvider(option) {
44
+ function LibroSearchProvider(option, virtualizedManagerHelper) {
41
45
  var _this;
42
46
  _classCallCheck(this, LibroSearchProvider);
43
47
  _this = _super.call(this, option);
@@ -149,7 +153,7 @@ export var LibroSearchProvider = (_dec = transient(), _dec2 = inject(LibroCellSe
149
153
  *
150
154
  */
151
155
  _this.startQuery = /*#__PURE__*/function () {
152
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(query, _filters) {
156
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(query, filters) {
153
157
  var _this$filters;
154
158
  var highlightNext,
155
159
  cells,
@@ -385,9 +389,7 @@ export var LibroSearchProvider = (_dec = transient(), _dec2 = inject(LibroCellSe
385
389
  case 0:
386
390
  if (!_this.cellsChangeDeferred) {
387
391
  _this.cellsChangeDeferred = new Deferred();
388
- _this.cellsChangeDeferred.promise.then(_this.doCellsChanged).catch(function () {
389
- //
390
- });
392
+ _this.cellsChangeDeferred.promise.then(_this.doCellsChanged).catch(console.error);
391
393
  _this.cellsChangeDeferred.resolve();
392
394
  }
393
395
  case 1:
@@ -424,16 +426,64 @@ export var LibroSearchProvider = (_dec = transient(), _dec2 = inject(LibroCellSe
424
426
  reverse = _args12.length > 0 && _args12[0] !== undefined ? _args12[0] : false;
425
427
  loop = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : false;
426
428
  activateNewMatch = /*#__PURE__*/function () {
427
- var _ref12 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {
429
+ var _ref12 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(match) {
430
+ var _activeCell$container;
431
+ var activeCell, node, _activeCell$editor, line, editor;
428
432
  return _regeneratorRuntime().wrap(function _callee11$(_context11) {
429
433
  while (1) switch (_context11.prev = _context11.next) {
430
434
  case 0:
435
+ if (_this.getActiveIndex() !== _this.currentProviderIndex) {
436
+ _this.selectCell(_this.currentProviderIndex);
437
+ }
438
+ activeCell = _this.view.activeCell;
439
+ if (activeCell) {
440
+ _context11.next = 4;
441
+ break;
442
+ }
443
+ return _context11.abrupt("return");
444
+ case 4:
445
+ node = (_activeCell$container = activeCell.container) === null || _activeCell$container === void 0 ? void 0 : _activeCell$container.current;
446
+ if (!elementInViewport(node)) {
447
+ try {
448
+ if (_this.view.activeCell) {
449
+ if (_this.virtualizedManager.isVirtualized) {
450
+ if (EditorCellView.is(activeCell)) {
451
+ line = (_activeCell$editor = activeCell.editor) === null || _activeCell$editor === void 0 || (_activeCell$editor = _activeCell$editor.getPositionAt(match.position)) === null || _activeCell$editor === void 0 ? void 0 : _activeCell$editor.line;
452
+ _this.view.model.scrollToCellView({
453
+ cellIndex: _this.view.activeCellIndex,
454
+ lineIndex: line
455
+ });
456
+ }
457
+ } else {
458
+ _this.view.model.scrollToView(_this.view.activeCell);
459
+ }
460
+ }
461
+ } catch (error) {
462
+ // no-op
463
+ }
464
+ }
465
+ // Unhide cell
466
+ if (activeCell.hasInputHidden) {
467
+ activeCell.hasInputHidden = false;
468
+ }
469
+ if (elementInViewport(node)) {
470
+ _context11.next = 9;
471
+ break;
472
+ }
473
+ return _context11.abrupt("return");
474
+ case 9:
475
+ if (EditorCellView.is(activeCell)) {
476
+ // await activeCell.editor;
477
+ editor = activeCell.editor;
478
+ editor === null || editor === void 0 || editor.revealSelection(editor.getSelection());
479
+ }
480
+ case 10:
431
481
  case "end":
432
482
  return _context11.stop();
433
483
  }
434
484
  }, _callee11);
435
485
  }));
436
- return function activateNewMatch() {
486
+ return function activateNewMatch(_x6) {
437
487
  return _ref12.apply(this, arguments);
438
488
  };
439
489
  }();
@@ -465,7 +515,7 @@ export var LibroSearchProvider = (_dec = transient(), _dec2 = inject(LibroCellSe
465
515
  break;
466
516
  }
467
517
  _context12.next = 19;
468
- return activateNewMatch();
518
+ return activateNewMatch(match);
469
519
  case 19:
470
520
  return _context12.abrupt("return", match);
471
521
  case 22:
@@ -516,7 +566,7 @@ export var LibroSearchProvider = (_dec = transient(), _dec2 = inject(LibroCellSe
516
566
  break;
517
567
  }
518
568
  _context12.next = 43;
519
- return activateNewMatch();
569
+ return activateNewMatch(_match);
520
570
  case 43:
521
571
  return _context12.abrupt("return", _match);
522
572
  case 44:
@@ -563,10 +613,10 @@ export var LibroSearchProvider = (_dec = transient(), _dec2 = inject(LibroCellSe
563
613
  }, _callee14);
564
614
  }));
565
615
  _this.view = option.view;
566
- _this.toDispose.push(watch(_this.view.model, 'active', _this.onActiveCellChanged));
567
- _this.toDispose.push(watch(_this.view.model, 'cells', _this.onCellsChanged));
616
+ _this.virtualizedManager = virtualizedManagerHelper.getOrCreate(_this.view.model);
568
617
  return _this;
569
618
  }
619
+ LibroSearchProvider = inject(VirtualizedManagerHelper)(LibroSearchProvider, undefined, 1) || LibroSearchProvider;
570
620
  LibroSearchProvider = inject(SearchProviderOption)(LibroSearchProvider, undefined, 0) || LibroSearchProvider;
571
621
  _createClass(LibroSearchProvider, [{
572
622
  key: "filters",
@@ -693,6 +743,13 @@ export var LibroSearchProvider = (_dec = transient(), _dec2 = inject(LibroCellSe
693
743
  }
694
744
  };
695
745
  }
746
+ }, {
747
+ key: "selectCell",
748
+ value: function selectCell(selectIndex) {
749
+ if (selectIndex >= 0 && selectIndex < this.view.model.cells.length - 1) {
750
+ this.view.model.selectCell(this.view.model.cells[selectIndex]);
751
+ }
752
+ }
696
753
  }], [{
697
754
  key: "isApplicable",
698
755
  value:
@@ -1,4 +1,4 @@
1
- import type { SearchMatch } from './libro-search-protocol.js';
1
+ import type { SearchMatch } from '@difizen/libro-code-editor';
2
2
  /**
3
3
  * Search Utils
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"libro-search-utils.d.ts","sourceRoot":"","sources":["../src/libro-search-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;GAEG;AACH,qBACa,gBAAgB;IAC3B;;;;;;;OAOG;IACH,QAAQ,CACN,OAAO,EAAE,WAAW,EAAE,EACtB,QAAQ,EAAE,MAAM,EAChB,KAAK,SAAI,EACT,MAAM,SAAW,GAChB,MAAM,GAAG,SAAS;IA+BrB;;;;;;;OAOG;IACH,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,OAAO,GACb,MAAM,GAAG,SAAS;CAiBtB"}
1
+ {"version":3,"file":"libro-search-utils.d.ts","sourceRoot":"","sources":["../src/libro-search-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D;;GAEG;AACH,qBACa,gBAAgB;IAC3B;;;;;;;OAOG;IACH,QAAQ,CACN,OAAO,EAAE,WAAW,EAAE,EACtB,QAAQ,EAAE,MAAM,EAChB,KAAK,SAAI,EACT,MAAM,SAAW,GAChB,MAAM,GAAG,SAAS;IA+BrB;;;;;;;OAOG;IACH,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,OAAO,GACb,MAAM,GAAG,SAAS;CAoBtB"}
@@ -6,6 +6,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
6
6
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
7
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
8
  import { singleton } from '@difizen/mana-app';
9
+
9
10
  /**
10
11
  * Search Utils
11
12
  */
@@ -70,15 +71,18 @@ export var LibroSearchUtils = (_dec = singleton(), _dec(_class = /*#__PURE__*/fu
70
71
  var flag = caseSensitive ? 'g' : 'gi';
71
72
  // escape regex characters in query if its a string search
72
73
  var queryText = regex ? queryString : queryString.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&');
73
- var ret = new RegExp(queryText, flag);
74
-
75
- // If the empty string is hit, the search logic will freeze the browser tab
76
- // Trying /^/ or /$/ on the codemirror search demo, does not find anything.
77
- // So this is a limitation of the editor.
78
- if (ret.test('')) {
74
+ try {
75
+ var ret = new RegExp(queryText, flag);
76
+ // If the empty string is hit, the search logic will freeze the browser tab
77
+ // Trying /^/ or /$/ on the codemirror search demo, does not find anything.
78
+ // So this is a limitation of the editor.
79
+ if (ret.test('')) {
80
+ return undefined;
81
+ }
82
+ return ret;
83
+ } catch (error) {
79
84
  return undefined;
80
85
  }
81
- return ret;
82
86
  }
83
87
  }]);
84
88
  return LibroSearchUtils;
@@ -1,31 +1,28 @@
1
+ /// <reference types="react" resolution-mode="require"/>
1
2
  import type { LibroView } from '@difizen/libro-core';
2
3
  import { LirboContextKey } from '@difizen/libro-core';
3
4
  import { BaseView } from '@difizen/mana-app';
4
5
  import type { CheckboxChangeEvent } from 'antd/es/checkbox';
5
6
  import type { InputRef } from 'antd/es/input';
6
- import type { FC } from 'react';
7
7
  import type { LibroSearchProvider } from './libro-search-provider.js';
8
8
  import { LibroSearchProviderFactory } from './libro-search-provider.js';
9
9
  import { LibroSearchUtils } from './libro-search-utils.js';
10
- export declare const ReplaceToggle: FC;
11
- export declare const SearchIndex: FC;
12
- export declare const SearchContent: FC;
10
+ export declare const ReplaceToggle: () => import("react/jsx-runtime").JSX.Element;
11
+ export declare const SearchIndex: () => import("react/jsx-runtime").JSX.Element;
12
+ export declare const SearchContent: () => import("react/jsx-runtime").JSX.Element;
13
13
  export declare const SearchComponent: import("react").ForwardRefExoticComponent<import("react").RefAttributes<HTMLDivElement>>;
14
14
  export declare class LibroSearchView extends BaseView {
15
15
  findInputRef?: React.RefObject<InputRef> | null;
16
16
  contextKey: LirboContextKey;
17
17
  utils: LibroSearchUtils;
18
18
  searchProviderFactory: LibroSearchProviderFactory;
19
- constructor(contextKey: LirboContextKey, utils: LibroSearchUtils, searchProviderFactory: LibroSearchProviderFactory);
20
- protected _libro?: LibroView;
21
- get libro(): LibroView | undefined;
22
- set libro(value: LibroView | undefined);
19
+ libro?: LibroView;
23
20
  searchProvider?: LibroSearchProvider;
24
21
  searchVisible: boolean;
25
22
  get replaceVisible(): boolean;
26
23
  settingVisible: boolean;
27
- findStr?: string | undefined;
28
- lastSearch?: string | undefined;
24
+ findStr?: string;
25
+ lastSearch?: string;
29
26
  replaceStr: string;
30
27
  caseSensitive: boolean;
31
28
  useRegex: boolean;
@@ -33,7 +30,10 @@ export declare class LibroSearchView extends BaseView {
33
30
  get contentHeight(): number;
34
31
  get currentMatchIndex(): number | undefined;
35
32
  get matchesCount(): number | undefined;
36
- onviewWillUnmount: () => void;
33
+ onViewMount: () => void;
34
+ onActiveCellChanged: () => void;
35
+ onCellsChanged: () => void;
36
+ onviewWillUnmount: () => Promise<void>;
37
37
  show: () => void;
38
38
  hide: () => void;
39
39
  onFocus: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"libro-search-view.d.ts","sourceRoot":"","sources":["../src/libro-search-view.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAsB,MAAM,mBAAmB,CAAC;AAIjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAM3D,eAAO,MAAM,aAAa,EAAE,EAY3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,EAOzB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,EAsH3B,CAAC;AAEF,eAAO,MAAM,eAAe,0FAiB1B,CAAC;AAEH,qBAEa,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAChD,UAAU,EAAE,eAAe,CAAC;IAC5B,KAAK,EAAE,gBAAgB,CAAC;IACxB,qBAAqB,EAAE,0BAA0B,CAAC;gBAGvB,UAAU,EAAE,eAAe,EAC1B,KAAK,EAAE,gBAAgB,EAEjD,qBAAqB,EAAE,0BAA0B;IAQnD,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAE7B,IAAI,KAAK,IAAI,SAAS,GAAG,SAAS,CAEjC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAGrC;IAEO,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,aAAa,UAAS;IAC9B,IAAI,cAAc,IAAI,OAAO,CAE5B;IACO,cAAc,UAAS;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAa;IACzC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAa;IAC5C,UAAU,SAAM;IAChB,aAAa,UAAS;IACtB,QAAQ,UAAS;IAEhB,IAAI,2FAAmB;IAEhC,IAAI,aAAa,WAShB;IACD,IAAI,iBAAiB,uBAMpB;IACD,IAAI,YAAY,uBAEf;IAED,iBAAiB,aAEf;IAEF,IAAI,aAKF;IACF,IAAI,aAKF;IAEF,OAAO,aAEL;IAEF,MAAM,MAAO,gBAAgB,CAAC,cAAc,CAAC,UAI3C;IAEF,MAAM,qCAcJ;IACF,aAAa,aAKX;IAEF,aAAa,aAGX;IAEF,mBAAmB,aAGjB;IAEF,cAAc,aAEZ;IAEF,IAAI,aAEF;IAEF,QAAQ,aAEN;IAEF,sBAAsB,MAAO,mBAAmB,UAI9C;IAEF,OAAO,aAEL;IACF,UAAU,aAER;IACF,YAAY,aAMV;IACF,eAAe,eAUb;IAEF,SAAS,YAAa,OAAO,UAM3B;IAEF,aAAa,MAAO,aAAa,UAqB/B;IAEF,SAAS,CAAC,kBAAkB,MAAO,MAAM,WAAW,CAAC,gBAAgB,CAAC,UAEpE;IAEF,gBAAgB,MAAO,MAAM,WAAW,CAAC,gBAAgB,CAAC,UAKxD;IACF,mBAAmB,MAAO,MAAM,WAAW,CAAC,gBAAgB,CAAC,UAE3D;CACH"}
1
+ {"version":3,"file":"libro-search-view.d.ts","sourceRoot":"","sources":["../src/libro-search-view.tsx"],"names":[],"mappings":";AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAsB,MAAM,mBAAmB,CAAC;AAIjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAM3D,eAAO,MAAM,aAAa,+CAYzB,CAAC;AAEF,eAAO,MAAM,WAAW,+CAevB,CAAC;AAEF,eAAO,MAAM,aAAa,+CA+HzB,CAAC;AAEF,eAAO,MAAM,eAAe,0FAiB1B,CAAC;AAEH,qBAEa,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,gBAAgB,CAAC;IACd,qBAAqB,EAAE,0BAA0B,CAAC;IACtF,KAAK,CAAC,EAAE,SAAS,CAAC;IACV,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,aAAa,UAAS;IAC9B,IAAI,cAAc,IAAI,OAAO,CAE5B;IACO,cAAc,UAAS;IACvB,OAAO,CAAC,EAAE,MAAM,CAAa;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAa;IAChC,UAAU,SAAM;IAChB,aAAa,UAAS;IACtB,QAAQ,UAAS;IAEhB,IAAI,2FAAmB;IAEhC,IAAI,aAAa,WAShB;IACD,IAAI,iBAAiB,uBAMpB;IACD,IAAI,YAAY,uBAEf;IAEQ,WAAW,aAQlB;IAEF,mBAAmB,aAIjB;IAEF,cAAc,aAIZ;IAEF,iBAAiB,sBAGf;IAEF,IAAI,aAKF;IACF,IAAI,aAQF;IAEF,OAAO,aAEL;IAEF,MAAM,MAAO,gBAAgB,CAAC,cAAc,CAAC,UAI3C;IAEF,MAAM,qCAcJ;IACF,aAAa,aAKX;IAEF,aAAa,aAGX;IAEF,mBAAmB,aAGjB;IAEF,cAAc,aAGZ;IAEF,IAAI,aAEF;IAEF,QAAQ,aAEN;IAEF,sBAAsB,MAAO,mBAAmB,UAI9C;IAEF,OAAO,aAEL;IACF,UAAU,aAER;IACF,YAAY,aAMV;IACF,eAAe,eAUb;IAEF,SAAS,YAAa,OAAO,UAM3B;IAEF,aAAa,MAAO,aAAa,UAqB/B;IAEF,SAAS,CAAC,kBAAkB,MAAO,MAAM,WAAW,CAAC,gBAAgB,CAAC,UAEpE;IAEF,gBAAgB,MAAO,MAAM,WAAW,CAAC,gBAAgB,CAAC,UAKxD;IACF,mBAAmB,MAAO,MAAM,WAAW,CAAC,gBAAgB,CAAC,UAE3D;CACH"}