@worktile/theia 16.2.5 → 16.2.7

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 (65) hide show
  1. package/editor.module.d.ts +2 -2
  2. package/esm2022/components/action/prevent-default.mjs +3 -3
  3. package/esm2022/components/column-resize/column-resize-notifier.mjs +3 -3
  4. package/esm2022/components/column-resize/column-resize.directive.mjs +3 -3
  5. package/esm2022/components/column-resize/column-resize.module.mjs +8 -8
  6. package/esm2022/components/column-resize/event-dispatcher.mjs +3 -3
  7. package/esm2022/components/column-resize/overlay-handle.component.mjs +3 -3
  8. package/esm2022/components/column-resize/resizing.store.mjs +3 -3
  9. package/esm2022/components/contextmenu/contextmenu.component.mjs +3 -3
  10. package/esm2022/components/conversion-hint/conversion-hint.component.mjs +3 -3
  11. package/esm2022/components/element/element.component.mjs +3 -3
  12. package/esm2022/components/inline-toolbar/inline-toolbar.component.mjs +3 -3
  13. package/esm2022/components/listbox/listbox.mjs +9 -9
  14. package/esm2022/components/plugin-menu/plugin-menu.component.mjs +3 -3
  15. package/esm2022/components/table-select/table-select.component.mjs +3 -3
  16. package/esm2022/components/template/template.component.mjs +3 -3
  17. package/esm2022/components/text/text.component.mjs +3 -3
  18. package/esm2022/components/toolbar/toolbar.component.mjs +3 -3
  19. package/esm2022/components/toolbar-dropdown/toolbar-dropdown.component.mjs +3 -3
  20. package/esm2022/components/toolbar-group/toolbar-group.component.mjs +3 -3
  21. package/esm2022/components/toolbar-item/toolbar-item.component.mjs +3 -3
  22. package/esm2022/core/toolbar-item/base-toolbar-item.mjs +6 -6
  23. package/esm2022/editor.component.mjs +3 -3
  24. package/esm2022/editor.module.mjs +4 -4
  25. package/esm2022/interfaces/view-base.mjs +3 -3
  26. package/esm2022/pipes.mjs +9 -9
  27. package/esm2022/plugins/blockquote/blockquote.component.mjs +3 -3
  28. package/esm2022/plugins/code/code.component.mjs +11 -9
  29. package/esm2022/plugins/color/toolbar-item.component.mjs +3 -3
  30. package/esm2022/plugins/hr/hr.component.mjs +3 -3
  31. package/esm2022/plugins/image/image.component.mjs +3 -3
  32. package/esm2022/plugins/inline-code/inline-code.component.mjs +3 -3
  33. package/esm2022/plugins/link/edit/link-edit.component.mjs +3 -3
  34. package/esm2022/plugins/link/hover/link-hover.component.mjs +3 -3
  35. package/esm2022/plugins/link/link.component.mjs +6 -6
  36. package/esm2022/plugins/list/components/bulleted-list.component.mjs +3 -3
  37. package/esm2022/plugins/list/components/list-item.component.mjs +3 -3
  38. package/esm2022/plugins/list/components/numbered-list.component.mjs +3 -3
  39. package/esm2022/plugins/mention/suggestion.component.mjs +3 -3
  40. package/esm2022/plugins/quick-insert/components/quick-insert.component.mjs +3 -3
  41. package/esm2022/plugins/table/components/insert-mark/insert-mark.component.mjs +3 -3
  42. package/esm2022/plugins/table/components/row/row.component.mjs +3 -3
  43. package/esm2022/plugins/table/components/table.component.mjs +16 -6
  44. package/esm2022/plugins/table/components/td/td.component.mjs +3 -3
  45. package/esm2022/plugins/table/components/toolbar/table-options.component.mjs +3 -3
  46. package/esm2022/plugins/table/components/toolbar/table-toolbar.component.mjs +3 -3
  47. package/esm2022/plugins/table/table.pipe.mjs +6 -6
  48. package/esm2022/plugins/table/table.service.mjs +3 -3
  49. package/esm2022/plugins/table/table.store.mjs +5 -5
  50. package/esm2022/plugins/table/table.types.mjs +1 -1
  51. package/esm2022/plugins/table/toolbar-item.component.mjs +3 -3
  52. package/esm2022/plugins/todo-item/todo-item.component.mjs +3 -3
  53. package/esm2022/plugins/vertical-align/toolbar-item.component.mjs +3 -3
  54. package/esm2022/queries/is-empty-content-filter.mjs +2 -2
  55. package/esm2022/services/context.service.mjs +3 -3
  56. package/esm2022/services/table-contextmenu.service.mjs +3 -3
  57. package/esm2022/services/toolbar.service.mjs +3 -3
  58. package/esm2022/utils/get-mode.mjs +2 -2
  59. package/fesm2022/worktile-theia.mjs +208 -196
  60. package/fesm2022/worktile-theia.mjs.map +1 -1
  61. package/package.json +1 -1
  62. package/plugins/table/components/table.component.d.ts +1 -0
  63. package/plugins/table/table.types.d.ts +12 -0
  64. package/styles/editor.scss +4 -0
  65. package/styles/typo.scss +2 -1
@@ -234,10 +234,10 @@ export class TheToolbarComponent {
234
234
  }
235
235
  return TheToolbarItemComponent;
236
236
  }
237
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheToolbarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: TheToolbarGroupToken }], target: i0.ɵɵFactoryTarget.Component }); }
238
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheToolbarComponent, selector: "the-toolbar", inputs: { editor: "editor", toolbarItems: "toolbarItems", align: "align", containerClass: "containerClass", isMore: "isMore", afterTemplate: "afterTemplate" }, host: { properties: { "style.justifyContent": "this.justifyContent" }, classAttribute: "the-toolbar-container d-flex align-items-center" }, viewQueries: [{ propertyName: "toolbarContainer", first: true, predicate: ["toolbarContainer"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container #toolbarContainer></ng-container>\n<ng-content></ng-content>\n<ng-template *ngIf=\"afterTemplate\" [ngTemplateOutlet]=\"afterTemplate\"></ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
237
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheToolbarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: TheToolbarGroupToken }], target: i0.ɵɵFactoryTarget.Component }); }
238
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: TheToolbarComponent, selector: "the-toolbar", inputs: { editor: "editor", toolbarItems: "toolbarItems", align: "align", containerClass: "containerClass", isMore: "isMore", afterTemplate: "afterTemplate" }, host: { properties: { "style.justifyContent": "this.justifyContent" }, classAttribute: "the-toolbar-container d-flex align-items-center" }, viewQueries: [{ propertyName: "toolbarContainer", first: true, predicate: ["toolbarContainer"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container #toolbarContainer></ng-container>\n<ng-content></ng-content>\n<ng-template *ngIf=\"afterTemplate\" [ngTemplateOutlet]=\"afterTemplate\"></ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
239
239
  }
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheToolbarComponent, decorators: [{
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheToolbarComponent, decorators: [{
241
241
  type: Component,
242
242
  args: [{ selector: 'the-toolbar', host: {
243
243
  class: 'the-toolbar-container d-flex align-items-center'
@@ -122,10 +122,10 @@ export class TheToolbarDropdownComponent extends TheBaseToolbarDropdown {
122
122
  .withPush(false)
123
123
  .withPositions([bottomPosition, topPosition]);
124
124
  }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheToolbarDropdownComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopover }, { token: i0.ViewContainerRef }, { token: i2.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
126
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", host: { properties: { "class": "this.className" } }, viewQueries: [{ propertyName: "iconModeTemplate", first: true, predicate: ["iconModeTemplate"], descendants: true, static: true }, { propertyName: "textModeTemplate", first: true, predicate: ["textModeTemplate"], descendants: true, static: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<a\n *ngIf=\"mode === dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"icon-mode\"\n thyAction\n [thyActionIcon]=\"activeIcon\"\n [thyActionActive]=\"activeDropdown\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <thy-icon *ngIf=\"!toolbarItem.isHideDropdownActionIcon\" class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n<a\n *ngIf=\"mode !== dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"text-mode\"\n thyAction\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #dropdownTemplate>\n <div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n class=\"d-flex justify-content-between text-secondary\"\n href=\"javascript:;\"\n thyDropdownMenuItem\n [ngStyle]=\"menu?.styles\"\n [thyDropdownMenuItemActive]=\"activeKeys.includes(menu.key)\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"itemMousedown($event, menu)\"\n >\n <div class=\"d-flex align-items-center\">\n <thy-icon\n class=\"text-secondary\"\n *ngIf=\"menu?.icon && mode === dropdownMode.icon\"\n thyDropdownMenuItemIcon\n [thyIconName]=\"menu.icon\"\n ></thy-icon>\n <span class=\"text-body\" *ngIf=\"menu?.name\" thyDropdownMenuItemName>{{ menu.name }}</span>\n </div>\n <div class=\"menu-item-right font-size-sm text-muted\" *ngIf=\"menu?.shortcutKey\">{{ menu.shortcutKey }}</div>\n </a>\n <thy-dropdown-menu-divider *ngIf=\"menu.key === 'split'\"></thy-dropdown-menu-divider>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: i5.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i6.ThyDropdownMenuDividerComponent, selector: "thy-dropdown-menu-divider" }, { kind: "directive", type: i6.ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "directive", type: i6.ThyDropdownMenuItemNameDirective, selector: "[thyDropdownMenuItemName]" }, { kind: "directive", type: i6.ThyDropdownMenuItemIconDirective, selector: "[thyDropdownMenuItemIcon]" }, { kind: "directive", type: i6.ThyDropdownMenuItemActiveDirective, selector: "[thyDropdownMenuItemActive]", inputs: ["thyDropdownMenuItemActive"] }] }); }
125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheToolbarDropdownComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopover }, { token: i0.ViewContainerRef }, { token: i2.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
126
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", host: { properties: { "class": "this.className" } }, viewQueries: [{ propertyName: "iconModeTemplate", first: true, predicate: ["iconModeTemplate"], descendants: true, static: true }, { propertyName: "textModeTemplate", first: true, predicate: ["textModeTemplate"], descendants: true, static: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<a\n *ngIf=\"mode === dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"icon-mode\"\n thyAction\n [thyActionIcon]=\"activeIcon\"\n [thyActionActive]=\"activeDropdown\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <thy-icon *ngIf=\"!toolbarItem.isHideDropdownActionIcon\" class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n<a\n *ngIf=\"mode !== dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"text-mode\"\n thyAction\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #dropdownTemplate>\n <div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n class=\"d-flex justify-content-between text-secondary\"\n href=\"javascript:;\"\n thyDropdownMenuItem\n [ngStyle]=\"menu?.styles\"\n [thyDropdownMenuItemActive]=\"activeKeys.includes(menu.key)\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"itemMousedown($event, menu)\"\n >\n <div class=\"d-flex align-items-center\">\n <thy-icon\n class=\"text-secondary\"\n *ngIf=\"menu?.icon && mode === dropdownMode.icon\"\n thyDropdownMenuItemIcon\n [thyIconName]=\"menu.icon\"\n ></thy-icon>\n <span class=\"text-body\" *ngIf=\"menu?.name\" thyDropdownMenuItemName>{{ menu.name }}</span>\n </div>\n <div class=\"menu-item-right font-size-sm text-muted\" *ngIf=\"menu?.shortcutKey\">{{ menu.shortcutKey }}</div>\n </a>\n <thy-dropdown-menu-divider *ngIf=\"menu.key === 'split'\"></thy-dropdown-menu-divider>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: i5.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i6.ThyDropdownMenuDividerComponent, selector: "thy-dropdown-menu-divider" }, { kind: "directive", type: i6.ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "directive", type: i6.ThyDropdownMenuItemNameDirective, selector: "[thyDropdownMenuItemName]" }, { kind: "directive", type: i6.ThyDropdownMenuItemIconDirective, selector: "[thyDropdownMenuItemIcon]" }, { kind: "directive", type: i6.ThyDropdownMenuItemActiveDirective, selector: "[thyDropdownMenuItemActive]", inputs: ["thyDropdownMenuItemActive"] }] }); }
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheToolbarDropdownComponent, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheToolbarDropdownComponent, decorators: [{
129
129
  type: Component,
130
130
  args: [{ selector: 'the-toolbar-dropdown', template: "<a\n *ngIf=\"mode === dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"icon-mode\"\n thyAction\n [thyActionIcon]=\"activeIcon\"\n [thyActionActive]=\"activeDropdown\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <thy-icon *ngIf=\"!toolbarItem.isHideDropdownActionIcon\" class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n<a\n *ngIf=\"mode !== dropdownMode.icon\"\n href=\"javascript:;\"\n class=\"text-mode\"\n thyAction\n (mousedown)=\"preventDefault($event)\"\n (click)=\"toggleDropdown($event)\"\n>\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #dropdownTemplate>\n <div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n class=\"d-flex justify-content-between text-secondary\"\n href=\"javascript:;\"\n thyDropdownMenuItem\n [ngStyle]=\"menu?.styles\"\n [thyDropdownMenuItemActive]=\"activeKeys.includes(menu.key)\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"itemMousedown($event, menu)\"\n >\n <div class=\"d-flex align-items-center\">\n <thy-icon\n class=\"text-secondary\"\n *ngIf=\"menu?.icon && mode === dropdownMode.icon\"\n thyDropdownMenuItemIcon\n [thyIconName]=\"menu.icon\"\n ></thy-icon>\n <span class=\"text-body\" *ngIf=\"menu?.name\" thyDropdownMenuItemName>{{ menu.name }}</span>\n </div>\n <div class=\"menu-item-right font-size-sm text-muted\" *ngIf=\"menu?.shortcutKey\">{{ menu.shortcutKey }}</div>\n </a>\n <thy-dropdown-menu-divider *ngIf=\"menu.key === 'split'\"></thy-dropdown-menu-divider>\n </ng-container>\n </div>\n</ng-template>\n" }]
131
131
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ThyPopover }, { type: i0.ViewContainerRef }, { type: i2.Overlay }]; }, propDecorators: { className: [{
@@ -93,10 +93,10 @@ export class TheToolbarGroupComponent {
93
93
  this.groupPopoverRef.close();
94
94
  }
95
95
  }
96
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheToolbarGroupComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopover }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
97
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheToolbarGroupComponent, selector: "the-toolbar-group", inputs: { menus: "menus", item: "item" }, host: { listeners: { "mousedown": "mousedownHandler($event)", "document:mouseup": "documentMouseupHandle($event)", "click": "clickHandle($event)" }, properties: { "class": "this.className" } }, viewQueries: [{ propertyName: "groupTemplate", first: true, predicate: ["groupTemplate"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<a\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"active\"\n [thyTooltip]=\"item?.name\"\n thyTooltipPlacement=\"top\"\n></a>\n\n<ng-template #groupTemplate>\n <the-toolbar class=\"group\" [editor]=\"editor\" [toolbarItems]=\"menus\" [isMore]=\"false\"></the-toolbar>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i3.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i4.TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }] }); }
96
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheToolbarGroupComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopover }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
97
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: TheToolbarGroupComponent, selector: "the-toolbar-group", inputs: { menus: "menus", item: "item" }, host: { listeners: { "mousedown": "mousedownHandler($event)", "document:mouseup": "documentMouseupHandle($event)", "click": "clickHandle($event)" }, properties: { "class": "this.className" } }, viewQueries: [{ propertyName: "groupTemplate", first: true, predicate: ["groupTemplate"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<a\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"active\"\n [thyTooltip]=\"item?.name\"\n thyTooltipPlacement=\"top\"\n></a>\n\n<ng-template #groupTemplate>\n <the-toolbar class=\"group\" [editor]=\"editor\" [toolbarItems]=\"menus\" [isMore]=\"false\"></the-toolbar>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i3.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i4.TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }] }); }
98
98
  }
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheToolbarGroupComponent, decorators: [{
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheToolbarGroupComponent, decorators: [{
100
100
  type: Component,
101
101
  args: [{ selector: 'the-toolbar-group', template: "<a\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"active\"\n [thyTooltip]=\"item?.name\"\n thyTooltipPlacement=\"top\"\n></a>\n\n<ng-template #groupTemplate>\n <the-toolbar class=\"group\" [editor]=\"editor\" [toolbarItems]=\"menus\" [isMore]=\"false\"></the-toolbar>\n</ng-template>\n" }]
102
102
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ThyPopover }, { type: i0.ViewContainerRef }]; }, propDecorators: { className: [{
@@ -27,8 +27,8 @@ export class TheToolbarItemComponent extends TheBaseToolbarItem {
27
27
  }
28
28
  this.toolbarItem?.execute(this.editor);
29
29
  }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheToolbarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheToolbarItemComponent, selector: "the-toolbar-item", host: { listeners: { "mousedown": "toggleDropdown($event)" }, properties: { "class": "this.className" } }, usesInheritance: true, ngImport: i0, template: `
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheToolbarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: TheToolbarItemComponent, selector: "the-toolbar-item", host: { listeners: { "mousedown": "toggleDropdown($event)" }, properties: { "class": "this.className" } }, usesInheritance: true, ngImport: i0, template: `
32
32
  <a
33
33
  href="javascript:;"
34
34
  thyAction
@@ -43,7 +43,7 @@ export class TheToolbarItemComponent extends TheBaseToolbarItem {
43
43
  <ng-template #tooltip let-data> {{ data?.name }} {{ data?.shortcutKey }} </ng-template>
44
44
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i2.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }] }); }
45
45
  }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheToolbarItemComponent, decorators: [{
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheToolbarItemComponent, decorators: [{
47
47
  type: Component,
48
48
  args: [{
49
49
  selector: 'the-toolbar-item',
@@ -34,10 +34,10 @@ export class TheBaseToolbarItem {
34
34
  this.active = false;
35
35
  }
36
36
  }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheBaseToolbarItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
38
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: TheBaseToolbarItem, inputs: { toolbarItem: "toolbarItem", editor: "editor", itemMousedownHandle: "itemMousedownHandle" }, host: { properties: { "class.disabled": "this.disabledState", "class.active": "this.activeState" } }, ngImport: i0 }); }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheBaseToolbarItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
38
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.4", type: TheBaseToolbarItem, inputs: { toolbarItem: "toolbarItem", editor: "editor", itemMousedownHandle: "itemMousedownHandle" }, host: { properties: { "class.disabled": "this.disabledState", "class.active": "this.activeState" } }, ngImport: i0 }); }
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheBaseToolbarItem, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheBaseToolbarItem, decorators: [{
41
41
  type: Directive
42
42
  }], propDecorators: { toolbarItem: [{
43
43
  type: Input
@@ -72,10 +72,10 @@ export class TheBaseToolbarDropdown extends TheBaseToolbarItem {
72
72
  this.activeMenuItem = activeItem ? activeItem : this.defaultDropdownItem;
73
73
  }
74
74
  }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheBaseToolbarDropdown, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
76
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: TheBaseToolbarDropdown, inputs: { menus: "menus", mode: "mode", dropdownItemKey: "dropdownItemKey" }, usesInheritance: true, ngImport: i0 }); }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheBaseToolbarDropdown, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
76
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.4", type: TheBaseToolbarDropdown, inputs: { menus: "menus", mode: "mode", dropdownItemKey: "dropdownItemKey" }, usesInheritance: true, ngImport: i0 }); }
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheBaseToolbarDropdown, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheBaseToolbarDropdown, decorators: [{
79
79
  type: Directive
80
80
  }], propDecorators: { menus: [{
81
81
  type: Input
@@ -398,8 +398,8 @@ export class TheEditorComponent extends mixinUnsubscribe(MixinBase) {
398
398
  text
399
399
  };
400
400
  }
401
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheEditorComponent, deps: [{ token: i0.Injector }, { token: i1.TheContextService }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i2.ThyIconRegistry }], target: i0.ɵɵFactoryTarget.Component }); }
402
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheEditorComponent, selector: "the-editor, theEditor", inputs: { theOptions: "theOptions", thePlugins: "thePlugins", theGlobalToolbar: "theGlobalToolbar", theDecorate: "theDecorate", theOnError: "theOnError" }, outputs: { theOnSave: "theOnSave", theOnDOMEvent: "theOnDOMEvent", theEditorCreated: "theEditorCreated", theUploadingStatus: "theUploadingStatus" }, host: { properties: { "class.the-editor-readonly": "theOptions?.readonly", "class.the-mobile-editor": "isMobileMode" }, classAttribute: "the-editor" }, providers: [
401
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheEditorComponent, deps: [{ token: i0.Injector }, { token: i1.TheContextService }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i2.ThyIconRegistry }], target: i0.ɵɵFactoryTarget.Component }); }
402
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: TheEditorComponent, selector: "the-editor, theEditor", inputs: { theOptions: "theOptions", thePlugins: "thePlugins", theGlobalToolbar: "theGlobalToolbar", theDecorate: "theDecorate", theOnError: "theOnError" }, outputs: { theOnSave: "theOnSave", theOnDOMEvent: "theOnDOMEvent", theEditorCreated: "theEditorCreated", theUploadingStatus: "theUploadingStatus" }, host: { properties: { "class.the-editor-readonly": "theOptions?.readonly", "class.the-mobile-editor": "isMobileMode" }, classAttribute: "the-editor" }, providers: [
403
403
  TheContextService,
404
404
  {
405
405
  provide: NG_VALUE_ACCESSOR,
@@ -408,7 +408,7 @@ export class TheEditorComponent extends mixinUnsubscribe(MixinBase) {
408
408
  }
409
409
  ], viewQueries: [{ propertyName: "templateInstance", first: true, predicate: ["templateInstance"], descendants: true, static: true }, { propertyName: "theEditableContainer", first: true, predicate: ["theEditableContainer"], descendants: true, read: ElementRef, static: true }, { propertyName: "globalToolbarInstance", first: true, predicate: ["globalToolbar"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<the-toolbar\n *ngIf=\"!theOptions?.readonly && !theGlobalToolbar && !isMobileMode\"\n [ngClass]=\"{\n 'the-toolbar-disabled': theOptions?.disabled\n }\"\n #globalToolbar\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.global\"\n [containerClass]=\"globalToolbarClass\"\n [align]=\"theOptions?.toolbar?.align\"\n></the-toolbar>\n\n<div\n #theEditableContainer\n class=\"the-editable-container\"\n thyImageGroup\n [ngClass]=\"{\n 'the-editor-disabled': theOptions?.disabled,\n 'max-height': maxHeight\n }\"\n [ngStyle]=\"{ 'max-height': maxHeight }\"\n>\n <slate-editable\n class=\"the-editor-typo\"\n [editor]=\"editor\"\n [ngModel]=\"editorValue\"\n (ngModelChange)=\"valueChange($event)\"\n [decorate]=\"decorate\"\n [placeholder]=\"theOptions?.placeholder\"\n [placeholderDecorate]=\"theOptions?.placeholderDecorate ? theOptions?.placeholderDecorate : null\"\n [renderElement]=\"renderElement\"\n [renderText]=\"renderText\"\n [renderLeaf]=\"renderLeaf\"\n [readonly]=\"theOptions?.readonly || theOptions?.disabled\"\n [keydown]=\"onKeyDown\"\n [click]=\"onClick\"\n [paste]=\"onSlaPaste\"\n [beforeInput]=\"onSlaBeforeInput\"\n [blur]=\"onSlaBlur\"\n [focus]=\"onSlaFocus\"\n [copy]=\"onSlaCopy\"\n [cut]=\"onSlaCut\"\n [isStrictDecorate]=\"false\"\n [compositionStart]=\"onSlaCompositionStart\"\n [compositionEnd]=\"onSlaCompositionEnd\"\n [dragStart]=\"onSlaDragStart\"\n [dragOver]=\"onSlaDragOver\"\n [drop]=\"onDrop\"\n (mousedown)=\"mousedown($event)\"\n [scrollSelectionIntoView]=\"scrollSelectionIntoView\"\n ></slate-editable>\n <ng-container *ngIf=\"!isMobileMode\">\n <the-inline-toolbar\n *ngIf=\"!theOptions?.readonly && theOptions?.inlineToolbarVisible\"\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.inline\"\n ></the-inline-toolbar>\n <div *ngIf=\"!theOptions?.readonly\" theQuickInsert [editor]=\"editor\" [isVisible]=\"visibleQuickInsertPlus\"></div>\n </ng-container>\n\n <the-template #templateInstance></the-template>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.SlateEditable, selector: "slate-editable", inputs: ["editor", "renderElement", "renderLeaf", "renderText", "decorate", "placeholderDecorate", "scrollSelectionIntoView", "isStrictDecorate", "trackBy", "readonly", "placeholder", "beforeInput", "blur", "click", "compositionEnd", "compositionUpdate", "compositionStart", "copy", "cut", "dragOver", "dragStart", "dragEnd", "drop", "focus", "keydown", "paste", "spellCheck", "autoCorrect", "autoCapitalize"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.ThyImageGroupComponent, selector: "thy-image-group, [thyImageGroup]" }, { kind: "component", type: i7.TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }, { kind: "component", type: i8.TheInlineToolbarComponent, selector: "the-inline-toolbar", inputs: ["editor", "toolbarItems"] }, { kind: "component", type: i9.TheQuickInsertComponent, selector: "[theQuickInsert]", inputs: ["editor", "isVisible"] }, { kind: "component", type: i10.TheTemplateComponent, selector: "the-template,[theTemplate]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
410
410
  }
411
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheEditorComponent, decorators: [{
411
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheEditorComponent, decorators: [{
412
412
  type: Component,
413
413
  args: [{ selector: 'the-editor, theEditor', providers: [
414
414
  TheContextService,
@@ -145,8 +145,8 @@ export const PLUGIN_COMPONENTS = [
145
145
  ];
146
146
  const PIPES = [ElementStylePipe, ElementClassPipe, TableFreezeColumnPipe, TableFreezeRowPipe, PluginMenuPipe];
147
147
  export class TheEditorModule {
148
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
149
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.5", ngImport: i0, type: TheEditorModule, declarations: [TheEditorComponent, ElementStylePipe, ElementClassPipe, TableFreezeColumnPipe, TableFreezeRowPipe, PluginMenuPipe, TheToolbarComponent,
148
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
149
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.4", ngImport: i0, type: TheEditorModule, declarations: [TheEditorComponent, ElementStylePipe, ElementClassPipe, TableFreezeColumnPipe, TableFreezeRowPipe, PluginMenuPipe, TheToolbarComponent,
150
150
  TheToolbarDropdownComponent,
151
151
  TheToolbarGroupComponent,
152
152
  TheToolbarItemComponent,
@@ -217,7 +217,7 @@ export class TheEditorModule {
217
217
  TheListboxGroupDirective,
218
218
  TheListboxDirective,
219
219
  ThePreventDefaultDirective] }); }
220
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheEditorModule, providers: [
220
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheEditorModule, providers: [
221
221
  {
222
222
  provide: TheToolbarGroupToken,
223
223
  useValue: TheToolbarGroupComponent
@@ -225,7 +225,7 @@ export class TheEditorModule {
225
225
  THE_MODE_PROVIDER
226
226
  ], imports: [CommonModule, ScrollingModule, SlateModule, FormsModule, TETHYS, CodemirrorModule, TheColumnSizeModule] }); }
227
227
  }
228
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheEditorModule, decorators: [{
228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheEditorModule, decorators: [{
229
229
  type: NgModule,
230
230
  args: [{
231
231
  declarations: [TheEditorComponent, ...PIPES, ...COMPONENTS, ...PLUGIN_COMPONENTS],
@@ -25,10 +25,10 @@ export class TheBaseElementComponent extends BaseElementComponent {
25
25
  const blockClass = this.editor.isInline(this.element) ? 'slate-inline-block' : 'slate-block';
26
26
  this.nativeElement.classList.add(`slate-element-${this.element.type}`, blockClass);
27
27
  }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheBaseElementComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheBaseElementComponent, selector: "TheBaseElementComponent", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheBaseElementComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
29
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: TheBaseElementComponent, selector: "TheBaseElementComponent", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
30
30
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheBaseElementComponent, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheBaseElementComponent, decorators: [{
32
32
  type: Component,
33
33
  args: [{
34
34
  selector: 'TheBaseElementComponent',
package/esm2022/pipes.mjs CHANGED
@@ -12,10 +12,10 @@ export class ElementStylePipe {
12
12
  }
13
13
  return style;
14
14
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElementStylePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
16
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.5", ngImport: i0, type: ElementStylePipe, name: "elementStyle" }); }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: ElementStylePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
16
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.4", ngImport: i0, type: ElementStylePipe, name: "elementStyle" }); }
17
17
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElementStylePipe, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: ElementStylePipe, decorators: [{
19
19
  type: Pipe,
20
20
  args: [{
21
21
  name: 'elementStyle'
@@ -30,10 +30,10 @@ export class ElementClassPipe {
30
30
  }
31
31
  return classStr;
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElementClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
34
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.5", ngImport: i0, type: ElementClassPipe, name: "elementClass" }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: ElementClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
34
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.4", ngImport: i0, type: ElementClassPipe, name: "elementClass" }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElementClassPipe, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: ElementClassPipe, decorators: [{
37
37
  type: Pipe,
38
38
  args: [{
39
39
  name: 'elementClass'
@@ -46,10 +46,10 @@ export class PluginMenuPipe {
46
46
  }
47
47
  return icon;
48
48
  }
49
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: PluginMenuPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
50
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.5", ngImport: i0, type: PluginMenuPipe, name: "getMenuIcon" }); }
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: PluginMenuPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
50
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.4", ngImport: i0, type: PluginMenuPipe, name: "getMenuIcon" }); }
51
51
  }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: PluginMenuPipe, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: PluginMenuPipe, decorators: [{
53
53
  type: Pipe,
54
54
  args: [{
55
55
  name: 'getMenuIcon'
@@ -8,10 +8,10 @@ export class TheBlockquoteComponent extends TheBaseElementComponent {
8
8
  this.elementRef = elementRef;
9
9
  this.cdr = cdr;
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheBlockquoteComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheBlockquoteComponent, selector: "blockquote[theBlockquote]", usesInheritance: true, ngImport: i0, template: `<slate-children [children]="children" [context]="childrenContext" [viewContext]="viewContext"></slate-children>`, isInline: true, dependencies: [{ kind: "component", type: i1.SlateChildren, selector: "slate-children", inputs: ["children", "context", "viewContext"] }] }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheBlockquoteComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: TheBlockquoteComponent, selector: "blockquote[theBlockquote]", usesInheritance: true, ngImport: i0, template: `<slate-children [children]="children" [context]="childrenContext" [viewContext]="viewContext"></slate-children>`, isInline: true, dependencies: [{ kind: "component", type: i1.SlateChildren, selector: "slate-children", inputs: ["children", "context", "viewContext"] }] }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheBlockquoteComponent, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheBlockquoteComponent, decorators: [{
15
15
  type: Component,
16
16
  args: [{
17
17
  selector: 'blockquote[theBlockquote]',
@@ -1,17 +1,17 @@
1
1
  import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core';
2
2
  import { CodeMirrorComponent } from 'ng-codemirror';
3
- import { fromEvent, Subject } from 'rxjs';
3
+ import { Subject, fromEvent } from 'rxjs';
4
4
  import { delay, take, takeUntil } from 'rxjs/operators';
5
5
  import { Transforms } from 'slate';
6
6
  import { AngularEditor } from 'slate-angular';
7
- import { copyNode } from '../../utils';
8
7
  import { TheToolbarDropdownComponent } from '../../components/toolbar-dropdown/toolbar-dropdown.component';
9
8
  import { CODEMIRROR_PADDING_TOP, CODE_MODES, DropdownMode } from '../../constants';
10
9
  import { TheBaseElementComponent } from '../../interfaces';
11
10
  import * as TheQueries from '../../queries';
12
11
  import * as TheTransforms from '../../transforms';
13
- import { CodeEditor } from './code.editor';
12
+ import { copyNode } from '../../utils';
14
13
  import { isMobileMode, isPrintMode } from '../../utils/get-mode';
14
+ import { CodeEditor } from './code.editor';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "ngx-tethys/notify";
17
17
  import * as i2 from "../../services/context.service";
@@ -60,7 +60,7 @@ export class TheCodeComponent extends TheBaseElementComponent {
60
60
  readOnly: false,
61
61
  autofocus: false,
62
62
  lineWiseCopyCut: true,
63
- lineWrapping: isPrintMode(this.editor),
63
+ lineWrapping: false,
64
64
  cursorBlinkRate: 500
65
65
  };
66
66
  this.activeLanguage = this.menus[0];
@@ -211,7 +211,9 @@ export class TheCodeComponent extends TheBaseElementComponent {
211
211
  }
212
212
  }
213
213
  useAutoWrap() {
214
- this.options = { ...this.options, lineWrapping: this.element.autoWrap || false };
214
+ const isPrint = isPrintMode(this.editor);
215
+ const lineWrapping = isPrint ? true : this.element.autoWrap || false;
216
+ this.options = { ...this.options, lineWrapping };
215
217
  }
216
218
  useHeight() {
217
219
  if (this.element.height && !isPrintMode(this.editor)) {
@@ -239,10 +241,10 @@ export class TheCodeComponent extends TheBaseElementComponent {
239
241
  this.destroy$.next();
240
242
  this.destroy$.complete();
241
243
  }
242
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheCodeComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ThyNotifyService }, { token: i2.TheContextService }, { token: i0.NgZone }, { token: i3.ThyPopover }, { token: i0.ViewContainerRef }, { token: i4.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
243
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheCodeComponent, selector: "div[theCode]", viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef, static: true }, { propertyName: "codemirror", first: true, predicate: ["codemirror"], descendants: true, read: CodeMirrorComponent }, { propertyName: "toolbarDropdownComponent", first: true, predicate: TheToolbarDropdownComponent, descendants: true, read: TheToolbarDropdownComponent }], usesInheritance: true, ngImport: i0, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<!-- \u53EA\u8BFB\u6A21\u5F0F\u4E0BCodeMirror-sizer\u9AD8\u5EA6\u6BD4\u7F16\u8F91\u6A21\u5F0F\u4E0B\u591A2px\uFF0C\u8BBE\u7F6EthyMinHeight\u4E3A46px\u9632\u6B62\u62D6\u62FD\u5230\u6700\u5C0F\u9AD8\u5EA6\u65F6\u53EA\u8BFB\u6A21\u5F0F\u4E0B\u51FA\u73B0\u6EDA\u52A8\u6761 -->\n<div\n thyResizable\n [thyMinHeight]=\"46\"\n [thyBounds]=\"resizeBounds\"\n [style.height.px]=\"resizeHeight\"\n (thyResize)=\"onResize($event)\"\n (thyResizeEnd)=\"onEndResize()\"\n class=\"resize-code-container\"\n [ngClass]=\"{ focus: isCollapsedAndNonReadonly, readonly: options.readOnly, active: isHightLight && isCollapsedAndNonReadonly }\"\n>\n <ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n >\n </ng-codemirror>\n <thy-resize-handle thyDirection=\"bottom\" class=\"code-resize-icon\" *ngIf=\"isCollapsedAndNonReadonly\"></thy-resize-handle>\n</div>\n\n<ng-template #toolbar>\n <thy-actions thySize=\"xxs\" thePreventDefault>\n <the-toolbar-dropdown\n [menus]=\"menus\"\n [toolbarItem]=\"activeLanguage\"\n [dropdownItemKey]=\"activeLanguage?.key\"\n [itemMousedownHandle]=\"onChangeLanguage\"\n >\n </the-toolbar-dropdown>\n <span class=\"auto-wrap d-flex align-items-center px-2 text-secondary\">\n <span>\u81EA\u52A8\u6362\u884C</span>\n <thy-switch\n class=\"auto-wrap-btn d-flex ml-1\"\n [(ngModel)]=\"options.lineWrapping\"\n (ngModelChange)=\"onChangeWrap($event)\"\n thySize=\"sm\"\n ></thy-switch>\n </span>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"copy\" thyTooltip=\"\u590D\u5236\" thyTooltipPlacement=\"top\" (click)=\"onCopy($event)\"></a>\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n thyActionIcon=\"trash\"\n thyTooltip=\"\u5220\u9664\"\n thyTooltipPlacement=\"top\"\n (click)=\"onDelete($event)\"\n ></a>\n </thy-actions>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i6.SlateChildren, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "directive", type: i9.ThyResizableDirective, selector: "[thyResizable]", inputs: ["thyBounds", "thyMaxHeight", "thyMaxWidth", "thyMinHeight", "thyMinWidth", "thyGridColumnCount", "thyMaxColumn", "thyMinColumn", "thyLockAspectRatio", "thyPreview", "thyDisabled"], outputs: ["thyResize", "thyResizeStart", "thyResizeEnd"] }, { kind: "component", type: i9.ThyResizeHandleComponent, selector: "thy-resize-handle, [thy-resize-handle]", inputs: ["thyDirection", "thyLine"], outputs: ["thyMouseDown"], exportAs: ["thyResizeHandle"] }, { kind: "component", type: i10.ThySwitchComponent, selector: "thy-switch", inputs: ["thyType", "thySize", "thyDisabled"], outputs: ["thyChange"] }, { kind: "component", type: i11.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i11.ThyActionsComponent, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: i12.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "component", type: i13.CodeMirrorComponent, selector: "ng-codemirror, [ngCodeMirror]", inputs: ["autoMaxHeight", "options", "delayRefreshTime"], outputs: ["focusChange"] }, { kind: "component", type: i14.TheToolbarDropdownComponent, selector: "the-toolbar-dropdown" }, { kind: "directive", type: i15.ThePreventDefaultDirective, selector: "[thePreventDefault]", exportAs: ["thePreventDefault"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
244
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheCodeComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ThyNotifyService }, { token: i2.TheContextService }, { token: i0.NgZone }, { token: i3.ThyPopover }, { token: i0.ViewContainerRef }, { token: i4.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
245
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: TheCodeComponent, selector: "div[theCode]", viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef, static: true }, { propertyName: "codemirror", first: true, predicate: ["codemirror"], descendants: true, read: CodeMirrorComponent }, { propertyName: "toolbarDropdownComponent", first: true, predicate: TheToolbarDropdownComponent, descendants: true, read: TheToolbarDropdownComponent }], usesInheritance: true, ngImport: i0, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<!-- \u53EA\u8BFB\u6A21\u5F0F\u4E0BCodeMirror-sizer\u9AD8\u5EA6\u6BD4\u7F16\u8F91\u6A21\u5F0F\u4E0B\u591A2px\uFF0C\u8BBE\u7F6EthyMinHeight\u4E3A46px\u9632\u6B62\u62D6\u62FD\u5230\u6700\u5C0F\u9AD8\u5EA6\u65F6\u53EA\u8BFB\u6A21\u5F0F\u4E0B\u51FA\u73B0\u6EDA\u52A8\u6761 -->\n<div\n thyResizable\n [thyMinHeight]=\"46\"\n [thyBounds]=\"resizeBounds\"\n [style.height.px]=\"resizeHeight\"\n (thyResize)=\"onResize($event)\"\n (thyResizeEnd)=\"onEndResize()\"\n class=\"resize-code-container\"\n [ngClass]=\"{ focus: isCollapsedAndNonReadonly, readonly: options.readOnly, active: isHightLight && isCollapsedAndNonReadonly }\"\n>\n <ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n >\n </ng-codemirror>\n <thy-resize-handle thyDirection=\"bottom\" class=\"code-resize-icon\" *ngIf=\"isCollapsedAndNonReadonly\"></thy-resize-handle>\n</div>\n\n<ng-template #toolbar>\n <thy-actions thySize=\"xxs\" thePreventDefault>\n <the-toolbar-dropdown\n [menus]=\"menus\"\n [toolbarItem]=\"activeLanguage\"\n [dropdownItemKey]=\"activeLanguage?.key\"\n [itemMousedownHandle]=\"onChangeLanguage\"\n >\n </the-toolbar-dropdown>\n <span class=\"auto-wrap d-flex align-items-center px-2 text-secondary\">\n <span>\u81EA\u52A8\u6362\u884C</span>\n <thy-switch\n class=\"auto-wrap-btn d-flex ml-1\"\n [(ngModel)]=\"options.lineWrapping\"\n (ngModelChange)=\"onChangeWrap($event)\"\n thySize=\"sm\"\n ></thy-switch>\n </span>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"copy\" thyTooltip=\"\u590D\u5236\" thyTooltipPlacement=\"top\" (click)=\"onCopy($event)\"></a>\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n thyActionIcon=\"trash\"\n thyTooltip=\"\u5220\u9664\"\n thyTooltipPlacement=\"top\"\n (click)=\"onDelete($event)\"\n ></a>\n </thy-actions>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i6.SlateChildren, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "directive", type: i9.ThyResizableDirective, selector: "[thyResizable]", inputs: ["thyBounds", "thyMaxHeight", "thyMaxWidth", "thyMinHeight", "thyMinWidth", "thyGridColumnCount", "thyMaxColumn", "thyMinColumn", "thyLockAspectRatio", "thyPreview", "thyDisabled"], outputs: ["thyResize", "thyResizeStart", "thyResizeEnd"] }, { kind: "component", type: i9.ThyResizeHandleComponent, selector: "thy-resize-handle, [thy-resize-handle]", inputs: ["thyDirection", "thyLine"], outputs: ["thyMouseDown"], exportAs: ["thyResizeHandle"] }, { kind: "component", type: i10.ThySwitchComponent, selector: "thy-switch", inputs: ["thyType", "thySize", "thyDisabled"], outputs: ["thyChange"] }, { kind: "component", type: i11.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i11.ThyActionsComponent, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: i12.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "component", type: i13.CodeMirrorComponent, selector: "ng-codemirror, [ngCodeMirror]", inputs: ["autoMaxHeight", "options", "delayRefreshTime"], outputs: ["focusChange"] }, { kind: "component", type: i14.TheToolbarDropdownComponent, selector: "the-toolbar-dropdown" }, { kind: "directive", type: i15.ThePreventDefaultDirective, selector: "[thePreventDefault]", exportAs: ["thePreventDefault"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
244
246
  }
245
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheCodeComponent, decorators: [{
247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheCodeComponent, decorators: [{
246
248
  type: Component,
247
249
  args: [{ selector: 'div[theCode]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<!-- \u53EA\u8BFB\u6A21\u5F0F\u4E0BCodeMirror-sizer\u9AD8\u5EA6\u6BD4\u7F16\u8F91\u6A21\u5F0F\u4E0B\u591A2px\uFF0C\u8BBE\u7F6EthyMinHeight\u4E3A46px\u9632\u6B62\u62D6\u62FD\u5230\u6700\u5C0F\u9AD8\u5EA6\u65F6\u53EA\u8BFB\u6A21\u5F0F\u4E0B\u51FA\u73B0\u6EDA\u52A8\u6761 -->\n<div\n thyResizable\n [thyMinHeight]=\"46\"\n [thyBounds]=\"resizeBounds\"\n [style.height.px]=\"resizeHeight\"\n (thyResize)=\"onResize($event)\"\n (thyResizeEnd)=\"onEndResize()\"\n class=\"resize-code-container\"\n [ngClass]=\"{ focus: isCollapsedAndNonReadonly, readonly: options.readOnly, active: isHightLight && isCollapsedAndNonReadonly }\"\n>\n <ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n >\n </ng-codemirror>\n <thy-resize-handle thyDirection=\"bottom\" class=\"code-resize-icon\" *ngIf=\"isCollapsedAndNonReadonly\"></thy-resize-handle>\n</div>\n\n<ng-template #toolbar>\n <thy-actions thySize=\"xxs\" thePreventDefault>\n <the-toolbar-dropdown\n [menus]=\"menus\"\n [toolbarItem]=\"activeLanguage\"\n [dropdownItemKey]=\"activeLanguage?.key\"\n [itemMousedownHandle]=\"onChangeLanguage\"\n >\n </the-toolbar-dropdown>\n <span class=\"auto-wrap d-flex align-items-center px-2 text-secondary\">\n <span>\u81EA\u52A8\u6362\u884C</span>\n <thy-switch\n class=\"auto-wrap-btn d-flex ml-1\"\n [(ngModel)]=\"options.lineWrapping\"\n (ngModelChange)=\"onChangeWrap($event)\"\n thySize=\"sm\"\n ></thy-switch>\n </span>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"copy\" thyTooltip=\"\u590D\u5236\" thyTooltipPlacement=\"top\" (click)=\"onCopy($event)\"></a>\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n thyActionIcon=\"trash\"\n thyTooltip=\"\u5220\u9664\"\n thyTooltipPlacement=\"top\"\n (click)=\"onDelete($event)\"\n ></a>\n </thy-actions>\n</ng-template>\n" }]
248
250
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.ThyNotifyService }, { type: i2.TheContextService }, { type: i0.NgZone }, { type: i3.ThyPopover }, { type: i0.ViewContainerRef }, { type: i4.Overlay }]; }, propDecorators: { toolbar: [{
@@ -255,4 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
255
257
  type: ViewChild,
256
258
  args: [TheToolbarDropdownComponent, { read: TheToolbarDropdownComponent, static: false }]
257
259
  }] } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29kZS9jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUtULFdBQVcsRUFDWCxTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXBELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbkYsT0FBTyxFQUFzQix1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9FLE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7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QUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7OEdBaFFRLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLG1JQWlDSyxXQUFXLGlIQUdSLG1CQUFtQix3RUFHekMsMkJBQTJCLDJCQUFVLDJCQUEyQixvREM3RS9FLGs5RUE2REE7OzJGRHZCYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0ksY0FBYyxtQkFFUCx1QkFBdUIsQ0FBQyxNQUFNO21TQW9DL0MsT0FBTztzQkFETixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJekQsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUlyRSx3QkFBd0I7c0JBRHZCLFNBQVM7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxJQUFJLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29kZU1pcnJvckNvbXBvbmVudCB9IGZyb20gJ25nLWNvZGVtaXJyb3InO1xuaW1wb3J0IHsgVGh5Tm90aWZ5U2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvbm90aWZ5JztcbmltcG9ydCB7IFRoeVBvcG92ZXIsIFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgVGh5UmVzaXplRXZlbnQgfSBmcm9tICduZ3gtdGV0aHlzL3Jlc2l6YWJsZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBjb3B5Tm9kZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDT0RFTUlSUk9SX1BBRERJTkdfVE9QLCBDT0RFX01PREVTLCBEcm9wZG93bk1vZGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29kZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgRGVmYXVsdFRvb2xiYXJJdGVtLCBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yIH0gZnJvbSAnLi9jb2RlLmVkaXRvcic7XG5pbXBvcnQgeyBpc01vYmlsZU1vZGUsIGlzUHJpbnRNb2RlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LW1vZGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Rpdlt0aGVDb2RlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRoZUNvZGVDb21wb25lbnQgZXh0ZW5kcyBUaGVCYXNlRWxlbWVudENvbXBvbmVudDxDb2RlRWxlbWVudCwgRWRpdG9yPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGFydFJlbmRlckNvZGVtaXJyb3IgPSBmYWxzZTtcblxuICAgIGRyb3Bkb3duTW9kZSA9IERyb3Bkb3duTW9kZTtcblxuICAgIG1heEhlaWdodCA9IGlzUHJpbnRNb2RlKHRoaXMuZWRpdG9yKSA/IDAgOiAzNTAgLSBDT0RFTUlSUk9SX1BBRERJTkdfVE9QICogMjtcblxuICAgIG1lbnVzID0gQ09ERV9NT0RFUy5tYXAoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7IGtleTogaXRlbS52YWx1ZSwgbmFtZTogaXRlbS5zaG93TmFtZSB9O1xuICAgIH0pO1xuXG4gICAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgaXNIaWdodExpZ2h0ID0gZmFsc2U7XG5cbiAgICByZXNpemVIZWlnaHQ6IG51bWJlciA9IG51bGw7XG5cbiAgICBvcHRpb25zID0ge1xuICAgICAgICBtb2RlOiB0aGlzLm1lbnVzWzBdLmtleSxcbiAgICAgICAgbGluZU51bWJlcnM6IGZhbHNlLFxuICAgICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICAgIGF1dG9mb2N1czogZmFsc2UsXG4gICAgICAgIGxpbmVXaXNlQ29weUN1dDogdHJ1ZSxcbiAgICAgICAgbGluZVdyYXBwaW5nOiBpc1ByaW50TW9kZSh0aGlzLmVkaXRvciksXG4gICAgICAgIGN1cnNvckJsaW5rUmF0ZTogNTAwXG4gICAgfTtcblxuICAgIGFjdGl2ZUxhbmd1YWdlOiBEZWZhdWx0VG9vbGJhckl0ZW0gPSB0aGlzLm1lbnVzWzBdO1xuXG4gICAgcmVzaXplQm91bmRzID0gbnVsbDtcblxuICAgIHRvb2xiYXJQb3BvdmVyUmVmOiBUaHlQb3BvdmVyUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCd0b29sYmFyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgdG9vbGJhcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvZGVtaXJyb3InLCB7IHJlYWQ6IENvZGVNaXJyb3JDb21wb25lbnQsIHN0YXRpYzogZmFsc2UgfSlcbiAgICBjb2RlbWlycm9yOiBDb2RlTWlycm9yQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQsIHsgcmVhZDogVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50LCBzdGF0aWM6IGZhbHNlIH0pXG4gICAgdG9vbGJhckRyb3Bkb3duQ29tcG9uZW50OiBUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQ7XG5cbiAgICBnZXQgY29kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jb250ZW50O1xuICAgIH1cblxuICAgIGdldCBpc1Rvb2xiYXJPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b29sYmFyUG9wb3ZlclJlZiAmJiB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKSAmJiB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKS5oYXNBdHRhY2hlZCgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5Tm90aWZ5U2VydmljZTogVGh5Tm90aWZ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIHN1cGVyLm9uQ29udGV4dENoYW5nZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHkgJiYgIWlzTW9iaWxlTW9kZSh0aGlzLmVkaXRvcikpIHtcbiAgICAgICAgICAgIHRoaXMub3BlblRvb2xiYXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VUb29sYmFyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yZWFkT25seSAhPT0gdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlUmVhZG9ubHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubW9kZSAhPT0gdGhpcy5lbGVtZW50Lmxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VNb2RlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxpbmVXcmFwcGluZyAhPT0gdGhpcy5lbGVtZW50LmF1dG9XcmFwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VBdXRvV3JhcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucmVzaXplSGVpZ2h0ICE9PSB0aGlzLmVsZW1lbnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VIZWlnaHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Jsb2NrT3BlcmF0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50aGUtY29kZS1ibG9jay1vcGVyYXRpb24nKT8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDb2RlbWlycm9yID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uZy1jb2RlbWlycm9yJyk/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gIWlzQ29kZW1pcnJvciAmJiAhaXNCbG9ja09wZXJhdGlvbjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RoZS1jb2RlLWNvbnRhaW5lcicpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIC8vIGRlbGF5IDIwbXNcbiAgICAgICAgICAgIC8vIGNjb2RlbWlycm9yIGlzIHRvbyBzbG93XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSksIGRlbGF5KDIwKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckNvZGVtaXJyb3IoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZWRpdCBtb2RlIGNhbiBub3QgZGVsYXlcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckNvZGVtaXJyb3IoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVDb2RlbWlycm9yRm9jdXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUJvdW5kcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmF0aXZlRWxlbWVudDogdGhpcy5jb250ZXh0U2VydmljZS5nZXRFZGl0YWJsZUVsZW1lbnQoKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW5Ub29sYmFyKCkge1xuICAgICAgICBpZiAoIVRoZVF1ZXJpZXMuaXNHbG9iYWxDb2xsYXBzZWQodGhpcy5lZGl0b3IpIHx8IHRoaXMuaXNUb29sYmFyT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9vbGJhclBvcG92ZXJSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3Blbih0aGlzLnRvb2xiYXIsIHtcbiAgICAgICAgICAgIG9yaWdpbjogdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3RoZS1wbHVnaW4tdG9vbGJhci1wb3BvdmVyJ10sXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWUsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5jcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkpO1xuICAgIH1cblxuICAgIGNsb3NlVG9vbGJhcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNUb29sYmFyT3Blbikge1xuICAgICAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpIHtcbiAgICAgICAgY29uc3QgdG9wTGVmdFBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgIG9mZnNldFk6IC00XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhHcm93QWZ0ZXJPcGVuKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW3RvcExlZnRQb3NpdGlvbl0pO1xuICAgIH1cblxuICAgIHJlbmRlckNvZGVtaXJyb3IoKSB7XG4gICAgICAgIHRoaXMuc3RhcnRSZW5kZXJDb2RlbWlycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy51c2VSZWFkb25seSgpO1xuICAgICAgICB0aGlzLnVzZU1vZGUoKTtcbiAgICAgICAgdGhpcy51c2VBdXRvV3JhcCgpO1xuICAgICAgICB0aGlzLnVzZUhlaWdodCgpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZUNvZGVtaXJyb3JGb2N1cygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJiB0aGlzLmNvZGVtaXJyb3IgJiYgdGhpcy5jb2RlbWlycm9yLmVkaXRvciAmJiAhdGhpcy5jb2RlbWlycm9yLmVkaXRvci5oYXNGb2N1cygpKSB7XG4gICAgICAgICAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IuYmx1cih0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29kZW1pcnJvci5lZGl0b3IuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2RlbWlycm9yLmVkaXRvci5yZWZyZXNoKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMjAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvZGVDaGFuZ2UoJGV2ZW50KSB7XG4gICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gZmFsc2U7XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGNvbnRlbnQ6ICRldmVudCB9KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBUaGVUcmFuc2Zvcm1zLmRlbGV0ZUVsZW1lbnQodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgb25Db3B5KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvcHlOb2RlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQsIHRoaXMudGh5Tm90aWZ5U2VydmljZSwgdGhpcy5jb2RlbWlycm9yLmVkaXRvcik7XG4gICAgfVxuXG4gICAgZm9jdXNDaGFuZ2UoY29kZU1pcnJvckZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGNvZGVNaXJyb3JGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmlzSGlnaHRMaWdodCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25DaGFuZ2VMYW5ndWFnZSA9IGl0ZW0gPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbW9kZTogaXRlbS5rZXkgfTtcbiAgICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZSA9IGl0ZW07XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGxhbmd1YWdlOiBpdGVtLmtleSB9KTtcbiAgICB9O1xuXG4gICAgdXNlTW9kZSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIG1vZGU6IHRoaXMuZWxlbWVudC5sYW5ndWFnZSB9O1xuICAgICAgICBjb25zdCBtZW51SXRlbSA9IHRoaXMubWVudXMuZmluZChpID0+IGkua2V5ID09PSB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpO1xuICAgICAgICBpZiAobWVudUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTGFuZ3VhZ2UgPSBtZW51SXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVzZUF1dG9XcmFwKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nOiB0aGlzLmVsZW1lbnQuYXV0b1dyYXAgfHwgZmFsc2UgfTtcbiAgICB9XG5cbiAgICB1c2VIZWlnaHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQuaGVpZ2h0ICYmICFpc1ByaW50TW9kZSh0aGlzLmVkaXRvcikpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gdGhpcy5lbGVtZW50LmhlaWdodDtcbiAgICAgICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy5lbGVtZW50LmhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVzZVJlYWRvbmx5KCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgcmVhZE9ubHk6IHRoaXMucmVhZG9ubHksIGN1cnNvckJsaW5rUmF0ZTogdGhpcy5yZWFkb25seSA/IC0xIDogNTAwIH07XG4gICAgfVxuXG4gICAgb25SZXNpemUoeyBoZWlnaHQgfTogVGh5UmVzaXplRXZlbnQpIHtcbiAgICAgICAgdGhpcy5yZXNpemVIZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIG9uRW5kUmVzaXplKCkge1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgQW5ndWxhckVkaXRvci5maW5kUGF0aCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KSk7XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGhlaWdodDogdGhpcy5yZXNpemVIZWlnaHQgfSk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2VXcmFwKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zLCBsaW5lV3JhcHBpbmc6IHZhbHVlIHx8IGZhbHNlIH07XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGF1dG9XcmFwOiB2YWx1ZSA/IHZhbHVlIDogbnVsbCB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8c2xhdGUtY2hpbGRyZW4gW2NoaWxkcmVuXT1cImNoaWxkcmVuXCIgW2NvbnRleHRdPVwiY2hpbGRyZW5Db250ZXh0XCIgW3ZpZXdDb250ZXh0XT1cInZpZXdDb250ZXh0XCI+PC9zbGF0ZS1jaGlsZHJlbj5cblxuPCEtLSDlj6ror7vmqKHlvI/kuItDb2RlTWlycm9yLXNpemVy6auY5bqm5q+U57yW6L6R5qih5byP5LiL5aSaMnB477yM6K6+572udGh5TWluSGVpZ2h05Li6NDZweOmYsuatouaLluaLveWIsOacgOWwj+mrmOW6puaXtuWPquivu+aooeW8j+S4i+WHuueOsOa7muWKqOadoSAgLS0+XG48ZGl2XG4gIHRoeVJlc2l6YWJsZVxuICBbdGh5TWluSGVpZ2h0XT1cIjQ2XCJcbiAgW3RoeUJvdW5kc109XCJyZXNpemVCb3VuZHNcIlxuICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJlc2l6ZUhlaWdodFwiXG4gICh0aHlSZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiXG4gICh0aHlSZXNpemVFbmQpPVwib25FbmRSZXNpemUoKVwiXG4gIGNsYXNzPVwicmVzaXplLWNvZGUtY29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwieyBmb2N1czogaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSwgcmVhZG9ubHk6IG9wdGlvbnMucmVhZE9ubHksIGFjdGl2ZTogaXNIaWdodExpZ2h0ICYmIGlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHkgfVwiXG4+XG4gIDxuZy1jb2RlbWlycm9yXG4gICAgKm5nSWY9XCJzdGFydFJlbmRlckNvZGVtaXJyb3JcIlxuICAgICNjb2RlbWlycm9yXG4gICAgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIlxuICAgIGNsYXNzPVwibmctY29kZW1pcnJvci13cmFwcGVyXCJcbiAgICBbbmdTdHlsZV09XCJ7IG1heEhlaWdodDogbWF4SGVpZ2h0ID4gMCA/IG1heEhlaWdodCArICdweCcgOiAnYXV0bycgfVwiXG4gICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgW25nTW9kZWxdPVwiY29kZVwiXG4gICAgW2RlbGF5UmVmcmVzaFRpbWVdPVwiMzAwXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJjb2RlQ2hhbmdlKCRldmVudClcIlxuICAgIChmb2N1c0NoYW5nZSk9XCJmb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgICBbYXV0b01heEhlaWdodF09XCJtYXhIZWlnaHRcIlxuICA+XG4gIDwvbmctY29kZW1pcnJvcj5cbiAgPHRoeS1yZXNpemUtaGFuZGxlIHRoeURpcmVjdGlvbj1cImJvdHRvbVwiIGNsYXNzPVwiY29kZS1yZXNpemUtaWNvblwiICpuZ0lmPVwiaXNDb2xsYXBzZWRBbmROb25SZWFkb25seVwiPjwvdGh5LXJlc2l6ZS1oYW5kbGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0b29sYmFyPlxuICA8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInh4c1wiIHRoZVByZXZlbnREZWZhdWx0PlxuICAgIDx0aGUtdG9vbGJhci1kcm9wZG93blxuICAgICAgW21lbnVzXT1cIm1lbnVzXCJcbiAgICAgIFt0b29sYmFySXRlbV09XCJhY3RpdmVMYW5ndWFnZVwiXG4gICAgICBbZHJvcGRvd25JdGVtS2V5XT1cImFjdGl2ZUxhbmd1YWdlPy5rZXlcIlxuICAgICAgW2l0ZW1Nb3VzZWRvd25IYW5kbGVdPVwib25DaGFuZ2VMYW5ndWFnZVwiXG4gICAgPlxuICAgIDwvdGhlLXRvb2xiYXItZHJvcGRvd24+XG4gICAgPHNwYW4gY2xhc3M9XCJhdXRvLXdyYXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC0yIHRleHQtc2Vjb25kYXJ5XCI+XG4gICAgICA8c3Bhbj7oh6rliqjmjaLooYw8L3NwYW4+XG4gICAgICA8dGh5LXN3aXRjaFxuICAgICAgICBjbGFzcz1cImF1dG8td3JhcC1idG4gZC1mbGV4IG1sLTFcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm9wdGlvbnMubGluZVdyYXBwaW5nXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VXcmFwKCRldmVudClcIlxuICAgICAgICB0aHlTaXplPVwic21cIlxuICAgICAgPjwvdGh5LXN3aXRjaD5cbiAgICA8L3NwYW4+XG4gICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRoeUFjdGlvbiB0aHlBY3Rpb25JY29uPVwiY29weVwiIHRoeVRvb2x0aXA9XCLlpI3liLZcIiB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCIgKGNsaWNrKT1cIm9uQ29weSgkZXZlbnQpXCI+PC9hPlxuICAgIDx0aHktZGl2aWRlciBjbGFzcz1cIm1yLTIgbWwtMSBhbGlnbi1zZWxmLWNlbnRlclwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCIgdGh5Q29sb3I9XCJsaWdodFwiPjwvdGh5LWRpdmlkZXI+XG4gICAgPGFcbiAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgdGh5QWN0aW9uXG4gICAgICB0aHlUeXBlPVwiZGFuZ2VyXCJcbiAgICAgIHRoeUFjdGlvbkljb249XCJ0cmFzaFwiXG4gICAgICB0aHlUb29sdGlwPVwi5Yig6ZmkXCJcbiAgICAgIHRoeVRvb2x0aXBQbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKCRldmVudClcIlxuICAgID48L2E+XG4gIDwvdGh5LWFjdGlvbnM+XG48L25nLXRlbXBsYXRlPlxuIl19
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29kZS9jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUtULFdBQVcsRUFDWCxTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXBELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5GLE9BQU8sRUFBc0IsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRSxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQU8zQyxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsdUJBQTRDO0lBMEM5RSxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BJLENBQUM7SUFFRCxZQUNXLFVBQXNCLEVBQ3RCLEdBQXNCLEVBQ3JCLGdCQUFrQyxFQUNsQyxjQUFpQyxFQUNqQyxNQUFjLEVBQ2QsVUFBc0IsRUFDdEIsZ0JBQWtDLEVBQ2xDLE9BQWdCO1FBRXhCLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFUaEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNyQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUF6RDVCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUU5QixpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUU1QixjQUFTLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO1FBRTVFLFVBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFCLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO1FBRUgsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFL0IsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFFNUIsWUFBTyxHQUFHO1lBQ04sSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztZQUN2QixXQUFXLEVBQUUsS0FBSztZQUNsQixRQUFRLEVBQUUsS0FBSztZQUNmLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLFlBQVksRUFBRSxLQUFLO1lBQ25CLGVBQWUsRUFBRSxHQUFHO1NBQ3ZCLENBQUM7UUFFRixtQkFBYyxHQUF1QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5ELGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBa0xwQixxQkFBZ0IsR0FBRyxJQUFJLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDM0IsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUM7SUF0SkYsQ0FBQztJQUVELGVBQWU7UUFDWCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMseUJBQXlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjthQUFNO1lBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDekMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3RCO1lBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtnQkFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2xCO1lBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtnQkFDckQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3RCO1lBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUMzQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDcEI7U0FDSjtJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQztpQkFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzlCLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDZixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxnQkFBZ0IsR0FDbEIsSUFBSSxDQUFDLHlCQUF5QjtvQkFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQXFCLENBQUMsQ0FBQztnQkFDekcsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQXFCLENBQUMsQ0FBQztnQkFDL0csSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQzNELENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixhQUFhO1lBQ2IsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDekQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUc7b0JBQ2hCLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFFO2lCQUMxRCxDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNsRSxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN4RCxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhO1lBQ3JDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsVUFBVSxFQUFFLENBQUMsNEJBQTRCLENBQUM7WUFDMUMsUUFBUSxFQUFFLENBQUM7WUFDWCxhQUFhLEVBQUUsSUFBSTtZQUNuQixXQUFXLEVBQUUsS0FBSztZQUNsQixjQUFjLEVBQUUsS0FBSztZQUNyQixlQUFlLEVBQUUsS0FBSztZQUN0QixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7U0FDN0QsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVELFlBQVk7UUFDUixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixNQUFNLGVBQWUsR0FBc0I7WUFDdkMsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsUUFBUTtZQUNsQixPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDZCxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsT0FBTzthQUNkLFFBQVEsRUFBRTthQUNWLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO2FBQ2xELHNCQUFzQixDQUFDLEtBQUssQ0FBQzthQUM3QixpQkFBaUIsQ0FBQyxLQUFLLENBQUM7YUFDeEIsUUFBUSxDQUFDLEtBQUssQ0FBQzthQUNmLGFBQWEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQseUJBQXlCO1FBQ3JCLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO1lBQ2hDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxJQUFJLENBQUMseUJBQXlCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNuSCxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNwQztZQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNYO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFNO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBaUI7UUFDdEIsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWlCO1FBQ3BCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxXQUFXLENBQUMsaUJBQTBCO1FBQ2xDLElBQUksaUJBQWlCLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDN0I7SUFDTCxDQUFDO0lBUUQsT0FBTztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkUsSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDeEM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMzRyxDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQUUsTUFBTSxFQUFrQjtRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNQLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbEYsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWM7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ2pFLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0FqUVEsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsbUlBaUNLLFdBQVcsaUhBR1IsbUJBQW1CLHdFQUd6QywyQkFBMkIsMkJBQVUsMkJBQTJCLG9EQzdFL0UsazlFQTZEQTs7MkZEdkJhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDSSxjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU07bVNBb0MvQyxPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl6RCxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSXJFLHdCQUF3QjtzQkFEdkIsU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2RlTWlycm9yQ29tcG9uZW50IH0gZnJvbSAnbmctY29kZW1pcnJvcic7XG5pbXBvcnQgeyBUaHlOb3RpZnlTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9ub3RpZnknO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlSZXNpemVFdmVudCB9IGZyb20gJ25neC10ZXRoeXMvcmVzaXphYmxlJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVkaXRvciwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDT0RFTUlSUk9SX1BBRERJTkdfVE9QLCBDT0RFX01PREVTLCBEcm9wZG93bk1vZGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29kZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgRGVmYXVsdFRvb2xiYXJJdGVtLCBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBjb3B5Tm9kZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGlzTW9iaWxlTW9kZSwgaXNQcmludE1vZGUgfSBmcm9tICcuLi8uLi91dGlscy9nZXQtbW9kZSc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yIH0gZnJvbSAnLi9jb2RlLmVkaXRvcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZGl2W3RoZUNvZGVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29kZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGhlQ29kZUNvbXBvbmVudCBleHRlbmRzIFRoZUJhc2VFbGVtZW50Q29tcG9uZW50PENvZGVFbGVtZW50LCBFZGl0b3I+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHN0YXJ0UmVuZGVyQ29kZW1pcnJvciA9IGZhbHNlO1xuXG4gICAgZHJvcGRvd25Nb2RlID0gRHJvcGRvd25Nb2RlO1xuXG4gICAgbWF4SGVpZ2h0ID0gaXNQcmludE1vZGUodGhpcy5lZGl0b3IpID8gMCA6IDM1MCAtIENPREVNSVJST1JfUEFERElOR19UT1AgKiAyO1xuXG4gICAgbWVudXMgPSBDT0RFX01PREVTLm1hcChpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIHsga2V5OiBpdGVtLnZhbHVlLCBuYW1lOiBpdGVtLnNob3dOYW1lIH07XG4gICAgfSk7XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBpc0hpZ2h0TGlnaHQgPSBmYWxzZTtcblxuICAgIHJlc2l6ZUhlaWdodDogbnVtYmVyID0gbnVsbDtcblxuICAgIG9wdGlvbnMgPSB7XG4gICAgICAgIG1vZGU6IHRoaXMubWVudXNbMF0ua2V5LFxuICAgICAgICBsaW5lTnVtYmVyczogZmFsc2UsXG4gICAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgYXV0b2ZvY3VzOiBmYWxzZSxcbiAgICAgICAgbGluZVdpc2VDb3B5Q3V0OiB0cnVlLFxuICAgICAgICBsaW5lV3JhcHBpbmc6IGZhbHNlLFxuICAgICAgICBjdXJzb3JCbGlua1JhdGU6IDUwMFxuICAgIH07XG5cbiAgICBhY3RpdmVMYW5ndWFnZTogRGVmYXVsdFRvb2xiYXJJdGVtID0gdGhpcy5tZW51c1swXTtcblxuICAgIHJlc2l6ZUJvdW5kcyA9IG51bGw7XG5cbiAgICB0b29sYmFyUG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgndG9vbGJhcicsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHRvb2xiYXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdjb2RlbWlycm9yJywgeyByZWFkOiBDb2RlTWlycm9yQ29tcG9uZW50LCBzdGF0aWM6IGZhbHNlIH0pXG4gICAgY29kZW1pcnJvcjogQ29kZU1pcnJvckNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50LCB7IHJlYWQ6IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCwgc3RhdGljOiBmYWxzZSB9KVxuICAgIHRvb2xiYXJEcm9wZG93bkNvbXBvbmVudDogVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50O1xuXG4gICAgZ2V0IGNvZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY29udGVudDtcbiAgICB9XG5cbiAgICBnZXQgaXNUb29sYmFyT3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhclBvcG92ZXJSZWYgJiYgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkgJiYgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkuaGFzQXR0YWNoZWQoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHRoeU5vdGlmeVNlcnZpY2U6IFRoeU5vdGlmeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXIsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlKCkge1xuICAgICAgICBzdXBlci5vbkNvbnRleHRDaGFuZ2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJiAhaXNNb2JpbGVNb2RlKHRoaXMuZWRpdG9yKSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuVG9vbGJhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVRvb2xiYXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlYWRPbmx5ICE9PSB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VSZWFkb25seSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2RlICE9PSB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZU1vZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGluZVdyYXBwaW5nICE9PSB0aGlzLmVsZW1lbnQuYXV0b1dyYXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yZXNpemVIZWlnaHQgIT09IHRoaXMuZWxlbWVudC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUhlaWdodCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQmxvY2tPcGVyYXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnRoZS1jb2RlLWJsb2NrLW9wZXJhdGlvbicpPy5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0NvZGVtaXJyb3IgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5nLWNvZGVtaXJyb3InKT8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0hpZ2h0TGlnaHQgPSAhaXNDb2RlbWlycm9yICYmICFpc0Jsb2NrT3BlcmF0aW9uO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndGhlLWNvZGUtY29udGFpbmVyJyk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgLy8gZGVsYXkgMjBtc1xuICAgICAgICAgICAgLy8gY2NvZGVtaXJyb3IgaXMgdG9vIHNsb3dcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSwgZGVsYXkoMjApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBlZGl0IG1vZGUgY2FuIG5vdCBkZWxheVxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvZGVtaXJyb3JGb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplQm91bmRzID0ge1xuICAgICAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldEVkaXRhYmxlRWxlbWVudCgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlblRvb2xiYXIoKSB7XG4gICAgICAgIGlmICghVGhlUXVlcmllcy5pc0dsb2JhbENvbGxhcHNlZCh0aGlzLmVkaXRvcikgfHwgdGhpcy5pc1Rvb2xiYXJPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKHRoaXMudG9vbGJhciwge1xuICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsndGhlLXBsdWdpbi10b29sYmFyLXBvcG92ZXInXSxcbiAgICAgICAgICAgIG1pbldpZHRoOiAwLFxuICAgICAgICAgICAgbWFudWFsQ2xvc3VyZTogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIGluc2lkZUNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIG91dHNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmPy5nZXRPdmVybGF5UmVmKCkudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmNyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKSk7XG4gICAgfVxuXG4gICAgY2xvc2VUb29sYmFyKCkge1xuICAgICAgICBpZiAodGhpcy5pc1Rvb2xiYXJPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkge1xuICAgICAgICBjb25zdCB0b3BMZWZ0UG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgb2Zmc2V0WTogLTRcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aEdyb3dBZnRlck9wZW4oZmFsc2UpXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbdG9wTGVmdFBvc2l0aW9uXSk7XG4gICAgfVxuXG4gICAgcmVuZGVyQ29kZW1pcnJvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFJlbmRlckNvZGVtaXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnVzZVJlYWRvbmx5KCk7XG4gICAgICAgIHRoaXMudXNlTW9kZSgpO1xuICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgIHRoaXMudXNlSGVpZ2h0KCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ29kZW1pcnJvckZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmIHRoaXMuY29kZW1pcnJvciAmJiB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yICYmICF0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLmhhc0ZvY3VzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5ibHVyKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2RlbWlycm9yLmVkaXRvci5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29kZUNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0hpZ2h0TGlnaHQgPSBmYWxzZTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQsIHsgY29udGVudDogJGV2ZW50IH0pO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIFRoZVRyYW5zZm9ybXMuZGVsZXRlRWxlbWVudCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkNvcHkoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29weU5vZGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgdGhpcy50aHlOb3RpZnlTZXJ2aWNlLCB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yKTtcbiAgICB9XG5cbiAgICBmb2N1c0NoYW5nZShjb2RlTWlycm9yRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoY29kZU1pcnJvckZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoYW5nZUxhbmd1YWdlID0gaXRlbSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zLCBtb2RlOiBpdGVtLmtleSB9O1xuICAgICAgICB0aGlzLmFjdGl2ZUxhbmd1YWdlID0gaXRlbTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQsIHsgbGFuZ3VhZ2U6IGl0ZW0ua2V5IH0pO1xuICAgIH07XG5cbiAgICB1c2VNb2RlKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbW9kZTogdGhpcy5lbGVtZW50Lmxhbmd1YWdlIH07XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtID0gdGhpcy5tZW51cy5maW5kKGkgPT4gaS5rZXkgPT09IHRoaXMuZWxlbWVudC5sYW5ndWFnZSk7XG4gICAgICAgIGlmIChtZW51SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZSA9IG1lbnVJdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXNlQXV0b1dyYXAoKSB7XG4gICAgICAgIGNvbnN0IGlzUHJpbnQgPSBpc1ByaW50TW9kZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IGxpbmVXcmFwcGluZyA9IGlzUHJpbnQgPyB0cnVlIDogdGhpcy5lbGVtZW50LmF1dG9XcmFwIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nIH07XG4gICAgfVxuXG4gICAgdXNlSGVpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50LmhlaWdodCAmJiAhaXNQcmludE1vZGUodGhpcy5lZGl0b3IpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VSZWFkb25seSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIHJlYWRPbmx5OiB0aGlzLnJlYWRvbmx5LCBjdXJzb3JCbGlua1JhdGU6IHRoaXMucmVhZG9ubHkgPyAtMSA6IDUwMCB9O1xuICAgIH1cblxuICAgIG9uUmVzaXplKHsgaGVpZ2h0IH06IFRoeVJlc2l6ZUV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IGhlaWdodDtcbiAgICB9XG5cbiAgICBvbkVuZFJlc2l6ZSgpIHtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCkpO1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgeyBoZWlnaHQ6IHRoaXMucmVzaXplSGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlV3JhcCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzSGlnaHRMaWdodCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nOiB2YWx1ZSB8fCBmYWxzZSB9O1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgeyBhdXRvV3JhcDogdmFsdWUgPyB2YWx1ZSA6IG51bGwgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPHNsYXRlLWNoaWxkcmVuIFtjaGlsZHJlbl09XCJjaGlsZHJlblwiIFtjb250ZXh0XT1cImNoaWxkcmVuQ29udGV4dFwiIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiPjwvc2xhdGUtY2hpbGRyZW4+XG5cbjwhLS0g5Y+q6K+75qih5byP5LiLQ29kZU1pcnJvci1zaXplcumrmOW6puavlOe8lui+keaooeW8j+S4i+WkmjJweO+8jOiuvue9rnRoeU1pbkhlaWdodOS4ujQ2cHjpmLLmraLmi5bmi73liLDmnIDlsI/pq5jluqbml7blj6ror7vmqKHlvI/kuIvlh7rnjrDmu5rliqjmnaEgIC0tPlxuPGRpdlxuICB0aHlSZXNpemFibGVcbiAgW3RoeU1pbkhlaWdodF09XCI0NlwiXG4gIFt0aHlCb3VuZHNdPVwicmVzaXplQm91bmRzXCJcbiAgW3N0eWxlLmhlaWdodC5weF09XCJyZXNpemVIZWlnaHRcIlxuICAodGh5UmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIlxuICAodGh5UmVzaXplRW5kKT1cIm9uRW5kUmVzaXplKClcIlxuICBjbGFzcz1cInJlc2l6ZS1jb2RlLWNvbnRhaW5lclwiXG4gIFtuZ0NsYXNzXT1cInsgZm9jdXM6IGlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHksIHJlYWRvbmx5OiBvcHRpb25zLnJlYWRPbmx5LCBhY3RpdmU6IGlzSGlnaHRMaWdodCAmJiBpc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5IH1cIlxuPlxuICA8bmctY29kZW1pcnJvclxuICAgICpuZ0lmPVwic3RhcnRSZW5kZXJDb2RlbWlycm9yXCJcbiAgICAjY29kZW1pcnJvclxuICAgIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJcbiAgICBjbGFzcz1cIm5nLWNvZGVtaXJyb3Itd3JhcHBlclwiXG4gICAgW25nU3R5bGVdPVwieyBtYXhIZWlnaHQ6IG1heEhlaWdodCA+IDAgPyBtYXhIZWlnaHQgKyAncHgnIDogJ2F1dG8nIH1cIlxuICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgIFtuZ01vZGVsXT1cImNvZGVcIlxuICAgIFtkZWxheVJlZnJlc2hUaW1lXT1cIjMwMFwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29kZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoZm9jdXNDaGFuZ2UpPVwiZm9jdXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW2F1dG9NYXhIZWlnaHRdPVwibWF4SGVpZ2h0XCJcbiAgPlxuICA8L25nLWNvZGVtaXJyb3I+XG4gIDx0aHktcmVzaXplLWhhbmRsZSB0aHlEaXJlY3Rpb249XCJib3R0b21cIiBjbGFzcz1cImNvZGUtcmVzaXplLWljb25cIiAqbmdJZj1cImlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHlcIj48L3RoeS1yZXNpemUtaGFuZGxlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdG9vbGJhcj5cbiAgPHRoeS1hY3Rpb25zIHRoeVNpemU9XCJ4eHNcIiB0aGVQcmV2ZW50RGVmYXVsdD5cbiAgICA8dGhlLXRvb2xiYXItZHJvcGRvd25cbiAgICAgIFttZW51c109XCJtZW51c1wiXG4gICAgICBbdG9vbGJhckl0ZW1dPVwiYWN0aXZlTGFuZ3VhZ2VcIlxuICAgICAgW2Ryb3Bkb3duSXRlbUtleV09XCJhY3RpdmVMYW5ndWFnZT8ua2V5XCJcbiAgICAgIFtpdGVtTW91c2Vkb3duSGFuZGxlXT1cIm9uQ2hhbmdlTGFuZ3VhZ2VcIlxuICAgID5cbiAgICA8L3RoZS10b29sYmFyLWRyb3Bkb3duPlxuICAgIDxzcGFuIGNsYXNzPVwiYXV0by13cmFwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMiB0ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgPHNwYW4+6Ieq5Yqo5o2i6KGMPC9zcGFuPlxuICAgICAgPHRoeS1zd2l0Y2hcbiAgICAgICAgY2xhc3M9XCJhdXRvLXdyYXAtYnRuIGQtZmxleCBtbC0xXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb25zLmxpbmVXcmFwcGluZ1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlV3JhcCgkZXZlbnQpXCJcbiAgICAgICAgdGh5U2l6ZT1cInNtXCJcbiAgICAgID48L3RoeS1zd2l0Y2g+XG4gICAgPC9zcGFuPlxuICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0aHlBY3Rpb24gdGh5QWN0aW9uSWNvbj1cImNvcHlcIiB0aHlUb29sdGlwPVwi5aSN5Yi2XCIgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiIChjbGljayk9XCJvbkNvcHkoJGV2ZW50KVwiPjwvYT5cbiAgICA8dGh5LWRpdmlkZXIgY2xhc3M9XCJtci0yIG1sLTEgYWxpZ24tc2VsZi1jZW50ZXJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiIHRoeUNvbG9yPVwibGlnaHRcIj48L3RoeS1kaXZpZGVyPlxuICAgIDxhXG4gICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgIHRoeUFjdGlvblxuICAgICAgdGh5VHlwZT1cImRhbmdlclwiXG4gICAgICB0aHlBY3Rpb25JY29uPVwidHJhc2hcIlxuICAgICAgdGh5VG9vbHRpcD1cIuWIoOmZpFwiXG4gICAgICB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCJcbiAgICAgIChjbGljayk9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbiAgICA+PC9hPlxuICA8L3RoeS1hY3Rpb25zPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -47,10 +47,10 @@ export class TheColorToolbarItemComponent extends TheBaseToolbarItem {
47
47
  Transforms.select(this.editor, this.editor.selection);
48
48
  ColorEditor.setColor(this.editor, this.selectedColor, this.type);
49
49
  }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheColorToolbarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheColorToolbarItemComponent, selector: "the-color-toolbar-item", host: { classAttribute: "the-toolbar-item" }, usesInheritance: true, ngImport: i0, template: "<a\n href=\"javascript:;\"\n thyAction\n [thyActionActive]=\"active\"\n [thyTooltip]=\"toolbarItem.name\"\n thyTooltipPlacement=\"top\"\n thyColorPicker\n thyPlacement=\"bottomLeft\"\n [(ngModel)]=\"selectedColor\"\n (ngModelChange)=\"changeColor($event)\"\n (mousedown)=\"preventDefault($event)\"\n>\n <thy-icon\n [thyIconName]=\"toolbarItem.icon\"\n thyIconType=\"twotone\"\n [thyTwotoneColor]=\"active ?? (toolbarItem.key === 'color' ? defaultColorLine : defaultBackgroundColorLine)\"\n ></thy-icon>\n <thy-icon class=\"link-down-icon font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n", dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i3.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i4.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "directive", type: i5.ThyColorPickerDirective, selector: "[thyColorPicker]", inputs: ["thyOffset", "thyHasBackdrop", "thyDefaultColor", "thyTransparentColorSelectable", "thyPresetColors", "thyPlacement", "thyTrigger", "thyShowDelay", "thyHideDelay"], outputs: ["thyPanelOpen", "thyPanelClose"] }] }); }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheColorToolbarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: TheColorToolbarItemComponent, selector: "the-color-toolbar-item", host: { classAttribute: "the-toolbar-item" }, usesInheritance: true, ngImport: i0, template: "<a\n href=\"javascript:;\"\n thyAction\n [thyActionActive]=\"active\"\n [thyTooltip]=\"toolbarItem.name\"\n thyTooltipPlacement=\"top\"\n thyColorPicker\n thyPlacement=\"bottomLeft\"\n [(ngModel)]=\"selectedColor\"\n (ngModelChange)=\"changeColor($event)\"\n (mousedown)=\"preventDefault($event)\"\n>\n <thy-icon\n [thyIconName]=\"toolbarItem.icon\"\n thyIconType=\"twotone\"\n [thyTwotoneColor]=\"active ?? (toolbarItem.key === 'color' ? defaultColorLine : defaultBackgroundColorLine)\"\n ></thy-icon>\n <thy-icon class=\"link-down-icon font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n", dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i3.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i4.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "directive", type: i5.ThyColorPickerDirective, selector: "[thyColorPicker]", inputs: ["thyOffset", "thyHasBackdrop", "thyDefaultColor", "thyTransparentColorSelectable", "thyPresetColors", "thyPlacement", "thyTrigger", "thyShowDelay", "thyHideDelay"], outputs: ["thyPanelOpen", "thyPanelClose"] }] }); }
52
52
  }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheColorToolbarItemComponent, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheColorToolbarItemComponent, decorators: [{
54
54
  type: Component,
55
55
  args: [{ selector: 'the-color-toolbar-item', host: {
56
56
  class: 'the-toolbar-item'
@@ -17,15 +17,15 @@ export class TheHrComponent extends TheBaseElementComponent {
17
17
  }
18
18
  });
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheHrComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheHrComponent, selector: "the-hr, [theHr]", usesInheritance: true, ngImport: i0, template: `
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheHrComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: TheHrComponent, selector: "the-hr, [theHr]", usesInheritance: true, ngImport: i0, template: `
22
22
  <div class="the-hr" contenteditable="false" [ngClass]="{ active: isCollapsedAndNonReadonly }">
23
23
  <hr class="the-hr" />
24
24
  <slate-children [children]="children" [context]="childrenContext" [viewContext]="viewContext"></slate-children>
25
25
  </div>
26
26
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.SlateChildren, selector: "slate-children", inputs: ["children", "context", "viewContext"] }] }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheHrComponent, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: TheHrComponent, decorators: [{
29
29
  type: Component,
30
30
  args: [{
31
31
  selector: 'the-hr, [theHr]',