@skyux/text-editor 5.0.1 → 5.5.0-alpha.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 +370 -223
  3. package/documentation.json +316 -302
  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 +411 -265
  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 +8 -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 +24 -10
  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 +6 -2
  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 +13 -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 -451
  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 -49
  112. package/esm2015/modules/text-editor/services/text-sanitization.service.js +0 -38
  113. package/esm2015/modules/text-editor/text-editor.component.js +0 -282
  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
@@ -1 +0,0 @@
1
- {"version":3,"file":"skyux-text-editor.umd.js","sources":["../../../projects/text-editor/src/modules/text-editor/services/text-sanitization.service.ts","../../../projects/text-editor/src/modules/rich-text-display/rich-text-display.component.ts","../../../projects/text-editor/src/modules/rich-text-display/rich-text-display.component.html","../../../projects/text-editor/src/modules/rich-text-display/rich-text-display.module.ts","../../../projects/text-editor/src/modules/shared/sky-text-editor-resources.module.ts","../../../projects/text-editor/src/modules/shared/forms-utility.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/text-editor/src/modules/text-editor/defaults/font-list-defaults.ts","../../../projects/text-editor/src/modules/text-editor/defaults/style-state-defaults.ts","../../../projects/text-editor/src/modules/text-editor/url-modal/text-editor-url-target.ts","../../../projects/text-editor/src/modules/text-editor/services/text-editor-selection.service.ts","../../../projects/text-editor/src/modules/text-editor/services/text-editor.service.ts","../../../projects/text-editor/src/modules/text-editor/services/text-editor-adapter.service.ts","../../../projects/text-editor/src/modules/text-editor/menubar/text-editor-menubar.component.ts","../../../projects/text-editor/src/modules/text-editor/menubar/text-editor-menubar.component.html","../../../projects/text-editor/src/modules/text-editor/url-modal/text-editor-url-modal-context.ts","../../../projects/text-editor/src/modules/text-editor/url-modal/text-editor-url-modal.component.ts","../../../projects/text-editor/src/modules/text-editor/url-modal/text-editor-url-modal.component.html","../../../projects/text-editor/src/modules/text-editor/toolbar/text-editor-toolbar.component.ts","../../../projects/text-editor/src/modules/text-editor/toolbar/text-editor-toolbar.component.html","../../../projects/text-editor/src/modules/text-editor/defaults/menu-defaults.ts","../../../projects/text-editor/src/modules/text-editor/defaults/toolbar-action-defaults.ts","../../../projects/text-editor/src/modules/text-editor/defaults/font-size-list-defaults.ts","../../../projects/text-editor/src/modules/text-editor/text-editor.component.ts","../../../projects/text-editor/src/modules/text-editor/text-editor.component.html","../../../projects/text-editor/src/modules/text-editor/text-editor.module.ts","../../../projects/text-editor/src/skyux-text-editor.ts"],"sourcesContent":["import {\n Injectable\n} from '@angular/core';\n\nimport createDOMPurify from \"dompurify\";\nconst domPurify = createDOMPurify(window);\n\ndomPurify.addHook('afterSanitizeAttributes', (node: Element) => {\n // Set all elements owning target to target=_blank\n // so we only allow the target attribute with that value.\n if (!!node.getAttribute('target')) {\n node.setAttribute('target', '_blank');\n node.setAttribute('rel', 'noopener noreferrer');\n }\n});\n\n/**\n * The `SkyTextSanitizationService` user the `DOMPurify` library to sanitize strings for use\n * in the DOM. `DOMPurify` allows more customization than Angular's internal `DomSanitizer` so we\n * can preserve `<style>` tags and allow `target` attributes for new tab links.\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class SkyTextSanitizationService {\n\n private allowedAttributes: string[] = ['target'];\n\n /**\n * Returns a sanitized string, allowing target attribute for new tab links.\n */\n public sanitize(htmlString: string): string {\n return domPurify.sanitize(htmlString, { ADD_ATTR: this.allowedAttributes });\n }\n\n}\n","import {\n Component,\n Input\n} from '@angular/core';\n\nimport {\n DomSanitizer,\n SafeHtml\n} from '@angular/platform-browser';\n\nimport {\n SkyTextSanitizationService\n} 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 /**\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}\n","<span\n class=\"sky-rich-text-display-text\"\n [innerHTML]=\"sanitizedText\"\n>\n</span>\n","import {\n CommonModule\n} from '@angular/common';\n\nimport {\n NgModule\n} from '@angular/core';\n\nimport {\n SkyRichTextDisplayComponent\n} from './rich-text-display.component';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n exports: [\n SkyRichTextDisplayComponent\n ],\n declarations: [\n SkyRichTextDisplayComponent\n ]\n})\nexport class SkyRichTextDisplayModule { }\n","/**\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': {\"skyux_text_editor_format_menu_action_bold_label\":{\"message\":\"Bold\"},\"skyux_text_editor_format_menu_action_bold_key_shortcut\":{\"message\":\"Ctrl+B\"},\"skyux_text_editor_format_menu_action_italic_label\":{\"message\":\"Italic\"},\"skyux_text_editor_format_menu_action_italic_key_shortcut\":{\"message\":\"Ctrl+I\"},\"skyux_text_editor_format_menu_action_underline_label\":{\"message\":\"Underline\"},\"skyux_text_editor_format_menu_action_underline_key_shortcut\":{\"message\":\"Ctrl+U\"},\"skyux_text_editor_format_menu_action_strikethrough_label\":{\"message\":\"Strikethrough\"},\"skyux_text_editor_format_menu_action_clear_formatting_label\":{\"message\":\"Clear formatting\"},\"skyux_text_editor_edit_menu_action_undo_label\":{\"message\":\"Undo\"},\"skyux_text_editor_edit_menu_action_undo_key_shortcut\":{\"message\":\"Ctrl+Z\"},\"skyux_text_editor_edit_menu_action_redo_label\":{\"message\":\"Redo\"},\"skyux_text_editor_edit_menu_action_redo_key_shortcut\":{\"message\":\"Ctrl+Y\"},\"skyux_text_editor_edit_menu_action_cut_label\":{\"message\":\"Cut\"},\"skyux_text_editor_edit_menu_action_cut_key_shortcut\":{\"message\":\"Ctrl+X\"},\"skyux_text_editor_edit_menu_action_copy_label\":{\"message\":\"Copy\"},\"skyux_text_editor_edit_menu_action_copy_key_shortcut\":{\"message\":\"Ctrl+C\"},\"skyux_text_editor_edit_menu_action_paste_label\":{\"message\":\"Paste\"},\"skyux_text_editor_edit_menu_action_paste_key_shortcut\":{\"message\":\"Ctrl+V\"},\"skyux_text_editor_edit_menu_action_select_all_label\":{\"message\":\"Select all\"},\"skyux_text_editor_edit_menu_action_select_all_key_shortcut\":{\"message\":\"Ctrl+A\"},\"skyux_text_editor_menubar_dropdown_button_edit_label\":{\"message\":\"Edit\"},\"skyux_text_editor_menubar_dropdown_button_format_label\":{\"message\":\"Format\"},\"skyux_text_editor_menubar_dropdown_button_insert_label\":{\"message\":\"Insert merge field\"},\"skyux_text_editor_url_modal_header_label\":{\"message\":\"Create link\"},\"skyux_text_editor_url_modal_url_label\":{\"message\":\"Enter a URL to link to:\"},\"skyux_text_editor_url_modal_open_label\":{\"message\":\"Where should it open?\"},\"skyux_text_editor_url_modal_current_option_label\":{\"message\":\"Current window\"},\"skyux_text_editor_url_modal_new_option_label\":{\"message\":\"New window\"},\"skyux_text_editor_url_modal_email_label\":{\"message\":\"Email address\"},\"skyux_text_editor_url_modal_subject_label\":{\"message\":\"Subject line\"},\"skyux_text_editor_url_modal_save_button_label\":{\"message\":\"Save\"},\"skyux_text_editor_url_modal_cancel_button_label\":{\"message\":\"Cancel\"}},\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 provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyTextEditorResourcesProvider,\n multi: true\n }]\n})\nexport class SkyTextEditorResourcesModule { }\n","// 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\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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\n SkyTextEditorFont\n} 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","import {\n FONT_LIST_DEFAULTS\n} from './font-list-defaults';\n\nimport {\n SkyTextEditorStyleState\n} 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","/**\n * @internal\n */\nexport enum UrlTarget {\n None = 0,\n NewWindow = 1\n}\n","import {\n Injectable\n} from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class SkyTextEditorSelectionService {\n public isElementSelected(documentEl: Document, element: HTMLElement) {\n const selectedNode = this.getCurrentSelection(documentEl).anchorNode as HTMLElement;\n /* istanbul ignore next */\n return selectedNode &&\n (\n element.contains(selectedNode) || (selectedNode.parentNode && element.contains(selectedNode.parentNode))\n );\n }\n\n public getCurrentSelection(documentEl: Document): Selection {\n return documentEl.getSelection();\n }\n\n public getCurrentSelectionParentElement(documentEl: Document): Element {\n const selection = this.getCurrentSelection(documentEl);\n let selectedEl: Element;\n /* istanbul ignore else */\n if (selection &&\n selection.getRangeAt &&\n selection.getRangeAt(0).commonAncestorContainer\n ) {\n selectedEl = selection.getRangeAt(0).commonAncestorContainer as Element;\n selectedEl = selectedEl.nodeType !== 1 ? selectedEl.parentElement : selectedEl;\n } else if (selection && selection.type !== 'Control') {\n selectedEl = (selection as any).createRange().parentElement();\n } else {\n return undefined;\n }\n return selectedEl;\n }\n\n public getCurrentSelectionRange(documentEl: Document, windowEl: Window): Range {\n /* istanbul ignore else */\n if (windowEl.getSelection) {\n const sel = windowEl.getSelection();\n /* istanbul ignore else */\n if (sel.getRangeAt && sel.rangeCount) {\n return sel.getRangeAt(0);\n }\n } else if (documentEl.getSelection() && documentEl.getSelection().getRangeAt) {\n return documentEl.getSelection().getRangeAt(0);\n }\n }\n\n public selectElement(documentEl: Document, windowEl: Window, element: HTMLElement): void {\n /* istanbul ignore else */\n if (element) {\n /* istanbul ignore else */\n if (windowEl.getSelection) {\n const sel = windowEl.getSelection();\n sel.removeAllRanges();\n const range = documentEl.createRange();\n range.selectNodeContents(element);\n sel.addRange(range);\n } else if (documentEl.getSelection) {\n const sel = documentEl.getSelection();\n sel.removeAllRanges();\n const range = documentEl.createRange();\n range.selectNodeContents(element);\n sel.addRange(range);\n }\n }\n }\n\n}\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n Observable\n} from 'rxjs';\n\nimport {\n EditorSetting\n} from '../types/editor-setting';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class SkyTextEditorService {\n\n /**\n * A dictionary representing all active text editors and their settings.\n */\n public editors: { [key: string]: EditorSetting } = {};\n\n /**\n * Returns the click observable from the editor with the corresponding id.\n */\n public clickListener(id: string): Observable<unknown> {\n return this.editors[id].clickObservable;\n }\n\n /**\n * Returns the command change observable from the editor with the corresponding id.\n */\n public commandChangeListener(id: string): Observable<unknown> {\n return this.editors[id].commandChangeObservable;\n }\n\n /**\n * Removes editor from the `editors` index by id.\n */\n public removeEditor(id: string): void {\n /* istanbul ignore else */\n if (id in this.editors) {\n delete this.editors[id];\n }\n }\n\n /**\n * Returns the selection change observable from the editor with the corresponding id.\n */\n public selectionChangeListener(id: string): Observable<unknown> {\n return this.editors[id].selectionChangeObservable;\n }\n\n}\n","import {\n Injectable\n} from '@angular/core';\n\nimport {\n SkyAppWindowRef\n} from '@skyux/core';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n STYLE_STATE_DEFAULTS\n} from '../defaults/style-state-defaults';\n\nimport {\n EditorCommand\n} from '../types/editor-command';\n\nimport {\n EditorSetting\n} from '../types/editor-setting';\n\nimport {\n SkyTextEditorStyleState\n} from '../types/style-state';\n\nimport {\n UrlModalResult\n} from '../url-modal/text-editor-url-modal-result';\n\nimport {\n UrlTarget\n} from '../url-modal/text-editor-url-target';\n\nimport {\n SkyTextEditorService\n} from './text-editor.service';\n\nimport {\n SkyTextEditorSelectionService\n} from './text-editor-selection.service';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class SkyTextEditorAdapterService {\n\n private get editors(): { [key: string]: EditorSetting } {\n return this.textEditorService.editors;\n }\n\n constructor(\n private selectionService: SkyTextEditorSelectionService,\n private textEditorService: SkyTextEditorService,\n private windowService: SkyAppWindowRef\n ) { }\n\n /**\n * Creates a text editor inside the supplied iframe element.\n */\n public addEditor(\n id: string,\n iframeElement: HTMLIFrameElement,\n styleState: SkyTextEditorStyleState,\n placeholder?: string\n ): void {\n /* istanbul ignore else */\n if (!(id in this.editors)) {\n this.editors[id] = this.createObservers(id, iframeElement);\n\n const documentEl = this.getIframeDocumentEl(id);\n\n const styleEl = documentEl.createElement('style');\n styleEl.innerHTML = `.editor:empty:before {\n content: attr(data-placeholder);\n font-family: \"Blackbaud Sans\", Arial, sans-serif;\n color: #686c73;\n font-weight: 400;\n font-size: 15px;\n font-style: italic;\n }`;\n documentEl.head.appendChild(styleEl);\n\n const style: SkyTextEditorStyleState = { ...STYLE_STATE_DEFAULTS, ...styleState };\n const bodyStyle = `background-color: ${style.backColor};\n color: ${style.fontColor};\n font-family: ${style.font};\n font-size: ${style.fontSize}px`;\n documentEl.querySelector('html').setAttribute('lang', 'en');\n documentEl.body.setAttribute('contenteditable', 'true');\n documentEl.body.setAttribute('id', id);\n documentEl.body.setAttribute('role', 'main');\n documentEl.body.setAttribute('class', 'editor');\n documentEl.body.setAttribute('style', bodyStyle);\n documentEl.body.setAttribute('data-placeholder', placeholder || '');\n }\n }\n\n public disableEditor(id: string, focusableChildren: HTMLElement[], textEditorNativeElement: any): void {\n this.setEditorDisabled(id, focusableChildren, textEditorNativeElement, true);\n }\n\n public enableEditor(id: string, focusableChildren: HTMLElement[], textEditorNativeElement: any): void {\n this.setEditorDisabled(id, focusableChildren, textEditorNativeElement, false);\n }\n\n /**\n * Executes a command on the text editor with the corresponding id.\n */\n public execCommand(id: string, editorCommand: EditorCommand): void {\n /* istanbul ignore else */\n if (id in this.editors) {\n const documentEl = this.getIframeDocumentEl(id);\n\n /* istanbul ignore else */\n if (this.editorSelected(id)) {\n const commandIsSupportedAndEnabled = documentEl.execCommand(editorCommand.command, false, editorCommand.value);\n\n // IE11 doesn't support insertHTML\n /* istanbul ignore next */\n if (\n editorCommand.command.toLowerCase() === 'inserthtml' &&\n !commandIsSupportedAndEnabled\n ) {\n this.insertHtmlInIE11(id, editorCommand.value);\n }\n\n this.focusEditor(id);\n this.editors[id].commandChangeObservable.next();\n }\n }\n }\n\n public getCurrentSelection(id: string): Selection {\n return this.selectionService.getCurrentSelection(this.getIframeDocumentEl(id));\n }\n\n /**\n * Returns a data URI using the provided text string.\n * Used to display a merge field inside a string of text.\n */\n public getMergeFieldDataURI(text: string): string {\n const documentEl = this.windowService.nativeWindow.document;\n let textToUse = text;\n if (text.length > 18) {\n textToUse = text.substr(0, 15) + '...';\n }\n\n const canvasElement = documentEl.createElement('canvas');\n canvasElement.setAttribute('height', '20');\n canvasElement.setAttribute('width', '100');\n canvasElement.style.backgroundColor = 'tan';\n canvasElement.style.border = '1px solid #000000';\n canvasElement.style.borderRadius = '5px';\n\n const context = canvasElement.getContext('2d');\n context.font = '12px Arial';\n context.textAlign = 'center';\n context.fillText(textToUse, 50, 15);\n\n context.globalCompositeOperation = 'destination-over';\n context.fillStyle = '#00FFFF';\n context.fillRect(0, 0, 100, 20);\n\n context.globalCompositeOperation = 'source-over';\n context.lineWidth = 2;\n context.strokeStyle = '#FF0000';\n context.strokeRect(0, 0, 100, 20);\n\n const result = canvasElement.toDataURL('image/png', 1.0);\n return result;\n }\n\n public getStyleState(id: string): Partial<SkyTextEditorStyleState> {\n const documentEl = this.getIframeDocumentEl(id);\n\n /* istanbul ignore else */\n if (this.editorSelected(id)) {\n return {\n backColor: this.getColor(documentEl, 'BackColor'),\n fontColor: this.getColor(documentEl, 'ForeColor'),\n fontSize: parseInt(this.getFontSize(id), undefined),\n font: documentEl.queryCommandValue('fontname'),\n boldState: documentEl.queryCommandState('Bold'),\n italicState: documentEl.queryCommandState('Italic'),\n underlineState: documentEl.queryCommandState('Underline'),\n linkState: this.hasLink(id)\n };\n }\n\n /* istanbul ignore next */\n return {};\n }\n\n public getEditorInnerHtml(id: string): string {\n const documentEl = this.getIframeDocumentEl(id);\n if (documentEl) {\n return this.replaceHtmlCodes(documentEl.body.innerHTML);\n }\n return '';\n }\n\n public setEditorInnerHtml(id: string, value: string): void {\n const documentEl = this.getIframeDocumentEl(id);\n const editorContent = documentEl.body;\n /* istanbul ignore else */\n if (editorContent.innerHTML !== value) {\n editorContent.innerHTML = value;\n }\n }\n\n public focusEditor(id: string): void {\n /* istanbul ignore else */\n if (id in this.editors) {\n const windowEl = this.getContentWindowEl(id);\n const iframeDocumentEl = this.getIframeDocumentEl(id);\n const currentSelection = this.selectionService.getCurrentSelectionRange(iframeDocumentEl, windowEl);\n const cursorIsNotActiveAndHasReset = currentSelection && (currentSelection.startOffset === 0 && currentSelection.endOffset === 0);\n\n if (!this.editorSelected(id) || cursorIsNotActiveAndHasReset) {\n // focus the end of the editor\n const documentEl = this.windowService.nativeWindow.document;\n const editor: any = iframeDocumentEl.body;\n const range = documentEl.createRange();\n\n this.editors[id].iframeElementRef.focus();\n editor.focus();\n /* istanbul ignore else */\n if (windowEl.getSelection && documentEl.createRange) {\n range.selectNodeContents(editor);\n range.collapse(false);\n const sel = windowEl.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else {\n // IE only\n const textRange = editor.createTextRange();\n textRange.moveToElementText(editor);\n textRange.collapse(false);\n textRange.select();\n }\n } else {\n // Cursor may not be active, restore it\n this.editors[id].iframeElementRef.focus();\n iframeDocumentEl.body.focus();\n }\n }\n }\n\n public getLink(editorId: string): UrlModalResult {\n let link: UrlModalResult = undefined;\n const anchorEl = this.getSelectedAnchorTag(editorId);\n if (anchorEl && anchorEl.href) {\n link = {\n target: anchorEl.getAttribute('target') === '_blank' ? UrlTarget.NewWindow : UrlTarget.None,\n url: anchorEl.href\n };\n }\n\n return link;\n }\n\n public getSelectedAnchorTag(editorId: string): HTMLAnchorElement {\n const selectedEl = this.getCurrentSelectionParentElement(editorId);\n\n return this.getParent(selectedEl, 'a') as HTMLAnchorElement;\n }\n\n public saveSelection(id: string): Range {\n return this.selectionService.getCurrentSelectionRange(this.getIframeDocumentEl(id), this.getContentWindowEl(id));\n }\n\n public selectElement(id: string, element: HTMLElement): void {\n this.selectionService.selectElement(this.getIframeDocumentEl(id), this.getContentWindowEl(id), element);\n }\n\n public setPlaceholder(id: string, placeholder?: string): void {\n const documentEl = this.getIframeDocumentEl(id);\n documentEl.body.setAttribute('data-placeholder', placeholder || '');\n }\n\n public setFontSize(id: string, fontSize: number): void {\n const doc = this.getIframeDocumentEl(id);\n this.execCommand(id, {command: 'fontSize', value: 1});\n const fontElements: HTMLElement[] = Array.from(doc.querySelectorAll('font[size=\"1\"]'));\n for (let element of fontElements) {\n element.removeAttribute('size');\n element.style.fontSize = (fontSize + 'px');\n }\n this.cleanUpBlankStyleTags(doc);\n\n this.focusEditor(id);\n this.editors[id].commandChangeObservable.next();\n }\n\n public removeObservers(setting: EditorSetting): void {\n /* istanbul ignore next */\n const documentEl = setting.iframeElementRef.contentWindow ?\n setting.iframeElementRef.contentWindow.document :\n setting.iframeElementRef.contentDocument;\n setting.selectionChangeObservable.complete();\n setting.clickObservable.complete();\n setting.commandChangeObservable.complete();\n documentEl.removeEventListener('selectionchange', setting.selectionListener);\n documentEl.removeEventListener('input', setting.selectionListener);\n documentEl.removeEventListener('mousedown', setting.clickListener);\n documentEl.body.removeEventListener('paste', setting.pasteListener);\n }\n\n private getContentWindowEl(id: string): Window {\n return this.editors[id].iframeElementRef.contentWindow;\n }\n\n private getChildSelectedAnchorTags(editorId: string): Element[] {\n const selectedRange = this.getCurrentSelection(editorId).getRangeAt(0);\n if (selectedRange.toString().length <= 0) {\n return [];\n }\n\n const parentElement = this.getCurrentSelectionParentElement(editorId);\n\n let childElements = [];\n /* istanbul ignore else */\n if (parentElement) {\n childElements = Array.from(parentElement.querySelectorAll('a'));\n }\n\n /* istanbul ignore next */\n return childElements.filter(element => {\n\n // IE specific\n if (!selectedRange.intersectsNode) {\n if (!element || !element.href) {\n return false;\n }\n const tempRange = document.createRange();\n tempRange.selectNodeContents(element);\n return (selectedRange.compareBoundaryPoints(Range.START_TO_START, tempRange) !== -1\n && selectedRange.compareBoundaryPoints(Range.START_TO_END, tempRange) !== 1) ||\n (selectedRange.compareBoundaryPoints(Range.END_TO_START, tempRange) !== -1\n && selectedRange.compareBoundaryPoints(Range.END_TO_END, tempRange) !== 1);\n }\n\n // Normal non-IE\n return !!element && !!element.href && selectedRange.intersectsNode(element);\n });\n }\n\n private getIframeDocumentEl(id: string): Document {\n /* istanbul ignore next */\n if (!(id in this.editors)) {\n return undefined;\n }\n\n const contentWindowEl = this.getContentWindowEl(id);\n /* istanbul ignore else */\n if (contentWindowEl) {\n return contentWindowEl.document;\n }\n\n /* istanbul ignore next */\n return this.editors[id].iframeElementRef.contentDocument;\n }\n\n private getFontSize(id: string): string {\n let fontSize = STYLE_STATE_DEFAULTS.fontSize.toString();\n const selection = this.getCurrentSelection(id);\n /* istanbul ignore else */\n if (\n selection &&\n selection.anchorNode &&\n selection.anchorNode.parentElement\n ) {\n let element = selection.anchorNode;\n if (element.nodeType !== 1) {\n element = element.parentElement;\n }\n const computedStyle = window.getComputedStyle(element as Element);\n /* istanbul ignore else */\n if (computedStyle) {\n fontSize = computedStyle.getPropertyValue('font-size');\n }\n }\n return fontSize;\n }\n\n private createObservers(id: string, element: HTMLIFrameElement): EditorSetting {\n /* istanbul ignore next */\n const documentEl = element.contentWindow ?\n element.contentWindow.document :\n element.contentDocument;\n\n // Firefox bug where we need to open/close to cancel load so it doesn't overwrite attrs\n documentEl.open();\n documentEl.close();\n\n const selectionObservable = new Subject();\n const selectionListener = () => selectionObservable.next();\n const clickObservable = new Subject();\n const clickListener = () => clickObservable.next();\n const pasteListener = this.getPasteOverride(id);\n\n documentEl.addEventListener('selectionchange', selectionListener);\n documentEl.addEventListener('input', selectionListener);\n documentEl.addEventListener('mousedown', clickListener);\n documentEl.body.addEventListener('paste', pasteListener);\n return {\n iframeElementRef: element,\n selectionListener: selectionListener,\n clickListener: clickListener,\n pasteListener: pasteListener,\n selectionChangeObservable: selectionObservable,\n clickObservable: clickObservable,\n commandChangeObservable: new Subject()\n };\n }\n\n /* istanbul ignore next */\n private getPasteOverride(id: string): (e: ClipboardEvent) => void {\n return (e: ClipboardEvent): void => {\n e.preventDefault();\n const text = e.clipboardData.getData('text/plain');\n this.execCommand(id, { command: 'insertHTML', value: text });\n };\n }\n\n private getCurrentSelectionParentElement(id: string): Element {\n return this.selectionService.getCurrentSelectionParentElement(this.getIframeDocumentEl(id));\n }\n\n private getColor(documentEl: Document, selector: string): string {\n const commandValue = documentEl.queryCommandValue(selector);\n\n // Edge is weird and returns numbers\n /* istanbul ignore if */\n if (typeof commandValue === 'number') {\n /* istanbul ignore next */\n // tslint:disable-next-line: no-bitwise\n return 'rgb(' + (commandValue & 0xFF) + ', ' +\n // tslint:disable-next-line: no-bitwise\n ((commandValue & 0xFF00) >> 8) + ', ' +\n // tslint:disable-next-line: no-bitwise\n ((commandValue & 0xFF0000) >> 16 ) + ')';\n }\n\n // Firefox uses 'Transparent' instead of a color value\n /* istanbul ignore next */\n if (commandValue.toString().toLowerCase() === 'transparent') {\n return STYLE_STATE_DEFAULTS.backColor;\n }\n return commandValue;\n }\n\n private hasLink(editorId: string): boolean {\n const anchorEl = this.getSelectedAnchorTag(editorId);\n const childAnchorEls = this.getChildSelectedAnchorTags(editorId);\n /* istanbul ignore next */\n return childAnchorEls.length > 0 || (!!anchorEl && !!anchorEl.href);\n }\n\n private getParent(element: Element, tag: string): Element {\n let currentNode = element;\n while (currentNode && currentNode.tagName.toUpperCase() !== 'BODY') {\n if (currentNode.tagName.toUpperCase() === tag.toUpperCase()) {\n return currentNode;\n }\n currentNode = currentNode.parentElement;\n }\n return undefined;\n }\n\n private editorSelected(id: string): boolean {\n const documentEl = this.getIframeDocumentEl(id);\n return this.selectionService.isElementSelected(documentEl, documentEl.body);\n }\n\n /* istanbul ignore next */\n private insertHtmlInIE11(id: string, html: string): void {\n const documentEl = this.getIframeDocumentEl(id);\n const windowEl = this.getContentWindowEl(id);\n const sel = windowEl.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n let range = sel.getRangeAt(0);\n range.deleteContents();\n\n const el = documentEl.createElement('div');\n el.innerHTML = html;\n let frag = documentEl.createDocumentFragment(), node, lastNode;\n while (el.firstChild) {\n node = el.firstChild;\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }\n\n private cleanUpBlankStyleTags(doc: Document): void {\n const orphanElements: HTMLElement[] = Array.from(doc.querySelectorAll('font,span,*[style=\"\"]'));\n for (let element of orphanElements) {\n if (!element.getAttribute('style')) {\n element.removeAttribute('style');\n }\n }\n const removableElements = orphanElements.filter(element => {\n const tagName = element.tagName.toUpperCase();\n return (tagName === 'FONT' || tagName === 'SPAN') &&\n (element.attributes.length === 0 || !element.hasChildNodes);\n });\n for (let element of removableElements) {\n const parent = element.parentNode;\n /* istanbul ignore else */\n if (parent) {\n while (element.firstChild) {\n parent.insertBefore(element.firstChild, element);\n }\n parent.removeChild(element);\n }\n }\n }\n\n // Certain values are encoded in html and need to be decoded\n private replaceHtmlCodes(str: string): string {\n return str.replace(/&nbsp;/, String.fromCharCode(160))\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&amp;/g, '&');\n }\n\n private setEditorDisabled(id: string, focusableChildren: HTMLElement[], textEditorNativeElement: any, disabled: boolean): void {\n textEditorNativeElement.style.pointerEvents = disabled ? 'none' : 'auto';\n textEditorNativeElement.setAttribute('aria-disabled', disabled ? 'true' : 'false');\n /* istanbul ignore else */\n if (focusableChildren.length > 0) {\n focusableChildren.forEach(aFocusableChild => {\n aFocusableChild.tabIndex = disabled ? -1 : 0;\n });\n }\n this.getIframeDocumentEl(id).body.setAttribute('contenteditable', disabled ? 'false' : 'true');\n }\n\n}\n","import {\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit\n} from '@angular/core';\n\nimport {\n SkyLibResourcesService\n} from '@skyux/i18n';\n\nimport {\n SkyDropdownMessage,\n SkyDropdownMessageType\n} from '@skyux/popovers';\n\nimport {\n forkJoin,\n Subject\n} from 'rxjs';\n\nimport {\n take,\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyTextEditorAdapterService\n} from '../services/text-editor-adapter.service';\n\nimport {\n SkyTextEditorMenuType\n} from '../types/menu-type';\n\nimport {\n SkyTextEditorMergeField\n} from '../types/text-editor-merge-field';\n\nimport {\n SkyFormsUtility\n} 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\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\n .pipe(\n takeUntil(this.ngUnsubscribe)\n ).subscribe(() => {\n this.closeDropdowns();\n });\n\n forkJoin([\n // Format menu strings.\n this.resources.getString('skyux_text_editor_format_menu_action_bold_label'),\n this.resources.getString('skyux_text_editor_format_menu_action_bold_key_shortcut'),\n this.resources.getString('skyux_text_editor_format_menu_action_italic_label'),\n this.resources.getString('skyux_text_editor_format_menu_action_italic_key_shortcut'),\n this.resources.getString('skyux_text_editor_format_menu_action_underline_label'),\n this.resources.getString('skyux_text_editor_format_menu_action_underline_key_shortcut'),\n this.resources.getString('skyux_text_editor_format_menu_action_strikethrough_label'),\n this.resources.getString('skyux_text_editor_format_menu_action_clear_formatting_label'),\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('skyux_text_editor_edit_menu_action_undo_key_shortcut'),\n this.resources.getString('skyux_text_editor_edit_menu_action_redo_label'),\n this.resources.getString('skyux_text_editor_edit_menu_action_redo_key_shortcut'),\n this.resources.getString('skyux_text_editor_edit_menu_action_cut_label'),\n this.resources.getString('skyux_text_editor_edit_menu_action_cut_key_shortcut'),\n this.resources.getString('skyux_text_editor_edit_menu_action_copy_label'),\n this.resources.getString('skyux_text_editor_edit_menu_action_copy_key_shortcut'),\n this.resources.getString('skyux_text_editor_edit_menu_action_paste_label'),\n this.resources.getString('skyux_text_editor_edit_menu_action_paste_key_shortcut'),\n this.resources.getString('skyux_text_editor_edit_menu_action_select_all_label'),\n this.resources.getString('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=\"' + field.id +\n '\" data-fielddisplay=\"' + field.name +\n '\" src=\"' + (field.previewImageUrl || this.adapterService.getMergeFieldDataURI(field.name)) + '\">'\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(this.editorId);\n /* istanbul ignore else */\n if (currentSelection.rangeCount > 0 && currentSelection.getRangeAt(0).toString().length <= 0) {\n this.execCommand('selectAll');\n }\n this.execCommand('removeFormat');\n }\n\n}\n","\n <sky-toolbar-item *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n >\n <ng-container\n [ngSwitch]=\"menu\"\n >\n <ng-container *ngSwitchCase=\"'edit'\">\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{ 'skyux_text_editor_menubar_dropdown_button_edit_label' | skyLibResources }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem.function()\"\n >\n {{ editItem.label }}\n <div *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 *ngIf=\"editItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n >\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 {{ 'skyux_text_editor_menubar_dropdown_button_format_label' | skyLibResources }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let formatItem of formatItems\">\n <button *ngIf=\"!formatItem.isDivider\"\n type=\"button\"\n (click)=\"formatItem.function()\"\n >\n {{ formatItem.label }}\n <div *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 *ngIf=\"formatItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n >\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 *ngIf=\"mergeFields && mergeFields.length > 0\"\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{ 'skyux_text_editor_menubar_dropdown_button_insert_label' | skyLibResources }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let mergeField of mergeFields\">\n <button\n type=\"button\"\n (click)=\"insertMergeField(mergeField)\"\n >\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","import {\n UrlModalResult\n} from './text-editor-url-modal-result';\n\n/**\n * @internal\n */\nexport class SkyUrlModalContext {\n public urlResult: UrlModalResult;\n}\n","import {\n Component\n} from '@angular/core';\n\nimport {\n SkyModalInstance\n} from '@skyux/modals';\n\nimport {\n SkyValidation\n} from '@skyux/validation';\n\nimport {\n UrlModalResult\n} from './text-editor-url-modal-result';\n\nimport {\n SkyUrlModalContext\n} from './text-editor-url-modal-context';\n\nimport {\n UrlTarget\n} from './text-editor-url-target';\n\nconst emailKey = 'mailto:';\nconst queryStringParamKey = '?Subject=';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-text-editor-url-modal',\n templateUrl: './text-editor-url-modal.component.html',\n styleUrls: ['./text-editor-url-modal.component.scss']\n})\nexport class SkyTextEditorUrlModalComponent {\n\n public set activeTab(value: number) {\n this._activeTab = value;\n this.valid = this.isValid();\n }\n public get activeTab(): number {\n return this._activeTab;\n\n}\n public set emailAddress(value: string) {\n this._emailAddress = value;\n this.valid = this.isValid();\n }\n public get emailAddress(): string {\n return this._emailAddress;\n }\n\n public set url(value: string) {\n this._url = value;\n this.valid = this.isValid();\n }\n public get url(): string {\n return this._url;\n }\n\n public emailAddressValid: boolean = false;\n\n public subject: string = '';\n\n public target: number = 0;\n\n public valid: boolean = false;\n\n public _activeTab = 0;\n\n private _emailAddress: string = '';\n\n private _url: string = 'https://';\n\n constructor(\n private readonly modalInstance: SkyModalInstance,\n modalContext: SkyUrlModalContext\n ) {\n if (modalContext.urlResult) {\n if (modalContext.urlResult.url.startsWith(emailKey)) {\n this.emailAddress = modalContext.urlResult.url.replace(emailKey, '');\n\n let queryStringIndex = this.emailAddress.indexOf(queryStringParamKey);\n queryStringIndex = queryStringIndex > -1 ? queryStringIndex : this.emailAddress.indexOf(queryStringParamKey.toLowerCase());\n\n /* istanbul ignore else */\n if (queryStringIndex > -1) {\n this.subject = decodeURI(this.emailAddress).slice(queryStringIndex + queryStringParamKey.length);\n this.emailAddress = this.emailAddress.slice(0, queryStringIndex);\n }\n\n // Set active tab to email\n this.activeTab = 1;\n } else {\n this.url = modalContext.urlResult.url,\n this.target = modalContext.urlResult.target as any;\n\n // set active tab to web page\n this.activeTab = 0;\n }\n }\n }\n\n public activeTabChanged(value: number): void {\n this.activeTab = value;\n }\n\n public save(): void {\n /* istanbul ignore else */\n if (this.isValid()) {\n if (this.activeTab === 0) {\n this.modalInstance.save({\n url: this.url,\n target: this.target ? parseInt(this.target as any, undefined) : UrlTarget.None\n } as UrlModalResult);\n } else {\n this.modalInstance.save({\n url: this.getEmailUrl(),\n target: UrlTarget.None\n } as UrlModalResult);\n }\n }\n }\n\n public cancel(): void {\n this.modalInstance.cancel();\n }\n\n private getEmailUrl(): string {\n return emailKey + this.emailAddress + (this.subject ? '?Subject=' + encodeURI(this.subject) : '');\n }\n\n private isValid(): boolean {\n if (this.activeTab === 0) {\n return !!this.url && SkyValidation.isUrl(this.url);\n }\n return !!this.emailAddress && SkyValidation.isEmail(this.emailAddress);\n }\n\n}\n","<sky-modal>\n <sky-modal-header>\n {{ 'skyux_text_editor_url_modal_header_label' | skyLibResources }}\n </sky-modal-header>\n <sky-modal-content>\n <sky-tabset\n data-sky-id=\"test-tabset\"\n [active]=\"activeTab\"\n (activeChange)=\"activeTabChanged($event)\"\n >\n <sky-tab\n tabHeading=\"Web page\"\n >\n <div class=\"sky-form-group sky-text-editor-url-modal-first-field\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"urlInput.id\"\n >\n {{ 'skyux_text_editor_url_modal_url_label' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n type=\"text\"\n [(ngModel)]=\"url\"\n skyId\n #urlInput=\"skyId\"\n />\n </sky-input-box>\n </div>\n <sky-input-box class=\"sky-form-group\">\n <label\n class=\"sky-control-label\"\n [for]=\"targetInput.id\"\n >\n {{ 'skyux_text_editor_url_modal_open_label' | skyLibResources }}\n </label>\n <select\n class=\"sky-form-control\"\n [(ngModel)]=\"target\"\n skyId\n #targetInput=\"skyId\"\n >\n <option value=\"0\">\n {{ 'skyux_text_editor_url_modal_current_option_label' | skyLibResources }}\n </option>\n <option value=\"1\">\n {{ 'skyux_text_editor_url_modal_new_option_label' | skyLibResources }}\n </option>\n </select>\n </sky-input-box>\n </sky-tab>\n <sky-tab\n tabHeading=\"Email address\"\n >\n <div class=\"sky-form-group first-field\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"emailAddressInput.id\"\n >\n {{ 'skyux_text_editor_url_modal_email_label' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n type=\"text\"\n [(ngModel)]=\"emailAddress\"\n skyId\n #emailAddressInput=\"skyId\"\n />\n </sky-input-box>\n </div>\n <sky-input-box class=\"sky-form-group\">\n <label\n class=\"sky-control-label\"\n [for]=\"subjectInput.id\"\n >\n {{ 'skyux_text_editor_url_modal_subject_label' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n type=\"text\"\n [(ngModel)]=\"subject\"\n skyId\n #subjectInput=\"skyId\"\n />\n </sky-input-box>\n </sky-tab>\n </sky-tabset>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n type=\"submit\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!valid\"\n (click)=\"save()\"\n >\n {{ 'skyux_text_editor_url_modal_save_button_label' | skyLibResources }}\n </button>\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-link\"\n (click)=\"cancel()\"\n >\n {{ 'skyux_text_editor_url_modal_cancel_button_label' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit\n} from '@angular/core';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n SkyColorpickerOutput,\n SkyColorpickerMessage,\n SkyColorpickerMessageType\n} from '@skyux/colorpicker';\n\nimport {\n SkyModalCloseArgs,\n SkyModalService\n} from '@skyux/modals';\n\nimport {\n SkyDropdownMessage,\n SkyDropdownMessageType\n} from '@skyux/popovers';\n\nimport {\n STYLE_STATE_DEFAULTS\n} from '../defaults/style-state-defaults';\n\nimport {\n SkyTextEditorAdapterService\n} from '../services/text-editor-adapter.service';\n\nimport {\n SkyTextEditorFont\n} from '../types/font-state';\n\nimport {\n SkyTextEditorStyleState\n} from '../types/style-state';\n\nimport {\n SkyTextEditorToolbarActionType\n} from '../types/toolbar-action-type';\n\nimport {\n SkyTextEditorUrlModalComponent\n} from '../url-modal/text-editor-url-modal.component';\n\nimport {\n UrlTarget\n} from '../url-modal/text-editor-url-target';\n\nimport {\n SkyUrlModalContext\n} from '../url-modal/text-editor-url-modal-context';\n\nimport {\n SkyFormsUtility\n} from '../../shared/forms-utility';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-text-editor-toolbar',\n templateUrl: './text-editor-toolbar.component.html',\n styleUrls: ['./text-editor-toolbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkyTextEditorToolbarComponent implements OnInit {\n\n @Input()\n public editorFocusStream = new Subject();\n\n @Input()\n public editorId: string;\n\n @Input()\n public fontList: SkyTextEditorFont[];\n\n @Input()\n public fontSizeList: number[];\n\n @Input()\n public toolbarActions: SkyTextEditorToolbarActionType[];\n\n @Input()\n public get styleState(): SkyTextEditorStyleState {\n return this._styleState;\n }\n public set styleState(value: SkyTextEditorStyleState) {\n this._styleState = value;\n if (value.font !== this.styleStateFontName) {\n if (value.font === '\\\"Blackbaud Sans\\\", Arial, sans-serif') {\n this.styleStateFontName = this.getFontName('Blackbaud Sans');\n } else {\n this.styleStateFontName = this.getFontName(value.font);\n }\n }\n }\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 public backColorpickerStream = new Subject<SkyColorpickerMessage>();\n\n public colorpickerStream = new Subject<SkyColorpickerMessage>();\n\n public fontPickerStream = new Subject<SkyDropdownMessage>();\n\n public fontSizeStream = new Subject<SkyDropdownMessage>();\n\n public styleStateFontName: string;\n\n private _disabled: boolean = false;\n\n private _styleState = STYLE_STATE_DEFAULTS;\n\n constructor(\n private adapterService: SkyTextEditorAdapterService,\n private changeDetector: ChangeDetectorRef,\n private modalService: SkyModalService\n ) {}\n\n public ngOnInit(): void {\n this.editorFocusStream.subscribe(() => {\n this.styleState = {\n ...this._styleState,\n ...this.adapterService.getStyleState(this.editorId) as any\n };\n this.closeDropdowns();\n this.changeDetector.detectChanges();\n });\n }\n\n public execCommand(command: string, value: any = ''): void {\n this.adapterService.execCommand(this.editorId, {\n command: command,\n value: value\n });\n this.styleState = {\n ...this.styleState,\n ...this.adapterService.getStyleState(this.editorId)\n };\n }\n\n public toggleFontStyle(currentState: boolean, newState: boolean, command: string): void {\n if (currentState !== newState) {\n this.execCommand(command);\n }\n\n // Force sky-checkbox to show changes on user's initial click.\n this.changeDetector.detectChanges();\n }\n\n public link(): void {\n const priorSelection = this.adapterService.saveSelection(this.editorId);\n const currentLink = this.adapterService.getLink(this.editorId);\n const inputModal = this.modalService.open(SkyTextEditorUrlModalComponent, [{\n provide: SkyUrlModalContext,\n useValue: { urlResult: currentLink }\n }]);\n inputModal.closed.subscribe((result: SkyModalCloseArgs) => {\n if (result.reason === 'save' && priorSelection) {\n if (currentLink) {\n const anchor = this.adapterService.getSelectedAnchorTag(this.editorId);\n this.adapterService.selectElement(this.editorId, anchor);\n }\n\n this.execCommand('unlink');\n if (result.data.target === UrlTarget.None) {\n // Current window\n this.execCommand('createLink', result.data.url);\n } else {\n // New Window\n const sText = this.adapterService.getCurrentSelection(this.editorId);\n this.execCommand('insertHTML', '<a href=\"' + result.data.url + '\" rel=\"noopener noreferrer\" target=\"_blank\">' + sText + '</a>');\n }\n }\n });\n }\n\n public unlink(): void {\n let currentSelectionRange = this.adapterService.getCurrentSelection(this.editorId).getRangeAt(0);\n if (currentSelectionRange.toString().length <= 0) {\n const anchorTag = this.adapterService.getSelectedAnchorTag(this.editorId);\n this.adapterService.selectElement(this.editorId, anchorTag);\n }\n this.execCommand('unlink');\n }\n\n public changeFontSize(size: number): void {\n this.adapterService.setFontSize(this.editorId, size);\n this.styleState = {\n ...this.styleState,\n ...this.adapterService.getStyleState(this.editorId)\n };\n }\n\n public onColorpickerColorChanged(color: SkyColorpickerOutput, isBackground = false): void {\n this.execCommand(isBackground ? 'backColor' : 'foreColor', color.hex);\n }\n\n private closeDropdowns(): void {\n const message: SkyColorpickerMessage = { type: SkyColorpickerMessageType.Close };\n this.colorpickerStream.next(message);\n this.backColorpickerStream.next(message);\n this.fontPickerStream.next({ type: SkyDropdownMessageType.Close });\n this.fontSizeStream.next({ type: SkyDropdownMessageType.Close });\n }\n\n private getFontName(fontName: string): string {\n for (let i = 0; i < this.fontList.length; i++) {\n if (fontName.replace(/['\"]+/g, '') === this.fontList[i].name) {\n return this.fontList[i].name;\n }\n }\n }\n}\n","\n <sky-toolbar-item *ngFor=\"let action of toolbarActions\"\n class=\"sky-text-editor-toolbar-action\"\n [ngClass]=\"'sky-text-editor-toolbar-action-' + action\"\n >\n <ng-container\n [ngSwitch]=\"action\"\n >\n <ng-container *ngSwitchCase=\"'font-family'\">\n <sky-dropdown\n class=\"sky-text-editor-font-picker\"\n [disabled]=\"disabled\"\n [label]=\"'Font: ' + styleStateFontName\"\n [messageStream]=\"fontPickerStream\"\n >\n <sky-dropdown-button\n [ngStyle]=\"{\n 'font-family': styleState.font\n }\"\n >\n {{ styleStateFontName }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let fontModel of fontList\">\n <button\n type=\"button\"\n [ngStyle]=\"{\n 'font-family': fontModel.value\n }\"\n (click)=\"execCommand('fontname', fontModel.name)\"\n >\n {{ fontModel.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'font-size'\">\n <sky-dropdown\n class=\"sky-text-editor-font-size-picker\"\n [disabled]=\"disabled\"\n [label]=\"'Font size: ' + styleState.fontSize + 'px'\"\n [messageStream]=\"fontSizeStream\"\n >\n <sky-dropdown-button\n [ngStyle]=\"{\n 'font-family': styleState.fontSize\n }\"\n >\n {{ styleState.fontSize + 'px' }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let size of fontSizeList\">\n <button\n type=\"button\"\n (click)=\"changeFontSize(size)\"\n >\n {{ size + 'px' }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'font-style'\">\n <div\n class=\"sky-switch-icon-group sky-text-editor-font-style-picker\"\n >\n <sky-checkbox\n icon=\"bold\"\n label=\"Bold\"\n title=\"Bold\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.boldState\"\n (ngModelChange)=\"toggleFontStyle(styleState.boldState, $event, 'bold')\"\n >\n </sky-checkbox>\n <sky-checkbox\n icon=\"italic\"\n label=\"Italicized\"\n title=\"Italicized\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.italicState\"\n (ngModelChange)=\"toggleFontStyle(styleState.italicState, $event, 'italic')\"\n >\n </sky-checkbox>\n <sky-checkbox\n icon=\"underline\"\n label=\"Underline\"\n title=\"Underline\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.underlineState\"\n (ngModelChange)=\"toggleFontStyle(styleState.underlineState, $event, 'underline')\"\n >\n </sky-checkbox>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'color'\">\n <div class=\"sky-text-editor-colorpicker-group\">\n <div class=\"sky-text-editor-colorpicker-container\">\n <sky-colorpicker\n class=\"sky-text-editor-font-color-picker\"\n label=\"Font color\"\n [messageStream]=\"colorpickerStream\"\n [showResetButton]=\"false\"\n (selectedColorChanged)=\"onColorpickerColorChanged($event)\"\n #colorPicker\n >\n <input\n outputFormat=\"hex\"\n type=\"text\"\n [allowTransparency]=\"false\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.fontColor\"\n [skyColorpickerInput]=\"colorPicker\"\n />\n </sky-colorpicker>\n </div>\n <div class=\"sky-text-editor-colorpicker-container\">\n <sky-colorpicker\n class=\"sky-text-editor-background-color-picker\"\n label=\"Background color\"\n [messageStream]=\"backColorpickerStream\"\n [showResetButton]=\"false\"\n (selectedColorChanged)=\"onColorpickerColorChanged($event, true)\"\n #backColorPicker\n >\n <input\n outputFormat=\"rgba\"\n type=\"text\"\n [allowTransparency]=\"true\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.backColor\"\n [skyColorpickerInput]=\"backColorPicker\"\n />\n </sky-colorpicker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'list'\">\n <div\n class=\"sky-switch-icon-group\"\n >\n <button\n aria-label=\"Bulleted list\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Bulleted list\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('insertUnorderedList')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"list-ul\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"bullet-list-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Numbered list\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Numbered list\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('insertOrderedList')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"list-ol\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"number-list-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'alignment'\">\n <div\n class=\"sky-switch-icon-group\"\n >\n <button\n aria-label=\"Align left\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align left\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyLeft')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"align-left\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"align-left-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Align center\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align center\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyCenter')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"align-center\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"center-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Align right\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align right\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyRight')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"align-right\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"align-right-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'indentation'\">\n <div\n class=\"sky-switch-icon-group\"\n >\n <button\n aria-label=\"Outdent\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Outdent\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('outdent')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"outdent\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"outdent-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Indent\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Indent\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('indent')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"indent\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"indent-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'undo-redo'\">\n <div\n class=\"sky-switch-icon-group\"\n >\n <button\n aria-label=\"Undo\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Undo\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('undo')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"undo\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"undo-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Redo\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Redo\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('redo')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"repeat\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"redo-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'link'\">\n <div\n class=\"sky-switch-icon-group\"\n >\n <button\n aria-label=\"Link\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Link\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'icon-btn-active': styleState.linkState\n }\"\n (click)=\"link()\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"link\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"link-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Unlink\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Unlink\"\n [disabled]=\"!styleState.linkState || disabled\"\n (click)=\"unlink()\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"unlink\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"unlink-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n </ng-container>\n </sky-toolbar-item>\n","import {\n SkyTextEditorMenuType\n} from '../types/menu-type';\n\n/**\n * @internal\n */\nexport const MENU_DEFAULTS: SkyTextEditorMenuType[] = [\n 'edit',\n 'format'\n];\n","import {\n SkyTextEditorToolbarActionType\n} 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","/**\n * @internal\n */\nexport const FONT_SIZE_LIST_DEFAULTS: number[] = [6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 36, 48];\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n Input,\n OnDestroy,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR\n} from '@angular/forms';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n SkyCoreAdapterService\n} from '@skyux/core';\n\nimport {\n MENU_DEFAULTS\n} from './defaults/menu-defaults';\n\nimport {\n STYLE_STATE_DEFAULTS\n} from './defaults/style-state-defaults';\n\nimport {\n TOOLBAR_ACTION_DEFAULTS\n} from './defaults/toolbar-action-defaults';\n\nimport {\n SkyTextEditorAdapterService\n} from './services/text-editor-adapter.service';\n\nimport {\n SkyTextEditorService\n} from './services/text-editor.service';\n\nimport {\n SkyTextSanitizationService\n} from './services/text-sanitization.service';\n\nimport {\n FONT_LIST_DEFAULTS\n} from './defaults/font-list-defaults';\n\nimport {\n FONT_SIZE_LIST_DEFAULTS\n} from './defaults/font-size-list-defaults';\n\nimport {\n SkyTextEditorFont\n} from './types/font-state';\n\nimport {\n SkyTextEditorMenuType\n} from './types/menu-type';\n\nimport {\n SkyTextEditorStyleState\n} from './types/style-state';\n\nimport {\n SkyTextEditorMergeField\n} from './types/text-editor-merge-field';\n\nimport {\n SkyTextEditorToolbarActionType\n} from './types/toolbar-action-type';\n\nimport {\n SkyFormsUtility\n} from '../shared/forms-utility';\n\n/**\n * Auto-incrementing integer used to generate unique ids for radio components.\n */\nlet nextUniqueId = 0;\n\n/**\n * The text editor component lets users format and manipulate text.\n */\n@Component({\n selector: 'sky-text-editor',\n templateUrl: './text-editor.component.html',\n styleUrls: ['./text-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line: no-forward-ref\n useExisting: forwardRef(() => SkyTextEditorComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SkyTextEditorComponent implements AfterViewInit, ControlValueAccessor, OnDestroy {\n\n /**\n * Indicates whether to put focus on the editor after it renders.\n */\n @Input()\n public autofocus: boolean = false;\n\n /**\n * Indicates whether to disable the text editor.\n * @default false\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\n // Update focusableChildren inside the iframe.\n let focusableChildren: HTMLElement[];\n /* istanbul ignore else */\n if (this.iframeRef) {\n focusableChildren = this.coreAdapterService.getFocusableChildren(this.iframeRef.nativeElement.contentDocument.body, {\n ignoreVisibility: true,\n ignoreTabIndex: true\n });\n }\n\n if (this._disabled) {\n this.adapterService.disableEditor(this.id, focusableChildren, this.iframeRef.nativeElement);\n } else {\n this.adapterService.enableEditor(this.id, focusableChildren, this.iframeRef.nativeElement);\n }\n this.changeDetector.markForCheck();\n }\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public editorFocusStream = new Subject();\n\n // tslint:disable: max-line-length\n /**\n * Specifies the fonts to include in the font picker.\n * @default [{name: 'Blackbaud Sans', value: '\"Blackbaud Sans\", Arial, sans-serif'}, {name: 'Arial', value: 'Arial'}, {name: 'Arial Black', value: '\"Arial Black\"'}, {name: 'Courier New', value: '\"Courier New\"'}, {name: 'Georgia', value: 'Georgia, serif'}, {name: 'Tahoma', value: 'Tahoma, Geneva, sans-serif'}, {name: 'Times New Roman', value: '\"Times New Roman\"'}, {name: 'Trebuchet MS', value: '\"Trebuchet MS\", sans-serif'}, {name: 'Verdana', value: 'Verdana, Geneva, sans-serif'}]\n */\n // tslint:enable: max-line-length\n @Input()\n public fontList: SkyTextEditorFont[] = FONT_LIST_DEFAULTS;\n\n /**\n * Specifies the font sizes to include in the font size picker.\n * @default [6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 36, 48]\n */\n @Input()\n public fontSizeList: number[] = FONT_SIZE_LIST_DEFAULTS;\n\n /**\n * Specifies a unique ID attribute for the text editor.\n * By default, the component generates a random ID.\n */\n @Input()\n public id = `sky-text-editor-${++nextUniqueId}`;\n\n /**\n * Specifies the initial styles for all content, including background color, font size, and link state.\n */\n @Input()\n public set initialStyleState(state: SkyTextEditorStyleState) {\n // Do not update the state after initialization has taken place\n /* istanbul ignore else */\n if (!this.initialized) {\n this._initialStyleState = {\n ...STYLE_STATE_DEFAULTS,\n ...state\n };\n }\n }\n\n public get initialStyleState(): SkyTextEditorStyleState {\n return this._initialStyleState;\n }\n\n /**\n * Specifies the menus to include in the menu bar.\n * @default [ 'edit', 'format' ]\n */\n @Input()\n public menus: SkyTextEditorMenuType[] = MENU_DEFAULTS;\n\n /**\n * Specifies the merge fields to include in the merge field menu.\n */\n @Input()\n public mergeFields: SkyTextEditorMergeField[] = [];\n\n /**\n * Specifies placeholder text to display when the text entry area is empty.\n */\n @Input()\n public set placeholder(value: string) {\n /* istanbul ignore else */\n if (value !== this._placeholder) {\n this._placeholder = value;\n if (this.initialized) {\n this.adapterService.setPlaceholder(this.id, value);\n }\n }\n }\n\n public get placeholder(): string {\n return this._placeholder;\n }\n\n // tslint:disable: max-line-length\n /**\n * Specifies the actions to include in the toolbar and determines their order.\n * @default [ 'font-family', 'font-size', 'font-style', 'color', 'list', 'link ]\n */\n // tslint:enable: max-line-length\n @Input()\n public toolbarActions: SkyTextEditorToolbarActionType[] = TOOLBAR_ACTION_DEFAULTS;\n\n public set value(value: string) {\n // Set clear state to be an empty string\n let valueString: string = value;\n if (!value || value.trim() === '<p></p>' || value.trim() === '<br>') {\n valueString = '';\n }\n valueString = this.sanitizationService.sanitize(valueString).trim();\n\n if (this._value !== valueString) {\n this._value = valueString;\n\n // Autofocus isn't testable in Firefox and IE.\n /* istanbul ignore next */\n if (this.autofocus && !this.focusInitialized) {\n this.adapterService.focusEditor(this.id);\n this.focusInitialized = true;\n }\n this.onChange();\n }\n }\n\n public get value(): string {\n return this._value;\n }\n\n private focusInitialized: boolean = false;\n\n @ViewChild('iframe')\n private iframeRef: ElementRef;\n\n private initialized: boolean = false;\n\n private ngUnsubscribe = new Subject<void>();\n\n private _disabled: boolean = false;\n\n private _initialStyleState = Object.assign({}, STYLE_STATE_DEFAULTS);\n\n private _placeholder = '';\n\n private _value: string = '<p></p>';\n\n constructor (\n private changeDetector: ChangeDetectorRef,\n private coreAdapterService: SkyCoreAdapterService,\n private adapterService: SkyTextEditorAdapterService,\n private editorService: SkyTextEditorService,\n private sanitizationService: SkyTextSanitizationService\n ) {}\n\n public ngAfterViewInit(): void {\n this.initIframe();\n }\n\n public ngOnDestroy(): void {\n this.adapterService.removeObservers(this.editorService.editors[this.id]);\n this.editorService.removeEditor(this.id);\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public onIframeLoad(): void {\n // Remove editor if it already exists to cover situations where the text editor might have been moved in the DOM.\n /* istanbul ignore else */\n if (this.editorService.editors[this.id]) {\n this.editorService.removeEditor(this.id);\n this.initIframe();\n }\n }\n\n public writeValue(obj: string): void {\n this.value = obj;\n\n // Update HTML if necessary.\n const editorValue = this.adapterService.getEditorInnerHtml(this.id);\n if (this.initialized && editorValue !== this._value) {\n this.adapterService.setEditorInnerHtml(this.id, this._value);\n }\n }\n\n public registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public onChange(): void {\n this._onChange(this.value);\n }\n\n public updateValueAndStyle(): void {\n this.value = this.adapterService.getEditorInnerHtml(this.id);\n this._initialStyleState = {\n ...this._initialStyleState,\n ...this.adapterService.getStyleState(this.id) as any\n };\n }\n\n private initIframe(): void {\n this.adapterService.addEditor(\n this.id,\n this.iframeRef.nativeElement,\n this.initialStyleState,\n this.placeholder\n );\n\n this.editorService.selectionChangeListener(this.id)\n .pipe(\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe(() => {\n this.updateValueAndStyle();\n this.editorFocusStream.next();\n });\n\n this.editorService.clickListener(this.id)\n .pipe(\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe(() => {\n this.editorFocusStream.next();\n });\n\n this.editorService.commandChangeListener(this.id)\n .pipe(\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe(() => {\n this.updateValueAndStyle();\n });\n\n this.adapterService.setEditorInnerHtml(this.id, this._value);\n\n /* istanbul ignore next */\n if (this.autofocus) {\n this.adapterService.focusEditor(this.id);\n }\n\n this.initialized = true;\n }\n\n /* istanbul ignore next */\n public onTouch = () => {};\n\n /* istanbul ignore next */\n private _onChange = (_: string) => {};\n}\n","<div\n class=\"sky-text-editor\"\n>\n <sky-toolbar\n class=\"sky-text-editor-toolbar\"\n >\n <sky-toolbar-section\n aria-label=\"Text formatting\"\n class=\"menubar\"\n role=\"toolbar\"\n >\n <sky-text-editor-menubar\n [disabled]=\"disabled\"\n [editorFocusStream]=\"editorFocusStream\"\n [editorId]=\"id\"\n [menus]=\"menus\"\n [mergeFields]=\"mergeFields\"\n >\n </sky-text-editor-menubar>\n </sky-toolbar-section>\n <sky-toolbar-section\n aria-label=\"Text formatting\"\n class=\"toolbar\"\n role=\"toolbar\"\n >\n <sky-text-editor-toolbar\n [disabled]=\"disabled\"\n [editorFocusStream]=\"editorFocusStream\"\n [editorId]=\"id\"\n [fontList]=\"fontList\"\n [fontSizeList]=\"fontSizeList\"\n [toolbarActions]=\"toolbarActions\"\n [styleState]=\"initialStyleState\"\n >\n </sky-text-editor-toolbar>\n </sky-toolbar-section>\n </sky-toolbar>\n <iframe\n class=\"sky-text-editor-wrapper\"\n src=\"about:blank\"\n title=\"Text Editor\"\n [ngClass]=\"{\n 'sky-text-editor-wrapper-disabled': disabled\n }\"\n (load)=\"onIframeLoad()\"\n #iframe\n >\n </iframe>\n</div>\n","import {\n NgModule\n} from '@angular/core';\n\nimport {\n CommonModule\n} from '@angular/common';\n\nimport {\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\n\nimport {\n SkyColorpickerModule\n} from '@skyux/colorpicker';\n\nimport {\n SkyCoreAdapterModule,\n SkyIdModule\n} from '@skyux/core';\n\nimport {\n SkyCheckboxModule,\n SkyInputBoxModule\n} from '@skyux/forms';\n\nimport {\n SkyModalModule\n} from '@skyux/modals';\n\nimport {\n SkyI18nModule\n} from '@skyux/i18n';\n\nimport {\n SkyIconModule\n} from '@skyux/indicators';\n\nimport {\n SkyToolbarModule\n} from '@skyux/layout';\n\nimport {\n SkyDropdownModule\n} from '@skyux/popovers';\n\nimport {\n SkyTabsModule\n} from '@skyux/tabs';\n\nimport {\n SkyThemeModule\n} from '@skyux/theme';\n\nimport {\n SkyTextEditorResourcesModule\n} from '../../modules/shared/sky-text-editor-resources.module';\n\nimport {\n SkyTextEditorMenubarComponent\n} from './menubar/text-editor-menubar.component';\n\nimport {\n SkyTextEditorToolbarComponent\n} from './toolbar/text-editor-toolbar.component';\n\nimport {\n SkyTextEditorUrlModalComponent\n} from './url-modal/text-editor-url-modal.component';\n\nimport {\n SkyTextEditorComponent\n} from './text-editor.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyCoreAdapterModule,\n SkyTextEditorResourcesModule,\n SkyI18nModule,\n SkyIconModule,\n SkyIdModule,\n SkyInputBoxModule,\n SkyColorpickerModule,\n SkyCheckboxModule,\n SkyDropdownModule,\n SkyModalModule,\n SkyTabsModule,\n SkyThemeModule,\n SkyToolbarModule\n ],\n exports: [\n SkyTextEditorComponent,\n SkyTextEditorUrlModalComponent,\n SkyTextEditorToolbarComponent,\n SkyTextEditorMenubarComponent\n ],\n declarations: [\n SkyTextEditorComponent,\n SkyTextEditorUrlModalComponent,\n SkyTextEditorToolbarComponent,\n SkyTextEditorMenubarComponent\n ],\n entryComponents: [\n SkyTextEditorUrlModalComponent\n ]\n})\nexport class SkyTextEditorModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["createDOMPurify","Injectable","Component","Input","CommonModule","NgModule","getLibStringForLocale","SkyI18nModule","SKY_LIB_RESOURCES_PROVIDERS","Subject","takeUntil","forkJoin","take","SkyDropdownMessageType","ChangeDetectionStrategy","SkyValidation","SkyColorpickerMessageType","NG_VALUE_ACCESSOR","forwardRef","ViewEncapsulation","ViewChild","FormsModule","ReactiveFormsModule","SkyCoreAdapterModule","SkyIconModule","SkyIdModule","SkyInputBoxModule","SkyColorpickerModule","SkyCheckboxModule","SkyDropdownModule","SkyModalModule","SkyTabsModule","SkyThemeModule","SkyToolbarModule"],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/platform-browser";
4
- import * as i2 from "../text-editor/services/text-sanitization.service";
5
- export class SkyRichTextDisplayComponent {
6
- constructor(sanitizer, sanitizationService) {
7
- this.sanitizer = sanitizer;
8
- this.sanitizationService = sanitizationService;
9
- this.sanitizedText = '';
10
- this._richText = '';
11
- }
12
- /**
13
- * Specifies the rich text to display.
14
- */
15
- set richText(value) {
16
- const cleaned = this.sanitizationService.sanitize(value);
17
- /* istanbul ignore else */
18
- if (cleaned !== this._richText) {
19
- this._richText = cleaned;
20
- // Text has already been sanitized with DOMPurifier.
21
- // Tell Angular to bypass its own internal sanitization.
22
- this.sanitizedText = this.sanitizer.bypassSecurityTrustHtml(cleaned);
23
- }
24
- }
25
- }
26
- SkyRichTextDisplayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SkyRichTextDisplayComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.SkyTextSanitizationService }], target: i0.ɵɵFactoryTarget.Component });
27
- SkyRichTextDisplayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.12", type: SkyRichTextDisplayComponent, selector: "sky-rich-text-display", inputs: { richText: "richText" }, ngImport: i0, template: "<span\n class=\"sky-rich-text-display-text\"\n [innerHTML]=\"sanitizedText\"\n>\n</span>\n" });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SkyRichTextDisplayComponent, decorators: [{
29
- type: Component,
30
- args: [{
31
- selector: 'sky-rich-text-display',
32
- templateUrl: './rich-text-display.component.html'
33
- }]
34
- }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.SkyTextSanitizationService }]; }, propDecorators: { richText: [{
35
- type: Input
36
- }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGV4dC1lZGl0b3Ivc3JjL21vZHVsZXMvcmljaC10ZXh0LWRpc3BsYXkvcmljaC10ZXh0LWRpc3BsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGV4dC1lZGl0b3Ivc3JjL21vZHVsZXMvcmljaC10ZXh0LWRpc3BsYXkvcmljaC10ZXh0LWRpc3BsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ04sTUFBTSxlQUFlLENBQUM7Ozs7QUFldkIsTUFBTSxPQUFPLDJCQUEyQjtJQXNCdEMsWUFDVSxTQUF1QixFQUN2QixtQkFBK0M7UUFEL0MsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTRCO1FBTmxELGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBRTVCLGNBQVMsR0FBVyxFQUFFLENBQUM7SUFLM0IsQ0FBQztJQXZCTDs7T0FFRztJQUNILElBQ1csUUFBUSxDQUFDLEtBQWE7UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCwwQkFBMEI7UUFDMUIsSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztZQUV6QixvREFBb0Q7WUFDcEQsd0RBQXdEO1lBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN0RTtJQUNILENBQUM7O3lIQWhCVSwyQkFBMkI7NkdBQTNCLDJCQUEyQiwrRkNsQnhDLDhGQUtBOzRGRGFhLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxXQUFXLEVBQUUsb0NBQW9DO2lCQUNsRDs0SUFPWSxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgRG9tU2FuaXRpemVyLFxuICBTYWZlSHRtbFxufSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHtcbiAgU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2Vcbn0gZnJvbSAnLi4vdGV4dC1lZGl0b3Ivc2VydmljZXMvdGV4dC1zYW5pdGl6YXRpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1yaWNoLXRleHQtZGlzcGxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yaWNoLXRleHQtZGlzcGxheS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2t5UmljaFRleHREaXNwbGF5Q29tcG9uZW50IHtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSByaWNoIHRleHQgdG8gZGlzcGxheS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcmljaFRleHQodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IGNsZWFuZWQgPSB0aGlzLnNhbml0aXphdGlvblNlcnZpY2Uuc2FuaXRpemUodmFsdWUpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGNsZWFuZWQgIT09IHRoaXMuX3JpY2hUZXh0KSB7XG4gICAgICB0aGlzLl9yaWNoVGV4dCA9IGNsZWFuZWQ7XG5cbiAgICAgIC8vIFRleHQgaGFzIGFscmVhZHkgYmVlbiBzYW5pdGl6ZWQgd2l0aCBET01QdXJpZmllci5cbiAgICAgIC8vIFRlbGwgQW5ndWxhciB0byBieXBhc3MgaXRzIG93biBpbnRlcm5hbCBzYW5pdGl6YXRpb24uXG4gICAgICB0aGlzLnNhbml0aXplZFRleHQgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChjbGVhbmVkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2FuaXRpemVkVGV4dDogU2FmZUh0bWwgPSAnJztcblxuICBwcml2YXRlIF9yaWNoVGV4dDogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIHNhbml0aXphdGlvblNlcnZpY2U6IFNreVRleHRTYW5pdGl6YXRpb25TZXJ2aWNlXG4gICkgeyB9XG5cbn1cbiIsIjxzcGFuXG4gIGNsYXNzPVwic2t5LXJpY2gtdGV4dC1kaXNwbGF5LXRleHRcIlxuICBbaW5uZXJIVE1MXT1cInNhbml0aXplZFRleHRcIlxuPlxuPC9zcGFuPlxuIl19
@@ -1,26 +0,0 @@
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.12", ngImport: i0, type: SkyRichTextDisplayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- SkyRichTextDisplayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SkyRichTextDisplayModule, declarations: [SkyRichTextDisplayComponent], imports: [CommonModule], exports: [SkyRichTextDisplayComponent] });
9
- SkyRichTextDisplayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SkyRichTextDisplayModule, imports: [[
10
- CommonModule
11
- ]] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SkyRichTextDisplayModule, decorators: [{
13
- type: NgModule,
14
- args: [{
15
- imports: [
16
- CommonModule
17
- ],
18
- exports: [
19
- SkyRichTextDisplayComponent
20
- ],
21
- declarations: [
22
- SkyRichTextDisplayComponent
23
- ]
24
- }]
25
- }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LWRpc3BsYXkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGV4dC1lZGl0b3Ivc3JjL21vZHVsZXMvcmljaC10ZXh0LWRpc3BsYXkvcmljaC10ZXh0LWRpc3BsYXkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ2IsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQ0wsUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCwyQkFBMkIsRUFDNUIsTUFBTSwrQkFBK0IsQ0FBQzs7QUFhdkMsTUFBTSxPQUFPLHdCQUF3Qjs7c0hBQXhCLHdCQUF3Qjt1SEFBeEIsd0JBQXdCLGlCQUhqQywyQkFBMkIsYUFOM0IsWUFBWSxhQUdaLDJCQUEyQjt1SEFNbEIsd0JBQXdCLFlBVjFCO1lBQ1AsWUFBWTtTQUNiOzRGQVFVLHdCQUF3QjtrQkFYcEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsMkJBQTJCO3FCQUM1QjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osMkJBQTJCO3FCQUM1QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbW1vbk1vZHVsZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge1xuICBOZ01vZHVsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5UmljaFRleHREaXNwbGF5Q29tcG9uZW50XG59IGZyb20gJy4vcmljaC10ZXh0LWRpc3BsYXkuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2t5UmljaFRleHREaXNwbGF5Q29tcG9uZW50XG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNreVJpY2hUZXh0RGlzcGxheUNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNreVJpY2hUZXh0RGlzcGxheU1vZHVsZSB7IH1cbiJdfQ==
@@ -1,10 +0,0 @@
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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtdXRpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RleHQtZWRpdG9yL3NyYy9tb2R1bGVzL3NoYXJlZC9mb3Jtcy11dGlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFFQUFxRTtBQUNyRSwyREFBMkQ7QUFDM0QsV0FBVztBQUNYLE1BQU0sT0FBTyxlQUFlO0lBRTFCLG9FQUFvRTtJQUM3RCxNQUFNLENBQUMscUJBQXFCLENBQUMsS0FBVTtRQUM1QyxPQUFPLEtBQUssS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLEVBQUUsS0FBSyxPQUFPLENBQUM7SUFDdkQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTmVlZCB0byBhZGQgdGhlIGZvbGxvd2luZyB0byBjbGFzc2VzIHdoaWNoIGNvbnRhaW4gc3RhdGljIG1ldGhvZHMuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzY0MVxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBTa3lGb3Jtc1V0aWxpdHkge1xuXG4gIC8qKiBDb2VyY2VzIGEgZGF0YS1ib3VuZCB2YWx1ZSAodHlwaWNhbGx5IGEgc3RyaW5nKSB0byBhIGJvb2xlYW4uICovXG4gIHB1YmxpYyBzdGF0aWMgY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBgJHt2YWx1ZX1gICE9PSAnZmFsc2UnO1xuICB9XG59XG4iXX0=
@@ -1,41 +0,0 @@
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': { "skyux_text_editor_format_menu_action_bold_label": { "message": "Bold" }, "skyux_text_editor_format_menu_action_bold_key_shortcut": { "message": "Ctrl+B" }, "skyux_text_editor_format_menu_action_italic_label": { "message": "Italic" }, "skyux_text_editor_format_menu_action_italic_key_shortcut": { "message": "Ctrl+I" }, "skyux_text_editor_format_menu_action_underline_label": { "message": "Underline" }, "skyux_text_editor_format_menu_action_underline_key_shortcut": { "message": "Ctrl+U" }, "skyux_text_editor_format_menu_action_strikethrough_label": { "message": "Strikethrough" }, "skyux_text_editor_format_menu_action_clear_formatting_label": { "message": "Clear formatting" }, "skyux_text_editor_edit_menu_action_undo_label": { "message": "Undo" }, "skyux_text_editor_edit_menu_action_undo_key_shortcut": { "message": "Ctrl+Z" }, "skyux_text_editor_edit_menu_action_redo_label": { "message": "Redo" }, "skyux_text_editor_edit_menu_action_redo_key_shortcut": { "message": "Ctrl+Y" }, "skyux_text_editor_edit_menu_action_cut_label": { "message": "Cut" }, "skyux_text_editor_edit_menu_action_cut_key_shortcut": { "message": "Ctrl+X" }, "skyux_text_editor_edit_menu_action_copy_label": { "message": "Copy" }, "skyux_text_editor_edit_menu_action_copy_key_shortcut": { "message": "Ctrl+C" }, "skyux_text_editor_edit_menu_action_paste_label": { "message": "Paste" }, "skyux_text_editor_edit_menu_action_paste_key_shortcut": { "message": "Ctrl+V" }, "skyux_text_editor_edit_menu_action_select_all_label": { "message": "Select all" }, "skyux_text_editor_edit_menu_action_select_all_key_shortcut": { "message": "Ctrl+A" }, "skyux_text_editor_menubar_dropdown_button_edit_label": { "message": "Edit" }, "skyux_text_editor_menubar_dropdown_button_format_label": { "message": "Format" }, "skyux_text_editor_menubar_dropdown_button_insert_label": { "message": "Insert merge field" }, "skyux_text_editor_url_modal_header_label": { "message": "Create link" }, "skyux_text_editor_url_modal_url_label": { "message": "Enter a URL to link to:" }, "skyux_text_editor_url_modal_open_label": { "message": "Where should it open?" }, "skyux_text_editor_url_modal_current_option_label": { "message": "Current window" }, "skyux_text_editor_url_modal_new_option_label": { "message": "New window" }, "skyux_text_editor_url_modal_email_label": { "message": "Email address" }, "skyux_text_editor_url_modal_subject_label": { "message": "Subject line" }, "skyux_text_editor_url_modal_save_button_label": { "message": "Save" }, "skyux_text_editor_url_modal_cancel_button_label": { "message": "Cancel" } },
12
- };
13
- export class SkyTextEditorResourcesProvider {
14
- getString(localeInfo, name) {
15
- return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
16
- }
17
- }
18
- /**
19
- * Import into any component library module that needs to use resource strings.
20
- */
21
- export class SkyTextEditorResourcesModule {
22
- }
23
- SkyTextEditorResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SkyTextEditorResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
- SkyTextEditorResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SkyTextEditorResourcesModule, exports: [SkyI18nModule] });
25
- SkyTextEditorResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SkyTextEditorResourcesModule, providers: [{
26
- provide: SKY_LIB_RESOURCES_PROVIDERS,
27
- useClass: SkyTextEditorResourcesProvider,
28
- multi: true
29
- }], imports: [SkyI18nModule] });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: SkyTextEditorResourcesModule, decorators: [{
31
- type: NgModule,
32
- args: [{
33
- exports: [SkyI18nModule],
34
- providers: [{
35
- provide: SKY_LIB_RESOURCES_PROVIDERS,
36
- useClass: SkyTextEditorResourcesProvider,
37
- multi: true
38
- }]
39
- }]
40
- }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LXRleHQtZWRpdG9yLXJlc291cmNlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXh0LWVkaXRvci9zcmMvbW9kdWxlcy9zaGFyZWQvc2t5LXRleHQtZWRpdG9yLXJlc291cmNlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxxQkFBcUIsRUFFckIsYUFBYSxFQUdiLDJCQUEyQixFQUM1QixNQUFNLGFBQWEsQ0FBQzs7QUFFckIsTUFBTSxTQUFTLEdBQTBDO0lBQ3ZELE9BQU8sRUFBRSxFQUFDLGlEQUFpRCxFQUFDLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxFQUFDLHdEQUF3RCxFQUFDLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxFQUFDLG1EQUFtRCxFQUFDLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxFQUFDLDBEQUEwRCxFQUFDLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxFQUFDLHNEQUFzRCxFQUFDLEVBQUMsU0FBUyxFQUFDLFdBQVcsRUFBQyxFQUFDLDZEQUE2RCxFQUFDLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxFQUFDLDBEQUEwRCxFQUFDLEVBQUMsU0FBUyxFQUFDLGVBQWUsRUFBQyxFQUFDLDZEQUE2RCxFQUFDLEVBQUMsU0FBUyxFQUFDLGtCQUFrQixFQUFDLEVBQUMsK0NBQStDLEVBQUMsRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLEVBQUMsc0RBQXNELEVBQUMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLEVBQUMsK0NBQStDLEVBQUMsRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLEVBQUMsc0RBQXNELEVBQUMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLEVBQUMsOENBQThDLEVBQUMsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMscURBQXFELEVBQUMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLEVBQUMsK0NBQStDLEVBQUMsRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLEVBQUMsc0RBQXNELEVBQUMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLEVBQUMsZ0RBQWdELEVBQUMsRUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLEVBQUMsdURBQXVELEVBQUMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLEVBQUMscURBQXFELEVBQUMsRUFBQyxTQUFTLEVBQUMsWUFBWSxFQUFDLEVBQUMsNERBQTRELEVBQUMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLEVBQUMsc0RBQXNELEVBQUMsRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLEVBQUMsd0RBQXdELEVBQUMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLEVBQUMsd0RBQXdELEVBQUMsRUFBQyxTQUFTLEVBQUMsb0JBQW9CLEVBQUMsRUFBQywwQ0FBMEMsRUFBQyxFQUFDLFNBQVMsRUFBQyxhQUFhLEVBQUMsRUFBQyx1Q0FBdUMsRUFBQyxFQUFDLFNBQVMsRUFBQyx5QkFBeUIsRUFBQyxFQUFDLHdDQUF3QyxFQUFDLEVBQUMsU0FBUyxFQUFDLHVCQUF1QixFQUFDLEVBQUMsa0RBQWtELEVBQUMsRUFBQyxTQUFTLEVBQUMsZ0JBQWdCLEVBQUMsRUFBQyw4Q0FBOEMsRUFBQyxFQUFDLFNBQVMsRUFBQyxZQUFZLEVBQUMsRUFBQyx5Q0FBeUMsRUFBQyxFQUFDLFNBQVMsRUFBQyxlQUFlLEVBQUMsRUFBQywyQ0FBMkMsRUFBQyxFQUFDLFNBQVMsRUFBQyxjQUFjLEVBQUMsRUFBQywrQ0FBK0MsRUFBQyxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsRUFBQyxpREFBaUQsRUFBQyxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsRUFBQztDQUMxM0UsQ0FBQztBQUVGLE1BQU0sT0FBTyw4QkFBOEI7SUFDbEMsU0FBUyxDQUFDLFVBQTRCLEVBQUUsSUFBWTtRQUN6RCxPQUFPLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBU0gsTUFBTSxPQUFPLDRCQUE0Qjs7MEhBQTVCLDRCQUE0QjsySEFBNUIsNEJBQTRCLFlBUDdCLGFBQWE7MkhBT1osNEJBQTRCLGFBTjVCLENBQUM7WUFDVixPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLFFBQVEsRUFBRSw4QkFBOEI7WUFDeEMsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLFlBTFEsYUFBYTs0RkFPWiw0QkFBNEI7a0JBUnhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN4QixTQUFTLEVBQUUsQ0FBQzs0QkFDVixPQUFPLEVBQUUsMkJBQTJCOzRCQUNwQyxRQUFRLEVBQUUsOEJBQThCOzRCQUN4QyxLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDO2lCQUNIIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOT1RJQ0U6IERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIVxuICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSB3ZXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5XG4gKiB0aGUgJ25nIGdlbmVyYXRlIEBza3l1eC9pMThuOmxpYi1yZXNvdXJjZXMtbW9kdWxlIG1vZHVsZXMvc2hhcmVkL3NreS10ZXh0LWVkaXRvcicgc2NoZW1hdGljLlxuICogVG8gdXBkYXRlIHRoaXMgZmlsZSwgc2ltcGx5IHJlcnVuIHRoZSBjb21tYW5kLlxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBnZXRMaWJTdHJpbmdGb3JMb2NhbGUsXG4gIFNreUFwcExvY2FsZUluZm8sXG4gIFNreUkxOG5Nb2R1bGUsXG4gIFNreUxpYlJlc291cmNlcyxcbiAgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIsXG4gIFNLWV9MSUJfUkVTT1VSQ0VTX1BST1ZJREVSU1xufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmNvbnN0IFJFU09VUkNFUzogeyBbbG9jYWxlOiBzdHJpbmddOiBTa3lMaWJSZXNvdXJjZXMgfSA9IHtcbiAgJ0VOLVVTJzoge1wic2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX2JvbGRfbGFiZWxcIjp7XCJtZXNzYWdlXCI6XCJCb2xkXCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX2JvbGRfa2V5X3Nob3J0Y3V0XCI6e1wibWVzc2FnZVwiOlwiQ3RybCtCXCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX2l0YWxpY19sYWJlbFwiOntcIm1lc3NhZ2VcIjpcIkl0YWxpY1wifSxcInNreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl9pdGFsaWNfa2V5X3Nob3J0Y3V0XCI6e1wibWVzc2FnZVwiOlwiQ3RybCtJXCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX3VuZGVybGluZV9sYWJlbFwiOntcIm1lc3NhZ2VcIjpcIlVuZGVybGluZVwifSxcInNreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl91bmRlcmxpbmVfa2V5X3Nob3J0Y3V0XCI6e1wibWVzc2FnZVwiOlwiQ3RybCtVXCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX3N0cmlrZXRocm91Z2hfbGFiZWxcIjp7XCJtZXNzYWdlXCI6XCJTdHJpa2V0aHJvdWdoXCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX2NsZWFyX2Zvcm1hdHRpbmdfbGFiZWxcIjp7XCJtZXNzYWdlXCI6XCJDbGVhciBmb3JtYXR0aW5nXCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl91bmRvX2xhYmVsXCI6e1wibWVzc2FnZVwiOlwiVW5kb1wifSxcInNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fdW5kb19rZXlfc2hvcnRjdXRcIjp7XCJtZXNzYWdlXCI6XCJDdHJsK1pcIn0sXCJza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3JlZG9fbGFiZWxcIjp7XCJtZXNzYWdlXCI6XCJSZWRvXCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9yZWRvX2tleV9zaG9ydGN1dFwiOntcIm1lc3NhZ2VcIjpcIkN0cmwrWVwifSxcInNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fY3V0X2xhYmVsXCI6e1wibWVzc2FnZVwiOlwiQ3V0XCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9jdXRfa2V5X3Nob3J0Y3V0XCI6e1wibWVzc2FnZVwiOlwiQ3RybCtYXCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9jb3B5X2xhYmVsXCI6e1wibWVzc2FnZVwiOlwiQ29weVwifSxcInNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fY29weV9rZXlfc2hvcnRjdXRcIjp7XCJtZXNzYWdlXCI6XCJDdHJsK0NcIn0sXCJza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3Bhc3RlX2xhYmVsXCI6e1wibWVzc2FnZVwiOlwiUGFzdGVcIn0sXCJza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3Bhc3RlX2tleV9zaG9ydGN1dFwiOntcIm1lc3NhZ2VcIjpcIkN0cmwrVlwifSxcInNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fc2VsZWN0X2FsbF9sYWJlbFwiOntcIm1lc3NhZ2VcIjpcIlNlbGVjdCBhbGxcIn0sXCJza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3NlbGVjdF9hbGxfa2V5X3Nob3J0Y3V0XCI6e1wibWVzc2FnZVwiOlwiQ3RybCtBXCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfbWVudWJhcl9kcm9wZG93bl9idXR0b25fZWRpdF9sYWJlbFwiOntcIm1lc3NhZ2VcIjpcIkVkaXRcIn0sXCJza3l1eF90ZXh0X2VkaXRvcl9tZW51YmFyX2Ryb3Bkb3duX2J1dHRvbl9mb3JtYXRfbGFiZWxcIjp7XCJtZXNzYWdlXCI6XCJGb3JtYXRcIn0sXCJza3l1eF90ZXh0X2VkaXRvcl9tZW51YmFyX2Ryb3Bkb3duX2J1dHRvbl9pbnNlcnRfbGFiZWxcIjp7XCJtZXNzYWdlXCI6XCJJbnNlcnQgbWVyZ2UgZmllbGRcIn0sXCJza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfaGVhZGVyX2xhYmVsXCI6e1wibWVzc2FnZVwiOlwiQ3JlYXRlIGxpbmtcIn0sXCJza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfdXJsX2xhYmVsXCI6e1wibWVzc2FnZVwiOlwiRW50ZXIgYSBVUkwgdG8gbGluayB0bzpcIn0sXCJza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfb3Blbl9sYWJlbFwiOntcIm1lc3NhZ2VcIjpcIldoZXJlIHNob3VsZCBpdCBvcGVuP1wifSxcInNreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9jdXJyZW50X29wdGlvbl9sYWJlbFwiOntcIm1lc3NhZ2VcIjpcIkN1cnJlbnQgd2luZG93XCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX25ld19vcHRpb25fbGFiZWxcIjp7XCJtZXNzYWdlXCI6XCJOZXcgd2luZG93XCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX2VtYWlsX2xhYmVsXCI6e1wibWVzc2FnZVwiOlwiRW1haWwgYWRkcmVzc1wifSxcInNreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9zdWJqZWN0X2xhYmVsXCI6e1wibWVzc2FnZVwiOlwiU3ViamVjdCBsaW5lXCJ9LFwic2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX3NhdmVfYnV0dG9uX2xhYmVsXCI6e1wibWVzc2FnZVwiOlwiU2F2ZVwifSxcInNreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9jYW5jZWxfYnV0dG9uX2xhYmVsXCI6e1wibWVzc2FnZVwiOlwiQ2FuY2VsXCJ9fSxcbn07XG5cbmV4cG9ydCBjbGFzcyBTa3lUZXh0RWRpdG9yUmVzb3VyY2VzUHJvdmlkZXIgaW1wbGVtZW50cyBTa3lMaWJSZXNvdXJjZXNQcm92aWRlciB7XG4gIHB1YmxpYyBnZXRTdHJpbmcobG9jYWxlSW5mbzogU2t5QXBwTG9jYWxlSW5mbywgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0TGliU3RyaW5nRm9yTG9jYWxlKFJFU09VUkNFUywgbG9jYWxlSW5mby5sb2NhbGUsIG5hbWUpO1xuICB9XG59XG5cbi8qKlxuICogSW1wb3J0IGludG8gYW55IGNvbXBvbmVudCBsaWJyYXJ5IG1vZHVsZSB0aGF0IG5lZWRzIHRvIHVzZSByZXNvdXJjZSBzdHJpbmdzLlxuICovXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbU2t5STE4bk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gICAgdXNlQ2xhc3M6IFNreVRleHRFZGl0b3JSZXNvdXJjZXNQcm92aWRlcixcbiAgICBtdWx0aTogdHJ1ZVxuICB9XVxufSlcbmV4cG9ydCBjbGFzcyBTa3lUZXh0RWRpdG9yUmVzb3VyY2VzTW9kdWxlIHsgfVxuIl19
@@ -1,42 +0,0 @@
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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udC1saXN0LWRlZmF1bHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGV4dC1lZGl0b3Ivc3JjL21vZHVsZXMvdGV4dC1lZGl0b3IvZGVmYXVsdHMvZm9udC1saXN0LWRlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXdCO0lBQ3JEO1FBQ0UsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixLQUFLLEVBQUUscUNBQXFDO0tBQzdDO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsT0FBTztRQUNiLEtBQUssRUFBRSxPQUFPO0tBQ2Y7SUFDRDtRQUNFLElBQUksRUFBRSxhQUFhO1FBQ25CLEtBQUssRUFBRSxlQUFlO0tBQ3ZCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsYUFBYTtRQUNuQixLQUFLLEVBQUUsZUFBZTtLQUN2QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsZ0JBQWdCO0tBQ3hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUssRUFBRSw0QkFBNEI7S0FDcEM7SUFDRDtRQUNFLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsS0FBSyxFQUFFLG1CQUFtQjtLQUMzQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGNBQWM7UUFDcEIsS0FBSyxFQUFFLDRCQUE0QjtLQUNwQztJQUNEO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsNkJBQTZCO0tBQ3JDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNreVRleHRFZGl0b3JGb250XG59IGZyb20gJy4uL3R5cGVzL2ZvbnQtc3RhdGUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgRk9OVF9MSVNUX0RFRkFVTFRTOiBTa3lUZXh0RWRpdG9yRm9udFtdID0gW1xuICB7XG4gICAgbmFtZTogJ0JsYWNrYmF1ZCBTYW5zJyxcbiAgICB2YWx1ZTogJ1wiQmxhY2tiYXVkIFNhbnNcIiwgQXJpYWwsIHNhbnMtc2VyaWYnXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnQXJpYWwnLFxuICAgIHZhbHVlOiAnQXJpYWwnXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnQXJpYWwgQmxhY2snLFxuICAgIHZhbHVlOiAnXCJBcmlhbCBCbGFja1wiJ1xuICB9LFxuICB7XG4gICAgbmFtZTogJ0NvdXJpZXIgTmV3JyxcbiAgICB2YWx1ZTogJ1wiQ291cmllciBOZXdcIidcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdHZW9yZ2lhJyxcbiAgICB2YWx1ZTogJ0dlb3JnaWEsIHNlcmlmJ1xuICB9LFxuICB7XG4gICAgbmFtZTogJ1RhaG9tYScsXG4gICAgdmFsdWU6ICdUYWhvbWEsIEdlbmV2YSwgc2Fucy1zZXJpZidcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdUaW1lcyBOZXcgUm9tYW4nLFxuICAgIHZhbHVlOiAnXCJUaW1lcyBOZXcgUm9tYW5cIidcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdUcmVidWNoZXQgTVMnLFxuICAgIHZhbHVlOiAnXCJUcmVidWNoZXQgTVNcIiwgc2Fucy1zZXJpZidcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdWZXJkYW5hJyxcbiAgICB2YWx1ZTogJ1ZlcmRhbmEsIEdlbmV2YSwgc2Fucy1zZXJpZidcbiAgfVxuXTtcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * @internal
3
- */
4
- export const FONT_SIZE_LIST_DEFAULTS = [6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 36, 48];
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udC1zaXplLWxpc3QtZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXh0LWVkaXRvci9zcmMvbW9kdWxlcy90ZXh0LWVkaXRvci9kZWZhdWx0cy9mb250LXNpemUtbGlzdC1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBGT05UX1NJWkVfTElTVF9ERUZBVUxUUzogbnVtYmVyW10gPSBbNiwgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE4LCAyMCwgMjIsIDI0LCAyNiwgMjgsIDM2LCA0OF07XG4iXX0=