ng2-ckeditor
Version:
Angular CKEditor component
1 lines • 20.9 kB
Source Map (JSON)
{"version":3,"file":"ng2-ckeditor.mjs","sources":["../../src/ckbutton.directive.ts","../../src/ckgroup.directive.ts","../../src/ckeditor.component.ts","../../src/ckeditor.module.ts","../../src/ng2-ckeditor.ts"],"sourcesContent":["import { Directive, OnInit, EventEmitter, Output, Input } from '@angular/core';\nimport { CKEditorComponent } from './ckeditor.component';\n\n/**\n * CKGroup component\n * Usage :\n * <ckeditor [(ngModel)]=\"data\" [config]=\"{...}\" debounce=\"500\">\n * <ckbutton [name]=\"'SaveButton'\" [command]=\"'saveCommand'\" (click)=\"save($event)\"\n * [icon]=\"'/save.png'\" [toolbar]=\"'customGroup,1'\" [label]=\"'Save'\">\n * </ckbutton>\n * </ckeditor>\n */\n@Directive({\n selector: 'ckbutton',\n})\nexport class CKButtonDirective implements OnInit {\n @Output() click = new EventEmitter<CKEDITOR.editor>();\n @Input() label: string;\n @Input() command: string;\n @Input() toolbar: string;\n @Input() name: string;\n @Input() icon: string;\n\n public initialize(editor: CKEditorComponent): void {\n editor.instance.addCommand(this.command, {\n exec: (edit: CKEDITOR.editor): boolean => {\n this.click.emit(edit);\n return true;\n },\n });\n\n editor.instance.ui.addButton(this.name, {\n label: this.label,\n command: this.command,\n toolbar: this.toolbar,\n icon: this.icon,\n });\n }\n\n ngOnInit(): void {\n if (!this.name) {\n throw new Error('Attribute \"name\" is required on <ckbutton>');\n }\n if (!this.command) {\n throw new Error('Attribute \"command\" is required on <ckbutton>');\n }\n }\n}\n","import { Directive, Input, AfterContentInit, ContentChildren, QueryList } from '@angular/core';\nimport { CKEditorComponent } from './ckeditor.component';\nimport { CKButtonDirective } from './ckbutton.directive';\n\n/**\n * CKGroup component\n * Usage :\n * <ckeditor [(ngModel)]=\"data\" [config]=\"{...}\" debounce=\"500\">\n * <ckgroup [name]=\"'exampleGroup2'\" [previous]=\"'1'\" [subgroupOf]=\"'exampleGroup1'\">\n * .\n * .\n * </ckgroup>\n * </ckeditor>\n */\n@Directive({\n selector: 'ckgroup',\n})\nexport class CKGroupDirective implements AfterContentInit {\n @Input() name: string;\n @Input() previous: string | number;\n @Input() subgroupOf: string;\n @ContentChildren(CKButtonDirective) toolbarButtons: QueryList<CKButtonDirective>;\n\n ngAfterContentInit(): void {\n // Reconfigure each button's toolbar property within ckgroup to hold its parent's name\n this.toolbarButtons.forEach((button) => (button.toolbar = this.name));\n }\n\n public initialize(editor: CKEditorComponent): void {\n editor.instance.ui.addToolbarGroup(this.name, this.previous, this.subgroupOf);\n // Initialize each button within ckgroup\n this.toolbarButtons.forEach((button) => {\n button.initialize(editor);\n });\n }\n}\n","// Imports\nimport {\n Component,\n Input,\n Output,\n ViewChild,\n EventEmitter,\n NgZone,\n forwardRef,\n QueryList,\n AfterViewInit,\n ContentChildren,\n SimpleChanges,\n OnChanges,\n OnDestroy,\n ElementRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CKButtonDirective } from './ckbutton.directive';\nimport { CKGroupDirective } from './ckgroup.directive';\n\n/**\n * CKEditor component\n * Usage :\n * <ckeditor [(ngModel)]=\"data\" [config]=\"{...}\" debounce=\"500\"></ckeditor>\n */\n@Component({\n selector: 'ckeditor',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CKEditorComponent),\n multi: true,\n },\n ],\n template: `<textarea #host></textarea>`,\n})\nexport class CKEditorComponent implements OnChanges, AfterViewInit, OnDestroy {\n @Input() config: CKEDITOR.config;\n @Input() readonly: boolean;\n @Input() debounce: string;\n\n @Output() change = new EventEmitter<CKEDITOR.eventInfo>();\n @Output() editorChange = new EventEmitter<CKEDITOR.eventInfo>();\n @Output() ready = new EventEmitter<CKEDITOR.eventInfo>();\n @Output() blur = new EventEmitter<CKEDITOR.eventInfo>();\n @Output() focus = new EventEmitter<CKEDITOR.eventInfo>();\n @Output() contentDom = new EventEmitter<CKEDITOR.eventInfo>();\n @Output() fileUploadRequest = new EventEmitter<CKEDITOR.eventInfo>();\n @Output() fileUploadResponse = new EventEmitter<CKEDITOR.eventInfo>();\n @Output() paste = new EventEmitter<CKEDITOR.eventInfo>();\n @Output() drop = new EventEmitter<CKEDITOR.eventInfo>();\n\n @ViewChild('host', { static: false }) host: ElementRef<HTMLTextAreaElement>;\n\n @ContentChildren(CKButtonDirective) toolbarButtons: QueryList<CKButtonDirective>;\n @ContentChildren(CKGroupDirective) toolbarGroups: QueryList<CKGroupDirective>;\n\n _value = '';\n instance: CKEDITOR.editor;\n debounceTimeout: number;\n private destroyed = false;\n\n /**\n * Constructor\n */\n constructor(private zone: NgZone) {}\n\n get value(): string {\n return this._value;\n }\n\n @Input()\n set value(v: string) {\n if (v !== this._value) {\n this._value = v;\n this.onChange(v);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.readonly && this.instance) {\n this.instance.setReadOnly(changes.readonly.currentValue);\n }\n }\n\n /**\n * On component destroy\n */\n ngOnDestroy(): void {\n this.destroyed = true;\n this.zone.runOutsideAngular(() => {\n if (this.instance) {\n CKEDITOR.removeAllListeners();\n this.instance.destroy();\n this.instance = null;\n }\n });\n }\n\n /**\n * On component view init\n */\n ngAfterViewInit(): void {\n if (this.destroyed) {\n return;\n }\n this.ckeditorInit(this.config || {});\n }\n\n /**\n * On component view checked\n */\n ngAfterViewChecked(): void {\n this.ckeditorInit(this.config || {});\n }\n\n /**\n * Value update process\n */\n updateValue(value: any): void {\n this.zone.run(() => {\n this.value = value;\n\n this.onChange(value);\n\n this.onTouched();\n this.change.emit(value);\n });\n }\n\n /**\n * CKEditor init\n */\n ckeditorInit(config: CKEDITOR.config): void {\n if (typeof CKEDITOR === 'undefined') {\n console.warn('CKEditor 4.x is missing (http://ckeditor.com/)');\n } else {\n // Check textarea exists\n if (this.instance || !this.documentContains(this.host.nativeElement)) {\n return;\n }\n\n if (this.readonly) {\n config.readOnly = this.readonly;\n }\n // CKEditor replace textarea\n this.instance = CKEDITOR.replace(this.host.nativeElement, config);\n\n // Set initial value\n this.instance.setData(this.value);\n\n // listen for instanceReady event\n this.instance.on('instanceReady', (evt: CKEDITOR.eventInfo) => {\n // if value has changed while instance loading\n // update instance with current component value\n if (this.instance.getData() !== this.value) {\n this.instance.setData(this.value);\n }\n\n // send the evt to the EventEmitter\n this.ready.emit(evt);\n });\n\n // CKEditor change event\n this.instance.on('change', (evt: CKEDITOR.eventInfo) => {\n this.onTouched();\n const value = this.instance.getData();\n\n if (this.value !== value) {\n // Debounce update\n if (this.debounce) {\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n this.debounceTimeout = window.setTimeout(() => {\n this.updateValue(value);\n this.debounceTimeout = null;\n }, parseInt(this.debounce));\n\n // Live update\n } else {\n this.updateValue(value);\n }\n }\n\n // Original ckeditor event dispatch\n this.editorChange.emit(evt);\n });\n\n // CKEditor blur event\n this.instance.on('blur', (evt: CKEDITOR.eventInfo) => {\n this.blur.emit(evt);\n });\n\n // CKEditor focus event\n this.instance.on('focus', (evt: CKEDITOR.eventInfo) => {\n this.focus.emit(evt);\n });\n\n // CKEditor contentDom event\n this.instance.on('contentDom', (evt: CKEDITOR.eventInfo) => {\n this.contentDom.emit(evt);\n });\n\n // CKEditor fileUploadRequest event\n this.instance.on('fileUploadRequest', (evt: CKEDITOR.eventInfo) => {\n this.fileUploadRequest.emit(evt);\n });\n\n // CKEditor fileUploadResponse event\n this.instance.on('fileUploadResponse', (evt: CKEDITOR.eventInfo) => {\n this.fileUploadResponse.emit(evt);\n });\n\n // CKEditor paste event\n this.instance.on('paste', (evt: CKEDITOR.eventInfo) => {\n this.paste.emit(evt);\n });\n\n // CKEditor drop event\n this.instance.on('drop', (evt: CKEDITOR.eventInfo) => {\n this.drop.emit(evt);\n });\n\n // Add Toolbar Groups to Editor. This will also add Buttons within groups.\n this.toolbarGroups.forEach((group) => {\n group.initialize(this);\n });\n // Add Toolbar Buttons to Editor.\n this.toolbarButtons.forEach((button) => {\n button.initialize(this);\n });\n }\n }\n\n /**\n * Implements ControlValueAccessor\n */\n writeValue(value: string): void {\n this._value = value;\n if (this.instance) this.instance.setData(value);\n }\n\n onChange: (_: string) => void;\n\n onTouched: () => void;\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private documentContains(node: Node) {\n return document.contains ? document.contains(node) : document.body.contains(node);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CKEditorComponent } from './ckeditor.component';\nimport { CKButtonDirective } from './ckbutton.directive';\nimport { CKGroupDirective } from './ckgroup.directive';\n\n/**\n * CKEditorModule\n */\n@NgModule({\n imports: [CommonModule],\n declarations: [CKEditorComponent, CKButtonDirective, CKGroupDirective],\n exports: [CKEditorComponent, CKButtonDirective, CKGroupDirective],\n})\nexport class CKEditorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAGA;;;;;;;;AAQG;MAIU,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;AAIY,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAmB,CAAC;KA+BvD;AAxBQ,IAAA,UAAU,CAAC,MAAyB,EAAA;QACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE;AACvC,YAAA,IAAI,EAAE,CAAC,IAAqB,KAAa;AACvC,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,gBAAA,OAAO,IAAI,CAAC;aACb;AACF,SAAA,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE;YACtC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;AAChB,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAC/D,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AAClE,SAAA;KACF;;8GA/BU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;iBACrB,CAAA;8BAEW,KAAK,EAAA,CAAA;sBAAd,MAAM;gBACE,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;ACjBR;;;;;;;;;AASG;MAIU,gBAAgB,CAAA;IAM3B,kBAAkB,GAAA;;QAEhB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACvE;AAEM,IAAA,UAAU,CAAC,MAAyB,EAAA;AACzC,QAAA,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;;QAE9E,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACrC,YAAA,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5B,SAAC,CAAC,CAAC;KACJ;;6GAjBU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,wJAIV,iBAAiB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAJvB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;iBACpB,CAAA;8BAEU,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAC8B,cAAc,EAAA,CAAA;sBAAjD,eAAe;uBAAC,iBAAiB,CAAA;;;ACrBpC;AAqBA;;;;AAIG;MAYU,iBAAiB,CAAA;AA0B5B;;AAEG;AACH,IAAA,WAAA,CAAoB,IAAY,EAAA;AAAZ,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AAxBtB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAsB,CAAC;AAChD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAsB,CAAC;AACtD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAsB,CAAC;AAC/C,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAsB,CAAC;AAC9C,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAsB,CAAC;AAC/C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAsB,CAAC;AACpD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAsB,CAAC;AAC3D,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAsB,CAAC;AAC5D,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAsB,CAAC;AAC/C,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAsB,CAAC;AAOxD,QAAA,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;AAGJ,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAKU;AAEpC,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,IACI,KAAK,CAAC,CAAS,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClB,SAAA;KACF;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC1D,SAAA;KACF;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;YAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,QAAQ,CAAC,kBAAkB,EAAE,CAAC;AAC9B,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AACxB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtB,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;AACR,SAAA;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;KACtC;AAED;;AAEG;IACH,kBAAkB,GAAA;QAChB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;KACtC;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACjB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAErB,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,MAAuB,EAAA;AAClC,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnC,YAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;AAChE,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACpE,OAAO;AACR,aAAA;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACjC,aAAA;;AAED,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;;YAGlE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;YAGlC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,GAAuB,KAAI;;;gBAG5D,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;oBAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,iBAAA;;AAGD,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAuB,KAAI;gBACrD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAEtC,gBAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;;oBAExB,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,4BAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACpC,yBAAA;wBACD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AAC5C,4BAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACxB,4BAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;yBAC7B,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;;AAG7B,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzB,qBAAA;AACF,iBAAA;;AAGD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAuB,KAAI;AACnD,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAuB,KAAI;AACpD,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,GAAuB,KAAI;AACzD,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAuB,KAAI;AAChE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAuB,KAAI;AACjE,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAuB,KAAI;AACpD,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAuB,KAAI;AACnD,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACnC,gBAAA,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,aAAC,CAAC,CAAC;;YAEH,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACrC,gBAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;AAEG;AACH,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACjD;AAMD,IAAA,gBAAgB,CAAC,EAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAEO,IAAA,gBAAgB,CAAC,IAAU,EAAA;QACjC,OAAO,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACnF;;8GA7NU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EATjB,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAqBgB,iBAAiB,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EACjB,gBAAgB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBvB,CAA6B,2BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAE5B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAA6B,2BAAA,CAAA;iBACxC,CAAA;6FAEU,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,KAAK,EAAA,CAAA;sBAAd,MAAM;gBACG,IAAI,EAAA,CAAA;sBAAb,MAAM;gBACG,KAAK,EAAA,CAAA;sBAAd,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBACG,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBACG,KAAK,EAAA,CAAA;sBAAd,MAAM;gBACG,IAAI,EAAA,CAAA;sBAAb,MAAM;gBAE+B,IAAI,EAAA,CAAA;sBAAzC,SAAS;gBAAC,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAEA,cAAc,EAAA,CAAA;sBAAjD,eAAe;uBAAC,iBAAiB,CAAA;gBACC,aAAa,EAAA,CAAA;sBAA/C,eAAe;uBAAC,gBAAgB,CAAA;gBAiB7B,KAAK,EAAA,CAAA;sBADR,KAAK;;;ACjER;;AAEG;MAMU,cAAc,CAAA;;2GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAHV,YAAA,EAAA,CAAA,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,CAD3D,EAAA,OAAA,EAAA,CAAA,YAAY,CAEZ,EAAA,OAAA,EAAA,CAAA,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAErD,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAJf,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,YAAY,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;AACtE,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;iBAClE,CAAA;;;ACdD;;AAEG;;;;"}