asksuite-citrus 1.5.11 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/citrus-i18n/en.json +2 -0
- package/assets/citrus-i18n/es.json +2 -0
- package/assets/citrus-i18n/pt.json +2 -0
- package/esm2022/lib/asksuite-citrus.module.mjs +14 -4
- package/esm2022/lib/classes/richtext-wrapper.mjs +271 -0
- package/esm2022/lib/classes/toolbox-bubble.mjs +46 -0
- package/esm2022/lib/classes/toolbox-topbar.mjs +34 -0
- package/esm2022/lib/classes/toolbox.mjs +107 -0
- package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +2 -2
- package/esm2022/lib/components/avatar/avatar.component.mjs +2 -2
- package/esm2022/lib/components/box/box.component.mjs +2 -2
- package/esm2022/lib/components/button/button.component.mjs +2 -2
- package/esm2022/lib/components/character-counter/character-counter.component.mjs +2 -2
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +2 -2
- package/esm2022/lib/components/chips/chips.component.mjs +2 -2
- package/esm2022/lib/components/date-picker/date-picker-calendar/date-picker-calendar.component.mjs +2 -2
- package/esm2022/lib/components/date-picker/date-picker.component.mjs +2 -2
- package/esm2022/lib/components/dropdown-container/dropdown-container.component.mjs +2 -2
- package/esm2022/lib/components/input/input.component.mjs +2 -2
- package/esm2022/lib/components/modal/modal.component.mjs +2 -2
- package/esm2022/lib/components/pagination/pagination.component.mjs +2 -2
- package/esm2022/lib/components/richtext-toolbox-core/richtext-toolbox-core.component.mjs +82 -0
- package/esm2022/lib/components/richtext-url-prompt/richtext-url-prompt-state.service.mjs +16 -0
- package/esm2022/lib/components/richtext-url-prompt/richtext-url-prompt.component.mjs +66 -0
- package/esm2022/lib/components/select/select.component.mjs +2 -2
- package/esm2022/lib/components/table/table.component.mjs +2 -2
- package/esm2022/lib/components/toast/toast.component.mjs +3 -3
- package/esm2022/lib/constants/richtext-toolbox.constants.mjs +40 -0
- package/esm2022/lib/constants/url-regex.constant.mjs +2 -0
- package/esm2022/lib/directives/button/ask-button.directive.mjs +3 -8
- package/esm2022/lib/directives/index.mjs +2 -1
- package/esm2022/lib/directives/richtext-toolbox/richtext-toolbox.directive.mjs +154 -0
- package/esm2022/lib/helpers/are-objects-equal.helper.mjs +4 -0
- package/esm2022/lib/interfaces/richtext-toolbox.interface.mjs +2 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/asksuite-citrus.mjs +853 -60
- package/fesm2022/asksuite-citrus.mjs.map +1 -1
- package/lib/asksuite-citrus.module.d.ts +10 -7
- package/lib/classes/richtext-wrapper.d.ts +47 -0
- package/lib/classes/toolbox-bubble.d.ts +13 -0
- package/lib/classes/toolbox-topbar.d.ts +8 -0
- package/lib/classes/toolbox.d.ts +31 -0
- package/lib/components/richtext-toolbox-core/richtext-toolbox-core.component.d.ts +25 -0
- package/lib/components/richtext-url-prompt/richtext-url-prompt-state.service.d.ts +6 -0
- package/lib/components/richtext-url-prompt/richtext-url-prompt.component.d.ts +19 -0
- package/lib/components/toast/toast.component.d.ts +1 -2
- package/lib/constants/richtext-toolbox.constants.d.ts +4 -0
- package/lib/constants/url-regex.constant.d.ts +1 -0
- package/lib/directives/button/ask-button.directive.d.ts +1 -1
- package/lib/directives/index.d.ts +1 -0
- package/lib/directives/richtext-toolbox/richtext-toolbox.directive.d.ts +38 -0
- package/lib/helpers/are-objects-equal.helper.d.ts +1 -0
- package/lib/interfaces/richtext-toolbox.interface.d.ts +54 -0
- package/package.json +3 -2
- package/public-api.d.ts +1 -0
- package/styles/ask-mixins.scss +45 -0
- package/styles/font-weights.scss +1 -0
- package/styles/quill.scss +17 -0
- package/styles/styles.scss +2 -30
@@ -1,12 +1,14 @@
|
|
1
1
|
{
|
2
2
|
"APPLY": "Apply",
|
3
3
|
"CANCEL": "Cancel",
|
4
|
+
"CLEAR": "Clear",
|
4
5
|
"CUSTOM_PERIOD": "Custom period",
|
5
6
|
"LAST_30_DAYS": "Last 30 days",
|
6
7
|
"LAST_7_DAYS": "Last 7 days",
|
7
8
|
"LAST_QUARTER": "Last quarter",
|
8
9
|
"NO_OPTIONS": "No option",
|
9
10
|
"RESULTS_PER_PAGE": "Results per page",
|
11
|
+
"SAVE": "Save",
|
10
12
|
"SEE_LESS": "See less",
|
11
13
|
"SEE_MORE": "View more",
|
12
14
|
"SELECT_ALL": "Select all",
|
@@ -1,12 +1,14 @@
|
|
1
1
|
{
|
2
2
|
"APPLY": "Aplicar",
|
3
3
|
"CANCEL": "Cancelar",
|
4
|
+
"CLEAR": "Borrar",
|
4
5
|
"CUSTOM_PERIOD": "Período personalizado",
|
5
6
|
"LAST_30_DAYS": "Últimos 30 días",
|
6
7
|
"LAST_7_DAYS": "Los últimos 7 días",
|
7
8
|
"LAST_QUARTER": "Último cuarto",
|
8
9
|
"NO_OPTIONS": "Ninguna opción",
|
9
10
|
"RESULTS_PER_PAGE": "Resultados por página",
|
11
|
+
"SAVE": "Guardar",
|
10
12
|
"SEE_LESS": "Ver menos",
|
11
13
|
"SEE_MORE": "Ver más",
|
12
14
|
"SELECT_ALL": "Seleccionar todo",
|
@@ -1,12 +1,14 @@
|
|
1
1
|
{
|
2
2
|
"APPLY": "Aplicar",
|
3
3
|
"CANCEL": "Cancelar",
|
4
|
+
"CLEAR": "Limpar",
|
4
5
|
"CUSTOM_PERIOD": "Período customizado",
|
5
6
|
"LAST_30_DAYS": "Últimos 30 dias",
|
6
7
|
"LAST_7_DAYS": "Últimos 7 dias",
|
7
8
|
"LAST_QUARTER": "Último trimestre",
|
8
9
|
"NO_OPTIONS": "Nenhuma opção",
|
9
10
|
"RESULTS_PER_PAGE": "Resultados por página",
|
11
|
+
"SAVE": "Salvar",
|
10
12
|
"SEE_LESS": "Ver menos",
|
11
13
|
"SEE_MORE": "Ver mais",
|
12
14
|
"SELECT_ALL": "Selecionar todas",
|
@@ -19,7 +19,7 @@ import { SkeletonComponent } from './components/skeleton/skeleton.component';
|
|
19
19
|
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
20
20
|
import { ToastComponent } from './components/toast/toast.component';
|
21
21
|
import { SpinnerComponent } from "./directives/spinner/spinner.component";
|
22
|
-
import { AskButtonDirective, AskTooltipDirective, AutofocusDirective, BadgeDirective, ScrollDirective, SpinnerDirective, AskDropdownDirective } from "./directives";
|
22
|
+
import { AskButtonDirective, AskTooltipDirective, AutofocusDirective, BadgeDirective, ScrollDirective, SpinnerDirective, AskDropdownDirective, RichtextToolboxDirective } from "./directives";
|
23
23
|
import { ModalBodyDirective, ModalComponent, ModalFooterDirective, ModalHeaderDirective } from './components/modal';
|
24
24
|
import { CharacterCounterComponent } from './components/character-counter/character-counter.component';
|
25
25
|
import { AccordionComponent } from "./components/accordion/accordion.component";
|
@@ -27,6 +27,8 @@ import { ExtendablePanelComponent } from "./components/accordion/extendable-pane
|
|
27
27
|
import { TableComponent } from './components/table/table.component';
|
28
28
|
import { PaginationComponent } from './components/pagination/pagination.component';
|
29
29
|
import { PaginatePipe } from './pipes/paginate/paginate.pipe';
|
30
|
+
import { RichtextUrlPromptComponent } from './components/richtext-url-prompt/richtext-url-prompt.component';
|
31
|
+
import { RichtextToolboxCoreComponent } from './components/richtext-toolbox-core/richtext-toolbox-core.component';
|
30
32
|
import * as i0 from "@angular/core";
|
31
33
|
import * as i1 from "@ngx-translate/core";
|
32
34
|
export class AsksuiteCitrusModule {
|
@@ -61,7 +63,10 @@ export class AsksuiteCitrusModule {
|
|
61
63
|
ExtendablePanelComponent,
|
62
64
|
TableComponent,
|
63
65
|
PaginationComponent,
|
64
|
-
PaginatePipe
|
66
|
+
PaginatePipe,
|
67
|
+
RichtextToolboxDirective,
|
68
|
+
RichtextUrlPromptComponent,
|
69
|
+
RichtextToolboxCoreComponent], imports: [CommonModule,
|
65
70
|
FormsModule,
|
66
71
|
ReactiveFormsModule,
|
67
72
|
CdkOverlayOrigin,
|
@@ -94,7 +99,8 @@ export class AsksuiteCitrusModule {
|
|
94
99
|
ExtendablePanelComponent,
|
95
100
|
TableComponent,
|
96
101
|
PaginationComponent,
|
97
|
-
PaginatePipe
|
102
|
+
PaginatePipe,
|
103
|
+
RichtextToolboxDirective] }); }
|
98
104
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AsksuiteCitrusModule, imports: [CommonModule,
|
99
105
|
FormsModule,
|
100
106
|
ReactiveFormsModule,
|
@@ -138,6 +144,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
138
144
|
TableComponent,
|
139
145
|
PaginationComponent,
|
140
146
|
PaginatePipe,
|
147
|
+
RichtextToolboxDirective,
|
148
|
+
RichtextUrlPromptComponent,
|
149
|
+
RichtextToolboxCoreComponent,
|
141
150
|
],
|
142
151
|
imports: [
|
143
152
|
CommonModule,
|
@@ -179,7 +188,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
179
188
|
TableComponent,
|
180
189
|
PaginationComponent,
|
181
190
|
PaginatePipe,
|
191
|
+
RichtextToolboxDirective,
|
182
192
|
],
|
183
193
|
}]
|
184
194
|
}] });
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNrc3VpdGUtY2l0cnVzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvbGliL2Fza3N1aXRlLWNpdHJ1cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDekYsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsYUFBYSxHQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhFQUE4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YXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm94Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2JveC9ib3guY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDZGtDb25uZWN0ZWRPdmVybGF5LFxuICBDZGtPdmVybGF5T3JpZ2luLFxuICBPdmVybGF5TW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGlwcy9jaGlwcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVQaWNrZXJDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci1jYWxlbmRhci9kYXRlLXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9za2VsZXRvbi9za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4U2tlbGV0b25Mb2FkZXJNb2R1bGUgfSBmcm9tICduZ3gtc2tlbGV0b24tbG9hZGVyJztcbmltcG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1NwaW5uZXJDb21wb25lbnR9IGZyb20gXCIuL2RpcmVjdGl2ZXMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtcbiAgQXNrQnV0dG9uRGlyZWN0aXZlLFxuICBBc2tUb29sdGlwRGlyZWN0aXZlLFxuICBBdXRvZm9jdXNEaXJlY3RpdmUsXG4gIEJhZGdlRGlyZWN0aXZlLFxuICBTY3JvbGxEaXJlY3RpdmUsXG4gIFNwaW5uZXJEaXJlY3RpdmUsXG4gIEFza0Ryb3Bkb3duRGlyZWN0aXZlXG59IGZyb20gXCIuL2RpcmVjdGl2ZXNcIjtcbmltcG9ydCB7TW9kYWxCb2R5RGlyZWN0aXZlLCBNb2RhbENvbXBvbmVudCwgTW9kYWxGb290ZXJEaXJlY3RpdmUsIE1vZGFsSGVhZGVyRGlyZWN0aXZlfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwnO1xuaW1wb3J0IHsgQ2hhcmFjdGVyQ291bnRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGFyYWN0ZXItY291bnRlci9jaGFyYWN0ZXItY291bnRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtBY2NvcmRpb25Db21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7RXh0ZW5kYWJsZVBhbmVsQ29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2FjY29yZGlvbi9leHRlbmRhYmxlLXBhbmVsL2V4dGVuZGFibGUtcGFuZWwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2luYXRlUGlwZSB9IGZyb20gJy4vcGlwZXMvcGFnaW5hdGUvcGFnaW5hdGUucGlwZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBJbnB1dENvbXBvbmVudCxcbiAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgQm94Q29tcG9uZW50LFxuICAgIEF2YXRhckNvbXBvbmVudCxcbiAgICBEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCxcbiAgICBBc2tEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgQ2hpcHNDb21wb25lbnQsXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcbiAgICBEYXRlUGlja2VyQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgU2tlbGV0b25Db21wb25lbnQsXG4gICAgU3Bpbm5lckNvbXBvbmVudCxcbiAgICBTcGlubmVyRGlyZWN0aXZlLFxuICAgIEJhZGdlRGlyZWN0aXZlLFxuICAgIEF1dG9mb2N1c0RpcmVjdGl2ZSxcbiAgICBTY3JvbGxEaXJlY3RpdmUsXG4gICAgQXNrVG9vbHRpcERpcmVjdGl2ZSxcbiAgICBUb2FzdENvbXBvbmVudCxcbiAgICBBc2tCdXR0b25EaXJlY3RpdmUsXG4gICAgTW9kYWxDb21wb25lbnQsXG4gICAgTW9kYWxCb2R5RGlyZWN0aXZlLFxuICAgIE1vZGFsSGVhZGVyRGlyZWN0aXZlLFxuICAgIE1vZGFsRm9vdGVyRGlyZWN0aXZlLFxuICAgIENoYXJhY3RlckNvdW50ZXJDb21wb25lbnQsXG4gICAgQWNjb3JkaW9uQ29tcG9uZW50LFxuICAgIEV4dGVuZGFibGVQYW5lbENvbXBvbmVudCxcbiAgICBUYWJsZUNvbXBvbmVudCxcbiAgICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIFBhZ2luYXRlUGlwZSxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIENka092ZXJsYXlPcmlnaW4sXG4gICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgICBPdmVybGF5TW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgIE5neFNrZWxldG9uTG9hZGVyTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgSW5wdXRDb21wb25lbnQsXG4gICAgU2VsZWN0Q29tcG9uZW50LFxuICAgIEJveENvbXBvbmVudCxcbiAgICBBdmF0YXJDb21wb25lbnQsXG4gICAgRHJvcGRvd25Db250YWluZXJDb21wb25lbnQsXG4gICAgQXNrRHJvcGRvd25EaXJlY3RpdmUsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIENoaXBzQ29tcG9uZW50LFxuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIERhdGVQaWNrZXJDb21wb25lbnQsXG4gICAgRGF0ZVBpY2tlckNhbGVuZGFyQ29tcG9uZW50LFxuICAgIFNrZWxldG9uQ29tcG9uZW50LFxuICAgIFNwaW5uZXJEaXJlY3RpdmUsXG4gICAgQmFkZ2VEaXJlY3RpdmUsXG4gICAgQXV0b2ZvY3VzRGlyZWN0aXZlLFxuICAgIFNjcm9sbERpcmVjdGl2ZSxcbiAgICBBc2tUb29sdGlwRGlyZWN0aXZlLFxuICAgIEFza0J1dHRvbkRpcmVjdGl2ZSxcbiAgICBNb2RhbEJvZHlEaXJlY3RpdmUsXG4gICAgTW9kYWxIZWFkZXJEaXJlY3RpdmUsXG4gICAgTW9kYWxGb290ZXJEaXJlY3RpdmUsXG4gICAgQ2hhcmFjdGVyQ291bnRlckNvbXBvbmVudCxcbiAgICBBY2NvcmRpb25Db21wb25lbnQsXG4gICAgRXh0ZW5kYWJsZVBhbmVsQ29tcG9uZW50LFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgUGFnaW5hdGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBc2tzdWl0ZUNpdHJ1c01vZHVsZSB7fVxuIl19
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNrc3VpdGUtY2l0cnVzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvbGliL2Fza3N1aXRlLWNpdHJ1cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDekYsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsYUFBYSxHQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhFQUE4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Q25CLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIseUJBQXlCO3dCQUN6QixrQkFBa0I7d0JBQ2xCLHdCQUF3Qjt3QkFDeEIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osd0JBQXdCO3FCQUN6QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm94Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2JveC9ib3guY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDZGtDb25uZWN0ZWRPdmVybGF5LFxuICBDZGtPdmVybGF5T3JpZ2luLFxuICBPdmVybGF5TW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGlwcy9jaGlwcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVQaWNrZXJDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci1jYWxlbmRhci9kYXRlLXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9za2VsZXRvbi9za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4U2tlbGV0b25Mb2FkZXJNb2R1bGUgfSBmcm9tICduZ3gtc2tlbGV0b24tbG9hZGVyJztcbmltcG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1NwaW5uZXJDb21wb25lbnR9IGZyb20gXCIuL2RpcmVjdGl2ZXMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtcbiAgQXNrQnV0dG9uRGlyZWN0aXZlLFxuICBBc2tUb29sdGlwRGlyZWN0aXZlLFxuICBBdXRvZm9jdXNEaXJlY3RpdmUsXG4gIEJhZGdlRGlyZWN0aXZlLFxuICBTY3JvbGxEaXJlY3RpdmUsXG4gIFNwaW5uZXJEaXJlY3RpdmUsXG4gIEFza0Ryb3Bkb3duRGlyZWN0aXZlLFxuICBSaWNodGV4dFRvb2xib3hEaXJlY3RpdmVcbn0gZnJvbSBcIi4vZGlyZWN0aXZlc1wiO1xuaW1wb3J0IHtNb2RhbEJvZHlEaXJlY3RpdmUsIE1vZGFsQ29tcG9uZW50LCBNb2RhbEZvb3RlckRpcmVjdGl2ZSwgTW9kYWxIZWFkZXJEaXJlY3RpdmV9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbCc7XG5pbXBvcnQgeyBDaGFyYWN0ZXJDb3VudGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NoYXJhY3Rlci1jb3VudGVyL2NoYXJhY3Rlci1jb3VudGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0FjY29yZGlvbkNvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtFeHRlbmRhYmxlUGFuZWxDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvYWNjb3JkaW9uL2V4dGVuZGFibGUtcGFuZWwvZXh0ZW5kYWJsZS1wYW5lbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnaW5hdGVQaXBlIH0gZnJvbSAnLi9waXBlcy9wYWdpbmF0ZS9wYWdpbmF0ZS5waXBlJztcbmltcG9ydCB7IFJpY2h0ZXh0VXJsUHJvbXB0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JpY2h0ZXh0LXVybC1wcm9tcHQvcmljaHRleHQtdXJsLXByb21wdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmljaHRleHRUb29sYm94Q29yZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yaWNodGV4dC10b29sYm94LWNvcmUvcmljaHRleHQtdG9vbGJveC1jb3JlLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBJbnB1dENvbXBvbmVudCxcbiAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgQm94Q29tcG9uZW50LFxuICAgIEF2YXRhckNvbXBvbmVudCxcbiAgICBEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCxcbiAgICBBc2tEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgQ2hpcHNDb21wb25lbnQsXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcbiAgICBEYXRlUGlja2VyQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgU2tlbGV0b25Db21wb25lbnQsXG4gICAgU3Bpbm5lckNvbXBvbmVudCxcbiAgICBTcGlubmVyRGlyZWN0aXZlLFxuICAgIEJhZGdlRGlyZWN0aXZlLFxuICAgIEF1dG9mb2N1c0RpcmVjdGl2ZSxcbiAgICBTY3JvbGxEaXJlY3RpdmUsXG4gICAgQXNrVG9vbHRpcERpcmVjdGl2ZSxcbiAgICBUb2FzdENvbXBvbmVudCxcbiAgICBBc2tCdXR0b25EaXJlY3RpdmUsXG4gICAgTW9kYWxDb21wb25lbnQsXG4gICAgTW9kYWxCb2R5RGlyZWN0aXZlLFxuICAgIE1vZGFsSGVhZGVyRGlyZWN0aXZlLFxuICAgIE1vZGFsRm9vdGVyRGlyZWN0aXZlLFxuICAgIENoYXJhY3RlckNvdW50ZXJDb21wb25lbnQsXG4gICAgQWNjb3JkaW9uQ29tcG9uZW50LFxuICAgIEV4dGVuZGFibGVQYW5lbENvbXBvbmVudCxcbiAgICBUYWJsZUNvbXBvbmVudCxcbiAgICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIFBhZ2luYXRlUGlwZSxcbiAgICBSaWNodGV4dFRvb2xib3hEaXJlY3RpdmUsXG4gICAgUmljaHRleHRVcmxQcm9tcHRDb21wb25lbnQsXG4gICAgUmljaHRleHRUb29sYm94Q29yZUNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIENka092ZXJsYXlPcmlnaW4sXG4gICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgICBPdmVybGF5TW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgIE5neFNrZWxldG9uTG9hZGVyTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgSW5wdXRDb21wb25lbnQsXG4gICAgU2VsZWN0Q29tcG9uZW50LFxuICAgIEJveENvbXBvbmVudCxcbiAgICBBdmF0YXJDb21wb25lbnQsXG4gICAgRHJvcGRvd25Db250YWluZXJDb21wb25lbnQsXG4gICAgQXNrRHJvcGRvd25EaXJlY3RpdmUsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIENoaXBzQ29tcG9uZW50LFxuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIERhdGVQaWNrZXJDb21wb25lbnQsXG4gICAgRGF0ZVBpY2tlckNhbGVuZGFyQ29tcG9uZW50LFxuICAgIFNrZWxldG9uQ29tcG9uZW50LFxuICAgIFNwaW5uZXJEaXJlY3RpdmUsXG4gICAgQmFkZ2VEaXJlY3RpdmUsXG4gICAgQXV0b2ZvY3VzRGlyZWN0aXZlLFxuICAgIFNjcm9sbERpcmVjdGl2ZSxcbiAgICBBc2tUb29sdGlwRGlyZWN0aXZlLFxuICAgIEFza0J1dHRvbkRpcmVjdGl2ZSxcbiAgICBNb2RhbEJvZHlEaXJlY3RpdmUsXG4gICAgTW9kYWxIZWFkZXJEaXJlY3RpdmUsXG4gICAgTW9kYWxGb290ZXJEaXJlY3RpdmUsXG4gICAgQ2hhcmFjdGVyQ291bnRlckNvbXBvbmVudCxcbiAgICBBY2NvcmRpb25Db21wb25lbnQsXG4gICAgRXh0ZW5kYWJsZVBhbmVsQ29tcG9uZW50LFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgUGFnaW5hdGVQaXBlLFxuICAgIFJpY2h0ZXh0VG9vbGJveERpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXNrc3VpdGVDaXRydXNNb2R1bGUge31cbiJdfQ==
|
@@ -0,0 +1,271 @@
|
|
1
|
+
import Quill from 'quill';
|
2
|
+
import { BehaviorSubject, Subject, filter, fromEvent, map } from 'rxjs';
|
3
|
+
import { URL_REGEX } from '../constants/url-regex.constant';
|
4
|
+
export class RichtextWrapper {
|
5
|
+
get state() {
|
6
|
+
return this.stateSub.value;
|
7
|
+
}
|
8
|
+
constructor(ngZone, cd, elementRef) {
|
9
|
+
this.ngZone = ngZone;
|
10
|
+
this.cd = cd;
|
11
|
+
this.elementRef = elementRef;
|
12
|
+
this.stateSub = new BehaviorSubject({
|
13
|
+
hasSelection: false,
|
14
|
+
hasFocus: false,
|
15
|
+
formats: {
|
16
|
+
italic: false,
|
17
|
+
bold: false,
|
18
|
+
underline: false,
|
19
|
+
strike: false,
|
20
|
+
link: '',
|
21
|
+
list_bulleted: false,
|
22
|
+
list_numbered: false,
|
23
|
+
justify_left: false,
|
24
|
+
justify_center: false,
|
25
|
+
justify_right: false,
|
26
|
+
},
|
27
|
+
disabledTools: []
|
28
|
+
});
|
29
|
+
this.esc$ = new Subject();
|
30
|
+
this.enter$ = new Subject();
|
31
|
+
this.maxLength = -1;
|
32
|
+
this.textChangeHandler = () => {
|
33
|
+
this.update();
|
34
|
+
};
|
35
|
+
this.selectionChangeHandler = (value, oldRange, source) => {
|
36
|
+
this.update();
|
37
|
+
};
|
38
|
+
this.bindings = {
|
39
|
+
bold: {
|
40
|
+
handler: () => {
|
41
|
+
if (!this.stateSub.value.disabledTools.includes('bold'))
|
42
|
+
this.setBold();
|
43
|
+
return false;
|
44
|
+
},
|
45
|
+
},
|
46
|
+
italic: {
|
47
|
+
handler: () => {
|
48
|
+
if (!this.stateSub.value.disabledTools.includes('italic'))
|
49
|
+
this.setItalic();
|
50
|
+
return false;
|
51
|
+
},
|
52
|
+
},
|
53
|
+
underline: {
|
54
|
+
handler: () => {
|
55
|
+
if (!this.stateSub.value.disabledTools.includes('underline'))
|
56
|
+
this.setUnderline();
|
57
|
+
return false;
|
58
|
+
},
|
59
|
+
},
|
60
|
+
escape: {
|
61
|
+
key: 'escape',
|
62
|
+
handler: () => {
|
63
|
+
this.esc$.next(true);
|
64
|
+
return false;
|
65
|
+
}
|
66
|
+
},
|
67
|
+
enter: {
|
68
|
+
key: 'enter',
|
69
|
+
handler: () => {
|
70
|
+
this.enter$.next(true);
|
71
|
+
return false;
|
72
|
+
}
|
73
|
+
}
|
74
|
+
};
|
75
|
+
this.state$ = this.stateSub.asObservable();
|
76
|
+
const editorId = `editor-${new Date().getTime()}`;
|
77
|
+
this.elementRef.nativeElement.setAttribute('id', editorId);
|
78
|
+
this.quill = new Quill(`#${editorId}`, {
|
79
|
+
placeholder: '',
|
80
|
+
modules: {
|
81
|
+
clipboard: {
|
82
|
+
matchers: [[Node.TEXT_NODE, this.urlMatcher.bind(this)]],
|
83
|
+
},
|
84
|
+
keyboard: { bindings: this.bindings },
|
85
|
+
},
|
86
|
+
});
|
87
|
+
this.quill.root.setAttribute('spellcheck', 'false');
|
88
|
+
this.listenEditorChanges();
|
89
|
+
}
|
90
|
+
setItalic() {
|
91
|
+
this.quill.format('italic', !this.state.formats.italic);
|
92
|
+
this.update();
|
93
|
+
}
|
94
|
+
setBold() {
|
95
|
+
this.quill.format('bold', !this.state.formats.bold);
|
96
|
+
this.update();
|
97
|
+
}
|
98
|
+
setUnderline() {
|
99
|
+
this.quill.format('underline', !this.state.formats.underline);
|
100
|
+
this.update();
|
101
|
+
}
|
102
|
+
setStrike() {
|
103
|
+
this.quill.format('strike', !this.state.formats.strike);
|
104
|
+
this.update();
|
105
|
+
}
|
106
|
+
setListNumbered() {
|
107
|
+
if (this.state.formats.list_numbered)
|
108
|
+
this.quill.format('list', null);
|
109
|
+
else
|
110
|
+
this.quill.format('list', 'ordered');
|
111
|
+
this.update();
|
112
|
+
}
|
113
|
+
setListBulleted() {
|
114
|
+
if (this.state.formats.list_bulleted)
|
115
|
+
this.quill.format('list', null);
|
116
|
+
else
|
117
|
+
this.quill.format('list', 'bulleted');
|
118
|
+
this.update();
|
119
|
+
}
|
120
|
+
setLink(link) {
|
121
|
+
const range = this.quill.getSelection(true);
|
122
|
+
if (range && !range.length) {
|
123
|
+
const [textBloat, offset] = this.quill.getLeaf(range.index);
|
124
|
+
const start = range.index - offset;
|
125
|
+
const length = textBloat.length();
|
126
|
+
this.quill.formatText(start, length, 'link', link);
|
127
|
+
}
|
128
|
+
else {
|
129
|
+
this.quill.format('link', link);
|
130
|
+
}
|
131
|
+
this.update();
|
132
|
+
}
|
133
|
+
setJustifyLeft() {
|
134
|
+
this.quill.format('align', null);
|
135
|
+
this.update();
|
136
|
+
}
|
137
|
+
setJustifyCenter() {
|
138
|
+
this.quill.format('align', 'center');
|
139
|
+
this.update();
|
140
|
+
}
|
141
|
+
setJustifyRight() {
|
142
|
+
this.quill.format('align', 'right');
|
143
|
+
this.update();
|
144
|
+
}
|
145
|
+
setRemove() {
|
146
|
+
const selection = this.quill.getSelection();
|
147
|
+
if (selection)
|
148
|
+
this.quill.removeFormat(selection.index, selection.length);
|
149
|
+
this.update();
|
150
|
+
}
|
151
|
+
setPlaceholder(placeholder) {
|
152
|
+
this.quill.root.dataset['placeholder'] = placeholder;
|
153
|
+
}
|
154
|
+
setText(text) {
|
155
|
+
this.quill.setContents(this.quill.clipboard.convert(text));
|
156
|
+
}
|
157
|
+
setMaxLength(length) {
|
158
|
+
this.maxLength = length;
|
159
|
+
this.maxLengthSubscription?.unsubscribe();
|
160
|
+
if (this.maxLength > 0)
|
161
|
+
this.maxLengthSubscription =
|
162
|
+
fromEvent(this.quill, 'text-change')
|
163
|
+
.pipe(filter(() => this.quill.getLength() > this.maxLength))
|
164
|
+
.subscribe(() => {
|
165
|
+
this.quill.deleteText(this.maxLength, this.quill.getLength());
|
166
|
+
});
|
167
|
+
}
|
168
|
+
setDisabledTools(tools) {
|
169
|
+
if (JSON.stringify(tools) !== JSON.stringify(this.stateSub.value.disabledTools))
|
170
|
+
this.stateSub.next({ ...this.stateSub.value, disabledTools: tools, });
|
171
|
+
}
|
172
|
+
getEditorElement() {
|
173
|
+
return this.quill.root;
|
174
|
+
}
|
175
|
+
getText() {
|
176
|
+
this.quill.getText();
|
177
|
+
}
|
178
|
+
listenTextChanges() {
|
179
|
+
return fromEvent(this.quill, 'text-change')
|
180
|
+
.pipe(map(() => this.quill.root.innerHTML));
|
181
|
+
}
|
182
|
+
listenOnTouched() {
|
183
|
+
return fromEvent(this.quill, 'selection-change')
|
184
|
+
.pipe(map(() => !this.quill.getSelection(false)));
|
185
|
+
}
|
186
|
+
listenEscape() {
|
187
|
+
return this.esc$.asObservable();
|
188
|
+
}
|
189
|
+
listenEnter() {
|
190
|
+
return this.enter$.asObservable();
|
191
|
+
}
|
192
|
+
disable() {
|
193
|
+
this.quill.disable();
|
194
|
+
}
|
195
|
+
enable() {
|
196
|
+
this.quill.enable();
|
197
|
+
}
|
198
|
+
destroy() {
|
199
|
+
this.quill.off('selection-change', this.selectionChangeHandler);
|
200
|
+
this.quill.off('text-change', this.textChangeHandler);
|
201
|
+
this.esc$.unsubscribe();
|
202
|
+
this.enter$.unsubscribe();
|
203
|
+
this.stateSub.unsubscribe();
|
204
|
+
this.maxLengthSubscription?.unsubscribe();
|
205
|
+
}
|
206
|
+
focus() {
|
207
|
+
this.quill.focus();
|
208
|
+
}
|
209
|
+
urlMatcher(node, delta) {
|
210
|
+
if (typeof node.data !== 'string')
|
211
|
+
return;
|
212
|
+
var matches = node.data.match(URL_REGEX);
|
213
|
+
if (matches && matches.length > 0) {
|
214
|
+
let text = '';
|
215
|
+
const selection = this.quill.getSelection(true);
|
216
|
+
if (selection.length)
|
217
|
+
text = this.quill.getText(selection.index, selection.length);
|
218
|
+
var ops = [];
|
219
|
+
var str = node.data;
|
220
|
+
matches.forEach(function (match) {
|
221
|
+
var split = str.split(match);
|
222
|
+
var beforeLink = split.shift();
|
223
|
+
ops.push({ insert: beforeLink });
|
224
|
+
ops.push({ insert: text || match, attributes: { link: match } });
|
225
|
+
str = split.join(match);
|
226
|
+
});
|
227
|
+
ops.push({ insert: str });
|
228
|
+
delta.ops = ops;
|
229
|
+
}
|
230
|
+
return delta;
|
231
|
+
}
|
232
|
+
listenEditorChanges() {
|
233
|
+
this.quill.on('selection-change', this.selectionChangeHandler);
|
234
|
+
this.quill.on('text-change', this.textChangeHandler);
|
235
|
+
}
|
236
|
+
update() {
|
237
|
+
let bounds;
|
238
|
+
let formatsArr;
|
239
|
+
const range = this.quill.getSelection(false);
|
240
|
+
if (range) {
|
241
|
+
bounds = this.quill.getBounds(range.index, range.length);
|
242
|
+
formatsArr = this.quill.getFormat(range);
|
243
|
+
}
|
244
|
+
const formats = {
|
245
|
+
italic: formatsArr?.italic || false,
|
246
|
+
bold: formatsArr?.bold || false,
|
247
|
+
underline: formatsArr?.underline || false,
|
248
|
+
strike: formatsArr?.strike || false,
|
249
|
+
link: formatsArr?.link || '',
|
250
|
+
list_bulleted: formatsArr?.list === 'bullet',
|
251
|
+
list_numbered: formatsArr?.list === 'ordered',
|
252
|
+
justify_left: formatsArr?.align === 'left',
|
253
|
+
justify_center: formatsArr?.align === 'center',
|
254
|
+
justify_right: formatsArr?.align === 'right',
|
255
|
+
};
|
256
|
+
const hasSelection = !!range?.length;
|
257
|
+
const hasFocus = !!range;
|
258
|
+
const newState = {
|
259
|
+
...this.stateSub.value,
|
260
|
+
hasSelection,
|
261
|
+
formats,
|
262
|
+
bounds,
|
263
|
+
hasFocus
|
264
|
+
};
|
265
|
+
this.ngZone.run(() => {
|
266
|
+
this.stateSub.next(newState);
|
267
|
+
this.cd.markForCheck();
|
268
|
+
});
|
269
|
+
}
|
270
|
+
}
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaHRleHQtd3JhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvbGliL2NsYXNzZXMvcmljaHRleHQtd3JhcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQXdGLE1BQU0sT0FBTyxDQUFDO0FBQzdHLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU90RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUQsTUFBTSxPQUFPLGVBQWU7SUEyRTFCLElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUE7SUFDOUIsQ0FBQztJQUlELFlBQ1UsTUFBYyxFQUNkLEVBQXFCLEVBQ3JCLFVBQW1DO1FBRm5DLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQWxGckMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFhO1lBQ2pELFlBQVksRUFBRSxLQUFLO1lBQ25CLFFBQVEsRUFBRSxLQUFLO1lBQ2YsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRSxLQUFLO2dCQUNiLElBQUksRUFBRSxLQUFLO2dCQUNYLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixNQUFNLEVBQUUsS0FBSztnQkFDYixJQUFJLEVBQUUsRUFBRTtnQkFDUixhQUFhLEVBQUUsS0FBSztnQkFDcEIsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLFlBQVksRUFBRSxLQUFLO2dCQUNuQixjQUFjLEVBQUUsS0FBSztnQkFDckIsYUFBYSxFQUFFLEtBQUs7YUFDckI7WUFDRCxhQUFhLEVBQUUsRUFBRTtTQUNsQixDQUFDLENBQUM7UUFDSyxTQUFJLEdBQUcsSUFBSSxP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WUFDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBRdWlsbCwgeyBCb3VuZHNTdGF0aWMsIFJhbmdlU3RhdGljLCBTZWxlY3Rpb25DaGFuZ2VIYW5kbGVyLCBTb3VyY2VzLCBUZXh0Q2hhbmdlSGFuZGxlciB9IGZyb20gJ3F1aWxsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmaWx0ZXIsIGZyb21FdmVudCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBSaWNoVGV4dEZ1bmN0aW9ucyxcbiAgUmljaHRleHRGb3JtYXRzLFxuICBUb29sS2V5cyxcbiAgVG9vbHNTdGF0ZSxcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yaWNodGV4dC10b29sYm94LmludGVyZmFjZSc7XG5pbXBvcnQgeyBVUkxfUkVHRVggfSBmcm9tICcuLi9jb25zdGFudHMvdXJsLXJlZ2V4LmNvbnN0YW50JztcblxuZXhwb3J0IGNsYXNzIFJpY2h0ZXh0V3JhcHBlciBpbXBsZW1lbnRzIFJpY2hUZXh0RnVuY3Rpb25zIHtcbiAgcHJpdmF0ZSBxdWlsbCE6IFF1aWxsO1xuICBwcml2YXRlIHN0YXRlU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUb29sc1N0YXRlPih7XG4gICAgaGFzU2VsZWN0aW9uOiBmYWxzZSxcbiAgICBoYXNGb2N1czogZmFsc2UsXG4gICAgZm9ybWF0czoge1xuICAgICAgaXRhbGljOiBmYWxzZSxcbiAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgdW5kZXJsaW5lOiBmYWxzZSxcbiAgICAgIHN0cmlrZTogZmFsc2UsXG4gICAgICBsaW5rOiAnJyxcbiAgICAgIGxpc3RfYnVsbGV0ZWQ6IGZhbHNlLFxuICAgICAgbGlzdF9udW1iZXJlZDogZmFsc2UsXG4gICAgICBqdXN0aWZ5X2xlZnQ6IGZhbHNlLFxuICAgICAganVzdGlmeV9jZW50ZXI6IGZhbHNlLFxuICAgICAganVzdGlmeV9yaWdodDogZmFsc2UsXG4gICAgfSxcbiAgICBkaXNhYmxlZFRvb2xzOiBbXVxuICB9KTtcbiAgcHJpdmF0ZSBlc2MkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBlbnRlciQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcml2YXRlIG1heExlbmd0aCA9IC0xO1xuXG4gIHByaXZhdGUgdGV4dENoYW5nZUhhbmRsZXI6IFRleHRDaGFuZ2VIYW5kbGVyID0gKCkgPT4ge1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzZWxlY3Rpb25DaGFuZ2VIYW5kbGVyOiBTZWxlY3Rpb25DaGFuZ2VIYW5kbGVyID0gKFxuICAgIHZhbHVlOiBSYW5nZVN0YXRpYyxcbiAgICBvbGRSYW5nZTogUmFuZ2VTdGF0aWMsXG4gICAgc291cmNlOiBTb3VyY2VzXG4gICkgPT4ge1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBiaW5kaW5ncyA9IHtcbiAgICBib2xkOiB7XG4gICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgIGlmKCF0aGlzLnN0YXRlU3ViLnZhbHVlLmRpc2FibGVkVG9vbHMuaW5jbHVkZXMoJ2JvbGQnKSlcbiAgICAgICAgICB0aGlzLnNldEJvbGQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGl0YWxpYzoge1xuICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICBpZighdGhpcy5zdGF0ZVN1Yi52YWx1ZS5kaXNhYmxlZFRvb2xzLmluY2x1ZGVzKCdpdGFsaWMnKSlcbiAgICAgICAgICB0aGlzLnNldEl0YWxpYygpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LFxuICAgIH0sXG4gICAgdW5kZXJsaW5lOiB7XG4gICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgIGlmKCF0aGlzLnN0YXRlU3ViLnZhbHVlLmRpc2FibGVkVG9vbHMuaW5jbHVkZXMoJ3VuZGVybGluZScpKVxuICAgICAgICAgIHRoaXMuc2V0VW5kZXJsaW5lKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBlc2NhcGU6e1xuICAgICAga2V5OiAnZXNjYXBlJyxcbiAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgdGhpcy5lc2MkLm5leHQodHJ1ZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVudGVyOiB7XG4gICAgICBrZXk6ICdlbnRlcicsXG4gICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZW50ZXIkLm5leHQodHJ1ZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgfTtcbiAgcHJpdmF0ZSBtYXhMZW5ndGhTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgcHVibGljIGdldCBzdGF0ZSgpe1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdGVTdWIudmFsdWVcbiAgfVxuICBcbiAgcHVibGljIHN0YXRlJCA9IHRoaXMuc3RhdGVTdWIuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICApIHtcbiAgICBjb25zdCBlZGl0b3JJZCA9IGBlZGl0b3ItJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gO1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnaWQnLCBlZGl0b3JJZCk7XG4gICAgdGhpcy5xdWlsbCA9IG5ldyBRdWlsbChgIyR7ZWRpdG9ySWR9YCwge1xuICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgICAgbW9kdWxlczoge1xuICAgICAgICBjbGlwYm9hcmQ6IHtcbiAgICAgICAgICBtYXRjaGVyczogW1tOb2RlLlRFWFRfTk9ERSwgdGhpcy51cmxNYXRjaGVyLmJpbmQodGhpcyldXSxcbiAgICAgICAgfSxcbiAgICAgICAga2V5Ym9hcmQ6IHsgYmluZGluZ3M6IHRoaXMuYmluZGluZ3MgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5xdWlsbC5yb290LnNldEF0dHJpYnV0ZSgnc3BlbGxjaGVjaycsICdmYWxzZScpXG4gICAgdGhpcy5saXN0ZW5FZGl0b3JDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRhbGljKCkge1xuICAgIHRoaXMucXVpbGwuZm9ybWF0KCdpdGFsaWMnLCAhdGhpcy5zdGF0ZS5mb3JtYXRzLml0YWxpYyk7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRCb2xkKCkge1xuICAgIHRoaXMucXVpbGwuZm9ybWF0KCdib2xkJywgIXRoaXMuc3RhdGUuZm9ybWF0cy5ib2xkKTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldFVuZGVybGluZSgpIHtcbiAgICB0aGlzLnF1aWxsLmZvcm1hdCgndW5kZXJsaW5lJywgIXRoaXMuc3RhdGUuZm9ybWF0cy51bmRlcmxpbmUpO1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RyaWtlKCkge1xuICAgIHRoaXMucXVpbGwuZm9ybWF0KCdzdHJpa2UnLCAhdGhpcy5zdGF0ZS5mb3JtYXRzLnN0cmlrZSk7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMaXN0TnVtYmVyZWQoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuZm9ybWF0cy5saXN0X251bWJlcmVkKVxuICAgICAgdGhpcy5xdWlsbC5mb3JtYXQoJ2xpc3QnLCBudWxsKTtcbiAgICBlbHNlICBcbiAgICAgIHRoaXMucXVpbGwuZm9ybWF0KCdsaXN0JywgJ29yZGVyZWQnKTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldExpc3RCdWxsZXRlZCgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5mb3JtYXRzLmxpc3RfYnVsbGV0ZWQpXG4gICAgICB0aGlzLnF1aWxsLmZvcm1hdCgnbGlzdCcsIG51bGwpO1xuICAgIGVsc2UgIFxuICAgICAgdGhpcy5xdWlsbC5mb3JtYXQoJ2xpc3QnLCAnYnVsbGV0ZWQnKTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldExpbmsobGluazogc3RyaW5nKSB7XG5cbiAgICBjb25zdCByYW5nZSA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKHRydWUpO1xuXG4gICAgaWYgKHJhbmdlICYmICFyYW5nZS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IFt0ZXh0QmxvYXQsIG9mZnNldF0gPSB0aGlzLnF1aWxsLmdldExlYWYocmFuZ2UhLmluZGV4KTtcblxuICAgICAgY29uc3Qgc3RhcnQgPSByYW5nZSEuaW5kZXggLSBvZmZzZXQ7XG4gICAgICBjb25zdCBsZW5ndGggPSB0ZXh0QmxvYXQubGVuZ3RoKCk7XG5cbiAgICAgIHRoaXMucXVpbGwuZm9ybWF0VGV4dChzdGFydCwgbGVuZ3RoLCAnbGluaycsIGxpbmspO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1aWxsLmZvcm1hdCgnbGluaycsIGxpbmspO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0SnVzdGlmeUxlZnQoKSB7XG4gICAgdGhpcy5xdWlsbC5mb3JtYXQoJ2FsaWduJywgbnVsbCk7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRKdXN0aWZ5Q2VudGVyKCkge1xuICAgIHRoaXMucXVpbGwuZm9ybWF0KCdhbGlnbicsICdjZW50ZXInKTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldEp1c3RpZnlSaWdodCgpIHtcbiAgICB0aGlzLnF1aWxsLmZvcm1hdCgnYWxpZ24nLCAncmlnaHQnKTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldFJlbW92ZSgpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbigpO1xuICAgIGlmIChzZWxlY3Rpb24pIHRoaXMucXVpbGwucmVtb3ZlRm9ybWF0KHNlbGVjdGlvbiEuaW5kZXgsIHNlbGVjdGlvbiEubGVuZ3RoKTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldFBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyOiBzdHJpbmcpe1xuICAgIHRoaXMucXVpbGwucm9vdC5kYXRhc2V0WydwbGFjZWhvbGRlciddID0gcGxhY2Vob2xkZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0VGV4dCh0ZXh0OiBzdHJpbmcpe1xuICAgIHRoaXMucXVpbGwuc2V0Q29udGVudHModGhpcy5xdWlsbC5jbGlwYm9hcmQuY29udmVydCh0ZXh0KSk7XG4gIH1cblxuICBwdWJsaWMgc2V0TWF4TGVuZ3RoKGxlbmd0aDogbnVtYmVyKXtcbiAgICB0aGlzLm1heExlbmd0aCA9IGxlbmd0aDtcblxuICAgIHRoaXMubWF4TGVuZ3RoU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIGlmKHRoaXMubWF4TGVuZ3RoID4gMClcbiAgICAgIHRoaXMubWF4TGVuZ3RoU3Vic2NyaXB0aW9uID0gXG4gICAgICAgIGZyb21FdmVudCh0aGlzLnF1aWxsLCAndGV4dC1jaGFuZ2UnKVxuICAgICAgICAucGlwZShmaWx0ZXIoKCkgPT4gdGhpcy5xdWlsbC5nZXRMZW5ndGgoKSA+IHRoaXMubWF4TGVuZ3RoKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5xdWlsbC5kZWxldGVUZXh0KHRoaXMubWF4TGVuZ3RoLCB0aGlzLnF1aWxsLmdldExlbmd0aCgpKTtcbiAgICAgIH0pXG4gIH1cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRUb29scyh0b29sczogVG9vbEtleXMpe1xuICAgIGlmKEpTT04uc3RyaW5naWZ5KHRvb2xzKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZVN1Yi52YWx1ZS5kaXNhYmxlZFRvb2xzKSlcbiAgICAgIHRoaXMuc3RhdGVTdWIubmV4dCh7Li4udGhpcy5zdGF0ZVN1Yi52YWx1ZSwgZGlzYWJsZWRUb29sczogdG9vbHMsIH0pXG4gIH1cblxuICBwdWJsaWMgZ2V0RWRpdG9yRWxlbWVudCgpe1xuICAgIHJldHVybiB0aGlzLnF1aWxsLnJvb3Q7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGV4dCgpe1xuICAgIHRoaXMucXVpbGwuZ2V0VGV4dCgpO1xuICB9XG4gIFxuICBwdWJsaWMgbGlzdGVuVGV4dENoYW5nZXMoKXtcbiAgICByZXR1cm4gZnJvbUV2ZW50KHRoaXMucXVpbGwsICd0ZXh0LWNoYW5nZScpXG4gICAgICAucGlwZShtYXAoKCkgPT4gdGhpcy5xdWlsbC5yb290LmlubmVySFRNTCkpOyBcbiAgfVxuXG4gIHB1YmxpYyBsaXN0ZW5PblRvdWNoZWQoKXtcbiAgICByZXR1cm4gZnJvbUV2ZW50KHRoaXMucXVpbGwsICdzZWxlY3Rpb24tY2hhbmdlJylcbiAgICAgIC5waXBlKG1hcCgoKSA9PiAhdGhpcy5xdWlsbC5nZXRTZWxlY3Rpb24oZmFsc2UpKSk7XG4gIH1cblxuICBwdWJsaWMgbGlzdGVuRXNjYXBlKCl7XG4gICAgcmV0dXJuIHRoaXMuZXNjJC5hc09ic2VydmFibGUoKVxuICB9XG5cbiAgcHVibGljIGxpc3RlbkVudGVyKCl7XG4gICAgcmV0dXJuIHRoaXMuZW50ZXIkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cblxuICBwdWJsaWMgZGlzYWJsZSgpe1xuICAgIHRoaXMucXVpbGwuZGlzYWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZSgpe1xuICAgIHRoaXMucXVpbGwuZW5hYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICB0aGlzLnF1aWxsLm9mZignc2VsZWN0aW9uLWNoYW5nZScsIHRoaXMuc2VsZWN0aW9uQ2hhbmdlSGFuZGxlcik7XG4gICAgdGhpcy5xdWlsbC5vZmYoJ3RleHQtY2hhbmdlJywgdGhpcy50ZXh0Q2hhbmdlSGFuZGxlcik7XG4gICAgdGhpcy5lc2MkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5lbnRlciQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN0YXRlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5tYXhMZW5ndGhTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoKXtcbiAgICB0aGlzLnF1aWxsLmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIHVybE1hdGNoZXIobm9kZTogYW55LCBkZWx0YTogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBub2RlLmRhdGEgIT09ICdzdHJpbmcnKSByZXR1cm47XG4gICAgdmFyIG1hdGNoZXMgPSBub2RlLmRhdGEubWF0Y2goVVJMX1JFR0VYKTtcblxuICAgIGlmIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHRleHQgPSAnJztcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgICAgaWYgKHNlbGVjdGlvbi5sZW5ndGgpXG4gICAgICAgIHRleHQgPSB0aGlzLnF1aWxsLmdldFRleHQoc2VsZWN0aW9uIS5pbmRleCwgc2VsZWN0aW9uIS5sZW5ndGgpO1xuXG4gICAgICB2YXIgb3BzID0gW107XG4gICAgICB2YXIgc3RyID0gbm9kZS5kYXRhO1xuICAgICAgbWF0Y2hlcy5mb3JFYWNoKGZ1bmN0aW9uIChtYXRjaDogYW55KSB7XG4gICAgICAgIHZhciBzcGxpdCA9IHN0ci5zcGxpdChtYXRjaCk7XG4gICAgICAgIHZhciBiZWZvcmVMaW5rID0gc3BsaXQuc2hpZnQoKTtcbiAgICAgICAgb3BzLnB1c2goeyBpbnNlcnQ6IGJlZm9yZUxpbmsgfSk7XG4gICAgICAgIG9wcy5wdXNoKHsgaW5zZXJ0OiB0ZXh0IHx8IG1hdGNoLCBhdHRyaWJ1dGVzOiB7IGxpbms6IG1hdGNoIH0gfSk7XG4gICAgICAgIHN0ciA9IHNwbGl0LmpvaW4obWF0Y2gpO1xuICAgICAgfSk7XG4gICAgICBvcHMucHVzaCh7IGluc2VydDogc3RyIH0pO1xuICAgICAgZGVsdGEub3BzID0gb3BzO1xuICAgIH1cblxuICAgIHJldHVybiBkZWx0YTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRWRpdG9yQ2hhbmdlcygpIHtcbiAgICB0aGlzLnF1aWxsLm9uKCdzZWxlY3Rpb24tY2hhbmdlJywgdGhpcy5zZWxlY3Rpb25DaGFuZ2VIYW5kbGVyKTtcbiAgICB0aGlzLnF1aWxsLm9uKCd0ZXh0LWNoYW5nZScsIHRoaXMudGV4dENoYW5nZUhhbmRsZXIpO1xuICB9XG5cblxuICBwcml2YXRlIHVwZGF0ZSgpIHtcbiAgICBsZXQgYm91bmRzOiBCb3VuZHNTdGF0aWMgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGZvcm1hdHNBcnI7XG5cbiAgICBjb25zdCByYW5nZSA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICBpZiAgKHJhbmdlKXsgXG4gICAgICBib3VuZHMgPSB0aGlzLnF1aWxsLmdldEJvdW5kcyhyYW5nZS5pbmRleCwgcmFuZ2UubGVuZ3RoKTtcbiAgICAgIGZvcm1hdHNBcnIgPSB0aGlzLnF1aWxsLmdldEZvcm1hdChyYW5nZSkgYXMgYW55O1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1hdHM6IFJpY2h0ZXh0Rm9ybWF0cyA9IHtcbiAgICAgIGl0YWxpYzogZm9ybWF0c0Fycj8uaXRhbGljIHx8IGZhbHNlLFxuICAgICAgYm9sZDogZm9ybWF0c0Fycj8uYm9sZCB8fCBmYWxzZSxcbiAgICAgIHVuZGVybGluZTogZm9ybWF0c0Fycj8udW5kZXJsaW5lIHx8IGZhbHNlLFxuICAgICAgc3RyaWtlOiBmb3JtYXRzQXJyPy5zdHJpa2UgfHwgZmFsc2UsXG4gICAgICBsaW5rOiBmb3JtYXRzQXJyPy5saW5rIHx8ICcnLFxuICAgICAgbGlzdF9idWxsZXRlZDogZm9ybWF0c0Fycj8ubGlzdCA9PT0gJ2J1bGxldCcsXG4gICAgICBsaXN0X251bWJlcmVkOiBmb3JtYXRzQXJyPy5saXN0ID09PSAnb3JkZXJlZCcsXG4gICAgICBqdXN0aWZ5X2xlZnQ6IGZvcm1hdHNBcnI/LmFsaWduID09PSAnbGVmdCcsXG4gICAgICBqdXN0aWZ5X2NlbnRlcjogZm9ybWF0c0Fycj8uYWxpZ24gPT09ICdjZW50ZXInLFxuICAgICAganVzdGlmeV9yaWdodDogZm9ybWF0c0Fycj8uYWxpZ24gPT09ICdyaWdodCcsXG4gICAgfTtcblxuICAgIGNvbnN0IGhhc1NlbGVjdGlvbiA9ICEhcmFuZ2U/Lmxlbmd0aDtcbiAgICBjb25zdCBoYXNGb2N1cyA9ICEhcmFuZ2U7XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogVG9vbHNTdGF0ZSA9IHsgXG4gICAgICAuLi50aGlzLnN0YXRlU3ViLnZhbHVlLCBcbiAgICAgIGhhc1NlbGVjdGlvbiwgXG4gICAgICBmb3JtYXRzLCBcbiAgICAgIGJvdW5kcywgXG4gICAgICBoYXNGb2N1cyBcbiAgICB9O1xuXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuc3RhdGVTdWIubmV4dChuZXdTdGF0ZSk7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import { Toolbox } from "./toolbox";
|
2
|
+
const TOOLBOX_HEIGHT = 40;
|
3
|
+
const MARGIN = 8;
|
4
|
+
const MOUSE_EVENT = 'mouseup';
|
5
|
+
export class BubbleStrategy extends Toolbox {
|
6
|
+
constructor(injector) {
|
7
|
+
super(injector);
|
8
|
+
this.listenOutsideClicks();
|
9
|
+
}
|
10
|
+
move(bounds) {
|
11
|
+
this.renderer2.setStyle(this.componentEl, 'top', `${bounds.top - (TOOLBOX_HEIGHT + MARGIN)}px`);
|
12
|
+
this.renderer2.setStyle(this.componentEl, 'left', `${bounds.left}px`);
|
13
|
+
}
|
14
|
+
listenOutsideClicks() {
|
15
|
+
this.clickListener = (event) => {
|
16
|
+
if (!this.componentEl?.contains(event.target)
|
17
|
+
&& this.isVisible()) {
|
18
|
+
this.destroyComponent();
|
19
|
+
}
|
20
|
+
};
|
21
|
+
document.body.addEventListener(MOUSE_EVENT, this.clickListener);
|
22
|
+
}
|
23
|
+
onToolsChanged(state) {
|
24
|
+
super.onToolsChanged(state);
|
25
|
+
const { hasSelection, hasFocus, bounds } = state;
|
26
|
+
if (hasSelection && bounds) {
|
27
|
+
if (!this.isVisible())
|
28
|
+
this.displayComponent();
|
29
|
+
this.move(bounds);
|
30
|
+
}
|
31
|
+
else {
|
32
|
+
if (this.isVisible() && hasFocus)
|
33
|
+
this.destroyComponent();
|
34
|
+
}
|
35
|
+
}
|
36
|
+
displayComponent() {
|
37
|
+
super.displayComponent();
|
38
|
+
this.renderer2.appendChild(this.hostEl?.nativeElement, this.componentEl);
|
39
|
+
this.componentRef.setInput('type', 'bubble');
|
40
|
+
}
|
41
|
+
destroyAll() {
|
42
|
+
document.body.removeEventListener(MOUSE_EVENT, this.clickListener);
|
43
|
+
super.destroyAll();
|
44
|
+
}
|
45
|
+
}
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC1idWJibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL2xpYi9jbGFzc2VzL3Rvb2xib3gtYnViYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHcEMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNqQixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFN0IsTUFBTSxPQUFPLGNBQWUsU0FBUSxPQUFPO0lBR3ZDLFlBQVksUUFBa0I7UUFDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTSxJQUFJLENBQUMsTUFBb0I7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBQyxLQUFLLEVBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFDLE1BQU0sRUFBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzdCLElBQ0UsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDO21CQUM5QyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQ3BCO2dCQUNDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxDQUFBO1FBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFUSxjQUFjLENBQUMsS0FBaUI7UUFDdkMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzQixNQUFNLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDakQsSUFBSSxZQUFZLElBQUksTUFBTSxFQUFFO1lBQzFCLElBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25CO2FBQU07WUFDTCxJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxRQUFRO2dCQUM3QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFUSxnQkFBZ0I7UUFDdkIsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxZQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRVEsVUFBVTtRQUNqQixRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUM7UUFDcEUsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJvdW5kc1N0YXRpYyB9IGZyb20gXCJxdWlsbFwiO1xuaW1wb3J0IHsgVG9vbGJveCB9IGZyb20gXCIuL3Rvb2xib3hcIjtcbmltcG9ydCB7IFRvb2xzU3RhdGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9yaWNodGV4dC10b29sYm94LmludGVyZmFjZVwiO1xuXG5jb25zdCBUT09MQk9YX0hFSUdIVCA9IDQwO1xuY29uc3QgTUFSR0lOID0gODtcbmNvbnN0IE1PVVNFX0VWRU5UID0gJ21vdXNldXAnXG5cbmV4cG9ydCBjbGFzcyBCdWJibGVTdHJhdGVneSBleHRlbmRzIFRvb2xib3gge1xuICAgIHByaXZhdGUgY2xpY2tMaXN0ZW5lcj86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICB0aGlzLmxpc3Rlbk91dHNpZGVDbGlja3MoKTtcbiAgICB9XG4gIFxuICAgIHB1YmxpYyBtb3ZlKGJvdW5kczogQm91bmRzU3RhdGljKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmNvbXBvbmVudEVsLCd0b3AnLGAke2JvdW5kcy50b3AgLSAoVE9PTEJPWF9IRUlHSFQgKyBNQVJHSU4pfXB4YCk7XG4gICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmNvbXBvbmVudEVsLCdsZWZ0JyxgJHtib3VuZHMubGVmdH1weGApO1xuICAgIH1cbiAgXG4gICAgcHJpdmF0ZSBsaXN0ZW5PdXRzaWRlQ2xpY2tzKCl7XG4gICAgICB0aGlzLmNsaWNrTGlzdGVuZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYoXG4gICAgICAgICAgIXRoaXMuY29tcG9uZW50RWw/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSBcbiAgICAgICAgICAmJiB0aGlzLmlzVmlzaWJsZSgpXG4gICAgICAgICl7XG4gICAgICAgICAgdGhpcy5kZXN0cm95Q29tcG9uZW50KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcihNT1VTRV9FVkVOVCwgdGhpcy5jbGlja0xpc3RlbmVyKTtcbiAgICB9XG4gICAgXG4gICAgb3ZlcnJpZGUgb25Ub29sc0NoYW5nZWQoc3RhdGU6IFRvb2xzU3RhdGUpOiB2b2lkIHtcbiAgICAgIHN1cGVyLm9uVG9vbHNDaGFuZ2VkKHN0YXRlKVxuICAgICAgY29uc3QgeyBoYXNTZWxlY3Rpb24sIGhhc0ZvY3VzLCBib3VuZHMgfSA9IHN0YXRlO1xuICAgICAgaWYgKGhhc1NlbGVjdGlvbiAmJiBib3VuZHMpIHtcbiAgICAgICAgaWYoIXRoaXMuaXNWaXNpYmxlKCkpXG4gICAgICAgICAgdGhpcy5kaXNwbGF5Q29tcG9uZW50KCk7XG4gICAgICAgIHRoaXMubW92ZShib3VuZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYodGhpcy5pc1Zpc2libGUoKSAmJiBoYXNGb2N1cylcbiAgICAgICAgICB0aGlzLmRlc3Ryb3lDb21wb25lbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIFxuICAgIG92ZXJyaWRlIGRpc3BsYXlDb21wb25lbnQoKSB7XG4gICAgICBzdXBlci5kaXNwbGF5Q29tcG9uZW50KCk7XG4gICAgICB0aGlzLnJlbmRlcmVyMi5hcHBlbmRDaGlsZCh0aGlzLmhvc3RFbD8ubmF0aXZlRWxlbWVudCx0aGlzLmNvbXBvbmVudEVsKTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmIS5zZXRJbnB1dCgndHlwZScsJ2J1YmJsZScpO1xuICAgIH1cbiAgICBcbiAgICBvdmVycmlkZSBkZXN0cm95QWxsKCk6IHZvaWQge1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKE1PVVNFX0VWRU5ULCB0aGlzLmNsaWNrTGlzdGVuZXIhKTtcbiAgICAgIHN1cGVyLmRlc3Ryb3lBbGwoKTtcbiAgICB9XG4gIH0iXX0=
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import { Toolbox } from "./toolbox";
|
2
|
+
export class TopbarStrategy extends Toolbox {
|
3
|
+
constructor(injector) {
|
4
|
+
super(injector);
|
5
|
+
this.displayComponent();
|
6
|
+
}
|
7
|
+
displayComponent() {
|
8
|
+
super.displayComponent();
|
9
|
+
const parentElement = this.renderer2.parentNode(this.hostEl?.nativeElement);
|
10
|
+
this.renderer2.appendChild(parentElement, this.componentEl);
|
11
|
+
this.renderer2.appendChild(parentElement, this.hostEl?.nativeElement);
|
12
|
+
this.componentRef.setInput('type', 'topbar');
|
13
|
+
}
|
14
|
+
prepareUpdatedTools(toolState) {
|
15
|
+
const toolbarItems = super.prepareUpdatedTools(toolState);
|
16
|
+
const { formats, hasSelection, hasFocus } = toolState;
|
17
|
+
toolbarItems.forEach(tool => {
|
18
|
+
if (!hasFocus) {
|
19
|
+
tool.disabled = true;
|
20
|
+
return;
|
21
|
+
}
|
22
|
+
if (tool.tool === 'clear') {
|
23
|
+
tool.disabled = !hasSelection;
|
24
|
+
}
|
25
|
+
else if (tool.tool === 'link') {
|
26
|
+
tool.selected = !!formats.link;
|
27
|
+
tool.disabled = !hasSelection && !formats.link;
|
28
|
+
tool.value = formats?.link;
|
29
|
+
}
|
30
|
+
});
|
31
|
+
return toolbarItems;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC10b3BiYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL2xpYi9jbGFzc2VzL3Rvb2xib3gtdG9wYmFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHcEMsTUFBTSxPQUFPLGNBQWUsU0FBUSxPQUFPO0lBRXZDLFlBQVksUUFBa0I7UUFDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFHUSxnQkFBZ0I7UUFDdkIsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDekIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxZQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRVEsbUJBQW1CLENBQUMsU0FBcUI7UUFDaEQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxHQUFHLFNBQVMsQ0FBQztRQUV0RCxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFCLElBQUcsQ0FBQyxRQUFRLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7Z0JBQ3BCLE9BQU87YUFDUjtZQUVELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxZQUFZLENBQUM7YUFDL0I7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQzthQUM1QjtRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osT0FBTyxZQUFZLENBQUE7SUFDbkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVG9vbGJveCB9IGZyb20gXCIuL3Rvb2xib3hcIjtcbmltcG9ydCB7IFRvb2xiYXJJdGVtLCBUb29sc1N0YXRlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvcmljaHRleHQtdG9vbGJveC5pbnRlcmZhY2VcIjtcblxuZXhwb3J0IGNsYXNzIFRvcGJhclN0cmF0ZWd5IGV4dGVuZHMgVG9vbGJveCB7XG5cbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICAgIHRoaXMuZGlzcGxheUNvbXBvbmVudCgpO1xuICAgIH1cbiAgXG4gIFxuICAgIG92ZXJyaWRlIGRpc3BsYXlDb21wb25lbnQoKTogdm9pZCB7XG4gICAgICBzdXBlci5kaXNwbGF5Q29tcG9uZW50KCk7XG4gICAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5yZW5kZXJlcjIucGFyZW50Tm9kZSh0aGlzLmhvc3RFbD8ubmF0aXZlRWxlbWVudCk7XG4gICAgICB0aGlzLnJlbmRlcmVyMi5hcHBlbmRDaGlsZChwYXJlbnRFbGVtZW50LHRoaXMuY29tcG9uZW50RWwpO1xuICAgICAgdGhpcy5yZW5kZXJlcjIuYXBwZW5kQ2hpbGQocGFyZW50RWxlbWVudCwgdGhpcy5ob3N0RWw/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYhLnNldElucHV0KCd0eXBlJywndG9wYmFyJyk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgcHJlcGFyZVVwZGF0ZWRUb29scyh0b29sU3RhdGU6IFRvb2xzU3RhdGUpOiBUb29sYmFySXRlbVtde1xuICAgICAgY29uc3QgdG9vbGJhckl0ZW1zID0gc3VwZXIucHJlcGFyZVVwZGF0ZWRUb29scyh0b29sU3RhdGUpO1xuICAgICAgY29uc3QgeyBmb3JtYXRzLCBoYXNTZWxlY3Rpb24sIGhhc0ZvY3VzIH0gPSB0b29sU3RhdGU7XG5cbiAgICAgIHRvb2xiYXJJdGVtcy5mb3JFYWNoKHRvb2wgPT4ge1xuICAgICAgICBpZighaGFzRm9jdXMpIHtcbiAgICAgICAgICB0b29sLmRpc2FibGVkID0gdHJ1ZVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b29sLnRvb2wgPT09ICdjbGVhcicpIHtcbiAgICAgICAgICB0b29sLmRpc2FibGVkID0gIWhhc1NlbGVjdGlvbjtcbiAgICAgICAgfSBlbHNlIGlmICh0b29sLnRvb2wgPT09ICdsaW5rJykge1xuICAgICAgICAgIHRvb2wuc2VsZWN0ZWQgPSAhIWZvcm1hdHMubGluaztcbiAgICAgICAgICB0b29sLmRpc2FibGVkID0gIWhhc1NlbGVjdGlvbiAmJiAhZm9ybWF0cy5saW5rO1xuICAgICAgICAgIHRvb2wudmFsdWUgPSBmb3JtYXRzPy5saW5rO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIHJldHVybiB0b29sYmFySXRlbXNcbiAgICB9XG4gIH1cbiAgIl19
|