@skyux/text-editor 4.0.0-beta.2 → 5.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/bundles/skyux-text-editor.umd.js +730 -562
- package/bundles/skyux-text-editor.umd.js.map +1 -1
- package/documentation.json +1961 -0
- package/esm2015/modules/rich-text-display/rich-text-display.component.js +17 -20
- package/esm2015/modules/rich-text-display/rich-text-display.module.js +22 -17
- package/esm2015/modules/shared/forms-utility.js +1 -1
- package/esm2015/modules/shared/sky-text-editor-resources.module.js +41 -0
- package/esm2015/modules/text-editor/defaults/font-list-defaults.js +1 -1
- package/esm2015/modules/text-editor/defaults/font-size-list-defaults.js +1 -1
- package/esm2015/modules/text-editor/defaults/menu-defaults.js +1 -1
- package/esm2015/modules/text-editor/defaults/style-state-defaults.js +1 -1
- package/esm2015/modules/text-editor/defaults/toolbar-action-defaults.js +1 -1
- package/esm2015/modules/text-editor/menubar/text-editor-menubar.component.js +32 -36
- package/esm2015/modules/text-editor/services/text-editor-adapter.service.js +17 -22
- package/esm2015/modules/text-editor/services/text-editor-selection.service.js +12 -13
- package/esm2015/modules/text-editor/services/text-editor.service.js +11 -11
- package/esm2015/modules/text-editor/services/text-sanitization.service.js +12 -14
- package/esm2015/modules/text-editor/text-editor.component.js +63 -68
- package/esm2015/modules/text-editor/text-editor.module.js +68 -27
- package/esm2015/modules/text-editor/toolbar/text-editor-toolbar.component.js +40 -42
- package/esm2015/modules/text-editor/types/editor-command.js +2 -1
- package/esm2015/modules/text-editor/types/editor-setting.js +2 -1
- package/esm2015/modules/text-editor/types/font-state.js +2 -1
- package/esm2015/modules/text-editor/types/menu-type.js +2 -1
- package/esm2015/modules/text-editor/types/style-state.js +2 -1
- package/esm2015/modules/text-editor/types/text-editor-merge-field.js +2 -1
- package/esm2015/modules/text-editor/types/toolbar-action-type.js +2 -1
- package/esm2015/modules/text-editor/url-modal/text-editor-url-modal-context.js +1 -1
- package/esm2015/modules/text-editor/url-modal/text-editor-url-modal-result.js +2 -1
- package/esm2015/modules/text-editor/url-modal/text-editor-url-modal.component.js +21 -18
- package/esm2015/modules/text-editor/url-modal/text-editor-url-target.js +1 -1
- package/esm2015/public-api.js +15 -0
- package/esm2015/skyux-text-editor.js +2 -14
- package/fesm2015/skyux-text-editor.js +359 -312
- package/fesm2015/skyux-text-editor.js.map +1 -1
- package/modules/rich-text-display/rich-text-display.component.d.ts +3 -0
- package/modules/rich-text-display/rich-text-display.module.d.ts +6 -0
- package/modules/shared/sky-text-editor-resources.module.d.ts +14 -0
- package/modules/text-editor/menubar/text-editor-menubar.component.d.ts +3 -0
- package/modules/text-editor/services/text-editor-adapter.service.d.ts +3 -0
- package/modules/text-editor/services/text-editor-selection.service.d.ts +3 -0
- package/modules/text-editor/services/text-editor.service.d.ts +3 -0
- package/modules/text-editor/services/text-sanitization.service.d.ts +3 -0
- package/modules/text-editor/text-editor.component.d.ts +3 -0
- package/modules/text-editor/text-editor.module.d.ts +21 -0
- package/modules/text-editor/toolbar/text-editor-toolbar.component.d.ts +3 -0
- package/modules/text-editor/url-modal/text-editor-url-modal.component.d.ts +3 -0
- package/package.json +20 -36
- package/public-api.d.ts +12 -0
- package/skyux-text-editor.d.ts +2 -13
- package/CHANGELOG.md +0 -13
- package/bundles/skyux-text-editor.umd.min.js +0 -2
- package/bundles/skyux-text-editor.umd.min.js.map +0 -1
- package/esm2015/plugin-resources/text-editor-resources-provider.js +0 -16
- package/esm2015/plugin-resources/text-editor-resources.module.js +0 -19
- package/esm2015/public_api.js +0 -3
- package/esm5/modules/rich-text-display/rich-text-display.component.js +0 -44
- package/esm5/modules/rich-text-display/rich-text-display.module.js +0 -24
- package/esm5/modules/shared/forms-utility.js +0 -14
- package/esm5/modules/text-editor/defaults/font-list-defaults.js +0 -42
- package/esm5/modules/text-editor/defaults/font-size-list-defaults.js +0 -5
- package/esm5/modules/text-editor/defaults/menu-defaults.js +0 -8
- package/esm5/modules/text-editor/defaults/style-state-defaults.js +0 -15
- package/esm5/modules/text-editor/defaults/toolbar-action-defaults.js +0 -12
- package/esm5/modules/text-editor/menubar/text-editor-menubar.component.js +0 -199
- package/esm5/modules/text-editor/services/text-editor-adapter.service.js +0 -470
- package/esm5/modules/text-editor/services/text-editor-selection.service.js +0 -77
- package/esm5/modules/text-editor/services/text-editor.service.js +0 -49
- package/esm5/modules/text-editor/services/text-sanitization.service.js +0 -41
- package/esm5/modules/text-editor/text-editor.component.js +0 -287
- package/esm5/modules/text-editor/text-editor.module.js +0 -63
- package/esm5/modules/text-editor/toolbar/text-editor-toolbar.component.js +0 -178
- package/esm5/modules/text-editor/types/editor-command.js +0 -1
- package/esm5/modules/text-editor/types/editor-setting.js +0 -1
- package/esm5/modules/text-editor/types/font-state.js +0 -1
- package/esm5/modules/text-editor/types/menu-type.js +0 -1
- package/esm5/modules/text-editor/types/style-state.js +0 -1
- package/esm5/modules/text-editor/types/text-editor-merge-field.js +0 -1
- package/esm5/modules/text-editor/types/toolbar-action-type.js +0 -1
- package/esm5/modules/text-editor/url-modal/text-editor-url-modal-context.js +0 -10
- package/esm5/modules/text-editor/url-modal/text-editor-url-modal-result.js +0 -1
- package/esm5/modules/text-editor/url-modal/text-editor-url-modal.component.js +0 -120
- package/esm5/modules/text-editor/url-modal/text-editor-url-target.js +0 -9
- package/esm5/plugin-resources/text-editor-resources-provider.js +0 -17
- package/esm5/plugin-resources/text-editor-resources.module.js +0 -22
- package/esm5/public_api.js +0 -3
- package/esm5/skyux-text-editor.js +0 -17
- package/fesm5/skyux-text-editor.js +0 -1620
- package/fesm5/skyux-text-editor.js.map +0 -1
- package/plugin-resources/text-editor-resources-provider.d.ts +0 -5
- package/plugin-resources/text-editor-resources.module.d.ts +0 -2
- package/public_api.d.ts +0 -7
- package/skyux-text-editor.metadata.json +0 -1
- package/src/assets/img/default-anatomy.png +0 -0
- package/src/assets/img/default-option-menu-toolbar-items.png +0 -0
- package/src/assets/img/default-use-when.png +0 -0
- package/src/assets/img/modern-anatomy.png +0 -0
- package/src/assets/img/modern-option-menu-toolbar-items.png +0 -0
- package/src/assets/img/modern-use-when.png +0 -0
- package/src/assets/locales/resources_en_US.json +0 -130
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-text-editor.js","sources":["ng://@skyux/text-editor/modules/text-editor/services/text-sanitization.service.ts","ng://@skyux/text-editor/modules/rich-text-display/rich-text-display.component.ts","ng://@skyux/text-editor/modules/rich-text-display/rich-text-display.module.ts","ng://@skyux/text-editor/plugin-resources/text-editor-resources-provider.ts","ng://@skyux/text-editor/plugin-resources/text-editor-resources.module.ts","ng://@skyux/text-editor/modules/text-editor/defaults/font-list-defaults.ts","ng://@skyux/text-editor/modules/text-editor/defaults/style-state-defaults.ts","ng://@skyux/text-editor/modules/text-editor/url-modal/text-editor-url-target.ts","ng://@skyux/text-editor/modules/text-editor/services/text-editor.service.ts","ng://@skyux/text-editor/modules/text-editor/services/text-editor-selection.service.ts","ng://@skyux/text-editor/modules/text-editor/services/text-editor-adapter.service.ts","ng://@skyux/text-editor/modules/shared/forms-utility.ts","ng://@skyux/text-editor/modules/text-editor/menubar/text-editor-menubar.component.ts","ng://@skyux/text-editor/modules/text-editor/url-modal/text-editor-url-modal-context.ts","ng://@skyux/text-editor/modules/text-editor/url-modal/text-editor-url-modal.component.ts","ng://@skyux/text-editor/modules/text-editor/toolbar/text-editor-toolbar.component.ts","ng://@skyux/text-editor/modules/text-editor/defaults/menu-defaults.ts","ng://@skyux/text-editor/modules/text-editor/defaults/toolbar-action-defaults.ts","ng://@skyux/text-editor/modules/text-editor/defaults/font-size-list-defaults.ts","ng://@skyux/text-editor/modules/text-editor/text-editor.component.ts","ng://@skyux/text-editor/modules/text-editor/text-editor.module.ts","ng://@skyux/text-editor/skyux-text-editor.ts"],"sourcesContent":["import {\n Injectable\n} from '@angular/core';\n\n// TODO: figure out how to get the following `import` to work with docs-tools library.\n// import DOMPurify from 'dompurify';\nconst createDOMPurify = require('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 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","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","\nimport {\n Injectable\n} from '@angular/core';\n\nimport {\n getStringForLocale,\n SkyAppLocaleInfo,\n SkyLibResourcesProvider\n} from '@skyux/i18n';\n\n@Injectable()\nexport class SkyTextEditorResourcesProvider implements SkyLibResourcesProvider {\n private resources: any = {\"EN-US\":{\"skyux_text_editor_format_menu_action_bold_label\":\"Bold\",\"skyux_text_editor_format_menu_action_bold_key_shortcut\":\"Ctrl+B\",\"skyux_text_editor_format_menu_action_italic_label\":\"Italic\",\"skyux_text_editor_format_menu_action_italic_key_shortcut\":\"Ctrl+I\",\"skyux_text_editor_format_menu_action_underline_label\":\"Underline\",\"skyux_text_editor_format_menu_action_underline_key_shortcut\":\"Ctrl+U\",\"skyux_text_editor_format_menu_action_strikethrough_label\":\"Strikethrough\",\"skyux_text_editor_format_menu_action_clear_formatting_label\":\"Clear formatting\",\"skyux_text_editor_edit_menu_action_undo_label\":\"Undo\",\"skyux_text_editor_edit_menu_action_undo_key_shortcut\":\"Ctrl+Z\",\"skyux_text_editor_edit_menu_action_redo_label\":\"Redo\",\"skyux_text_editor_edit_menu_action_redo_key_shortcut\":\"Ctrl+Y\",\"skyux_text_editor_edit_menu_action_cut_label\":\"Cut\",\"skyux_text_editor_edit_menu_action_cut_key_shortcut\":\"Ctrl+X\",\"skyux_text_editor_edit_menu_action_copy_label\":\"Copy\",\"skyux_text_editor_edit_menu_action_copy_key_shortcut\":\"Ctrl+C\",\"skyux_text_editor_edit_menu_action_paste_label\":\"Paste\",\"skyux_text_editor_edit_menu_action_paste_key_shortcut\":\"Ctrl+V\",\"skyux_text_editor_edit_menu_action_select_all_label\":\"Select all\",\"skyux_text_editor_edit_menu_action_select_all_key_shortcut\":\"Ctrl+A\",\"skyux_text_editor_menubar_dropdown_button_edit_label\":\"Edit\",\"skyux_text_editor_menubar_dropdown_button_format_label\":\"Format\",\"skyux_text_editor_menubar_dropdown_button_insert_label\":\"Insert merge field\",\"skyux_text_editor_url_modal_header_label\":\"Create link\",\"skyux_text_editor_url_modal_url_label\":\"Enter a URL to link to:\",\"skyux_text_editor_url_modal_open_label\":\"Where should it open?\",\"skyux_text_editor_url_modal_current_option_label\":\"Current window\",\"skyux_text_editor_url_modal_new_option_label\":\"New window\",\"skyux_text_editor_url_modal_email_label\":\"Email address\",\"skyux_text_editor_url_modal_subject_label\":\"Subject line\",\"skyux_text_editor_url_modal_save_button_label\":\"Save\",\"skyux_text_editor_url_modal_cancel_button_label\":\"Cancel\"}};\n\n public getString(localeInfo: SkyAppLocaleInfo, name: string): string {\n return getStringForLocale(this.resources, localeInfo.locale, name);\n }\n}\n","import {\n NgModule\n} from '@angular/core';\n\nimport {\n SKY_LIB_RESOURCES_PROVIDERS\n} from '@skyux/i18n';\n\nimport {\n SkyTextEditorResourcesProvider\n} from './text-editor-resources-provider';\n\n@NgModule({\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyTextEditorResourcesProvider,\n multi: true\n }\n ]\n})\nexport class SkyTextEditorResourcesModule {}\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\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 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\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 return selectedNode &&\n (\n element.contains(selectedNode) ||\n (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 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 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 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 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 if (id in this.editors) {\n const documentEl = this.getIframeDocumentEl(id);\n\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 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 if (editorContent.innerHTML !== value) {\n editorContent.innerHTML = value;\n }\n }\n\n public focusEditor(id: string): void {\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 const childElements = parentElement ? Array.from(parentElement.querySelectorAll('a')) : [];\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 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 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 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 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(/ /, String.fromCharCode(160))\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/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 focusableChildren.forEach(aFocusableChild => {\n aFocusableChild.tabIndex = disabled ? -1 : 0;\n });\n this.getIframeDocumentEl(id).body.setAttribute('contenteditable', disabled ? 'false' : 'true');\n }\n\n}\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","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 if (currentSelection.rangeCount > 0 && currentSelection.getRangeAt(0).toString().length <= 0) {\n this.execCommand('selectAll');\n }\n this.execCommand('removeFormat');\n }\n\n}\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: 'skyux-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 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 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","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","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 if (this._disabled) {\n this.adapterService.disableEditor(this.id, this.focusableChildren, this.iframeRef.nativeElement);\n } else {\n this.adapterService.enableEditor(this.id, this.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 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 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 focusableChildren: HTMLElement[];\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.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.focusableChildren = this.coreAdapterService.getFocusableChildren(this.iframeRef.nativeElement, {\n ignoreVisibility: true\n });\n\n this.initialized = true;\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 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 /* istanbul ignore next */\n public onTouch = () => {};\n\n /* istanbul ignore next */\n private _onChange = (_: string) => {};\n}\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 '../../plugin-resources/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\nexport {SkyRichTextDisplayComponent as ɵa} from './modules/rich-text-display/rich-text-display.component';\nexport {SkyTextEditorMenubarComponent as ɵl} from './modules/text-editor/menubar/text-editor-menubar.component';\nexport {SkyTextEditorAdapterService as ɵf} from './modules/text-editor/services/text-editor-adapter.service';\nexport {SkyTextEditorSelectionService as ɵg} from './modules/text-editor/services/text-editor-selection.service';\nexport {SkyTextEditorService as ɵh} from './modules/text-editor/services/text-editor.service';\nexport {SkyTextSanitizationService as ɵb} from './modules/text-editor/services/text-sanitization.service';\nexport {SkyTextEditorComponent as ɵe} from './modules/text-editor/text-editor.component';\nexport {SkyTextEditorToolbarComponent as ɵk} from './modules/text-editor/toolbar/text-editor-toolbar.component';\nexport {SkyUrlModalContext as ɵj} from './modules/text-editor/url-modal/text-editor-url-modal-context';\nexport {SkyTextEditorUrlModalComponent as ɵi} from './modules/text-editor/url-modal/text-editor-url-modal.component';\nexport {SkyTextEditorResourcesProvider as ɵd} from './plugin-resources/text-editor-resources-provider';\nexport {SkyTextEditorResourcesModule as ɵc} from './plugin-resources/text-editor-resources.module';"],"names":["createDOMPurify"],"mappings":"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"}
|
package/public_api.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export * from './modules/rich-text-display/rich-text-display.module';
|
|
2
|
-
export * from './modules/text-editor/types/font-state';
|
|
3
|
-
export * from './modules/text-editor/types/menu-type';
|
|
4
|
-
export * from './modules/text-editor/types/style-state';
|
|
5
|
-
export * from './modules/text-editor/types/text-editor-merge-field';
|
|
6
|
-
export * from './modules/text-editor/types/toolbar-action-type';
|
|
7
|
-
export * from './modules/text-editor/text-editor.module';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"SkyRichTextDisplayModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵa"}],"declarations":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"SkyTextEditorFont":{"__symbolic":"interface"},"SkyTextEditorMenuType":{"__symbolic":"interface"},"SkyTextEditorStyleState":{"__symbolic":"interface"},"SkyTextEditorMergeField":{"__symbolic":"interface"},"SkyTextEditorToolbarActionType":{"__symbolic":"interface"},"SkyTextEditorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":75,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":77,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":78,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":79,"character":4},{"__symbolic":"reference","module":"@skyux/core","name":"SkyCoreAdapterModule","line":80,"character":4},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","module":"@skyux/i18n","name":"SkyI18nModule","line":82,"character":4},{"__symbolic":"reference","module":"@skyux/indicators","name":"SkyIconModule","line":83,"character":4},{"__symbolic":"reference","module":"@skyux/core","name":"SkyIdModule","line":84,"character":4},{"__symbolic":"reference","module":"@skyux/forms","name":"SkyInputBoxModule","line":85,"character":4},{"__symbolic":"reference","module":"@skyux/colorpicker","name":"SkyColorpickerModule","line":86,"character":4},{"__symbolic":"reference","module":"@skyux/forms","name":"SkyCheckboxModule","line":87,"character":4},{"__symbolic":"reference","module":"@skyux/popovers","name":"SkyDropdownModule","line":88,"character":4},{"__symbolic":"reference","module":"@skyux/modals","name":"SkyModalModule","line":89,"character":4},{"__symbolic":"reference","module":"@skyux/tabs","name":"SkyTabsModule","line":90,"character":4},{"__symbolic":"reference","module":"@skyux/theme","name":"SkyThemeModule","line":91,"character":4},{"__symbolic":"reference","module":"@skyux/layout","name":"SkyToolbarModule","line":92,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"ɵl"}],"declarations":[{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"ɵl"}],"entryComponents":[{"__symbolic":"reference","name":"ɵi"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"sky-rich-text-display","template":"<span\n class=\"sky-rich-text-display-text\"\n [innerHTML]=\"sanitizedText\"\n>\n</span>\n"}]}],"members":{"richText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":40,"character":23},{"__symbolic":"reference","name":"ɵb"}]}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"sanitize":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"providers":[{"provide":{"__symbolic":"reference","module":"@skyux/i18n","name":"SKY_LIB_RESOURCES_PROVIDERS","line":15,"character":15},"useClass":{"__symbolic":"reference","name":"ɵd"},"multi":true}]}]}],"members":{}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"getString":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":94,"character":1},"arguments":[{"selector":"sky-text-editor","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":100,"character":15},"useExisting":{"__symbolic":"reference","name":"ɵe"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":106,"character":19},"member":"OnPush"},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":107,"character":17},"member":"None"},"template":"<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 #iframe\n >\n </iframe>\n</div>\n","styles":[".sky-text-editor .sky-text-editor-wrapper{display:flex;flex-wrap:wrap;background-color:#fff;width:100%;height:300px;padding:1rem;font-size:1.2rem;border:1px solid silver;overflow-y:auto;outline:0}.sky-text-editor .sky-text-editor-wrapper.sky-text-editor-wrapper-disabled{background-color:#ededee}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-section{padding:10px 10px 0}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-left:1px solid #cdcfd2!important;border-right:1px solid #cdcfd2!important}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 10px 0}.sky-text-editor .sky-text-editor-toolbar .sky-dropdown-button{border:none}.sky-text-editor .sky-text-editor-toolbar sky-text-editor-menubar,.sky-text-editor .sky-text-editor-toolbar sky-text-editor-toolbar{display:flex;flex-wrap:wrap}.sky-theme-modern .sky-text-editor .sky-text-editor-wrapper{border:1px solid #d2d2d2}.sky-theme-modern .sky-text-editor .sky-text-editor-wrapper.sky-text-editor-wrapper-disabled{background-color:#ececed}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar{padding:10px 10px 0}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-section{padding:10px!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-top:1px solid #d2d2d2!important;border-left:1px solid #d2d2d2!important;border-right:1px solid #d2d2d2!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 0 0!important}"]}]}],"members":{"autofocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":114,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":121,"character":3}}]}],"fontList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":147,"character":3}}]}],"fontSizeList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":154,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":161,"character":3}}]}],"initialStyleState":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":167,"character":4}}]}],"menus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":186,"character":3}}]}],"mergeFields":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":192,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":198,"character":3}}]}],"toolbarActions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":218,"character":3}}]}],"iframeRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":250,"character":3},"arguments":["iframe"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":266,"character":28},{"__symbolic":"reference","module":"@skyux/core","name":"SkyCoreAdapterService","line":267,"character":32},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵb"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"onChange":[{"__symbolic":"method"}],"updateValueAndStyle":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":47,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","module":"@skyux/core","name":"SkyAppWindowRef","line":59,"character":27}]}],"addEditor":[{"__symbolic":"method"}],"disableEditor":[{"__symbolic":"method"}],"enableEditor":[{"__symbolic":"method"}],"execCommand":[{"__symbolic":"method"}],"getCurrentSelection":[{"__symbolic":"method"}],"getMergeFieldDataURI":[{"__symbolic":"method"}],"getStyleState":[{"__symbolic":"method"}],"getEditorInnerHtml":[{"__symbolic":"method"}],"setEditorInnerHtml":[{"__symbolic":"method"}],"focusEditor":[{"__symbolic":"method"}],"getLink":[{"__symbolic":"method"}],"getSelectedAnchorTag":[{"__symbolic":"method"}],"saveSelection":[{"__symbolic":"method"}],"selectElement":[{"__symbolic":"method"}],"setPlaceholder":[{"__symbolic":"method"}],"setFontSize":[{"__symbolic":"method"}],"removeObservers":[{"__symbolic":"method"}],"getContentWindowEl":[{"__symbolic":"method"}],"getChildSelectedAnchorTags":[{"__symbolic":"method"}],"getIframeDocumentEl":[{"__symbolic":"method"}],"getFontSize":[{"__symbolic":"method"}],"createObservers":[{"__symbolic":"method"}],"getPasteOverride":[{"__symbolic":"method"}],"getCurrentSelectionParentElement":[{"__symbolic":"method"}],"getColor":[{"__symbolic":"method"}],"hasLink":[{"__symbolic":"method"}],"getParent":[{"__symbolic":"method"}],"editorSelected":[{"__symbolic":"method"}],"insertHtmlInIE11":[{"__symbolic":"method"}],"cleanUpBlankStyleTags":[{"__symbolic":"method"}],"replaceHtmlCodes":[{"__symbolic":"method"}],"setEditorDisabled":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"isElementSelected":[{"__symbolic":"method"}],"getCurrentSelection":[{"__symbolic":"method"}],"getCurrentSelectionParentElement":[{"__symbolic":"method"}],"getCurrentSelectionRange":[{"__symbolic":"method"}],"selectElement":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"clickListener":[{"__symbolic":"method"}],"commandChangeListener":[{"__symbolic":"method"}],"removeEditor":[{"__symbolic":"method"}],"selectionChangeListener":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":30,"character":1},"arguments":[{"selector":"skyux-text-editor-url-modal","template":"<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","styles":[".sky-text-editor-url-modal-first-field{margin-top:15px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@skyux/modals","name":"SkyModalInstance","line":76,"character":36},{"__symbolic":"reference","name":"ɵj"}]}],"activeTabChanged":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"getEmailUrl":[{"__symbolic":"method"}],"isValid":[{"__symbolic":"method"}]}},"ɵj":{"__symbolic":"class","members":{}},"ɵk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":67,"character":1},"arguments":[{"selector":"sky-text-editor-toolbar","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":71,"character":19},"member":"OnPush"},"template":"\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","styles":[".sky-text-editor-toolbar-action .sky-toolbar-item{margin-right:15px}.sky-text-editor-toolbar-action .sky-text-editor-font-picker ::ng-deep .sky-dropdown-button-content-container{width:140px;height:20px;text-align:left}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group{display:flex}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{position:relative;top:3px;margin:0 10px 0 0}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child{margin-right:0}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn{margin-left:0;margin-right:0;border-radius:0;border-right:none}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:first-of-type{border-top-left-radius:3px;border-bottom-left-radius:3px}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border-top-right-radius:3px;border-bottom-right-radius:3px;border-right:1px solid #cdcfd2}:host-context(.sky-theme-modern) .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{top:-2px;margin:0}:host-context(.sky-theme-modern) .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child ::ng-deep sky-colorpicker .sky-colorpicker-button{margin-right:0}:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn{margin:inherit;border-radius:6px}:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn:first-of-type,:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn:last-of-type{border-radius:6px}:host-context(.sky-theme-modern) .sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border:none}.sky-theme-modern .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{top:-2px;margin:0}.sky-theme-modern .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child ::ng-deep sky-colorpicker .sky-colorpicker-button{margin-right:0}.sky-theme-modern .sky-switch-icon-group .sky-btn{margin:inherit;border-radius:6px}.sky-theme-modern .sky-switch-icon-group .sky-btn:first-of-type,.sky-theme-modern .sky-switch-icon-group .sky-btn:last-of-type{border-radius:6px}.sky-theme-modern .sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border:none}"]}]}],"members":{"editorFocusStream":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"editorId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"fontList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":81,"character":3}}]}],"fontSizeList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"toolbarActions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3}}]}],"styleState":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":134,"character":28},{"__symbolic":"reference","module":"@skyux/modals","name":"SkyModalService","line":135,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}],"execCommand":[{"__symbolic":"method"}],"toggleFontStyle":[{"__symbolic":"method"}],"link":[{"__symbolic":"method"}],"unlink":[{"__symbolic":"method"}],"changeFontSize":[{"__symbolic":"method"}],"onColorpickerColorChanged":[{"__symbolic":"method"}],"closeDropdowns":[{"__symbolic":"method"}],"getFontName":[{"__symbolic":"method"}]}},"ɵl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":47,"character":1},"arguments":[{"selector":"sky-text-editor-menubar","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":51,"character":19},"member":"OnPush"},"template":"\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","styles":[".sky-text-editor-dropdown-item-divider{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:0 0;border-bottom:1px solid rgba(0,0,0,.1);cursor:default;filter:none}.sky-text-editor-menu-key-shortcut{float:right;margin-left:15px}"]}]}],"members":{"editorFocusStream":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"editorId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}}]}],"menus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"mergeFields":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":106,"character":28},{"__symbolic":"reference","module":"@skyux/i18n","name":"SkyLibResourcesService","line":107,"character":23}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"execCommand":[{"__symbolic":"method"}],"insertMergeField":[{"__symbolic":"method"}],"closeDropdowns":[{"__symbolic":"method"}],"clearFormat":[{"__symbolic":"method"}]}}},"origins":{"SkyRichTextDisplayModule":"./modules/rich-text-display/rich-text-display.module","SkyTextEditorFont":"./modules/text-editor/types/font-state","SkyTextEditorMenuType":"./modules/text-editor/types/menu-type","SkyTextEditorStyleState":"./modules/text-editor/types/style-state","SkyTextEditorMergeField":"./modules/text-editor/types/text-editor-merge-field","SkyTextEditorToolbarActionType":"./modules/text-editor/types/toolbar-action-type","SkyTextEditorModule":"./modules/text-editor/text-editor.module","ɵa":"./modules/rich-text-display/rich-text-display.component","ɵb":"./modules/text-editor/services/text-sanitization.service","ɵc":"./plugin-resources/text-editor-resources.module","ɵd":"./plugin-resources/text-editor-resources-provider","ɵe":"./modules/text-editor/text-editor.component","ɵf":"./modules/text-editor/services/text-editor-adapter.service","ɵg":"./modules/text-editor/services/text-editor-selection.service","ɵh":"./modules/text-editor/services/text-editor.service","ɵi":"./modules/text-editor/url-modal/text-editor-url-modal.component","ɵj":"./modules/text-editor/url-modal/text-editor-url-modal-context","ɵk":"./modules/text-editor/toolbar/text-editor-toolbar.component","ɵl":"./modules/text-editor/menubar/text-editor-menubar.component"},"importAs":"@skyux/text-editor"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"skyux_text_editor_format_menu_action_bold_label": {
|
|
3
|
-
"_description": "Text for the 'Bold' action in the format menu",
|
|
4
|
-
"message": "Bold"
|
|
5
|
-
},
|
|
6
|
-
"skyux_text_editor_format_menu_action_bold_key_shortcut": {
|
|
7
|
-
"_description": "Text for the 'Bold' key shortcut in the format menu",
|
|
8
|
-
"message": "Ctrl+B"
|
|
9
|
-
},
|
|
10
|
-
"skyux_text_editor_format_menu_action_italic_label": {
|
|
11
|
-
"_description": "Text for the 'Italic' action in the format menu",
|
|
12
|
-
"message": "Italic"
|
|
13
|
-
},
|
|
14
|
-
"skyux_text_editor_format_menu_action_italic_key_shortcut": {
|
|
15
|
-
"_description": "Text for the 'Italic' key shortcut in the format menu",
|
|
16
|
-
"message": "Ctrl+I"
|
|
17
|
-
},
|
|
18
|
-
"skyux_text_editor_format_menu_action_underline_label": {
|
|
19
|
-
"_description": "Text for the 'Underline' action in the format menu",
|
|
20
|
-
"message": "Underline"
|
|
21
|
-
},
|
|
22
|
-
"skyux_text_editor_format_menu_action_underline_key_shortcut": {
|
|
23
|
-
"_description": "Text for the 'Underline' key shortcut in the format menu",
|
|
24
|
-
"message": "Ctrl+U"
|
|
25
|
-
},
|
|
26
|
-
"skyux_text_editor_format_menu_action_strikethrough_label": {
|
|
27
|
-
"_description": "Text for the 'Strikethrough' action in the format menu",
|
|
28
|
-
"message": "Strikethrough"
|
|
29
|
-
},
|
|
30
|
-
"skyux_text_editor_format_menu_action_clear_formatting_label": {
|
|
31
|
-
"_description": "Text for the 'Clear formatting' action in the format menu",
|
|
32
|
-
"message": "Clear formatting"
|
|
33
|
-
},
|
|
34
|
-
"skyux_text_editor_edit_menu_action_undo_label": {
|
|
35
|
-
"_description": "Text for the 'Undo' action in the edit menu",
|
|
36
|
-
"message": "Undo"
|
|
37
|
-
},
|
|
38
|
-
"skyux_text_editor_edit_menu_action_undo_key_shortcut": {
|
|
39
|
-
"_description": "Text for the 'Undo' key shortcut in the edit menu",
|
|
40
|
-
"message": "Ctrl+Z"
|
|
41
|
-
},
|
|
42
|
-
"skyux_text_editor_edit_menu_action_redo_label": {
|
|
43
|
-
"_description": "Text for the 'Redo' action in the edit menu",
|
|
44
|
-
"message": "Redo"
|
|
45
|
-
},
|
|
46
|
-
"skyux_text_editor_edit_menu_action_redo_key_shortcut": {
|
|
47
|
-
"_description": "Text for the 'Redo' key shortcut in the edit menu",
|
|
48
|
-
"message": "Ctrl+Y"
|
|
49
|
-
},
|
|
50
|
-
"skyux_text_editor_edit_menu_action_cut_label": {
|
|
51
|
-
"_description": "Text for the 'Cut' action in the edit menu",
|
|
52
|
-
"message": "Cut"
|
|
53
|
-
},
|
|
54
|
-
"skyux_text_editor_edit_menu_action_cut_key_shortcut": {
|
|
55
|
-
"_description": "Text for the 'Cut' key shortcut in the edit menu",
|
|
56
|
-
"message": "Ctrl+X"
|
|
57
|
-
},
|
|
58
|
-
"skyux_text_editor_edit_menu_action_copy_label": {
|
|
59
|
-
"_description": "Text for the 'Copy' action in the edit menu",
|
|
60
|
-
"message": "Copy"
|
|
61
|
-
},
|
|
62
|
-
"skyux_text_editor_edit_menu_action_copy_key_shortcut": {
|
|
63
|
-
"_description": "Text for the 'Copy' key shortcut in the edit menu",
|
|
64
|
-
"message": "Ctrl+C"
|
|
65
|
-
},
|
|
66
|
-
"skyux_text_editor_edit_menu_action_paste_label": {
|
|
67
|
-
"_description": "Text for the 'Paste' action in the edit menu",
|
|
68
|
-
"message": "Paste"
|
|
69
|
-
},
|
|
70
|
-
"skyux_text_editor_edit_menu_action_paste_key_shortcut": {
|
|
71
|
-
"_description": "Text for the 'Paste' key shortcut in the edit menu",
|
|
72
|
-
"message": "Ctrl+V"
|
|
73
|
-
},
|
|
74
|
-
"skyux_text_editor_edit_menu_action_select_all_label": {
|
|
75
|
-
"_description": "Text for the 'Select all' action in the edit menu",
|
|
76
|
-
"message": "Select all"
|
|
77
|
-
},
|
|
78
|
-
"skyux_text_editor_edit_menu_action_select_all_key_shortcut": {
|
|
79
|
-
"_description": "Text for the 'Select all' key shortcut in the edit menu",
|
|
80
|
-
"message": "Ctrl+A"
|
|
81
|
-
},
|
|
82
|
-
"skyux_text_editor_menubar_dropdown_button_edit_label": {
|
|
83
|
-
"_description": "Text for the 'Edit' dropdown button in the menubar",
|
|
84
|
-
"message": "Edit"
|
|
85
|
-
},
|
|
86
|
-
"skyux_text_editor_menubar_dropdown_button_format_label": {
|
|
87
|
-
"_description": "Text for the 'Format' dropdown button in the menubar",
|
|
88
|
-
"message": "Format"
|
|
89
|
-
},
|
|
90
|
-
"skyux_text_editor_menubar_dropdown_button_insert_label": {
|
|
91
|
-
"_description": "Text for the 'Insert merge field' dropdown button in the menubar",
|
|
92
|
-
"message": "Insert merge field"
|
|
93
|
-
},
|
|
94
|
-
"skyux_text_editor_url_modal_header_label": {
|
|
95
|
-
"_description": "Text for the 'Create link' header of the url modal",
|
|
96
|
-
"message": "Create link"
|
|
97
|
-
},
|
|
98
|
-
"skyux_text_editor_url_modal_url_label": {
|
|
99
|
-
"_description": "Text for the 'Enter a URL to link to:' label in the url modal",
|
|
100
|
-
"message": "Enter a URL to link to:"
|
|
101
|
-
},
|
|
102
|
-
"skyux_text_editor_url_modal_open_label": {
|
|
103
|
-
"_description": "Text for the 'Where should it open?' label in the url modal",
|
|
104
|
-
"message": "Where should it open?"
|
|
105
|
-
},
|
|
106
|
-
"skyux_text_editor_url_modal_current_option_label": {
|
|
107
|
-
"_description": "Text for the 'Current window' option label in the url modal",
|
|
108
|
-
"message": "Current window"
|
|
109
|
-
},
|
|
110
|
-
"skyux_text_editor_url_modal_new_option_label": {
|
|
111
|
-
"_description": "Text for the 'New window' option label in the url modal",
|
|
112
|
-
"message": "New window"
|
|
113
|
-
},
|
|
114
|
-
"skyux_text_editor_url_modal_email_label": {
|
|
115
|
-
"_description": "Text for the 'Email address' label in the url modal",
|
|
116
|
-
"message": "Email address"
|
|
117
|
-
},
|
|
118
|
-
"skyux_text_editor_url_modal_subject_label": {
|
|
119
|
-
"_description": "Text for the 'Subject line' label in the url modal",
|
|
120
|
-
"message": "Subject line"
|
|
121
|
-
},
|
|
122
|
-
"skyux_text_editor_url_modal_save_button_label": {
|
|
123
|
-
"_description": "Text for the 'Save' button in the url modal",
|
|
124
|
-
"message": "Save"
|
|
125
|
-
},
|
|
126
|
-
"skyux_text_editor_url_modal_cancel_button_label": {
|
|
127
|
-
"_description": "Text for the 'Cancel' button in the url modal",
|
|
128
|
-
"message": "Cancel"
|
|
129
|
-
}
|
|
130
|
-
}
|