@lotte-innovate/ui-component-test 0.1.121 → 0.1.123
Sign up to get free protection for your applications and to get access to all the features.
- package/_virtual/icons.mjs +2 -0
- package/_virtual/icons.mjs.map +1 -0
- package/_virtual/index.mjs +2 -0
- package/_virtual/index.mjs.map +1 -0
- package/_virtual/index10.mjs +2 -0
- package/_virtual/index10.mjs.map +1 -0
- package/_virtual/index11.mjs +2 -0
- package/_virtual/index11.mjs.map +1 -0
- package/_virtual/index12.mjs +2 -0
- package/_virtual/index12.mjs.map +1 -0
- package/_virtual/index13.mjs +2 -0
- package/_virtual/index13.mjs.map +1 -0
- package/_virtual/index14.mjs +2 -0
- package/_virtual/index14.mjs.map +1 -0
- package/_virtual/index15.mjs +2 -0
- package/_virtual/index15.mjs.map +1 -0
- package/_virtual/index16.mjs +2 -0
- package/_virtual/index16.mjs.map +1 -0
- package/_virtual/index17.mjs +2 -0
- package/_virtual/index17.mjs.map +1 -0
- package/_virtual/index18.mjs +2 -0
- package/_virtual/index18.mjs.map +1 -0
- package/_virtual/index19.mjs +2 -0
- package/_virtual/index19.mjs.map +1 -0
- package/_virtual/index2.mjs +2 -0
- package/_virtual/index2.mjs.map +1 -0
- package/_virtual/index20.mjs +2 -0
- package/_virtual/index20.mjs.map +1 -0
- package/_virtual/index3.mjs +2 -0
- package/_virtual/index3.mjs.map +1 -0
- package/_virtual/index4.mjs +2 -0
- package/_virtual/index4.mjs.map +1 -0
- package/_virtual/index5.mjs +2 -0
- package/_virtual/index5.mjs.map +1 -0
- package/_virtual/index6.mjs +2 -0
- package/_virtual/index6.mjs.map +1 -0
- package/_virtual/index7.mjs +2 -0
- package/_virtual/index7.mjs.map +1 -0
- package/_virtual/index8.mjs +2 -0
- package/_virtual/index8.mjs.map +1 -0
- package/_virtual/index9.mjs +2 -0
- package/_virtual/index9.mjs.map +1 -0
- package/_virtual/model.mjs +2 -0
- package/_virtual/model.mjs.map +1 -0
- package/_virtual/plugin.mjs +2 -0
- package/_virtual/plugin.mjs.map +1 -0
- package/_virtual/plugin2.mjs +2 -0
- package/_virtual/plugin2.mjs.map +1 -0
- package/_virtual/plugin3.mjs +2 -0
- package/_virtual/plugin3.mjs.map +1 -0
- package/_virtual/plugin4.mjs +2 -0
- package/_virtual/plugin4.mjs.map +1 -0
- package/_virtual/plugin5.mjs +2 -0
- package/_virtual/plugin5.mjs.map +1 -0
- package/_virtual/plugin6.mjs +2 -0
- package/_virtual/plugin6.mjs.map +1 -0
- package/_virtual/plugin7.mjs +2 -0
- package/_virtual/plugin7.mjs.map +1 -0
- package/_virtual/theme.mjs +2 -0
- package/_virtual/theme.mjs.map +1 -0
- package/_virtual/tinymce.mjs +2 -0
- package/_virtual/tinymce.mjs.map +1 -0
- package/_virtual/tinymce2.mjs +2 -0
- package/_virtual/tinymce2.mjs.map +1 -0
- package/dist/lib/components/Editor/index.mjs +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/public/tinymce/icons/default/icons.mjs +2 -0
- package/public/tinymce/icons/default/icons.mjs.map +1 -0
- package/public/tinymce/icons/default/index.mjs +2 -0
- package/public/tinymce/icons/default/index.mjs.map +1 -0
- package/public/tinymce/models/dom/index.mjs +2 -0
- package/public/tinymce/models/dom/index.mjs.map +1 -0
- package/public/tinymce/models/dom/model.mjs +2 -0
- package/public/tinymce/models/dom/model.mjs.map +1 -0
- package/public/tinymce/plugins/advlist/index.mjs +2 -0
- package/public/tinymce/plugins/advlist/index.mjs.map +1 -0
- package/public/tinymce/plugins/advlist/plugin.mjs +2 -0
- package/public/tinymce/plugins/advlist/plugin.mjs.map +1 -0
- package/public/tinymce/plugins/code/index.mjs +2 -0
- package/public/tinymce/plugins/code/index.mjs.map +1 -0
- package/public/tinymce/plugins/code/plugin.mjs +2 -0
- package/public/tinymce/plugins/code/plugin.mjs.map +1 -0
- package/public/tinymce/plugins/codesample/index.mjs +2 -0
- package/public/tinymce/plugins/codesample/index.mjs.map +1 -0
- package/public/tinymce/plugins/codesample/plugin.mjs +2 -0
- package/public/tinymce/plugins/codesample/plugin.mjs.map +1 -0
- package/public/tinymce/plugins/image/index.mjs +2 -0
- package/public/tinymce/plugins/image/index.mjs.map +1 -0
- package/public/tinymce/plugins/image/plugin.mjs +2 -0
- package/public/tinymce/plugins/image/plugin.mjs.map +1 -0
- package/public/tinymce/plugins/link/index.mjs +2 -0
- package/public/tinymce/plugins/link/index.mjs.map +1 -0
- package/public/tinymce/plugins/link/plugin.mjs +2 -0
- package/public/tinymce/plugins/link/plugin.mjs.map +1 -0
- package/public/tinymce/plugins/lists/index.mjs +2 -0
- package/public/tinymce/plugins/lists/index.mjs.map +1 -0
- package/public/tinymce/plugins/lists/plugin.mjs +2 -0
- package/public/tinymce/plugins/lists/plugin.mjs.map +1 -0
- package/public/tinymce/plugins/table/index.mjs +2 -0
- package/public/tinymce/plugins/table/index.mjs.map +1 -0
- package/public/tinymce/plugins/table/plugin.mjs +2 -0
- package/public/tinymce/plugins/table/plugin.mjs.map +1 -0
- package/public/tinymce/skins/content/default/content.mjs +2 -0
- package/public/tinymce/skins/content/default/content.mjs.map +1 -0
- package/public/tinymce/skins/ui/oxide/content.mjs +2 -0
- package/public/tinymce/skins/ui/oxide/content.mjs.map +1 -0
- package/public/tinymce/skins/ui/oxide/skin.mjs +2 -0
- package/public/tinymce/skins/ui/oxide/skin.mjs.map +1 -0
- package/public/tinymce/themes/silver/index.mjs +2 -0
- package/public/tinymce/themes/silver/index.mjs.map +1 -0
- package/public/tinymce/themes/silver/theme.mjs +2 -0
- package/public/tinymce/themes/silver/theme.mjs.map +1 -0
- package/public/tinymce/tinymce.mjs +2 -0
- package/public/tinymce/tinymce.mjs.map +1 -0
- package/dist/public/tinymce/icons/default/icons.d.ts +0 -0
- package/dist/public/tinymce/icons/default/icons.js +0 -195
- package/dist/public/tinymce/icons/default/index.js +0 -8
- package/dist/public/tinymce/models/dom/index.js +0 -8
- package/dist/public/tinymce/models/dom/model.d.ts +0 -0
- package/dist/public/tinymce/models/dom/model.js +0 -7988
- package/dist/public/tinymce/plugins/advlist/index.js +0 -8
- package/dist/public/tinymce/plugins/advlist/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/advlist/plugin.js +0 -255
- package/dist/public/tinymce/plugins/code/index.js +0 -8
- package/dist/public/tinymce/plugins/code/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/code/plugin.js +0 -77
- package/dist/public/tinymce/plugins/codesample/index.js +0 -8
- package/dist/public/tinymce/plugins/codesample/plugin.js +0 -2462
- package/dist/public/tinymce/plugins/image/index.js +0 -8
- package/dist/public/tinymce/plugins/image/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/image/plugin.js +0 -1523
- package/dist/public/tinymce/plugins/link/index.js +0 -8
- package/dist/public/tinymce/plugins/link/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/link/plugin.js +0 -1246
- package/dist/public/tinymce/plugins/lists/index.js +0 -8
- package/dist/public/tinymce/plugins/lists/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/lists/plugin.js +0 -2191
- package/dist/public/tinymce/plugins/table/index.js +0 -8
- package/dist/public/tinymce/plugins/table/plugin.d.ts +0 -0
- package/dist/public/tinymce/plugins/table/plugin.js +0 -3399
- package/dist/public/tinymce/skins/content/default/content.d.ts +0 -0
- package/dist/public/tinymce/skins/content/default/content.js +0 -3
- package/dist/public/tinymce/skins/ui/oxide/content.d.ts +0 -0
- package/dist/public/tinymce/skins/ui/oxide/content.js +0 -3
- package/dist/public/tinymce/skins/ui/oxide/skin.d.ts +0 -0
- package/dist/public/tinymce/skins/ui/oxide/skin.js +0 -3
- package/dist/public/tinymce/themes/silver/index.js +0 -8
- package/dist/public/tinymce/themes/silver/theme.d.ts +0 -0
- package/dist/public/tinymce/themes/silver/theme.js +0 -29731
- /package/{dist/public → public}/tinymce/icons/default/index.d.ts +0 -0
- /package/{dist/public → public}/tinymce/models/dom/index.d.ts +0 -0
- /package/{dist/public → public}/tinymce/plugins/advlist/index.d.ts +0 -0
- /package/{dist/public → public}/tinymce/plugins/code/index.d.ts +0 -0
- /package/{dist/public → public}/tinymce/plugins/codesample/index.d.ts +0 -0
- /package/{dist/public → public}/tinymce/plugins/codesample/plugin.d.ts +0 -0
- /package/{dist/public → public}/tinymce/plugins/image/index.d.ts +0 -0
- /package/{dist/public → public}/tinymce/plugins/link/index.d.ts +0 -0
- /package/{dist/public → public}/tinymce/plugins/lists/index.d.ts +0 -0
- /package/{dist/public → public}/tinymce/plugins/table/index.d.ts +0 -0
- /package/{dist/public → public}/tinymce/themes/silver/index.d.ts +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"plugin.mjs","sources":["../../../../../../public/tinymce/plugins/table/plugin.js"],"sourcesContent":["/**\n * TinyMCE version 6.8.5 (TBD)\n */\n\n(function () {\n 'use strict';\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n const hasProto = (v, constructor, predicate) => {\n var _a;\n if (predicate(v, constructor.prototype)) {\n return true;\n } else {\n return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n }\n };\n const typeOf = x => {\n const t = typeof x;\n if (x === null) {\n return 'null';\n } else if (t === 'object' && Array.isArray(x)) {\n return 'array';\n } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n return 'string';\n } else {\n return t;\n }\n };\n const isType$1 = type => value => typeOf(value) === type;\n const isSimpleType = type => value => typeof value === type;\n const eq$1 = t => a => t === a;\n const isString = isType$1('string');\n const isArray = isType$1('array');\n const isBoolean = isSimpleType('boolean');\n const isUndefined = eq$1(undefined);\n const isNullable = a => a === null || a === undefined;\n const isNonNullable = a => !isNullable(a);\n const isFunction = isSimpleType('function');\n const isNumber = isSimpleType('number');\n\n const noop = () => {\n };\n const compose1 = (fbc, fab) => a => fbc(fab(a));\n const constant = value => {\n return () => {\n return value;\n };\n };\n const identity = x => {\n return x;\n };\n const tripleEquals = (a, b) => {\n return a === b;\n };\n function curry(fn, ...initialArgs) {\n return (...restArgs) => {\n const all = initialArgs.concat(restArgs);\n return fn.apply(null, all);\n };\n }\n const call = f => {\n f();\n };\n const never = constant(false);\n const always = constant(true);\n\n class Optional {\n constructor(tag, value) {\n this.tag = tag;\n this.value = value;\n }\n static some(value) {\n return new Optional(true, value);\n }\n static none() {\n return Optional.singletonNone;\n }\n fold(onNone, onSome) {\n if (this.tag) {\n return onSome(this.value);\n } else {\n return onNone();\n }\n }\n isSome() {\n return this.tag;\n }\n isNone() {\n return !this.tag;\n }\n map(mapper) {\n if (this.tag) {\n return Optional.some(mapper(this.value));\n } else {\n return Optional.none();\n }\n }\n bind(binder) {\n if (this.tag) {\n return binder(this.value);\n } else {\n return Optional.none();\n }\n }\n exists(predicate) {\n return this.tag && predicate(this.value);\n }\n forall(predicate) {\n return !this.tag || predicate(this.value);\n }\n filter(predicate) {\n if (!this.tag || predicate(this.value)) {\n return this;\n } else {\n return Optional.none();\n }\n }\n getOr(replacement) {\n return this.tag ? this.value : replacement;\n }\n or(replacement) {\n return this.tag ? this : replacement;\n }\n getOrThunk(thunk) {\n return this.tag ? this.value : thunk();\n }\n orThunk(thunk) {\n return this.tag ? this : thunk();\n }\n getOrDie(message) {\n if (!this.tag) {\n throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n } else {\n return this.value;\n }\n }\n static from(value) {\n return isNonNullable(value) ? Optional.some(value) : Optional.none();\n }\n getOrNull() {\n return this.tag ? this.value : null;\n }\n getOrUndefined() {\n return this.value;\n }\n each(worker) {\n if (this.tag) {\n worker(this.value);\n }\n }\n toArray() {\n return this.tag ? [this.value] : [];\n }\n toString() {\n return this.tag ? `some(${ this.value })` : 'none()';\n }\n }\n Optional.singletonNone = new Optional(false);\n\n const keys = Object.keys;\n const hasOwnProperty = Object.hasOwnProperty;\n const each$1 = (obj, f) => {\n const props = keys(obj);\n for (let k = 0, len = props.length; k < len; k++) {\n const i = props[k];\n const x = obj[i];\n f(x, i);\n }\n };\n const objAcc = r => (x, i) => {\n r[i] = x;\n };\n const internalFilter = (obj, pred, onTrue, onFalse) => {\n each$1(obj, (x, i) => {\n (pred(x, i) ? onTrue : onFalse)(x, i);\n });\n };\n const filter$1 = (obj, pred) => {\n const t = {};\n internalFilter(obj, pred, objAcc(t), noop);\n return t;\n };\n const mapToArray = (obj, f) => {\n const r = [];\n each$1(obj, (value, name) => {\n r.push(f(value, name));\n });\n return r;\n };\n const values = obj => {\n return mapToArray(obj, identity);\n };\n const size = obj => {\n return keys(obj).length;\n };\n const get$4 = (obj, key) => {\n return has(obj, key) ? Optional.from(obj[key]) : Optional.none();\n };\n const has = (obj, key) => hasOwnProperty.call(obj, key);\n const hasNonNullableKey = (obj, key) => has(obj, key) && obj[key] !== undefined && obj[key] !== null;\n const isEmpty$1 = r => {\n for (const x in r) {\n if (hasOwnProperty.call(r, x)) {\n return false;\n }\n }\n return true;\n };\n\n const nativeIndexOf = Array.prototype.indexOf;\n const nativePush = Array.prototype.push;\n const rawIndexOf = (ts, t) => nativeIndexOf.call(ts, t);\n const contains = (xs, x) => rawIndexOf(xs, x) > -1;\n const exists = (xs, pred) => {\n for (let i = 0, len = xs.length; i < len; i++) {\n const x = xs[i];\n if (pred(x, i)) {\n return true;\n }\n }\n return false;\n };\n const range = (num, f) => {\n const r = [];\n for (let i = 0; i < num; i++) {\n r.push(f(i));\n }\n return r;\n };\n const map = (xs, f) => {\n const len = xs.length;\n const r = new Array(len);\n for (let i = 0; i < len; i++) {\n const x = xs[i];\n r[i] = f(x, i);\n }\n return r;\n };\n const each = (xs, f) => {\n for (let i = 0, len = xs.length; i < len; i++) {\n const x = xs[i];\n f(x, i);\n }\n };\n const eachr = (xs, f) => {\n for (let i = xs.length - 1; i >= 0; i--) {\n const x = xs[i];\n f(x, i);\n }\n };\n const partition = (xs, pred) => {\n const pass = [];\n const fail = [];\n for (let i = 0, len = xs.length; i < len; i++) {\n const x = xs[i];\n const arr = pred(x, i) ? pass : fail;\n arr.push(x);\n }\n return {\n pass,\n fail\n };\n };\n const filter = (xs, pred) => {\n const r = [];\n for (let i = 0, len = xs.length; i < len; i++) {\n const x = xs[i];\n if (pred(x, i)) {\n r.push(x);\n }\n }\n return r;\n };\n const foldr = (xs, f, acc) => {\n eachr(xs, (x, i) => {\n acc = f(acc, x, i);\n });\n return acc;\n };\n const foldl = (xs, f, acc) => {\n each(xs, (x, i) => {\n acc = f(acc, x, i);\n });\n return acc;\n };\n const findUntil = (xs, pred, until) => {\n for (let i = 0, len = xs.length; i < len; i++) {\n const x = xs[i];\n if (pred(x, i)) {\n return Optional.some(x);\n } else if (until(x, i)) {\n break;\n }\n }\n return Optional.none();\n };\n const find = (xs, pred) => {\n return findUntil(xs, pred, never);\n };\n const flatten$1 = xs => {\n const r = [];\n for (let i = 0, len = xs.length; i < len; ++i) {\n if (!isArray(xs[i])) {\n throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n }\n nativePush.apply(r, xs[i]);\n }\n return r;\n };\n const bind = (xs, f) => flatten$1(map(xs, f));\n const forall = (xs, pred) => {\n for (let i = 0, len = xs.length; i < len; ++i) {\n const x = xs[i];\n if (pred(x, i) !== true) {\n return false;\n }\n }\n return true;\n };\n const mapToObject = (xs, f) => {\n const r = {};\n for (let i = 0, len = xs.length; i < len; i++) {\n const x = xs[i];\n r[String(x)] = f(x, i);\n }\n return r;\n };\n const get$3 = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();\n const head = xs => get$3(xs, 0);\n const last = xs => get$3(xs, xs.length - 1);\n const findMap = (arr, f) => {\n for (let i = 0; i < arr.length; i++) {\n const r = f(arr[i], i);\n if (r.isSome()) {\n return r;\n }\n }\n return Optional.none();\n };\n\n const COMMENT = 8;\n const DOCUMENT = 9;\n const DOCUMENT_FRAGMENT = 11;\n const ELEMENT = 1;\n const TEXT = 3;\n\n const fromHtml = (html, scope) => {\n const doc = scope || document;\n const div = doc.createElement('div');\n div.innerHTML = html;\n if (!div.hasChildNodes() || div.childNodes.length > 1) {\n const message = 'HTML does not have a single root node';\n console.error(message, html);\n throw new Error(message);\n }\n return fromDom$1(div.childNodes[0]);\n };\n const fromTag = (tag, scope) => {\n const doc = scope || document;\n const node = doc.createElement(tag);\n return fromDom$1(node);\n };\n const fromText = (text, scope) => {\n const doc = scope || document;\n const node = doc.createTextNode(text);\n return fromDom$1(node);\n };\n const fromDom$1 = node => {\n if (node === null || node === undefined) {\n throw new Error('Node cannot be null or undefined');\n }\n return { dom: node };\n };\n const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom$1);\n const SugarElement = {\n fromHtml,\n fromTag,\n fromText,\n fromDom: fromDom$1,\n fromPoint\n };\n\n const is$2 = (element, selector) => {\n const dom = element.dom;\n if (dom.nodeType !== ELEMENT) {\n return false;\n } else {\n const elem = dom;\n if (elem.matches !== undefined) {\n return elem.matches(selector);\n } else if (elem.msMatchesSelector !== undefined) {\n return elem.msMatchesSelector(selector);\n } else if (elem.webkitMatchesSelector !== undefined) {\n return elem.webkitMatchesSelector(selector);\n } else if (elem.mozMatchesSelector !== undefined) {\n return elem.mozMatchesSelector(selector);\n } else {\n throw new Error('Browser lacks native selectors');\n }\n }\n };\n const bypassSelector = dom => dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0;\n const all$1 = (selector, scope) => {\n const base = scope === undefined ? document : scope.dom;\n return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), SugarElement.fromDom);\n };\n const one = (selector, scope) => {\n const base = scope === undefined ? document : scope.dom;\n return bypassSelector(base) ? Optional.none() : Optional.from(base.querySelector(selector)).map(SugarElement.fromDom);\n };\n\n const eq = (e1, e2) => e1.dom === e2.dom;\n const is$1 = is$2;\n\n typeof window !== 'undefined' ? window : Function('return this;')();\n\n const name = element => {\n const r = element.dom.nodeName;\n return r.toLowerCase();\n };\n const type = element => element.dom.nodeType;\n const isType = t => element => type(element) === t;\n const isComment = element => type(element) === COMMENT || name(element) === '#comment';\n const isElement = isType(ELEMENT);\n const isText = isType(TEXT);\n const isDocument = isType(DOCUMENT);\n const isDocumentFragment = isType(DOCUMENT_FRAGMENT);\n const isTag = tag => e => isElement(e) && name(e) === tag;\n\n const owner = element => SugarElement.fromDom(element.dom.ownerDocument);\n const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);\n const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n const parents = (element, isRoot) => {\n const stop = isFunction(isRoot) ? isRoot : never;\n let dom = element.dom;\n const ret = [];\n while (dom.parentNode !== null && dom.parentNode !== undefined) {\n const rawParent = dom.parentNode;\n const p = SugarElement.fromDom(rawParent);\n ret.push(p);\n if (stop(p) === true) {\n break;\n } else {\n dom = rawParent;\n }\n }\n return ret;\n };\n const prevSibling = element => Optional.from(element.dom.previousSibling).map(SugarElement.fromDom);\n const nextSibling = element => Optional.from(element.dom.nextSibling).map(SugarElement.fromDom);\n const children$3 = element => map(element.dom.childNodes, SugarElement.fromDom);\n const child$3 = (element, index) => {\n const cs = element.dom.childNodes;\n return Optional.from(cs[index]).map(SugarElement.fromDom);\n };\n const firstChild = element => child$3(element, 0);\n\n const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);\n const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;\n const getShadowRoot = e => {\n const r = getRootNode(e);\n return isShadowRoot(r) ? Optional.some(r) : Optional.none();\n };\n const getShadowHost = e => SugarElement.fromDom(e.dom.host);\n\n const inBody = element => {\n const dom = isText(element) ? element.dom.parentNode : element.dom;\n if (dom === undefined || dom === null || dom.ownerDocument === null) {\n return false;\n }\n const doc = dom.ownerDocument;\n return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost));\n };\n\n var ClosestOrAncestor = (is, ancestor, scope, a, isRoot) => {\n if (is(scope, a)) {\n return Optional.some(scope);\n } else if (isFunction(isRoot) && isRoot(scope)) {\n return Optional.none();\n } else {\n return ancestor(scope, a, isRoot);\n }\n };\n\n const ancestor$1 = (scope, predicate, isRoot) => {\n let element = scope.dom;\n const stop = isFunction(isRoot) ? isRoot : never;\n while (element.parentNode) {\n element = element.parentNode;\n const el = SugarElement.fromDom(element);\n if (predicate(el)) {\n return Optional.some(el);\n } else if (stop(el)) {\n break;\n }\n }\n return Optional.none();\n };\n const closest$2 = (scope, predicate, isRoot) => {\n const is = (s, test) => test(s);\n return ClosestOrAncestor(is, ancestor$1, scope, predicate, isRoot);\n };\n const child$2 = (scope, predicate) => {\n const pred = node => predicate(SugarElement.fromDom(node));\n const result = find(scope.dom.childNodes, pred);\n return result.map(SugarElement.fromDom);\n };\n\n const ancestor = (scope, selector, isRoot) => ancestor$1(scope, e => is$2(e, selector), isRoot);\n const child$1 = (scope, selector) => child$2(scope, e => is$2(e, selector));\n const descendant = (scope, selector) => one(selector, scope);\n const closest$1 = (scope, selector, isRoot) => {\n const is = (element, selector) => is$2(element, selector);\n return ClosestOrAncestor(is, ancestor, scope, selector, isRoot);\n };\n\n const closest = target => closest$1(target, '[contenteditable]');\n const isEditable = (element, assumeEditable = false) => {\n if (inBody(element)) {\n return element.dom.isContentEditable;\n } else {\n return closest(element).fold(constant(assumeEditable), editable => getRaw$1(editable) === 'true');\n }\n };\n const getRaw$1 = element => element.dom.contentEditable;\n\n const getNodeName = elm => elm.nodeName.toLowerCase();\n const getBody = editor => SugarElement.fromDom(editor.getBody());\n const getIsRoot = editor => element => eq(element, getBody(editor));\n const removePxSuffix = size => size ? size.replace(/px$/, '') : '';\n const addPxSuffix = size => /^\\d+(\\.\\d+)?$/.test(size) ? size + 'px' : size;\n const getSelectionStart = editor => SugarElement.fromDom(editor.selection.getStart());\n const getSelectionEnd = editor => SugarElement.fromDom(editor.selection.getEnd());\n const isInEditableContext = cell => closest$2(cell, isTag('table')).forall(isEditable);\n\n const children$2 = (scope, predicate) => filter(children$3(scope), predicate);\n const descendants$1 = (scope, predicate) => {\n let result = [];\n each(children$3(scope), x => {\n if (predicate(x)) {\n result = result.concat([x]);\n }\n result = result.concat(descendants$1(x, predicate));\n });\n return result;\n };\n\n const children$1 = (scope, selector) => children$2(scope, e => is$2(e, selector));\n const descendants = (scope, selector) => all$1(selector, scope);\n\n const rawSet = (dom, key, value) => {\n if (isString(value) || isBoolean(value) || isNumber(value)) {\n dom.setAttribute(key, value + '');\n } else {\n console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n throw new Error('Attribute value was not simple');\n }\n };\n const set$2 = (element, key, value) => {\n rawSet(element.dom, key, value);\n };\n const setAll = (element, attrs) => {\n const dom = element.dom;\n each$1(attrs, (v, k) => {\n rawSet(dom, k, v);\n });\n };\n const get$2 = (element, key) => {\n const v = element.dom.getAttribute(key);\n return v === null ? undefined : v;\n };\n const getOpt = (element, key) => Optional.from(get$2(element, key));\n const remove$2 = (element, key) => {\n element.dom.removeAttribute(key);\n };\n const clone = element => foldl(element.dom.attributes, (acc, attr) => {\n acc[attr.name] = attr.value;\n return acc;\n }, {});\n\n const is = (lhs, rhs, comparator = tripleEquals) => lhs.exists(left => comparator(left, rhs));\n const cat = arr => {\n const r = [];\n const push = x => {\n r.push(x);\n };\n for (let i = 0; i < arr.length; i++) {\n arr[i].each(push);\n }\n return r;\n };\n const lift2 = (oa, ob, f) => oa.isSome() && ob.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie())) : Optional.none();\n const flatten = oot => oot.bind(identity);\n const someIf = (b, a) => b ? Optional.some(a) : Optional.none();\n\n const removeFromStart = (str, numChars) => {\n return str.substring(numChars);\n };\n\n const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;\n const removeLeading = (str, prefix) => {\n return startsWith(str, prefix) ? removeFromStart(str, prefix.length) : str;\n };\n const startsWith = (str, prefix) => {\n return checkRange(str, prefix, 0);\n };\n const blank = r => s => s.replace(r, '');\n const trim = blank(/^\\s+|\\s+$/g);\n const isNotEmpty = s => s.length > 0;\n const isEmpty = s => !isNotEmpty(s);\n const toInt = (value, radix = 10) => {\n const num = parseInt(value, radix);\n return isNaN(num) ? Optional.none() : Optional.some(num);\n };\n const toFloat = value => {\n const num = parseFloat(value);\n return isNaN(num) ? Optional.none() : Optional.some(num);\n };\n\n const isSupported = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);\n\n const internalSet = (dom, property, value) => {\n if (!isString(value)) {\n console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\n throw new Error('CSS value must be a string: ' + value);\n }\n if (isSupported(dom)) {\n dom.style.setProperty(property, value);\n }\n };\n const internalRemove = (dom, property) => {\n if (isSupported(dom)) {\n dom.style.removeProperty(property);\n }\n };\n const set$1 = (element, property, value) => {\n const dom = element.dom;\n internalSet(dom, property, value);\n };\n const get$1 = (element, property) => {\n const dom = element.dom;\n const styles = window.getComputedStyle(dom);\n const r = styles.getPropertyValue(property);\n return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;\n };\n const getUnsafeProperty = (dom, property) => isSupported(dom) ? dom.style.getPropertyValue(property) : '';\n const getRaw = (element, property) => {\n const dom = element.dom;\n const raw = getUnsafeProperty(dom, property);\n return Optional.from(raw).filter(r => r.length > 0);\n };\n const remove$1 = (element, property) => {\n const dom = element.dom;\n internalRemove(dom, property);\n if (is(getOpt(element, 'style').map(trim), '')) {\n remove$2(element, 'style');\n }\n };\n\n const getAttrValue = (cell, name, fallback = 0) => getOpt(cell, name).map(value => parseInt(value, 10)).getOr(fallback);\n\n const firstLayer = (scope, selector) => {\n return filterFirstLayer(scope, selector, always);\n };\n const filterFirstLayer = (scope, selector, predicate) => {\n return bind(children$3(scope), x => {\n if (is$2(x, selector)) {\n return predicate(x) ? [x] : [];\n } else {\n return filterFirstLayer(x, selector, predicate);\n }\n });\n };\n\n const validSectionList = [\n 'tfoot',\n 'thead',\n 'tbody',\n 'colgroup'\n ];\n const isValidSection = parentName => contains(validSectionList, parentName);\n const grid = (rows, columns) => ({\n rows,\n columns\n });\n const detail = (element, rowspan, colspan) => ({\n element,\n rowspan,\n colspan\n });\n const extended = (element, rowspan, colspan, row, column, isLocked) => ({\n element,\n rowspan,\n colspan,\n row,\n column,\n isLocked\n });\n const rowdetail = (element, cells, section) => ({\n element,\n cells,\n section\n });\n const bounds = (startRow, startCol, finishRow, finishCol) => ({\n startRow,\n startCol,\n finishRow,\n finishCol\n });\n const columnext = (element, colspan, column) => ({\n element,\n colspan,\n column\n });\n const colgroup = (element, columns) => ({\n element,\n columns\n });\n\n const lookup = (tags, element, isRoot = never) => {\n if (isRoot(element)) {\n return Optional.none();\n }\n if (contains(tags, name(element))) {\n return Optional.some(element);\n }\n const isRootOrUpperTable = elm => is$2(elm, 'table') || isRoot(elm);\n return ancestor(element, tags.join(','), isRootOrUpperTable);\n };\n const cell = (element, isRoot) => lookup([\n 'td',\n 'th'\n ], element, isRoot);\n const cells = ancestor => firstLayer(ancestor, 'th,td');\n const columns = ancestor => {\n if (is$2(ancestor, 'colgroup')) {\n return children$1(ancestor, 'col');\n } else {\n return bind(columnGroups(ancestor), columnGroup => children$1(columnGroup, 'col'));\n }\n };\n const table = (element, isRoot) => closest$1(element, 'table', isRoot);\n const rows = ancestor => firstLayer(ancestor, 'tr');\n const columnGroups = ancestor => table(ancestor).fold(constant([]), table => children$1(table, 'colgroup'));\n\n const fromRowsOrColGroups = (elems, getSection) => map(elems, row => {\n if (name(row) === 'colgroup') {\n const cells = map(columns(row), column => {\n const colspan = getAttrValue(column, 'span', 1);\n return detail(column, 1, colspan);\n });\n return rowdetail(row, cells, 'colgroup');\n } else {\n const cells$1 = map(cells(row), cell => {\n const rowspan = getAttrValue(cell, 'rowspan', 1);\n const colspan = getAttrValue(cell, 'colspan', 1);\n return detail(cell, rowspan, colspan);\n });\n return rowdetail(row, cells$1, getSection(row));\n }\n });\n const getParentSection = group => parent(group).map(parent => {\n const parentName = name(parent);\n return isValidSection(parentName) ? parentName : 'tbody';\n }).getOr('tbody');\n const fromTable$1 = table => {\n const rows$1 = rows(table);\n const columnGroups$1 = columnGroups(table);\n const elems = [\n ...columnGroups$1,\n ...rows$1\n ];\n return fromRowsOrColGroups(elems, getParentSection);\n };\n\n const LOCKED_COL_ATTR = 'data-snooker-locked-cols';\n const getLockedColumnsFromTable = table => getOpt(table, LOCKED_COL_ATTR).bind(lockedColStr => Optional.from(lockedColStr.match(/\\d+/g))).map(lockedCols => mapToObject(lockedCols, always));\n\n const key = (row, column) => {\n return row + ',' + column;\n };\n const getAt = (warehouse, row, column) => Optional.from(warehouse.access[key(row, column)]);\n const findItem = (warehouse, item, comparator) => {\n const filtered = filterItems(warehouse, detail => {\n return comparator(item, detail.element);\n });\n return filtered.length > 0 ? Optional.some(filtered[0]) : Optional.none();\n };\n const filterItems = (warehouse, predicate) => {\n const all = bind(warehouse.all, r => {\n return r.cells;\n });\n return filter(all, predicate);\n };\n const generateColumns = rowData => {\n const columnsGroup = {};\n let index = 0;\n each(rowData.cells, column => {\n const colspan = column.colspan;\n range(colspan, columnIndex => {\n const colIndex = index + columnIndex;\n columnsGroup[colIndex] = columnext(column.element, colspan, colIndex);\n });\n index += colspan;\n });\n return columnsGroup;\n };\n const generate$1 = list => {\n const access = {};\n const cells = [];\n const tableOpt = head(list).map(rowData => rowData.element).bind(table);\n const lockedColumns = tableOpt.bind(getLockedColumnsFromTable).getOr({});\n let maxRows = 0;\n let maxColumns = 0;\n let rowCount = 0;\n const {\n pass: colgroupRows,\n fail: rows\n } = partition(list, rowData => rowData.section === 'colgroup');\n each(rows, rowData => {\n const currentRow = [];\n each(rowData.cells, rowCell => {\n let start = 0;\n while (access[key(rowCount, start)] !== undefined) {\n start++;\n }\n const isLocked = hasNonNullableKey(lockedColumns, start.toString());\n const current = extended(rowCell.element, rowCell.rowspan, rowCell.colspan, rowCount, start, isLocked);\n for (let occupiedColumnPosition = 0; occupiedColumnPosition < rowCell.colspan; occupiedColumnPosition++) {\n for (let occupiedRowPosition = 0; occupiedRowPosition < rowCell.rowspan; occupiedRowPosition++) {\n const rowPosition = rowCount + occupiedRowPosition;\n const columnPosition = start + occupiedColumnPosition;\n const newpos = key(rowPosition, columnPosition);\n access[newpos] = current;\n maxColumns = Math.max(maxColumns, columnPosition + 1);\n }\n }\n currentRow.push(current);\n });\n maxRows++;\n cells.push(rowdetail(rowData.element, currentRow, rowData.section));\n rowCount++;\n });\n const {columns, colgroups} = last(colgroupRows).map(rowData => {\n const columns = generateColumns(rowData);\n const colgroup$1 = colgroup(rowData.element, values(columns));\n return {\n colgroups: [colgroup$1],\n columns\n };\n }).getOrThunk(() => ({\n colgroups: [],\n columns: {}\n }));\n const grid$1 = grid(maxRows, maxColumns);\n return {\n grid: grid$1,\n access,\n all: cells,\n columns,\n colgroups\n };\n };\n const fromTable = table => {\n const list = fromTable$1(table);\n return generate$1(list);\n };\n const justCells = warehouse => bind(warehouse.all, w => w.cells);\n const justColumns = warehouse => values(warehouse.columns);\n const hasColumns = warehouse => keys(warehouse.columns).length > 0;\n const getColumnAt = (warehouse, columnIndex) => Optional.from(warehouse.columns[columnIndex]);\n const Warehouse = {\n fromTable,\n generate: generate$1,\n getAt,\n findItem,\n filterItems,\n justCells,\n justColumns,\n hasColumns,\n getColumnAt\n };\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n const getTDTHOverallStyle = (dom, elm, name) => {\n const cells = dom.select('td,th', elm);\n let firstChildStyle;\n for (let i = 0; i < cells.length; i++) {\n const currentStyle = dom.getStyle(cells[i], name);\n if (isUndefined(firstChildStyle)) {\n firstChildStyle = currentStyle;\n }\n if (firstChildStyle !== currentStyle) {\n return '';\n }\n }\n return firstChildStyle;\n };\n const setAlign = (editor, elm, name) => {\n global$2.each('left center right'.split(' '), align => {\n if (align !== name) {\n editor.formatter.remove('align' + align, {}, elm);\n }\n });\n if (name) {\n editor.formatter.apply('align' + name, {}, elm);\n }\n };\n const setVAlign = (editor, elm, name) => {\n global$2.each('top middle bottom'.split(' '), align => {\n if (align !== name) {\n editor.formatter.remove('valign' + align, {}, elm);\n }\n });\n if (name) {\n editor.formatter.apply('valign' + name, {}, elm);\n }\n };\n\n const fireTableModified = (editor, table, data) => {\n editor.dispatch('TableModified', {\n ...data,\n table\n });\n };\n\n const toNumber = (px, fallback) => toFloat(px).getOr(fallback);\n const getProp = (element, name, fallback) => toNumber(get$1(element, name), fallback);\n const calcContentBoxSize = (element, size, upper, lower) => {\n const paddingUpper = getProp(element, `padding-${ upper }`, 0);\n const paddingLower = getProp(element, `padding-${ lower }`, 0);\n const borderUpper = getProp(element, `border-${ upper }-width`, 0);\n const borderLower = getProp(element, `border-${ lower }-width`, 0);\n return size - paddingUpper - paddingLower - borderUpper - borderLower;\n };\n const getCalculatedWidth = (element, boxSizing) => {\n const dom = element.dom;\n const width = dom.getBoundingClientRect().width || dom.offsetWidth;\n return boxSizing === 'border-box' ? width : calcContentBoxSize(element, width, 'left', 'right');\n };\n const getInnerWidth = element => getCalculatedWidth(element, 'content-box');\n\n const getInner = getInnerWidth;\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n const defaultTableToolbar = 'tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol';\n const defaultCellBorderWidths = range(5, i => {\n const size = `${ i + 1 }px`;\n return {\n title: size,\n value: size\n };\n });\n const defaultCellBorderStyles = map([\n 'Solid',\n 'Dotted',\n 'Dashed',\n 'Double',\n 'Groove',\n 'Ridge',\n 'Inset',\n 'Outset',\n 'None',\n 'Hidden'\n ], type => {\n return {\n title: type,\n value: type.toLowerCase()\n };\n });\n const defaultWidth = '100%';\n const getPixelForcedWidth = editor => {\n var _a;\n const dom = editor.dom;\n const parentBlock = (_a = dom.getParent(editor.selection.getStart(), dom.isBlock)) !== null && _a !== void 0 ? _a : editor.getBody();\n return getInner(SugarElement.fromDom(parentBlock)) + 'px';\n };\n const determineDefaultStyles = (editor, defaultStyles) => {\n if (isResponsiveForced(editor) || !shouldStyleWithCss(editor)) {\n return defaultStyles;\n } else if (isPixelsForced(editor)) {\n return {\n ...defaultStyles,\n width: getPixelForcedWidth(editor)\n };\n } else {\n return {\n ...defaultStyles,\n width: defaultWidth\n };\n }\n };\n const determineDefaultAttributes = (editor, defaultAttributes) => {\n if (isResponsiveForced(editor) || shouldStyleWithCss(editor)) {\n return defaultAttributes;\n } else if (isPixelsForced(editor)) {\n return {\n ...defaultAttributes,\n width: getPixelForcedWidth(editor)\n };\n } else {\n return {\n ...defaultAttributes,\n width: defaultWidth\n };\n }\n };\n const option = name => editor => editor.options.get(name);\n const register = editor => {\n const registerOption = editor.options.register;\n registerOption('table_border_widths', {\n processor: 'object[]',\n default: defaultCellBorderWidths\n });\n registerOption('table_border_styles', {\n processor: 'object[]',\n default: defaultCellBorderStyles\n });\n registerOption('table_cell_advtab', {\n processor: 'boolean',\n default: true\n });\n registerOption('table_row_advtab', {\n processor: 'boolean',\n default: true\n });\n registerOption('table_advtab', {\n processor: 'boolean',\n default: true\n });\n registerOption('table_appearance_options', {\n processor: 'boolean',\n default: true\n });\n registerOption('table_grid', {\n processor: 'boolean',\n default: !global$1.deviceType.isTouch()\n });\n registerOption('table_cell_class_list', {\n processor: 'object[]',\n default: []\n });\n registerOption('table_row_class_list', {\n processor: 'object[]',\n default: []\n });\n registerOption('table_class_list', {\n processor: 'object[]',\n default: []\n });\n registerOption('table_toolbar', {\n processor: 'string',\n default: defaultTableToolbar\n });\n registerOption('table_background_color_map', {\n processor: 'object[]',\n default: []\n });\n registerOption('table_border_color_map', {\n processor: 'object[]',\n default: []\n });\n };\n const getTableSizingMode = option('table_sizing_mode');\n const getTableBorderWidths = option('table_border_widths');\n const getTableBorderStyles = option('table_border_styles');\n const hasAdvancedCellTab = option('table_cell_advtab');\n const hasAdvancedRowTab = option('table_row_advtab');\n const hasAdvancedTableTab = option('table_advtab');\n const hasAppearanceOptions = option('table_appearance_options');\n const hasTableGrid = option('table_grid');\n const shouldStyleWithCss = option('table_style_by_css');\n const getCellClassList = option('table_cell_class_list');\n const getRowClassList = option('table_row_class_list');\n const getTableClassList = option('table_class_list');\n const getToolbar = option('table_toolbar');\n const getTableBackgroundColorMap = option('table_background_color_map');\n const getTableBorderColorMap = option('table_border_color_map');\n const isPixelsForced = editor => getTableSizingMode(editor) === 'fixed';\n const isResponsiveForced = editor => getTableSizingMode(editor) === 'responsive';\n const getDefaultStyles = editor => {\n const options = editor.options;\n const defaultStyles = options.get('table_default_styles');\n return options.isSet('table_default_styles') ? defaultStyles : determineDefaultStyles(editor, defaultStyles);\n };\n const getDefaultAttributes = editor => {\n const options = editor.options;\n const defaultAttributes = options.get('table_default_attributes');\n return options.isSet('table_default_attributes') ? defaultAttributes : determineDefaultAttributes(editor, defaultAttributes);\n };\n\n const isWithin = (bounds, detail) => {\n return detail.column >= bounds.startCol && detail.column + detail.colspan - 1 <= bounds.finishCol && detail.row >= bounds.startRow && detail.row + detail.rowspan - 1 <= bounds.finishRow;\n };\n const isRectangular = (warehouse, bounds) => {\n let isRect = true;\n const detailIsWithin = curry(isWithin, bounds);\n for (let i = bounds.startRow; i <= bounds.finishRow; i++) {\n for (let j = bounds.startCol; j <= bounds.finishCol; j++) {\n isRect = isRect && Warehouse.getAt(warehouse, i, j).exists(detailIsWithin);\n }\n }\n return isRect ? Optional.some(bounds) : Optional.none();\n };\n\n const getBounds = (detailA, detailB) => {\n return bounds(Math.min(detailA.row, detailB.row), Math.min(detailA.column, detailB.column), Math.max(detailA.row + detailA.rowspan - 1, detailB.row + detailB.rowspan - 1), Math.max(detailA.column + detailA.colspan - 1, detailB.column + detailB.colspan - 1));\n };\n const getAnyBox = (warehouse, startCell, finishCell) => {\n const startCoords = Warehouse.findItem(warehouse, startCell, eq);\n const finishCoords = Warehouse.findItem(warehouse, finishCell, eq);\n return startCoords.bind(sc => {\n return finishCoords.map(fc => {\n return getBounds(sc, fc);\n });\n });\n };\n const getBox$1 = (warehouse, startCell, finishCell) => {\n return getAnyBox(warehouse, startCell, finishCell).bind(bounds => {\n return isRectangular(warehouse, bounds);\n });\n };\n\n const getBox = (table, first, last) => {\n const warehouse = getWarehouse(table);\n return getBox$1(warehouse, first, last);\n };\n const getWarehouse = Warehouse.fromTable;\n\n const before = (marker, element) => {\n const parent$1 = parent(marker);\n parent$1.each(v => {\n v.dom.insertBefore(element.dom, marker.dom);\n });\n };\n const after$1 = (marker, element) => {\n const sibling = nextSibling(marker);\n sibling.fold(() => {\n const parent$1 = parent(marker);\n parent$1.each(v => {\n append$1(v, element);\n });\n }, v => {\n before(v, element);\n });\n };\n const prepend = (parent, element) => {\n const firstChild$1 = firstChild(parent);\n firstChild$1.fold(() => {\n append$1(parent, element);\n }, v => {\n parent.dom.insertBefore(element.dom, v.dom);\n });\n };\n const append$1 = (parent, element) => {\n parent.dom.appendChild(element.dom);\n };\n const wrap = (element, wrapper) => {\n before(element, wrapper);\n append$1(wrapper, element);\n };\n\n const after = (marker, elements) => {\n each(elements, (x, i) => {\n const e = i === 0 ? marker : elements[i - 1];\n after$1(e, x);\n });\n };\n const append = (parent, elements) => {\n each(elements, x => {\n append$1(parent, x);\n });\n };\n\n const remove = element => {\n const dom = element.dom;\n if (dom.parentNode !== null) {\n dom.parentNode.removeChild(dom);\n }\n };\n const unwrap = wrapper => {\n const children = children$3(wrapper);\n if (children.length > 0) {\n after(wrapper, children);\n }\n remove(wrapper);\n };\n\n const NodeValue = (is, name) => {\n const get = element => {\n if (!is(element)) {\n throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\n }\n return getOption(element).getOr('');\n };\n const getOption = element => is(element) ? Optional.from(element.dom.nodeValue) : Optional.none();\n const set = (element, value) => {\n if (!is(element)) {\n throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\n }\n element.dom.nodeValue = value;\n };\n return {\n get,\n getOption,\n set\n };\n };\n\n const api = NodeValue(isText, 'text');\n const get = element => api.get(element);\n const set = (element, value) => api.set(element, value);\n\n var TagBoundaries = [\n 'body',\n 'p',\n 'div',\n 'article',\n 'aside',\n 'figcaption',\n 'figure',\n 'footer',\n 'header',\n 'nav',\n 'section',\n 'ol',\n 'ul',\n 'li',\n 'table',\n 'thead',\n 'tbody',\n 'tfoot',\n 'caption',\n 'tr',\n 'td',\n 'th',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'pre',\n 'address'\n ];\n\n var DomUniverse = () => {\n const clone$1 = element => {\n return SugarElement.fromDom(element.dom.cloneNode(false));\n };\n const document = element => documentOrOwner(element).dom;\n const isBoundary = element => {\n if (!isElement(element)) {\n return false;\n }\n if (name(element) === 'body') {\n return true;\n }\n return contains(TagBoundaries, name(element));\n };\n const isEmptyTag = element => {\n if (!isElement(element)) {\n return false;\n }\n return contains([\n 'br',\n 'img',\n 'hr',\n 'input'\n ], name(element));\n };\n const isNonEditable = element => isElement(element) && get$2(element, 'contenteditable') === 'false';\n const comparePosition = (element, other) => {\n return element.dom.compareDocumentPosition(other.dom);\n };\n const copyAttributesTo = (source, destination) => {\n const as = clone(source);\n setAll(destination, as);\n };\n const isSpecial = element => {\n const tag = name(element);\n return contains([\n 'script',\n 'noscript',\n 'iframe',\n 'noframes',\n 'noembed',\n 'title',\n 'style',\n 'textarea',\n 'xmp'\n ], tag);\n };\n const getLanguage = element => isElement(element) ? getOpt(element, 'lang') : Optional.none();\n return {\n up: constant({\n selector: ancestor,\n closest: closest$1,\n predicate: ancestor$1,\n all: parents\n }),\n down: constant({\n selector: descendants,\n predicate: descendants$1\n }),\n styles: constant({\n get: get$1,\n getRaw: getRaw,\n set: set$1,\n remove: remove$1\n }),\n attrs: constant({\n get: get$2,\n set: set$2,\n remove: remove$2,\n copyTo: copyAttributesTo\n }),\n insert: constant({\n before: before,\n after: after$1,\n afterAll: after,\n append: append$1,\n appendAll: append,\n prepend: prepend,\n wrap: wrap\n }),\n remove: constant({\n unwrap: unwrap,\n remove: remove\n }),\n create: constant({\n nu: SugarElement.fromTag,\n clone: clone$1,\n text: SugarElement.fromText\n }),\n query: constant({\n comparePosition,\n prevSibling: prevSibling,\n nextSibling: nextSibling\n }),\n property: constant({\n children: children$3,\n name: name,\n parent: parent,\n document,\n isText: isText,\n isComment: isComment,\n isElement: isElement,\n isSpecial,\n getLanguage,\n getText: get,\n setText: set,\n isBoundary,\n isEmptyTag,\n isNonEditable\n }),\n eq: eq,\n is: is$1\n };\n };\n\n const all = (universe, look, elements, f) => {\n const head = elements[0];\n const tail = elements.slice(1);\n return f(universe, look, head, tail);\n };\n const oneAll = (universe, look, elements) => {\n return elements.length > 0 ? all(universe, look, elements, unsafeOne) : Optional.none();\n };\n const unsafeOne = (universe, look, head, tail) => {\n const start = look(universe, head);\n return foldr(tail, (b, a) => {\n const current = look(universe, a);\n return commonElement(universe, b, current);\n }, start);\n };\n const commonElement = (universe, start, end) => {\n return start.bind(s => {\n return end.filter(curry(universe.eq, s));\n });\n };\n\n const sharedOne$1 = oneAll;\n\n const universe = DomUniverse();\n const sharedOne = (look, elements) => {\n return sharedOne$1(universe, (_universe, element) => {\n return look(element);\n }, elements);\n };\n\n const lookupTable = container => {\n return ancestor(container, 'table');\n };\n const retrieve$1 = (container, selector) => {\n const sels = descendants(container, selector);\n return sels.length > 0 ? Optional.some(sels) : Optional.none();\n };\n const getEdges = (container, firstSelectedSelector, lastSelectedSelector) => {\n return descendant(container, firstSelectedSelector).bind(first => {\n return descendant(container, lastSelectedSelector).bind(last => {\n return sharedOne(lookupTable, [\n first,\n last\n ]).map(table => {\n return {\n first,\n last,\n table\n };\n });\n });\n });\n };\n\n const retrieve = (container, selector) => {\n return retrieve$1(container, selector);\n };\n const retrieveBox = (container, firstSelectedSelector, lastSelectedSelector) => {\n return getEdges(container, firstSelectedSelector, lastSelectedSelector).bind(edges => {\n const isRoot = ancestor => {\n return eq(container, ancestor);\n };\n const sectionSelector = 'thead,tfoot,tbody,table';\n const firstAncestor = ancestor(edges.first, sectionSelector, isRoot);\n const lastAncestor = ancestor(edges.last, sectionSelector, isRoot);\n return firstAncestor.bind(fA => {\n return lastAncestor.bind(lA => {\n return eq(fA, lA) ? getBox(edges.table, edges.first, edges.last) : Optional.none();\n });\n });\n });\n };\n\n const fromDom = nodes => map(nodes, SugarElement.fromDom);\n\n const strSelected = 'data-mce-selected';\n const strSelectedSelector = 'td[' + strSelected + '],th[' + strSelected + ']';\n const strFirstSelected = 'data-mce-first-selected';\n const strFirstSelectedSelector = 'td[' + strFirstSelected + '],th[' + strFirstSelected + ']';\n const strLastSelected = 'data-mce-last-selected';\n const strLastSelectedSelector = 'td[' + strLastSelected + '],th[' + strLastSelected + ']';\n const ephemera = {\n selected: strSelected,\n selectedSelector: strSelectedSelector,\n firstSelected: strFirstSelected,\n firstSelectedSelector: strFirstSelectedSelector,\n lastSelected: strLastSelected,\n lastSelectedSelector: strLastSelectedSelector\n };\n\n const getSelectionCellFallback = element => table(element).bind(table => retrieve(table, ephemera.firstSelectedSelector)).fold(constant(element), cells => cells[0]);\n const getSelectionFromSelector = selector => (initCell, isRoot) => {\n const cellName = name(initCell);\n const cell = cellName === 'col' || cellName === 'colgroup' ? getSelectionCellFallback(initCell) : initCell;\n return closest$1(cell, selector, isRoot);\n };\n const getSelectionCellOrCaption = getSelectionFromSelector('th,td,caption');\n const getSelectionCell = getSelectionFromSelector('th,td');\n const getCellsFromSelection = editor => fromDom(editor.model.table.getSelectedCells());\n const getRowsFromSelection = (selected, selector) => {\n const cellOpt = getSelectionCell(selected);\n const rowsOpt = cellOpt.bind(cell => table(cell)).map(table => rows(table));\n return lift2(cellOpt, rowsOpt, (cell, rows) => filter(rows, row => exists(fromDom(row.dom.cells), rowCell => get$2(rowCell, selector) === '1' || eq(rowCell, cell)))).getOr([]);\n };\n\n const verticalAlignValues = [\n {\n text: 'None',\n value: ''\n },\n {\n text: 'Top',\n value: 'top'\n },\n {\n text: 'Middle',\n value: 'middle'\n },\n {\n text: 'Bottom',\n value: 'bottom'\n }\n ];\n\n const hexColour = value => ({ value: normalizeHex(value) });\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n const longformRegex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;\n const isHexString = hex => shorthandRegex.test(hex) || longformRegex.test(hex);\n const normalizeHex = hex => removeLeading(hex, '#').toUpperCase();\n const fromString$1 = hex => isHexString(hex) ? Optional.some({ value: normalizeHex(hex) }) : Optional.none();\n const toHex = component => {\n const hex = component.toString(16);\n return (hex.length === 1 ? '0' + hex : hex).toUpperCase();\n };\n const fromRgba = rgbaColour => {\n const value = toHex(rgbaColour.red) + toHex(rgbaColour.green) + toHex(rgbaColour.blue);\n return hexColour(value);\n };\n\n const rgbRegex = /^\\s*rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)\\s*$/i;\n const rgbaRegex = /^\\s*rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d?(?:\\.\\d+)?)\\s*\\)\\s*$/i;\n const rgbaColour = (red, green, blue, alpha) => ({\n red,\n green,\n blue,\n alpha\n });\n const fromStringValues = (red, green, blue, alpha) => {\n const r = parseInt(red, 10);\n const g = parseInt(green, 10);\n const b = parseInt(blue, 10);\n const a = parseFloat(alpha);\n return rgbaColour(r, g, b, a);\n };\n const fromString = rgbaString => {\n if (rgbaString === 'transparent') {\n return Optional.some(rgbaColour(0, 0, 0, 0));\n }\n const rgbMatch = rgbRegex.exec(rgbaString);\n if (rgbMatch !== null) {\n return Optional.some(fromStringValues(rgbMatch[1], rgbMatch[2], rgbMatch[3], '1'));\n }\n const rgbaMatch = rgbaRegex.exec(rgbaString);\n if (rgbaMatch !== null) {\n return Optional.some(fromStringValues(rgbaMatch[1], rgbaMatch[2], rgbaMatch[3], rgbaMatch[4]));\n }\n return Optional.none();\n };\n\n const anyToHex = color => fromString$1(color).orThunk(() => fromString(color).map(fromRgba)).getOrThunk(() => {\n const canvas = document.createElement('canvas');\n canvas.height = 1;\n canvas.width = 1;\n const canvasContext = canvas.getContext('2d');\n canvasContext.clearRect(0, 0, canvas.width, canvas.height);\n canvasContext.fillStyle = '#FFFFFF';\n canvasContext.fillStyle = color;\n canvasContext.fillRect(0, 0, 1, 1);\n const rgba = canvasContext.getImageData(0, 0, 1, 1).data;\n const r = rgba[0];\n const g = rgba[1];\n const b = rgba[2];\n const a = rgba[3];\n return fromRgba(rgbaColour(r, g, b, a));\n });\n const rgbaToHexString = color => fromString(color).map(fromRgba).map(h => '#' + h.value).getOr(color);\n\n const Cell = initial => {\n let value = initial;\n const get = () => {\n return value;\n };\n const set = v => {\n value = v;\n };\n return {\n get,\n set\n };\n };\n\n const singleton = doRevoke => {\n const subject = Cell(Optional.none());\n const revoke = () => subject.get().each(doRevoke);\n const clear = () => {\n revoke();\n subject.set(Optional.none());\n };\n const isSet = () => subject.get().isSome();\n const get = () => subject.get();\n const set = s => {\n revoke();\n subject.set(Optional.some(s));\n };\n return {\n clear,\n isSet,\n get,\n set\n };\n };\n const unbindable = () => singleton(s => s.unbind());\n\n const onSetupToggle = (editor, formatName, formatValue) => {\n return api => {\n const boundCallback = unbindable();\n const isNone = isEmpty(formatValue);\n const init = () => {\n const selectedCells = getCellsFromSelection(editor);\n const checkNode = cell => editor.formatter.match(formatName, { value: formatValue }, cell.dom, isNone);\n if (isNone) {\n api.setActive(!exists(selectedCells, checkNode));\n boundCallback.set(editor.formatter.formatChanged(formatName, match => api.setActive(!match), true));\n } else {\n api.setActive(forall(selectedCells, checkNode));\n boundCallback.set(editor.formatter.formatChanged(formatName, api.setActive, false, { value: formatValue }));\n }\n };\n editor.initialized ? init() : editor.on('init', init);\n return boundCallback.clear;\n };\n };\n const isListGroup = item => hasNonNullableKey(item, 'menu');\n const buildListItems = items => map(items, item => {\n const text = item.text || item.title || '';\n if (isListGroup(item)) {\n return {\n text,\n items: buildListItems(item.menu)\n };\n } else {\n return {\n text,\n value: item.value\n };\n }\n });\n const buildMenuItems = (editor, items, format, onAction) => map(items, item => {\n const text = item.text || item.title;\n if (isListGroup(item)) {\n return {\n type: 'nestedmenuitem',\n text,\n getSubmenuItems: () => buildMenuItems(editor, item.menu, format, onAction)\n };\n } else {\n return {\n text,\n type: 'togglemenuitem',\n onAction: () => onAction(item.value),\n onSetup: onSetupToggle(editor, format, item.value)\n };\n }\n });\n const applyTableCellStyle = (editor, style) => value => {\n editor.execCommand('mceTableApplyCellStyle', false, { [style]: value });\n };\n const filterNoneItem = list => bind(list, item => {\n if (isListGroup(item)) {\n return [{\n ...item,\n menu: filterNoneItem(item.menu)\n }];\n } else {\n return isNotEmpty(item.value) ? [item] : [];\n }\n });\n const generateMenuItemsCallback = (editor, items, format, onAction) => callback => callback(buildMenuItems(editor, items, format, onAction));\n const buildColorMenu = (editor, colorList, style) => {\n const colorMap = map(colorList, entry => ({\n text: entry.title,\n value: '#' + anyToHex(entry.value).value,\n type: 'choiceitem'\n }));\n return [{\n type: 'fancymenuitem',\n fancytype: 'colorswatch',\n initData: {\n colors: colorMap.length > 0 ? colorMap : undefined,\n allowCustomColors: false\n },\n onAction: data => {\n const value = data.value === 'remove' ? '' : data.value;\n editor.execCommand('mceTableApplyCellStyle', false, { [style]: value });\n }\n }];\n };\n const changeRowHeader = editor => () => {\n const currentType = editor.queryCommandValue('mceTableRowType');\n const newType = currentType === 'header' ? 'body' : 'header';\n editor.execCommand('mceTableRowType', false, { type: newType });\n };\n const changeColumnHeader = editor => () => {\n const currentType = editor.queryCommandValue('mceTableColType');\n const newType = currentType === 'th' ? 'td' : 'th';\n editor.execCommand('mceTableColType', false, { type: newType });\n };\n\n const getClassList$1 = editor => {\n const classes = buildListItems(getCellClassList(editor));\n if (classes.length > 0) {\n return Optional.some({\n name: 'class',\n type: 'listbox',\n label: 'Class',\n items: classes\n });\n }\n return Optional.none();\n };\n const children = [\n {\n name: 'width',\n type: 'input',\n label: 'Width'\n },\n {\n name: 'height',\n type: 'input',\n label: 'Height'\n },\n {\n name: 'celltype',\n type: 'listbox',\n label: 'Cell type',\n items: [\n {\n text: 'Cell',\n value: 'td'\n },\n {\n text: 'Header cell',\n value: 'th'\n }\n ]\n },\n {\n name: 'scope',\n type: 'listbox',\n label: 'Scope',\n items: [\n {\n text: 'None',\n value: ''\n },\n {\n text: 'Row',\n value: 'row'\n },\n {\n text: 'Column',\n value: 'col'\n },\n {\n text: 'Row group',\n value: 'rowgroup'\n },\n {\n text: 'Column group',\n value: 'colgroup'\n }\n ]\n },\n {\n name: 'halign',\n type: 'listbox',\n label: 'Horizontal align',\n items: [\n {\n text: 'None',\n value: ''\n },\n {\n text: 'Left',\n value: 'left'\n },\n {\n text: 'Center',\n value: 'center'\n },\n {\n text: 'Right',\n value: 'right'\n }\n ]\n },\n {\n name: 'valign',\n type: 'listbox',\n label: 'Vertical align',\n items: verticalAlignValues\n }\n ];\n const getItems$2 = editor => children.concat(getClassList$1(editor).toArray());\n\n const getAdvancedTab = (editor, dialogName) => {\n const emptyBorderStyle = [{\n text: 'Select...',\n value: ''\n }];\n const advTabItems = [\n {\n name: 'borderstyle',\n type: 'listbox',\n label: 'Border style',\n items: emptyBorderStyle.concat(buildListItems(getTableBorderStyles(editor)))\n },\n {\n name: 'bordercolor',\n type: 'colorinput',\n label: 'Border color'\n },\n {\n name: 'backgroundcolor',\n type: 'colorinput',\n label: 'Background color'\n }\n ];\n const borderWidth = {\n name: 'borderwidth',\n type: 'input',\n label: 'Border width'\n };\n const items = dialogName === 'cell' ? [borderWidth].concat(advTabItems) : advTabItems;\n return {\n title: 'Advanced',\n name: 'advanced',\n items\n };\n };\n\n const normal = (editor, element) => {\n const dom = editor.dom;\n const setAttrib = (attr, value) => {\n dom.setAttrib(element, attr, value);\n };\n const setStyle = (prop, value) => {\n dom.setStyle(element, prop, value);\n };\n const setFormat = (formatName, value) => {\n if (value === '') {\n editor.formatter.remove(formatName, { value: null }, element, true);\n } else {\n editor.formatter.apply(formatName, { value }, element);\n }\n };\n return {\n setAttrib,\n setStyle,\n setFormat\n };\n };\n const DomModifier = { normal };\n\n const isHeaderCell = isTag('th');\n const getRowHeaderType = (isHeaderRow, isHeaderCells) => {\n if (isHeaderRow && isHeaderCells) {\n return 'sectionCells';\n } else if (isHeaderRow) {\n return 'section';\n } else {\n return 'cells';\n }\n };\n const getRowType$1 = row => {\n const isHeaderRow = row.section === 'thead';\n const isHeaderCells = is(findCommonCellType(row.cells), 'th');\n if (row.section === 'tfoot') {\n return { type: 'footer' };\n } else if (isHeaderRow || isHeaderCells) {\n return {\n type: 'header',\n subType: getRowHeaderType(isHeaderRow, isHeaderCells)\n };\n } else {\n return { type: 'body' };\n }\n };\n const findCommonCellType = cells => {\n const headerCells = filter(cells, cell => isHeaderCell(cell.element));\n if (headerCells.length === 0) {\n return Optional.some('td');\n } else if (headerCells.length === cells.length) {\n return Optional.some('th');\n } else {\n return Optional.none();\n }\n };\n const findCommonRowType = rows => {\n const rowTypes = map(rows, row => getRowType$1(row).type);\n const hasHeader = contains(rowTypes, 'header');\n const hasFooter = contains(rowTypes, 'footer');\n if (!hasHeader && !hasFooter) {\n return Optional.some('body');\n } else {\n const hasBody = contains(rowTypes, 'body');\n if (hasHeader && !hasBody && !hasFooter) {\n return Optional.some('header');\n } else if (!hasHeader && !hasBody && hasFooter) {\n return Optional.some('footer');\n } else {\n return Optional.none();\n }\n }\n };\n\n const cached = f => {\n let called = false;\n let r;\n return (...args) => {\n if (!called) {\n called = true;\n r = f.apply(null, args);\n }\n return r;\n };\n };\n\n const findInWarehouse = (warehouse, element) => findMap(warehouse.all, r => find(r.cells, e => eq(element, e.element)));\n const extractCells = (warehouse, target, predicate) => {\n const details = map(target.selection, cell$1 => {\n return cell(cell$1).bind(lc => findInWarehouse(warehouse, lc)).filter(predicate);\n });\n const cells = cat(details);\n return someIf(cells.length > 0, cells);\n };\n const onMergable = (_warehouse, target) => target.mergable;\n const onUnmergable = (_warehouse, target) => target.unmergable;\n const onCells = (warehouse, target) => extractCells(warehouse, target, always);\n const isUnlockedTableCell = (warehouse, cell) => findInWarehouse(warehouse, cell).exists(detail => !detail.isLocked);\n const allUnlocked = (warehouse, cells) => forall(cells, cell => isUnlockedTableCell(warehouse, cell));\n const onUnlockedMergable = (warehouse, target) => onMergable(warehouse, target).filter(mergeable => allUnlocked(warehouse, mergeable.cells));\n const onUnlockedUnmergable = (warehouse, target) => onUnmergable(warehouse, target).filter(cells => allUnlocked(warehouse, cells));\n\n const generate = cases => {\n if (!isArray(cases)) {\n throw new Error('cases must be an array');\n }\n if (cases.length === 0) {\n throw new Error('there must be at least one case');\n }\n const constructors = [];\n const adt = {};\n each(cases, (acase, count) => {\n const keys$1 = keys(acase);\n if (keys$1.length !== 1) {\n throw new Error('one and only one name per case');\n }\n const key = keys$1[0];\n const value = acase[key];\n if (adt[key] !== undefined) {\n throw new Error('duplicate key detected:' + key);\n } else if (key === 'cata') {\n throw new Error('cannot have a case named cata (sorry)');\n } else if (!isArray(value)) {\n throw new Error('case arguments must be an array');\n }\n constructors.push(key);\n adt[key] = (...args) => {\n const argLength = args.length;\n if (argLength !== value.length) {\n throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);\n }\n const match = branches => {\n const branchKeys = keys(branches);\n if (constructors.length !== branchKeys.length) {\n throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\\nActual: ' + branchKeys.join(','));\n }\n const allReqd = forall(constructors, reqKey => {\n return contains(branchKeys, reqKey);\n });\n if (!allReqd) {\n throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\\nRequired: ' + constructors.join(', '));\n }\n return branches[key].apply(null, args);\n };\n return {\n fold: (...foldArgs) => {\n if (foldArgs.length !== cases.length) {\n throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + foldArgs.length);\n }\n const target = foldArgs[count];\n return target.apply(null, args);\n },\n match,\n log: label => {\n console.log(label, {\n constructors,\n constructor: key,\n params: args\n });\n }\n };\n };\n });\n return adt;\n };\n const Adt = { generate };\n\n const adt = Adt.generate([\n { none: [] },\n { only: ['index'] },\n {\n left: [\n 'index',\n 'next'\n ]\n },\n {\n middle: [\n 'prev',\n 'index',\n 'next'\n ]\n },\n {\n right: [\n 'prev',\n 'index'\n ]\n }\n ]);\n ({ ...adt });\n\n const opGetRowsType = (table, target) => {\n const house = Warehouse.fromTable(table);\n const details = onCells(house, target);\n return details.bind(selectedCells => {\n const lastSelectedCell = selectedCells[selectedCells.length - 1];\n const minRowRange = selectedCells[0].row;\n const maxRowRange = lastSelectedCell.row + lastSelectedCell.rowspan;\n const selectedRows = house.all.slice(minRowRange, maxRowRange);\n return findCommonRowType(selectedRows);\n }).getOr('');\n };\n const getRowsType = opGetRowsType;\n\n const rgbToHex = value => startsWith(value, 'rgb') ? rgbaToHexString(value) : value;\n const extractAdvancedStyles = elm => {\n const element = SugarElement.fromDom(elm);\n return {\n borderwidth: getRaw(element, 'border-width').getOr(''),\n borderstyle: getRaw(element, 'border-style').getOr(''),\n bordercolor: getRaw(element, 'border-color').map(rgbToHex).getOr(''),\n backgroundcolor: getRaw(element, 'background-color').map(rgbToHex).getOr('')\n };\n };\n const getSharedValues = data => {\n const baseData = data[0];\n const comparisonData = data.slice(1);\n each(comparisonData, items => {\n each(keys(baseData), key => {\n each$1(items, (itemValue, itemKey) => {\n const comparisonValue = baseData[key];\n if (comparisonValue !== '' && key === itemKey) {\n if (comparisonValue !== itemValue) {\n baseData[key] = '';\n }\n }\n });\n });\n });\n return baseData;\n };\n const getAlignment = (formats, formatName, editor, elm) => find(formats, name => !isUndefined(editor.formatter.matchNode(elm, formatName + name))).getOr('');\n const getHAlignment = curry(getAlignment, [\n 'left',\n 'center',\n 'right'\n ], 'align');\n const getVAlignment = curry(getAlignment, [\n 'top',\n 'middle',\n 'bottom'\n ], 'valign');\n const extractDataFromSettings = (editor, hasAdvTableTab) => {\n const style = getDefaultStyles(editor);\n const attrs = getDefaultAttributes(editor);\n const extractAdvancedStyleData = () => ({\n borderstyle: get$4(style, 'border-style').getOr(''),\n bordercolor: rgbToHex(get$4(style, 'border-color').getOr('')),\n backgroundcolor: rgbToHex(get$4(style, 'background-color').getOr(''))\n });\n const defaultData = {\n height: '',\n width: '100%',\n cellspacing: '',\n cellpadding: '',\n caption: false,\n class: '',\n align: '',\n border: ''\n };\n const getBorder = () => {\n const borderWidth = style['border-width'];\n if (shouldStyleWithCss(editor) && borderWidth) {\n return { border: borderWidth };\n }\n return get$4(attrs, 'border').fold(() => ({}), border => ({ border }));\n };\n const advStyle = hasAdvTableTab ? extractAdvancedStyleData() : {};\n const getCellPaddingCellSpacing = () => {\n const spacing = get$4(style, 'border-spacing').or(get$4(attrs, 'cellspacing')).fold(() => ({}), cellspacing => ({ cellspacing }));\n const padding = get$4(style, 'border-padding').or(get$4(attrs, 'cellpadding')).fold(() => ({}), cellpadding => ({ cellpadding }));\n return {\n ...spacing,\n ...padding\n };\n };\n const data = {\n ...defaultData,\n ...style,\n ...attrs,\n ...advStyle,\n ...getBorder(),\n ...getCellPaddingCellSpacing()\n };\n return data;\n };\n const getRowType = elm => table(SugarElement.fromDom(elm)).map(table => {\n const target = { selection: fromDom(elm.cells) };\n return getRowsType(table, target);\n }).getOr('');\n const extractDataFromTableElement = (editor, elm, hasAdvTableTab) => {\n const getBorder = (dom, elm) => {\n const optBorderWidth = getRaw(SugarElement.fromDom(elm), 'border-width');\n if (shouldStyleWithCss(editor) && optBorderWidth.isSome()) {\n return optBorderWidth.getOr('');\n }\n return dom.getAttrib(elm, 'border') || getTDTHOverallStyle(editor.dom, elm, 'border-width') || getTDTHOverallStyle(editor.dom, elm, 'border') || '';\n };\n const dom = editor.dom;\n const cellspacing = shouldStyleWithCss(editor) ? dom.getStyle(elm, 'border-spacing') || dom.getAttrib(elm, 'cellspacing') : dom.getAttrib(elm, 'cellspacing') || dom.getStyle(elm, 'border-spacing');\n const cellpadding = shouldStyleWithCss(editor) ? getTDTHOverallStyle(dom, elm, 'padding') || dom.getAttrib(elm, 'cellpadding') : dom.getAttrib(elm, 'cellpadding') || getTDTHOverallStyle(dom, elm, 'padding');\n return {\n width: dom.getStyle(elm, 'width') || dom.getAttrib(elm, 'width'),\n height: dom.getStyle(elm, 'height') || dom.getAttrib(elm, 'height'),\n cellspacing: cellspacing !== null && cellspacing !== void 0 ? cellspacing : '',\n cellpadding: cellpadding !== null && cellpadding !== void 0 ? cellpadding : '',\n border: getBorder(dom, elm),\n caption: !!dom.select('caption', elm)[0],\n class: dom.getAttrib(elm, 'class', ''),\n align: getHAlignment(editor, elm),\n ...hasAdvTableTab ? extractAdvancedStyles(elm) : {}\n };\n };\n const extractDataFromRowElement = (editor, elm, hasAdvancedRowTab) => {\n const dom = editor.dom;\n return {\n height: dom.getStyle(elm, 'height') || dom.getAttrib(elm, 'height'),\n class: dom.getAttrib(elm, 'class', ''),\n type: getRowType(elm),\n align: getHAlignment(editor, elm),\n ...hasAdvancedRowTab ? extractAdvancedStyles(elm) : {}\n };\n };\n const extractDataFromCellElement = (editor, cell, hasAdvancedCellTab, column) => {\n const dom = editor.dom;\n const colElm = column.getOr(cell);\n const getStyle = (element, style) => dom.getStyle(element, style) || dom.getAttrib(element, style);\n return {\n width: getStyle(colElm, 'width'),\n height: getStyle(cell, 'height'),\n scope: dom.getAttrib(cell, 'scope'),\n celltype: getNodeName(cell),\n class: dom.getAttrib(cell, 'class', ''),\n halign: getHAlignment(editor, cell),\n valign: getVAlignment(editor, cell),\n ...hasAdvancedCellTab ? extractAdvancedStyles(cell) : {}\n };\n };\n\n const getSelectedCells = (table, cells) => {\n const warehouse = Warehouse.fromTable(table);\n const allCells = Warehouse.justCells(warehouse);\n const filtered = filter(allCells, cellA => exists(cells, cellB => eq(cellA.element, cellB)));\n return map(filtered, cell => ({\n element: cell.element.dom,\n column: Warehouse.getColumnAt(warehouse, cell.column).map(col => col.element.dom)\n }));\n };\n const updateSimpleProps$1 = (modifier, colModifier, data, shouldUpdate) => {\n if (shouldUpdate('scope')) {\n modifier.setAttrib('scope', data.scope);\n }\n if (shouldUpdate('class')) {\n modifier.setAttrib('class', data.class);\n }\n if (shouldUpdate('height')) {\n modifier.setStyle('height', addPxSuffix(data.height));\n }\n if (shouldUpdate('width')) {\n colModifier.setStyle('width', addPxSuffix(data.width));\n }\n };\n const updateAdvancedProps$1 = (modifier, data, shouldUpdate) => {\n if (shouldUpdate('backgroundcolor')) {\n modifier.setFormat('tablecellbackgroundcolor', data.backgroundcolor);\n }\n if (shouldUpdate('bordercolor')) {\n modifier.setFormat('tablecellbordercolor', data.bordercolor);\n }\n if (shouldUpdate('borderstyle')) {\n modifier.setFormat('tablecellborderstyle', data.borderstyle);\n }\n if (shouldUpdate('borderwidth')) {\n modifier.setFormat('tablecellborderwidth', addPxSuffix(data.borderwidth));\n }\n };\n const applyStyleData$1 = (editor, cells, data, wasChanged) => {\n const isSingleCell = cells.length === 1;\n each(cells, item => {\n const cellElm = item.element;\n const shouldOverrideCurrentValue = isSingleCell ? always : wasChanged;\n const modifier = DomModifier.normal(editor, cellElm);\n const colModifier = item.column.map(col => DomModifier.normal(editor, col)).getOr(modifier);\n updateSimpleProps$1(modifier, colModifier, data, shouldOverrideCurrentValue);\n if (hasAdvancedCellTab(editor)) {\n updateAdvancedProps$1(modifier, data, shouldOverrideCurrentValue);\n }\n if (wasChanged('halign')) {\n setAlign(editor, cellElm, data.halign);\n }\n if (wasChanged('valign')) {\n setVAlign(editor, cellElm, data.valign);\n }\n });\n };\n const applyStructureData$1 = (editor, data) => {\n editor.execCommand('mceTableCellType', false, {\n type: data.celltype,\n no_events: true\n });\n };\n const applyCellData = (editor, cells, oldData, data) => {\n const modifiedData = filter$1(data, (value, key) => oldData[key] !== value);\n if (size(modifiedData) > 0 && cells.length >= 1) {\n table(cells[0]).each(table => {\n const selectedCells = getSelectedCells(table, cells);\n const styleModified = size(filter$1(modifiedData, (_value, key) => key !== 'scope' && key !== 'celltype')) > 0;\n const structureModified = has(modifiedData, 'celltype');\n if (styleModified || has(modifiedData, 'scope')) {\n applyStyleData$1(editor, selectedCells, data, curry(has, modifiedData));\n }\n if (structureModified) {\n applyStructureData$1(editor, data);\n }\n fireTableModified(editor, table.dom, {\n structure: structureModified,\n style: styleModified\n });\n });\n }\n };\n const onSubmitCellForm = (editor, cells, oldData, api) => {\n const data = api.getData();\n api.close();\n editor.undoManager.transact(() => {\n applyCellData(editor, cells, oldData, data);\n editor.focus();\n });\n };\n const getData$1 = (editor, cells) => {\n const cellsData = table(cells[0]).map(table => map(getSelectedCells(table, cells), item => extractDataFromCellElement(editor, item.element, hasAdvancedCellTab(editor), item.column)));\n return getSharedValues(cellsData.getOrDie());\n };\n const open$2 = editor => {\n const cells = getCellsFromSelection(editor);\n if (cells.length === 0) {\n return;\n }\n const data = getData$1(editor, cells);\n const dialogTabPanel = {\n type: 'tabpanel',\n tabs: [\n {\n title: 'General',\n name: 'general',\n items: getItems$2(editor)\n },\n getAdvancedTab(editor, 'cell')\n ]\n };\n const dialogPanel = {\n type: 'panel',\n items: [{\n type: 'grid',\n columns: 2,\n items: getItems$2(editor)\n }]\n };\n editor.windowManager.open({\n title: 'Cell Properties',\n size: 'normal',\n body: hasAdvancedCellTab(editor) ? dialogTabPanel : dialogPanel,\n buttons: [\n {\n type: 'cancel',\n name: 'cancel',\n text: 'Cancel'\n },\n {\n type: 'submit',\n name: 'save',\n text: 'Save',\n primary: true\n }\n ],\n initialData: data,\n onSubmit: curry(onSubmitCellForm, editor, cells, data)\n });\n };\n\n const getClassList = editor => {\n const classes = buildListItems(getRowClassList(editor));\n if (classes.length > 0) {\n return Optional.some({\n name: 'class',\n type: 'listbox',\n label: 'Class',\n items: classes\n });\n }\n return Optional.none();\n };\n const formChildren = [\n {\n type: 'listbox',\n name: 'type',\n label: 'Row type',\n items: [\n {\n text: 'Header',\n value: 'header'\n },\n {\n text: 'Body',\n value: 'body'\n },\n {\n text: 'Footer',\n value: 'footer'\n }\n ]\n },\n {\n type: 'listbox',\n name: 'align',\n label: 'Alignment',\n items: [\n {\n text: 'None',\n value: ''\n },\n {\n text: 'Left',\n value: 'left'\n },\n {\n text: 'Center',\n value: 'center'\n },\n {\n text: 'Right',\n value: 'right'\n }\n ]\n },\n {\n label: 'Height',\n name: 'height',\n type: 'input'\n }\n ];\n const getItems$1 = editor => formChildren.concat(getClassList(editor).toArray());\n\n const updateSimpleProps = (modifier, data, shouldUpdate) => {\n if (shouldUpdate('class')) {\n modifier.setAttrib('class', data.class);\n }\n if (shouldUpdate('height')) {\n modifier.setStyle('height', addPxSuffix(data.height));\n }\n };\n const updateAdvancedProps = (modifier, data, shouldUpdate) => {\n if (shouldUpdate('backgroundcolor')) {\n modifier.setStyle('background-color', data.backgroundcolor);\n }\n if (shouldUpdate('bordercolor')) {\n modifier.setStyle('border-color', data.bordercolor);\n }\n if (shouldUpdate('borderstyle')) {\n modifier.setStyle('border-style', data.borderstyle);\n }\n };\n const applyStyleData = (editor, rows, data, wasChanged) => {\n const isSingleRow = rows.length === 1;\n const shouldOverrideCurrentValue = isSingleRow ? always : wasChanged;\n each(rows, rowElm => {\n const modifier = DomModifier.normal(editor, rowElm);\n updateSimpleProps(modifier, data, shouldOverrideCurrentValue);\n if (hasAdvancedRowTab(editor)) {\n updateAdvancedProps(modifier, data, shouldOverrideCurrentValue);\n }\n if (wasChanged('align')) {\n setAlign(editor, rowElm, data.align);\n }\n });\n };\n const applyStructureData = (editor, data) => {\n editor.execCommand('mceTableRowType', false, {\n type: data.type,\n no_events: true\n });\n };\n const applyRowData = (editor, rows, oldData, data) => {\n const modifiedData = filter$1(data, (value, key) => oldData[key] !== value);\n if (size(modifiedData) > 0) {\n const typeModified = has(modifiedData, 'type');\n const styleModified = typeModified ? size(modifiedData) > 1 : true;\n if (styleModified) {\n applyStyleData(editor, rows, data, curry(has, modifiedData));\n }\n if (typeModified) {\n applyStructureData(editor, data);\n }\n table(SugarElement.fromDom(rows[0])).each(table => fireTableModified(editor, table.dom, {\n structure: typeModified,\n style: styleModified\n }));\n }\n };\n const onSubmitRowForm = (editor, rows, oldData, api) => {\n const data = api.getData();\n api.close();\n editor.undoManager.transact(() => {\n applyRowData(editor, rows, oldData, data);\n editor.focus();\n });\n };\n const open$1 = editor => {\n const rows = getRowsFromSelection(getSelectionStart(editor), ephemera.selected);\n if (rows.length === 0) {\n return;\n }\n const rowsData = map(rows, rowElm => extractDataFromRowElement(editor, rowElm.dom, hasAdvancedRowTab(editor)));\n const data = getSharedValues(rowsData);\n const dialogTabPanel = {\n type: 'tabpanel',\n tabs: [\n {\n title: 'General',\n name: 'general',\n items: getItems$1(editor)\n },\n getAdvancedTab(editor, 'row')\n ]\n };\n const dialogPanel = {\n type: 'panel',\n items: [{\n type: 'grid',\n columns: 2,\n items: getItems$1(editor)\n }]\n };\n editor.windowManager.open({\n title: 'Row Properties',\n size: 'normal',\n body: hasAdvancedRowTab(editor) ? dialogTabPanel : dialogPanel,\n buttons: [\n {\n type: 'cancel',\n name: 'cancel',\n text: 'Cancel'\n },\n {\n type: 'submit',\n name: 'save',\n text: 'Save',\n primary: true\n }\n ],\n initialData: data,\n onSubmit: curry(onSubmitRowForm, editor, map(rows, r => r.dom), data)\n });\n };\n\n const getItems = (editor, classes, insertNewTable) => {\n const rowColCountItems = !insertNewTable ? [] : [\n {\n type: 'input',\n name: 'cols',\n label: 'Cols',\n inputMode: 'numeric'\n },\n {\n type: 'input',\n name: 'rows',\n label: 'Rows',\n inputMode: 'numeric'\n }\n ];\n const alwaysItems = [\n {\n type: 'input',\n name: 'width',\n label: 'Width'\n },\n {\n type: 'input',\n name: 'height',\n label: 'Height'\n }\n ];\n const appearanceItems = hasAppearanceOptions(editor) ? [\n {\n type: 'input',\n name: 'cellspacing',\n label: 'Cell spacing',\n inputMode: 'numeric'\n },\n {\n type: 'input',\n name: 'cellpadding',\n label: 'Cell padding',\n inputMode: 'numeric'\n },\n {\n type: 'input',\n name: 'border',\n label: 'Border width'\n },\n {\n type: 'label',\n label: 'Caption',\n items: [{\n type: 'checkbox',\n name: 'caption',\n label: 'Show caption'\n }]\n }\n ] : [];\n const alignmentItem = [{\n type: 'listbox',\n name: 'align',\n label: 'Alignment',\n items: [\n {\n text: 'None',\n value: ''\n },\n {\n text: 'Left',\n value: 'left'\n },\n {\n text: 'Center',\n value: 'center'\n },\n {\n text: 'Right',\n value: 'right'\n }\n ]\n }];\n const classListItem = classes.length > 0 ? [{\n type: 'listbox',\n name: 'class',\n label: 'Class',\n items: classes\n }] : [];\n return rowColCountItems.concat(alwaysItems).concat(appearanceItems).concat(alignmentItem).concat(classListItem);\n };\n\n const styleTDTH = (dom, elm, name, value) => {\n if (elm.tagName === 'TD' || elm.tagName === 'TH') {\n if (isString(name) && isNonNullable(value)) {\n dom.setStyle(elm, name, value);\n } else {\n dom.setStyles(elm, name);\n }\n } else {\n if (elm.children) {\n for (let i = 0; i < elm.children.length; i++) {\n styleTDTH(dom, elm.children[i], name, value);\n }\n }\n }\n };\n const applyDataToElement = (editor, tableElm, data, shouldApplyOnCell) => {\n const dom = editor.dom;\n const attrs = {};\n const styles = {};\n const shouldStyleWithCss$1 = shouldStyleWithCss(editor);\n const hasAdvancedTableTab$1 = hasAdvancedTableTab(editor);\n if (!isUndefined(data.class)) {\n attrs.class = data.class;\n }\n styles.height = addPxSuffix(data.height);\n if (shouldStyleWithCss$1) {\n styles.width = addPxSuffix(data.width);\n } else if (dom.getAttrib(tableElm, 'width')) {\n attrs.width = removePxSuffix(data.width);\n }\n if (shouldStyleWithCss$1) {\n styles['border-width'] = addPxSuffix(data.border);\n styles['border-spacing'] = addPxSuffix(data.cellspacing);\n } else {\n attrs.border = data.border;\n attrs.cellpadding = data.cellpadding;\n attrs.cellspacing = data.cellspacing;\n }\n if (shouldStyleWithCss$1 && tableElm.children) {\n const cellStyles = {};\n if (shouldApplyOnCell.border) {\n cellStyles['border-width'] = addPxSuffix(data.border);\n }\n if (shouldApplyOnCell.cellpadding) {\n cellStyles.padding = addPxSuffix(data.cellpadding);\n }\n if (hasAdvancedTableTab$1 && shouldApplyOnCell.bordercolor) {\n cellStyles['border-color'] = data.bordercolor;\n }\n if (!isEmpty$1(cellStyles)) {\n for (let i = 0; i < tableElm.children.length; i++) {\n styleTDTH(dom, tableElm.children[i], cellStyles);\n }\n }\n }\n if (hasAdvancedTableTab$1) {\n const advData = data;\n styles['background-color'] = advData.backgroundcolor;\n styles['border-color'] = advData.bordercolor;\n styles['border-style'] = advData.borderstyle;\n }\n dom.setStyles(tableElm, {\n ...getDefaultStyles(editor),\n ...styles\n });\n dom.setAttribs(tableElm, {\n ...getDefaultAttributes(editor),\n ...attrs\n });\n };\n const onSubmitTableForm = (editor, tableElm, oldData, api) => {\n const dom = editor.dom;\n const data = api.getData();\n const modifiedData = filter$1(data, (value, key) => oldData[key] !== value);\n api.close();\n if (data.class === '') {\n delete data.class;\n }\n editor.undoManager.transact(() => {\n if (!tableElm) {\n const cols = toInt(data.cols).getOr(1);\n const rows = toInt(data.rows).getOr(1);\n editor.execCommand('mceInsertTable', false, {\n rows,\n columns: cols\n });\n tableElm = getSelectionCell(getSelectionStart(editor), getIsRoot(editor)).bind(cell => table(cell, getIsRoot(editor))).map(table => table.dom).getOrDie();\n }\n if (size(modifiedData) > 0) {\n const applicableCellProperties = {\n border: has(modifiedData, 'border'),\n bordercolor: has(modifiedData, 'bordercolor'),\n cellpadding: has(modifiedData, 'cellpadding')\n };\n applyDataToElement(editor, tableElm, data, applicableCellProperties);\n const captionElm = dom.select('caption', tableElm)[0];\n if (captionElm && !data.caption || !captionElm && data.caption) {\n editor.execCommand('mceTableToggleCaption');\n }\n setAlign(editor, tableElm, data.align);\n }\n editor.focus();\n editor.addVisual();\n if (size(modifiedData) > 0) {\n const captionModified = has(modifiedData, 'caption');\n const styleModified = captionModified ? size(modifiedData) > 1 : true;\n fireTableModified(editor, tableElm, {\n structure: captionModified,\n style: styleModified\n });\n }\n });\n };\n const open = (editor, insertNewTable) => {\n const dom = editor.dom;\n let tableElm;\n let data = extractDataFromSettings(editor, hasAdvancedTableTab(editor));\n if (insertNewTable) {\n data.cols = '1';\n data.rows = '1';\n if (hasAdvancedTableTab(editor)) {\n data.borderstyle = '';\n data.bordercolor = '';\n data.backgroundcolor = '';\n }\n } else {\n tableElm = dom.getParent(editor.selection.getStart(), 'table', editor.getBody());\n if (tableElm) {\n data = extractDataFromTableElement(editor, tableElm, hasAdvancedTableTab(editor));\n } else {\n if (hasAdvancedTableTab(editor)) {\n data.borderstyle = '';\n data.bordercolor = '';\n data.backgroundcolor = '';\n }\n }\n }\n const classes = buildListItems(getTableClassList(editor));\n if (classes.length > 0) {\n if (data.class) {\n data.class = data.class.replace(/\\s*mce\\-item\\-table\\s*/g, '');\n }\n }\n const generalPanel = {\n type: 'grid',\n columns: 2,\n items: getItems(editor, classes, insertNewTable)\n };\n const nonAdvancedForm = () => ({\n type: 'panel',\n items: [generalPanel]\n });\n const advancedForm = () => ({\n type: 'tabpanel',\n tabs: [\n {\n title: 'General',\n name: 'general',\n items: [generalPanel]\n },\n getAdvancedTab(editor, 'table')\n ]\n });\n const dialogBody = hasAdvancedTableTab(editor) ? advancedForm() : nonAdvancedForm();\n editor.windowManager.open({\n title: 'Table Properties',\n size: 'normal',\n body: dialogBody,\n onSubmit: curry(onSubmitTableForm, editor, tableElm, data),\n buttons: [\n {\n type: 'cancel',\n name: 'cancel',\n text: 'Cancel'\n },\n {\n type: 'submit',\n name: 'save',\n text: 'Save',\n primary: true\n }\n ],\n initialData: data\n });\n };\n\n const registerCommands = editor => {\n const runAction = f => {\n if (isInEditableContext(getSelectionStart(editor))) {\n f();\n }\n };\n each$1({\n mceTableProps: curry(open, editor, false),\n mceTableRowProps: curry(open$1, editor),\n mceTableCellProps: curry(open$2, editor),\n mceInsertTableDialog: curry(open, editor, true)\n }, (func, name) => editor.addCommand(name, () => runAction(func)));\n };\n\n const child = (scope, selector) => child$1(scope, selector).isSome();\n\n const selection = identity;\n const unmergable = selectedCells => {\n const hasSpan = (elem, type) => getOpt(elem, type).exists(span => parseInt(span, 10) > 1);\n const hasRowOrColSpan = elem => hasSpan(elem, 'rowspan') || hasSpan(elem, 'colspan');\n return selectedCells.length > 0 && forall(selectedCells, hasRowOrColSpan) ? Optional.some(selectedCells) : Optional.none();\n };\n const mergable = (table, selectedCells, ephemera) => {\n if (selectedCells.length <= 1) {\n return Optional.none();\n } else {\n return retrieveBox(table, ephemera.firstSelectedSelector, ephemera.lastSelectedSelector).map(bounds => ({\n bounds,\n cells: selectedCells\n }));\n }\n };\n\n const noMenu = cell => ({\n element: cell,\n mergable: Optional.none(),\n unmergable: Optional.none(),\n selection: [cell]\n });\n const forMenu = (selectedCells, table, cell) => ({\n element: cell,\n mergable: mergable(table, selectedCells, ephemera),\n unmergable: unmergable(selectedCells),\n selection: selection(selectedCells)\n });\n\n const getSelectionTargets = editor => {\n const targets = Cell(Optional.none());\n const changeHandlers = Cell([]);\n let selectionDetails = Optional.none();\n const isCaption = isTag('caption');\n const isDisabledForSelection = key => selectionDetails.forall(details => !details[key]);\n const getStart = () => getSelectionCellOrCaption(getSelectionStart(editor), getIsRoot(editor));\n const getEnd = () => getSelectionCellOrCaption(getSelectionEnd(editor), getIsRoot(editor));\n const findTargets = () => getStart().bind(startCellOrCaption => flatten(lift2(table(startCellOrCaption), getEnd().bind(table), (startTable, endTable) => {\n if (eq(startTable, endTable)) {\n if (isCaption(startCellOrCaption)) {\n return Optional.some(noMenu(startCellOrCaption));\n } else {\n return Optional.some(forMenu(getCellsFromSelection(editor), startTable, startCellOrCaption));\n }\n }\n return Optional.none();\n })));\n const getExtractedDetails = targets => {\n const tableOpt = table(targets.element);\n return tableOpt.map(table => {\n const warehouse = Warehouse.fromTable(table);\n const selectedCells = onCells(warehouse, targets).getOr([]);\n const locked = foldl(selectedCells, (acc, cell) => {\n if (cell.isLocked) {\n acc.onAny = true;\n if (cell.column === 0) {\n acc.onFirst = true;\n } else if (cell.column + cell.colspan >= warehouse.grid.columns) {\n acc.onLast = true;\n }\n }\n return acc;\n }, {\n onAny: false,\n onFirst: false,\n onLast: false\n });\n return {\n mergeable: onUnlockedMergable(warehouse, targets).isSome(),\n unmergeable: onUnlockedUnmergable(warehouse, targets).isSome(),\n locked\n };\n });\n };\n const resetTargets = () => {\n targets.set(cached(findTargets)());\n selectionDetails = targets.get().bind(getExtractedDetails);\n each(changeHandlers.get(), call);\n };\n const setupHandler = handler => {\n handler();\n changeHandlers.set(changeHandlers.get().concat([handler]));\n return () => {\n changeHandlers.set(filter(changeHandlers.get(), h => h !== handler));\n };\n };\n const onSetup = (api, isDisabled) => setupHandler(() => targets.get().fold(() => {\n api.setEnabled(false);\n }, targets => {\n api.setEnabled(!isDisabled(targets) && editor.selection.isEditable());\n }));\n const onSetupWithToggle = (api, isDisabled, isActive) => setupHandler(() => targets.get().fold(() => {\n api.setEnabled(false);\n api.setActive(false);\n }, targets => {\n api.setEnabled(!isDisabled(targets) && editor.selection.isEditable());\n api.setActive(isActive(targets));\n }));\n const isDisabledFromLocked = lockedDisable => selectionDetails.exists(details => details.locked[lockedDisable]);\n const onSetupTable = api => onSetup(api, _ => false);\n const onSetupCellOrRow = api => onSetup(api, targets => isCaption(targets.element));\n const onSetupColumn = lockedDisable => api => onSetup(api, targets => isCaption(targets.element) || isDisabledFromLocked(lockedDisable));\n const onSetupPasteable = getClipboardData => api => onSetup(api, targets => isCaption(targets.element) || getClipboardData().isNone());\n const onSetupPasteableColumn = (getClipboardData, lockedDisable) => api => onSetup(api, targets => isCaption(targets.element) || getClipboardData().isNone() || isDisabledFromLocked(lockedDisable));\n const onSetupMergeable = api => onSetup(api, _targets => isDisabledForSelection('mergeable'));\n const onSetupUnmergeable = api => onSetup(api, _targets => isDisabledForSelection('unmergeable'));\n const onSetupTableWithCaption = api => {\n return onSetupWithToggle(api, never, targets => {\n const tableOpt = table(targets.element, getIsRoot(editor));\n return tableOpt.exists(table => child(table, 'caption'));\n });\n };\n const onSetupTableHeaders = (command, headerType) => api => {\n return onSetupWithToggle(api, targets => isCaption(targets.element), () => editor.queryCommandValue(command) === headerType);\n };\n const onSetupTableRowHeaders = onSetupTableHeaders('mceTableRowType', 'header');\n const onSetupTableColumnHeaders = onSetupTableHeaders('mceTableColType', 'th');\n editor.on('NodeChange ExecCommand TableSelectorChange', resetTargets);\n return {\n onSetupTable,\n onSetupCellOrRow,\n onSetupColumn,\n onSetupPasteable,\n onSetupPasteableColumn,\n onSetupMergeable,\n onSetupUnmergeable,\n resetTargets,\n onSetupTableWithCaption,\n onSetupTableRowHeaders,\n onSetupTableColumnHeaders,\n targets: targets.get\n };\n };\n\n var global = tinymce.util.Tools.resolve('tinymce.FakeClipboard');\n\n const tableTypeBase = 'x-tinymce/dom-table-';\n const tableTypeRow = tableTypeBase + 'rows';\n const tableTypeColumn = tableTypeBase + 'columns';\n const getData = type => {\n var _a;\n const items = (_a = global.read()) !== null && _a !== void 0 ? _a : [];\n return findMap(items, item => Optional.from(item.getType(type)));\n };\n const getRows = () => getData(tableTypeRow);\n const getColumns = () => getData(tableTypeColumn);\n\n const onSetupEditable$1 = editor => api => {\n const nodeChanged = () => {\n api.setEnabled(editor.selection.isEditable());\n };\n editor.on('NodeChange', nodeChanged);\n nodeChanged();\n return () => {\n editor.off('NodeChange', nodeChanged);\n };\n };\n const addButtons = (editor, selectionTargets) => {\n editor.ui.registry.addMenuButton('table', {\n tooltip: 'Table',\n icon: 'table',\n onSetup: onSetupEditable$1(editor),\n fetch: callback => callback('inserttable | cell row column | advtablesort | tableprops deletetable')\n });\n const cmd = command => () => editor.execCommand(command);\n const addButtonIfRegistered = (name, spec) => {\n if (editor.queryCommandSupported(spec.command)) {\n editor.ui.registry.addButton(name, {\n ...spec,\n onAction: isFunction(spec.onAction) ? spec.onAction : cmd(spec.command)\n });\n }\n };\n const addToggleButtonIfRegistered = (name, spec) => {\n if (editor.queryCommandSupported(spec.command)) {\n editor.ui.registry.addToggleButton(name, {\n ...spec,\n onAction: isFunction(spec.onAction) ? spec.onAction : cmd(spec.command)\n });\n }\n };\n addButtonIfRegistered('tableprops', {\n tooltip: 'Table properties',\n command: 'mceTableProps',\n icon: 'table',\n onSetup: selectionTargets.onSetupTable\n });\n addButtonIfRegistered('tabledelete', {\n tooltip: 'Delete table',\n command: 'mceTableDelete',\n icon: 'table-delete-table',\n onSetup: selectionTargets.onSetupTable\n });\n addButtonIfRegistered('tablecellprops', {\n tooltip: 'Cell properties',\n command: 'mceTableCellProps',\n icon: 'table-cell-properties',\n onSetup: selectionTargets.onSetupCellOrRow\n });\n addButtonIfRegistered('tablemergecells', {\n tooltip: 'Merge cells',\n command: 'mceTableMergeCells',\n icon: 'table-merge-cells',\n onSetup: selectionTargets.onSetupMergeable\n });\n addButtonIfRegistered('tablesplitcells', {\n tooltip: 'Split cell',\n command: 'mceTableSplitCells',\n icon: 'table-split-cells',\n onSetup: selectionTargets.onSetupUnmergeable\n });\n addButtonIfRegistered('tableinsertrowbefore', {\n tooltip: 'Insert row before',\n command: 'mceTableInsertRowBefore',\n icon: 'table-insert-row-above',\n onSetup: selectionTargets.onSetupCellOrRow\n });\n addButtonIfRegistered('tableinsertrowafter', {\n tooltip: 'Insert row after',\n command: 'mceTableInsertRowAfter',\n icon: 'table-insert-row-after',\n onSetup: selectionTargets.onSetupCellOrRow\n });\n addButtonIfRegistered('tabledeleterow', {\n tooltip: 'Delete row',\n command: 'mceTableDeleteRow',\n icon: 'table-delete-row',\n onSetup: selectionTargets.onSetupCellOrRow\n });\n addButtonIfRegistered('tablerowprops', {\n tooltip: 'Row properties',\n command: 'mceTableRowProps',\n icon: 'table-row-properties',\n onSetup: selectionTargets.onSetupCellOrRow\n });\n addButtonIfRegistered('tableinsertcolbefore', {\n tooltip: 'Insert column before',\n command: 'mceTableInsertColBefore',\n icon: 'table-insert-column-before',\n onSetup: selectionTargets.onSetupColumn('onFirst')\n });\n addButtonIfRegistered('tableinsertcolafter', {\n tooltip: 'Insert column after',\n command: 'mceTableInsertColAfter',\n icon: 'table-insert-column-after',\n onSetup: selectionTargets.onSetupColumn('onLast')\n });\n addButtonIfRegistered('tabledeletecol', {\n tooltip: 'Delete column',\n command: 'mceTableDeleteCol',\n icon: 'table-delete-column',\n onSetup: selectionTargets.onSetupColumn('onAny')\n });\n addButtonIfRegistered('tablecutrow', {\n tooltip: 'Cut row',\n command: 'mceTableCutRow',\n icon: 'cut-row',\n onSetup: selectionTargets.onSetupCellOrRow\n });\n addButtonIfRegistered('tablecopyrow', {\n tooltip: 'Copy row',\n command: 'mceTableCopyRow',\n icon: 'duplicate-row',\n onSetup: selectionTargets.onSetupCellOrRow\n });\n addButtonIfRegistered('tablepasterowbefore', {\n tooltip: 'Paste row before',\n command: 'mceTablePasteRowBefore',\n icon: 'paste-row-before',\n onSetup: selectionTargets.onSetupPasteable(getRows)\n });\n addButtonIfRegistered('tablepasterowafter', {\n tooltip: 'Paste row after',\n command: 'mceTablePasteRowAfter',\n icon: 'paste-row-after',\n onSetup: selectionTargets.onSetupPasteable(getRows)\n });\n addButtonIfRegistered('tablecutcol', {\n tooltip: 'Cut column',\n command: 'mceTableCutCol',\n icon: 'cut-column',\n onSetup: selectionTargets.onSetupColumn('onAny')\n });\n addButtonIfRegistered('tablecopycol', {\n tooltip: 'Copy column',\n command: 'mceTableCopyCol',\n icon: 'duplicate-column',\n onSetup: selectionTargets.onSetupColumn('onAny')\n });\n addButtonIfRegistered('tablepastecolbefore', {\n tooltip: 'Paste column before',\n command: 'mceTablePasteColBefore',\n icon: 'paste-column-before',\n onSetup: selectionTargets.onSetupPasteableColumn(getColumns, 'onFirst')\n });\n addButtonIfRegistered('tablepastecolafter', {\n tooltip: 'Paste column after',\n command: 'mceTablePasteColAfter',\n icon: 'paste-column-after',\n onSetup: selectionTargets.onSetupPasteableColumn(getColumns, 'onLast')\n });\n addButtonIfRegistered('tableinsertdialog', {\n tooltip: 'Insert table',\n command: 'mceInsertTableDialog',\n icon: 'table',\n onSetup: onSetupEditable$1(editor)\n });\n const tableClassList = filterNoneItem(getTableClassList(editor));\n if (tableClassList.length !== 0 && editor.queryCommandSupported('mceTableToggleClass')) {\n editor.ui.registry.addMenuButton('tableclass', {\n icon: 'table-classes',\n tooltip: 'Table styles',\n fetch: generateMenuItemsCallback(editor, tableClassList, 'tableclass', value => editor.execCommand('mceTableToggleClass', false, value)),\n onSetup: selectionTargets.onSetupTable\n });\n }\n const tableCellClassList = filterNoneItem(getCellClassList(editor));\n if (tableCellClassList.length !== 0 && editor.queryCommandSupported('mceTableCellToggleClass')) {\n editor.ui.registry.addMenuButton('tablecellclass', {\n icon: 'table-cell-classes',\n tooltip: 'Cell styles',\n fetch: generateMenuItemsCallback(editor, tableCellClassList, 'tablecellclass', value => editor.execCommand('mceTableCellToggleClass', false, value)),\n onSetup: selectionTargets.onSetupCellOrRow\n });\n }\n if (editor.queryCommandSupported('mceTableApplyCellStyle')) {\n editor.ui.registry.addMenuButton('tablecellvalign', {\n icon: 'vertical-align',\n tooltip: 'Vertical align',\n fetch: generateMenuItemsCallback(editor, verticalAlignValues, 'tablecellverticalalign', applyTableCellStyle(editor, 'vertical-align')),\n onSetup: selectionTargets.onSetupCellOrRow\n });\n editor.ui.registry.addMenuButton('tablecellborderwidth', {\n icon: 'border-width',\n tooltip: 'Border width',\n fetch: generateMenuItemsCallback(editor, getTableBorderWidths(editor), 'tablecellborderwidth', applyTableCellStyle(editor, 'border-width')),\n onSetup: selectionTargets.onSetupCellOrRow\n });\n editor.ui.registry.addMenuButton('tablecellborderstyle', {\n icon: 'border-style',\n tooltip: 'Border style',\n fetch: generateMenuItemsCallback(editor, getTableBorderStyles(editor), 'tablecellborderstyle', applyTableCellStyle(editor, 'border-style')),\n onSetup: selectionTargets.onSetupCellOrRow\n });\n editor.ui.registry.addMenuButton('tablecellbackgroundcolor', {\n icon: 'cell-background-color',\n tooltip: 'Background color',\n fetch: callback => callback(buildColorMenu(editor, getTableBackgroundColorMap(editor), 'background-color')),\n onSetup: selectionTargets.onSetupCellOrRow\n });\n editor.ui.registry.addMenuButton('tablecellbordercolor', {\n icon: 'cell-border-color',\n tooltip: 'Border color',\n fetch: callback => callback(buildColorMenu(editor, getTableBorderColorMap(editor), 'border-color')),\n onSetup: selectionTargets.onSetupCellOrRow\n });\n }\n addToggleButtonIfRegistered('tablecaption', {\n tooltip: 'Table caption',\n icon: 'table-caption',\n command: 'mceTableToggleCaption',\n onSetup: selectionTargets.onSetupTableWithCaption\n });\n addToggleButtonIfRegistered('tablerowheader', {\n tooltip: 'Row header',\n icon: 'table-top-header',\n command: 'mceTableRowType',\n onAction: changeRowHeader(editor),\n onSetup: selectionTargets.onSetupTableRowHeaders\n });\n addToggleButtonIfRegistered('tablecolheader', {\n tooltip: 'Column header',\n icon: 'table-left-header',\n command: 'mceTableColType',\n onAction: changeColumnHeader(editor),\n onSetup: selectionTargets.onSetupTableColumnHeaders\n });\n };\n const addToolbars = editor => {\n const isEditableTable = table => editor.dom.is(table, 'table') && editor.getBody().contains(table) && editor.dom.isEditable(table.parentNode);\n const toolbar = getToolbar(editor);\n if (toolbar.length > 0) {\n editor.ui.registry.addContextToolbar('table', {\n predicate: isEditableTable,\n items: toolbar,\n scope: 'node',\n position: 'node'\n });\n }\n };\n\n const onSetupEditable = editor => api => {\n const nodeChanged = () => {\n api.setEnabled(editor.selection.isEditable());\n };\n editor.on('NodeChange', nodeChanged);\n nodeChanged();\n return () => {\n editor.off('NodeChange', nodeChanged);\n };\n };\n const addMenuItems = (editor, selectionTargets) => {\n const cmd = command => () => editor.execCommand(command);\n const addMenuIfRegistered = (name, spec) => {\n if (editor.queryCommandSupported(spec.command)) {\n editor.ui.registry.addMenuItem(name, {\n ...spec,\n onAction: isFunction(spec.onAction) ? spec.onAction : cmd(spec.command)\n });\n return true;\n } else {\n return false;\n }\n };\n const addToggleMenuIfRegistered = (name, spec) => {\n if (editor.queryCommandSupported(spec.command)) {\n editor.ui.registry.addToggleMenuItem(name, {\n ...spec,\n onAction: isFunction(spec.onAction) ? spec.onAction : cmd(spec.command)\n });\n }\n };\n const insertTableAction = data => {\n editor.execCommand('mceInsertTable', false, {\n rows: data.numRows,\n columns: data.numColumns\n });\n };\n const hasRowMenuItems = [\n addMenuIfRegistered('tableinsertrowbefore', {\n text: 'Insert row before',\n icon: 'table-insert-row-above',\n command: 'mceTableInsertRowBefore',\n onSetup: selectionTargets.onSetupCellOrRow\n }),\n addMenuIfRegistered('tableinsertrowafter', {\n text: 'Insert row after',\n icon: 'table-insert-row-after',\n command: 'mceTableInsertRowAfter',\n onSetup: selectionTargets.onSetupCellOrRow\n }),\n addMenuIfRegistered('tabledeleterow', {\n text: 'Delete row',\n icon: 'table-delete-row',\n command: 'mceTableDeleteRow',\n onSetup: selectionTargets.onSetupCellOrRow\n }),\n addMenuIfRegistered('tablerowprops', {\n text: 'Row properties',\n icon: 'table-row-properties',\n command: 'mceTableRowProps',\n onSetup: selectionTargets.onSetupCellOrRow\n }),\n addMenuIfRegistered('tablecutrow', {\n text: 'Cut row',\n icon: 'cut-row',\n command: 'mceTableCutRow',\n onSetup: selectionTargets.onSetupCellOrRow\n }),\n addMenuIfRegistered('tablecopyrow', {\n text: 'Copy row',\n icon: 'duplicate-row',\n command: 'mceTableCopyRow',\n onSetup: selectionTargets.onSetupCellOrRow\n }),\n addMenuIfRegistered('tablepasterowbefore', {\n text: 'Paste row before',\n icon: 'paste-row-before',\n command: 'mceTablePasteRowBefore',\n onSetup: selectionTargets.onSetupPasteable(getRows)\n }),\n addMenuIfRegistered('tablepasterowafter', {\n text: 'Paste row after',\n icon: 'paste-row-after',\n command: 'mceTablePasteRowAfter',\n onSetup: selectionTargets.onSetupPasteable(getRows)\n })\n ];\n const hasColumnMenuItems = [\n addMenuIfRegistered('tableinsertcolumnbefore', {\n text: 'Insert column before',\n icon: 'table-insert-column-before',\n command: 'mceTableInsertColBefore',\n onSetup: selectionTargets.onSetupColumn('onFirst')\n }),\n addMenuIfRegistered('tableinsertcolumnafter', {\n text: 'Insert column after',\n icon: 'table-insert-column-after',\n command: 'mceTableInsertColAfter',\n onSetup: selectionTargets.onSetupColumn('onLast')\n }),\n addMenuIfRegistered('tabledeletecolumn', {\n text: 'Delete column',\n icon: 'table-delete-column',\n command: 'mceTableDeleteCol',\n onSetup: selectionTargets.onSetupColumn('onAny')\n }),\n addMenuIfRegistered('tablecutcolumn', {\n text: 'Cut column',\n icon: 'cut-column',\n command: 'mceTableCutCol',\n onSetup: selectionTargets.onSetupColumn('onAny')\n }),\n addMenuIfRegistered('tablecopycolumn', {\n text: 'Copy column',\n icon: 'duplicate-column',\n command: 'mceTableCopyCol',\n onSetup: selectionTargets.onSetupColumn('onAny')\n }),\n addMenuIfRegistered('tablepastecolumnbefore', {\n text: 'Paste column before',\n icon: 'paste-column-before',\n command: 'mceTablePasteColBefore',\n onSetup: selectionTargets.onSetupPasteableColumn(getColumns, 'onFirst')\n }),\n addMenuIfRegistered('tablepastecolumnafter', {\n text: 'Paste column after',\n icon: 'paste-column-after',\n command: 'mceTablePasteColAfter',\n onSetup: selectionTargets.onSetupPasteableColumn(getColumns, 'onLast')\n })\n ];\n const hasCellMenuItems = [\n addMenuIfRegistered('tablecellprops', {\n text: 'Cell properties',\n icon: 'table-cell-properties',\n command: 'mceTableCellProps',\n onSetup: selectionTargets.onSetupCellOrRow\n }),\n addMenuIfRegistered('tablemergecells', {\n text: 'Merge cells',\n icon: 'table-merge-cells',\n command: 'mceTableMergeCells',\n onSetup: selectionTargets.onSetupMergeable\n }),\n addMenuIfRegistered('tablesplitcells', {\n text: 'Split cell',\n icon: 'table-split-cells',\n command: 'mceTableSplitCells',\n onSetup: selectionTargets.onSetupUnmergeable\n })\n ];\n if (!hasTableGrid(editor)) {\n editor.ui.registry.addMenuItem('inserttable', {\n text: 'Table',\n icon: 'table',\n onAction: cmd('mceInsertTableDialog'),\n onSetup: onSetupEditable(editor)\n });\n } else {\n editor.ui.registry.addNestedMenuItem('inserttable', {\n text: 'Table',\n icon: 'table',\n getSubmenuItems: () => [{\n type: 'fancymenuitem',\n fancytype: 'inserttable',\n onAction: insertTableAction\n }],\n onSetup: onSetupEditable(editor)\n });\n }\n editor.ui.registry.addMenuItem('inserttabledialog', {\n text: 'Insert table',\n icon: 'table',\n onAction: cmd('mceInsertTableDialog'),\n onSetup: onSetupEditable(editor)\n });\n addMenuIfRegistered('tableprops', {\n text: 'Table properties',\n onSetup: selectionTargets.onSetupTable,\n command: 'mceTableProps'\n });\n addMenuIfRegistered('deletetable', {\n text: 'Delete table',\n icon: 'table-delete-table',\n onSetup: selectionTargets.onSetupTable,\n command: 'mceTableDelete'\n });\n if (contains(hasRowMenuItems, true)) {\n editor.ui.registry.addNestedMenuItem('row', {\n type: 'nestedmenuitem',\n text: 'Row',\n getSubmenuItems: constant('tableinsertrowbefore tableinsertrowafter tabledeleterow tablerowprops | tablecutrow tablecopyrow tablepasterowbefore tablepasterowafter')\n });\n }\n if (contains(hasColumnMenuItems, true)) {\n editor.ui.registry.addNestedMenuItem('column', {\n type: 'nestedmenuitem',\n text: 'Column',\n getSubmenuItems: constant('tableinsertcolumnbefore tableinsertcolumnafter tabledeletecolumn | tablecutcolumn tablecopycolumn tablepastecolumnbefore tablepastecolumnafter')\n });\n }\n if (contains(hasCellMenuItems, true)) {\n editor.ui.registry.addNestedMenuItem('cell', {\n type: 'nestedmenuitem',\n text: 'Cell',\n getSubmenuItems: constant('tablecellprops tablemergecells tablesplitcells')\n });\n }\n editor.ui.registry.addContextMenu('table', {\n update: () => {\n selectionTargets.resetTargets();\n return selectionTargets.targets().fold(constant(''), targets => {\n if (name(targets.element) === 'caption') {\n return 'tableprops deletetable';\n } else {\n return 'cell row column | advtablesort | tableprops deletetable';\n }\n });\n }\n });\n const tableClassList = filterNoneItem(getTableClassList(editor));\n if (tableClassList.length !== 0 && editor.queryCommandSupported('mceTableToggleClass')) {\n editor.ui.registry.addNestedMenuItem('tableclass', {\n icon: 'table-classes',\n text: 'Table styles',\n getSubmenuItems: () => buildMenuItems(editor, tableClassList, 'tableclass', value => editor.execCommand('mceTableToggleClass', false, value)),\n onSetup: selectionTargets.onSetupTable\n });\n }\n const tableCellClassList = filterNoneItem(getCellClassList(editor));\n if (tableCellClassList.length !== 0 && editor.queryCommandSupported('mceTableCellToggleClass')) {\n editor.ui.registry.addNestedMenuItem('tablecellclass', {\n icon: 'table-cell-classes',\n text: 'Cell styles',\n getSubmenuItems: () => buildMenuItems(editor, tableCellClassList, 'tablecellclass', value => editor.execCommand('mceTableCellToggleClass', false, value)),\n onSetup: selectionTargets.onSetupCellOrRow\n });\n }\n if (editor.queryCommandSupported('mceTableApplyCellStyle')) {\n editor.ui.registry.addNestedMenuItem('tablecellvalign', {\n icon: 'vertical-align',\n text: 'Vertical align',\n getSubmenuItems: () => buildMenuItems(editor, verticalAlignValues, 'tablecellverticalalign', applyTableCellStyle(editor, 'vertical-align')),\n onSetup: selectionTargets.onSetupCellOrRow\n });\n editor.ui.registry.addNestedMenuItem('tablecellborderwidth', {\n icon: 'border-width',\n text: 'Border width',\n getSubmenuItems: () => buildMenuItems(editor, getTableBorderWidths(editor), 'tablecellborderwidth', applyTableCellStyle(editor, 'border-width')),\n onSetup: selectionTargets.onSetupCellOrRow\n });\n editor.ui.registry.addNestedMenuItem('tablecellborderstyle', {\n icon: 'border-style',\n text: 'Border style',\n getSubmenuItems: () => buildMenuItems(editor, getTableBorderStyles(editor), 'tablecellborderstyle', applyTableCellStyle(editor, 'border-style')),\n onSetup: selectionTargets.onSetupCellOrRow\n });\n editor.ui.registry.addNestedMenuItem('tablecellbackgroundcolor', {\n icon: 'cell-background-color',\n text: 'Background color',\n getSubmenuItems: () => buildColorMenu(editor, getTableBackgroundColorMap(editor), 'background-color'),\n onSetup: selectionTargets.onSetupCellOrRow\n });\n editor.ui.registry.addNestedMenuItem('tablecellbordercolor', {\n icon: 'cell-border-color',\n text: 'Border color',\n getSubmenuItems: () => buildColorMenu(editor, getTableBorderColorMap(editor), 'border-color'),\n onSetup: selectionTargets.onSetupCellOrRow\n });\n }\n addToggleMenuIfRegistered('tablecaption', {\n icon: 'table-caption',\n text: 'Table caption',\n command: 'mceTableToggleCaption',\n onSetup: selectionTargets.onSetupTableWithCaption\n });\n addToggleMenuIfRegistered('tablerowheader', {\n text: 'Row header',\n icon: 'table-top-header',\n command: 'mceTableRowType',\n onAction: changeRowHeader(editor),\n onSetup: selectionTargets.onSetupTableRowHeaders\n });\n addToggleMenuIfRegistered('tablecolheader', {\n text: 'Column header',\n icon: 'table-left-header',\n command: 'mceTableColType',\n onAction: changeColumnHeader(editor),\n onSetup: selectionTargets.onSetupTableRowHeaders\n });\n };\n\n const Plugin = editor => {\n const selectionTargets = getSelectionTargets(editor);\n register(editor);\n registerCommands(editor);\n addMenuItems(editor, selectionTargets);\n addButtons(editor, selectionTargets);\n addToolbars(editor);\n };\n var Plugin$1 = () => {\n global$3.add('table', Plugin);\n };\n\n Plugin$1();\n\n})();\n"],"names":["global$3","tinymce","util","Tools","resolve","isType$1","type","value","x","t","Array","isArray","o","v","proto","constructor","String","prototype","isPrototypeOf","_a","name","typeOf","isSimpleType","isString","isBoolean","isUndefined","undefined","a","isNonNullable","isNullable","isFunction","isNumber","noop","constant","identity","tripleEquals","b","curry","fn","initialArgs","restArgs","all","concat","apply","call","f","never","always","Optional","tag","this","some","none","singletonNone","fold","onNone","onSome","isSome","isNone","map","mapper","bind","binder","exists","predicate","forall","filter","getOr","replacement","or","getOrThunk","thunk","orThunk","getOrDie","message","Error","from","getOrNull","getOrUndefined","each","worker","toArray","toString","keys","Object","hasOwnProperty","each$1","obj","props","k","len","length","i","filter$1","pred","r","onTrue","onFalse","internalFilter","values","push","mapToArray","size","get$4","key","has","hasNonNullableKey","nativeIndexOf","indexOf","nativePush","contains","xs","ts","rawIndexOf","range","num","foldl","acc","find","until","findUntil","flatten$1","get$3","findMap","arr","fromDom$1","node","dom","SugarElement","fromHtml","html","scope","div","document","createElement","innerHTML","hasChildNodes","childNodes","console","error","fromTag","fromText","text","createTextNode","fromDom","fromPoint","docElm","y","elementFromPoint","is$2","element","selector","nodeType","elem","matches","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","bypassSelector","childElementCount","eq","e1","e2","is$1","window","Function","nodeName","toLowerCase","isType","isComment","isElement","isText","isDocument","isDocumentFragment","isTag","e","documentOrOwner","dos","ownerDocument","parent","parentNode","parents","isRoot","stop","ret","rawParent","p","prevSibling","previousSibling","nextSibling","children$3","firstChild","index","cs","child$3","getRootNode","Element","attachShadow","Node","getShadowRoot","host","getShadowHost","inBody","doc","body","fbc","fab","ClosestOrAncestor","is","ancestor","ancestor$1","el","child$1","child$2","descendant","base","querySelector","one","closest$1","isEditable","assumeEditable","isContentEditable","target","editable","getRaw$1","contentEditable","getIsRoot","editor","getBody","addPxSuffix","test","getSelectionStart","selection","getStart","isInEditableContext","cell","closest$2","s","descendants$1","result","children$1","children$2","descendants","querySelectorAll","all$1","rawSet","setAttribute","set$2","get$2","getAttribute","getOpt","remove$2","removeAttribute","lhs","rhs","comparator","left","lift2","oa","ob","startsWith","str","prefix","substr","start","checkRange","trim","replace","isNotEmpty","toInt","radix","parseInt","isNaN","isSupported","style","getPropertyValue","set$1","property","setProperty","internalSet","get$1","getComputedStyle","getUnsafeProperty","getRaw","raw","remove$1","removeProperty","internalRemove","getAttrValue","fallback","firstLayer","filterFirstLayer","validSectionList","detail","rowspan","colspan","rowdetail","cells","section","tags","join","elm","lookup","table","rows","columnGroups","fromRowsOrColGroups","elems","getSection","row","columnGroup","columns","column","cells$1","getParentSection","group","parentName","isValidSection","getLockedColumnsFromTable","lockedColStr","match","lockedCols","mapToObject","filterItems","warehouse","generate$1","list","access","lockedColumns","rowData","maxRows","maxColumns","rowCount","pass","colgroupRows","fail","partition","currentRow","rowCell","isLocked","current","extended","occupiedColumnPosition","occupiedRowPosition","columnPosition","newpos","Math","max","colgroups","last","columnsGroup","columnIndex","colIndex","columnext","generateColumns","colgroup$1","colgroup","grid$1","grid","Warehouse","rows$1","fromTable$1","item","filtered","w","global$2","getTDTHOverallStyle","select","firstChildStyle","currentStyle","getStyle","setAlign","split","align","formatter","remove","fireTableModified","data","dispatch","toNumber","px","parseFloat","toFloat","getProp","getCalculatedWidth","boxSizing","width","getBoundingClientRect","offsetWidth","upper","lower","calcContentBoxSize","getInner","global$1","defaultCellBorderWidths","title","defaultCellBorderStyles","defaultWidth","getPixelForcedWidth","parentBlock","getParent","isBlock","option","options","get","getTableSizingMode","getTableBorderWidths","getTableBorderStyles","hasAdvancedCellTab","hasAdvancedRowTab","hasAdvancedTableTab","hasAppearanceOptions","hasTableGrid","shouldStyleWithCss","getCellClassList","getRowClassList","getTableClassList","getToolbar","getTableBackgroundColorMap","getTableBorderColorMap","isPixelsForced","isResponsiveForced","getDefaultStyles","defaultStyles","isSet","determineDefaultStyles","getDefaultAttributes","defaultAttributes","determineDefaultAttributes","isWithin","bounds","startCol","finishCol","startRow","finishRow","getAnyBox","startCell","finishCell","startCoords","finishCoords","sc","fc","detailA","detailB","min","getBox$1","isRect","detailIsWithin","j","isRectangular","getWarehouse","before","marker","insertBefore","after$1","append$1","prepend","appendChild","wrap","wrapper","after","elements","append","removeChild","unwrap","children","api","getOption","nodeValue","set","NodeValue","TagBoundaries","unsafeOne","universe","look","head","tail","commonElement","eachr","end","sharedOne$1","slice","up","closest","down","styles","attrs","copyTo","source","destination","setAll","attributes","attr","insert","afterAll","appendAll","create","nu","clone","cloneNode","query","comparePosition","other","compareDocumentPosition","isSpecial","getLanguage","getText","setText","isBoundary","isEmptyTag","isNonEditable","lookupTable","container","getEdges","firstSelectedSelector","lastSelectedSelector","first","_universe","retrieve","sels","retrieve$1","retrieveBox","edges","sectionSelector","firstAncestor","lastAncestor","fA","lA","getBox","nodes","strSelected","strFirstSelected","strLastSelected","ephemera","selected","selectedSelector","firstSelected","lastSelected","getSelectionFromSelector","initCell","cellName","getSelectionCellOrCaption","getSelectionCell","getCellsFromSelection","model","getSelectedCells","getRowsFromSelection","cellOpt","rowsOpt","verticalAlignValues","shorthandRegex","longformRegex","normalizeHex","hex","removeLeading","numChars","substring","removeFromStart","toUpperCase","fromString$1","isHexString","toHex","component","fromRgba","rgbaColour","hexColour","red","green","blue","rgbRegex","rgbaRegex","alpha","fromStringValues","g","fromString","rgbaString","rgbMatch","exec","rgbaMatch","Cell","initial","unbindable","doRevoke","subject","revoke","clear","singleton","unbind","onSetupToggle","formatName","formatValue","boundCallback","init","selectedCells","checkNode","setActive","formatChanged","initialized","on","isListGroup","buildListItems","items","menu","buildMenuItems","format","onAction","getSubmenuItems","onSetup","applyTableCellStyle","execCommand","filterNoneItem","generateMenuItemsCallback","callback","buildColorMenu","colorList","colorMap","entry","color","canvas","height","canvasContext","getContext","clearRect","fillStyle","fillRect","rgba","getImageData","fancytype","initData","colors","allowCustomColors","changeRowHeader","newType","queryCommandValue","changeColumnHeader","label","getItems$2","classes","getClassList$1","getAdvancedTab","dialogName","advTabItems","DomModifier","setAttrib","setStyle","prop","setFormat","isHeaderCell","getRowHeaderType","isHeaderRow","isHeaderCells","findCommonCellType","headerCells","findCommonRowType","rowTypes","subType","getRowType$1","hasHeader","hasFooter","hasBody","findInWarehouse","extractCells","cat","cell$1","lc","onCells","allUnlocked","isUnlockedTableCell","onUnlockedMergable","_warehouse","mergable","onMergable","mergeable","onUnlockedUnmergable","unmergable","onUnmergable","Adt","cases","constructors","adt","acase","count","keys$1","args","argLength","foldArgs","branches","branchKeys","reqKey","log","params","getRowsType","only","middle","right","house","lastSelectedCell","minRowRange","maxRowRange","selectedRows","rgbToHex","h","extractAdvancedStyles","borderwidth","borderstyle","bordercolor","backgroundcolor","getSharedValues","baseData","comparisonData","itemValue","itemKey","comparisonValue","getAlignment","formats","matchNode","getHAlignment","getVAlignment","getRowType","allCells","cellA","cellB","col","applyStyleData$1","wasChanged","isSingleCell","cellElm","shouldOverrideCurrentValue","modifier","colModifier","shouldUpdate","class","updateSimpleProps$1","updateAdvancedProps$1","halign","setVAlign","valign","onSubmitCellForm","oldData","getData","close","undoManager","transact","modifiedData","styleModified","_value","structureModified","celltype","no_events","applyStructureData$1","structure","applyCellData","focus","getData$1","cellsData","getAttrib","extractDataFromCellElement","open$2","dialogTabPanel","tabs","dialogPanel","windowManager","open","buttons","primary","initialData","onSubmit","formChildren","getItems$1","getClassList","applyStyleData","rowElm","updateSimpleProps","updateAdvancedProps","onSubmitRowForm","typeModified","applyStructureData","applyRowData","open$1","rowsData","extractDataFromRowElement","getItems","insertNewTable","rowColCountItems","inputMode","appearanceItems","classListItem","styleTDTH","tagName","setStyles","applyDataToElement","tableElm","shouldApplyOnCell","shouldStyleWithCss$1","hasAdvancedTableTab$1","removePxSuffix","border","cellspacing","cellpadding","cellStyles","padding","isEmpty$1","advData","setAttribs","onSubmitTableForm","cols","applicableCellProperties","captionElm","caption","addVisual","captionModified","hasAdvTableTab","advStyle","borderWidth","getBorder","extractDataFromSettings","optBorderWidth","extractDataFromTableElement","generalPanel","dialogBody","registerCommands","mceTableProps","mceTableRowProps","mceTableCellProps","mceInsertTableDialog","func","addCommand","runAction","hasSpan","span","getSelectionTargets","targets","changeHandlers","selectionDetails","isCaption","isDisabledForSelection","details","getEnd","getSelectionEnd","findTargets","startCellOrCaption","flatten","oot","startTable","endTable","noMenu","forMenu","getExtractedDetails","locked","onAny","onFirst","onLast","unmergeable","resetTargets","called","cached","setupHandler","handler","isDisabled","setEnabled","onSetupWithToggle","isActive","isDisabledFromLocked","lockedDisable","onSetupTableHeaders","command","headerType","onSetupTableRowHeaders","onSetupTableColumnHeaders","onSetupTable","_","onSetupCellOrRow","onSetupColumn","onSetupPasteable","getClipboardData","onSetupPasteableColumn","onSetupMergeable","_targets","onSetupUnmergeable","onSetupTableWithCaption","global","tableTypeBase","tableTypeRow","tableTypeColumn","read","getType","getRows","getColumns","onSetupEditable$1","nodeChanged","off","onSetupEditable","Plugin","selectionTargets","registerOption","register","processor","default","deviceType","isTouch","cmd","addMenuIfRegistered","spec","queryCommandSupported","ui","registry","addMenuItem","addToggleMenuIfRegistered","addToggleMenuItem","insertTableAction","numRows","numColumns","hasRowMenuItems","icon","hasColumnMenuItems","hasCellMenuItems","addNestedMenuItem","addContextMenu","update","tableClassList","tableCellClassList","addMenuItems","addMenuButton","tooltip","fetch","addButtonIfRegistered","addButton","addToggleButtonIfRegistered","addToggleButton","addButtons","isEditableTable","toolbar","addContextToolbar","position","addToolbars","add"],"mappings":"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"}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
tinymce.Resource.add("content/default/content.css",'body{font-family:-apple-system,BlinkMacSystemFont,\'Segoe UI\',Roboto,Oxygen,Ubuntu,Cantarell,\'Open Sans\',\'Helvetica Neue\',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}');
|
2
|
+
//# sourceMappingURL=content.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"content.mjs","sources":["../../../../../../../public/tinymce/skins/content/default/content.js"],"sourcesContent":["tinymce.Resource.add('content/default/content.css', \"body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border=\\\"0\\\"]):not([style*=border-width]) td,table[border]:not([border=\\\"0\\\"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border=\\\"0\\\"]):not([style*=border-style]) td,table[border]:not([border=\\\"0\\\"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border=\\\"0\\\"]):not([style*=border-color]) td,table[border]:not([border=\\\"0\\\"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}\")\n//# sourceMappingURL=content.js.map\n"],"names":["tinymce","Resource","add"],"mappings":"AAAAA,QAAQC,SAASC,IAAI,8BAA+B"}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
tinymce.Resource.add("ui/default/content.css",".mce-content-body .mce-item-anchor{background:transparent url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A\") no-repeat center}.mce-content-body .mce-item-anchor:empty{cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor:not(:empty){background-position-x:2px;display:inline-block;padding-left:12px}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment[contenteditable=false]:not([data-mce-selected]),.tox-comments-visible span.tox-comment img:not([data-mce-selected]),.tox-comments-visible span.tox-comment span.mce-preview-object:not([data-mce-selected]),.tox-comments-visible span.tox-comment>audio:not([data-mce-selected]),.tox-comments-visible span.tox-comment>video:not([data-mce-selected]){outline:3px solid #ffe89d}.tox-comments-visible .tox-comment[contenteditable=false][data-mce-annotation-active=true]:not([data-mce-selected]){outline:3px solid #fed635}.tox-comments-visible span.tox-comment[data-mce-annotation-active=true] img:not([data-mce-selected]),.tox-comments-visible span.tox-comment[data-mce-annotation-active=true] span.mce-preview-object:not([data-mce-selected]),.tox-comments-visible span.tox-comment[data-mce-annotation-active=true]>audio:not([data-mce-selected]),.tox-comments-visible span.tox-comment[data-mce-annotation-active=true]>video:not([data-mce-selected]){outline:3px solid #fed635}.tox-comments-visible span.tox-comment:not([data-mce-selected]){background-color:#ffe89d;outline:0}.tox-comments-visible span.tox-comment[data-mce-annotation-active=true]:not([data-mce-selected=inline-boundary]){background-color:#fed635}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A\");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A\")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A\"),default}div.mce-footnotes hr{margin-inline-end:auto;margin-inline-start:0;width:25%}div.mce-footnotes li>a.mce-footnotes-backlink{text-decoration:none}@media print{sup.mce-footnote a{color:#000;text-decoration:none}div.mce-footnotes{break-inside:avoid;width:100%}div.mce-footnotes li>a.mce-footnotes-backlink{display:none}}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected=\"2\"] .mce-shim{display:none}.mce-content-body .mce-mergetag{cursor:default!important;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mce-content-body .mce-mergetag:hover{background-color:rgba(0,108,231,.1)}.mce-content-body .mce-mergetag-affix{background-color:rgba(0,108,231,.1);color:#006ce7}.mce-object{background:transparent url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A\") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected=\"2\"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A\") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body details[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body img[data-mce-selected]::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A\");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A\");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc ul>li{list-style-type:none}[data-mce-block]{display:block}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border=\"0\"],.mce-item-table[border=\"0\"] caption,.mce-item-table[border=\"0\"] td,.mce-item-table[border=\"0\"] th,table[style*=\"border-width: 0px\"],table[style*=\"border-width: 0px\"] caption,table[style*=\"border-width: 0px\"] td,table[style*=\"border-width: 0px\"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}");
|
2
|
+
//# sourceMappingURL=content.mjs.map
|