@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.
Files changed (101) hide show
  1. package/LICENSE +21 -0
  2. package/bundles/skyux-text-editor.umd.js +730 -562
  3. package/bundles/skyux-text-editor.umd.js.map +1 -1
  4. package/documentation.json +1961 -0
  5. package/esm2015/modules/rich-text-display/rich-text-display.component.js +17 -20
  6. package/esm2015/modules/rich-text-display/rich-text-display.module.js +22 -17
  7. package/esm2015/modules/shared/forms-utility.js +1 -1
  8. package/esm2015/modules/shared/sky-text-editor-resources.module.js +41 -0
  9. package/esm2015/modules/text-editor/defaults/font-list-defaults.js +1 -1
  10. package/esm2015/modules/text-editor/defaults/font-size-list-defaults.js +1 -1
  11. package/esm2015/modules/text-editor/defaults/menu-defaults.js +1 -1
  12. package/esm2015/modules/text-editor/defaults/style-state-defaults.js +1 -1
  13. package/esm2015/modules/text-editor/defaults/toolbar-action-defaults.js +1 -1
  14. package/esm2015/modules/text-editor/menubar/text-editor-menubar.component.js +32 -36
  15. package/esm2015/modules/text-editor/services/text-editor-adapter.service.js +17 -22
  16. package/esm2015/modules/text-editor/services/text-editor-selection.service.js +12 -13
  17. package/esm2015/modules/text-editor/services/text-editor.service.js +11 -11
  18. package/esm2015/modules/text-editor/services/text-sanitization.service.js +12 -14
  19. package/esm2015/modules/text-editor/text-editor.component.js +63 -68
  20. package/esm2015/modules/text-editor/text-editor.module.js +68 -27
  21. package/esm2015/modules/text-editor/toolbar/text-editor-toolbar.component.js +40 -42
  22. package/esm2015/modules/text-editor/types/editor-command.js +2 -1
  23. package/esm2015/modules/text-editor/types/editor-setting.js +2 -1
  24. package/esm2015/modules/text-editor/types/font-state.js +2 -1
  25. package/esm2015/modules/text-editor/types/menu-type.js +2 -1
  26. package/esm2015/modules/text-editor/types/style-state.js +2 -1
  27. package/esm2015/modules/text-editor/types/text-editor-merge-field.js +2 -1
  28. package/esm2015/modules/text-editor/types/toolbar-action-type.js +2 -1
  29. package/esm2015/modules/text-editor/url-modal/text-editor-url-modal-context.js +1 -1
  30. package/esm2015/modules/text-editor/url-modal/text-editor-url-modal-result.js +2 -1
  31. package/esm2015/modules/text-editor/url-modal/text-editor-url-modal.component.js +21 -18
  32. package/esm2015/modules/text-editor/url-modal/text-editor-url-target.js +1 -1
  33. package/esm2015/public-api.js +15 -0
  34. package/esm2015/skyux-text-editor.js +2 -14
  35. package/fesm2015/skyux-text-editor.js +359 -312
  36. package/fesm2015/skyux-text-editor.js.map +1 -1
  37. package/modules/rich-text-display/rich-text-display.component.d.ts +3 -0
  38. package/modules/rich-text-display/rich-text-display.module.d.ts +6 -0
  39. package/modules/shared/sky-text-editor-resources.module.d.ts +14 -0
  40. package/modules/text-editor/menubar/text-editor-menubar.component.d.ts +3 -0
  41. package/modules/text-editor/services/text-editor-adapter.service.d.ts +3 -0
  42. package/modules/text-editor/services/text-editor-selection.service.d.ts +3 -0
  43. package/modules/text-editor/services/text-editor.service.d.ts +3 -0
  44. package/modules/text-editor/services/text-sanitization.service.d.ts +3 -0
  45. package/modules/text-editor/text-editor.component.d.ts +3 -0
  46. package/modules/text-editor/text-editor.module.d.ts +21 -0
  47. package/modules/text-editor/toolbar/text-editor-toolbar.component.d.ts +3 -0
  48. package/modules/text-editor/url-modal/text-editor-url-modal.component.d.ts +3 -0
  49. package/package.json +20 -36
  50. package/public-api.d.ts +12 -0
  51. package/skyux-text-editor.d.ts +2 -13
  52. package/CHANGELOG.md +0 -13
  53. package/bundles/skyux-text-editor.umd.min.js +0 -2
  54. package/bundles/skyux-text-editor.umd.min.js.map +0 -1
  55. package/esm2015/plugin-resources/text-editor-resources-provider.js +0 -16
  56. package/esm2015/plugin-resources/text-editor-resources.module.js +0 -19
  57. package/esm2015/public_api.js +0 -3
  58. package/esm5/modules/rich-text-display/rich-text-display.component.js +0 -44
  59. package/esm5/modules/rich-text-display/rich-text-display.module.js +0 -24
  60. package/esm5/modules/shared/forms-utility.js +0 -14
  61. package/esm5/modules/text-editor/defaults/font-list-defaults.js +0 -42
  62. package/esm5/modules/text-editor/defaults/font-size-list-defaults.js +0 -5
  63. package/esm5/modules/text-editor/defaults/menu-defaults.js +0 -8
  64. package/esm5/modules/text-editor/defaults/style-state-defaults.js +0 -15
  65. package/esm5/modules/text-editor/defaults/toolbar-action-defaults.js +0 -12
  66. package/esm5/modules/text-editor/menubar/text-editor-menubar.component.js +0 -199
  67. package/esm5/modules/text-editor/services/text-editor-adapter.service.js +0 -470
  68. package/esm5/modules/text-editor/services/text-editor-selection.service.js +0 -77
  69. package/esm5/modules/text-editor/services/text-editor.service.js +0 -49
  70. package/esm5/modules/text-editor/services/text-sanitization.service.js +0 -41
  71. package/esm5/modules/text-editor/text-editor.component.js +0 -287
  72. package/esm5/modules/text-editor/text-editor.module.js +0 -63
  73. package/esm5/modules/text-editor/toolbar/text-editor-toolbar.component.js +0 -178
  74. package/esm5/modules/text-editor/types/editor-command.js +0 -1
  75. package/esm5/modules/text-editor/types/editor-setting.js +0 -1
  76. package/esm5/modules/text-editor/types/font-state.js +0 -1
  77. package/esm5/modules/text-editor/types/menu-type.js +0 -1
  78. package/esm5/modules/text-editor/types/style-state.js +0 -1
  79. package/esm5/modules/text-editor/types/text-editor-merge-field.js +0 -1
  80. package/esm5/modules/text-editor/types/toolbar-action-type.js +0 -1
  81. package/esm5/modules/text-editor/url-modal/text-editor-url-modal-context.js +0 -10
  82. package/esm5/modules/text-editor/url-modal/text-editor-url-modal-result.js +0 -1
  83. package/esm5/modules/text-editor/url-modal/text-editor-url-modal.component.js +0 -120
  84. package/esm5/modules/text-editor/url-modal/text-editor-url-target.js +0 -9
  85. package/esm5/plugin-resources/text-editor-resources-provider.js +0 -17
  86. package/esm5/plugin-resources/text-editor-resources.module.js +0 -22
  87. package/esm5/public_api.js +0 -3
  88. package/esm5/skyux-text-editor.js +0 -17
  89. package/fesm5/skyux-text-editor.js +0 -1620
  90. package/fesm5/skyux-text-editor.js.map +0 -1
  91. package/plugin-resources/text-editor-resources-provider.d.ts +0 -5
  92. package/plugin-resources/text-editor-resources.module.d.ts +0 -2
  93. package/public_api.d.ts +0 -7
  94. package/skyux-text-editor.metadata.json +0 -1
  95. package/src/assets/img/default-anatomy.png +0 -0
  96. package/src/assets/img/default-option-menu-toolbar-items.png +0 -0
  97. package/src/assets/img/default-use-when.png +0 -0
  98. package/src/assets/img/modern-anatomy.png +0 -0
  99. package/src/assets/img/modern-option-menu-toolbar-items.png +0 -0
  100. package/src/assets/img/modern-use-when.png +0 -0
  101. package/src/assets/locales/resources_en_US.json +0 -130
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-text-editor.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","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"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","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(/&nbsp;/, String.fromCharCode(160))\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&amp;/g, '&');\n }\n\n private setEditorDisabled(id: string, focusableChildren: HTMLElement[], textEditorNativeElement: any, disabled: boolean): void {\n textEditorNativeElement.style.pointerEvents = disabled ? 'none' : 'auto';\n textEditorNativeElement.setAttribute('aria-disabled', disabled ? 'true' : 'false');\n 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"],"names":["createDOMPurify","Injectable","DomSanitizer","Input","Component","NgModule","CommonModule","getStringForLocale","SKY_LIB_RESOURCES_PROVIDERS","Subject","SkyAppWindowRef","takeUntil","forkJoin","take","SkyDropdownMessageType","ChangeDetectorRef","SkyLibResourcesService","ChangeDetectionStrategy","SkyValidation","SkyModalInstance","SkyColorpickerMessageType","SkyModalService","SkyCoreAdapterService","ViewChild","NG_VALUE_ACCESSOR","forwardRef","ViewEncapsulation","FormsModule","ReactiveFormsModule","SkyCoreAdapterModule","SkyI18nModule","SkyIconModule","SkyIdModule","SkyInputBoxModule","SkyColorpickerModule","SkyCheckboxModule","SkyDropdownModule","SkyModalModule","SkyTabsModule","SkyThemeModule","SkyToolbarModule"],"mappings":";;;;;;;;IAAA;IACA;AACA;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;IACnC,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;IACzC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IACpF,QAAQ,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;AACF;IACO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAChC,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,IAAI,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IAC3C,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;AACD;IACO,IAAI,QAAQ,GAAG,WAAW;IACjC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;IACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,SAAS;IACT,QAAQ,OAAO,CAAC,CAAC;IACjB,MAAK;IACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,EAAC;AACD;IACO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;IACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,SAAS;IACT,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;AACD;IACO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IAC1D,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACjI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACnI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACtJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;AACD;IACO,SAAS,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE;IAC/C,IAAI,OAAO,UAAU,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE;IACzE,CAAC;AACD;IACO,SAAS,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE;IACvD,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;AACD;IACO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;IAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;IAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;IACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,KAAK,CAAC,CAAC;IACP,CAAC;AACD;IACO,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;IAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrH,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7J,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;IACtE,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE;IACtB,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;IACtE,QAAQ,OAAO,CAAC,EAAE,IAAI;IACtB,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzK,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;IACzB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;IAC9C,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxE,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;IACjE,gBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IACjE,gBAAgB;IAChB,oBAAoB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;IAChI,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IAC1G,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACzF,oBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;IACvF,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IAC1C,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAC3C,aAAa;IACb,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;IAClE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzF,KAAK;IACL,CAAC;AACD;IACO,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;IAC7C,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACD;IACO,SAAS,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE;IACzC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;AACD;IACO,SAAS,QAAQ,CAAC,CAAC,EAAE;IAC5B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAClF,IAAI,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,OAAO;IAClD,QAAQ,IAAI,EAAE,YAAY;IAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IAC/C,YAAY,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IACpD,SAAS;IACT,KAAK,CAAC;IACN,IAAI,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;IAC3F,CAAC;AACD;IACO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,IAAI;IACR,QAAQ,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnF,KAAK;IACL,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;IAC3C,YAAY;IACZ,QAAQ,IAAI;IACZ,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,SAAS;IACT,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;IACzC,KAAK;IACL,IAAI,OAAO,EAAE,CAAC;IACd,CAAC;AACD;IACO,SAAS,QAAQ,GAAG;IAC3B,IAAI,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;IACtD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,OAAO,EAAE,CAAC;IACd,CAAC;AACD;IACO,SAAS,cAAc,GAAG;IACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACxF,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;IACpD,QAAQ,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;IACzE,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,OAAO,CAAC,CAAC;IACb,CAAC,CAAC;AACF;IACO,SAAS,OAAO,CAAC,CAAC,EAAE;IAC3B,IAAI,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;AACD;IACO,SAAS,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;IACjE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC3F,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IAClE,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1H,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9I,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;IACtF,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IAC5H,IAAI,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;IACtD,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;IACtD,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACtF,CAAC;AACD;IACO,SAAS,gBAAgB,CAAC,CAAC,EAAE;IACpC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAChJ,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACnJ,CAAC;AACD;IACO,SAAS,aAAa,CAAC,CAAC,EAAE;IACjC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACrN,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IACpK,IAAI,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;IAChI,CAAC;AACD;IACO,SAAS,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE;IAClD,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE;IACnH,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACF;IACO,SAAS,YAAY,CAAC,GAAG,EAAE;IAClC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC;IAC1C,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;IACpB,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACnG,IAAI,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;IACzB,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC;AACD;IACO,SAAS,eAAe,CAAC,GAAG,EAAE;IACrC,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;AACD;IACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE;IAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;IACnC,QAAQ,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IAC9E,KAAK;IACL,IAAI,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;AACD;IACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE;IACpE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;IACnC,QAAQ,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IAC9E,KAAK;IACL,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,CAAC;IACjB;;ICrNA;IACA;AAC6C;IAC7C,IAAM,SAAS,GAAGA,SAAe,CAAC,MAAM,CAAC,CAAC;IAE1C,SAAS,CAAC,OAAO,CAAC,yBAAyB,EAAE,UAAC,IAAa;;;QAGzD,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;YACjC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;SACjD;IACH,CAAC,CAAC,CAAC;IAEH;;;;;;;QASA;YAEU,sBAAiB,GAAa,CAAC,QAAQ,CAAC,CAAC;SASlD;;;;QAJQ,6CAAQ,GAAf,UAAgB,UAAkB;YAChC,OAAO,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC7E;;QATU,0BAA0B;YAHtCC,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;WACW,0BAA0B,CAWtC;yCAtCD;KA2BA;;;QCYE,qCACU,SAAuB,EACvB,mBAA+C;YAD/C,cAAS,GAAT,SAAS,CAAc;YACvB,wBAAmB,GAAnB,mBAAmB,CAA4B;YANlD,kBAAa,GAAa,EAAE,CAAC;YAE5B,cAAS,GAAW,EAAE,CAAC;SAK1B;QAlBL,sBAAW,iDAAQ;;;;iBAAnB,UAAoB,KAAa;gBAC/B,IAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACzD,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,EAAE;oBAC9B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;;;oBAIzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;iBACtE;aACF;;;WAAA;;oBAOoBC,4BAAY;oBACF,0BAA0B;;QAjBzD;YADCC,UAAK,EAAE;mEAUP;QAfU,2BAA2B;YAJvCC,cAAS,CAAC;gBACT,QAAQ,EAAE,uBAAuB;gBACjC,wGAAiD;aAClD,CAAC;WACW,2BAA2B,CA0BvC;QAAD,kCAAC;KA1BD;;;QCKA;SAAyC;QAA5B,wBAAwB;YAXpCC,aAAQ,CAAC;gBACR,OAAO,EAAE;oBACPC,mBAAY;iBACb;gBACD,OAAO,EAAE;oBACP,2BAA2B;iBAC5B;gBACD,YAAY,EAAE;oBACZ,2BAA2B;iBAC5B;aACF,CAAC;WACW,wBAAwB,CAAI;QAAD,+BAAC;KAAzC;;;QCXA;YACU,cAAS,GAAQ,EAAC,OAAO,EAAC,EAAC,iDAAiD,EAAC,MAAM,EAAC,wDAAwD,EAAC,QAAQ,EAAC,mDAAmD,EAAC,QAAQ,EAAC,0DAA0D,EAAC,QAAQ,EAAC,sDAAsD,EAAC,WAAW,EAAC,6DAA6D,EAAC,QAAQ,EAAC,0DAA0D,EAAC,eAAe,EAAC,6DAA6D,EAAC,kBAAkB,EAAC,+CAA+C,EAAC,MAAM,EAAC,sDAAsD,EAAC,QAAQ,EAAC,+CAA+C,EAAC,MAAM,EAAC,sDAAsD,EAAC,QAAQ,EAAC,8CAA8C,EAAC,KAAK,EAAC,qDAAqD,EAAC,QAAQ,EAAC,+CAA+C,EAAC,MAAM,EAAC,sDAAsD,EAAC,QAAQ,EAAC,gDAAgD,EAAC,OAAO,EAAC,uDAAuD,EAAC,QAAQ,EAAC,qDAAqD,EAAC,YAAY,EAAC,4DAA4D,EAAC,QAAQ,EAAC,sDAAsD,EAAC,MAAM,EAAC,wDAAwD,EAAC,QAAQ,EAAC,wDAAwD,EAAC,oBAAoB,EAAC,0CAA0C,EAAC,aAAa,EAAC,uCAAuC,EAAC,yBAAyB,EAAC,wCAAwC,EAAC,uBAAuB,EAAC,kDAAkD,EAAC,gBAAgB,EAAC,8CAA8C,EAAC,YAAY,EAAC,yCAAyC,EAAC,eAAe,EAAC,2CAA2C,EAAC,cAAc,EAAC,+CAA+C,EAAC,MAAM,EAAC,iDAAiD,EAAC,QAAQ,EAAC,EAAC,CAAC;SAKrhE;QAHQ,kDAAS,GAAhB,UAAiB,UAA4B,EAAE,IAAY;YACzD,OAAOC,uBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SACpE;QALU,8BAA8B;YAD1CN,eAAU,EAAE;WACA,8BAA8B,CAM1C;QAAD,qCAAC;KAND;;;QCSA;SAA4C;QAA/B,4BAA4B;YATxCI,aAAQ,CAAC;gBACR,SAAS,EAAE;oBACT;wBACE,OAAO,EAAEG,gCAA2B;wBACpC,QAAQ,EAAE,8BAA8B;wBACxC,KAAK,EAAE,IAAI;qBACZ;iBACF;aACF,CAAC;WACW,4BAA4B,CAAG;QAAD,mCAAC;KAA5C;;ICjBA;;;IAGO,IAAM,kBAAkB,GAAwB;QACrD;YACE,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,qCAAqC;SAC7C;QACD;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,OAAO;SACf;QACD;YACE,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,eAAe;SACvB;QACD;YACE,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,eAAe;SACvB;QACD;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,gBAAgB;SACxB;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,4BAA4B;SACpC;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,mBAAmB;SAC3B;QACD;YACE,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,4BAA4B;SACpC;QACD;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,6BAA6B;SACrC;KACF;;ICpCD;;;IAGO,IAAM,oBAAoB,GAA4B;QAC3D,SAAS,EAAE,kBAAkB;QAC7B,SAAS,EAAE,MAAM;QACjB,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK;QACjC,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,KAAK;QACrB,SAAS,EAAE,KAAK;KACjB;;ICpBD;;;IAGA,IAAY,SAGX;IAHD,WAAY,SAAS;QACjB,yCAAQ,CAAA;QACR,mDAAa,CAAA;IACjB,CAAC,EAHW,SAAS,KAAT,SAAS;;ICSrB;;;;QAMA;;;;YAKS,YAAO,GAAqC,EAAE,CAAC;SAgCvD;;;;QA3BQ,4CAAa,GAApB,UAAqB,EAAU;YAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC;SACzC;;;;QAKM,oDAAqB,GAA5B,UAA6B,EAAU;YACrC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,uBAAuB,CAAC;SACjD;;;;QAKM,2CAAY,GAAnB,UAAoB,EAAU;YAC5B,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;gBACtB,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;aACzB;SACF;;;;QAKM,sDAAuB,GAA9B,UAA+B,EAAU;YACvC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,yBAAyB,CAAC;SACnD;;QAnCU,oBAAoB;YAHhCP,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;WACW,oBAAoB,CAqChC;mCAvDD;KAkBA;;ICdA;;;;QAMA;SA+DC;QA9DQ,yDAAiB,GAAxB,UAAyB,UAAoB,EAAE,OAAoB;YACjE,IAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,UAAyB,CAAC;YACpF,OAAO,YAAY;iBAEf,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;qBAC7B,YAAY,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CACvE,CAAC;SACL;QAEM,2DAAmB,GAA1B,UAA2B,UAAoB;YAC7C,OAAO,UAAU,CAAC,YAAY,EAAE,CAAC;SAClC;QAEM,wEAAgC,GAAvC,UAAwC,UAAoB;YAC1D,IAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,UAAmB,CAAC;;YAExB,IAAI,SAAS;gBACT,SAAS,CAAC,UAAU;gBACpB,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAuB,EACjD;gBACA,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAkC,CAAC;gBACxE,UAAU,GAAG,UAAU,CAAC,QAAQ,KAAK,CAAC,GAAG,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC;aAChF;iBAAM,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE;gBAClD,UAAU,GAAI,SAAiB,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,CAAC;aACjE;iBAAM;gBACL,OAAO,SAAS,CAAC;aAClB;YACD,OAAO,UAAU,CAAC;SACnB;QAEM,gEAAwB,GAA/B,UAAgC,UAAoB,EAAE,QAAgB;;YAEpE,IAAI,QAAQ,CAAC,YAAY,EAAE;gBACzB,IAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;gBACpC,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE;oBACpC,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;iBAC1B;aACF;iBAAM,IAAI,UAAU,CAAC,YAAY,EAAE,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE;gBAC5E,OAAO,UAAU,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aAChD;SACF;QAEM,qDAAa,GAApB,UAAqB,UAAoB,EAAE,QAAgB,EAAE,OAAoB;YAC/E,IAAI,OAAO,EAAE;;gBAEX,IAAI,QAAQ,CAAC,YAAY,EAAE;oBACzB,IAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;oBACpC,GAAG,CAAC,eAAe,EAAE,CAAC;oBACtB,IAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;oBACvC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAClC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACrB;qBAAM,IAAI,UAAU,CAAC,YAAY,EAAE;oBAClC,IAAM,GAAG,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;oBACtC,GAAG,CAAC,eAAe,EAAE,CAAC;oBACtB,IAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;oBACvC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAClC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACrB;aACF;SACF;;QA7DU,6BAA6B;YAHzCA,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;WACW,6BAA6B,CA+DzC;4CAzED;KAUA;;ICkCA;;;;QAYE,qCACU,gBAA+C,EAC/C,iBAAuC,EACvC,aAA8B;YAF9B,qBAAgB,GAAhB,gBAAgB,CAA+B;YAC/C,sBAAiB,GAAjB,iBAAiB,CAAsB;YACvC,kBAAa,GAAb,aAAa,CAAiB;SACnC;QARL,sBAAY,gDAAO;iBAAnB;gBACE,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;aACvC;;;WAAA;;;;QAWM,+CAAS,GAAhB,UACE,EAAU,EACV,aAAgC,EAChC,UAAmC,EACnC,WAAoB;YAEpB,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE;gBACzB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;gBAE3D,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAEhD,IAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAClD,OAAO,CAAC,SAAS,GAAG,mPAOlB,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAErC,IAAM,KAAK,yBAAiC,oBAAoB,GAAK,UAAU,CAAE,CAAC;gBAClF,IAAM,SAAS,GAAG,uBAAqB,KAAK,CAAC,SAAS,0BAC3C,KAAK,CAAC,SAAS,gCACT,KAAK,CAAC,IAAI,8BACZ,KAAK,CAAC,QAAQ,OAAI,CAAC;gBAClC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC5D,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;gBACxD,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACvC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC7C,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAChD,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBACjD,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;aACrE;SACF;QAEM,mDAAa,GAApB,UAAqB,EAAU,EAAE,iBAAgC,EAAE,uBAA4B;YAC7F,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,IAAI,CAAC,CAAC;SAC9E;QAEM,kDAAY,GAAnB,UAAoB,EAAU,EAAE,iBAAgC,EAAE,uBAA4B;YAC5F,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;SAC/E;;;;QAKM,iDAAW,GAAlB,UAAmB,EAAU,EAAE,aAA4B;YACzD,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;gBACtB,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAEhD,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;oBAC3B,IAAM,4BAA4B,GAAG,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;;;oBAI/G,IACE,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,YAAY;wBACpD,CAAC,4BAA4B,EAC7B;wBACA,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;qBAChD;oBAED,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBACrB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;iBACjD;aACF;SACF;QAEM,yDAAmB,GAA1B,UAA2B,EAAU;YACnC,OAAO,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;SAChF;;;;;QAMM,0DAAoB,GAA3B,UAA4B,IAAY;YACtC,IAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC5D,IAAI,SAAS,GAAG,IAAI,CAAC;YACrB,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE;gBACpB,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;aACxC;YAED,IAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACzD,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC3C,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC3C,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;YAC5C,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC;YACjD,aAAa,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;YAEzC,IAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;YAC5B,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAEpC,OAAO,CAAC,wBAAwB,GAAG,kBAAkB,CAAC;YACtD,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAEhC,OAAO,CAAC,wBAAwB,GAAG,aAAa,CAAC;YACjD,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;YACtB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;YAChC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAElC,IAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACzD,OAAO,MAAM,CAAC;SACf;QAEM,mDAAa,GAApB,UAAqB,EAAU;YAC7B,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAEhD,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;gBAC3B,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;oBACjD,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;oBACjD,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;oBACnD,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC;oBAC9C,SAAS,EAAE,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC;oBAC/C,WAAW,EAAE,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC;oBACnD,cAAc,EAAE,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC;oBACzD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;iBAC5B,CAAC;aACH;;YAGD,OAAO,EAAE,CAAC;SACX;QAEM,wDAAkB,GAAzB,UAA0B,EAAU;YAClC,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,UAAU,EAAE;gBACd,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACzD;YACD,OAAO,EAAE,CAAC;SACX;QAEM,wDAAkB,GAAzB,UAA0B,EAAU,EAAE,KAAa;YACjD,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAChD,IAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC;YACtC,IAAI,aAAa,CAAC,SAAS,KAAK,KAAK,EAAE;gBACrC,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC;aACjC;SACF;QAEM,iDAAW,GAAlB,UAAmB,EAAU;YAC3B,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;gBACtB,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBAC7C,IAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBACtD,IAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;gBACpG,IAAM,4BAA4B,GAAG,gBAAgB,KAAK,gBAAgB,CAAC,WAAW,KAAK,CAAC,IAAI,gBAAgB,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;gBAElI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,4BAA4B,EAAE;;oBAE5D,IAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC;oBAC5D,IAAM,MAAM,GAAQ,gBAAgB,CAAC,IAAI,CAAC;oBAC1C,IAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;oBAEvC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBAC1C,MAAM,CAAC,KAAK,EAAE,CAAC;;oBAEf,IAAI,QAAQ,CAAC,YAAY,IAAI,UAAU,CAAC,WAAW,EAAE;wBACnD,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;wBACjC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBACtB,IAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;wBACpC,GAAG,CAAC,eAAe,EAAE,CAAC;wBACtB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;qBACrB;yBAAM;;wBAEL,IAAM,SAAS,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;wBAC3C,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;wBACpC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAC1B,SAAS,CAAC,MAAM,EAAE,CAAC;qBACpB;iBACF;qBAAM;;oBAEL,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBAC1C,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;iBAC/B;aACF;SACF;QAEM,6CAAO,GAAd,UAAe,QAAgB;YAC7B,IAAI,IAAI,GAAmB,SAAS,CAAC;YACrC,IAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;gBAC7B,IAAI,GAAG;oBACL,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,QAAQ,GAAG,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI;oBAC3F,GAAG,EAAE,QAAQ,CAAC,IAAI;iBACnB,CAAC;aACH;YAED,OAAO,IAAI,CAAC;SACb;QAEM,0DAAoB,GAA3B,UAA4B,QAAgB;YAC1C,IAAM,UAAU,GAAG,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;YAEnE,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAsB,CAAC;SAC7D;QAEM,mDAAa,GAApB,UAAqB,EAAU;YAC7B,OAAO,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;SAClH;QAEM,mDAAa,GAApB,UAAqB,EAAU,EAAE,OAAoB;YACnD,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;SACzG;QAEM,oDAAc,GAArB,UAAsB,EAAU,EAAE,WAAoB;YACpD,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAChD,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;SACrE;QAEM,iDAAW,GAAlB,UAAmB,EAAU,EAAE,QAAgB;;YAC7C,IAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC;YACtD,IAAM,YAAY,GAAkB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC;;gBACvF,KAAoB,IAAA,iBAAA,SAAA,YAAY,CAAA,0CAAA,oEAAE;oBAA7B,IAAI,OAAO,yBAAA;oBACd,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAChC,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC;iBAC5C;;;;;;;;;YACD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAEhC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACjD;QAEM,qDAAe,GAAtB,UAAuB,OAAsB;;YAE3C,IAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,aAAa;gBACtD,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ;gBAC/C,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC;YAC5C,OAAO,CAAC,yBAAyB,CAAC,QAAQ,EAAE,CAAC;YAC7C,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;YACnC,OAAO,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC;YAC3C,UAAU,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC7E,UAAU,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACnE,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;YACnE,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;SACrE;QAEO,wDAAkB,GAA1B,UAA2B,EAAU;YACnC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC;SACxD;QAEO,gEAA0B,GAAlC,UAAmC,QAAgB;YACjD,IAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACvE,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;gBACxC,OAAO,EAAE,CAAC;aACX;YAED,IAAM,aAAa,GAAG,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;YACtE,IAAM,aAAa,GAAG,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;;YAG3F,OAAO,aAAa,CAAC,MAAM,CAAC,UAAA,OAAO;;gBAGjC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;oBACjC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;wBAC7B,OAAO,KAAK,CAAC;qBACd;oBACD,IAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACzC,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBACtC,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;2BAC9E,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC;yBAC1E,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;+BACvE,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC9E;;gBAGD,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aAC7E,CAAC,CAAC;SACJ;QAEO,yDAAmB,GAA3B,UAA4B,EAAU;;YAEpC,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE;gBACzB,OAAO,SAAS,CAAC;aAClB;YAED,IAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,eAAe,EAAE;gBACnB,OAAO,eAAe,CAAC,QAAQ,CAAC;aACjC;;YAGD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC;SAC1D;QAEO,iDAAW,GAAnB,UAAoB,EAAU;YAC5B,IAAI,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACxD,IAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAC/C,IACE,SAAS;gBACT,SAAS,CAAC,UAAU;gBACpB,SAAS,CAAC,UAAU,CAAC,aAAa,EAClC;gBACA,IAAI,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC;gBACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE;oBAC1B,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;iBACjC;gBACD,IAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAkB,CAAC,CAAC;;gBAElE,IAAI,aAAa,EAAE;oBACjB,QAAQ,GAAG,aAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;iBACxD;aACF;YACD,OAAO,QAAQ,CAAC;SACjB;QAEO,qDAAe,GAAvB,UAAwB,EAAU,EAAE,OAA0B;;YAE5D,IAAM,UAAU,GAAG,OAAO,CAAC,aAAa;gBACtC,OAAO,CAAC,aAAa,CAAC,QAAQ;gBAC9B,OAAO,CAAC,eAAe,CAAC;;YAG1B,UAAU,CAAC,IAAI,EAAE,CAAC;YAClB,UAAU,CAAC,KAAK,EAAE,CAAC;YAEnB,IAAM,mBAAmB,GAAG,IAAIQ,YAAO,EAAE,CAAC;YAC1C,IAAM,iBAAiB,GAAG,cAAM,OAAA,mBAAmB,CAAC,IAAI,EAAE,GAAA,CAAC;YAC3D,IAAM,eAAe,GAAG,IAAIA,YAAO,EAAE,CAAC;YACtC,IAAM,aAAa,GAAG,cAAM,OAAA,eAAe,CAAC,IAAI,EAAE,GAAA,CAAC;YACnD,IAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAEhD,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;YAClE,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;YACxD,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YACxD,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACzD,OAAO;gBACL,gBAAgB,EAAE,OAAO;gBACzB,iBAAiB,EAAE,iBAAiB;gBACpC,aAAa,EAAE,aAAa;gBAC5B,aAAa,EAAE,aAAa;gBAC5B,yBAAyB,EAAE,mBAAmB;gBAC9C,eAAe,EAAE,eAAe;gBAChC,uBAAuB,EAAE,IAAIA,YAAO,EAAE;aACvC,CAAC;SACH;;QAGO,sDAAgB,GAAxB,UAAyB,EAAU;YAAnC,iBAMC;YALC,OAAO,UAAC,CAAiB;gBACvB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACnD,KAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aAC9D,CAAC;SACH;QAEO,sEAAgC,GAAxC,UAAyC,EAAU;YACjD,OAAO,IAAI,CAAC,gBAAgB,CAAC,gCAAgC,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7F;QAEO,8CAAQ,GAAhB,UAAiB,UAAoB,EAAE,QAAgB;YACrD,IAAM,YAAY,GAAG,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;;YAG5D,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;;;gBAGpC,OAAO,MAAM,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI;;qBAE7B,CAAC,YAAY,GAAG,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI;;qBAEpC,CAAC,YAAY,GAAG,QAAQ,KAAK,EAAE,CAAE,GAAG,GAAG,CAAC;aACxD;;;YAID,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE;gBAC3D,OAAO,oBAAoB,CAAC,SAAS,CAAC;aACvC;YACD,OAAO,YAAY,CAAC;SACrB;QAEO,6CAAO,GAAf,UAAgB,QAAgB;YAC9B,IAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAM,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YACjE,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACrE;QAEO,+CAAS,GAAjB,UAAkB,OAAgB,EAAE,GAAW;YAC7C,IAAI,WAAW,GAAG,OAAO,CAAC;YAC1B,OAAO,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;gBAClE,IAAI,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,EAAE;oBAC3D,OAAO,WAAW,CAAC;iBACpB;gBACD,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC;aACzC;YACD,OAAO,SAAS,CAAC;SAClB;QAEO,oDAAc,GAAtB,UAAuB,EAAU;YAC/B,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAChD,OAAO,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;SAC7E;;QAGO,sDAAgB,GAAxB,UAAyB,EAAU,EAAE,IAAY;YAC/C,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAChD,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE;gBACpC,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;gBAEvB,IAAM,EAAE,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;gBACpB,IAAI,IAAI,GAAG,UAAU,CAAC,sBAAsB,EAAE,EAAE,IAAI,SAAA,EAAE,QAAQ,SAAA,CAAC;gBAC/D,OAAO,EAAE,CAAC,UAAU,EAAE;oBACpB,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC;oBACrB,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBACnC;gBACD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;;gBAGvB,IAAI,QAAQ,EAAE;oBACZ,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;oBAC3B,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC9B,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACrB,GAAG,CAAC,eAAe,EAAE,CAAC;oBACtB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACrB;aACF;SACF;QAEO,2DAAqB,GAA7B,UAA8B,GAAa;;YACzC,IAAM,cAAc,GAAkB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC;;gBAChG,KAAoB,IAAA,mBAAA,SAAA,cAAc,CAAA,8CAAA,0EAAE;oBAA/B,IAAI,OAAO,2BAAA;oBACd,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;wBAClC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;qBAClC;iBACF;;;;;;;;;YACD,IAAM,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC,UAAA,OAAO;gBACrD,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC9C,OAAO,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM;qBAC7C,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;aAC/D,CAAC,CAAC;;gBACH,KAAoB,IAAA,sBAAA,SAAA,iBAAiB,CAAA,oDAAA,mFAAE;oBAAlC,IAAI,OAAO,8BAAA;oBACd,IAAM,QAAM,GAAG,OAAO,CAAC,UAAU,CAAC;;oBAElC,IAAI,QAAM,EAAE;wBACV,OAAO,OAAO,CAAC,UAAU,EAAE;4BACzB,QAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;yBAClD;wBACD,QAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;qBAC7B;iBACF;;;;;;;;;SACF;;QAGO,sDAAgB,GAAxB,UAAyB,GAAW;YAClC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;iBACnD,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;iBACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;iBACrB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SAC3B;QAEO,uDAAiB,GAAzB,UAA0B,EAAU,EAAE,iBAAgC,EAAE,uBAA4B,EAAE,QAAiB;YACrH,uBAAuB,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;YACzE,uBAAuB,CAAC,YAAY,CAAC,eAAe,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;YACnF,iBAAiB,CAAC,OAAO,CAAC,UAAA,eAAe;gBACvC,eAAe,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;aAC9C,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;SAChG;;oBA7d2B,6BAA6B;oBAC5B,oBAAoB;oBACxBC,sBAAe;;;QAT7B,2BAA2B;YAHvCT,eAAU,CAAC;gBACV,UAAU,EAAE,MAAM;aACnB,CAAC;WACW,2BAA2B,CAsevC;0CAxhBD;KAkDA;;IClDA;IACA;IACA;IACA;QAAA;SAMC;;QAHe,qCAAqB,GAAnC,UAAoC,KAAU;YAC5C,OAAO,KAAK,KAAK,SAAS,IAAI,KAAG,KAAO,KAAK,OAAO,CAAC;SACtD;QACH,sBAAC;IAAD,CAAC;;ICmCD;;;;QA4DE,uCACU,cAA2C,EAC3C,cAAiC,EACjC,SAAiC;YAFjC,mBAAc,GAAd,cAAc,CAA6B;YAC3C,mBAAc,GAAd,cAAc,CAAmB;YACjC,cAAS,GAAT,SAAS,CAAwB;YAnDpC,sBAAiB,GAAG,IAAIQ,YAAO,EAAE,CAAC;YAMlC,UAAK,GAA4B,EAAE,CAAC;YAGpC,gBAAW,GAA8B,EAAE,CAAC;YAe3C,cAAS,GAAY,KAAK,CAAC;YAE5B,uBAAkB,GAAG,IAAIA,YAAO,EAAsB,CAAC;YASvD,yBAAoB,GAAG,IAAIA,YAAO,EAAsB,CAAC;YASzD,6BAAwB,GAAG,IAAIA,YAAO,EAAsB,CAAC;YAE5D,kBAAa,GAAG,IAAIA,YAAO,EAAQ,CAAC;SAMxC;QAxCJ,sBAAW,mDAAQ;iBAQlB;gBACC,OAAO,IAAI,CAAC,SAAS,CAAC;aACvB;iBAVD,UAAoB,KAAc;gBAChC,IAAM,YAAY,GAAG,eAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBAClE,IAAI,YAAY,KAAK,IAAI,CAAC,QAAQ,EAAE;oBAClC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;oBAC9B,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;iBACpC;aACF;;;WAAA;QAoCM,gDAAQ,GAAf;YAAA,iBAuGC;YAtGC,IAAI,CAAC,iBAAiB;iBACnB,IAAI,CACHE,mBAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAC9B,CAAC,SAAS,CAAC;gBACV,KAAI,CAAC,cAAc,EAAE,CAAC;aACvB,CAAC,CAAC;YAELC,aAAQ,CAAC;;gBAEP,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,iDAAiD,CAAC;gBAC3E,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,wDAAwD,CAAC;gBAClF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mDAAmD,CAAC;gBAC7E,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,0DAA0D,CAAC;gBACpF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sDAAsD,CAAC;gBAChF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,6DAA6D,CAAC;gBACvF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,0DAA0D,CAAC;gBACpF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,6DAA6D,CAAC;;gBAGvF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,+CAA+C,CAAC;gBACzE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sDAAsD,CAAC;gBAChF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,+CAA+C,CAAC;gBACzE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sDAAsD,CAAC;gBAChF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,8CAA8C,CAAC;gBACxE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,qDAAqD,CAAC;gBAC/E,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,+CAA+C,CAAC;gBACzE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sDAAsD,CAAC;gBAChF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gDAAgD,CAAC;gBAC1E,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,uDAAuD,CAAC;gBACjF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,qDAAqD,CAAC;gBAC/E,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,4DAA4D,CAAC;aAEvF,CAAC;iBACC,IAAI,CAACC,cAAI,CAAC,CAAC,CAAC,CAAC;iBACb,SAAS,CAAC,UAAA,SAAS;gBAClB,KAAI,CAAC,WAAW,GAAG;oBACjB;wBACE,QAAQ,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAA;wBACxC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;wBACnB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;qBAC1B;oBACD;wBACE,QAAQ,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAA;wBAC1C,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;wBACnB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;qBAC1B;oBACD;wBACE,QAAQ,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAA;wBAC7C,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;wBACnB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;qBAC1B;oBACD;wBACE,QAAQ,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAA;wBACjD,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;qBACpB;oBACD;wBACE,SAAS,EAAE,IAAI;qBAChB;oBACD;wBACE,QAAQ,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,EAAE,GAAA;wBAClC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;qBACpB;iBACF,CAAC;gBACF,KAAI,CAAC,SAAS,GAAG;oBACf;wBACE,QAAQ,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAA;wBACxC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;wBACnB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;qBAC1B;oBACD;wBACE,QAAQ,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAA;wBACxC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;wBACpB,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;qBAC3B;oBACD;wBACE,SAAS,EAAE,IAAI;qBAChB;oBACD;wBACE,QAAQ,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAA;wBACvC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;wBACpB,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;qBAC3B;oBACD;wBACE,QAAQ,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAA;wBACxC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;wBACpB,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;qBAC3B;oBACD;wBACE,QAAQ,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAA;wBACzC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;wBACpB,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;qBAC3B;oBACD;wBACE,SAAS,EAAE,IAAI;qBAChB;oBACD;wBACE,QAAQ,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAA;wBAC7C,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;wBACpB,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;qBAC3B;iBACF,CAAC;aACH,CAAC,CAAC;SACN;QAEM,mDAAW,GAAlB;YACE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;SAC/B;QAEM,mDAAW,GAAlB,UAAmB,OAAe,EAAE,KAAe;YAAf,sBAAA,EAAA,UAAe;YACjD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC7C,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;SACJ;QAEM,wDAAgB,GAAvB,UAAwB,KAA8B;YACpD,IAAI,CAAC,WAAW,CACd,YAAY,EACZ,4DAA4D,GAAG,KAAK,CAAC,EAAE;gBACrE,uBAAuB,GAAG,KAAK,CAAC,IAAI;gBACpC,SAAS,IAAI,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CACrG,CAAC;SACH;QAEO,sDAAc,GAAtB;YACE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAEC,+BAAsB,CAAC,KAAK,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAEA,+BAAsB,CAAC,KAAK,EAAE,CAAC,CAAC;YACvE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAEA,+BAAsB,CAAC,KAAK,EAAE,CAAC,CAAC;SAC5E;QAEO,mDAAW,GAAnB;YACE,IAAI,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9E,IAAI,gBAAgB,CAAC,UAAU,GAAG,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5F,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;aAC/B;YACD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;SAClC;;oBA/IyB,2BAA2B;oBAC3BC,sBAAiB;oBACtBC,2BAAsB;;QAnD3C;YADCb,UAAK,EAAE;gFACiC;QAGzC;YADCA,UAAK,EAAE;uEACgB;QAGxB;YADCA,UAAK,EAAE;oEACmC;QAG3C;YADCA,UAAK,EAAE;0EAC2C;QAGnD;YADCA,UAAK,EAAE;qEAOP;QArBU,6BAA6B;YANzCC,cAAS,CAAC;gBACT,QAAQ,EAAE,yBAAyB;gBACnC,uuHAAmD;gBAEnD,eAAe,EAAEa,4BAAuB,CAAC,MAAM;;aAChD,CAAC;WACW,6BAA6B,CAqMzC;QAAD,oCAAC;KArMD;;ICjDA;;;;QAGA;SAEC;QAAD,yBAAC;IAAD,CAAC;;ICeD,IAAM,QAAQ,GAAG,SAAS,CAAC;IAC3B,IAAM,mBAAmB,GAAG,WAAW,CAAC;IAExC;;;;QAgDE,wCACmB,aAA+B,EAChD,YAAgC;YADf,kBAAa,GAAb,aAAa,CAAkB;YAf3C,sBAAiB,GAAY,KAAK,CAAC;YAEnC,YAAO,GAAW,EAAE,CAAC;YAErB,WAAM,GAAW,CAAC,CAAC;YAEnB,UAAK,GAAY,KAAK,CAAC;YAEvB,eAAU,GAAG,CAAC,CAAC;YAEd,kBAAa,GAAW,EAAE,CAAC;YAE3B,SAAI,GAAW,UAAU,CAAC;YAMhC,IAAI,YAAY,CAAC,SAAS,EAAE;gBAC1B,IAAI,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBACnD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAErE,IAAI,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;oBACtE,gBAAgB,GAAG,gBAAgB,GAAG,CAAC,CAAC,GAAG,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,CAAC;oBAE3H,IAAI,gBAAgB,GAAG,CAAC,CAAC,EAAE;wBACzB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;wBACjG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;qBAClE;;oBAGD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;iBACpB;qBAAM;oBACL,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG;wBACrC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,MAAa,CAAC;;oBAGnD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;iBACpB;aACF;SACF;QAhED,sBAAW,qDAAS;iBAIpB;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;iBAND,UAAqB,KAAa;gBAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;aAC7B;;;WAAA;QAKD,sBAAW,wDAAY;iBAIvB;gBACE,OAAO,IAAI,CAAC,aAAa,CAAC;aAC3B;iBAND,UAAwB,KAAa;gBACnC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;aAC7B;;;WAAA;QAKD,sBAAW,+CAAG;iBAId;gBACI,OAAO,IAAI,CAAC,IAAI,CAAC;aACpB;iBAND,UAAe,KAAa;gBACxB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;aAC/B;;;WAAA;QA+CM,yDAAgB,GAAvB,UAAwB,KAAa;YACnC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB;QAEM,6CAAI,GAAX;YACE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBAClB,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;oBACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;wBACpB,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAa,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,IAAI;qBAC/D,CAAC,CAAC;iBACtB;qBAAM;oBACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;wBACpB,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE;wBACvB,MAAM,EAAE,SAAS,CAAC,IAAI;qBACP,CAAC,CAAC;iBACtB;aACF;SACF;QAEM,+CAAM,GAAb;YACE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;SAC7B;QAEO,oDAAW,GAAnB;YACE,OAAO,QAAQ,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;SACnG;QAEO,gDAAO,GAAf;YACE,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;gBACxB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAIC,wBAAa,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACpD;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,IAAIA,wBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxE;;oBA5DiCC,uBAAgB;oBAClC,kBAAkB;;QA1CvB,8BAA8B;YAL1Cf,cAAS,CAAC;gBACT,QAAQ,EAAE,6BAA6B;gBACvC,61GAAqD;;aAEtD,CAAC;WACW,8BAA8B,CAuG1C;QAAD,qCAAC;KAvGD;;IC6BA;;;;QAoEE,uCACU,cAA2C,EAC3C,cAAiC,EACjC,YAA6B;YAF7B,mBAAc,GAAd,cAAc,CAA6B;YAC3C,mBAAc,GAAd,cAAc,CAAmB;YACjC,iBAAY,GAAZ,YAAY,CAAiB;YA3DhC,sBAAiB,GAAG,IAAIK,YAAO,EAAE,CAAC;YA0ClC,0BAAqB,GAAG,IAAIA,YAAO,EAAyB,CAAC;YAE7D,sBAAiB,GAAG,IAAIA,YAAO,EAAyB,CAAC;YAEzD,qBAAgB,GAAG,IAAIA,YAAO,EAAsB,CAAC;YAErD,mBAAc,GAAG,IAAIA,YAAO,EAAsB,CAAC;YAIlD,cAAS,GAAY,KAAK,CAAC;YAE3B,gBAAW,GAAG,oBAAoB,CAAC;SAMvC;QA7CJ,sBAAW,qDAAU;iBAArB;gBACE,OAAO,IAAI,CAAC,WAAW,CAAC;aACzB;iBACD,UAAsB,KAA8B;gBAClD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,EAAE;oBAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,uCAAuC,EAAE;wBAC1D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;qBAC9D;yBAAM;wBACL,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;qBACxD;iBACF;aACF;;;WAVA;QAaD,sBAAW,mDAAQ;iBAQnB;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC;aACvB;iBAVD,UAAoB,KAAc;gBAChC,IAAM,YAAY,GAAG,eAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBAClE,IAAI,YAAY,KAAK,IAAI,CAAC,QAAQ,EAAE;oBAClC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;oBAC9B,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;iBACpC;aACF;;;WAAA;QA0BM,gDAAQ,GAAf;YAAA,iBASC;YARC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAC/B,KAAI,CAAC,UAAU,yBACV,KAAI,CAAC,WAAW,GAChB,KAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAI,CAAC,QAAQ,CAAQ,CAC3D,CAAC;gBACF,KAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,KAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;aACrC,CAAC,CAAC;SACJ;QAEM,mDAAW,GAAlB,UAAmB,OAAe,EAAE,KAAe;YAAf,sBAAA,EAAA,UAAe;YACjD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC7C,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,yBACV,IAAI,CAAC,UAAU,GACf,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CACpD,CAAC;SACH;QAEM,uDAAe,GAAtB,UAAuB,YAAqB,EAAE,QAAiB,EAAE,OAAe;YAC9E,IAAI,YAAY,KAAK,QAAQ,EAAE;gBAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC3B;;YAGD,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;SACrC;QAEM,4CAAI,GAAX;YAAA,iBAyBC;YAxBC,IAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxE,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/D,IAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC;oBACzE,OAAO,EAAE,kBAAkB;oBAC3B,QAAQ,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;iBACrC,CAAC,CAAC,CAAC;YACJ,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,UAAC,MAAyB;gBACpD,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,cAAc,EAAE;oBAC9C,IAAI,WAAW,EAAE;wBACf,IAAM,MAAM,GAAG,KAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC;wBACvE,KAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;qBAC1D;oBAED,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,EAAE;;wBAEzC,KAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBACjD;yBAAM;;wBAEL,IAAM,KAAK,GAAG,KAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC;wBACrE,KAAI,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,8CAA8C,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;qBACjI;iBACF;aACF,CAAC,CAAC;SACJ;QAEM,8CAAM,GAAb;YACE,IAAI,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjG,IAAI,qBAAqB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;gBAChD,IAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1E,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;aAC7D;YACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC5B;QAEM,sDAAc,GAArB,UAAsB,IAAY;YAChC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,yBACV,IAAI,CAAC,UAAU,GACf,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CACpD,CAAC;SACH;QAEM,iEAAyB,GAAhC,UAAiC,KAA2B,EAAE,YAAoB;YAApB,6BAAA,EAAA,oBAAoB;YAChF,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,WAAW,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;SACvE;QAEO,sDAAc,GAAtB;YACE,IAAM,OAAO,GAA0B,EAAE,IAAI,EAAEW,qCAAyB,CAAC,KAAK,EAAE,CAAC;YACjF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAEN,+BAAsB,CAAC,KAAK,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAEA,+BAAsB,CAAC,KAAK,EAAE,CAAC,CAAC;SAClE;QAEO,mDAAW,GAAnB,UAAoB,QAAgB;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;oBAC5D,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;iBAC9B;aACF;SACF;;oBAlGyB,2BAA2B;oBAC3BC,sBAAiB;oBACnBM,sBAAe;;QA3DvC;YADClB,UAAK,EAAE;gFACiC;QAGzC;YADCA,UAAK,EAAE;uEACgB;QAGxB;YADCA,UAAK,EAAE;uEAC6B;QAGrC;YADCA,UAAK,EAAE;2EACsB;QAG9B;YADCA,UAAK,EAAE;6EACgD;QAGxD;YADCA,UAAK,EAAE;uEAGP;QAaD;YADCA,UAAK,EAAE;qEAOP;QAvCU,6BAA6B;YANzCC,cAAS,CAAC;gBACT,QAAQ,EAAE,yBAAyB;gBACnC,4wXAAmD;gBAEnD,eAAe,EAAEa,4BAAuB,CAAC,MAAM;;aAChD,CAAC;WACW,6BAA6B,CA+JzC;QAAD,oCAAC;KA/JD;;ICrEA;;;IAGO,IAAM,aAAa,GAA4B;QACpD,MAAM;QACN,QAAQ;KACT;;ICND;;;IAGO,IAAM,uBAAuB,GAAqC;QACvE,aAAa;QACb,WAAW;QACX,YAAY;QACZ,OAAO;QACP,MAAM;QACN,MAAM;KACP;;ICdD;;;IAGO,IAAM,uBAAuB,GAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;ICmFtH;;;IAGA,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB;;;;QA8KE,gCACU,cAAiC,EACjC,kBAAyC,EACzC,cAA2C,EAC3C,aAAmC,EACnC,mBAA+C;YAJ/C,mBAAc,GAAd,cAAc,CAAmB;YACjC,uBAAkB,GAAlB,kBAAkB,CAAuB;YACzC,mBAAc,GAAd,cAAc,CAA6B;YAC3C,kBAAa,GAAb,aAAa,CAAsB;YACnC,wBAAmB,GAAnB,mBAAmB,CAA4B;;;;YA3JlD,cAAS,GAAY,KAAK,CAAC;YAwB3B,sBAAiB,GAAG,IAAIR,YAAO,EAAE,CAAC;;;;;;;YASlC,aAAQ,GAAwB,kBAAkB,CAAC;;;;;YAOnD,iBAAY,GAAa,uBAAuB,CAAC;;;;;YAOjD,OAAE,GAAG,qBAAmB,EAAE,YAAc,CAAC;;;;;YAyBzC,UAAK,GAA4B,aAAa,CAAC;;;;YAM/C,gBAAW,GAA8B,EAAE,CAAC;;;;;;;YA0B5C,mBAAc,GAAqC,uBAAuB,CAAC;YA6B1E,qBAAgB,GAAY,KAAK,CAAC;YAKlC,gBAAW,GAAY,KAAK,CAAC;YAE7B,kBAAa,GAAG,IAAIA,YAAO,EAAQ,CAAC;YAEpC,cAAS,GAAY,KAAK,CAAC;YAE3B,uBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;YAE7D,iBAAY,GAAG,EAAE,CAAC;YAElB,WAAM,GAAW,SAAS,CAAC;;YAsG5B,YAAO,GAAG,eAAQ,CAAC;;YAGlB,cAAS,GAAG,UAAC,CAAS,KAAO,CAAC;SAjGlC;mCAlKO,sBAAsB;QAajC,sBAAW,4CAAQ;iBAanB;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC;aACvB;;;;;iBAfD,UAAoB,KAAc;gBAChC,IAAM,YAAY,GAAG,eAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBAClE,IAAI,YAAY,KAAK,IAAI,CAAC,QAAQ,EAAE;oBAClC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;oBAC9B,IAAI,IAAI,CAAC,SAAS,EAAE;wBAClB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;qBAClG;yBAAM;wBACL,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;qBACjG;oBACD,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;iBACpC;aACF;;;WAAA;QAmCA,sBAAW,qDAAiB;iBAU5B;gBACE,OAAO,IAAI,CAAC,kBAAkB,CAAC;aAChC;;;;iBAZD,UAA6B,KAA8B;;gBAEzD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrB,IAAI,CAAC,kBAAkB,yBAClB,oBAAoB,GACpB,KAAK,CACT,CAAC;iBACH;aACF;;;WAAA;QAuBF,sBAAW,+CAAW;iBAStB;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC;aAC1B;;;;iBAXD,UAAuB,KAAa;gBAClC,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE;oBAC/B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,IAAI,IAAI,CAAC,WAAW,EAAE;wBACpB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;qBACpD;iBACF;aACF;;;WAAA;QAeD,sBAAW,yCAAK;iBAqBhB;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;iBAvBD,UAAiB,KAAa;;gBAE5B,IAAI,WAAW,GAAW,KAAK,CAAC;gBAChC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,EAAE;oBACrE,WAAW,GAAG,EAAE,CAAC;iBAClB;gBACD,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEpE,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;oBAC/B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;;;oBAI1B,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;wBAC5C,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;qBAC9B;oBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;iBACjB;aACF;;;WAAA;QAiCM,gDAAe,GAAtB;YAAA,iBA6CC;YA5CC,IAAI,CAAC,cAAc,CAAC,SAAS,CAC3B,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,SAAS,CAAC,aAAa,EAC5B,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,WAAW,CACjB,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;iBAChD,IAAI,CACHE,mBAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAC9B;iBACA,SAAS,CAAC;gBACT,KAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,KAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;aAC/B,CAAC,CAAC;YAEL,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;iBACtC,IAAI,CACHA,mBAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAC9B;iBACA,SAAS,CAAC;gBACT,KAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;aAC/B,CAAC,CAAC;YAEL,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;iBAC9C,IAAI,CACHA,mBAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAC9B;iBACA,SAAS,CAAC;gBACT,KAAI,CAAC,mBAAmB,EAAE,CAAC;aAC5B,CAAC,CAAC;YAEL,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;;YAG7D,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC1C;YAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;gBAClG,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;QAEM,4CAAW,GAAlB;YACE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;SAC/B;QAEM,2CAAU,GAAjB,UAAkB,GAAW;YAC3B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;;YAGjB,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,IAAI,CAAC,MAAM,EAAE;gBACnD,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aAC9D;SACF;QAEM,iDAAgB,GAAvB,UAAwB,EAAO;YAC7B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;QAEM,kDAAiB,GAAxB,UAAyB,EAAO;YAC9B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;SACnB;;;;QAKM,iDAAgB,GAAvB,UAAwB,UAAmB;YACzC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;SAC5B;QAEM,yCAAQ,GAAf;YACE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;QAEM,oDAAmB,GAA1B;YACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,kBAAkB,yBAClB,IAAI,CAAC,kBAAkB,GACvB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAQ,CACrD,CAAC;SACH;;;oBAhGyBI,sBAAiB;oBACbO,4BAAqB;oBACzB,2BAA2B;oBAC5B,oBAAoB;oBACd,0BAA0B;;QA3JzD;YADCnB,UAAK,EAAE;iEAC0B;QAOlC;YADCA,UAAK,EAAE;8DAYP;QAeD;YADCA,UAAK,EAAE;gEACkD;QAO1D;YADCA,UAAK,EAAE;oEACgD;QAOxD;YADCA,UAAK,EAAE;0DACwC;QAM/C;YADCA,UAAK,EAAE;uEASP;QAWF;YADCA,UAAK,EAAE;6DAC8C;QAMtD;YADCA,UAAK,EAAE;mEAC2C;QAMnD;YADCA,UAAK,EAAE;iEAQP;QAaD;YADCA,UAAK,EAAE;sEAC0E;QAgClF;YADCoB,cAAS,CAAC,QAAQ,CAAC;iEACU;QA9InB,sBAAsB;YAflCnB,cAAS,CAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,8tCAA2C;gBAE3C,SAAS,EAAE;oBACT;wBACE,OAAO,EAAEoB,uBAAiB;;wBAE1B,WAAW,EAAEC,eAAU,CAAC,cAAM,OAAA,wBAAsB,GAAA,CAAC;wBACrD,KAAK,EAAE,IAAI;qBACZ;iBACF;gBACD,eAAe,EAAER,4BAAuB,CAAC,MAAM;gBAC/C,aAAa,EAAES,sBAAiB,CAAC,IAAI;;aACtC,CAAC;WACW,sBAAsB,CAoQlC;QAAD,6BAAC;KApQD;;;QCCA;SAAoC;QAAvB,mBAAmB;YAnC/BrB,aAAQ,CAAC;gBACR,OAAO,EAAE;oBACPC,mBAAY;oBACZqB,iBAAW;oBACXC,yBAAmB;oBACnBC,2BAAoB;oBACpB,4BAA4B;oBAC5BC,kBAAa;oBACbC,wBAAa;oBACbC,kBAAW;oBACXC,yBAAiB;oBACjBC,gCAAoB;oBACpBC,yBAAiB;oBACjBC,0BAAiB;oBACjBC,qBAAc;oBACdC,kBAAa;oBACbC,oBAAc;oBACdC,uBAAgB;iBACjB;gBACD,OAAO,EAAE;oBACP,sBAAsB;oBACtB,8BAA8B;oBAC9B,6BAA6B;oBAC7B,6BAA6B;iBAC9B;gBACD,YAAY,EAAE;oBACZ,sBAAsB;oBACtB,8BAA8B;oBAC9B,6BAA6B;oBAC7B,6BAA6B;iBAC9B;gBACD,eAAe,EAAE;oBACf,8BAA8B;iBAC/B;aACF,CAAC;WACW,mBAAmB,CAAI;QAAD,0BAAC;KAApC;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"skyux-text-editor.umd.js","sources":["../../../projects/text-editor/src/modules/text-editor/services/text-sanitization.service.ts","../../../projects/text-editor/src/modules/rich-text-display/rich-text-display.component.ts","../../../projects/text-editor/src/modules/rich-text-display/rich-text-display.component.html","../../../projects/text-editor/src/modules/rich-text-display/rich-text-display.module.ts","../../../projects/text-editor/src/modules/shared/sky-text-editor-resources.module.ts","../../../projects/text-editor/src/modules/shared/forms-utility.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/text-editor/src/modules/text-editor/defaults/font-list-defaults.ts","../../../projects/text-editor/src/modules/text-editor/defaults/style-state-defaults.ts","../../../projects/text-editor/src/modules/text-editor/url-modal/text-editor-url-target.ts","../../../projects/text-editor/src/modules/text-editor/services/text-editor-selection.service.ts","../../../projects/text-editor/src/modules/text-editor/services/text-editor.service.ts","../../../projects/text-editor/src/modules/text-editor/services/text-editor-adapter.service.ts","../../../projects/text-editor/src/modules/text-editor/menubar/text-editor-menubar.component.ts","../../../projects/text-editor/src/modules/text-editor/menubar/text-editor-menubar.component.html","../../../projects/text-editor/src/modules/text-editor/url-modal/text-editor-url-modal-context.ts","../../../projects/text-editor/src/modules/text-editor/url-modal/text-editor-url-modal.component.ts","../../../projects/text-editor/src/modules/text-editor/url-modal/text-editor-url-modal.component.html","../../../projects/text-editor/src/modules/text-editor/toolbar/text-editor-toolbar.component.ts","../../../projects/text-editor/src/modules/text-editor/toolbar/text-editor-toolbar.component.html","../../../projects/text-editor/src/modules/text-editor/defaults/menu-defaults.ts","../../../projects/text-editor/src/modules/text-editor/defaults/toolbar-action-defaults.ts","../../../projects/text-editor/src/modules/text-editor/defaults/font-size-list-defaults.ts","../../../projects/text-editor/src/modules/text-editor/text-editor.component.ts","../../../projects/text-editor/src/modules/text-editor/text-editor.component.html","../../../projects/text-editor/src/modules/text-editor/text-editor.module.ts","../../../projects/text-editor/src/skyux-text-editor.ts"],"sourcesContent":["import {\n Injectable\n} from '@angular/core';\n\nimport createDOMPurify from \"dompurify\";\nconst domPurify = createDOMPurify(window);\n\ndomPurify.addHook('afterSanitizeAttributes', (node: Element) => {\n // Set all elements owning target to target=_blank\n // so we only allow the target attribute with that value.\n if (!!node.getAttribute('target')) {\n node.setAttribute('target', '_blank');\n node.setAttribute('rel', 'noopener noreferrer');\n }\n});\n\n/**\n * The `SkyTextSanitizationService` user the `DOMPurify` library to sanitize strings for use\n * in the DOM. `DOMPurify` allows more customization than Angular's internal `DomSanitizer` so we\n * can preserve `<style>` tags and allow `target` attributes for new tab links.\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class SkyTextSanitizationService {\n\n private allowedAttributes: string[] = ['target'];\n\n /**\n * Returns a sanitized string, allowing target attribute for new tab links.\n */\n public sanitize(htmlString: string): string {\n return domPurify.sanitize(htmlString, { ADD_ATTR: this.allowedAttributes });\n }\n\n}\n","import {\n Component,\n Input\n} from '@angular/core';\n\nimport {\n DomSanitizer,\n SafeHtml\n} from '@angular/platform-browser';\n\nimport {\n SkyTextSanitizationService\n} from '../text-editor/services/text-sanitization.service';\n\n@Component({\n selector: 'sky-rich-text-display',\n templateUrl: './rich-text-display.component.html'\n})\nexport class SkyRichTextDisplayComponent {\n\n /**\n * Specifies the rich text to display.\n */\n @Input()\n public set richText(value: string) {\n const cleaned = this.sanitizationService.sanitize(value);\n if (cleaned !== this._richText) {\n this._richText = cleaned;\n\n // Text has already been sanitized with DOMPurifier.\n // Tell Angular to bypass its own internal sanitization.\n this.sanitizedText = this.sanitizer.bypassSecurityTrustHtml(cleaned);\n }\n }\n\n public sanitizedText: SafeHtml = '';\n\n private _richText: string = '';\n\n constructor(\n private sanitizer: DomSanitizer,\n private sanitizationService: SkyTextSanitizationService\n ) { }\n\n}\n","<span\n class=\"sky-rich-text-display-text\"\n [innerHTML]=\"sanitizedText\"\n>\n</span>\n","import {\n CommonModule\n} from '@angular/common';\n\nimport {\n NgModule\n} from '@angular/core';\n\nimport {\n SkyRichTextDisplayComponent\n} from './rich-text-display.component';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n exports: [\n SkyRichTextDisplayComponent\n ],\n declarations: [\n SkyRichTextDisplayComponent\n ]\n})\nexport class SkyRichTextDisplayModule { }\n","/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-text-editor' schematic.\n * To update this file, simply rerun the command.\n */\n\nimport { NgModule } from '@angular/core';\nimport {\n getLibStringForLocale,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n SKY_LIB_RESOURCES_PROVIDERS\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\"skyux_text_editor_format_menu_action_bold_label\":{\"message\":\"Bold\"},\"skyux_text_editor_format_menu_action_bold_key_shortcut\":{\"message\":\"Ctrl+B\"},\"skyux_text_editor_format_menu_action_italic_label\":{\"message\":\"Italic\"},\"skyux_text_editor_format_menu_action_italic_key_shortcut\":{\"message\":\"Ctrl+I\"},\"skyux_text_editor_format_menu_action_underline_label\":{\"message\":\"Underline\"},\"skyux_text_editor_format_menu_action_underline_key_shortcut\":{\"message\":\"Ctrl+U\"},\"skyux_text_editor_format_menu_action_strikethrough_label\":{\"message\":\"Strikethrough\"},\"skyux_text_editor_format_menu_action_clear_formatting_label\":{\"message\":\"Clear formatting\"},\"skyux_text_editor_edit_menu_action_undo_label\":{\"message\":\"Undo\"},\"skyux_text_editor_edit_menu_action_undo_key_shortcut\":{\"message\":\"Ctrl+Z\"},\"skyux_text_editor_edit_menu_action_redo_label\":{\"message\":\"Redo\"},\"skyux_text_editor_edit_menu_action_redo_key_shortcut\":{\"message\":\"Ctrl+Y\"},\"skyux_text_editor_edit_menu_action_cut_label\":{\"message\":\"Cut\"},\"skyux_text_editor_edit_menu_action_cut_key_shortcut\":{\"message\":\"Ctrl+X\"},\"skyux_text_editor_edit_menu_action_copy_label\":{\"message\":\"Copy\"},\"skyux_text_editor_edit_menu_action_copy_key_shortcut\":{\"message\":\"Ctrl+C\"},\"skyux_text_editor_edit_menu_action_paste_label\":{\"message\":\"Paste\"},\"skyux_text_editor_edit_menu_action_paste_key_shortcut\":{\"message\":\"Ctrl+V\"},\"skyux_text_editor_edit_menu_action_select_all_label\":{\"message\":\"Select all\"},\"skyux_text_editor_edit_menu_action_select_all_key_shortcut\":{\"message\":\"Ctrl+A\"},\"skyux_text_editor_menubar_dropdown_button_edit_label\":{\"message\":\"Edit\"},\"skyux_text_editor_menubar_dropdown_button_format_label\":{\"message\":\"Format\"},\"skyux_text_editor_menubar_dropdown_button_insert_label\":{\"message\":\"Insert merge field\"},\"skyux_text_editor_url_modal_header_label\":{\"message\":\"Create link\"},\"skyux_text_editor_url_modal_url_label\":{\"message\":\"Enter a URL to link to:\"},\"skyux_text_editor_url_modal_open_label\":{\"message\":\"Where should it open?\"},\"skyux_text_editor_url_modal_current_option_label\":{\"message\":\"Current window\"},\"skyux_text_editor_url_modal_new_option_label\":{\"message\":\"New window\"},\"skyux_text_editor_url_modal_email_label\":{\"message\":\"Email address\"},\"skyux_text_editor_url_modal_subject_label\":{\"message\":\"Subject line\"},\"skyux_text_editor_url_modal_save_button_label\":{\"message\":\"Save\"},\"skyux_text_editor_url_modal_cancel_button_label\":{\"message\":\"Cancel\"}},\n};\n\nexport class SkyTextEditorResourcesProvider implements SkyLibResourcesProvider {\n public getString(localeInfo: SkyAppLocaleInfo, name: string): string {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [{\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyTextEditorResourcesProvider,\n multi: true\n }]\n})\nexport class SkyTextEditorResourcesModule { }\n","// Need to add the following to classes which contain static methods.\n// See: https://github.com/ng-packagr/ng-packagr/issues/641\n// @dynamic\nexport class SkyFormsUtility {\n\n /** Coerces a data-bound value (typically a string) to a boolean. */\n public static coerceBooleanProperty(value: any): boolean {\n return value !== undefined && `${value}` !== 'false';\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\n SkyTextEditorFont\n} from '../types/font-state';\n\n/**\n * @internal\n */\nexport const FONT_LIST_DEFAULTS: SkyTextEditorFont[] = [\n {\n name: 'Blackbaud Sans',\n value: '\"Blackbaud Sans\", Arial, sans-serif'\n },\n {\n name: 'Arial',\n value: 'Arial'\n },\n {\n name: 'Arial Black',\n value: '\"Arial Black\"'\n },\n {\n name: 'Courier New',\n value: '\"Courier New\"'\n },\n {\n name: 'Georgia',\n value: 'Georgia, serif'\n },\n {\n name: 'Tahoma',\n value: 'Tahoma, Geneva, sans-serif'\n },\n {\n name: 'Times New Roman',\n value: '\"Times New Roman\"'\n },\n {\n name: 'Trebuchet MS',\n value: '\"Trebuchet MS\", sans-serif'\n },\n {\n name: 'Verdana',\n value: 'Verdana, Geneva, sans-serif'\n }\n];\n","import {\n FONT_LIST_DEFAULTS\n} from './font-list-defaults';\n\nimport {\n SkyTextEditorStyleState\n} from '../types/style-state';\n\n/**\n * @internal\n */\nexport const STYLE_STATE_DEFAULTS: SkyTextEditorStyleState = {\n backColor: 'rgba(0, 0, 0, 0)',\n fontColor: '#000',\n fontSize: 14,\n font: FONT_LIST_DEFAULTS[0].value,\n boldState: false,\n italicState: false,\n underlineState: false,\n linkState: false\n};\n","/**\n * @internal\n */\nexport enum UrlTarget {\n None = 0,\n NewWindow = 1\n}\n","import {\n Injectable\n} from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class SkyTextEditorSelectionService {\n public isElementSelected(documentEl: Document, element: HTMLElement) {\n const selectedNode = this.getCurrentSelection(documentEl).anchorNode as HTMLElement;\n return selectedNode &&\n (\n element.contains(selectedNode) || (selectedNode.parentNode && element.contains(selectedNode.parentNode))\n );\n }\n\n public getCurrentSelection(documentEl: Document): Selection {\n return documentEl.getSelection();\n }\n\n public getCurrentSelectionParentElement(documentEl: Document): Element {\n const selection = this.getCurrentSelection(documentEl);\n let selectedEl: Element;\n /* istanbul ignore else */\n if (selection &&\n selection.getRangeAt &&\n selection.getRangeAt(0).commonAncestorContainer\n ) {\n selectedEl = selection.getRangeAt(0).commonAncestorContainer as Element;\n selectedEl = selectedEl.nodeType !== 1 ? selectedEl.parentElement : selectedEl;\n } else if (selection && selection.type !== 'Control') {\n selectedEl = (selection as any).createRange().parentElement();\n } else {\n return undefined;\n }\n return selectedEl;\n }\n\n public getCurrentSelectionRange(documentEl: Document, windowEl: Window): Range {\n /* istanbul ignore else */\n if (windowEl.getSelection) {\n const sel = windowEl.getSelection();\n 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 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\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(/&nbsp;/, String.fromCharCode(160))\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&amp;/g, '&');\n }\n\n private setEditorDisabled(id: string, focusableChildren: HTMLElement[], textEditorNativeElement: any, disabled: boolean): void {\n textEditorNativeElement.style.pointerEvents = disabled ? 'none' : 'auto';\n textEditorNativeElement.setAttribute('aria-disabled', disabled ? 'true' : 'false');\n /* istanbul ignore else */\n if (focusableChildren.length > 0) {\n focusableChildren.forEach(aFocusableChild => {\n aFocusableChild.tabIndex = disabled ? -1 : 0;\n });\n }\n this.getIframeDocumentEl(id).body.setAttribute('contenteditable', disabled ? 'false' : 'true');\n }\n\n}\n","import {\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit\n} from '@angular/core';\n\nimport {\n SkyLibResourcesService\n} from '@skyux/i18n';\n\nimport {\n SkyDropdownMessage,\n SkyDropdownMessageType\n} from '@skyux/popovers';\n\nimport {\n forkJoin,\n Subject\n} from 'rxjs';\n\nimport {\n take,\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n SkyTextEditorAdapterService\n} from '../services/text-editor-adapter.service';\n\nimport {\n SkyTextEditorMenuType\n} from '../types/menu-type';\n\nimport {\n SkyTextEditorMergeField\n} from '../types/text-editor-merge-field';\n\nimport {\n SkyFormsUtility\n} from '../../shared/forms-utility';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-text-editor-menubar',\n templateUrl: './text-editor-menubar.component.html',\n styleUrls: ['./text-editor-menubar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkyTextEditorMenubarComponent implements OnDestroy, OnInit {\n\n @Input()\n public editorFocusStream = new Subject();\n\n @Input()\n public editorId: string;\n\n @Input()\n public menus: SkyTextEditorMenuType[] = [];\n\n @Input()\n public mergeFields: SkyTextEditorMergeField[] = [];\n\n @Input()\n public set disabled(value: boolean) {\n const coercedValue = SkyFormsUtility.coerceBooleanProperty(value);\n if (coercedValue !== this.disabled) {\n this._disabled = coercedValue;\n this.changeDetector.markForCheck();\n }\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n private _disabled: boolean = false;\n\n public editDropdownStream = new Subject<SkyDropdownMessage>();\n\n public editItems: {\n function?: () => void,\n isDivider?: boolean,\n label?: string,\n keyShortcut?: string\n }[];\n\n public formatDropdownStream = new Subject<SkyDropdownMessage>();\n\n public formatItems: {\n function?: () => void,\n isDivider?: boolean,\n label?: string,\n keyShortcut?: string\n }[];\n\n public mergeFieldDropdownStream = new Subject<SkyDropdownMessage>();\n\n private ngUnsubscribe = new Subject<void>();\n\n constructor(\n private adapterService: SkyTextEditorAdapterService,\n private changeDetector: ChangeDetectorRef,\n private resources: SkyLibResourcesService\n ) {}\n\n public ngOnInit(): void {\n this.editorFocusStream\n .pipe(\n takeUntil(this.ngUnsubscribe)\n ).subscribe(() => {\n this.closeDropdowns();\n });\n\n forkJoin([\n // Format menu strings.\n this.resources.getString('skyux_text_editor_format_menu_action_bold_label'),\n this.resources.getString('skyux_text_editor_format_menu_action_bold_key_shortcut'),\n this.resources.getString('skyux_text_editor_format_menu_action_italic_label'),\n this.resources.getString('skyux_text_editor_format_menu_action_italic_key_shortcut'),\n this.resources.getString('skyux_text_editor_format_menu_action_underline_label'),\n this.resources.getString('skyux_text_editor_format_menu_action_underline_key_shortcut'),\n this.resources.getString('skyux_text_editor_format_menu_action_strikethrough_label'),\n this.resources.getString('skyux_text_editor_format_menu_action_clear_formatting_label'),\n\n // Edit menu string - start at index 8.\n this.resources.getString('skyux_text_editor_edit_menu_action_undo_label'),\n this.resources.getString('skyux_text_editor_edit_menu_action_undo_key_shortcut'),\n this.resources.getString('skyux_text_editor_edit_menu_action_redo_label'),\n this.resources.getString('skyux_text_editor_edit_menu_action_redo_key_shortcut'),\n this.resources.getString('skyux_text_editor_edit_menu_action_cut_label'),\n this.resources.getString('skyux_text_editor_edit_menu_action_cut_key_shortcut'),\n this.resources.getString('skyux_text_editor_edit_menu_action_copy_label'),\n this.resources.getString('skyux_text_editor_edit_menu_action_copy_key_shortcut'),\n this.resources.getString('skyux_text_editor_edit_menu_action_paste_label'),\n this.resources.getString('skyux_text_editor_edit_menu_action_paste_key_shortcut'),\n this.resources.getString('skyux_text_editor_edit_menu_action_select_all_label'),\n this.resources.getString('skyux_text_editor_edit_menu_action_select_all_key_shortcut')\n\n ])\n .pipe(take(1))\n .subscribe(resources => {\n this.formatItems = [\n {\n function: () => this.execCommand('bold'),\n label: resources[0],\n keyShortcut: resources[1]\n },\n {\n function: () => this.execCommand('italic'),\n label: resources[2],\n keyShortcut: resources[3]\n },\n {\n function: () => this.execCommand('underline'),\n label: resources[4],\n keyShortcut: resources[5]\n },\n {\n function: () => this.execCommand('strikethrough'),\n label: resources[6]\n },\n {\n isDivider: true\n },\n {\n function: () => this.clearFormat(),\n label: resources[7]\n }\n ];\n this.editItems = [\n {\n function: () => this.execCommand('undo'),\n label: resources[8],\n keyShortcut: resources[9]\n },\n {\n function: () => this.execCommand('redo'),\n label: resources[10],\n keyShortcut: resources[11]\n },\n {\n isDivider: true\n },\n {\n function: () => this.execCommand('cut'),\n label: resources[12],\n keyShortcut: resources[13]\n },\n {\n function: () => this.execCommand('copy'),\n label: resources[14],\n keyShortcut: resources[15]\n },\n {\n function: () => this.execCommand('paste'),\n label: resources[16],\n keyShortcut: resources[17]\n },\n {\n isDivider: true\n },\n {\n function: () => this.execCommand('selectAll'),\n label: resources[18],\n keyShortcut: resources[19]\n }\n ];\n });\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public execCommand(command: string, value: any = ''): void {\n this.adapterService.execCommand(this.editorId, {\n command: command,\n value: value\n });\n }\n\n public insertMergeField(field: SkyTextEditorMergeField): void {\n this.execCommand(\n 'insertHTML',\n '<img style=\"display: inline; cursor: grab;\" data-fieldid=\"' + field.id +\n '\" data-fielddisplay=\"' + field.name +\n '\" src=\"' + (field.previewImageUrl || this.adapterService.getMergeFieldDataURI(field.name)) + '\">'\n );\n }\n\n private closeDropdowns(): void {\n this.editDropdownStream.next({ type: SkyDropdownMessageType.Close });\n this.formatDropdownStream.next({ type: SkyDropdownMessageType.Close });\n this.mergeFieldDropdownStream.next({ type: SkyDropdownMessageType.Close });\n }\n\n private clearFormat(): void {\n let currentSelection = this.adapterService.getCurrentSelection(this.editorId);\n if (currentSelection.rangeCount > 0 && currentSelection.getRangeAt(0).toString().length <= 0) {\n this.execCommand('selectAll');\n }\n this.execCommand('removeFormat');\n }\n\n}\n","\n <sky-toolbar-item *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n >\n <ng-container\n [ngSwitch]=\"menu\"\n >\n <ng-container *ngSwitchCase=\"'edit'\">\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{ 'skyux_text_editor_menubar_dropdown_button_edit_label' | skyLibResources }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem.function()\"\n >\n {{ editItem.label }}\n <div *ngIf=\"editItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized' : 'modern',\n 'sky-deemphasized' : 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n </button>\n <div *ngIf=\"editItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n >\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'format'\">\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{ 'skyux_text_editor_menubar_dropdown_button_format_label' | skyLibResources }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let formatItem of formatItems\">\n <button *ngIf=\"!formatItem.isDivider\"\n type=\"button\"\n (click)=\"formatItem.function()\"\n >\n {{ formatItem.label }}\n <div *ngIf=\"formatItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized' : 'modern',\n 'sky-deemphasized' : 'default'\n }\"\n >\n {{ formatItem.keyShortcut}}\n </div>\n </button>\n <div *ngIf=\"formatItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n >\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'merge-field'\">\n <sky-dropdown *ngIf=\"mergeFields && mergeFields.length > 0\"\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{ 'skyux_text_editor_menubar_dropdown_button_insert_label' | skyLibResources }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let mergeField of mergeFields\">\n <button\n type=\"button\"\n (click)=\"insertMergeField(mergeField)\"\n >\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n </ng-container>\n </sky-toolbar-item>\n","import {\n UrlModalResult\n} from './text-editor-url-modal-result';\n\n/**\n * @internal\n */\nexport class SkyUrlModalContext {\n public urlResult: UrlModalResult;\n}\n","import {\n Component\n} from '@angular/core';\n\nimport {\n SkyModalInstance\n} from '@skyux/modals';\n\nimport {\n SkyValidation\n} from '@skyux/validation';\n\nimport {\n UrlModalResult\n} from './text-editor-url-modal-result';\n\nimport {\n SkyUrlModalContext\n} from './text-editor-url-modal-context';\n\nimport {\n UrlTarget\n} from './text-editor-url-target';\n\nconst emailKey = 'mailto:';\nconst queryStringParamKey = '?Subject=';\n\n/**\n * @internal\n */\n@Component({\n selector: '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","<sky-modal>\n <sky-modal-header>\n {{ 'skyux_text_editor_url_modal_header_label' | skyLibResources }}\n </sky-modal-header>\n <sky-modal-content>\n <sky-tabset\n data-sky-id=\"test-tabset\"\n [active]=\"activeTab\"\n (activeChange)=\"activeTabChanged($event)\"\n >\n <sky-tab\n tabHeading=\"Web page\"\n >\n <div class=\"sky-form-group sky-text-editor-url-modal-first-field\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"urlInput.id\"\n >\n {{ 'skyux_text_editor_url_modal_url_label' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n type=\"text\"\n [(ngModel)]=\"url\"\n skyId\n #urlInput=\"skyId\"\n />\n </sky-input-box>\n </div>\n <sky-input-box class=\"sky-form-group\">\n <label\n class=\"sky-control-label\"\n [for]=\"targetInput.id\"\n >\n {{ 'skyux_text_editor_url_modal_open_label' | skyLibResources }}\n </label>\n <select\n class=\"sky-form-control\"\n [(ngModel)]=\"target\"\n skyId\n #targetInput=\"skyId\"\n >\n <option value=\"0\">\n {{ 'skyux_text_editor_url_modal_current_option_label' | skyLibResources }}\n </option>\n <option value=\"1\">\n {{ 'skyux_text_editor_url_modal_new_option_label' | skyLibResources }}\n </option>\n </select>\n </sky-input-box>\n </sky-tab>\n <sky-tab\n tabHeading=\"Email address\"\n >\n <div class=\"sky-form-group first-field\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"emailAddressInput.id\"\n >\n {{ 'skyux_text_editor_url_modal_email_label' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n type=\"text\"\n [(ngModel)]=\"emailAddress\"\n skyId\n #emailAddressInput=\"skyId\"\n />\n </sky-input-box>\n </div>\n <sky-input-box class=\"sky-form-group\">\n <label\n class=\"sky-control-label\"\n [for]=\"subjectInput.id\"\n >\n {{ 'skyux_text_editor_url_modal_subject_label' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n type=\"text\"\n [(ngModel)]=\"subject\"\n skyId\n #subjectInput=\"skyId\"\n />\n </sky-input-box>\n </sky-tab>\n </sky-tabset>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n type=\"submit\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!valid\"\n (click)=\"save()\"\n >\n {{ 'skyux_text_editor_url_modal_save_button_label' | skyLibResources }}\n </button>\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-link\"\n (click)=\"cancel()\"\n >\n {{ 'skyux_text_editor_url_modal_cancel_button_label' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit\n} from '@angular/core';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n SkyColorpickerOutput,\n SkyColorpickerMessage,\n SkyColorpickerMessageType\n} from '@skyux/colorpicker';\n\nimport {\n SkyModalCloseArgs,\n SkyModalService\n} from '@skyux/modals';\n\nimport {\n SkyDropdownMessage,\n SkyDropdownMessageType\n} from '@skyux/popovers';\n\nimport {\n STYLE_STATE_DEFAULTS\n} from '../defaults/style-state-defaults';\n\nimport {\n SkyTextEditorAdapterService\n} from '../services/text-editor-adapter.service';\n\nimport {\n SkyTextEditorFont\n} from '../types/font-state';\n\nimport {\n SkyTextEditorStyleState\n} from '../types/style-state';\n\nimport {\n SkyTextEditorToolbarActionType\n} from '../types/toolbar-action-type';\n\nimport {\n SkyTextEditorUrlModalComponent\n} from '../url-modal/text-editor-url-modal.component';\n\nimport {\n UrlTarget\n} from '../url-modal/text-editor-url-target';\n\nimport {\n SkyUrlModalContext\n} from '../url-modal/text-editor-url-modal-context';\n\nimport {\n SkyFormsUtility\n} from '../../shared/forms-utility';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-text-editor-toolbar',\n templateUrl: './text-editor-toolbar.component.html',\n styleUrls: ['./text-editor-toolbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkyTextEditorToolbarComponent implements OnInit {\n\n @Input()\n public editorFocusStream = new Subject();\n\n @Input()\n public editorId: string;\n\n @Input()\n public fontList: SkyTextEditorFont[];\n\n @Input()\n public fontSizeList: number[];\n\n @Input()\n public toolbarActions: SkyTextEditorToolbarActionType[];\n\n @Input()\n public get styleState(): SkyTextEditorStyleState {\n return this._styleState;\n }\n public set styleState(value: SkyTextEditorStyleState) {\n this._styleState = value;\n if (value.font !== this.styleStateFontName) {\n if (value.font === '\\\"Blackbaud Sans\\\", Arial, sans-serif') {\n this.styleStateFontName = this.getFontName('Blackbaud Sans');\n } else {\n this.styleStateFontName = this.getFontName(value.font);\n }\n }\n }\n\n @Input()\n public set disabled(value: boolean) {\n const coercedValue = SkyFormsUtility.coerceBooleanProperty(value);\n if (coercedValue !== this.disabled) {\n this._disabled = coercedValue;\n this.changeDetector.markForCheck();\n }\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public backColorpickerStream = new Subject<SkyColorpickerMessage>();\n\n public colorpickerStream = new Subject<SkyColorpickerMessage>();\n\n public fontPickerStream = new Subject<SkyDropdownMessage>();\n\n public fontSizeStream = new Subject<SkyDropdownMessage>();\n\n public styleStateFontName: string;\n\n private _disabled: boolean = false;\n\n private _styleState = STYLE_STATE_DEFAULTS;\n\n constructor(\n private adapterService: SkyTextEditorAdapterService,\n private changeDetector: ChangeDetectorRef,\n private modalService: SkyModalService\n ) {}\n\n public ngOnInit(): void {\n this.editorFocusStream.subscribe(() => {\n this.styleState = {\n ...this._styleState,\n ...this.adapterService.getStyleState(this.editorId) as any\n };\n this.closeDropdowns();\n this.changeDetector.detectChanges();\n });\n }\n\n public execCommand(command: string, value: any = ''): void {\n this.adapterService.execCommand(this.editorId, {\n command: command,\n value: value\n });\n this.styleState = {\n ...this.styleState,\n ...this.adapterService.getStyleState(this.editorId)\n };\n }\n\n public toggleFontStyle(currentState: boolean, newState: boolean, command: string): void {\n if (currentState !== newState) {\n this.execCommand(command);\n }\n\n // Force sky-checkbox to show changes on user's initial click.\n this.changeDetector.detectChanges();\n }\n\n public link(): void {\n const priorSelection = this.adapterService.saveSelection(this.editorId);\n const currentLink = this.adapterService.getLink(this.editorId);\n const inputModal = this.modalService.open(SkyTextEditorUrlModalComponent, [{\n provide: SkyUrlModalContext,\n useValue: { urlResult: currentLink }\n }]);\n inputModal.closed.subscribe((result: SkyModalCloseArgs) => {\n if (result.reason === 'save' && priorSelection) {\n if (currentLink) {\n const anchor = this.adapterService.getSelectedAnchorTag(this.editorId);\n this.adapterService.selectElement(this.editorId, anchor);\n }\n\n this.execCommand('unlink');\n if (result.data.target === UrlTarget.None) {\n // Current window\n this.execCommand('createLink', result.data.url);\n } else {\n // New Window\n const sText = this.adapterService.getCurrentSelection(this.editorId);\n this.execCommand('insertHTML', '<a href=\"' + result.data.url + '\" rel=\"noopener noreferrer\" target=\"_blank\">' + sText + '</a>');\n }\n }\n });\n }\n\n public unlink(): void {\n let currentSelectionRange = this.adapterService.getCurrentSelection(this.editorId).getRangeAt(0);\n if (currentSelectionRange.toString().length <= 0) {\n const anchorTag = this.adapterService.getSelectedAnchorTag(this.editorId);\n this.adapterService.selectElement(this.editorId, anchorTag);\n }\n this.execCommand('unlink');\n }\n\n public changeFontSize(size: number): void {\n this.adapterService.setFontSize(this.editorId, size);\n this.styleState = {\n ...this.styleState,\n ...this.adapterService.getStyleState(this.editorId)\n };\n }\n\n public onColorpickerColorChanged(color: SkyColorpickerOutput, isBackground = false): void {\n this.execCommand(isBackground ? 'backColor' : 'foreColor', color.hex);\n }\n\n private closeDropdowns(): void {\n const message: SkyColorpickerMessage = { type: SkyColorpickerMessageType.Close };\n this.colorpickerStream.next(message);\n this.backColorpickerStream.next(message);\n this.fontPickerStream.next({ type: SkyDropdownMessageType.Close });\n this.fontSizeStream.next({ type: SkyDropdownMessageType.Close });\n }\n\n private getFontName(fontName: string): string {\n for (let i = 0; i < this.fontList.length; i++) {\n if (fontName.replace(/['\"]+/g, '') === this.fontList[i].name) {\n return this.fontList[i].name;\n }\n }\n }\n}\n","\n <sky-toolbar-item *ngFor=\"let action of toolbarActions\"\n class=\"sky-text-editor-toolbar-action\"\n [ngClass]=\"'sky-text-editor-toolbar-action-' + action\"\n >\n <ng-container\n [ngSwitch]=\"action\"\n >\n <ng-container *ngSwitchCase=\"'font-family'\">\n <sky-dropdown\n class=\"sky-text-editor-font-picker\"\n [disabled]=\"disabled\"\n [label]=\"'Font: ' + styleStateFontName\"\n [messageStream]=\"fontPickerStream\"\n >\n <sky-dropdown-button\n [ngStyle]=\"{\n 'font-family': styleState.font\n }\"\n >\n {{ styleStateFontName }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let fontModel of fontList\">\n <button\n type=\"button\"\n [ngStyle]=\"{\n 'font-family': fontModel.value\n }\"\n (click)=\"execCommand('fontname', fontModel.name)\"\n >\n {{ fontModel.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'font-size'\">\n <sky-dropdown\n class=\"sky-text-editor-font-size-picker\"\n [disabled]=\"disabled\"\n [label]=\"'Font size: ' + styleState.fontSize + 'px'\"\n [messageStream]=\"fontSizeStream\"\n >\n <sky-dropdown-button\n [ngStyle]=\"{\n 'font-family': styleState.fontSize\n }\"\n >\n {{ styleState.fontSize + 'px' }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let size of fontSizeList\">\n <button\n type=\"button\"\n (click)=\"changeFontSize(size)\"\n >\n {{ size + 'px' }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'font-style'\">\n <div\n class=\"sky-switch-icon-group sky-text-editor-font-style-picker\"\n >\n <sky-checkbox\n icon=\"bold\"\n label=\"Bold\"\n title=\"Bold\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.boldState\"\n (ngModelChange)=\"toggleFontStyle(styleState.boldState, $event, 'bold')\"\n >\n </sky-checkbox>\n <sky-checkbox\n icon=\"italic\"\n label=\"Italicized\"\n title=\"Italicized\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.italicState\"\n (ngModelChange)=\"toggleFontStyle(styleState.italicState, $event, 'italic')\"\n >\n </sky-checkbox>\n <sky-checkbox\n icon=\"underline\"\n label=\"Underline\"\n title=\"Underline\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.underlineState\"\n (ngModelChange)=\"toggleFontStyle(styleState.underlineState, $event, 'underline')\"\n >\n </sky-checkbox>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'color'\">\n <div class=\"sky-text-editor-colorpicker-group\">\n <div class=\"sky-text-editor-colorpicker-container\">\n <sky-colorpicker\n class=\"sky-text-editor-font-color-picker\"\n label=\"Font color\"\n [messageStream]=\"colorpickerStream\"\n [showResetButton]=\"false\"\n (selectedColorChanged)=\"onColorpickerColorChanged($event)\"\n #colorPicker\n >\n <input\n outputFormat=\"hex\"\n type=\"text\"\n [allowTransparency]=\"false\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.fontColor\"\n [skyColorpickerInput]=\"colorPicker\"\n />\n </sky-colorpicker>\n </div>\n <div class=\"sky-text-editor-colorpicker-container\">\n <sky-colorpicker\n class=\"sky-text-editor-background-color-picker\"\n label=\"Background color\"\n [messageStream]=\"backColorpickerStream\"\n [showResetButton]=\"false\"\n (selectedColorChanged)=\"onColorpickerColorChanged($event, true)\"\n #backColorPicker\n >\n <input\n outputFormat=\"rgba\"\n type=\"text\"\n [allowTransparency]=\"true\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.backColor\"\n [skyColorpickerInput]=\"backColorPicker\"\n />\n </sky-colorpicker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'list'\">\n <div\n class=\"sky-switch-icon-group\"\n >\n <button\n aria-label=\"Bulleted list\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Bulleted list\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('insertUnorderedList')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"list-ul\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"bullet-list-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Numbered list\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Numbered list\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('insertOrderedList')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"list-ol\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"number-list-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'alignment'\">\n <div\n class=\"sky-switch-icon-group\"\n >\n <button\n aria-label=\"Align left\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align left\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyLeft')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"align-left\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"align-left-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Align center\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align center\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyCenter')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"align-center\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"center-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Align right\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align right\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyRight')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"align-right\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"align-right-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'indentation'\">\n <div\n class=\"sky-switch-icon-group\"\n >\n <button\n aria-label=\"Outdent\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Outdent\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('outdent')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"outdent\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"outdent-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Indent\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Indent\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('indent')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"indent\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"indent-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'undo-redo'\">\n <div\n class=\"sky-switch-icon-group\"\n >\n <button\n aria-label=\"Undo\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Undo\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('undo')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"undo\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"undo-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Redo\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Redo\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('redo')\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"repeat\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"redo-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'link'\">\n <div\n class=\"sky-switch-icon-group\"\n >\n <button\n aria-label=\"Link\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Link\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'icon-btn-active': styleState.linkState\n }\"\n (click)=\"link()\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"link\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"link-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Unlink\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Unlink\"\n [disabled]=\"!styleState.linkState || disabled\"\n (click)=\"unlink()\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"unlink\"\n >\n </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"unlink-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n </ng-container>\n </sky-toolbar-item>\n","import {\n SkyTextEditorMenuType\n} from '../types/menu-type';\n\n/**\n * @internal\n */\nexport const MENU_DEFAULTS: SkyTextEditorMenuType[] = [\n 'edit',\n 'format'\n];\n","import {\n SkyTextEditorToolbarActionType\n} from '../types/toolbar-action-type';\n\n/**\n * @internal\n */\nexport const TOOLBAR_ACTION_DEFAULTS: SkyTextEditorToolbarActionType[] = [\n 'font-family',\n 'font-size',\n 'font-style',\n 'color',\n 'list',\n 'link'\n];\n","/**\n * @internal\n */\nexport const FONT_SIZE_LIST_DEFAULTS: number[] = [6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 36, 48];\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n Input,\n OnDestroy,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR\n} from '@angular/forms';\n\nimport {\n takeUntil\n} from 'rxjs/operators';\n\nimport {\n Subject\n} from 'rxjs';\n\nimport {\n SkyCoreAdapterService\n} from '@skyux/core';\n\nimport {\n MENU_DEFAULTS\n} from './defaults/menu-defaults';\n\nimport {\n STYLE_STATE_DEFAULTS\n} from './defaults/style-state-defaults';\n\nimport {\n TOOLBAR_ACTION_DEFAULTS\n} from './defaults/toolbar-action-defaults';\n\nimport {\n SkyTextEditorAdapterService\n} from './services/text-editor-adapter.service';\n\nimport {\n SkyTextEditorService\n} from './services/text-editor.service';\n\nimport {\n SkyTextSanitizationService\n} from './services/text-sanitization.service';\n\nimport {\n FONT_LIST_DEFAULTS\n} from './defaults/font-list-defaults';\n\nimport {\n FONT_SIZE_LIST_DEFAULTS\n} from './defaults/font-size-list-defaults';\n\nimport {\n SkyTextEditorFont\n} from './types/font-state';\n\nimport {\n SkyTextEditorMenuType\n} from './types/menu-type';\n\nimport {\n SkyTextEditorStyleState\n} from './types/style-state';\n\nimport {\n SkyTextEditorMergeField\n} from './types/text-editor-merge-field';\n\nimport {\n SkyTextEditorToolbarActionType\n} from './types/toolbar-action-type';\n\nimport {\n SkyFormsUtility\n} from '../shared/forms-utility';\n\n/**\n * Auto-incrementing integer used to generate unique ids for radio components.\n */\nlet nextUniqueId = 0;\n\n/**\n * The text editor component lets users format and manipulate text.\n */\n@Component({\n selector: 'sky-text-editor',\n templateUrl: './text-editor.component.html',\n styleUrls: ['./text-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line: no-forward-ref\n useExisting: forwardRef(() => SkyTextEditorComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SkyTextEditorComponent implements AfterViewInit, ControlValueAccessor, OnDestroy {\n\n /**\n * Indicates whether to put focus on the editor after it renders.\n */\n @Input()\n public autofocus: boolean = false;\n\n /**\n * Indicates whether to disable the text editor.\n * @default false\n */\n @Input()\n public set disabled(value: boolean) {\n const coercedValue = SkyFormsUtility.coerceBooleanProperty(value);\n if (coercedValue !== this.disabled) {\n this._disabled = coercedValue;\n 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","<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","import {\n NgModule\n} from '@angular/core';\n\nimport {\n CommonModule\n} from '@angular/common';\n\nimport {\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\n\nimport {\n SkyColorpickerModule\n} from '@skyux/colorpicker';\n\nimport {\n SkyCoreAdapterModule,\n SkyIdModule\n} from '@skyux/core';\n\nimport {\n SkyCheckboxModule,\n SkyInputBoxModule\n} from '@skyux/forms';\n\nimport {\n SkyModalModule\n} from '@skyux/modals';\n\nimport {\n SkyI18nModule\n} from '@skyux/i18n';\n\nimport {\n SkyIconModule\n} from '@skyux/indicators';\n\nimport {\n SkyToolbarModule\n} from '@skyux/layout';\n\nimport {\n SkyDropdownModule\n} from '@skyux/popovers';\n\nimport {\n SkyTabsModule\n} from '@skyux/tabs';\n\nimport {\n SkyThemeModule\n} from '@skyux/theme';\n\nimport {\n SkyTextEditorResourcesModule\n} from '../../modules/shared/sky-text-editor-resources.module';\n\nimport {\n SkyTextEditorMenubarComponent\n} from './menubar/text-editor-menubar.component';\n\nimport {\n SkyTextEditorToolbarComponent\n} from './toolbar/text-editor-toolbar.component';\n\nimport {\n SkyTextEditorUrlModalComponent\n} from './url-modal/text-editor-url-modal.component';\n\nimport {\n SkyTextEditorComponent\n} from './text-editor.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyCoreAdapterModule,\n SkyTextEditorResourcesModule,\n SkyI18nModule,\n SkyIconModule,\n SkyIdModule,\n SkyInputBoxModule,\n SkyColorpickerModule,\n SkyCheckboxModule,\n SkyDropdownModule,\n SkyModalModule,\n SkyTabsModule,\n SkyThemeModule,\n SkyToolbarModule\n ],\n exports: [\n SkyTextEditorComponent,\n SkyTextEditorUrlModalComponent,\n SkyTextEditorToolbarComponent,\n SkyTextEditorMenubarComponent\n ],\n declarations: [\n SkyTextEditorComponent,\n SkyTextEditorUrlModalComponent,\n SkyTextEditorToolbarComponent,\n SkyTextEditorMenubarComponent\n ],\n entryComponents: [\n SkyTextEditorUrlModalComponent\n ]\n})\nexport class SkyTextEditorModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["createDOMPurify","Injectable","Component","Input","CommonModule","NgModule","getLibStringForLocale","SkyI18nModule","SKY_LIB_RESOURCES_PROVIDERS","Subject","takeUntil","forkJoin","take","SkyDropdownMessageType","ChangeDetectionStrategy","SkyValidation","SkyColorpickerMessageType","NG_VALUE_ACCESSOR","forwardRef","ViewEncapsulation","ViewChild","FormsModule","ReactiveFormsModule","SkyCoreAdapterModule","SkyIconModule","SkyIdModule","SkyInputBoxModule","SkyColorpickerModule","SkyCheckboxModule","SkyDropdownModule","SkyModalModule","SkyTabsModule","SkyThemeModule","SkyToolbarModule"],"mappings":"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"}