@skyux/text-editor 5.0.2 → 5.5.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/README.md +7 -1
  2. package/bundles/skyux-text-editor.umd.js +270 -170
  3. package/documentation.json +109 -57
  4. package/esm2015/index.js +15 -0
  5. package/esm2015/index.js.map +1 -0
  6. package/esm2015/lib/modules/rich-text-display/rich-text-display.component.js +39 -0
  7. package/esm2015/lib/modules/rich-text-display/rich-text-display.component.js.map +1 -0
  8. package/esm2015/lib/modules/rich-text-display/rich-text-display.module.js +18 -0
  9. package/esm2015/lib/modules/rich-text-display/rich-text-display.module.js.map +1 -0
  10. package/esm2015/lib/modules/shared/forms-utility.js +10 -0
  11. package/esm2015/lib/modules/shared/forms-utility.js.map +1 -0
  12. package/esm2015/lib/modules/shared/sky-text-editor-resources.module.js +106 -0
  13. package/esm2015/lib/modules/shared/sky-text-editor-resources.module.js.map +1 -0
  14. package/esm2015/lib/modules/text-editor/defaults/font-list-defaults.js +42 -0
  15. package/esm2015/lib/modules/text-editor/defaults/font-list-defaults.js.map +1 -0
  16. package/esm2015/lib/modules/text-editor/defaults/font-size-list-defaults.js +7 -0
  17. package/esm2015/lib/modules/text-editor/defaults/font-size-list-defaults.js.map +1 -0
  18. package/esm2015/lib/modules/text-editor/defaults/menu-defaults.js +5 -0
  19. package/esm2015/lib/modules/text-editor/defaults/menu-defaults.js.map +1 -0
  20. package/esm2015/lib/modules/text-editor/defaults/style-state-defaults.js +15 -0
  21. package/esm2015/lib/modules/text-editor/defaults/style-state-defaults.js.map +1 -0
  22. package/esm2015/lib/modules/text-editor/defaults/toolbar-action-defaults.js +12 -0
  23. package/esm2015/lib/modules/text-editor/defaults/toolbar-action-defaults.js.map +1 -0
  24. package/esm2015/lib/modules/text-editor/menubar/text-editor-menubar.component.js +196 -0
  25. package/esm2015/lib/modules/text-editor/menubar/text-editor-menubar.component.js.map +1 -0
  26. package/esm2015/lib/modules/text-editor/services/text-editor-adapter.service.js +473 -0
  27. package/esm2015/lib/modules/text-editor/services/text-editor-adapter.service.js.map +1 -0
  28. package/esm2015/lib/modules/text-editor/services/text-editor-selection.service.js +80 -0
  29. package/esm2015/lib/modules/text-editor/services/text-editor-selection.service.js.map +1 -0
  30. package/esm2015/lib/modules/text-editor/services/text-editor.service.js +61 -0
  31. package/esm2015/lib/modules/text-editor/services/text-editor.service.js.map +1 -0
  32. package/esm2015/lib/modules/text-editor/services/text-sanitization.service.js +38 -0
  33. package/esm2015/lib/modules/text-editor/services/text-sanitization.service.js.map +1 -0
  34. package/esm2015/lib/modules/text-editor/text-editor.component.js +322 -0
  35. package/esm2015/lib/modules/text-editor/text-editor.component.js.map +1 -0
  36. package/esm2015/lib/modules/text-editor/text-editor.module.js +99 -0
  37. package/esm2015/lib/modules/text-editor/text-editor.module.js.map +1 -0
  38. package/esm2015/lib/modules/text-editor/toolbar/text-editor-toolbar.component.js +175 -0
  39. package/esm2015/lib/modules/text-editor/toolbar/text-editor-toolbar.component.js.map +1 -0
  40. package/esm2015/lib/modules/text-editor/types/editor-command.js +2 -0
  41. package/esm2015/lib/modules/text-editor/types/editor-command.js.map +1 -0
  42. package/esm2015/lib/modules/text-editor/types/editor-setting.js +2 -0
  43. package/esm2015/lib/modules/text-editor/types/editor-setting.js.map +1 -0
  44. package/esm2015/lib/modules/text-editor/types/font-state.js +2 -0
  45. package/esm2015/lib/modules/text-editor/types/font-state.js.map +1 -0
  46. package/esm2015/lib/modules/text-editor/types/menu-type.js +2 -0
  47. package/esm2015/lib/modules/text-editor/types/menu-type.js.map +1 -0
  48. package/esm2015/lib/modules/text-editor/types/style-state.js +2 -0
  49. package/esm2015/lib/modules/text-editor/types/style-state.js.map +1 -0
  50. package/esm2015/lib/modules/text-editor/types/text-editor-merge-field.js +2 -0
  51. package/esm2015/lib/modules/text-editor/types/text-editor-merge-field.js.map +1 -0
  52. package/esm2015/lib/modules/text-editor/types/toolbar-action-type.js +2 -0
  53. package/esm2015/lib/modules/text-editor/types/toolbar-action-type.js.map +1 -0
  54. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-modal-context.js +6 -0
  55. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-modal-context.js.map +1 -0
  56. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-modal-result.js +2 -0
  57. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-modal-result.js.map +1 -0
  58. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-modal.component.js +121 -0
  59. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-modal.component.js.map +1 -0
  60. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-target.js +9 -0
  61. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-target.js.map +1 -0
  62. package/esm2015/skyux-text-editor.js +2 -2
  63. package/esm2015/skyux-text-editor.js.map +1 -0
  64. package/fesm2015/skyux-text-editor.js +332 -232
  65. package/fesm2015/skyux-text-editor.js.map +1 -1
  66. package/index.d.ts +12 -0
  67. package/{modules → lib/modules}/rich-text-display/rich-text-display.component.d.ts +0 -0
  68. package/{modules → lib/modules}/rich-text-display/rich-text-display.module.d.ts +0 -0
  69. package/{modules → lib/modules}/shared/forms-utility.d.ts +0 -0
  70. package/{modules → lib/modules}/shared/sky-text-editor-resources.module.d.ts +0 -0
  71. package/{modules → lib/modules}/text-editor/defaults/font-list-defaults.d.ts +0 -0
  72. package/{modules → lib/modules}/text-editor/defaults/font-size-list-defaults.d.ts +0 -0
  73. package/{modules → lib/modules}/text-editor/defaults/menu-defaults.d.ts +0 -0
  74. package/{modules → lib/modules}/text-editor/defaults/style-state-defaults.d.ts +0 -0
  75. package/{modules → lib/modules}/text-editor/defaults/toolbar-action-defaults.d.ts +0 -0
  76. package/{modules → lib/modules}/text-editor/menubar/text-editor-menubar.component.d.ts +0 -0
  77. package/{modules → lib/modules}/text-editor/services/text-editor-adapter.service.d.ts +0 -0
  78. package/{modules → lib/modules}/text-editor/services/text-editor-selection.service.d.ts +0 -0
  79. package/{modules → lib/modules}/text-editor/services/text-editor.service.d.ts +0 -0
  80. package/{modules → lib/modules}/text-editor/services/text-sanitization.service.d.ts +0 -0
  81. package/{modules → lib/modules}/text-editor/text-editor.component.d.ts +0 -0
  82. package/{modules → lib/modules}/text-editor/text-editor.module.d.ts +0 -0
  83. package/{modules → lib/modules}/text-editor/toolbar/text-editor-toolbar.component.d.ts +0 -0
  84. package/{modules → lib/modules}/text-editor/types/editor-command.d.ts +0 -0
  85. package/{modules → lib/modules}/text-editor/types/editor-setting.d.ts +0 -0
  86. package/{modules → lib/modules}/text-editor/types/font-state.d.ts +0 -0
  87. package/{modules → lib/modules}/text-editor/types/menu-type.d.ts +0 -0
  88. package/{modules → lib/modules}/text-editor/types/style-state.d.ts +0 -0
  89. package/{modules → lib/modules}/text-editor/types/text-editor-merge-field.d.ts +0 -0
  90. package/{modules → lib/modules}/text-editor/types/toolbar-action-type.d.ts +0 -0
  91. package/{modules → lib/modules}/text-editor/url-modal/text-editor-url-modal-context.d.ts +0 -0
  92. package/{modules → lib/modules}/text-editor/url-modal/text-editor-url-modal-result.d.ts +0 -0
  93. package/{modules → lib/modules}/text-editor/url-modal/text-editor-url-modal.component.d.ts +0 -0
  94. package/{modules → lib/modules}/text-editor/url-modal/text-editor-url-target.d.ts +0 -0
  95. package/package.json +27 -13
  96. package/skyux-text-editor.d.ts +1 -1
  97. package/LICENSE +0 -21
  98. package/bundles/skyux-text-editor.umd.js.map +0 -1
  99. package/esm2015/modules/rich-text-display/rich-text-display.component.js +0 -37
  100. package/esm2015/modules/rich-text-display/rich-text-display.module.js +0 -26
  101. package/esm2015/modules/shared/forms-utility.js +0 -10
  102. package/esm2015/modules/shared/sky-text-editor-resources.module.js +0 -41
  103. package/esm2015/modules/text-editor/defaults/font-list-defaults.js +0 -42
  104. package/esm2015/modules/text-editor/defaults/font-size-list-defaults.js +0 -5
  105. package/esm2015/modules/text-editor/defaults/menu-defaults.js +0 -8
  106. package/esm2015/modules/text-editor/defaults/style-state-defaults.js +0 -15
  107. package/esm2015/modules/text-editor/defaults/toolbar-action-defaults.js +0 -12
  108. package/esm2015/modules/text-editor/menubar/text-editor-menubar.component.js +0 -189
  109. package/esm2015/modules/text-editor/services/text-editor-adapter.service.js +0 -460
  110. package/esm2015/modules/text-editor/services/text-editor-selection.service.js +0 -76
  111. package/esm2015/modules/text-editor/services/text-editor.service.js +0 -61
  112. package/esm2015/modules/text-editor/services/text-sanitization.service.js +0 -38
  113. package/esm2015/modules/text-editor/text-editor.component.js +0 -307
  114. package/esm2015/modules/text-editor/text-editor.module.js +0 -101
  115. package/esm2015/modules/text-editor/toolbar/text-editor-toolbar.component.js +0 -163
  116. package/esm2015/modules/text-editor/types/editor-command.js +0 -2
  117. package/esm2015/modules/text-editor/types/editor-setting.js +0 -2
  118. package/esm2015/modules/text-editor/types/font-state.js +0 -2
  119. package/esm2015/modules/text-editor/types/menu-type.js +0 -2
  120. package/esm2015/modules/text-editor/types/style-state.js +0 -2
  121. package/esm2015/modules/text-editor/types/text-editor-merge-field.js +0 -2
  122. package/esm2015/modules/text-editor/types/toolbar-action-type.js +0 -2
  123. package/esm2015/modules/text-editor/url-modal/text-editor-url-modal-context.js +0 -6
  124. package/esm2015/modules/text-editor/url-modal/text-editor-url-modal-result.js +0 -2
  125. package/esm2015/modules/text-editor/url-modal/text-editor-url-modal.component.js +0 -112
  126. package/esm2015/modules/text-editor/url-modal/text-editor-url-target.js +0 -9
  127. package/esm2015/public-api.js +0 -15
  128. package/public-api.d.ts +0 -12
@@ -0,0 +1,15 @@
1
+ export * from './lib/modules/rich-text-display/rich-text-display.module';
2
+ export * from './lib/modules/text-editor/types/font-state';
3
+ export * from './lib/modules/text-editor/types/menu-type';
4
+ export * from './lib/modules/text-editor/types/style-state';
5
+ export * from './lib/modules/text-editor/types/text-editor-merge-field';
6
+ export * from './lib/modules/text-editor/types/toolbar-action-type';
7
+ export * from './lib/modules/text-editor/text-editor.module';
8
+ // Components and directives must be exported to support Angular's "partial" Ivy compiler.
9
+ // Obscure names are used to indicate types are not part of the public API.
10
+ export { SkyRichTextDisplayComponent as λ1 } from './lib/modules/rich-text-display/rich-text-display.component';
11
+ export { SkyTextEditorMenubarComponent as λ2 } from './lib/modules/text-editor/menubar/text-editor-menubar.component';
12
+ export { SkyTextEditorUrlModalComponent as λ3 } from './lib/modules/text-editor/url-modal/text-editor-url-modal.component';
13
+ export { SkyTextEditorToolbarComponent as λ4 } from './lib/modules/text-editor/toolbar/text-editor-toolbar.component';
14
+ export { SkyTextEditorComponent as λ5 } from './lib/modules/text-editor/text-editor.component';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/components/text-editor/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0DAA0D,CAAC;AAEzE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yDAAyD,CAAC;AACxE,cAAc,qDAAqD,CAAC;AAEpE,cAAc,8CAA8C,CAAC;AAE7D,0FAA0F;AAC1F,2EAA2E;AAC3E,OAAO,EAAE,2BAA2B,IAAI,EAAE,EAAE,MAAM,6DAA6D,CAAC;AAChH,OAAO,EAAE,6BAA6B,IAAI,EAAE,EAAE,MAAM,iEAAiE,CAAC;AACtH,OAAO,EAAE,8BAA8B,IAAI,EAAE,EAAE,MAAM,qEAAqE,CAAC;AAC3H,OAAO,EAAE,6BAA6B,IAAI,EAAE,EAAE,MAAM,iEAAiE,CAAC;AACtH,OAAO,EAAE,sBAAsB,IAAI,EAAE,EAAE,MAAM,iDAAiD,CAAC","sourcesContent":["export * from './lib/modules/rich-text-display/rich-text-display.module';\n\nexport * from './lib/modules/text-editor/types/font-state';\nexport * from './lib/modules/text-editor/types/menu-type';\nexport * from './lib/modules/text-editor/types/style-state';\nexport * from './lib/modules/text-editor/types/text-editor-merge-field';\nexport * from './lib/modules/text-editor/types/toolbar-action-type';\n\nexport * from './lib/modules/text-editor/text-editor.module';\n\n// Components and directives must be exported to support Angular's \"partial\" Ivy compiler.\n// Obscure names are used to indicate types are not part of the public API.\nexport { SkyRichTextDisplayComponent as λ1 } from './lib/modules/rich-text-display/rich-text-display.component';\nexport { SkyTextEditorMenubarComponent as λ2 } from './lib/modules/text-editor/menubar/text-editor-menubar.component';\nexport { SkyTextEditorUrlModalComponent as λ3 } from './lib/modules/text-editor/url-modal/text-editor-url-modal.component';\nexport { SkyTextEditorToolbarComponent as λ4 } from './lib/modules/text-editor/toolbar/text-editor-toolbar.component';\nexport { SkyTextEditorComponent as λ5 } from './lib/modules/text-editor/text-editor.component';\n"]}
@@ -0,0 +1,39 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { DomSanitizer } from '@angular/platform-browser';
3
+ import { SkyTextSanitizationService } from '../text-editor/services/text-sanitization.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/platform-browser";
6
+ import * as i2 from "../text-editor/services/text-sanitization.service";
7
+ export class SkyRichTextDisplayComponent {
8
+ constructor(sanitizer, sanitizationService) {
9
+ this.sanitizer = sanitizer;
10
+ this.sanitizationService = sanitizationService;
11
+ this.sanitizedText = '';
12
+ this._richText = '';
13
+ }
14
+ /**
15
+ * Specifies the rich text to display.
16
+ */
17
+ set richText(value) {
18
+ const cleaned = this.sanitizationService.sanitize(value);
19
+ /* istanbul ignore else */
20
+ if (cleaned !== this._richText) {
21
+ this._richText = cleaned;
22
+ // Text has already been sanitized with DOMPurifier.
23
+ // Tell Angular to bypass its own internal sanitization.
24
+ this.sanitizedText = this.sanitizer.bypassSecurityTrustHtml(cleaned);
25
+ }
26
+ }
27
+ }
28
+ SkyRichTextDisplayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyRichTextDisplayComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.SkyTextSanitizationService }], target: i0.ɵɵFactoryTarget.Component });
29
+ SkyRichTextDisplayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyRichTextDisplayComponent, selector: "sky-rich-text-display", inputs: { richText: "richText" }, ngImport: i0, template: "<span class=\"sky-rich-text-display-text\" [innerHTML]=\"sanitizedText\"> </span>\n" });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyRichTextDisplayComponent, decorators: [{
31
+ type: Component,
32
+ args: [{
33
+ selector: 'sky-rich-text-display',
34
+ templateUrl: './rich-text-display.component.html',
35
+ }]
36
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.SkyTextSanitizationService }]; }, propDecorators: { richText: [{
37
+ type: Input
38
+ }] } });
39
+ //# sourceMappingURL=rich-text-display.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rich-text-display.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/text-editor/src/lib/modules/rich-text-display/rich-text-display.component.ts","../../../../../../../../libs/components/text-editor/src/lib/modules/rich-text-display/rich-text-display.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAY,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;;;;AAM/F,MAAM,OAAO,2BAA2B;IAqBtC,YACU,SAAuB,EACvB,mBAA+C;QAD/C,cAAS,GAAT,SAAS,CAAc;QACvB,wBAAmB,GAAnB,mBAAmB,CAA4B;QANlD,kBAAa,GAAa,EAAE,CAAC;QAE5B,cAAS,GAAW,EAAE,CAAC;IAK5B,CAAC;IAvBJ;;OAEG;IACH,IACW,QAAQ,CAAC,KAAa;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzD,0BAA0B;QAC1B,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YAEzB,oDAAoD;YACpD,wDAAwD;YACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;SACtE;IACH,CAAC;;yHAfU,2BAA2B;6GAA3B,2BAA2B,+FCVxC,qFACA;4FDSa,2BAA2B;kBAJvC,SAAS;mBAAC;oBACT,QAAQ,EAAE,uBAAuB;oBACjC,WAAW,EAAE,oCAAoC;iBAClD;4IAMY,QAAQ;sBADlB,KAAK","sourcesContent":["import { Component, Input } from '@angular/core';\n\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { SkyTextSanitizationService } from '../text-editor/services/text-sanitization.service';\n\n@Component({\n selector: 'sky-rich-text-display',\n templateUrl: './rich-text-display.component.html',\n})\nexport class SkyRichTextDisplayComponent {\n /**\n * Specifies the rich text to display.\n */\n @Input()\n public set richText(value: string) {\n const cleaned = this.sanitizationService.sanitize(value);\n /* istanbul ignore else */\n if (cleaned !== this._richText) {\n this._richText = cleaned;\n\n // Text has already been sanitized with DOMPurifier.\n // Tell Angular to bypass its own internal sanitization.\n this.sanitizedText = this.sanitizer.bypassSecurityTrustHtml(cleaned);\n }\n }\n\n public sanitizedText: SafeHtml = '';\n\n private _richText: string = '';\n\n constructor(\n private sanitizer: DomSanitizer,\n private sanitizationService: SkyTextSanitizationService\n ) {}\n}\n","<span class=\"sky-rich-text-display-text\" [innerHTML]=\"sanitizedText\"> </span>\n"]}
@@ -0,0 +1,18 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { SkyRichTextDisplayComponent } from './rich-text-display.component';
4
+ import * as i0 from "@angular/core";
5
+ export class SkyRichTextDisplayModule {
6
+ }
7
+ SkyRichTextDisplayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyRichTextDisplayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ SkyRichTextDisplayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyRichTextDisplayModule, declarations: [SkyRichTextDisplayComponent], imports: [CommonModule], exports: [SkyRichTextDisplayComponent] });
9
+ SkyRichTextDisplayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyRichTextDisplayModule, imports: [[CommonModule]] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyRichTextDisplayModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ imports: [CommonModule],
14
+ exports: [SkyRichTextDisplayComponent],
15
+ declarations: [SkyRichTextDisplayComponent],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=rich-text-display.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rich-text-display.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/text-editor/src/lib/modules/rich-text-display/rich-text-display.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;;AAO5E,MAAM,OAAO,wBAAwB;;sHAAxB,wBAAwB;uHAAxB,wBAAwB,iBAFpB,2BAA2B,aAFhC,YAAY,aACZ,2BAA2B;uHAG1B,wBAAwB,YAJ1B,CAAC,YAAY,CAAC;4FAIZ,wBAAwB;kBALpC,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,2BAA2B,CAAC;oBACtC,YAAY,EAAE,CAAC,2BAA2B,CAAC;iBAC5C","sourcesContent":["import { CommonModule } from '@angular/common';\n\nimport { NgModule } from '@angular/core';\n\nimport { SkyRichTextDisplayComponent } from './rich-text-display.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [SkyRichTextDisplayComponent],\n declarations: [SkyRichTextDisplayComponent],\n})\nexport class SkyRichTextDisplayModule {}\n"]}
@@ -0,0 +1,10 @@
1
+ // Need to add the following to classes which contain static methods.
2
+ // See: https://github.com/ng-packagr/ng-packagr/issues/641
3
+ // @dynamic
4
+ export class SkyFormsUtility {
5
+ /** Coerces a data-bound value (typically a string) to a boolean. */
6
+ static coerceBooleanProperty(value) {
7
+ return value !== undefined && `${value}` !== 'false';
8
+ }
9
+ }
10
+ //# sourceMappingURL=forms-utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms-utility.js","sourceRoot":"","sources":["../../../../../../../../libs/components/text-editor/src/lib/modules/shared/forms-utility.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,2DAA2D;AAC3D,WAAW;AACX,MAAM,OAAO,eAAe;IAC1B,oEAAoE;IAC7D,MAAM,CAAC,qBAAqB,CAAC,KAAU;QAC5C,OAAO,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,KAAK,OAAO,CAAC;IACvD,CAAC;CACF","sourcesContent":["// Need to add the following to classes which contain static methods.\n// See: https://github.com/ng-packagr/ng-packagr/issues/641\n// @dynamic\nexport class SkyFormsUtility {\n /** Coerces a data-bound value (typically a string) to a boolean. */\n public static coerceBooleanProperty(value: any): boolean {\n return value !== undefined && `${value}` !== 'false';\n }\n}\n"]}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * NOTICE: DO NOT MODIFY THIS FILE!
3
+ * The contents of this file were automatically generated by
4
+ * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-text-editor' schematic.
5
+ * To update this file, simply rerun the command.
6
+ */
7
+ import { NgModule } from '@angular/core';
8
+ import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS, } from '@skyux/i18n';
9
+ import * as i0 from "@angular/core";
10
+ const RESOURCES = {
11
+ 'EN-US': {
12
+ skyux_text_editor_format_menu_action_bold_label: { message: 'Bold' },
13
+ skyux_text_editor_format_menu_action_bold_key_shortcut: {
14
+ message: 'Ctrl+B',
15
+ },
16
+ skyux_text_editor_format_menu_action_italic_label: { message: 'Italic' },
17
+ skyux_text_editor_format_menu_action_italic_key_shortcut: {
18
+ message: 'Ctrl+I',
19
+ },
20
+ skyux_text_editor_format_menu_action_underline_label: {
21
+ message: 'Underline',
22
+ },
23
+ skyux_text_editor_format_menu_action_underline_key_shortcut: {
24
+ message: 'Ctrl+U',
25
+ },
26
+ skyux_text_editor_format_menu_action_strikethrough_label: {
27
+ message: 'Strikethrough',
28
+ },
29
+ skyux_text_editor_format_menu_action_clear_formatting_label: {
30
+ message: 'Clear formatting',
31
+ },
32
+ skyux_text_editor_edit_menu_action_undo_label: { message: 'Undo' },
33
+ skyux_text_editor_edit_menu_action_undo_key_shortcut: { message: 'Ctrl+Z' },
34
+ skyux_text_editor_edit_menu_action_redo_label: { message: 'Redo' },
35
+ skyux_text_editor_edit_menu_action_redo_key_shortcut: { message: 'Ctrl+Y' },
36
+ skyux_text_editor_edit_menu_action_cut_label: { message: 'Cut' },
37
+ skyux_text_editor_edit_menu_action_cut_key_shortcut: { message: 'Ctrl+X' },
38
+ skyux_text_editor_edit_menu_action_copy_label: { message: 'Copy' },
39
+ skyux_text_editor_edit_menu_action_copy_key_shortcut: { message: 'Ctrl+C' },
40
+ skyux_text_editor_edit_menu_action_paste_label: { message: 'Paste' },
41
+ skyux_text_editor_edit_menu_action_paste_key_shortcut: {
42
+ message: 'Ctrl+V',
43
+ },
44
+ skyux_text_editor_edit_menu_action_select_all_label: {
45
+ message: 'Select all',
46
+ },
47
+ skyux_text_editor_edit_menu_action_select_all_key_shortcut: {
48
+ message: 'Ctrl+A',
49
+ },
50
+ skyux_text_editor_menubar_dropdown_button_edit_label: { message: 'Edit' },
51
+ skyux_text_editor_menubar_dropdown_button_format_label: {
52
+ message: 'Format',
53
+ },
54
+ skyux_text_editor_menubar_dropdown_button_insert_label: {
55
+ message: 'Insert merge field',
56
+ },
57
+ skyux_text_editor_url_modal_header_label: { message: 'Create link' },
58
+ skyux_text_editor_url_modal_url_label: {
59
+ message: 'Enter a URL to link to:',
60
+ },
61
+ skyux_text_editor_url_modal_open_label: {
62
+ message: 'Where should it open?',
63
+ },
64
+ skyux_text_editor_url_modal_current_option_label: {
65
+ message: 'Current window',
66
+ },
67
+ skyux_text_editor_url_modal_new_option_label: { message: 'New window' },
68
+ skyux_text_editor_url_modal_email_label: { message: 'Email address' },
69
+ skyux_text_editor_url_modal_subject_label: { message: 'Subject line' },
70
+ skyux_text_editor_url_modal_save_button_label: { message: 'Save' },
71
+ skyux_text_editor_url_modal_cancel_button_label: { message: 'Cancel' },
72
+ },
73
+ };
74
+ export class SkyTextEditorResourcesProvider {
75
+ getString(localeInfo, name) {
76
+ return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
77
+ }
78
+ }
79
+ /**
80
+ * Import into any component library module that needs to use resource strings.
81
+ */
82
+ export class SkyTextEditorResourcesModule {
83
+ }
84
+ SkyTextEditorResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTextEditorResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
85
+ SkyTextEditorResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTextEditorResourcesModule, exports: [SkyI18nModule] });
86
+ SkyTextEditorResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTextEditorResourcesModule, providers: [
87
+ {
88
+ provide: SKY_LIB_RESOURCES_PROVIDERS,
89
+ useClass: SkyTextEditorResourcesProvider,
90
+ multi: true,
91
+ },
92
+ ], imports: [SkyI18nModule] });
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTextEditorResourcesModule, decorators: [{
94
+ type: NgModule,
95
+ args: [{
96
+ exports: [SkyI18nModule],
97
+ providers: [
98
+ {
99
+ provide: SKY_LIB_RESOURCES_PROVIDERS,
100
+ useClass: SkyTextEditorResourcesProvider,
101
+ multi: true,
102
+ },
103
+ ],
104
+ }]
105
+ }] });
106
+ //# sourceMappingURL=sky-text-editor-resources.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sky-text-editor-resources.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/text-editor/src/lib/modules/shared/sky-text-editor-resources.module.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-text-editor' schematic.\n * To update this file, simply rerun the command.\n */\n\nimport { NgModule } from '@angular/core';\nimport {\n getLibStringForLocale,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n SKY_LIB_RESOURCES_PROVIDERS,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_text_editor_format_menu_action_bold_label: { message: 'Bold' },\n skyux_text_editor_format_menu_action_bold_key_shortcut: {\n message: 'Ctrl+B',\n },\n skyux_text_editor_format_menu_action_italic_label: { message: 'Italic' },\n skyux_text_editor_format_menu_action_italic_key_shortcut: {\n message: 'Ctrl+I',\n },\n skyux_text_editor_format_menu_action_underline_label: {\n message: 'Underline',\n },\n skyux_text_editor_format_menu_action_underline_key_shortcut: {\n message: 'Ctrl+U',\n },\n skyux_text_editor_format_menu_action_strikethrough_label: {\n message: 'Strikethrough',\n },\n skyux_text_editor_format_menu_action_clear_formatting_label: {\n message: 'Clear formatting',\n },\n skyux_text_editor_edit_menu_action_undo_label: { message: 'Undo' },\n skyux_text_editor_edit_menu_action_undo_key_shortcut: { message: 'Ctrl+Z' },\n skyux_text_editor_edit_menu_action_redo_label: { message: 'Redo' },\n skyux_text_editor_edit_menu_action_redo_key_shortcut: { message: 'Ctrl+Y' },\n skyux_text_editor_edit_menu_action_cut_label: { message: 'Cut' },\n skyux_text_editor_edit_menu_action_cut_key_shortcut: { message: 'Ctrl+X' },\n skyux_text_editor_edit_menu_action_copy_label: { message: 'Copy' },\n skyux_text_editor_edit_menu_action_copy_key_shortcut: { message: 'Ctrl+C' },\n skyux_text_editor_edit_menu_action_paste_label: { message: 'Paste' },\n skyux_text_editor_edit_menu_action_paste_key_shortcut: {\n message: 'Ctrl+V',\n },\n skyux_text_editor_edit_menu_action_select_all_label: {\n message: 'Select all',\n },\n skyux_text_editor_edit_menu_action_select_all_key_shortcut: {\n message: 'Ctrl+A',\n },\n skyux_text_editor_menubar_dropdown_button_edit_label: { message: 'Edit' },\n skyux_text_editor_menubar_dropdown_button_format_label: {\n message: 'Format',\n },\n skyux_text_editor_menubar_dropdown_button_insert_label: {\n message: 'Insert merge field',\n },\n skyux_text_editor_url_modal_header_label: { message: 'Create link' },\n skyux_text_editor_url_modal_url_label: {\n message: 'Enter a URL to link to:',\n },\n skyux_text_editor_url_modal_open_label: {\n message: 'Where should it open?',\n },\n skyux_text_editor_url_modal_current_option_label: {\n message: 'Current window',\n },\n skyux_text_editor_url_modal_new_option_label: { message: 'New window' },\n skyux_text_editor_url_modal_email_label: { message: 'Email address' },\n skyux_text_editor_url_modal_subject_label: { message: 'Subject line' },\n skyux_text_editor_url_modal_save_button_label: { message: 'Save' },\n skyux_text_editor_url_modal_cancel_button_label: { message: 'Cancel' },\n },\n};\n\nexport class SkyTextEditorResourcesProvider implements SkyLibResourcesProvider {\n public getString(localeInfo: SkyAppLocaleInfo, name: string): string {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyTextEditorResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyTextEditorResourcesModule {}\n"]}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export const FONT_LIST_DEFAULTS = [
5
+ {
6
+ name: 'Blackbaud Sans',
7
+ value: '"Blackbaud Sans", Arial, sans-serif',
8
+ },
9
+ {
10
+ name: 'Arial',
11
+ value: 'Arial',
12
+ },
13
+ {
14
+ name: 'Arial Black',
15
+ value: '"Arial Black"',
16
+ },
17
+ {
18
+ name: 'Courier New',
19
+ value: '"Courier New"',
20
+ },
21
+ {
22
+ name: 'Georgia',
23
+ value: 'Georgia, serif',
24
+ },
25
+ {
26
+ name: 'Tahoma',
27
+ value: 'Tahoma, Geneva, sans-serif',
28
+ },
29
+ {
30
+ name: 'Times New Roman',
31
+ value: '"Times New Roman"',
32
+ },
33
+ {
34
+ name: 'Trebuchet MS',
35
+ value: '"Trebuchet MS", sans-serif',
36
+ },
37
+ {
38
+ name: 'Verdana',
39
+ value: 'Verdana, Geneva, sans-serif',
40
+ },
41
+ ];
42
+ //# sourceMappingURL=font-list-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"font-list-defaults.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/text-editor/src/lib/modules/text-editor/defaults/font-list-defaults.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD;QACE,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,qCAAqC;KAC7C;IACD;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;KACf;IACD;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,eAAe;KACvB;IACD;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,eAAe;KACvB;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,gBAAgB;KACxB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,4BAA4B;KACpC;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,mBAAmB;KAC3B;IACD;QACE,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,4BAA4B;KACpC;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,6BAA6B;KACrC;CACF,CAAC","sourcesContent":["import { SkyTextEditorFont } from '../types/font-state';\n\n/**\n * @internal\n */\nexport const FONT_LIST_DEFAULTS: SkyTextEditorFont[] = [\n {\n name: 'Blackbaud Sans',\n value: '\"Blackbaud Sans\", Arial, sans-serif',\n },\n {\n name: 'Arial',\n value: 'Arial',\n },\n {\n name: 'Arial Black',\n value: '\"Arial Black\"',\n },\n {\n name: 'Courier New',\n value: '\"Courier New\"',\n },\n {\n name: 'Georgia',\n value: 'Georgia, serif',\n },\n {\n name: 'Tahoma',\n value: 'Tahoma, Geneva, sans-serif',\n },\n {\n name: 'Times New Roman',\n value: '\"Times New Roman\"',\n },\n {\n name: 'Trebuchet MS',\n value: '\"Trebuchet MS\", sans-serif',\n },\n {\n name: 'Verdana',\n value: 'Verdana, Geneva, sans-serif',\n },\n];\n"]}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export const FONT_SIZE_LIST_DEFAULTS = [
5
+ 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 36, 48,
6
+ ];
7
+ //# sourceMappingURL=font-size-list-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"font-size-list-defaults.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/text-editor/src/lib/modules/text-editor/defaults/font-size-list-defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAa;IAC/C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACpE,CAAC","sourcesContent":["/**\n * @internal\n */\nexport const FONT_SIZE_LIST_DEFAULTS: number[] = [\n 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 36, 48,\n];\n"]}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export const MENU_DEFAULTS = ['edit', 'format'];
5
+ //# sourceMappingURL=menu-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-defaults.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/text-editor/src/lib/modules/text-editor/defaults/menu-defaults.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAA4B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["import { SkyTextEditorMenuType } from '../types/menu-type';\n\n/**\n * @internal\n */\nexport const MENU_DEFAULTS: SkyTextEditorMenuType[] = ['edit', 'format'];\n"]}
@@ -0,0 +1,15 @@
1
+ import { FONT_LIST_DEFAULTS } from './font-list-defaults';
2
+ /**
3
+ * @internal
4
+ */
5
+ export const STYLE_STATE_DEFAULTS = {
6
+ backColor: 'rgba(0, 0, 0, 0)',
7
+ fontColor: '#000',
8
+ fontSize: 14,
9
+ font: FONT_LIST_DEFAULTS[0].value,
10
+ boldState: false,
11
+ italicState: false,
12
+ underlineState: false,
13
+ linkState: false,
14
+ };
15
+ //# sourceMappingURL=style-state-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-state-defaults.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/text-editor/src/lib/modules/text-editor/defaults/style-state-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA4B;IAC3D,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK;IACjC,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,KAAK;IACrB,SAAS,EAAE,KAAK;CACjB,CAAC","sourcesContent":["import { FONT_LIST_DEFAULTS } from './font-list-defaults';\n\nimport { SkyTextEditorStyleState } from '../types/style-state';\n\n/**\n * @internal\n */\nexport const STYLE_STATE_DEFAULTS: SkyTextEditorStyleState = {\n backColor: 'rgba(0, 0, 0, 0)',\n fontColor: '#000',\n fontSize: 14,\n font: FONT_LIST_DEFAULTS[0].value,\n boldState: false,\n italicState: false,\n underlineState: false,\n linkState: false,\n};\n"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export const TOOLBAR_ACTION_DEFAULTS = [
5
+ 'font-family',
6
+ 'font-size',
7
+ 'font-style',
8
+ 'color',
9
+ 'list',
10
+ 'link',
11
+ ];
12
+ //# sourceMappingURL=toolbar-action-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar-action-defaults.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/text-editor/src/lib/modules/text-editor/defaults/toolbar-action-defaults.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAqC;IACvE,aAAa;IACb,WAAW;IACX,YAAY;IACZ,OAAO;IACP,MAAM;IACN,MAAM;CACP,CAAC","sourcesContent":["import { SkyTextEditorToolbarActionType } from '../types/toolbar-action-type';\n\n/**\n * @internal\n */\nexport const TOOLBAR_ACTION_DEFAULTS: SkyTextEditorToolbarActionType[] = [\n 'font-family',\n 'font-size',\n 'font-style',\n 'color',\n 'list',\n 'link',\n];\n"]}
@@ -0,0 +1,196 @@
1
+ import { ChangeDetectorRef, ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
+ import { SkyLibResourcesService } from '@skyux/i18n';
3
+ import { SkyDropdownMessageType } from '@skyux/popovers';
4
+ import { forkJoin, Subject } from 'rxjs';
5
+ import { take, takeUntil } from 'rxjs/operators';
6
+ import { SkyTextEditorAdapterService } from '../services/text-editor-adapter.service';
7
+ import { SkyFormsUtility } from '../../shared/forms-utility';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../services/text-editor-adapter.service";
10
+ import * as i2 from "@skyux/i18n";
11
+ import * as i3 from "@skyux/layout";
12
+ import * as i4 from "@skyux/popovers";
13
+ import * as i5 from "@angular/common";
14
+ import * as i6 from "@skyux/theme";
15
+ /**
16
+ * @internal
17
+ */
18
+ export class SkyTextEditorMenubarComponent {
19
+ constructor(adapterService, changeDetector, resources) {
20
+ this.adapterService = adapterService;
21
+ this.changeDetector = changeDetector;
22
+ this.resources = resources;
23
+ this.editorFocusStream = new Subject();
24
+ this.menus = [];
25
+ this.mergeFields = [];
26
+ this._disabled = false;
27
+ this.editDropdownStream = new Subject();
28
+ this.formatDropdownStream = new Subject();
29
+ this.mergeFieldDropdownStream = new Subject();
30
+ this.ngUnsubscribe = new Subject();
31
+ }
32
+ set disabled(value) {
33
+ const coercedValue = SkyFormsUtility.coerceBooleanProperty(value);
34
+ if (coercedValue !== this.disabled) {
35
+ this._disabled = coercedValue;
36
+ this.changeDetector.markForCheck();
37
+ }
38
+ }
39
+ get disabled() {
40
+ return this._disabled;
41
+ }
42
+ ngOnInit() {
43
+ this.editorFocusStream.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
44
+ this.closeDropdowns();
45
+ });
46
+ forkJoin([
47
+ // Format menu strings.
48
+ this.resources.getString('skyux_text_editor_format_menu_action_bold_label'),
49
+ this.resources.getString('skyux_text_editor_format_menu_action_bold_key_shortcut'),
50
+ this.resources.getString('skyux_text_editor_format_menu_action_italic_label'),
51
+ this.resources.getString('skyux_text_editor_format_menu_action_italic_key_shortcut'),
52
+ this.resources.getString('skyux_text_editor_format_menu_action_underline_label'),
53
+ this.resources.getString('skyux_text_editor_format_menu_action_underline_key_shortcut'),
54
+ this.resources.getString('skyux_text_editor_format_menu_action_strikethrough_label'),
55
+ this.resources.getString('skyux_text_editor_format_menu_action_clear_formatting_label'),
56
+ // Edit menu string - start at index 8.
57
+ this.resources.getString('skyux_text_editor_edit_menu_action_undo_label'),
58
+ this.resources.getString('skyux_text_editor_edit_menu_action_undo_key_shortcut'),
59
+ this.resources.getString('skyux_text_editor_edit_menu_action_redo_label'),
60
+ this.resources.getString('skyux_text_editor_edit_menu_action_redo_key_shortcut'),
61
+ this.resources.getString('skyux_text_editor_edit_menu_action_cut_label'),
62
+ this.resources.getString('skyux_text_editor_edit_menu_action_cut_key_shortcut'),
63
+ this.resources.getString('skyux_text_editor_edit_menu_action_copy_label'),
64
+ this.resources.getString('skyux_text_editor_edit_menu_action_copy_key_shortcut'),
65
+ this.resources.getString('skyux_text_editor_edit_menu_action_paste_label'),
66
+ this.resources.getString('skyux_text_editor_edit_menu_action_paste_key_shortcut'),
67
+ this.resources.getString('skyux_text_editor_edit_menu_action_select_all_label'),
68
+ this.resources.getString('skyux_text_editor_edit_menu_action_select_all_key_shortcut'),
69
+ ])
70
+ .pipe(take(1))
71
+ .subscribe((resources) => {
72
+ this.formatItems = [
73
+ {
74
+ function: () => this.execCommand('bold'),
75
+ label: resources[0],
76
+ keyShortcut: resources[1],
77
+ },
78
+ {
79
+ function: () => this.execCommand('italic'),
80
+ label: resources[2],
81
+ keyShortcut: resources[3],
82
+ },
83
+ {
84
+ function: () => this.execCommand('underline'),
85
+ label: resources[4],
86
+ keyShortcut: resources[5],
87
+ },
88
+ {
89
+ function: () => this.execCommand('strikethrough'),
90
+ label: resources[6],
91
+ },
92
+ {
93
+ isDivider: true,
94
+ },
95
+ {
96
+ function: () => this.clearFormat(),
97
+ label: resources[7],
98
+ },
99
+ ];
100
+ this.editItems = [
101
+ {
102
+ function: () => this.execCommand('undo'),
103
+ label: resources[8],
104
+ keyShortcut: resources[9],
105
+ },
106
+ {
107
+ function: () => this.execCommand('redo'),
108
+ label: resources[10],
109
+ keyShortcut: resources[11],
110
+ },
111
+ {
112
+ isDivider: true,
113
+ },
114
+ {
115
+ function: () => this.execCommand('cut'),
116
+ label: resources[12],
117
+ keyShortcut: resources[13],
118
+ },
119
+ {
120
+ function: () => this.execCommand('copy'),
121
+ label: resources[14],
122
+ keyShortcut: resources[15],
123
+ },
124
+ {
125
+ function: () => this.execCommand('paste'),
126
+ label: resources[16],
127
+ keyShortcut: resources[17],
128
+ },
129
+ {
130
+ isDivider: true,
131
+ },
132
+ {
133
+ function: () => this.execCommand('selectAll'),
134
+ label: resources[18],
135
+ keyShortcut: resources[19],
136
+ },
137
+ ];
138
+ });
139
+ }
140
+ ngOnDestroy() {
141
+ this.ngUnsubscribe.next();
142
+ this.ngUnsubscribe.complete();
143
+ }
144
+ execCommand(command, value = '') {
145
+ this.adapterService.execCommand(this.editorId, {
146
+ command: command,
147
+ value: value,
148
+ });
149
+ }
150
+ insertMergeField(field) {
151
+ this.execCommand('insertHTML', '<img style="display: inline; cursor: grab;" data-fieldid="' +
152
+ field.id +
153
+ '" data-fielddisplay="' +
154
+ field.name +
155
+ '" src="' +
156
+ (field.previewImageUrl ||
157
+ this.adapterService.getMergeFieldDataURI(field.name)) +
158
+ '">');
159
+ }
160
+ closeDropdowns() {
161
+ this.editDropdownStream.next({ type: SkyDropdownMessageType.Close });
162
+ this.formatDropdownStream.next({ type: SkyDropdownMessageType.Close });
163
+ this.mergeFieldDropdownStream.next({ type: SkyDropdownMessageType.Close });
164
+ }
165
+ clearFormat() {
166
+ let currentSelection = this.adapterService.getCurrentSelection(this.editorId);
167
+ /* istanbul ignore else */
168
+ if (currentSelection.rangeCount > 0 &&
169
+ currentSelection.getRangeAt(0).toString().length <= 0) {
170
+ this.execCommand('selectAll');
171
+ }
172
+ this.execCommand('removeFormat');
173
+ }
174
+ }
175
+ SkyTextEditorMenubarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTextEditorMenubarComponent, deps: [{ token: i1.SkyTextEditorAdapterService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Component });
176
+ SkyTextEditorMenubarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyTextEditorMenubarComponent, selector: "sky-text-editor-menubar", inputs: { editorFocusStream: "editorFocusStream", editorId: "editorId", menus: "menus", mergeFields: "mergeFields", disabled: "disabled" }, ngImport: i0, template: "<sky-toolbar-item\n *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n>\n <ng-container [ngSwitch]=\"menu\">\n <ng-container *ngSwitchCase=\"'edit'\">\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button\n *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem.function()\"\n >\n {{ editItem.label }}\n <div\n *ngIf=\"editItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"editItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'format'\">\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_format_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let formatItem of formatItems\">\n <button\n *ngIf=\"!formatItem.isDivider\"\n type=\"button\"\n (click)=\"formatItem.function()\"\n >\n {{ formatItem.label }}\n <div\n *ngIf=\"formatItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ formatItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"formatItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'merge-field'\">\n <sky-dropdown\n *ngIf=\"mergeFields && mergeFields.length > 0\"\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_insert_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let mergeField of mergeFields\">\n <button type=\"button\" (click)=\"insertMergeField(mergeField)\">\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n </ng-container>\n</sky-toolbar-item>\n", styles: [".sky-text-editor-dropdown-item-divider{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,.1);cursor:default;filter:none}.sky-text-editor-menu-key-shortcut{float:right;margin-left:15px}\n"], components: [{ type: i3.λ39, selector: "sky-toolbar-item" }, { type: i4.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { type: i4.λ2, selector: "sky-dropdown-button" }, { type: i4.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { type: i4.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }], pipes: { "skyLibResources": i2.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTextEditorMenubarComponent, decorators: [{
178
+ type: Component,
179
+ args: [{
180
+ selector: 'sky-text-editor-menubar',
181
+ templateUrl: './text-editor-menubar.component.html',
182
+ styleUrls: ['./text-editor-menubar.component.scss'],
183
+ changeDetection: ChangeDetectionStrategy.OnPush,
184
+ }]
185
+ }], ctorParameters: function () { return [{ type: i1.SkyTextEditorAdapterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyLibResourcesService }]; }, propDecorators: { editorFocusStream: [{
186
+ type: Input
187
+ }], editorId: [{
188
+ type: Input
189
+ }], menus: [{
190
+ type: Input
191
+ }], mergeFields: [{
192
+ type: Input
193
+ }], disabled: [{
194
+ type: Input
195
+ }] } });
196
+ //# sourceMappingURL=text-editor-menubar.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-editor-menubar.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/text-editor/src/lib/modules/text-editor/menubar/text-editor-menubar.component.ts","../../../../../../../../../libs/components/text-editor/src/lib/modules/text-editor/menubar/text-editor-menubar.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { SkyDropdownMessage, SkyDropdownMessageType } from '@skyux/popovers';\n\nimport { forkJoin, Subject } from 'rxjs';\n\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyTextEditorAdapterService } from '../services/text-editor-adapter.service';\n\nimport { SkyTextEditorMenuType } from '../types/menu-type';\n\nimport { SkyTextEditorMergeField } from '../types/text-editor-merge-field';\n\nimport { SkyFormsUtility } from '../../shared/forms-utility';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-text-editor-menubar',\n templateUrl: './text-editor-menubar.component.html',\n styleUrls: ['./text-editor-menubar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyTextEditorMenubarComponent implements OnDestroy, OnInit {\n @Input()\n public editorFocusStream = new Subject();\n\n @Input()\n public editorId: string;\n\n @Input()\n public menus: SkyTextEditorMenuType[] = [];\n\n @Input()\n public mergeFields: SkyTextEditorMergeField[] = [];\n\n @Input()\n public set disabled(value: boolean) {\n const coercedValue = SkyFormsUtility.coerceBooleanProperty(value);\n if (coercedValue !== this.disabled) {\n this._disabled = coercedValue;\n this.changeDetector.markForCheck();\n }\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n private _disabled: boolean = false;\n\n public editDropdownStream = new Subject<SkyDropdownMessage>();\n\n public editItems: {\n function?: () => void;\n isDivider?: boolean;\n label?: string;\n keyShortcut?: string;\n }[];\n\n public formatDropdownStream = new Subject<SkyDropdownMessage>();\n\n public formatItems: {\n function?: () => void;\n isDivider?: boolean;\n label?: string;\n keyShortcut?: string;\n }[];\n\n public mergeFieldDropdownStream = new Subject<SkyDropdownMessage>();\n\n private ngUnsubscribe = new Subject<void>();\n\n constructor(\n private adapterService: SkyTextEditorAdapterService,\n private changeDetector: ChangeDetectorRef,\n private resources: SkyLibResourcesService\n ) {}\n\n public ngOnInit(): void {\n this.editorFocusStream.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n this.closeDropdowns();\n });\n\n forkJoin([\n // Format menu strings.\n this.resources.getString(\n 'skyux_text_editor_format_menu_action_bold_label'\n ),\n this.resources.getString(\n 'skyux_text_editor_format_menu_action_bold_key_shortcut'\n ),\n this.resources.getString(\n 'skyux_text_editor_format_menu_action_italic_label'\n ),\n this.resources.getString(\n 'skyux_text_editor_format_menu_action_italic_key_shortcut'\n ),\n this.resources.getString(\n 'skyux_text_editor_format_menu_action_underline_label'\n ),\n this.resources.getString(\n 'skyux_text_editor_format_menu_action_underline_key_shortcut'\n ),\n this.resources.getString(\n 'skyux_text_editor_format_menu_action_strikethrough_label'\n ),\n this.resources.getString(\n 'skyux_text_editor_format_menu_action_clear_formatting_label'\n ),\n\n // Edit menu string - start at index 8.\n this.resources.getString('skyux_text_editor_edit_menu_action_undo_label'),\n this.resources.getString(\n 'skyux_text_editor_edit_menu_action_undo_key_shortcut'\n ),\n this.resources.getString('skyux_text_editor_edit_menu_action_redo_label'),\n this.resources.getString(\n 'skyux_text_editor_edit_menu_action_redo_key_shortcut'\n ),\n this.resources.getString('skyux_text_editor_edit_menu_action_cut_label'),\n this.resources.getString(\n 'skyux_text_editor_edit_menu_action_cut_key_shortcut'\n ),\n this.resources.getString('skyux_text_editor_edit_menu_action_copy_label'),\n this.resources.getString(\n 'skyux_text_editor_edit_menu_action_copy_key_shortcut'\n ),\n this.resources.getString(\n 'skyux_text_editor_edit_menu_action_paste_label'\n ),\n this.resources.getString(\n 'skyux_text_editor_edit_menu_action_paste_key_shortcut'\n ),\n this.resources.getString(\n 'skyux_text_editor_edit_menu_action_select_all_label'\n ),\n this.resources.getString(\n 'skyux_text_editor_edit_menu_action_select_all_key_shortcut'\n ),\n ])\n .pipe(take(1))\n .subscribe((resources) => {\n this.formatItems = [\n {\n function: () => this.execCommand('bold'),\n label: resources[0],\n keyShortcut: resources[1],\n },\n {\n function: () => this.execCommand('italic'),\n label: resources[2],\n keyShortcut: resources[3],\n },\n {\n function: () => this.execCommand('underline'),\n label: resources[4],\n keyShortcut: resources[5],\n },\n {\n function: () => this.execCommand('strikethrough'),\n label: resources[6],\n },\n {\n isDivider: true,\n },\n {\n function: () => this.clearFormat(),\n label: resources[7],\n },\n ];\n this.editItems = [\n {\n function: () => this.execCommand('undo'),\n label: resources[8],\n keyShortcut: resources[9],\n },\n {\n function: () => this.execCommand('redo'),\n label: resources[10],\n keyShortcut: resources[11],\n },\n {\n isDivider: true,\n },\n {\n function: () => this.execCommand('cut'),\n label: resources[12],\n keyShortcut: resources[13],\n },\n {\n function: () => this.execCommand('copy'),\n label: resources[14],\n keyShortcut: resources[15],\n },\n {\n function: () => this.execCommand('paste'),\n label: resources[16],\n keyShortcut: resources[17],\n },\n {\n isDivider: true,\n },\n {\n function: () => this.execCommand('selectAll'),\n label: resources[18],\n keyShortcut: resources[19],\n },\n ];\n });\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public execCommand(command: string, value: any = ''): void {\n this.adapterService.execCommand(this.editorId, {\n command: command,\n value: value,\n });\n }\n\n public insertMergeField(field: SkyTextEditorMergeField): void {\n this.execCommand(\n 'insertHTML',\n '<img style=\"display: inline; cursor: grab;\" data-fieldid=\"' +\n field.id +\n '\" data-fielddisplay=\"' +\n field.name +\n '\" src=\"' +\n (field.previewImageUrl ||\n this.adapterService.getMergeFieldDataURI(field.name)) +\n '\">'\n );\n }\n\n private closeDropdowns(): void {\n this.editDropdownStream.next({ type: SkyDropdownMessageType.Close });\n this.formatDropdownStream.next({ type: SkyDropdownMessageType.Close });\n this.mergeFieldDropdownStream.next({ type: SkyDropdownMessageType.Close });\n }\n\n private clearFormat(): void {\n let currentSelection = this.adapterService.getCurrentSelection(\n this.editorId\n );\n /* istanbul ignore else */\n if (\n currentSelection.rangeCount > 0 &&\n currentSelection.getRangeAt(0).toString().length <= 0\n ) {\n this.execCommand('selectAll');\n }\n this.execCommand('removeFormat');\n }\n}\n","<sky-toolbar-item\n *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n>\n <ng-container [ngSwitch]=\"menu\">\n <ng-container *ngSwitchCase=\"'edit'\">\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button\n *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem.function()\"\n >\n {{ editItem.label }}\n <div\n *ngIf=\"editItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"editItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'format'\">\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_format_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let formatItem of formatItems\">\n <button\n *ngIf=\"!formatItem.isDivider\"\n type=\"button\"\n (click)=\"formatItem.function()\"\n >\n {{ formatItem.label }}\n <div\n *ngIf=\"formatItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ formatItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"formatItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'merge-field'\">\n <sky-dropdown\n *ngIf=\"mergeFields && mergeFields.length > 0\"\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_insert_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let mergeField of mergeFields\">\n <button type=\"button\" (click)=\"insertMergeField(mergeField)\">\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n </ng-container>\n</sky-toolbar-item>\n"]}