@maketribe/ms-app 3.0.9 → 3.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/form-components/form-date-picker/form-date-picker-options.d.ts +3 -3
- package/dist/cjs/components/form-components/form-date-picker/form-date-picker-options.js.map +1 -1
- package/dist/cjs/components/rich-text-editor/rich-text-editor-options.d.ts +2 -2
- package/dist/cjs/components/rich-text-editor/rich-text-editor-options.js.map +1 -1
- package/dist/cjs/components/rich-text-editor/rich-text-editor.d.ts +2 -2
- package/dist/cjs/components/rich-text-editor/rich-text-editor.js +10 -11
- package/dist/cjs/components/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/cjs/composables/use-http-request.d.ts +1 -1
- package/dist/cjs/composables/use-http-request.js +1 -1
- package/dist/cjs/composables/use-http-request.js.map +1 -1
- package/dist/cjs/dataview/material/material-group/MaterialGroupTree.js +3 -0
- package/dist/cjs/dataview/material/material-group/MaterialGroupTree.js.map +1 -1
- package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/icons/default/icons.min.js.map +1 -1
- package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/models/dom/model.min.js +1 -1
- package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/models/dom/model.min.js.map +1 -1
- package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/plugins/fullscreen/plugin.js +1 -1
- package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/plugins/fullscreen/plugin.js.map +1 -1
- package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/plugins/link/plugin.js +1 -1
- package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/plugins/link/plugin.js.map +1 -1
- package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/plugins/table/plugin.js +1 -1
- package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/plugins/table/plugin.js.map +1 -1
- package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/skins/content/default/content.js.map +1 -1
- package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/skins/ui/oxide/content.js.map +1 -1
- package/dist/cjs/node_modules/.pnpm/tinymce@6.8.2/node_modules/tinymce/skins/ui/oxide/skin.js +4 -0
- package/dist/cjs/node_modules/.pnpm/tinymce@6.8.2/node_modules/tinymce/skins/ui/oxide/skin.js.map +1 -0
- package/dist/cjs/node_modules/.pnpm/tinymce@6.8.2/node_modules/tinymce/themes/silver/theme.min.js +7 -0
- package/dist/cjs/node_modules/.pnpm/tinymce@6.8.2/node_modules/tinymce/themes/silver/theme.min.js.map +1 -0
- package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/tinymce.js +20 -23
- package/dist/cjs/node_modules/.pnpm/tinymce@6.8.2/node_modules/tinymce/tinymce.js.map +1 -0
- package/dist/cjs/page/signup/index.vue2.js.map +1 -1
- package/dist/cjs/utils.js +1 -4
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/components/form-components/form-date-picker/form-date-picker-options.d.ts +3 -3
- package/dist/esm/components/form-components/form-date-picker/form-date-picker-options.js.map +1 -1
- package/dist/esm/components/rich-text-editor/rich-text-editor-options.d.ts +2 -2
- package/dist/esm/components/rich-text-editor/rich-text-editor-options.js.map +1 -1
- package/dist/esm/components/rich-text-editor/rich-text-editor.d.ts +2 -2
- package/dist/esm/components/rich-text-editor/rich-text-editor.js +10 -11
- package/dist/esm/components/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/esm/composables/use-http-request.d.ts +1 -1
- package/dist/esm/composables/use-http-request.js +1 -1
- package/dist/esm/composables/use-http-request.js.map +1 -1
- package/dist/esm/dataview/material/material-group/MaterialGroupTree.js +3 -0
- package/dist/esm/dataview/material/material-group/MaterialGroupTree.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/icons/default/icons.min.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/models/dom/model.min.js +1 -1
- package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/models/dom/model.min.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/plugins/fullscreen/plugin.js +1 -1
- package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/plugins/fullscreen/plugin.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/plugins/link/plugin.js +1 -1
- package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/plugins/link/plugin.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/plugins/table/plugin.js +1 -1
- package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/plugins/table/plugin.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/skins/content/default/content.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/skins/ui/oxide/content.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/tinymce@6.8.2/node_modules/tinymce/skins/ui/oxide/skin.js +2 -0
- package/dist/esm/node_modules/.pnpm/tinymce@6.8.2/node_modules/tinymce/skins/ui/oxide/skin.js.map +1 -0
- package/dist/esm/node_modules/.pnpm/tinymce@6.8.2/node_modules/tinymce/themes/silver/theme.min.js +5 -0
- package/dist/esm/node_modules/.pnpm/tinymce@6.8.2/node_modules/tinymce/themes/silver/theme.min.js.map +1 -0
- package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/tinymce.js +20 -23
- package/dist/esm/node_modules/.pnpm/tinymce@6.8.2/node_modules/tinymce/tinymce.js.map +1 -0
- package/dist/esm/page/signup/index.vue2.js.map +1 -1
- package/dist/esm/utils.js +1 -4
- package/dist/esm/utils.js.map +1 -1
- package/package.json +5 -5
- package/src/components/form-components/form-date-picker/form-date-picker-options.ts +1 -1
- package/src/components/rich-text-editor/rich-text-editor-options.ts +1 -1
- package/src/components/rich-text-editor/rich-text-editor.tsx +2 -3
- package/src/composables/use-http-request.ts +2 -2
- package/src/dataview/material/material-group/MaterialGroupTree.ts +4 -0
- package/src/page/signup/index.vue +1 -1
- package/src/utils.ts +4 -4
- package/dist/cjs/node_modules/.pnpm/tinymce@6.8.0/node_modules/tinymce/skins/ui/oxide/skin.js +0 -4
- package/dist/cjs/node_modules/.pnpm/tinymce@6.8.0/node_modules/tinymce/skins/ui/oxide/skin.js.map +0 -1
- package/dist/cjs/node_modules/.pnpm/tinymce@6.8.0/node_modules/tinymce/themes/silver/theme.min.js +0 -7
- package/dist/cjs/node_modules/.pnpm/tinymce@6.8.0/node_modules/tinymce/themes/silver/theme.min.js.map +0 -1
- package/dist/cjs/node_modules/.pnpm/tinymce@6.8.0/node_modules/tinymce/tinymce.js.map +0 -1
- package/dist/esm/node_modules/.pnpm/tinymce@6.8.0/node_modules/tinymce/skins/ui/oxide/skin.js +0 -2
- package/dist/esm/node_modules/.pnpm/tinymce@6.8.0/node_modules/tinymce/skins/ui/oxide/skin.js.map +0 -1
- package/dist/esm/node_modules/.pnpm/tinymce@6.8.0/node_modules/tinymce/themes/silver/theme.min.js +0 -5
- package/dist/esm/node_modules/.pnpm/tinymce@6.8.0/node_modules/tinymce/themes/silver/theme.min.js.map +0 -1
- package/dist/esm/node_modules/.pnpm/tinymce@6.8.0/node_modules/tinymce/tinymce.js.map +0 -1
- /package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/icons/default/icons.min.js +0 -0
- /package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/skins/content/default/content.js +0 -0
- /package/dist/cjs/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/skins/ui/oxide/content.js +0 -0
- /package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/icons/default/icons.min.js +0 -0
- /package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/skins/content/default/content.js +0 -0
- /package/dist/esm/node_modules/.pnpm/{tinymce@6.8.0 → tinymce@6.8.2}/node_modules/tinymce/skins/ui/oxide/content.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["../../../../../../../../../../../node_modules/.pnpm/tinymce@6.8.0/node_modules/tinymce/plugins/table/plugin.js"],"sourcesContent":["/**\n * TinyMCE version 6.8.0 (2023-11-22)\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":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../../../../../../../../../../node_modules/.pnpm/tinymce@6.8.2/node_modules/tinymce/plugins/table/plugin.js"],"sourcesContent":["/**\n * TinyMCE version 6.8.2 (2023-12-11)\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":[],"mappings":"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","x_google_ignoreList":[0]}
|