@startinblox/core 0.17.26 → 0.17.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/_snowpack/pkg/import-map.json +0 -8
  2. package/dist/new-widgets/callbackMixins/index.js +2 -4
  3. package/dist/new-widgets/callbackMixins/index.js.map +1 -1
  4. package/dist/new-widgets/templates/formTemplatesDirectory.js +8 -23
  5. package/dist/new-widgets/templates/formTemplatesDirectory.js.map +1 -1
  6. package/package.json +2 -4
  7. package/dist/_snowpack/pkg/showdown.js +0 -5059
  8. package/dist/_snowpack/pkg/showdown.js.map +0 -1
  9. package/dist/_snowpack/pkg/showdown.js.map.proxy.js +0 -1
  10. package/dist/_snowpack/pkg/tinymce/icons/default.js +0 -196
  11. package/dist/_snowpack/pkg/tinymce/icons/default.js.map +0 -1
  12. package/dist/_snowpack/pkg/tinymce/icons/default.js.map.proxy.js +0 -1
  13. package/dist/_snowpack/pkg/tinymce/models/dom.js +0 -7955
  14. package/dist/_snowpack/pkg/tinymce/models/dom.js.map +0 -1
  15. package/dist/_snowpack/pkg/tinymce/models/dom.js.map.proxy.js +0 -1
  16. package/dist/_snowpack/pkg/tinymce/plugins/autoresize/plugin.js +0 -156
  17. package/dist/_snowpack/pkg/tinymce/plugins/autoresize/plugin.js.map +0 -1
  18. package/dist/_snowpack/pkg/tinymce/plugins/autoresize/plugin.js.map.proxy.js +0 -1
  19. package/dist/_snowpack/pkg/tinymce/plugins/link/plugin.js +0 -1188
  20. package/dist/_snowpack/pkg/tinymce/plugins/link/plugin.js.map +0 -1
  21. package/dist/_snowpack/pkg/tinymce/plugins/link/plugin.js.map.proxy.js +0 -1
  22. package/dist/_snowpack/pkg/tinymce/plugins/lists/plugin.js +0 -1757
  23. package/dist/_snowpack/pkg/tinymce/plugins/lists/plugin.js.map +0 -1
  24. package/dist/_snowpack/pkg/tinymce/plugins/lists/plugin.js.map.proxy.js +0 -1
  25. package/dist/_snowpack/pkg/tinymce/themes/silver.js +0 -26121
  26. package/dist/_snowpack/pkg/tinymce/themes/silver.js.map +0 -1
  27. package/dist/_snowpack/pkg/tinymce/themes/silver.js.map.proxy.js +0 -1
  28. package/dist/_snowpack/pkg/tinymce.js +0 -29045
  29. package/dist/_snowpack/pkg/tinymce.js.map +0 -1
  30. package/dist/_snowpack/pkg/tinymce.js.map.proxy.js +0 -1
  31. package/dist/new-widgets/callbackMixins/editorMixin.js +0 -92
  32. package/dist/new-widgets/callbackMixins/editorMixin.js.map +0 -1
  33. package/dist/new-widgets/templatesDependencies/valueEditorMixin.js +0 -17
  34. package/dist/new-widgets/templatesDependencies/valueEditorMixin.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom.js","sources":["../../../../../node_modules/tinymce/models/dom/model.js","../../../../../node_modules/tinymce/models/dom/index.js"],"sourcesContent":["/**\n * TinyMCE version 6.0.2 (2022-04-27)\n */\n\n(function () {\n 'use strict';\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.ModelManager');\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$2 = t => a => t === a;\n const isString = isType$1('string');\n const isObject = isType$1('object');\n const isArray = isType$1('array');\n const isNull = eq$2(null);\n const isBoolean = isSimpleType('boolean');\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 compose = (fa, fb) => {\n return (...args) => {\n return fa(fb.apply(null, args));\n };\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 not = f => t => !f(t);\n const die = msg => {\n return () => {\n throw new Error(msg);\n };\n };\n const apply = f => {\n return 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 nativeSlice = Array.prototype.slice;\n const nativeIndexOf = Array.prototype.indexOf;\n const nativePush = Array.prototype.push;\n const rawIndexOf = (ts, t) => nativeIndexOf.call(ts, t);\n const contains$2 = (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$1 = (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$1 = (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$2 = (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$2 = (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$2(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$1 = (xs, pred) => {\n return findUntil(xs, pred, never);\n };\n const findIndex = (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 Optional.some(i);\n }\n }\n return Optional.none();\n };\n const flatten = 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$2 = (xs, f) => flatten(map$1(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 reverse = xs => {\n const r = nativeSlice.call(xs, 0);\n r.reverse();\n return r;\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 sort$1 = (xs, comparator) => {\n const copy = nativeSlice.call(xs, 0);\n copy.sort(comparator);\n return copy;\n };\n const get$d = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();\n const head = xs => get$d(xs, 0);\n const last$2 = xs => get$d(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 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 map = (obj, f) => {\n return tupleMap(obj, (x, i) => ({\n k: i,\n v: f(x, i)\n }));\n };\n const tupleMap = (obj, f) => {\n const r = {};\n each$1(obj, (x, i) => {\n const tuple = f(x, i);\n r[tuple.k] = tuple.v;\n });\n return r;\n };\n const objAcc = r => (x, i) => {\n r[i] = x;\n };\n const internalFilter = (obj, pred, onTrue, onFalse) => {\n const r = {};\n each$1(obj, (x, i) => {\n (pred(x, i) ? onTrue : onFalse)(x, i);\n });\n return r;\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 get$c = (obj, key) => {\n return has$1(obj, key) ? Optional.from(obj[key]) : Optional.none();\n };\n const has$1 = (obj, key) => hasOwnProperty.call(obj, key);\n const hasNonNullableKey = (obj, key) => has$1(obj, key) && obj[key] !== undefined && obj[key] !== null;\n const isEmpty = r => {\n for (const x in r) {\n if (hasOwnProperty.call(r, x)) {\n return false;\n }\n }\n return true;\n };\n\n typeof window !== 'undefined' ? window : Function('return this;')();\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 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 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$1 = (element, attrs) => {\n const dom = element.dom;\n each$1(attrs, (v, k) => {\n rawSet(dom, k, v);\n });\n };\n const setOptions = (element, attrs) => {\n each$1(attrs, (v, k) => {\n v.fold(() => {\n remove$7(element, k);\n }, value => {\n rawSet(element.dom, k, value);\n });\n });\n };\n const get$b = (element, key) => {\n const v = element.dom.getAttribute(key);\n return v === null ? undefined : v;\n };\n const getOpt = (element, key) => Optional.from(get$b(element, key));\n const remove$7 = (element, key) => {\n element.dom.removeAttribute(key);\n };\n const clone$2 = element => foldl(element.dom.attributes, (acc, attr) => {\n acc[attr.name] = attr.value;\n return acc;\n }, {});\n\n const fromHtml$1 = (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$1 = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom$1);\n const SugarElement = {\n fromHtml: fromHtml$1,\n fromTag,\n fromText,\n fromDom: fromDom$1,\n fromPoint: fromPoint$1\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$1(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$1 = (e1, e2) => e1.dom === e2.dom;\n const contains$1 = (e1, e2) => {\n const d1 = e1.dom;\n const d2 = e2.dom;\n return d1 === d2 ? false : d1.contains(d2);\n };\n const is$1 = is$2;\n\n const owner = element => SugarElement.fromDom(element.dom.ownerDocument);\n const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);\n const documentElement = element => SugarElement.fromDom(documentOrOwner(element).dom.documentElement);\n const defaultView = element => SugarElement.fromDom(documentOrOwner(element).dom.defaultView);\n const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n const parentElement = element => Optional.from(element.dom.parentElement).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$2 = element => map$1(element.dom.childNodes, SugarElement.fromDom);\n const child$2 = (element, index) => {\n const cs = element.dom.childNodes;\n return Optional.from(cs[index]).map(SugarElement.fromDom);\n };\n const firstChild = element => child$2(element, 0);\n\n const before$3 = (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$5 = (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$3(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 appendAt = (parent, element, index) => {\n child$2(parent, index).fold(() => {\n append$1(parent, element);\n }, v => {\n before$3(v, element);\n });\n };\n const wrap = (element, wrapper) => {\n before$3(element, wrapper);\n append$1(wrapper, element);\n };\n\n const after$4 = (marker, elements) => {\n each$2(elements, (x, i) => {\n const e = i === 0 ? marker : elements[i - 1];\n after$5(e, x);\n });\n };\n const append = (parent, elements) => {\n each$2(elements, x => {\n append$1(parent, x);\n });\n };\n\n const empty = element => {\n element.dom.textContent = '';\n each$2(children$2(element), rogue => {\n remove$6(rogue);\n });\n };\n const remove$6 = 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$2(wrapper);\n if (children.length > 0) {\n after$4(wrapper, children);\n }\n remove$6(wrapper);\n };\n\n const clone$1 = (original, isDeep) => SugarElement.fromDom(original.dom.cloneNode(isDeep));\n const shallow = original => clone$1(original, false);\n const deep = original => clone$1(original, true);\n const shallowAs = (original, tag) => {\n const nu = SugarElement.fromTag(tag);\n const attributes = clone$2(original);\n setAll$1(nu, attributes);\n return nu;\n };\n const copy$2 = (original, tag) => {\n const nu = shallowAs(original, tag);\n const cloneChildren = children$2(deep(original));\n append(nu, cloneChildren);\n return nu;\n };\n const mutate$1 = (original, tag) => {\n const nu = shallowAs(original, tag);\n after$5(original, nu);\n const children = children$2(original);\n append(nu, children);\n remove$6(original);\n return nu;\n };\n\n const validSectionList = [\n 'tfoot',\n 'thead',\n 'tbody',\n 'colgroup'\n ];\n const isValidSection = parentName => contains$2(validSectionList, parentName);\n const grid = (rows, columns) => ({\n rows,\n columns\n });\n const address = (row, column) => ({\n row,\n column\n });\n const detail = (element, rowspan, colspan) => ({\n element,\n rowspan,\n colspan\n });\n const detailnew = (element, rowspan, colspan, isNew) => ({\n element,\n rowspan,\n colspan,\n isNew\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 rowdetailnew = (element, cells, section, isNew) => ({\n element,\n cells,\n section,\n isNew\n });\n const elementnew = (element, isNew, isLocked) => ({\n element,\n isNew,\n isLocked\n });\n const rowcells = (element, cells, section, isNew) => ({\n element,\n cells,\n section,\n isNew\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 isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);\n const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n const isSupported$1 = constant(supported);\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 const getOriginalEventTarget = event => {\n if (isSupported$1() && isNonNullable(event.target)) {\n const el = SugarElement.fromDom(event.target);\n if (isElement(el) && isOpenShadowHost(el)) {\n if (event.composed && event.composedPath) {\n const composedPath = event.composedPath();\n if (composedPath) {\n return head(composedPath);\n }\n }\n }\n }\n return Optional.from(event.target);\n };\n const isOpenShadowHost = element => isNonNullable(element.dom.shadowRoot);\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 const body$1 = () => getBody$1(SugarElement.fromDom(document));\n const getBody$1 = doc => {\n const b = doc.dom.body;\n if (b === null || b === undefined) {\n throw new Error('Body is not available yet');\n }\n return SugarElement.fromDom(b);\n };\n\n const ancestors$4 = (scope, predicate, isRoot) => filter$2(parents(scope, isRoot), predicate);\n const children$1 = (scope, predicate) => filter$2(children$2(scope), predicate);\n const descendants$1 = (scope, predicate) => {\n let result = [];\n each$2(children$2(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 ancestors$3 = (scope, selector, isRoot) => ancestors$4(scope, e => is$2(e, selector), isRoot);\n const children = (scope, selector) => children$1(scope, e => is$2(e, selector));\n const descendants = (scope, selector) => all$1(selector, scope);\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$2 = (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$2, scope, predicate, isRoot);\n };\n const child$1 = (scope, predicate) => {\n const pred = node => predicate(SugarElement.fromDom(node));\n const result = find$1(scope.dom.childNodes, pred);\n return result.map(SugarElement.fromDom);\n };\n const descendant$1 = (scope, predicate) => {\n const descend = node => {\n for (let i = 0; i < node.childNodes.length; i++) {\n const child = SugarElement.fromDom(node.childNodes[i]);\n if (predicate(child)) {\n return Optional.some(child);\n }\n const res = descend(node.childNodes[i]);\n if (res.isSome()) {\n return res;\n }\n }\n return Optional.none();\n };\n return descend(scope.dom);\n };\n\n const ancestor$1 = (scope, selector, isRoot) => ancestor$2(scope, e => is$2(e, selector), isRoot);\n const child = (scope, selector) => child$1(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$1, scope, selector, isRoot);\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 bindFrom = (a, f) => a !== undefined && a !== null ? f(a) : Optional.none();\n const someIf = (b, a) => b ? Optional.some(a) : Optional.none();\n\n const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;\n const contains = (str, substr) => {\n return str.indexOf(substr) !== -1;\n };\n const startsWith = (str, prefix) => {\n return checkRange(str, prefix, 0);\n };\n const endsWith = (str, suffix) => {\n return checkRange(str, suffix, str.length - suffix.length);\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 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 setAll = (element, css) => {\n const dom = element.dom;\n each$1(css, (v, k) => {\n internalSet(dom, k, v);\n });\n };\n const get$a = (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$2 = (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$5 = (element, property) => {\n const dom = element.dom;\n internalRemove(dom, property);\n if (is(getOpt(element, 'style').map(trim), '')) {\n remove$7(element, 'style');\n }\n };\n const copy$1 = (source, target) => {\n const sourceDom = source.dom;\n const targetDom = target.dom;\n if (isSupported(sourceDom) && isSupported(targetDom)) {\n targetDom.style.cssText = sourceDom.style.cssText;\n }\n };\n\n const getAttrValue = (cell, name, fallback = 0) => getOpt(cell, name).map(value => parseInt(value, 10)).getOr(fallback);\n const getSpan = (cell, type) => getAttrValue(cell, type, 1);\n const hasColspan = cellOrCol => {\n if (isTag('col')(cellOrCol)) {\n return getAttrValue(cellOrCol, 'span', 1) > 1;\n } else {\n return getSpan(cellOrCol, 'colspan') > 1;\n }\n };\n const hasRowspan = cell => getSpan(cell, 'rowspan') > 1;\n const getCssValue = (element, property) => parseInt(get$a(element, property), 10);\n const minWidth = constant(10);\n const minHeight = constant(10);\n\n const firstLayer = (scope, selector) => {\n return filterFirstLayer(scope, selector, always);\n };\n const filterFirstLayer = (scope, selector, predicate) => {\n return bind$2(children$2(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 lookup = (tags, element, isRoot = never) => {\n if (isRoot(element)) {\n return Optional.none();\n }\n if (contains$2(tags, name(element))) {\n return Optional.some(element);\n }\n const isRootOrUpperTable = elm => is$2(elm, 'table') || isRoot(elm);\n return ancestor$1(element, tags.join(','), isRootOrUpperTable);\n };\n const cell = (element, isRoot) => lookup([\n 'td',\n 'th'\n ], element, isRoot);\n const cells$1 = ancestor => firstLayer(ancestor, 'th,td');\n const columns$1 = ancestor => {\n if (is$2(ancestor, 'colgroup')) {\n return children(ancestor, 'col');\n } else {\n return bind$2(columnGroups(ancestor), columnGroup => children(columnGroup, 'col'));\n }\n };\n const table = (element, isRoot) => closest$1(element, 'table', isRoot);\n const rows$1 = ancestor => firstLayer(ancestor, 'tr');\n const columnGroups = ancestor => table(ancestor).fold(constant([]), table => children(table, 'colgroup'));\n\n const fromRowsOrColGroups = (elems, getSection) => map$1(elems, row => {\n if (name(row) === 'colgroup') {\n const cells = map$1(columns$1(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 = map$1(cells$1(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, 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 = rows$1(table);\n const columnGroups$1 = columnGroups(table);\n const elems = [\n ...columnGroups$1,\n ...rows\n ];\n return fromRowsOrColGroups(elems, getParentSection);\n };\n const fromPastedRows = (elems, section) => fromRowsOrColGroups(elems, () => section);\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 DeviceType = (os, browser, userAgent, mediaMatch) => {\n const isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n const isiPhone = os.isiOS() && !isiPad;\n const isMobile = os.isiOS() || os.isAndroid();\n const isTouch = isMobile || mediaMatch('(pointer:coarse)');\n const isTablet = isiPad || !isiPhone && isMobile && mediaMatch('(min-device-width:768px)');\n const isPhone = isiPhone || isMobile && !isTablet;\n const iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n const isDesktop = !isPhone && !isTablet && !iOSwebview;\n return {\n isiPad: constant(isiPad),\n isiPhone: constant(isiPhone),\n isTablet: constant(isTablet),\n isPhone: constant(isPhone),\n isTouch: constant(isTouch),\n isAndroid: os.isAndroid,\n isiOS: os.isiOS,\n isWebView: constant(iOSwebview),\n isDesktop: constant(isDesktop)\n };\n };\n\n const firstMatch = (regexes, s) => {\n for (let i = 0; i < regexes.length; i++) {\n const x = regexes[i];\n if (x.test(s)) {\n return x;\n }\n }\n return undefined;\n };\n const find = (regexes, agent) => {\n const r = firstMatch(regexes, agent);\n if (!r) {\n return {\n major: 0,\n minor: 0\n };\n }\n const group = i => {\n return Number(agent.replace(r, '$' + i));\n };\n return nu$2(group(1), group(2));\n };\n const detect$5 = (versionRegexes, agent) => {\n const cleanedAgent = String(agent).toLowerCase();\n if (versionRegexes.length === 0) {\n return unknown$2();\n }\n return find(versionRegexes, cleanedAgent);\n };\n const unknown$2 = () => {\n return nu$2(0, 0);\n };\n const nu$2 = (major, minor) => {\n return {\n major,\n minor\n };\n };\n const Version = {\n nu: nu$2,\n detect: detect$5,\n unknown: unknown$2\n };\n\n const detectBrowser$1 = (browsers, userAgentData) => {\n return findMap(userAgentData.brands, uaBrand => {\n const lcBrand = uaBrand.brand.toLowerCase();\n return find$1(browsers, browser => {\n var _a;\n return lcBrand === ((_a = browser.brand) === null || _a === void 0 ? void 0 : _a.toLowerCase());\n }).map(info => ({\n current: info.name,\n version: Version.nu(parseInt(uaBrand.version, 10), 0)\n }));\n });\n };\n\n const detect$4 = (candidates, userAgent) => {\n const agent = String(userAgent).toLowerCase();\n return find$1(candidates, candidate => {\n return candidate.search(agent);\n });\n };\n const detectBrowser = (browsers, userAgent) => {\n return detect$4(browsers, userAgent).map(browser => {\n const version = Version.detect(browser.versionRegexes, userAgent);\n return {\n current: browser.name,\n version\n };\n });\n };\n const detectOs = (oses, userAgent) => {\n return detect$4(oses, userAgent).map(os => {\n const version = Version.detect(os.versionRegexes, userAgent);\n return {\n current: os.name,\n version\n };\n });\n };\n\n const normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n const checkContains = target => {\n return uastring => {\n return contains(uastring, target);\n };\n };\n const browsers = [\n {\n name: 'Edge',\n versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n search: uastring => {\n return contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit');\n }\n },\n {\n name: 'Chromium',\n brand: 'Chromium',\n versionRegexes: [\n /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\n normalVersionRegex\n ],\n search: uastring => {\n return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe');\n }\n },\n {\n name: 'IE',\n versionRegexes: [\n /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*?rv:([0-9]+)\\.([0-9]+).*/\n ],\n search: uastring => {\n return contains(uastring, 'msie') || contains(uastring, 'trident');\n }\n },\n {\n name: 'Opera',\n versionRegexes: [\n normalVersionRegex,\n /.*?opera\\/([0-9]+)\\.([0-9]+).*/\n ],\n search: checkContains('opera')\n },\n {\n name: 'Firefox',\n versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n search: checkContains('firefox')\n },\n {\n name: 'Safari',\n versionRegexes: [\n normalVersionRegex,\n /.*?cpu os ([0-9]+)_([0-9]+).*/\n ],\n search: uastring => {\n return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit');\n }\n }\n ];\n const oses = [\n {\n name: 'Windows',\n search: checkContains('win'),\n versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'iOS',\n search: uastring => {\n return contains(uastring, 'iphone') || contains(uastring, 'ipad');\n },\n versionRegexes: [\n /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*cpu os ([0-9]+)_([0-9]+).*/,\n /.*cpu iphone os ([0-9]+)_([0-9]+).*/\n ]\n },\n {\n name: 'Android',\n search: checkContains('android'),\n versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'macOS',\n search: checkContains('mac os x'),\n versionRegexes: [/.*?mac\\ os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n },\n {\n name: 'Linux',\n search: checkContains('linux'),\n versionRegexes: []\n },\n {\n name: 'Solaris',\n search: checkContains('sunos'),\n versionRegexes: []\n },\n {\n name: 'FreeBSD',\n search: checkContains('freebsd'),\n versionRegexes: []\n },\n {\n name: 'ChromeOS',\n search: checkContains('cros'),\n versionRegexes: [/.*?chrome\\/([0-9]+)\\.([0-9]+).*/]\n }\n ];\n const PlatformInfo = {\n browsers: constant(browsers),\n oses: constant(oses)\n };\n\n const edge = 'Edge';\n const chromium = 'Chromium';\n const ie = 'IE';\n const opera = 'Opera';\n const firefox = 'Firefox';\n const safari = 'Safari';\n const unknown$1 = () => {\n return nu$1({\n current: undefined,\n version: Version.unknown()\n });\n };\n const nu$1 = info => {\n const current = info.current;\n const version = info.version;\n const isBrowser = name => () => current === name;\n return {\n current,\n version,\n isEdge: isBrowser(edge),\n isChromium: isBrowser(chromium),\n isIE: isBrowser(ie),\n isOpera: isBrowser(opera),\n isFirefox: isBrowser(firefox),\n isSafari: isBrowser(safari)\n };\n };\n const Browser = {\n unknown: unknown$1,\n nu: nu$1,\n edge: constant(edge),\n chromium: constant(chromium),\n ie: constant(ie),\n opera: constant(opera),\n firefox: constant(firefox),\n safari: constant(safari)\n };\n\n const windows = 'Windows';\n const ios = 'iOS';\n const android = 'Android';\n const linux = 'Linux';\n const macos = 'macOS';\n const solaris = 'Solaris';\n const freebsd = 'FreeBSD';\n const chromeos = 'ChromeOS';\n const unknown = () => {\n return nu({\n current: undefined,\n version: Version.unknown()\n });\n };\n const nu = info => {\n const current = info.current;\n const version = info.version;\n const isOS = name => () => current === name;\n return {\n current,\n version,\n isWindows: isOS(windows),\n isiOS: isOS(ios),\n isAndroid: isOS(android),\n isMacOS: isOS(macos),\n isLinux: isOS(linux),\n isSolaris: isOS(solaris),\n isFreeBSD: isOS(freebsd),\n isChromeOS: isOS(chromeos)\n };\n };\n const OperatingSystem = {\n unknown,\n nu,\n windows: constant(windows),\n ios: constant(ios),\n android: constant(android),\n linux: constant(linux),\n macos: constant(macos),\n solaris: constant(solaris),\n freebsd: constant(freebsd),\n chromeos: constant(chromeos)\n };\n\n const detect$3 = (userAgent, userAgentDataOpt, mediaMatch) => {\n const browsers = PlatformInfo.browsers();\n const oses = PlatformInfo.oses();\n const browser = userAgentDataOpt.bind(userAgentData => detectBrowser$1(browsers, userAgentData)).orThunk(() => detectBrowser(browsers, userAgent)).fold(Browser.unknown, Browser.nu);\n const os = detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);\n const deviceType = DeviceType(os, browser, userAgent, mediaMatch);\n return {\n browser,\n os,\n deviceType\n };\n };\n const PlatformDetection = { detect: detect$3 };\n\n const mediaMatch = query => window.matchMedia(query).matches;\n let platform = cached(() => PlatformDetection.detect(navigator.userAgent, Optional.from(navigator.userAgentData), mediaMatch));\n const detect$2 = () => platform();\n\n const Dimension = (name, getOffset) => {\n const set = (element, h) => {\n if (!isNumber(h) && !h.match(/^[0-9]+$/)) {\n throw new Error(name + '.set accepts only positive integer values. Value was ' + h);\n }\n const dom = element.dom;\n if (isSupported(dom)) {\n dom.style[name] = h + 'px';\n }\n };\n const get = element => {\n const r = getOffset(element);\n if (r <= 0 || r === null) {\n const css = get$a(element, name);\n return parseFloat(css) || 0;\n }\n return r;\n };\n const getOuter = get;\n const aggregate = (element, properties) => foldl(properties, (acc, property) => {\n const val = get$a(element, property);\n const value = val === undefined ? 0 : parseInt(val, 10);\n return isNaN(value) ? acc : acc + value;\n }, 0);\n const max = (element, value, properties) => {\n const cumulativeInclusions = aggregate(element, properties);\n const absoluteMax = value > cumulativeInclusions ? value - cumulativeInclusions : 0;\n return absoluteMax;\n };\n return {\n set,\n get,\n getOuter,\n aggregate,\n max\n };\n };\n\n const toNumber = (px, fallback) => toFloat(px).getOr(fallback);\n const getProp = (element, name, fallback) => toNumber(get$a(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 getHeight$1 = element => getProp(element, 'height', element.dom.offsetHeight);\n const getWidth = element => getProp(element, 'width', element.dom.offsetWidth);\n const getInnerWidth = element => getCalculatedWidth(element, 'content-box');\n\n const api$2 = Dimension('width', element => element.dom.offsetWidth);\n const get$9 = element => api$2.get(element);\n const getOuter$2 = element => api$2.getOuter(element);\n const getInner = getInnerWidth;\n const getRuntime$1 = getWidth;\n\n const addCells = (gridRow, index, cells) => {\n const existingCells = gridRow.cells;\n const before = existingCells.slice(0, index);\n const after = existingCells.slice(index);\n const newCells = before.concat(cells).concat(after);\n return setCells(gridRow, newCells);\n };\n const addCell = (gridRow, index, cell) => addCells(gridRow, index, [cell]);\n const mutateCell = (gridRow, index, cell) => {\n const cells = gridRow.cells;\n cells[index] = cell;\n };\n const setCells = (gridRow, cells) => rowcells(gridRow.element, cells, gridRow.section, gridRow.isNew);\n const mapCells = (gridRow, f) => {\n const cells = gridRow.cells;\n const r = map$1(cells, f);\n return rowcells(gridRow.element, r, gridRow.section, gridRow.isNew);\n };\n const getCell = (gridRow, index) => gridRow.cells[index];\n const getCellElement = (gridRow, index) => getCell(gridRow, index).element;\n const cellLength = gridRow => gridRow.cells.length;\n const extractGridDetails = grid => {\n const result = partition(grid, row => row.section === 'colgroup');\n return {\n rows: result.fail,\n cols: result.pass\n };\n };\n const clone = (gridRow, cloneRow, cloneCell) => {\n const newCells = map$1(gridRow.cells, cloneCell);\n return rowcells(cloneRow(gridRow.element), newCells, gridRow.section, true);\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 const getLockedColumnsFromGrid = grid => {\n const locked = foldl(extractGridDetails(grid).rows, (acc, row) => {\n each$2(row.cells, (cell, idx) => {\n if (cell.isLocked) {\n acc[idx] = true;\n }\n });\n return acc;\n }, {});\n const lockedArr = mapToArray(locked, (_val, key) => parseInt(key, 10));\n return sort$1(lockedArr);\n };\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$2(warehouse.all, r => {\n return r.cells;\n });\n return filter$2(all, predicate);\n };\n const generateColumns = rowData => {\n const columnsGroup = {};\n let index = 0;\n each$2(rowData.cells, column => {\n const colspan = column.colspan;\n range$1(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$2(rows, rowData => {\n const currentRow = [];\n each$2(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$2(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$2(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 const columns = (warehouse, isValidCell = always) => {\n const grid = warehouse.grid;\n const cols = range$1(grid.columns, identity);\n const rowsArr = range$1(grid.rows, identity);\n return map$1(cols, col => {\n const getBlock = () => bind$2(rowsArr, r => Warehouse.getAt(warehouse, r, col).filter(detail => detail.column === col).toArray());\n const isValid = detail => detail.colspan === 1 && isValidCell(detail.element);\n const getFallback = () => Warehouse.getAt(warehouse, 0, col);\n return decide(getBlock, isValid, getFallback);\n });\n };\n const decide = (getBlock, isValid, getFallback) => {\n const inBlock = getBlock();\n const validInBlock = find$1(inBlock, isValid);\n const detailOption = validInBlock.orThunk(() => Optional.from(inBlock[0]).orThunk(getFallback));\n return detailOption.map(detail => detail.element);\n };\n const rows = warehouse => {\n const grid = warehouse.grid;\n const rowsArr = range$1(grid.rows, identity);\n const cols = range$1(grid.columns, identity);\n return map$1(rowsArr, row => {\n const getBlock = () => bind$2(cols, c => Warehouse.getAt(warehouse, row, c).filter(detail => detail.row === row).fold(constant([]), detail => [detail]));\n const isSingle = detail => detail.rowspan === 1;\n const getFallback = () => Warehouse.getAt(warehouse, row, 0);\n return decide(getBlock, isSingle, getFallback);\n });\n };\n\n const deduce = (xs, index) => {\n if (index < 0 || index >= xs.length - 1) {\n return Optional.none();\n }\n const current = xs[index].fold(() => {\n const rest = reverse(xs.slice(0, index));\n return findMap(rest, (a, i) => a.map(aa => ({\n value: aa,\n delta: i + 1\n })));\n }, c => Optional.some({\n value: c,\n delta: 0\n }));\n const next = xs[index + 1].fold(() => {\n const rest = xs.slice(index + 1);\n return findMap(rest, (a, i) => a.map(aa => ({\n value: aa,\n delta: i + 1\n })));\n }, n => Optional.some({\n value: n,\n delta: 1\n }));\n return current.bind(c => next.map(n => {\n const extras = n.delta + c.delta;\n return Math.abs(n.value - c.value) / extras;\n }));\n };\n\n const onDirection = (isLtr, isRtl) => element => getDirection(element) === 'rtl' ? isRtl : isLtr;\n const getDirection = element => get$a(element, 'direction') === 'rtl' ? 'rtl' : 'ltr';\n\n const api$1 = Dimension('height', element => {\n const dom = element.dom;\n return inBody(element) ? dom.getBoundingClientRect().height : dom.offsetHeight;\n });\n const get$8 = element => api$1.get(element);\n const getOuter$1 = element => api$1.getOuter(element);\n const getRuntime = getHeight$1;\n\n const r = (left, top) => {\n const translate = (x, y) => r(left + x, top + y);\n return {\n left,\n top,\n translate\n };\n };\n const SugarPosition = r;\n\n const boxPosition = dom => {\n const box = dom.getBoundingClientRect();\n return SugarPosition(box.left, box.top);\n };\n const firstDefinedOrZero = (a, b) => {\n if (a !== undefined) {\n return a;\n } else {\n return b !== undefined ? b : 0;\n }\n };\n const absolute = element => {\n const doc = element.dom.ownerDocument;\n const body = doc.body;\n const win = doc.defaultView;\n const html = doc.documentElement;\n if (body === element.dom) {\n return SugarPosition(body.offsetLeft, body.offsetTop);\n }\n const scrollTop = firstDefinedOrZero(win === null || win === void 0 ? void 0 : win.pageYOffset, html.scrollTop);\n const scrollLeft = firstDefinedOrZero(win === null || win === void 0 ? void 0 : win.pageXOffset, html.scrollLeft);\n const clientTop = firstDefinedOrZero(html.clientTop, body.clientTop);\n const clientLeft = firstDefinedOrZero(html.clientLeft, body.clientLeft);\n return viewport(element).translate(scrollLeft - clientLeft, scrollTop - clientTop);\n };\n const viewport = element => {\n const dom = element.dom;\n const doc = dom.ownerDocument;\n const body = doc.body;\n if (body === dom) {\n return SugarPosition(body.offsetLeft, body.offsetTop);\n }\n if (!inBody(element)) {\n return SugarPosition(0, 0);\n }\n return boxPosition(dom);\n };\n\n const rowInfo = (row, y) => ({\n row,\n y\n });\n const colInfo = (col, x) => ({\n col,\n x\n });\n const rtlEdge = cell => {\n const pos = absolute(cell);\n return pos.left + getOuter$2(cell);\n };\n const ltrEdge = cell => {\n return absolute(cell).left;\n };\n const getLeftEdge = (index, cell) => {\n return colInfo(index, ltrEdge(cell));\n };\n const getRightEdge = (index, cell) => {\n return colInfo(index, rtlEdge(cell));\n };\n const getTop$1 = cell => {\n return absolute(cell).top;\n };\n const getTopEdge = (index, cell) => {\n return rowInfo(index, getTop$1(cell));\n };\n const getBottomEdge = (index, cell) => {\n return rowInfo(index, getTop$1(cell) + getOuter$1(cell));\n };\n const findPositions = (getInnerEdge, getOuterEdge, array) => {\n if (array.length === 0) {\n return [];\n }\n const lines = map$1(array.slice(1), (cellOption, index) => {\n return cellOption.map(cell => {\n return getInnerEdge(index, cell);\n });\n });\n const lastLine = array[array.length - 1].map(cell => {\n return getOuterEdge(array.length - 1, cell);\n });\n return lines.concat([lastLine]);\n };\n const negate = step => {\n return -step;\n };\n const height = {\n delta: identity,\n positions: optElements => findPositions(getTopEdge, getBottomEdge, optElements),\n edge: getTop$1\n };\n const ltr$1 = {\n delta: identity,\n edge: ltrEdge,\n positions: optElements => findPositions(getLeftEdge, getRightEdge, optElements)\n };\n const rtl$1 = {\n delta: negate,\n edge: rtlEdge,\n positions: optElements => findPositions(getRightEdge, getLeftEdge, optElements)\n };\n const detect$1 = onDirection(ltr$1, rtl$1);\n const width = {\n delta: (amount, table) => detect$1(table).delta(amount, table),\n positions: (cols, table) => detect$1(table).positions(cols, table),\n edge: cell => detect$1(cell).edge(cell)\n };\n\n const units = {\n unsupportedLength: [\n 'em',\n 'ex',\n 'cap',\n 'ch',\n 'ic',\n 'rem',\n 'lh',\n 'rlh',\n 'vw',\n 'vh',\n 'vi',\n 'vb',\n 'vmin',\n 'vmax',\n 'cm',\n 'mm',\n 'Q',\n 'in',\n 'pc',\n 'pt',\n 'px'\n ],\n fixed: [\n 'px',\n 'pt'\n ],\n relative: ['%'],\n empty: ['']\n };\n const pattern = (() => {\n const decimalDigits = '[0-9]+';\n const signedInteger = '[+-]?' + decimalDigits;\n const exponentPart = '[eE]' + signedInteger;\n const dot = '\\\\.';\n const opt = input => `(?:${ input })?`;\n const unsignedDecimalLiteral = [\n 'Infinity',\n decimalDigits + dot + opt(decimalDigits) + opt(exponentPart),\n dot + decimalDigits + opt(exponentPart),\n decimalDigits + opt(exponentPart)\n ].join('|');\n const float = `[+-]?(?:${ unsignedDecimalLiteral })`;\n return new RegExp(`^(${ float })(.*)$`);\n })();\n const isUnit = (unit, accepted) => exists(accepted, acc => exists(units[acc], check => unit === check));\n const parse = (input, accepted) => {\n const match = Optional.from(pattern.exec(input));\n return match.bind(array => {\n const value = Number(array[1]);\n const unitRaw = array[2];\n if (isUnit(unitRaw, accepted)) {\n return Optional.some({\n value,\n unit: unitRaw\n });\n } else {\n return Optional.none();\n }\n });\n };\n\n const rPercentageBasedSizeRegex = /(\\d+(\\.\\d+)?)%/;\n const rPixelBasedSizeRegex = /(\\d+(\\.\\d+)?)px|em/;\n const isCol$2 = isTag('col');\n const getPercentSize = (elm, outerGetter, innerGetter) => {\n const relativeParent = parentElement(elm).getOrThunk(() => getBody$1(owner(elm)));\n return outerGetter(elm) / innerGetter(relativeParent) * 100;\n };\n const setPixelWidth = (cell, amount) => {\n set$1(cell, 'width', amount + 'px');\n };\n const setPercentageWidth = (cell, amount) => {\n set$1(cell, 'width', amount + '%');\n };\n const setHeight = (cell, amount) => {\n set$1(cell, 'height', amount + 'px');\n };\n const getHeightValue = cell => getRuntime(cell) + 'px';\n const convert = (cell, number, getter, setter) => {\n const newSize = table(cell).map(table => {\n const total = getter(table);\n return Math.floor(number / 100 * total);\n }).getOr(number);\n setter(cell, newSize);\n return newSize;\n };\n const normalizePixelSize = (value, cell, getter, setter) => {\n const number = parseFloat(value);\n return endsWith(value, '%') && name(cell) !== 'table' ? convert(cell, number, getter, setter) : number;\n };\n const getTotalHeight = cell => {\n const value = getHeightValue(cell);\n if (!value) {\n return get$8(cell);\n }\n return normalizePixelSize(value, cell, get$8, setHeight);\n };\n const get$7 = (cell, type, f) => {\n const v = f(cell);\n const span = getSpan(cell, type);\n return v / span;\n };\n const getRaw$1 = (element, prop) => {\n return getRaw$2(element, prop).orThunk(() => {\n return getOpt(element, prop).map(val => val + 'px');\n });\n };\n const getRawWidth$1 = element => getRaw$1(element, 'width');\n const getRawHeight = element => getRaw$1(element, 'height');\n const getPercentageWidth = cell => getPercentSize(cell, get$9, getInner);\n const getPixelWidth$1 = cell => isCol$2(cell) ? get$9(cell) : getRuntime$1(cell);\n const getHeight = cell => {\n return get$7(cell, 'rowspan', getTotalHeight);\n };\n const getGenericWidth = cell => {\n const width = getRawWidth$1(cell);\n return width.bind(w => parse(w, [\n 'fixed',\n 'relative',\n 'empty'\n ]));\n };\n const setGenericWidth = (cell, amount, unit) => {\n set$1(cell, 'width', amount + unit);\n };\n const getPixelTableWidth = table => get$9(table) + 'px';\n const getPercentTableWidth = table => getPercentSize(table, get$9, getInner) + '%';\n const isPercentSizing$1 = table => getRawWidth$1(table).exists(size => rPercentageBasedSizeRegex.test(size));\n const isPixelSizing$1 = table => getRawWidth$1(table).exists(size => rPixelBasedSizeRegex.test(size));\n const isNoneSizing$1 = table => getRawWidth$1(table).isNone();\n const percentageBasedSizeRegex = constant(rPercentageBasedSizeRegex);\n\n const isCol$1 = isTag('col');\n const getRawW = cell => {\n return getRawWidth$1(cell).getOrThunk(() => getPixelWidth$1(cell) + 'px');\n };\n const getRawH = cell => {\n return getRawHeight(cell).getOrThunk(() => getHeight(cell) + 'px');\n };\n const justCols = warehouse => map$1(Warehouse.justColumns(warehouse), column => Optional.from(column.element));\n const isValidColumn = cell => {\n const browser = detect$2().browser;\n const supportsColWidths = browser.isChromium() || browser.isFirefox();\n return isCol$1(cell) ? supportsColWidths : true;\n };\n const getDimension = (cellOpt, index, backups, filter, getter, fallback) => cellOpt.filter(filter).fold(() => fallback(deduce(backups, index)), cell => getter(cell));\n const getWidthFrom = (warehouse, table, getWidth, fallback) => {\n const columnCells = columns(warehouse);\n const columns$1 = Warehouse.hasColumns(warehouse) ? justCols(warehouse) : columnCells;\n const backups = [Optional.some(width.edge(table))].concat(map$1(width.positions(columnCells, table), pos => pos.map(p => p.x)));\n const colFilter = not(hasColspan);\n return map$1(columns$1, (cellOption, c) => {\n return getDimension(cellOption, c, backups, colFilter, column => {\n if (isValidColumn(column)) {\n return getWidth(column);\n } else {\n const cell = bindFrom(columnCells[c], identity);\n return getDimension(cell, c, backups, colFilter, cell => fallback(Optional.some(get$9(cell))), fallback);\n }\n }, fallback);\n });\n };\n const getDeduced = deduced => {\n return deduced.map(d => {\n return d + 'px';\n }).getOr('');\n };\n const getRawWidths = (warehouse, table) => {\n return getWidthFrom(warehouse, table, getRawW, getDeduced);\n };\n const getPercentageWidths = (warehouse, table, tableSize) => {\n return getWidthFrom(warehouse, table, getPercentageWidth, deduced => {\n return deduced.fold(() => {\n return tableSize.minCellWidth();\n }, cellWidth => {\n return cellWidth / tableSize.pixelWidth() * 100;\n });\n });\n };\n const getPixelWidths = (warehouse, table, tableSize) => {\n return getWidthFrom(warehouse, table, getPixelWidth$1, deduced => {\n return deduced.getOrThunk(tableSize.minCellWidth);\n });\n };\n const getHeightFrom = (warehouse, table, direction, getHeight, fallback) => {\n const rows$1 = rows(warehouse);\n const backups = [Optional.some(direction.edge(table))].concat(map$1(direction.positions(rows$1, table), pos => pos.map(p => p.y)));\n return map$1(rows$1, (cellOption, c) => {\n return getDimension(cellOption, c, backups, not(hasRowspan), getHeight, fallback);\n });\n };\n const getPixelHeights = (warehouse, table, direction) => {\n return getHeightFrom(warehouse, table, direction, getHeight, deduced => {\n return deduced.getOrThunk(minHeight);\n });\n };\n const getRawHeights = (warehouse, table, direction) => {\n return getHeightFrom(warehouse, table, direction, getRawH, getDeduced);\n };\n\n const widthLookup = (table, getter) => () => {\n if (inBody(table)) {\n return getter(table);\n } else {\n return parseFloat(getRaw$2(table, 'width').getOr('0'));\n }\n };\n const noneSize = table => {\n const getWidth = widthLookup(table, get$9);\n const zero = constant(0);\n const getWidths = (warehouse, tableSize) => getPixelWidths(warehouse, table, tableSize);\n return {\n width: getWidth,\n pixelWidth: getWidth,\n getWidths,\n getCellDelta: zero,\n singleColumnWidth: constant([0]),\n minCellWidth: zero,\n setElementWidth: noop,\n adjustTableWidth: noop,\n isRelative: true,\n label: 'none'\n };\n };\n const percentageSize = table => {\n const getFloatWidth = widthLookup(table, elem => parseFloat(getPercentTableWidth(elem)));\n const getWidth = widthLookup(table, get$9);\n const getCellDelta = delta => delta / getWidth() * 100;\n const singleColumnWidth = (w, _delta) => [100 - w];\n const minCellWidth = () => minWidth() / getWidth() * 100;\n const adjustTableWidth = delta => {\n const currentWidth = getFloatWidth();\n const change = delta / 100 * currentWidth;\n const newWidth = currentWidth + change;\n setPercentageWidth(table, newWidth);\n };\n const getWidths = (warehouse, tableSize) => getPercentageWidths(warehouse, table, tableSize);\n return {\n width: getFloatWidth,\n pixelWidth: getWidth,\n getWidths,\n getCellDelta,\n singleColumnWidth,\n minCellWidth,\n setElementWidth: setPercentageWidth,\n adjustTableWidth,\n isRelative: true,\n label: 'percent'\n };\n };\n const pixelSize = table => {\n const getWidth = widthLookup(table, get$9);\n const getCellDelta = identity;\n const singleColumnWidth = (w, delta) => {\n const newNext = Math.max(minWidth(), w + delta);\n return [newNext - w];\n };\n const adjustTableWidth = delta => {\n const newWidth = getWidth() + delta;\n setPixelWidth(table, newWidth);\n };\n const getWidths = (warehouse, tableSize) => getPixelWidths(warehouse, table, tableSize);\n return {\n width: getWidth,\n pixelWidth: getWidth,\n getWidths,\n getCellDelta,\n singleColumnWidth,\n minCellWidth: minWidth,\n setElementWidth: setPixelWidth,\n adjustTableWidth,\n isRelative: false,\n label: 'pixel'\n };\n };\n const chooseSize = (element, width) => {\n const percentMatch = percentageBasedSizeRegex().exec(width);\n if (percentMatch !== null) {\n return percentageSize(element);\n } else {\n return pixelSize(element);\n }\n };\n const getTableSize = table => {\n const width = getRawWidth$1(table);\n return width.fold(() => noneSize(table), w => chooseSize(table, w));\n };\n const TableSize = {\n getTableSize,\n pixelSize,\n percentageSize,\n noneSize\n };\n\n const statsStruct = (minRow, minCol, maxRow, maxCol, allCells, selectedCells) => ({\n minRow,\n minCol,\n maxRow,\n maxCol,\n allCells,\n selectedCells\n });\n const findSelectedStats = (house, isSelected) => {\n const totalColumns = house.grid.columns;\n const totalRows = house.grid.rows;\n let minRow = totalRows;\n let minCol = totalColumns;\n let maxRow = 0;\n let maxCol = 0;\n const allCells = [];\n const selectedCells = [];\n each$1(house.access, detail => {\n allCells.push(detail);\n if (isSelected(detail)) {\n selectedCells.push(detail);\n const startRow = detail.row;\n const endRow = startRow + detail.rowspan - 1;\n const startCol = detail.column;\n const endCol = startCol + detail.colspan - 1;\n if (startRow < minRow) {\n minRow = startRow;\n } else if (endRow > maxRow) {\n maxRow = endRow;\n }\n if (startCol < minCol) {\n minCol = startCol;\n } else if (endCol > maxCol) {\n maxCol = endCol;\n }\n }\n });\n return statsStruct(minRow, minCol, maxRow, maxCol, allCells, selectedCells);\n };\n const makeCell = (list, seenSelected, rowIndex) => {\n const row = list[rowIndex].element;\n const td = SugarElement.fromTag('td');\n append$1(td, SugarElement.fromTag('br'));\n const f = seenSelected ? append$1 : prepend;\n f(row, td);\n };\n const fillInGaps = (list, house, stats, isSelected) => {\n const rows = filter$2(list, row => row.section !== 'colgroup');\n const totalColumns = house.grid.columns;\n const totalRows = house.grid.rows;\n for (let i = 0; i < totalRows; i++) {\n let seenSelected = false;\n for (let j = 0; j < totalColumns; j++) {\n if (!(i < stats.minRow || i > stats.maxRow || j < stats.minCol || j > stats.maxCol)) {\n const needCell = Warehouse.getAt(house, i, j).filter(isSelected).isNone();\n if (needCell) {\n makeCell(rows, seenSelected, i);\n } else {\n seenSelected = true;\n }\n }\n }\n }\n };\n const clean = (replica, stats, house, widthDelta) => {\n each$1(house.columns, col => {\n if (col.column < stats.minCol || col.column > stats.maxCol) {\n remove$6(col.element);\n }\n });\n const emptyRows = filter$2(firstLayer(replica, 'tr'), row => row.dom.childElementCount === 0);\n each$2(emptyRows, remove$6);\n if (stats.minCol === stats.maxCol || stats.minRow === stats.maxRow) {\n each$2(firstLayer(replica, 'th,td'), cell => {\n remove$7(cell, 'rowspan');\n remove$7(cell, 'colspan');\n });\n }\n remove$7(replica, LOCKED_COL_ATTR);\n remove$7(replica, 'data-snooker-col-series');\n const tableSize = TableSize.getTableSize(replica);\n tableSize.adjustTableWidth(widthDelta);\n };\n const getTableWidthDelta = (table, warehouse, tableSize, stats) => {\n if (stats.minCol === 0 && warehouse.grid.columns === stats.maxCol + 1) {\n return 0;\n }\n const colWidths = getPixelWidths(warehouse, table, tableSize);\n const allColsWidth = foldl(colWidths, (acc, width) => acc + width, 0);\n const selectedColsWidth = foldl(colWidths.slice(stats.minCol, stats.maxCol + 1), (acc, width) => acc + width, 0);\n const newWidth = selectedColsWidth / allColsWidth * tableSize.pixelWidth();\n const delta = newWidth - tableSize.pixelWidth();\n return tableSize.getCellDelta(delta);\n };\n const extract$1 = (table, selectedSelector) => {\n const isSelected = detail => is$2(detail.element, selectedSelector);\n const replica = deep(table);\n const list = fromTable$1(replica);\n const tableSize = TableSize.getTableSize(table);\n const replicaHouse = Warehouse.generate(list);\n const replicaStats = findSelectedStats(replicaHouse, isSelected);\n const selector = 'th:not(' + selectedSelector + ')' + ',td:not(' + selectedSelector + ')';\n const unselectedCells = filterFirstLayer(replica, 'th,td', cell => is$2(cell, selector));\n each$2(unselectedCells, remove$6);\n fillInGaps(list, replicaHouse, replicaStats, isSelected);\n const house = Warehouse.fromTable(table);\n const widthDelta = getTableWidthDelta(table, house, tableSize, replicaStats);\n clean(replica, replicaStats, replicaHouse, widthDelta);\n return replica;\n };\n\n const nbsp = '\\xA0';\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$6 = element => api.get(element);\n const getOption = element => api.getOption(element);\n const set = (element, value) => api.set(element, value);\n\n const getEnd = element => name(element) === 'img' ? 1 : getOption(element).fold(() => children$2(element).length, v => v.length);\n const isTextNodeWithCursorPosition = el => getOption(el).filter(text => text.trim().length !== 0 || text.indexOf(nbsp) > -1).isSome();\n const elementsWithCursorPosition = [\n 'img',\n 'br'\n ];\n const isCursorPosition = elem => {\n const hasCursorPosition = isTextNodeWithCursorPosition(elem);\n return hasCursorPosition || contains$2(elementsWithCursorPosition, name(elem));\n };\n\n const first = element => descendant$1(element, isCursorPosition);\n const last$1 = element => descendantRtl(element, isCursorPosition);\n const descendantRtl = (scope, predicate) => {\n const descend = element => {\n const children = children$2(element);\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n if (predicate(child)) {\n return Optional.some(child);\n }\n const res = descend(child);\n if (res.isSome()) {\n return res;\n }\n }\n return Optional.none();\n };\n return descend(scope);\n };\n\n const transferableAttributes = {\n scope: [\n 'row',\n 'col'\n ]\n };\n const createCell = doc => () => {\n const td = SugarElement.fromTag('td', doc.dom);\n append$1(td, SugarElement.fromTag('br', doc.dom));\n return td;\n };\n const createCol = doc => () => {\n return SugarElement.fromTag('col', doc.dom);\n };\n const createColgroup = doc => () => {\n return SugarElement.fromTag('colgroup', doc.dom);\n };\n const createRow$1 = doc => () => {\n return SugarElement.fromTag('tr', doc.dom);\n };\n const replace$1 = (cell, tag, attrs) => {\n const replica = copy$2(cell, tag);\n each$1(attrs, (v, k) => {\n if (v === null) {\n remove$7(replica, k);\n } else {\n set$2(replica, k, v);\n }\n });\n return replica;\n };\n const pasteReplace = cell => {\n return cell;\n };\n const cloneFormats = (oldCell, newCell, formats) => {\n const first$1 = first(oldCell);\n return first$1.map(firstText => {\n const formatSelector = formats.join(',');\n const parents = ancestors$3(firstText, formatSelector, element => {\n return eq$1(element, oldCell);\n });\n return foldr(parents, (last, parent) => {\n const clonedFormat = shallow(parent);\n remove$7(clonedFormat, 'contenteditable');\n append$1(last, clonedFormat);\n return clonedFormat;\n }, newCell);\n }).getOr(newCell);\n };\n const cloneAppropriateAttributes = (original, clone) => {\n each$1(transferableAttributes, (validAttributes, attributeName) => getOpt(original, attributeName).filter(attribute => contains$2(validAttributes, attribute)).each(attribute => set$2(clone, attributeName, attribute)));\n };\n const cellOperations = (mutate, doc, formatsToClone) => {\n const cloneCss = (prev, clone) => {\n copy$1(prev.element, clone);\n remove$5(clone, 'height');\n if (prev.colspan !== 1) {\n remove$5(clone, 'width');\n }\n };\n const newCell = prev => {\n const td = SugarElement.fromTag(name(prev.element), doc.dom);\n const formats = formatsToClone.getOr([\n 'strong',\n 'em',\n 'b',\n 'i',\n 'span',\n 'font',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'p',\n 'div'\n ]);\n const lastNode = formats.length > 0 ? cloneFormats(prev.element, td, formats) : td;\n append$1(lastNode, SugarElement.fromTag('br'));\n cloneCss(prev, td);\n cloneAppropriateAttributes(prev.element, td);\n mutate(prev.element, td);\n return td;\n };\n const newCol = prev => {\n const col = SugarElement.fromTag(name(prev.element), doc.dom);\n cloneCss(prev, col);\n mutate(prev.element, col);\n return col;\n };\n return {\n col: newCol,\n colgroup: createColgroup(doc),\n row: createRow$1(doc),\n cell: newCell,\n replace: replace$1,\n colGap: createCol(doc),\n gap: createCell(doc)\n };\n };\n const paste$1 = doc => {\n return {\n col: createCol(doc),\n colgroup: createColgroup(doc),\n row: createRow$1(doc),\n cell: createCell(doc),\n replace: pasteReplace,\n colGap: createCol(doc),\n gap: createCell(doc)\n };\n };\n\n const fromHtml = (html, scope) => {\n const doc = scope || document;\n const div = doc.createElement('div');\n div.innerHTML = html;\n return children$2(SugarElement.fromDom(div));\n };\n const fromDom = nodes => map$1(nodes, SugarElement.fromDom);\n\n const getBody = editor => SugarElement.fromDom(editor.getBody());\n const getIsRoot = editor => element => eq$1(element, getBody(editor));\n const removeDataStyle = table => {\n remove$7(table, 'data-mce-style');\n const removeStyleAttribute = element => remove$7(element, 'data-mce-style');\n each$2(cells$1(table), removeStyleAttribute);\n each$2(columns$1(table), removeStyleAttribute);\n each$2(rows$1(table), removeStyleAttribute);\n };\n const getSelectionStart = editor => SugarElement.fromDom(editor.selection.getStart());\n const getPixelWidth = elm => elm.getBoundingClientRect().width;\n const getPixelHeight = elm => elm.getBoundingClientRect().height;\n const getRawWidth = (editor, elm) => {\n const raw = editor.dom.getStyle(elm, 'width') || editor.dom.getAttrib(elm, 'width');\n return Optional.from(raw).filter(isNotEmpty);\n };\n const isPercentage$1 = value => /^(\\d+(\\.\\d+)?)%$/.test(value);\n const isPixel = value => /^(\\d+(\\.\\d+)?)px$/.test(value);\n\n const inSelection = (bounds, detail) => {\n const leftEdge = detail.column;\n const rightEdge = detail.column + detail.colspan - 1;\n const topEdge = detail.row;\n const bottomEdge = detail.row + detail.rowspan - 1;\n return leftEdge <= bounds.finishCol && rightEdge >= bounds.startCol && (topEdge <= bounds.finishRow && bottomEdge >= bounds.startRow);\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$1);\n const finishCoords = Warehouse.findItem(warehouse, finishCell, eq$1);\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 moveBy$1 = (warehouse, cell, row, column) => {\n return Warehouse.findItem(warehouse, cell, eq$1).bind(detail => {\n const startRow = row > 0 ? detail.row + detail.rowspan - 1 : detail.row;\n const startCol = column > 0 ? detail.column + detail.colspan - 1 : detail.column;\n const dest = Warehouse.getAt(warehouse, startRow + row, startCol + column);\n return dest.map(d => {\n return d.element;\n });\n });\n };\n const intercepts$1 = (warehouse, start, finish) => {\n return getAnyBox(warehouse, start, finish).map(bounds => {\n const inside = Warehouse.filterItems(warehouse, curry(inSelection, bounds));\n return map$1(inside, detail => {\n return detail.element;\n });\n });\n };\n const parentCell = (warehouse, innerCell) => {\n const isContainedBy = (c1, c2) => {\n return contains$1(c2, c1);\n };\n return Warehouse.findItem(warehouse, innerCell, isContainedBy).map(detail => {\n return detail.element;\n });\n };\n\n const moveBy = (cell, deltaRow, deltaColumn) => {\n return table(cell).bind(table => {\n const warehouse = getWarehouse(table);\n return moveBy$1(warehouse, cell, deltaRow, deltaColumn);\n });\n };\n const intercepts = (table, first, last) => {\n const warehouse = getWarehouse(table);\n return intercepts$1(warehouse, first, last);\n };\n const nestedIntercepts = (table, first, firstTable, last, lastTable) => {\n const warehouse = getWarehouse(table);\n const optStartCell = eq$1(table, firstTable) ? Optional.some(first) : parentCell(warehouse, first);\n const optLastCell = eq$1(table, lastTable) ? Optional.some(last) : parentCell(warehouse, last);\n return optStartCell.bind(startCell => optLastCell.bind(lastCell => intercepts$1(warehouse, startCell, lastCell)));\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 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 = 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$2(TagBoundaries, name(element));\n };\n const isEmptyTag = element => {\n if (!isElement(element)) {\n return false;\n }\n return contains$2([\n 'br',\n 'img',\n 'hr',\n 'input'\n ], name(element));\n };\n const isNonEditable = element => isElement(element) && get$b(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$2(source);\n setAll$1(destination, as);\n };\n const isSpecial = element => {\n const tag = name(element);\n return contains$2([\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$1,\n closest: closest$1,\n predicate: ancestor$2,\n all: parents\n }),\n down: constant({\n selector: descendants,\n predicate: descendants$1\n }),\n styles: constant({\n get: get$a,\n getRaw: getRaw$2,\n set: set$1,\n remove: remove$5\n }),\n attrs: constant({\n get: get$b,\n set: set$2,\n remove: remove$7,\n copyTo: copyAttributesTo\n }),\n insert: constant({\n before: before$3,\n after: after$5,\n afterAll: after$4,\n append: append$1,\n appendAll: append,\n prepend: prepend,\n wrap: wrap\n }),\n remove: constant({\n unwrap: unwrap,\n remove: remove$6\n }),\n create: constant({\n nu: SugarElement.fromTag,\n clone,\n text: SugarElement.fromText\n }),\n query: constant({\n comparePosition,\n prevSibling: prevSibling,\n nextSibling: nextSibling\n }),\n property: constant({\n children: children$2,\n name: name,\n parent: parent,\n document,\n isText: isText,\n isComment: isComment,\n isElement: isElement,\n isSpecial,\n getLanguage,\n getText: get$6,\n setText: set,\n isBoundary,\n isEmptyTag,\n isNonEditable\n }),\n eq: eq$1,\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 eq = (universe, item) => {\n return curry(universe.eq, item);\n };\n const ancestors$2 = (universe, start, end, isRoot = never) => {\n const ps1 = [start].concat(universe.up().all(start));\n const ps2 = [end].concat(universe.up().all(end));\n const prune = path => {\n const index = findIndex(path, isRoot);\n return index.fold(() => {\n return path;\n }, ind => {\n return path.slice(0, ind + 1);\n });\n };\n const pruned1 = prune(ps1);\n const pruned2 = prune(ps2);\n const shared = find$1(pruned1, x => {\n return exists(pruned2, eq(universe, x));\n });\n return {\n firstpath: pruned1,\n secondpath: pruned2,\n shared\n };\n };\n\n const sharedOne$1 = oneAll;\n const ancestors$1 = ancestors$2;\n\n const universe$3 = DomUniverse();\n const sharedOne = (look, elements) => {\n return sharedOne$1(universe$3, (_universe, element) => {\n return look(element);\n }, elements);\n };\n const ancestors = (start, finish, isRoot) => {\n return ancestors$1(universe$3, start, finish, isRoot);\n };\n\n const lookupTable = container => {\n return ancestor$1(container, 'table');\n };\n const identify = (start, finish, isRoot) => {\n const getIsRoot = rootTable => {\n return element => {\n return isRoot !== undefined && isRoot(element) || eq$1(element, rootTable);\n };\n };\n if (eq$1(start, finish)) {\n return Optional.some({\n boxes: Optional.some([start]),\n start,\n finish\n });\n } else {\n return lookupTable(start).bind(startTable => {\n return lookupTable(finish).bind(finishTable => {\n if (eq$1(startTable, finishTable)) {\n return Optional.some({\n boxes: intercepts(startTable, start, finish),\n start,\n finish\n });\n } else if (contains$1(startTable, finishTable)) {\n const ancestorCells = ancestors$3(finish, 'td,th', getIsRoot(startTable));\n const finishCell = ancestorCells.length > 0 ? ancestorCells[ancestorCells.length - 1] : finish;\n return Optional.some({\n boxes: nestedIntercepts(startTable, start, startTable, finish, finishTable),\n start,\n finish: finishCell\n });\n } else if (contains$1(finishTable, startTable)) {\n const ancestorCells = ancestors$3(start, 'td,th', getIsRoot(finishTable));\n const startCell = ancestorCells.length > 0 ? ancestorCells[ancestorCells.length - 1] : start;\n return Optional.some({\n boxes: nestedIntercepts(finishTable, start, startTable, finish, finishTable),\n start,\n finish: startCell\n });\n } else {\n return ancestors(start, finish).shared.bind(lca => {\n return closest$1(lca, 'table', isRoot).bind(lcaTable => {\n const finishAncestorCells = ancestors$3(finish, 'td,th', getIsRoot(lcaTable));\n const finishCell = finishAncestorCells.length > 0 ? finishAncestorCells[finishAncestorCells.length - 1] : finish;\n const startAncestorCells = ancestors$3(start, 'td,th', getIsRoot(lcaTable));\n const startCell = startAncestorCells.length > 0 ? startAncestorCells[startAncestorCells.length - 1] : start;\n return Optional.some({\n boxes: nestedIntercepts(lcaTable, start, startTable, finish, finishTable),\n start: startCell,\n finish: finishCell\n });\n });\n });\n }\n });\n });\n }\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 getLast = (boxes, lastSelectedSelector) => {\n return find$1(boxes, box => {\n return is$2(box, lastSelectedSelector);\n });\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 const expandTo = (finish, firstSelectedSelector) => {\n return ancestor$1(finish, 'table').bind(table => {\n return descendant(table, firstSelectedSelector).bind(start => {\n return identify(start, finish).bind(identified => {\n return identified.boxes.map(boxes => {\n return {\n boxes,\n start: identified.start,\n finish: identified.finish\n };\n });\n });\n });\n });\n };\n const shiftSelection = (boxes, deltaRow, deltaColumn, firstSelectedSelector, lastSelectedSelector) => {\n return getLast(boxes, lastSelectedSelector).bind(last => {\n return moveBy(last, deltaRow, deltaColumn).bind(finish => {\n return expandTo(finish, firstSelectedSelector);\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$1(container, ancestor);\n };\n const sectionSelector = 'thead,tfoot,tbody,table';\n const firstAncestor = ancestor$1(edges.first, sectionSelector, isRoot);\n const lastAncestor = ancestor$1(edges.last, sectionSelector, isRoot);\n return firstAncestor.bind(fA => {\n return lastAncestor.bind(lA => {\n return eq$1(fA, lA) ? getBox(edges.table, edges.first, edges.last) : Optional.none();\n });\n });\n });\n };\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 strSelected = 'data-mce-selected';\n const strSelectedSelector = 'td[' + strSelected + '],th[' + strSelected + ']';\n const strAttributeSelector = '[' + 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 attributeSelector = strAttributeSelector;\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 forMenu = (selectedCells, table, cell) => ({\n element: cell,\n mergable: mergable(table, selectedCells, ephemera),\n unmergable: unmergable(selectedCells),\n selection: selection(selectedCells)\n });\n const paste = (element, clipboard, generators) => ({\n element,\n clipboard,\n generators\n });\n const pasteRows = (selectedCells, _cell, clipboard, generators) => ({\n selection: selection(selectedCells),\n clipboard,\n generators\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 getCellsFromFakeSelection = editor => filter$2(getCellsFromSelection(editor), cell => is$2(cell, ephemera.selectedSelector));\n\n const extractSelected = cells => {\n return table(cells[0]).map(table => {\n const replica = extract$1(table, attributeSelector);\n removeDataStyle(replica);\n return [replica];\n });\n };\n const serializeElements = (editor, elements) => map$1(elements, elm => editor.selection.serializer.serialize(elm.dom, {})).join('');\n const getTextContent = elements => map$1(elements, element => element.dom.innerText).join('');\n const registerEvents = (editor, actions) => {\n editor.on('BeforeGetContent', e => {\n const multiCellContext = cells => {\n e.preventDefault();\n extractSelected(cells).each(elements => {\n e.content = e.format === 'text' ? getTextContent(elements) : serializeElements(editor, elements);\n });\n };\n if (e.selection === true) {\n const cells = getCellsFromFakeSelection(editor);\n if (cells.length >= 1) {\n multiCellContext(cells);\n }\n }\n });\n editor.on('BeforeSetContent', e => {\n if (e.selection === true && e.paste === true) {\n const selectedCells = getCellsFromSelection(editor);\n head(selectedCells).each(cell => {\n table(cell).each(table => {\n const elements = filter$2(fromHtml(e.content), content => {\n return name(content) !== 'meta';\n });\n const isTable = isTag('table');\n if (elements.length === 1 && isTable(elements[0])) {\n e.preventDefault();\n const doc = SugarElement.fromDom(editor.getDoc());\n const generators = paste$1(doc);\n const targets = paste(cell, elements[0], generators);\n actions.pasteCells(table, targets).each(() => {\n editor.focus();\n });\n }\n });\n });\n }\n });\n };\n\n const point = (element, offset) => ({\n element,\n offset\n });\n\n const scan$1 = (universe, element, direction) => {\n if (universe.property().isText(element) && universe.property().getText(element).trim().length === 0 || universe.property().isComment(element)) {\n return direction(element).bind(elem => {\n return scan$1(universe, elem, direction).orThunk(() => {\n return Optional.some(elem);\n });\n });\n } else {\n return Optional.none();\n }\n };\n const toEnd = (universe, element) => {\n if (universe.property().isText(element)) {\n return universe.property().getText(element).length;\n }\n const children = universe.property().children(element);\n return children.length;\n };\n const freefallRtl$2 = (universe, element) => {\n const candidate = scan$1(universe, element, universe.query().prevSibling).getOr(element);\n if (universe.property().isText(candidate)) {\n return point(candidate, toEnd(universe, candidate));\n }\n const children = universe.property().children(candidate);\n return children.length > 0 ? freefallRtl$2(universe, children[children.length - 1]) : point(candidate, toEnd(universe, candidate));\n };\n\n const freefallRtl$1 = freefallRtl$2;\n\n const universe$2 = DomUniverse();\n const freefallRtl = element => {\n return freefallRtl$1(universe$2, element);\n };\n\n const halve = (main, other) => {\n if (!hasColspan(main)) {\n const width = getGenericWidth(main);\n width.each(w => {\n const newWidth = w.value / 2;\n setGenericWidth(main, newWidth, w.unit);\n setGenericWidth(other, newWidth, w.unit);\n });\n }\n };\n\n const zero = array => map$1(array, constant(0));\n const surround = (sizes, startIndex, endIndex, results, f) => f(sizes.slice(0, startIndex)).concat(results).concat(f(sizes.slice(endIndex)));\n const clampDeltaHelper = predicate => (sizes, index, delta, minCellSize) => {\n if (!predicate(delta)) {\n return delta;\n } else {\n const newSize = Math.max(minCellSize, sizes[index] - Math.abs(delta));\n const diff = Math.abs(newSize - sizes[index]);\n return delta >= 0 ? diff : -diff;\n }\n };\n const clampNegativeDelta = clampDeltaHelper(delta => delta < 0);\n const clampDelta = clampDeltaHelper(always);\n const resizeTable = () => {\n const calcFixedDeltas = (sizes, index, next, delta, minCellSize) => {\n const clampedDelta = clampNegativeDelta(sizes, index, delta, minCellSize);\n return surround(sizes, index, next + 1, [\n clampedDelta,\n 0\n ], zero);\n };\n const calcRelativeDeltas = (sizes, index, delta, minCellSize) => {\n const ratio = (100 + delta) / 100;\n const newThis = Math.max(minCellSize, (sizes[index] + delta) / ratio);\n return map$1(sizes, (size, idx) => {\n const newSize = idx === index ? newThis : size / ratio;\n return newSize - size;\n });\n };\n const calcLeftEdgeDeltas = (sizes, index, next, delta, minCellSize, isRelative) => {\n if (isRelative) {\n return calcRelativeDeltas(sizes, index, delta, minCellSize);\n } else {\n return calcFixedDeltas(sizes, index, next, delta, minCellSize);\n }\n };\n const calcMiddleDeltas = (sizes, _prev, index, next, delta, minCellSize, isRelative) => calcLeftEdgeDeltas(sizes, index, next, delta, minCellSize, isRelative);\n const resizeTable = (resizer, delta) => resizer(delta);\n const calcRightEdgeDeltas = (sizes, _prev, index, delta, minCellSize, isRelative) => {\n if (isRelative) {\n return calcRelativeDeltas(sizes, index, delta, minCellSize);\n } else {\n const clampedDelta = clampNegativeDelta(sizes, index, delta, minCellSize);\n return zero(sizes.slice(0, index)).concat([clampedDelta]);\n }\n };\n const calcRedestributedWidths = (sizes, totalWidth, pixelDelta, isRelative) => {\n if (isRelative) {\n const tableWidth = totalWidth + pixelDelta;\n const ratio = tableWidth / totalWidth;\n const newSizes = map$1(sizes, size => size / ratio);\n return {\n delta: ratio * 100 - 100,\n newSizes\n };\n } else {\n return {\n delta: pixelDelta,\n newSizes: sizes\n };\n }\n };\n return {\n resizeTable,\n clampTableDelta: clampNegativeDelta,\n calcLeftEdgeDeltas,\n calcMiddleDeltas,\n calcRightEdgeDeltas,\n calcRedestributedWidths\n };\n };\n const preserveTable = () => {\n const calcLeftEdgeDeltas = (sizes, index, next, delta, minCellSize) => {\n const idx = delta >= 0 ? next : index;\n const clampedDelta = clampDelta(sizes, idx, delta, minCellSize);\n return surround(sizes, index, next + 1, [\n clampedDelta,\n -clampedDelta\n ], zero);\n };\n const calcMiddleDeltas = (sizes, _prev, index, next, delta, minCellSize) => calcLeftEdgeDeltas(sizes, index, next, delta, minCellSize);\n const resizeTable = (resizer, delta, isLastColumn) => {\n if (isLastColumn) {\n resizer(delta);\n }\n };\n const calcRightEdgeDeltas = (sizes, _prev, _index, delta, _minCellSize, isRelative) => {\n if (isRelative) {\n return zero(sizes);\n } else {\n const diff = delta / sizes.length;\n return map$1(sizes, constant(diff));\n }\n };\n const clampTableDelta = (sizes, index, delta, minCellSize, isLastColumn) => {\n if (isLastColumn) {\n if (delta >= 0) {\n return delta;\n } else {\n const maxDelta = foldl(sizes, (a, b) => a + b - minCellSize, 0);\n return Math.max(-maxDelta, delta);\n }\n } else {\n return clampNegativeDelta(sizes, index, delta, minCellSize);\n }\n };\n const calcRedestributedWidths = (sizes, _totalWidth, _pixelDelta, _isRelative) => ({\n delta: 0,\n newSizes: sizes\n });\n return {\n resizeTable,\n clampTableDelta,\n calcLeftEdgeDeltas,\n calcMiddleDeltas,\n calcRightEdgeDeltas,\n calcRedestributedWidths\n };\n };\n\n const getGridSize = table => {\n const warehouse = Warehouse.fromTable(table);\n return warehouse.grid;\n };\n\n const isHeaderCell = isTag('th');\n const isHeaderCells = cells => forall(cells, cell => isHeaderCell(cell.element));\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 = 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$2(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$1(rows, row => getRowType(row).type);\n const hasHeader = contains$2(rowTypes, 'header');\n const hasFooter = contains$2(rowTypes, 'footer');\n if (!hasHeader && !hasFooter) {\n return Optional.some('body');\n } else {\n const hasBody = contains$2(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 const findTableRowHeaderType = warehouse => findMap(warehouse.all, row => {\n const rowType = getRowType(row);\n return rowType.type === 'header' ? Optional.from(rowType.subType) : Optional.none();\n });\n\n const transformCell = (cell, comparator, substitution) => elementnew(substitution(cell.element, comparator), true, cell.isLocked);\n const transformRow = (row, section) => row.section !== section ? rowcells(row.element, row.cells, section, row.isNew) : row;\n const section = () => ({\n transformRow,\n transformCell: (cell, comparator, substitution) => {\n const newCell = substitution(cell.element, comparator);\n const fixedCell = name(newCell) !== 'td' ? mutate$1(newCell, 'td') : newCell;\n return elementnew(fixedCell, cell.isNew, cell.isLocked);\n }\n });\n const sectionCells = () => ({\n transformRow,\n transformCell\n });\n const cells = () => ({\n transformRow: (row, section) => {\n const newSection = section === 'thead' ? 'tbody' : section;\n return transformRow(row, newSection);\n },\n transformCell\n });\n const fallback = () => ({\n transformRow: identity,\n transformCell\n });\n const getTableSectionType = (table, fallback) => {\n const warehouse = Warehouse.fromTable(table);\n const type = findTableRowHeaderType(warehouse).getOr(fallback);\n switch (type) {\n case 'section':\n return section();\n case 'sectionCells':\n return sectionCells();\n case 'cells':\n return cells();\n }\n };\n const TableSection = {\n getTableSectionType,\n section,\n sectionCells,\n cells,\n fallback\n };\n\n const closest = target => closest$1(target, '[contenteditable]');\n const isEditable$1 = (element, assumeEditable = false) => {\n if (inBody(element)) {\n return element.dom.isContentEditable;\n } else {\n return closest(element).fold(constant(assumeEditable), editable => getRaw(editable) === 'true');\n }\n };\n const getRaw = element => element.dom.contentEditable;\n\n const setIfNot = (element, property, value, ignore) => {\n if (value === ignore) {\n remove$7(element, property);\n } else {\n set$2(element, property, value);\n }\n };\n const insert$1 = (table, selector, element) => {\n last$2(children(table, selector)).fold(() => prepend(table, element), child => after$5(child, element));\n };\n const generateSection = (table, sectionName) => {\n const section = child(table, sectionName).getOrThunk(() => {\n const newSection = SugarElement.fromTag(sectionName, owner(table).dom);\n if (sectionName === 'thead') {\n insert$1(table, 'caption,colgroup', newSection);\n } else if (sectionName === 'colgroup') {\n insert$1(table, 'caption', newSection);\n } else {\n append$1(table, newSection);\n }\n return newSection;\n });\n empty(section);\n return section;\n };\n const render$1 = (table, grid) => {\n const newRows = [];\n const newCells = [];\n const syncRows = gridSection => map$1(gridSection, row => {\n if (row.isNew) {\n newRows.push(row.element);\n }\n const tr = row.element;\n empty(tr);\n each$2(row.cells, cell => {\n if (cell.isNew) {\n newCells.push(cell.element);\n }\n setIfNot(cell.element, 'colspan', cell.colspan, 1);\n setIfNot(cell.element, 'rowspan', cell.rowspan, 1);\n append$1(tr, cell.element);\n });\n return tr;\n });\n const syncColGroup = gridSection => bind$2(gridSection, colGroup => map$1(colGroup.cells, col => {\n setIfNot(col.element, 'span', col.colspan, 1);\n return col.element;\n }));\n const renderSection = (gridSection, sectionName) => {\n const section = generateSection(table, sectionName);\n const sync = sectionName === 'colgroup' ? syncColGroup : syncRows;\n const sectionElems = sync(gridSection);\n append(section, sectionElems);\n };\n const removeSection = sectionName => {\n child(table, sectionName).each(remove$6);\n };\n const renderOrRemoveSection = (gridSection, sectionName) => {\n if (gridSection.length > 0) {\n renderSection(gridSection, sectionName);\n } else {\n removeSection(sectionName);\n }\n };\n const headSection = [];\n const bodySection = [];\n const footSection = [];\n const columnGroupsSection = [];\n each$2(grid, row => {\n switch (row.section) {\n case 'thead':\n headSection.push(row);\n break;\n case 'tbody':\n bodySection.push(row);\n break;\n case 'tfoot':\n footSection.push(row);\n break;\n case 'colgroup':\n columnGroupsSection.push(row);\n break;\n }\n });\n renderOrRemoveSection(columnGroupsSection, 'colgroup');\n renderOrRemoveSection(headSection, 'thead');\n renderOrRemoveSection(bodySection, 'tbody');\n renderOrRemoveSection(footSection, 'tfoot');\n return {\n newRows,\n newCells\n };\n };\n const copy = grid => map$1(grid, row => {\n const tr = shallow(row.element);\n each$2(row.cells, cell => {\n const clonedCell = deep(cell.element);\n setIfNot(clonedCell, 'colspan', cell.colspan, 1);\n setIfNot(clonedCell, 'rowspan', cell.rowspan, 1);\n append$1(tr, clonedCell);\n });\n return tr;\n });\n\n const getColumn = (grid, index) => {\n return map$1(grid, row => {\n return getCell(row, index);\n });\n };\n const getRow = (grid, index) => {\n return grid[index];\n };\n const findDiff = (xs, comp) => {\n if (xs.length === 0) {\n return 0;\n }\n const first = xs[0];\n const index = findIndex(xs, x => {\n return !comp(first.element, x.element);\n });\n return index.getOr(xs.length);\n };\n const subgrid = (grid, row, column, comparator) => {\n const gridRow = getRow(grid, row);\n const isColRow = gridRow.section === 'colgroup';\n const colspan = findDiff(gridRow.cells.slice(column), comparator);\n const rowspan = isColRow ? 1 : findDiff(getColumn(grid.slice(row), column), comparator);\n return {\n colspan,\n rowspan\n };\n };\n\n const toDetails = (grid, comparator) => {\n const seen = map$1(grid, row => map$1(row.cells, never));\n const updateSeen = (rowIndex, columnIndex, rowspan, colspan) => {\n for (let row = rowIndex; row < rowIndex + rowspan; row++) {\n for (let column = columnIndex; column < columnIndex + colspan; column++) {\n seen[row][column] = true;\n }\n }\n };\n return map$1(grid, (row, rowIndex) => {\n const details = bind$2(row.cells, (cell, columnIndex) => {\n if (seen[rowIndex][columnIndex] === false) {\n const result = subgrid(grid, rowIndex, columnIndex, comparator);\n updateSeen(rowIndex, columnIndex, result.rowspan, result.colspan);\n return [detailnew(cell.element, result.rowspan, result.colspan, cell.isNew)];\n } else {\n return [];\n }\n });\n return rowdetailnew(row.element, details, row.section, row.isNew);\n });\n };\n const toGrid = (warehouse, generators, isNew) => {\n const grid = [];\n each$2(warehouse.colgroups, colgroup => {\n const colgroupCols = [];\n for (let columnIndex = 0; columnIndex < warehouse.grid.columns; columnIndex++) {\n const element = Warehouse.getColumnAt(warehouse, columnIndex).map(column => elementnew(column.element, isNew, false)).getOrThunk(() => elementnew(generators.colGap(), true, false));\n colgroupCols.push(element);\n }\n grid.push(rowcells(colgroup.element, colgroupCols, 'colgroup', isNew));\n });\n for (let rowIndex = 0; rowIndex < warehouse.grid.rows; rowIndex++) {\n const rowCells = [];\n for (let columnIndex = 0; columnIndex < warehouse.grid.columns; columnIndex++) {\n const element = Warehouse.getAt(warehouse, rowIndex, columnIndex).map(item => elementnew(item.element, isNew, item.isLocked)).getOrThunk(() => elementnew(generators.gap(), true, false));\n rowCells.push(element);\n }\n const rowDetail = warehouse.all[rowIndex];\n const row = rowcells(rowDetail.element, rowCells, rowDetail.section, isNew);\n grid.push(row);\n }\n return grid;\n };\n\n const fromWarehouse = (warehouse, generators) => toGrid(warehouse, generators, false);\n const toDetailList = grid => toDetails(grid, eq$1);\n const findInWarehouse = (warehouse, element) => findMap(warehouse.all, r => find$1(r.cells, e => eq$1(element, e.element)));\n const extractCells = (warehouse, target, predicate) => {\n const details = map$1(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 run = (operation, extract, adjustment, postAction, genWrappers) => (table, target, generators, behaviours) => {\n const warehouse = Warehouse.fromTable(table);\n const tableSection = Optional.from(behaviours === null || behaviours === void 0 ? void 0 : behaviours.section).getOrThunk(TableSection.fallback);\n const output = extract(warehouse, target).map(info => {\n const model = fromWarehouse(warehouse, generators);\n const result = operation(model, info, eq$1, genWrappers(generators), tableSection);\n const lockedColumns = getLockedColumnsFromGrid(result.grid);\n const grid = toDetailList(result.grid);\n return {\n info,\n grid,\n cursor: result.cursor,\n lockedColumns\n };\n });\n return output.bind(out => {\n const newElements = render$1(table, out.grid);\n const tableSizing = Optional.from(behaviours === null || behaviours === void 0 ? void 0 : behaviours.sizing).getOrThunk(() => TableSize.getTableSize(table));\n const resizing = Optional.from(behaviours === null || behaviours === void 0 ? void 0 : behaviours.resize).getOrThunk(preserveTable);\n adjustment(table, out.grid, out.info, {\n sizing: tableSizing,\n resize: resizing,\n section: tableSection\n });\n postAction(table);\n remove$7(table, LOCKED_COL_ATTR);\n if (out.lockedColumns.length > 0) {\n set$2(table, LOCKED_COL_ATTR, out.lockedColumns.join(','));\n }\n return Optional.some({\n cursor: out.cursor,\n newRows: newElements.newRows,\n newCells: newElements.newCells\n });\n });\n };\n const onPaste = (warehouse, target) => cell(target.element).bind(cell => findInWarehouse(warehouse, cell).map(details => {\n const value = {\n ...details,\n generators: target.generators,\n clipboard: target.clipboard\n };\n return value;\n }));\n const onPasteByEditor = (warehouse, target) => extractCells(warehouse, target, always).map(cells => ({\n cells,\n generators: target.generators,\n clipboard: target.clipboard\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 onUnlockedCells = (warehouse, target) => extractCells(warehouse, target, detail => !detail.isLocked);\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 merge$2 = (grid, bounds, comparator, substitution) => {\n const rows = extractGridDetails(grid).rows;\n if (rows.length === 0) {\n return grid;\n }\n for (let i = bounds.startRow; i <= bounds.finishRow; i++) {\n for (let j = bounds.startCol; j <= bounds.finishCol; j++) {\n const row = rows[i];\n const isLocked = getCell(row, j).isLocked;\n mutateCell(row, j, elementnew(substitution(), false, isLocked));\n }\n }\n return grid;\n };\n const unmerge = (grid, target, comparator, substitution) => {\n const rows = extractGridDetails(grid).rows;\n let first = true;\n for (let i = 0; i < rows.length; i++) {\n for (let j = 0; j < cellLength(rows[0]); j++) {\n const row = rows[i];\n const currentCell = getCell(row, j);\n const currentCellElm = currentCell.element;\n const isToReplace = comparator(currentCellElm, target);\n if (isToReplace && !first) {\n mutateCell(row, j, elementnew(substitution(), true, currentCell.isLocked));\n } else if (isToReplace) {\n first = false;\n }\n }\n }\n return grid;\n };\n const uniqueCells = (row, comparator) => {\n return foldl(row, (rest, cell) => {\n return exists(rest, currentCell => {\n return comparator(currentCell.element, cell.element);\n }) ? rest : rest.concat([cell]);\n }, []);\n };\n const splitCols = (grid, index, comparator, substitution) => {\n if (index > 0 && index < grid[0].cells.length) {\n each$2(grid, row => {\n const prevCell = row.cells[index - 1];\n const current = row.cells[index];\n const isToReplace = comparator(current.element, prevCell.element);\n if (isToReplace) {\n mutateCell(row, index, elementnew(substitution(), true, current.isLocked));\n }\n });\n }\n return grid;\n };\n const splitRows = (grid, index, comparator, substitution) => {\n const rows = extractGridDetails(grid).rows;\n if (index > 0 && index < rows.length) {\n const rowPrevCells = rows[index - 1].cells;\n const cells = uniqueCells(rowPrevCells, comparator);\n each$2(cells, cell => {\n let replacement = Optional.none();\n for (let i = index; i < rows.length; i++) {\n for (let j = 0; j < cellLength(rows[0]); j++) {\n const row = rows[i];\n const current = getCell(row, j);\n const isToReplace = comparator(current.element, cell.element);\n if (isToReplace) {\n if (replacement.isNone()) {\n replacement = Optional.some(substitution());\n }\n replacement.each(sub => {\n mutateCell(row, j, elementnew(sub, true, current.isLocked));\n });\n }\n }\n }\n });\n }\n return grid;\n };\n\n const value$1 = value => {\n const applyHelper = fn => fn(value);\n const constHelper = constant(value);\n const outputHelper = () => output;\n const output = {\n tag: true,\n inner: value,\n fold: (_onError, onValue) => onValue(value),\n isValue: always,\n isError: never,\n map: mapper => Result.value(mapper(value)),\n mapError: outputHelper,\n bind: applyHelper,\n exists: applyHelper,\n forall: applyHelper,\n getOr: constHelper,\n or: outputHelper,\n getOrThunk: constHelper,\n orThunk: outputHelper,\n getOrDie: constHelper,\n each: fn => {\n fn(value);\n },\n toOptional: () => Optional.some(value)\n };\n return output;\n };\n const error = error => {\n const outputHelper = () => output;\n const output = {\n tag: false,\n inner: error,\n fold: (onError, _onValue) => onError(error),\n isValue: never,\n isError: always,\n map: outputHelper,\n mapError: mapper => Result.error(mapper(error)),\n bind: outputHelper,\n exists: never,\n forall: always,\n getOr: identity,\n or: identity,\n getOrThunk: apply,\n orThunk: apply,\n getOrDie: die(String(error)),\n each: noop,\n toOptional: Optional.none\n };\n return output;\n };\n const fromOption = (optional, err) => optional.fold(() => error(err), value$1);\n const Result = {\n value: value$1,\n error,\n fromOption\n };\n\n const measure = (startAddress, gridA, gridB) => {\n if (startAddress.row >= gridA.length || startAddress.column > cellLength(gridA[0])) {\n return Result.error('invalid start address out of table bounds, row: ' + startAddress.row + ', column: ' + startAddress.column);\n }\n const rowRemainder = gridA.slice(startAddress.row);\n const colRemainder = rowRemainder[0].cells.slice(startAddress.column);\n const colRequired = cellLength(gridB[0]);\n const rowRequired = gridB.length;\n return Result.value({\n rowDelta: rowRemainder.length - rowRequired,\n colDelta: colRemainder.length - colRequired\n });\n };\n const measureWidth = (gridA, gridB) => {\n const colLengthA = cellLength(gridA[0]);\n const colLengthB = cellLength(gridB[0]);\n return {\n rowDelta: 0,\n colDelta: colLengthA - colLengthB\n };\n };\n const measureHeight = (gridA, gridB) => {\n const rowLengthA = gridA.length;\n const rowLengthB = gridB.length;\n return {\n rowDelta: rowLengthA - rowLengthB,\n colDelta: 0\n };\n };\n const generateElements = (amount, row, generators, isLocked) => {\n const generator = row.section === 'colgroup' ? generators.col : generators.cell;\n return range$1(amount, idx => elementnew(generator(), true, isLocked(idx)));\n };\n const rowFill = (grid, amount, generators, lockedColumns) => {\n const exampleRow = grid[grid.length - 1];\n return grid.concat(range$1(amount, () => {\n const generator = exampleRow.section === 'colgroup' ? generators.colgroup : generators.row;\n const row = clone(exampleRow, generator, identity);\n const elements = generateElements(row.cells.length, row, generators, idx => has$1(lockedColumns, idx.toString()));\n return setCells(row, elements);\n }));\n };\n const colFill = (grid, amount, generators, startIndex) => map$1(grid, row => {\n const newChildren = generateElements(amount, row, generators, never);\n return addCells(row, startIndex, newChildren);\n });\n const lockedColFill = (grid, generators, lockedColumns) => map$1(grid, row => {\n return foldl(lockedColumns, (acc, colNum) => {\n const newChild = generateElements(1, row, generators, always)[0];\n return addCell(acc, colNum, newChild);\n }, row);\n });\n const tailor = (gridA, delta, generators) => {\n const fillCols = delta.colDelta < 0 ? colFill : identity;\n const fillRows = delta.rowDelta < 0 ? rowFill : identity;\n const lockedColumns = getLockedColumnsFromGrid(gridA);\n const gridWidth = cellLength(gridA[0]);\n const isLastColLocked = exists(lockedColumns, locked => locked === gridWidth - 1);\n const modifiedCols = fillCols(gridA, Math.abs(delta.colDelta), generators, isLastColLocked ? gridWidth - 1 : gridWidth);\n const newLockedColumns = getLockedColumnsFromGrid(modifiedCols);\n return fillRows(modifiedCols, Math.abs(delta.rowDelta), generators, mapToObject(newLockedColumns, always));\n };\n\n const isSpanning = (grid, row, col, comparator) => {\n const candidate = getCell(grid[row], col);\n const matching = curry(comparator, candidate.element);\n const currentRow = grid[row];\n return grid.length > 1 && cellLength(currentRow) > 1 && (col > 0 && matching(getCellElement(currentRow, col - 1)) || col < currentRow.cells.length - 1 && matching(getCellElement(currentRow, col + 1)) || row > 0 && matching(getCellElement(grid[row - 1], col)) || row < grid.length - 1 && matching(getCellElement(grid[row + 1], col)));\n };\n const mergeTables = (startAddress, gridA, gridBRows, generator, comparator, lockedColumns) => {\n const startRow = startAddress.row;\n const startCol = startAddress.column;\n const mergeHeight = gridBRows.length;\n const mergeWidth = cellLength(gridBRows[0]);\n const endRow = startRow + mergeHeight;\n const endCol = startCol + mergeWidth + lockedColumns.length;\n const lockedColumnObj = mapToObject(lockedColumns, always);\n for (let r = startRow; r < endRow; r++) {\n let skippedCol = 0;\n for (let c = startCol; c < endCol; c++) {\n if (lockedColumnObj[c]) {\n skippedCol++;\n continue;\n }\n if (isSpanning(gridA, r, c, comparator)) {\n unmerge(gridA, getCellElement(gridA[r], c), comparator, generator.cell);\n }\n const gridBColIndex = c - startCol - skippedCol;\n const newCell = getCell(gridBRows[r - startRow], gridBColIndex);\n const newCellElm = newCell.element;\n const replacement = generator.replace(newCellElm);\n mutateCell(gridA[r], c, elementnew(replacement, true, newCell.isLocked));\n }\n }\n return gridA;\n };\n const getValidStartAddress = (currentStartAddress, grid, lockedColumns) => {\n const gridColLength = cellLength(grid[0]);\n const adjustedRowAddress = extractGridDetails(grid).cols.length + currentStartAddress.row;\n const possibleColAddresses = range$1(gridColLength - currentStartAddress.column, num => num + currentStartAddress.column);\n const validColAddress = find$1(possibleColAddresses, num => forall(lockedColumns, col => col !== num)).getOr(gridColLength - 1);\n return {\n row: adjustedRowAddress,\n column: validColAddress\n };\n };\n const getLockedColumnsWithinBounds = (startAddress, rows, lockedColumns) => filter$2(lockedColumns, colNum => colNum >= startAddress.column && colNum <= cellLength(rows[0]) + startAddress.column);\n const merge$1 = (startAddress, gridA, gridB, generator, comparator) => {\n const lockedColumns = getLockedColumnsFromGrid(gridA);\n const validStartAddress = getValidStartAddress(startAddress, gridA, lockedColumns);\n const gridBRows = extractGridDetails(gridB).rows;\n const lockedColumnsWithinBounds = getLockedColumnsWithinBounds(validStartAddress, gridBRows, lockedColumns);\n const result = measure(validStartAddress, gridA, gridBRows);\n return result.map(diff => {\n const delta = {\n ...diff,\n colDelta: diff.colDelta - lockedColumnsWithinBounds.length\n };\n const fittedGrid = tailor(gridA, delta, generator);\n const newLockedColumns = getLockedColumnsFromGrid(fittedGrid);\n const newLockedColumnsWithinBounds = getLockedColumnsWithinBounds(validStartAddress, gridBRows, newLockedColumns);\n return mergeTables(validStartAddress, fittedGrid, gridBRows, generator, comparator, newLockedColumnsWithinBounds);\n });\n };\n const insertCols = (index, gridA, gridB, generator, comparator) => {\n splitCols(gridA, index, comparator, generator.cell);\n const delta = measureHeight(gridB, gridA);\n const fittedNewGrid = tailor(gridB, delta, generator);\n const secondDelta = measureHeight(gridA, fittedNewGrid);\n const fittedOldGrid = tailor(gridA, secondDelta, generator);\n return map$1(fittedOldGrid, (gridRow, i) => {\n return addCells(gridRow, index, fittedNewGrid[i].cells);\n });\n };\n const insertRows = (index, gridA, gridB, generator, comparator) => {\n splitRows(gridA, index, comparator, generator.cell);\n const locked = getLockedColumnsFromGrid(gridA);\n const diff = measureWidth(gridA, gridB);\n const delta = {\n ...diff,\n colDelta: diff.colDelta - locked.length\n };\n const fittedOldGrid = tailor(gridA, delta, generator);\n const {\n cols: oldCols,\n rows: oldRows\n } = extractGridDetails(fittedOldGrid);\n const newLocked = getLockedColumnsFromGrid(fittedOldGrid);\n const secondDiff = measureWidth(gridB, gridA);\n const secondDelta = {\n ...secondDiff,\n colDelta: secondDiff.colDelta + newLocked.length\n };\n const fittedGridB = lockedColFill(gridB, generator, newLocked);\n const fittedNewGrid = tailor(fittedGridB, secondDelta, generator);\n return [\n ...oldCols,\n ...oldRows.slice(0, index),\n ...fittedNewGrid,\n ...oldRows.slice(index, oldRows.length)\n ];\n };\n\n const cloneRow = (row, cloneCell, comparator, substitution) => clone(row, elem => substitution(elem, comparator), cloneCell);\n const insertRowAt = (grid, index, example, comparator, substitution) => {\n const {rows, cols} = extractGridDetails(grid);\n const before = rows.slice(0, index);\n const after = rows.slice(index);\n const newRow = cloneRow(rows[example], (ex, c) => {\n const withinSpan = index > 0 && index < rows.length && comparator(getCellElement(rows[index - 1], c), getCellElement(rows[index], c));\n const ret = withinSpan ? getCell(rows[index], c) : elementnew(substitution(ex.element, comparator), true, ex.isLocked);\n return ret;\n }, comparator, substitution);\n return [\n ...cols,\n ...before,\n newRow,\n ...after\n ];\n };\n const getElementFor = (row, column, section, withinSpan, example, comparator, substitution) => {\n if (section === 'colgroup' || !withinSpan) {\n const cell = getCell(row, example);\n return elementnew(substitution(cell.element, comparator), true, false);\n } else {\n return getCell(row, column);\n }\n };\n const insertColumnAt = (grid, index, example, comparator, substitution) => map$1(grid, row => {\n const withinSpan = index > 0 && index < cellLength(row) && comparator(getCellElement(row, index - 1), getCellElement(row, index));\n const sub = getElementFor(row, index, row.section, withinSpan, example, comparator, substitution);\n return addCell(row, index, sub);\n });\n const deleteColumnsAt = (grid, columns) => bind$2(grid, row => {\n const existingCells = row.cells;\n const cells = foldr(columns, (acc, column) => column >= 0 && column < acc.length ? acc.slice(0, column).concat(acc.slice(column + 1)) : acc, existingCells);\n return cells.length > 0 ? [rowcells(row.element, cells, row.section, row.isNew)] : [];\n });\n const deleteRowsAt = (grid, start, finish) => {\n const {rows, cols} = extractGridDetails(grid);\n return [\n ...cols,\n ...rows.slice(0, start),\n ...rows.slice(finish + 1)\n ];\n };\n\n const notInStartRow = (grid, rowIndex, colIndex, comparator) => getCellElement(grid[rowIndex], colIndex) !== undefined && (rowIndex > 0 && comparator(getCellElement(grid[rowIndex - 1], colIndex), getCellElement(grid[rowIndex], colIndex)));\n const notInStartColumn = (row, index, comparator) => index > 0 && comparator(getCellElement(row, index - 1), getCellElement(row, index));\n const isDuplicatedCell = (grid, rowIndex, colIndex, comparator) => notInStartRow(grid, rowIndex, colIndex, comparator) || notInStartColumn(grid[rowIndex], colIndex, comparator);\n const rowReplacerPredicate = (targetRow, columnHeaders) => {\n const entireTableIsHeader = forall(columnHeaders, identity) && isHeaderCells(targetRow.cells);\n return entireTableIsHeader ? always : (cell, _rowIndex, colIndex) => {\n const type = name(cell.element);\n return !(type === 'th' && columnHeaders[colIndex]);\n };\n };\n const columnReplacePredicate = (targetColumn, rowHeaders) => {\n const entireTableIsHeader = forall(rowHeaders, identity) && isHeaderCells(targetColumn);\n return entireTableIsHeader ? always : (cell, rowIndex, _colIndex) => {\n const type = name(cell.element);\n return !(type === 'th' && rowHeaders[rowIndex]);\n };\n };\n const determineScope = (applyScope, cell, newScope, isInHeader) => {\n const hasSpan = scope => scope === 'row' ? hasRowspan(cell) : hasColspan(cell);\n const getScope = scope => hasSpan(scope) ? `${ scope }group` : scope;\n if (applyScope) {\n return isHeaderCell(cell) ? getScope(newScope) : null;\n } else if (isInHeader && isHeaderCell(cell)) {\n const oppositeScope = newScope === 'row' ? 'col' : 'row';\n return getScope(oppositeScope);\n } else {\n return null;\n }\n };\n const rowScopeGenerator = (applyScope, columnHeaders) => (cell, rowIndex, columnIndex) => Optional.some(determineScope(applyScope, cell.element, 'col', columnHeaders[columnIndex]));\n const columnScopeGenerator = (applyScope, rowHeaders) => (cell, rowIndex) => Optional.some(determineScope(applyScope, cell.element, 'row', rowHeaders[rowIndex]));\n const replace = (cell, comparator, substitute) => elementnew(substitute(cell.element, comparator), true, cell.isLocked);\n const replaceIn = (grid, targets, comparator, substitute, replacer, genScope, shouldReplace) => {\n const isTarget = cell => {\n return exists(targets, target => {\n return comparator(cell.element, target.element);\n });\n };\n return map$1(grid, (row, rowIndex) => {\n return mapCells(row, (cell, colIndex) => {\n if (isTarget(cell)) {\n const newCell = shouldReplace(cell, rowIndex, colIndex) ? replacer(cell, comparator, substitute) : cell;\n genScope(newCell, rowIndex, colIndex).each(scope => {\n setOptions(newCell.element, { scope: Optional.from(scope) });\n });\n return newCell;\n } else {\n return cell;\n }\n });\n });\n };\n const getColumnCells = (rows, columnIndex, comparator) => bind$2(rows, (row, i) => {\n return isDuplicatedCell(rows, i, columnIndex, comparator) ? [] : [getCell(row, columnIndex)];\n });\n const getRowCells = (rows, rowIndex, comparator) => {\n const targetRow = rows[rowIndex];\n return bind$2(targetRow.cells, (item, i) => {\n return isDuplicatedCell(rows, rowIndex, i, comparator) ? [] : [item];\n });\n };\n const replaceColumns = (grid, indexes, applyScope, comparator, substitution) => {\n const rows = extractGridDetails(grid).rows;\n const targets = bind$2(indexes, index => getColumnCells(rows, index, comparator));\n const rowHeaders = map$1(rows, row => isHeaderCells(row.cells));\n const shouldReplaceCell = columnReplacePredicate(targets, rowHeaders);\n const scopeGenerator = columnScopeGenerator(applyScope, rowHeaders);\n return replaceIn(grid, targets, comparator, substitution, replace, scopeGenerator, shouldReplaceCell);\n };\n const replaceRows = (grid, indexes, section, applyScope, comparator, substitution, tableSection) => {\n const {cols, rows} = extractGridDetails(grid);\n const targetRow = rows[indexes[0]];\n const targets = bind$2(indexes, index => getRowCells(rows, index, comparator));\n const columnHeaders = map$1(targetRow.cells, (_cell, index) => isHeaderCells(getColumnCells(rows, index, comparator)));\n const newRows = [...rows];\n each$2(indexes, index => {\n newRows[index] = tableSection.transformRow(rows[index], section);\n });\n const newGrid = [\n ...cols,\n ...newRows\n ];\n const shouldReplaceCell = rowReplacerPredicate(targetRow, columnHeaders);\n const scopeGenerator = rowScopeGenerator(applyScope, columnHeaders);\n return replaceIn(newGrid, targets, comparator, substitution, tableSection.transformCell, scopeGenerator, shouldReplaceCell);\n };\n const replaceCells = (grid, details, comparator, substitution) => {\n const rows = extractGridDetails(grid).rows;\n const targetCells = map$1(details, detail => getCell(rows[detail.row], detail.column));\n return replaceIn(grid, targetCells, comparator, substitution, replace, Optional.none, always);\n };\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$2(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$2(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$6 = 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 const ColumnContext = { ...adt$6 };\n\n const neighbours = (input, index) => {\n if (input.length === 0) {\n return ColumnContext.none();\n }\n if (input.length === 1) {\n return ColumnContext.only(0);\n }\n if (index === 0) {\n return ColumnContext.left(0, 1);\n }\n if (index === input.length - 1) {\n return ColumnContext.right(index - 1, index);\n }\n if (index > 0 && index < input.length - 1) {\n return ColumnContext.middle(index - 1, index, index + 1);\n }\n return ColumnContext.none();\n };\n const determine = (input, column, step, tableSize, resize) => {\n const result = input.slice(0);\n const context = neighbours(input, column);\n const onNone = constant(map$1(result, constant(0)));\n const onOnly = index => tableSize.singleColumnWidth(result[index], step);\n const onLeft = (index, next) => resize.calcLeftEdgeDeltas(result, index, next, step, tableSize.minCellWidth(), tableSize.isRelative);\n const onMiddle = (prev, index, next) => resize.calcMiddleDeltas(result, prev, index, next, step, tableSize.minCellWidth(), tableSize.isRelative);\n const onRight = (prev, index) => resize.calcRightEdgeDeltas(result, prev, index, step, tableSize.minCellWidth(), tableSize.isRelative);\n return context.fold(onNone, onOnly, onLeft, onMiddle, onRight);\n };\n\n const total = (start, end, measures) => {\n let r = 0;\n for (let i = start; i < end; i++) {\n r += measures[i] !== undefined ? measures[i] : 0;\n }\n return r;\n };\n const recalculateWidthForCells = (warehouse, widths) => {\n const all = Warehouse.justCells(warehouse);\n return map$1(all, cell => {\n const width = total(cell.column, cell.column + cell.colspan, widths);\n return {\n element: cell.element,\n width,\n colspan: cell.colspan\n };\n });\n };\n const recalculateWidthForColumns = (warehouse, widths) => {\n const groups = Warehouse.justColumns(warehouse);\n return map$1(groups, (column, index) => ({\n element: column.element,\n width: widths[index],\n colspan: column.colspan\n }));\n };\n const recalculateHeightForCells = (warehouse, heights) => {\n const all = Warehouse.justCells(warehouse);\n return map$1(all, cell => {\n const height = total(cell.row, cell.row + cell.rowspan, heights);\n return {\n element: cell.element,\n height,\n rowspan: cell.rowspan\n };\n });\n };\n const matchRowHeight = (warehouse, heights) => {\n return map$1(warehouse.all, (row, i) => {\n return {\n element: row.element,\n height: heights[i]\n };\n });\n };\n\n const sumUp = newSize => foldr(newSize, (b, a) => b + a, 0);\n const recalculate = (warehouse, widths) => {\n if (Warehouse.hasColumns(warehouse)) {\n return recalculateWidthForColumns(warehouse, widths);\n } else {\n return recalculateWidthForCells(warehouse, widths);\n }\n };\n const recalculateAndApply = (warehouse, widths, tableSize) => {\n const newSizes = recalculate(warehouse, widths);\n each$2(newSizes, cell => {\n tableSize.setElementWidth(cell.element, cell.width);\n });\n };\n const adjustWidth = (table, delta, index, resizing, tableSize) => {\n const warehouse = Warehouse.fromTable(table);\n const step = tableSize.getCellDelta(delta);\n const widths = tableSize.getWidths(warehouse, tableSize);\n const isLastColumn = index === warehouse.grid.columns - 1;\n const clampedStep = resizing.clampTableDelta(widths, index, step, tableSize.minCellWidth(), isLastColumn);\n const deltas = determine(widths, index, clampedStep, tableSize, resizing);\n const newWidths = map$1(deltas, (dx, i) => dx + widths[i]);\n recalculateAndApply(warehouse, newWidths, tableSize);\n resizing.resizeTable(tableSize.adjustTableWidth, clampedStep, isLastColumn);\n };\n const adjustHeight = (table, delta, index, direction) => {\n const warehouse = Warehouse.fromTable(table);\n const heights = getPixelHeights(warehouse, table, direction);\n const newHeights = map$1(heights, (dy, i) => index === i ? Math.max(delta + dy, minHeight()) : dy);\n const newCellSizes = recalculateHeightForCells(warehouse, newHeights);\n const newRowSizes = matchRowHeight(warehouse, newHeights);\n each$2(newRowSizes, row => {\n setHeight(row.element, row.height);\n });\n each$2(newCellSizes, cell => {\n setHeight(cell.element, cell.height);\n });\n const total = sumUp(newHeights);\n setHeight(table, total);\n };\n const adjustAndRedistributeWidths$1 = (_table, list, details, tableSize, resizeBehaviour) => {\n const warehouse = Warehouse.generate(list);\n const sizes = tableSize.getWidths(warehouse, tableSize);\n const tablePixelWidth = tableSize.pixelWidth();\n const {newSizes, delta} = resizeBehaviour.calcRedestributedWidths(sizes, tablePixelWidth, details.pixelDelta, tableSize.isRelative);\n recalculateAndApply(warehouse, newSizes, tableSize);\n tableSize.adjustTableWidth(delta);\n };\n const adjustWidthTo = (_table, list, _info, tableSize) => {\n const warehouse = Warehouse.generate(list);\n const widths = tableSize.getWidths(warehouse, tableSize);\n recalculateAndApply(warehouse, widths, tableSize);\n };\n\n const uniqueColumns = details => {\n const uniqueCheck = (rest, detail) => {\n const columnExists = exists(rest, currentDetail => currentDetail.column === detail.column);\n return columnExists ? rest : rest.concat([detail]);\n };\n return foldl(details, uniqueCheck, []).sort((detailA, detailB) => detailA.column - detailB.column);\n };\n\n const isCol = isTag('col');\n const isColgroup = isTag('colgroup');\n const isRow$1 = element => name(element) === 'tr' || isColgroup(element);\n const elementToData = element => {\n const colspan = getAttrValue(element, 'colspan', 1);\n const rowspan = getAttrValue(element, 'rowspan', 1);\n return {\n element,\n colspan,\n rowspan\n };\n };\n const modification = (generators, toData = elementToData) => {\n const nuCell = data => isCol(data.element) ? generators.col(data) : generators.cell(data);\n const nuRow = data => isColgroup(data.element) ? generators.colgroup(data) : generators.row(data);\n const add = element => {\n if (isRow$1(element)) {\n return nuRow({ element });\n } else {\n const cell = element;\n const replacement = nuCell(toData(cell));\n recent = Optional.some({\n item: cell,\n replacement\n });\n return replacement;\n }\n };\n let recent = Optional.none();\n const getOrInit = (element, comparator) => {\n return recent.fold(() => {\n return add(element);\n }, p => {\n return comparator(element, p.item) ? p.replacement : add(element);\n });\n };\n return { getOrInit };\n };\n const transform$1 = tag => {\n return generators => {\n const list = [];\n const find = (element, comparator) => {\n return find$1(list, x => {\n return comparator(x.item, element);\n });\n };\n const makeNew = element => {\n const attrs = tag === 'td' ? { scope: null } : {};\n const cell = generators.replace(element, tag, attrs);\n list.push({\n item: element,\n sub: cell\n });\n return cell;\n };\n const replaceOrInit = (element, comparator) => {\n if (isRow$1(element) || isCol(element)) {\n return element;\n } else {\n const cell = element;\n return find(cell, comparator).fold(() => {\n return makeNew(cell);\n }, p => {\n return comparator(element, p.item) ? p.sub : makeNew(cell);\n });\n }\n };\n return { replaceOrInit };\n };\n };\n const getScopeAttribute = cell => getOpt(cell, 'scope').map(attribute => attribute.substr(0, 3));\n const merging = generators => {\n const unmerge = cell => {\n const scope = getScopeAttribute(cell);\n scope.each(attribute => set$2(cell, 'scope', attribute));\n return () => {\n const raw = generators.cell({\n element: cell,\n colspan: 1,\n rowspan: 1\n });\n remove$5(raw, 'width');\n remove$5(cell, 'width');\n scope.each(attribute => set$2(raw, 'scope', attribute));\n return raw;\n };\n };\n const merge = cells => {\n const getScopeProperty = () => {\n const stringAttributes = cat(map$1(cells, getScopeAttribute));\n if (stringAttributes.length === 0) {\n return Optional.none();\n } else {\n const baseScope = stringAttributes[0];\n const scopes = [\n 'row',\n 'col'\n ];\n const isMixed = exists(stringAttributes, attribute => {\n return attribute !== baseScope && contains$2(scopes, attribute);\n });\n return isMixed ? Optional.none() : Optional.from(baseScope);\n }\n };\n remove$5(cells[0], 'width');\n getScopeProperty().fold(() => remove$7(cells[0], 'scope'), attribute => set$2(cells[0], 'scope', attribute + 'group'));\n return constant(cells[0]);\n };\n return {\n unmerge,\n merge\n };\n };\n const Generators = {\n modification,\n transform: transform$1,\n merging\n };\n\n const blockList = [\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 'table',\n 'thead',\n 'tfoot',\n 'tbody',\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 const isList$1 = (universe, item) => {\n const tagName = universe.property().name(item);\n return contains$2([\n 'ol',\n 'ul'\n ], tagName);\n };\n const isBlock$1 = (universe, item) => {\n const tagName = universe.property().name(item);\n return contains$2(blockList, tagName);\n };\n const isEmptyTag$1 = (universe, item) => {\n return contains$2([\n 'br',\n 'img',\n 'hr',\n 'input'\n ], universe.property().name(item));\n };\n\n const universe$1 = DomUniverse();\n const isBlock = element => {\n return isBlock$1(universe$1, element);\n };\n const isList = element => {\n return isList$1(universe$1, element);\n };\n const isEmptyTag = element => {\n return isEmptyTag$1(universe$1, element);\n };\n\n const merge = cells => {\n const isBr = isTag('br');\n const advancedBr = children => {\n return forall(children, c => {\n return isBr(c) || isText(c) && get$6(c).trim().length === 0;\n });\n };\n const isListItem = el => {\n return name(el) === 'li' || ancestor$2(el, isList).isSome();\n };\n const siblingIsBlock = el => {\n return nextSibling(el).map(rightSibling => {\n if (isBlock(rightSibling)) {\n return true;\n }\n if (isEmptyTag(rightSibling)) {\n return name(rightSibling) === 'img' ? false : true;\n }\n return false;\n }).getOr(false);\n };\n const markCell = cell => {\n return last$1(cell).bind(rightEdge => {\n const rightSiblingIsBlock = siblingIsBlock(rightEdge);\n return parent(rightEdge).map(parent => {\n return rightSiblingIsBlock === true || isListItem(parent) || isBr(rightEdge) || isBlock(parent) && !eq$1(cell, parent) ? [] : [SugarElement.fromTag('br')];\n });\n }).getOr([]);\n };\n const markContent = () => {\n const content = bind$2(cells, cell => {\n const children = children$2(cell);\n return advancedBr(children) ? [] : children.concat(markCell(cell));\n });\n return content.length === 0 ? [SugarElement.fromTag('br')] : content;\n };\n const contents = markContent();\n empty(cells[0]);\n append(cells[0], contents);\n };\n\n const isEditable = elem => isEditable$1(elem, true);\n const prune = table => {\n const cells = cells$1(table);\n if (cells.length === 0) {\n remove$6(table);\n }\n };\n const outcome = (grid, cursor) => ({\n grid,\n cursor\n });\n const findEditableCursorPosition = rows => findMap(rows, row => findMap(row.cells, cell => {\n const elem = cell.element;\n return someIf(isEditable(elem), elem);\n }));\n const elementFromGrid = (grid, row, column) => {\n var _a, _b;\n const rows = extractGridDetails(grid).rows;\n return Optional.from((_b = (_a = rows[row]) === null || _a === void 0 ? void 0 : _a.cells[column]) === null || _b === void 0 ? void 0 : _b.element).filter(isEditable).orThunk(() => findEditableCursorPosition(rows));\n };\n const bundle = (grid, row, column) => {\n const cursorElement = elementFromGrid(grid, row, column);\n return outcome(grid, cursorElement);\n };\n const uniqueRows = details => {\n const rowCompilation = (rest, detail) => {\n const rowExists = exists(rest, currentDetail => currentDetail.row === detail.row);\n return rowExists ? rest : rest.concat([detail]);\n };\n return foldl(details, rowCompilation, []).sort((detailA, detailB) => detailA.row - detailB.row);\n };\n const opInsertRowsBefore = (grid, details, comparator, genWrappers) => {\n const targetIndex = details[0].row;\n const rows = uniqueRows(details);\n const newGrid = foldr(rows, (acc, row) => {\n const newG = insertRowAt(acc.grid, targetIndex, row.row + acc.delta, comparator, genWrappers.getOrInit);\n return {\n grid: newG,\n delta: acc.delta + 1\n };\n }, {\n grid,\n delta: 0\n }).grid;\n return bundle(newGrid, targetIndex, details[0].column);\n };\n const opInsertRowsAfter = (grid, details, comparator, genWrappers) => {\n const rows = uniqueRows(details);\n const target = rows[rows.length - 1];\n const targetIndex = target.row + target.rowspan;\n const newGrid = foldr(rows, (newG, row) => {\n return insertRowAt(newG, targetIndex, row.row, comparator, genWrappers.getOrInit);\n }, grid);\n return bundle(newGrid, targetIndex, details[0].column);\n };\n const opInsertColumnsBefore = (grid, extractDetail, comparator, genWrappers) => {\n const details = extractDetail.details;\n const columns = uniqueColumns(details);\n const targetIndex = columns[0].column;\n const newGrid = foldr(columns, (acc, col) => {\n const newG = insertColumnAt(acc.grid, targetIndex, col.column + acc.delta, comparator, genWrappers.getOrInit);\n return {\n grid: newG,\n delta: acc.delta + 1\n };\n }, {\n grid,\n delta: 0\n }).grid;\n return bundle(newGrid, details[0].row, targetIndex);\n };\n const opInsertColumnsAfter = (grid, extractDetail, comparator, genWrappers) => {\n const details = extractDetail.details;\n const target = details[details.length - 1];\n const targetIndex = target.column + target.colspan;\n const columns = uniqueColumns(details);\n const newGrid = foldr(columns, (newG, col) => {\n return insertColumnAt(newG, targetIndex, col.column, comparator, genWrappers.getOrInit);\n }, grid);\n return bundle(newGrid, details[0].row, targetIndex);\n };\n const opMakeColumnsHeader = (initialGrid, details, comparator, genWrappers) => {\n const columns = uniqueColumns(details);\n const columnIndexes = map$1(columns, detail => detail.column);\n const newGrid = replaceColumns(initialGrid, columnIndexes, true, comparator, genWrappers.replaceOrInit);\n return bundle(newGrid, details[0].row, details[0].column);\n };\n const opMakeCellsHeader = (initialGrid, details, comparator, genWrappers) => {\n const newGrid = replaceCells(initialGrid, details, comparator, genWrappers.replaceOrInit);\n return bundle(newGrid, details[0].row, details[0].column);\n };\n const opUnmakeColumnsHeader = (initialGrid, details, comparator, genWrappers) => {\n const columns = uniqueColumns(details);\n const columnIndexes = map$1(columns, detail => detail.column);\n const newGrid = replaceColumns(initialGrid, columnIndexes, false, comparator, genWrappers.replaceOrInit);\n return bundle(newGrid, details[0].row, details[0].column);\n };\n const opUnmakeCellsHeader = (initialGrid, details, comparator, genWrappers) => {\n const newGrid = replaceCells(initialGrid, details, comparator, genWrappers.replaceOrInit);\n return bundle(newGrid, details[0].row, details[0].column);\n };\n const makeRowsSection = (section, applyScope) => (initialGrid, details, comparator, genWrappers, tableSection) => {\n const rows = uniqueRows(details);\n const rowIndexes = map$1(rows, detail => detail.row);\n const newGrid = replaceRows(initialGrid, rowIndexes, section, applyScope, comparator, genWrappers.replaceOrInit, tableSection);\n return bundle(newGrid, details[0].row, details[0].column);\n };\n const opMakeRowsHeader = makeRowsSection('thead', true);\n const opMakeRowsBody = makeRowsSection('tbody', false);\n const opMakeRowsFooter = makeRowsSection('tfoot', false);\n const opEraseColumns = (grid, extractDetail, _comparator, _genWrappers) => {\n const columns = uniqueColumns(extractDetail.details);\n const newGrid = deleteColumnsAt(grid, map$1(columns, column => column.column));\n const maxColIndex = newGrid.length > 0 ? newGrid[0].cells.length - 1 : 0;\n return bundle(newGrid, columns[0].row, Math.min(columns[0].column, maxColIndex));\n };\n const opEraseRows = (grid, details, _comparator, _genWrappers) => {\n const rows = uniqueRows(details);\n const newGrid = deleteRowsAt(grid, rows[0].row, rows[rows.length - 1].row);\n const maxRowIndex = newGrid.length > 0 ? newGrid.length - 1 : 0;\n return bundle(newGrid, Math.min(details[0].row, maxRowIndex), details[0].column);\n };\n const opMergeCells = (grid, mergable, comparator, genWrappers) => {\n const cells = mergable.cells;\n merge(cells);\n const newGrid = merge$2(grid, mergable.bounds, comparator, genWrappers.merge(cells));\n return outcome(newGrid, Optional.from(cells[0]));\n };\n const opUnmergeCells = (grid, unmergable, comparator, genWrappers) => {\n const unmerge$1 = (b, cell) => unmerge(b, cell, comparator, genWrappers.unmerge(cell));\n const newGrid = foldr(unmergable, unmerge$1, grid);\n return outcome(newGrid, Optional.from(unmergable[0]));\n };\n const opPasteCells = (grid, pasteDetails, comparator, _genWrappers) => {\n const gridify = (table, generators) => {\n const wh = Warehouse.fromTable(table);\n return toGrid(wh, generators, true);\n };\n const gridB = gridify(pasteDetails.clipboard, pasteDetails.generators);\n const startAddress = address(pasteDetails.row, pasteDetails.column);\n const mergedGrid = merge$1(startAddress, grid, gridB, pasteDetails.generators, comparator);\n return mergedGrid.fold(() => outcome(grid, Optional.some(pasteDetails.element)), newGrid => {\n return bundle(newGrid, pasteDetails.row, pasteDetails.column);\n });\n };\n const gridifyRows = (rows, generators, context) => {\n const pasteDetails = fromPastedRows(rows, context.section);\n const wh = Warehouse.generate(pasteDetails);\n return toGrid(wh, generators, true);\n };\n const opPasteColsBefore = (grid, pasteDetails, comparator, _genWrappers) => {\n const rows = extractGridDetails(grid).rows;\n const index = pasteDetails.cells[0].column;\n const context = rows[pasteDetails.cells[0].row];\n const gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);\n const mergedGrid = insertCols(index, grid, gridB, pasteDetails.generators, comparator);\n return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);\n };\n const opPasteColsAfter = (grid, pasteDetails, comparator, _genWrappers) => {\n const rows = extractGridDetails(grid).rows;\n const index = pasteDetails.cells[pasteDetails.cells.length - 1].column + pasteDetails.cells[pasteDetails.cells.length - 1].colspan;\n const context = rows[pasteDetails.cells[0].row];\n const gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);\n const mergedGrid = insertCols(index, grid, gridB, pasteDetails.generators, comparator);\n return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);\n };\n const opPasteRowsBefore = (grid, pasteDetails, comparator, _genWrappers) => {\n const rows = extractGridDetails(grid).rows;\n const index = pasteDetails.cells[0].row;\n const context = rows[index];\n const gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);\n const mergedGrid = insertRows(index, grid, gridB, pasteDetails.generators, comparator);\n return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);\n };\n const opPasteRowsAfter = (grid, pasteDetails, comparator, _genWrappers) => {\n const rows = extractGridDetails(grid).rows;\n const index = pasteDetails.cells[pasteDetails.cells.length - 1].row + pasteDetails.cells[pasteDetails.cells.length - 1].rowspan;\n const context = rows[pasteDetails.cells[0].row];\n const gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);\n const mergedGrid = insertRows(index, grid, gridB, pasteDetails.generators, comparator);\n return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);\n };\n const opGetColumnsType = (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 minColRange = selectedCells[0].column;\n const maxColRange = lastSelectedCell.column + lastSelectedCell.colspan;\n const selectedColumnCells = flatten(map$1(house.all, row => filter$2(row.cells, cell => cell.column >= minColRange && cell.column < maxColRange)));\n return findCommonCellType(selectedColumnCells);\n }).getOr('');\n };\n const opGetCellsType = (table, target) => {\n const house = Warehouse.fromTable(table);\n const details = onCells(house, target);\n return details.bind(findCommonCellType).getOr('');\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 resize = (table, list, details, behaviours) => adjustWidthTo(table, list, details, behaviours.sizing);\n const adjustAndRedistributeWidths = (table, list, details, behaviours) => adjustAndRedistributeWidths$1(table, list, details, behaviours.sizing, behaviours.resize);\n const firstColumnIsLocked = (_warehouse, details) => exists(details, detail => detail.column === 0 && detail.isLocked);\n const lastColumnIsLocked = (warehouse, details) => exists(details, detail => detail.column + detail.colspan >= warehouse.grid.columns && detail.isLocked);\n const getColumnsWidth = (warehouse, details) => {\n const columns$1 = columns(warehouse);\n const uniqueCols = uniqueColumns(details);\n return foldl(uniqueCols, (acc, detail) => {\n const column = columns$1[detail.column];\n const colWidth = column.map(getOuter$2).getOr(0);\n return acc + colWidth;\n }, 0);\n };\n const insertColumnsExtractor = before => (warehouse, target) => onCells(warehouse, target).filter(details => {\n const checkLocked = before ? firstColumnIsLocked : lastColumnIsLocked;\n return !checkLocked(warehouse, details);\n }).map(details => ({\n details,\n pixelDelta: getColumnsWidth(warehouse, details)\n }));\n const eraseColumnsExtractor = (warehouse, target) => onUnlockedCells(warehouse, target).map(details => ({\n details,\n pixelDelta: -getColumnsWidth(warehouse, details)\n }));\n const pasteColumnsExtractor = before => (warehouse, target) => onPasteByEditor(warehouse, target).filter(details => {\n const checkLocked = before ? firstColumnIsLocked : lastColumnIsLocked;\n return !checkLocked(warehouse, details.cells);\n });\n const headerCellGenerator = Generators.transform('th');\n const bodyCellGenerator = Generators.transform('td');\n const insertRowsBefore = run(opInsertRowsBefore, onCells, noop, noop, Generators.modification);\n const insertRowsAfter = run(opInsertRowsAfter, onCells, noop, noop, Generators.modification);\n const insertColumnsBefore = run(opInsertColumnsBefore, insertColumnsExtractor(true), adjustAndRedistributeWidths, noop, Generators.modification);\n const insertColumnsAfter = run(opInsertColumnsAfter, insertColumnsExtractor(false), adjustAndRedistributeWidths, noop, Generators.modification);\n const eraseColumns = run(opEraseColumns, eraseColumnsExtractor, adjustAndRedistributeWidths, prune, Generators.modification);\n const eraseRows = run(opEraseRows, onCells, noop, prune, Generators.modification);\n const makeColumnsHeader = run(opMakeColumnsHeader, onUnlockedCells, noop, noop, headerCellGenerator);\n const unmakeColumnsHeader = run(opUnmakeColumnsHeader, onUnlockedCells, noop, noop, bodyCellGenerator);\n const makeRowsHeader = run(opMakeRowsHeader, onUnlockedCells, noop, noop, headerCellGenerator);\n const makeRowsBody = run(opMakeRowsBody, onUnlockedCells, noop, noop, bodyCellGenerator);\n const makeRowsFooter = run(opMakeRowsFooter, onUnlockedCells, noop, noop, bodyCellGenerator);\n const makeCellsHeader = run(opMakeCellsHeader, onUnlockedCells, noop, noop, headerCellGenerator);\n const unmakeCellsHeader = run(opUnmakeCellsHeader, onUnlockedCells, noop, noop, bodyCellGenerator);\n const mergeCells = run(opMergeCells, onUnlockedMergable, resize, noop, Generators.merging);\n const unmergeCells = run(opUnmergeCells, onUnlockedUnmergable, resize, noop, Generators.merging);\n const pasteCells = run(opPasteCells, onPaste, resize, noop, Generators.modification);\n const pasteColsBefore = run(opPasteColsBefore, pasteColumnsExtractor(true), noop, noop, Generators.modification);\n const pasteColsAfter = run(opPasteColsAfter, pasteColumnsExtractor(false), noop, noop, Generators.modification);\n const pasteRowsBefore = run(opPasteRowsBefore, onPasteByEditor, noop, noop, Generators.modification);\n const pasteRowsAfter = run(opPasteRowsAfter, onPasteByEditor, noop, noop, Generators.modification);\n const getColumnsType = opGetColumnsType;\n const getCellsType = opGetCellsType;\n const getRowsType = opGetRowsType;\n\n const fireNewRow = (editor, row) => editor.dispatch('NewRow', { node: row });\n const fireNewCell = (editor, cell) => editor.dispatch('NewCell', { node: cell });\n const fireTableModified = (editor, table, data) => {\n editor.dispatch('TableModified', {\n ...data,\n table\n });\n };\n const fireTableSelectionChange = (editor, cells, start, finish, otherCells) => {\n editor.dispatch('TableSelectionChange', {\n cells,\n start,\n finish,\n otherCells\n });\n };\n const fireTableSelectionClear = editor => {\n editor.dispatch('TableSelectionClear');\n };\n const fireObjectResizeStart = (editor, target, width, height, origin) => {\n editor.dispatch('ObjectResizeStart', {\n target,\n width,\n height,\n origin\n });\n };\n const fireObjectResized = (editor, target, width, height, origin) => {\n editor.dispatch('ObjectResized', {\n target,\n width,\n height,\n origin\n });\n };\n const styleModified = {\n structure: false,\n style: true\n };\n const structureModified = {\n structure: true,\n style: false\n };\n const styleAndStructureModified = {\n structure: true,\n style: true\n };\n\n const option = name => editor => editor.options.get(name);\n const determineDefaultTableStyles = (editor, defaultStyles) => {\n var _a;\n if (isTablePixelsForced(editor)) {\n const dom = editor.dom;\n const parentBlock = (_a = dom.getParent(editor.selection.getStart(), dom.isBlock)) !== null && _a !== void 0 ? _a : editor.getBody();\n const contentWidth = getInner(SugarElement.fromDom(parentBlock));\n return {\n ...defaultStyles,\n width: contentWidth + 'px'\n };\n } else if (isTableResponsiveForced(editor)) {\n return filter$1(defaultStyles, (_value, key) => key !== 'width');\n } else {\n return defaultStyles;\n }\n };\n const register = editor => {\n const registerOption = editor.options.register;\n registerOption('table_clone_elements', { processor: 'string[]' });\n registerOption('table_use_colgroups', {\n processor: 'boolean',\n default: true\n });\n registerOption('table_header_type', {\n processor: value => {\n const valid = contains$2([\n 'section',\n 'cells',\n 'sectionCells',\n 'auto'\n ], value);\n return valid ? {\n value,\n valid\n } : {\n valid: false,\n message: 'Must be one of: section, cells, sectionCells or auto.'\n };\n },\n default: 'section'\n });\n registerOption('table_sizing_mode', {\n processor: 'string',\n default: 'auto'\n });\n registerOption('table_default_attributes', {\n processor: 'object',\n default: { border: '1' }\n });\n registerOption('table_default_styles', {\n processor: 'object',\n default: {\n 'border-collapse': 'collapse',\n 'width': '100%'\n }\n });\n registerOption('table_column_resizing', {\n processor: value => {\n const valid = contains$2([\n 'preservetable',\n 'resizetable'\n ], value);\n return valid ? {\n value,\n valid\n } : {\n valid: false,\n message: 'Must be preservetable, or resizetable.'\n };\n },\n default: 'preservetable'\n });\n registerOption('table_resize_bars', {\n processor: 'boolean',\n default: true\n });\n };\n const getTableCloneElements = editor => {\n return Optional.from(editor.options.get('table_clone_elements'));\n };\n const hasTableObjectResizing = editor => {\n const objectResizing = editor.options.get('object_resizing');\n return contains$2(objectResizing.split(','), 'table');\n };\n const getTableHeaderType = option('table_header_type');\n const getTableColumnResizingBehaviour = option('table_column_resizing');\n const isPreserveTableColumnResizing = editor => getTableColumnResizingBehaviour(editor) === 'preservetable';\n const isResizeTableColumnResizing = editor => getTableColumnResizingBehaviour(editor) === 'resizetable';\n const getTableSizingMode = option('table_sizing_mode');\n const isTablePercentagesForced = editor => getTableSizingMode(editor) === 'relative';\n const isTablePixelsForced = editor => getTableSizingMode(editor) === 'fixed';\n const isTableResponsiveForced = editor => getTableSizingMode(editor) === 'responsive';\n const hasTableResizeBars = option('table_resize_bars');\n const getTableDefaultAttributes = option('table_default_attributes');\n const getTableDefaultStyles = editor => {\n const options = editor.options;\n const defaultStyles = options.get('table_default_styles');\n return options.isSet('table_default_styles') ? defaultStyles : determineDefaultTableStyles(editor, defaultStyles);\n };\n const tableUseColumnGroup = option('table_use_colgroups');\n\n const get$5 = (editor, table) => {\n if (isTablePercentagesForced(editor)) {\n return TableSize.percentageSize(table);\n } else if (isTablePixelsForced(editor)) {\n return TableSize.pixelSize(table);\n } else {\n return TableSize.getTableSize(table);\n }\n };\n\n const TableActions = (editor, resizeHandler, cellSelectionHandler) => {\n const isTableBody = editor => name(getBody(editor)) === 'table';\n const lastRowGuard = table => isTableBody(editor) === false || getGridSize(table).rows > 1;\n const lastColumnGuard = table => isTableBody(editor) === false || getGridSize(table).columns > 1;\n const cloneFormats = getTableCloneElements(editor);\n const colMutationOp = isResizeTableColumnResizing(editor) ? noop : halve;\n const getTableSectionType = table => {\n switch (getTableHeaderType(editor)) {\n case 'section':\n return TableSection.section();\n case 'sectionCells':\n return TableSection.sectionCells();\n case 'cells':\n return TableSection.cells();\n default:\n return TableSection.getTableSectionType(table, 'section');\n }\n };\n const setSelectionFromAction = (table, result) => result.cursor.fold(() => {\n const cells = cells$1(table);\n return head(cells).filter(inBody).map(firstCell => {\n cellSelectionHandler.clearSelectedCells(table.dom);\n const rng = editor.dom.createRng();\n rng.selectNode(firstCell.dom);\n editor.selection.setRng(rng);\n set$2(firstCell, 'data-mce-selected', '1');\n return rng;\n });\n }, cell => {\n const des = freefallRtl(cell);\n const rng = editor.dom.createRng();\n rng.setStart(des.element.dom, des.offset);\n rng.setEnd(des.element.dom, des.offset);\n editor.selection.setRng(rng);\n cellSelectionHandler.clearSelectedCells(table.dom);\n return Optional.some(rng);\n });\n const execute = (operation, guard, mutate, effect) => (table, target, noEvents = false) => {\n removeDataStyle(table);\n const doc = SugarElement.fromDom(editor.getDoc());\n const generators = cellOperations(mutate, doc, cloneFormats);\n const behaviours = {\n sizing: get$5(editor, table),\n resize: isResizeTableColumnResizing(editor) ? resizeTable() : preserveTable(),\n section: getTableSectionType(table)\n };\n return guard(table) ? operation(table, target, generators, behaviours).bind(result => {\n resizeHandler.refresh(table.dom);\n each$2(result.newRows, row => {\n fireNewRow(editor, row.dom);\n });\n each$2(result.newCells, cell => {\n fireNewCell(editor, cell.dom);\n });\n const range = setSelectionFromAction(table, result);\n if (inBody(table)) {\n removeDataStyle(table);\n if (!noEvents) {\n fireTableModified(editor, table.dom, effect);\n }\n }\n return range.map(rng => ({\n rng,\n effect\n }));\n }) : Optional.none();\n };\n const deleteRow = execute(eraseRows, lastRowGuard, noop, structureModified);\n const deleteColumn = execute(eraseColumns, lastColumnGuard, noop, structureModified);\n const insertRowsBefore$1 = execute(insertRowsBefore, always, noop, structureModified);\n const insertRowsAfter$1 = execute(insertRowsAfter, always, noop, structureModified);\n const insertColumnsBefore$1 = execute(insertColumnsBefore, always, colMutationOp, structureModified);\n const insertColumnsAfter$1 = execute(insertColumnsAfter, always, colMutationOp, structureModified);\n const mergeCells$1 = execute(mergeCells, always, noop, structureModified);\n const unmergeCells$1 = execute(unmergeCells, always, noop, structureModified);\n const pasteColsBefore$1 = execute(pasteColsBefore, always, noop, structureModified);\n const pasteColsAfter$1 = execute(pasteColsAfter, always, noop, structureModified);\n const pasteRowsBefore$1 = execute(pasteRowsBefore, always, noop, structureModified);\n const pasteRowsAfter$1 = execute(pasteRowsAfter, always, noop, structureModified);\n const pasteCells$1 = execute(pasteCells, always, noop, styleAndStructureModified);\n const makeCellsHeader$1 = execute(makeCellsHeader, always, noop, structureModified);\n const unmakeCellsHeader$1 = execute(unmakeCellsHeader, always, noop, structureModified);\n const makeColumnsHeader$1 = execute(makeColumnsHeader, always, noop, structureModified);\n const unmakeColumnsHeader$1 = execute(unmakeColumnsHeader, always, noop, structureModified);\n const makeRowsHeader$1 = execute(makeRowsHeader, always, noop, structureModified);\n const makeRowsBody$1 = execute(makeRowsBody, always, noop, structureModified);\n const makeRowsFooter$1 = execute(makeRowsFooter, always, noop, structureModified);\n const getTableCellType = getCellsType;\n const getTableColType = getColumnsType;\n const getTableRowType = getRowsType;\n return {\n deleteRow,\n deleteColumn,\n insertRowsBefore: insertRowsBefore$1,\n insertRowsAfter: insertRowsAfter$1,\n insertColumnsBefore: insertColumnsBefore$1,\n insertColumnsAfter: insertColumnsAfter$1,\n mergeCells: mergeCells$1,\n unmergeCells: unmergeCells$1,\n pasteColsBefore: pasteColsBefore$1,\n pasteColsAfter: pasteColsAfter$1,\n pasteRowsBefore: pasteRowsBefore$1,\n pasteRowsAfter: pasteRowsAfter$1,\n pasteCells: pasteCells$1,\n makeCellsHeader: makeCellsHeader$1,\n unmakeCellsHeader: unmakeCellsHeader$1,\n makeColumnsHeader: makeColumnsHeader$1,\n unmakeColumnsHeader: unmakeColumnsHeader$1,\n makeRowsHeader: makeRowsHeader$1,\n makeRowsBody: makeRowsBody$1,\n makeRowsFooter: makeRowsFooter$1,\n getTableRowType,\n getTableCellType,\n getTableColType\n };\n };\n\n const constrainSpan = (element, property, value) => {\n const currentColspan = getAttrValue(element, property, 1);\n if (value === 1 || currentColspan <= 1) {\n remove$7(element, property);\n } else {\n set$2(element, property, Math.min(value, currentColspan));\n }\n };\n const generateColGroup = (house, minColRange, maxColRange) => {\n if (Warehouse.hasColumns(house)) {\n const colsToCopy = filter$2(Warehouse.justColumns(house), col => col.column >= minColRange && col.column < maxColRange);\n const copiedCols = map$1(colsToCopy, c => {\n const clonedCol = deep(c.element);\n constrainSpan(clonedCol, 'span', maxColRange - minColRange);\n return clonedCol;\n });\n const fakeColgroup = SugarElement.fromTag('colgroup');\n append(fakeColgroup, copiedCols);\n return [fakeColgroup];\n } else {\n return [];\n }\n };\n const generateRows = (house, minColRange, maxColRange) => map$1(house.all, row => {\n const cellsToCopy = filter$2(row.cells, cell => cell.column >= minColRange && cell.column < maxColRange);\n const copiedCells = map$1(cellsToCopy, cell => {\n const clonedCell = deep(cell.element);\n constrainSpan(clonedCell, 'colspan', maxColRange - minColRange);\n return clonedCell;\n });\n const fakeTR = SugarElement.fromTag('tr');\n append(fakeTR, copiedCells);\n return fakeTR;\n });\n const copyCols = (table, target) => {\n const house = Warehouse.fromTable(table);\n const details = onUnlockedCells(house, target);\n return details.map(selectedCells => {\n const lastSelectedCell = selectedCells[selectedCells.length - 1];\n const minColRange = selectedCells[0].column;\n const maxColRange = lastSelectedCell.column + lastSelectedCell.colspan;\n const fakeColGroups = generateColGroup(house, minColRange, maxColRange);\n const fakeRows = generateRows(house, minColRange, maxColRange);\n return [\n ...fakeColGroups,\n ...fakeRows\n ];\n });\n };\n\n const copyRows = (table, target, generators) => {\n const warehouse = Warehouse.fromTable(table);\n const details = onCells(warehouse, target);\n return details.bind(selectedCells => {\n const grid = toGrid(warehouse, generators, false);\n const rows = extractGridDetails(grid).rows;\n const slicedGrid = rows.slice(selectedCells[0].row, selectedCells[selectedCells.length - 1].row + selectedCells[selectedCells.length - 1].rowspan);\n const filteredGrid = bind$2(slicedGrid, row => {\n const newCells = filter$2(row.cells, cell => !cell.isLocked);\n return newCells.length > 0 ? [{\n ...row,\n cells: newCells\n }] : [];\n });\n const slicedDetails = toDetailList(filteredGrid);\n return someIf(slicedDetails.length > 0, slicedDetails);\n }).map(slicedDetails => copy(slicedDetails));\n };\n\n const adt$5 = Adt.generate([\n { invalid: ['raw'] },\n { pixels: ['value'] },\n { percent: ['value'] }\n ]);\n const validateFor = (suffix, type, value) => {\n const rawAmount = value.substring(0, value.length - suffix.length);\n const amount = parseFloat(rawAmount);\n return rawAmount === amount.toString() ? type(amount) : adt$5.invalid(value);\n };\n const from = value => {\n if (endsWith(value, '%')) {\n return validateFor('%', adt$5.percent, value);\n }\n if (endsWith(value, 'px')) {\n return validateFor('px', adt$5.pixels, value);\n }\n return adt$5.invalid(value);\n };\n const Size = {\n ...adt$5,\n from\n };\n\n const redistributeToPercent = (widths, totalWidth) => {\n return map$1(widths, w => {\n const colType = Size.from(w);\n return colType.fold(() => {\n return w;\n }, px => {\n const ratio = px / totalWidth * 100;\n return ratio + '%';\n }, pc => {\n return pc + '%';\n });\n });\n };\n const redistributeToPx = (widths, totalWidth, newTotalWidth) => {\n const scale = newTotalWidth / totalWidth;\n return map$1(widths, w => {\n const colType = Size.from(w);\n return colType.fold(() => {\n return w;\n }, px => {\n return px * scale + 'px';\n }, pc => {\n return pc / 100 * newTotalWidth + 'px';\n });\n });\n };\n const redistributeEmpty = (newWidthType, columns) => {\n const f = newWidthType.fold(() => constant(''), pixels => {\n const num = pixels / columns;\n return constant(num + 'px');\n }, () => {\n const num = 100 / columns;\n return constant(num + '%');\n });\n return range$1(columns, f);\n };\n const redistributeValues = (newWidthType, widths, totalWidth) => {\n return newWidthType.fold(() => {\n return widths;\n }, px => {\n return redistributeToPx(widths, totalWidth, px);\n }, _pc => {\n return redistributeToPercent(widths, totalWidth);\n });\n };\n const redistribute$1 = (widths, totalWidth, newWidth) => {\n const newType = Size.from(newWidth);\n const floats = forall(widths, s => {\n return s === '0px';\n }) ? redistributeEmpty(newType, widths.length) : redistributeValues(newType, widths, totalWidth);\n return normalize(floats);\n };\n const sum = (values, fallback) => {\n if (values.length === 0) {\n return fallback;\n }\n return foldr(values, (rest, v) => {\n return Size.from(v).fold(constant(0), identity, identity) + rest;\n }, 0);\n };\n const roundDown = (num, unit) => {\n const floored = Math.floor(num);\n return {\n value: floored + unit,\n remainder: num - floored\n };\n };\n const add$3 = (value, amount) => {\n return Size.from(value).fold(constant(value), px => {\n return px + amount + 'px';\n }, pc => {\n return pc + amount + '%';\n });\n };\n const normalize = values => {\n if (values.length === 0) {\n return values;\n }\n const scan = foldr(values, (rest, value) => {\n const info = Size.from(value).fold(() => ({\n value,\n remainder: 0\n }), num => roundDown(num, 'px'), num => ({\n value: num + '%',\n remainder: 0\n }));\n return {\n output: [info.value].concat(rest.output),\n remainder: rest.remainder + info.remainder\n };\n }, {\n output: [],\n remainder: 0\n });\n const r = scan.output;\n return r.slice(0, r.length - 1).concat([add$3(r[r.length - 1], Math.round(scan.remainder))]);\n };\n const validate = Size.from;\n\n const redistributeToW = (newWidths, cells, unit) => {\n each$2(cells, cell => {\n const widths = newWidths.slice(cell.column, cell.colspan + cell.column);\n const w = sum(widths, minWidth());\n set$1(cell.element, 'width', w + unit);\n });\n };\n const redistributeToColumns = (newWidths, columns, unit) => {\n each$2(columns, (column, index) => {\n const width = sum([newWidths[index]], minWidth());\n set$1(column.element, 'width', width + unit);\n });\n };\n const redistributeToH = (newHeights, rows, cells, unit) => {\n each$2(cells, cell => {\n const heights = newHeights.slice(cell.row, cell.rowspan + cell.row);\n const h = sum(heights, minHeight());\n set$1(cell.element, 'height', h + unit);\n });\n each$2(rows, (row, i) => {\n set$1(row.element, 'height', newHeights[i]);\n });\n };\n const getUnit = newSize => {\n return validate(newSize).fold(constant('px'), constant('px'), constant('%'));\n };\n const redistribute = (table, optWidth, optHeight) => {\n const warehouse = Warehouse.fromTable(table);\n const rows = warehouse.all;\n const cells = Warehouse.justCells(warehouse);\n const columns = Warehouse.justColumns(warehouse);\n optWidth.each(newWidth => {\n const widthUnit = getUnit(newWidth);\n const totalWidth = get$9(table);\n const oldWidths = getRawWidths(warehouse, table);\n const nuWidths = redistribute$1(oldWidths, totalWidth, newWidth);\n if (Warehouse.hasColumns(warehouse)) {\n redistributeToColumns(nuWidths, columns, widthUnit);\n } else {\n redistributeToW(nuWidths, cells, widthUnit);\n }\n set$1(table, 'width', newWidth);\n });\n optHeight.each(newHeight => {\n const hUnit = getUnit(newHeight);\n const totalHeight = get$8(table);\n const oldHeights = getRawHeights(warehouse, table, height);\n const nuHeights = redistribute$1(oldHeights, totalHeight, newHeight);\n redistributeToH(nuHeights, rows, cells, hUnit);\n set$1(table, 'height', newHeight);\n });\n };\n const isPercentSizing = isPercentSizing$1;\n const isPixelSizing = isPixelSizing$1;\n const isNoneSizing = isNoneSizing$1;\n\n const cleanupLegacyAttributes = element => {\n remove$7(element, 'width');\n };\n const convertToPercentSize = table => {\n const newWidth = getPercentTableWidth(table);\n redistribute(table, Optional.some(newWidth), Optional.none());\n cleanupLegacyAttributes(table);\n };\n const convertToPixelSize = table => {\n const newWidth = getPixelTableWidth(table);\n redistribute(table, Optional.some(newWidth), Optional.none());\n cleanupLegacyAttributes(table);\n };\n const convertToNoneSize = table => {\n remove$5(table, 'width');\n const columns = columns$1(table);\n const rowElements = columns.length > 0 ? columns : cells$1(table);\n each$2(rowElements, cell => {\n remove$5(cell, 'width');\n cleanupLegacyAttributes(cell);\n });\n cleanupLegacyAttributes(table);\n };\n\n const DefaultRenderOptions = {\n styles: {\n 'border-collapse': 'collapse',\n 'width': '100%'\n },\n attributes: { border: '1' },\n colGroups: false\n };\n const tableHeaderCell = () => SugarElement.fromTag('th');\n const tableCell = () => SugarElement.fromTag('td');\n const tableColumn = () => SugarElement.fromTag('col');\n const createRow = (columns, rowHeaders, columnHeaders, rowIndex) => {\n const tr = SugarElement.fromTag('tr');\n for (let j = 0; j < columns; j++) {\n const td = rowIndex < rowHeaders || j < columnHeaders ? tableHeaderCell() : tableCell();\n if (j < columnHeaders) {\n set$2(td, 'scope', 'row');\n }\n if (rowIndex < rowHeaders) {\n set$2(td, 'scope', 'col');\n }\n append$1(td, SugarElement.fromTag('br'));\n append$1(tr, td);\n }\n return tr;\n };\n const createGroupRow = columns => {\n const columnGroup = SugarElement.fromTag('colgroup');\n range$1(columns, () => append$1(columnGroup, tableColumn()));\n return columnGroup;\n };\n const createRows = (rows, columns, rowHeaders, columnHeaders) => range$1(rows, r => createRow(columns, rowHeaders, columnHeaders, r));\n const render = (rows, columns, rowHeaders, columnHeaders, headerType, renderOpts = DefaultRenderOptions) => {\n const table = SugarElement.fromTag('table');\n const rowHeadersGoInThead = headerType !== 'cells';\n setAll(table, renderOpts.styles);\n setAll$1(table, renderOpts.attributes);\n if (renderOpts.colGroups) {\n append$1(table, createGroupRow(columns));\n }\n const actualRowHeaders = Math.min(rows, rowHeaders);\n if (rowHeadersGoInThead && rowHeaders > 0) {\n const thead = SugarElement.fromTag('thead');\n append$1(table, thead);\n const theadRowHeaders = headerType === 'sectionCells' ? actualRowHeaders : 0;\n const theadRows = createRows(rowHeaders, columns, theadRowHeaders, columnHeaders);\n append(thead, theadRows);\n }\n const tbody = SugarElement.fromTag('tbody');\n append$1(table, tbody);\n const numRows = rowHeadersGoInThead ? rows - actualRowHeaders : rows;\n const numRowHeaders = rowHeadersGoInThead ? 0 : rowHeaders;\n const tbodyRows = createRows(numRows, columns, numRowHeaders, columnHeaders);\n append(tbody, tbodyRows);\n return table;\n };\n\n const get$4 = element => element.dom.innerHTML;\n const getOuter = element => {\n const container = SugarElement.fromTag('div');\n const clone = SugarElement.fromDom(element.dom.cloneNode(true));\n append$1(container, clone);\n return get$4(container);\n };\n\n const placeCaretInCell = (editor, cell) => {\n editor.selection.select(cell.dom, true);\n editor.selection.collapse(true);\n };\n const selectFirstCellInTable = (editor, tableElm) => {\n descendant(tableElm, 'td,th').each(curry(placeCaretInCell, editor));\n };\n const fireEvents = (editor, table) => {\n each$2(descendants(table, 'tr'), row => {\n fireNewRow(editor, row.dom);\n each$2(descendants(row, 'th,td'), cell => {\n fireNewCell(editor, cell.dom);\n });\n });\n };\n const isPercentage = width => isString(width) && width.indexOf('%') !== -1;\n const insert = (editor, columns, rows, colHeaders, rowHeaders) => {\n const defaultStyles = getTableDefaultStyles(editor);\n const options = {\n styles: defaultStyles,\n attributes: getTableDefaultAttributes(editor),\n colGroups: tableUseColumnGroup(editor)\n };\n editor.undoManager.ignore(() => {\n const table = render(rows, columns, rowHeaders, colHeaders, getTableHeaderType(editor), options);\n set$2(table, 'data-mce-id', '__mce');\n const html = getOuter(table);\n editor.insertContent(html);\n editor.addVisual();\n });\n return descendant(getBody(editor), 'table[data-mce-id=\"__mce\"]').map(table => {\n if (isTablePixelsForced(editor)) {\n convertToPixelSize(table);\n } else if (isTableResponsiveForced(editor)) {\n convertToNoneSize(table);\n } else if (isTablePercentagesForced(editor) || isPercentage(defaultStyles.width)) {\n convertToPercentSize(table);\n }\n removeDataStyle(table);\n remove$7(table, 'data-mce-id');\n fireEvents(editor, table);\n selectFirstCellInTable(editor, table);\n return table.dom;\n }).getOr(null);\n };\n const insertTable = (editor, rows, columns, options = {}) => {\n const checkInput = val => isNumber(val) && val > 0;\n if (checkInput(rows) && checkInput(columns)) {\n const headerRows = options.headerRows || 0;\n const headerColumns = options.headerColumns || 0;\n return insert(editor, columns, rows, headerColumns, headerRows);\n } else {\n console.error('Invalid values for mceInsertTable - rows and columns values are required to insert a table.');\n return null;\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 setData = items => {\n const fakeClipboardItem = global.FakeClipboardItem(items);\n global.write([fakeClipboardItem]);\n };\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 clearData = type => {\n if (getData(type).isSome()) {\n global.clear();\n }\n };\n const setRows = rowsOpt => {\n rowsOpt.fold(clearRows, rows => setData({ [tableTypeRow]: rows }));\n };\n const getRows = () => getData(tableTypeRow);\n const clearRows = () => clearData(tableTypeRow);\n const setColumns = columnsOpt => {\n columnsOpt.fold(clearColumns, columns => setData({ [tableTypeColumn]: columns }));\n };\n const getColumns = () => getData(tableTypeColumn);\n const clearColumns = () => clearData(tableTypeColumn);\n\n const getSelectionStartCellOrCaption = editor => getSelectionCellOrCaption(getSelectionStart(editor), getIsRoot(editor));\n const getSelectionStartCell = editor => getSelectionCell(getSelectionStart(editor), getIsRoot(editor));\n const registerCommands = (editor, actions) => {\n const isRoot = getIsRoot(editor);\n const eraseTable = () => getSelectionStartCellOrCaption(editor).each(cellOrCaption => {\n table(cellOrCaption, isRoot).filter(not(isRoot)).each(table => {\n const cursor = SugarElement.fromText('');\n after$5(table, cursor);\n remove$6(table);\n if (editor.dom.isEmpty(editor.getBody())) {\n editor.setContent('');\n editor.selection.setCursorLocation();\n } else {\n const rng = editor.dom.createRng();\n rng.setStart(cursor.dom, 0);\n rng.setEnd(cursor.dom, 0);\n editor.selection.setRng(rng);\n editor.nodeChanged();\n }\n });\n });\n const setSizingMode = sizing => getSelectionStartCellOrCaption(editor).each(cellOrCaption => {\n const isForcedSizing = isTableResponsiveForced(editor) || isTablePixelsForced(editor) || isTablePercentagesForced(editor);\n if (!isForcedSizing) {\n table(cellOrCaption, isRoot).each(table => {\n if (sizing === 'relative' && !isPercentSizing(table)) {\n convertToPercentSize(table);\n } else if (sizing === 'fixed' && !isPixelSizing(table)) {\n convertToPixelSize(table);\n } else if (sizing === 'responsive' && !isNoneSizing(table)) {\n convertToNoneSize(table);\n }\n removeDataStyle(table);\n fireTableModified(editor, table.dom, structureModified);\n });\n }\n });\n const getTableFromCell = cell => table(cell, isRoot);\n const performActionOnSelection = action => getSelectionStartCell(editor).bind(cell => getTableFromCell(cell).map(table => action(table, cell)));\n const toggleTableClass = (_ui, clazz) => {\n performActionOnSelection(table => {\n editor.formatter.toggle('tableclass', { value: clazz }, table.dom);\n fireTableModified(editor, table.dom, styleModified);\n });\n };\n const toggleTableCellClass = (_ui, clazz) => {\n performActionOnSelection(table => {\n const selectedCells = getCellsFromSelection(editor);\n const allHaveClass = forall(selectedCells, cell => editor.formatter.match('tablecellclass', { value: clazz }, cell.dom));\n const formatterAction = allHaveClass ? editor.formatter.remove : editor.formatter.apply;\n each$2(selectedCells, cell => formatterAction('tablecellclass', { value: clazz }, cell.dom));\n fireTableModified(editor, table.dom, styleModified);\n });\n };\n const toggleCaption = () => {\n getSelectionStartCellOrCaption(editor).each(cellOrCaption => {\n table(cellOrCaption, isRoot).each(table => {\n child(table, 'caption').fold(() => {\n const caption = SugarElement.fromTag('caption');\n append$1(caption, SugarElement.fromText('Caption'));\n appendAt(table, caption, 0);\n editor.selection.setCursorLocation(caption.dom, 0);\n }, caption => {\n if (isTag('caption')(cellOrCaption)) {\n one('td', table).each(td => editor.selection.setCursorLocation(td.dom, 0));\n }\n remove$6(caption);\n });\n fireTableModified(editor, table.dom, structureModified);\n });\n });\n };\n const postExecute = _data => {\n editor.focus();\n };\n const actOnSelection = (execute, noEvents = false) => performActionOnSelection((table, startCell) => {\n const targets = forMenu(getCellsFromSelection(editor), table, startCell);\n execute(table, targets, noEvents).each(postExecute);\n });\n const copyRowSelection = () => performActionOnSelection((table, startCell) => {\n const targets = forMenu(getCellsFromSelection(editor), table, startCell);\n const generators = cellOperations(noop, SugarElement.fromDom(editor.getDoc()), Optional.none());\n return copyRows(table, targets, generators);\n });\n const copyColSelection = () => performActionOnSelection((table, startCell) => {\n const targets = forMenu(getCellsFromSelection(editor), table, startCell);\n return copyCols(table, targets);\n });\n const pasteOnSelection = (execute, getRows) => getRows().each(rows => {\n const clonedRows = map$1(rows, row => deep(row));\n performActionOnSelection((table, startCell) => {\n const generators = paste$1(SugarElement.fromDom(editor.getDoc()));\n const targets = pasteRows(getCellsFromSelection(editor), startCell, clonedRows, generators);\n execute(table, targets).each(postExecute);\n });\n });\n const actOnType = getAction => (_ui, args) => get$c(args, 'type').each(type => {\n actOnSelection(getAction(type), args.no_events);\n });\n each$1({\n mceTableSplitCells: () => actOnSelection(actions.unmergeCells),\n mceTableMergeCells: () => actOnSelection(actions.mergeCells),\n mceTableInsertRowBefore: () => actOnSelection(actions.insertRowsBefore),\n mceTableInsertRowAfter: () => actOnSelection(actions.insertRowsAfter),\n mceTableInsertColBefore: () => actOnSelection(actions.insertColumnsBefore),\n mceTableInsertColAfter: () => actOnSelection(actions.insertColumnsAfter),\n mceTableDeleteCol: () => actOnSelection(actions.deleteColumn),\n mceTableDeleteRow: () => actOnSelection(actions.deleteRow),\n mceTableCutCol: () => copyColSelection().each(selection => {\n setColumns(selection);\n actOnSelection(actions.deleteColumn);\n }),\n mceTableCutRow: () => copyRowSelection().each(selection => {\n setRows(selection);\n actOnSelection(actions.deleteRow);\n }),\n mceTableCopyCol: () => copyColSelection().each(selection => setColumns(selection)),\n mceTableCopyRow: () => copyRowSelection().each(selection => setRows(selection)),\n mceTablePasteColBefore: () => pasteOnSelection(actions.pasteColsBefore, getColumns),\n mceTablePasteColAfter: () => pasteOnSelection(actions.pasteColsAfter, getColumns),\n mceTablePasteRowBefore: () => pasteOnSelection(actions.pasteRowsBefore, getRows),\n mceTablePasteRowAfter: () => pasteOnSelection(actions.pasteRowsAfter, getRows),\n mceTableDelete: eraseTable,\n mceTableCellToggleClass: toggleTableCellClass,\n mceTableToggleClass: toggleTableClass,\n mceTableToggleCaption: toggleCaption,\n mceTableSizingMode: (_ui, sizing) => setSizingMode(sizing),\n mceTableCellType: actOnType(type => type === 'th' ? actions.makeCellsHeader : actions.unmakeCellsHeader),\n mceTableColType: actOnType(type => type === 'th' ? actions.makeColumnsHeader : actions.unmakeColumnsHeader),\n mceTableRowType: actOnType(type => {\n switch (type) {\n case 'header':\n return actions.makeRowsHeader;\n case 'footer':\n return actions.makeRowsFooter;\n default:\n return actions.makeRowsBody;\n }\n })\n }, (func, name) => editor.addCommand(name, func));\n editor.addCommand('mceInsertTable', (_ui, args) => {\n insertTable(editor, args.rows, args.columns, args.options);\n });\n editor.addCommand('mceTableApplyCellStyle', (_ui, args) => {\n const getFormatName = style => 'tablecell' + style.toLowerCase().replace('-', '');\n if (!isObject(args)) {\n return;\n }\n const cells = getCellsFromSelection(editor);\n if (cells.length === 0) {\n return;\n }\n const validArgs = filter$1(args, (value, style) => editor.formatter.has(getFormatName(style)) && isString(value));\n if (isEmpty(validArgs)) {\n return;\n }\n each$1(validArgs, (value, style) => {\n const formatName = getFormatName(style);\n each$2(cells, cell => {\n if (value === '') {\n editor.formatter.remove(formatName, { value: null }, cell.dom, true);\n } else {\n editor.formatter.apply(formatName, { value }, cell.dom);\n }\n });\n });\n getTableFromCell(cells[0]).each(table => fireTableModified(editor, table.dom, styleModified));\n });\n };\n\n const registerQueryCommands = (editor, actions) => {\n const isRoot = getIsRoot(editor);\n const lookupOnSelection = action => getSelectionCell(getSelectionStart(editor)).bind(cell => table(cell, isRoot).map(table => {\n const targets = forMenu(getCellsFromSelection(editor), table, cell);\n return action(table, targets);\n })).getOr('');\n each$1({\n mceTableRowType: () => lookupOnSelection(actions.getTableRowType),\n mceTableCellType: () => lookupOnSelection(actions.getTableCellType),\n mceTableColType: () => lookupOnSelection(actions.getTableColType)\n }, (func, name) => editor.addQueryValueHandler(name, func));\n };\n\n const adt$4 = Adt.generate([\n { before: ['element'] },\n {\n on: [\n 'element',\n 'offset'\n ]\n },\n { after: ['element'] }\n ]);\n const cata$1 = (subject, onBefore, onOn, onAfter) => subject.fold(onBefore, onOn, onAfter);\n const getStart$1 = situ => situ.fold(identity, identity, identity);\n const before$2 = adt$4.before;\n const on = adt$4.on;\n const after$3 = adt$4.after;\n const Situ = {\n before: before$2,\n on,\n after: after$3,\n cata: cata$1,\n getStart: getStart$1\n };\n\n const create$4 = (selection, kill) => ({\n selection,\n kill\n });\n const Response = { create: create$4 };\n\n const selectNode = (win, element) => {\n const rng = win.document.createRange();\n rng.selectNode(element.dom);\n return rng;\n };\n const selectNodeContents = (win, element) => {\n const rng = win.document.createRange();\n selectNodeContentsUsing(rng, element);\n return rng;\n };\n const selectNodeContentsUsing = (rng, element) => rng.selectNodeContents(element.dom);\n const setStart = (rng, situ) => {\n situ.fold(e => {\n rng.setStartBefore(e.dom);\n }, (e, o) => {\n rng.setStart(e.dom, o);\n }, e => {\n rng.setStartAfter(e.dom);\n });\n };\n const setFinish = (rng, situ) => {\n situ.fold(e => {\n rng.setEndBefore(e.dom);\n }, (e, o) => {\n rng.setEnd(e.dom, o);\n }, e => {\n rng.setEndAfter(e.dom);\n });\n };\n const relativeToNative = (win, startSitu, finishSitu) => {\n const range = win.document.createRange();\n setStart(range, startSitu);\n setFinish(range, finishSitu);\n return range;\n };\n const exactToNative = (win, start, soffset, finish, foffset) => {\n const rng = win.document.createRange();\n rng.setStart(start.dom, soffset);\n rng.setEnd(finish.dom, foffset);\n return rng;\n };\n const toRect = rect => ({\n left: rect.left,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n width: rect.width,\n height: rect.height\n });\n const getFirstRect$1 = rng => {\n const rects = rng.getClientRects();\n const rect = rects.length > 0 ? rects[0] : rng.getBoundingClientRect();\n return rect.width > 0 || rect.height > 0 ? Optional.some(rect).map(toRect) : Optional.none();\n };\n\n const adt$3 = Adt.generate([\n {\n ltr: [\n 'start',\n 'soffset',\n 'finish',\n 'foffset'\n ]\n },\n {\n rtl: [\n 'start',\n 'soffset',\n 'finish',\n 'foffset'\n ]\n }\n ]);\n const fromRange = (win, type, range) => type(SugarElement.fromDom(range.startContainer), range.startOffset, SugarElement.fromDom(range.endContainer), range.endOffset);\n const getRanges = (win, selection) => selection.match({\n domRange: rng => {\n return {\n ltr: constant(rng),\n rtl: Optional.none\n };\n },\n relative: (startSitu, finishSitu) => {\n return {\n ltr: cached(() => relativeToNative(win, startSitu, finishSitu)),\n rtl: cached(() => Optional.some(relativeToNative(win, finishSitu, startSitu)))\n };\n },\n exact: (start, soffset, finish, foffset) => {\n return {\n ltr: cached(() => exactToNative(win, start, soffset, finish, foffset)),\n rtl: cached(() => Optional.some(exactToNative(win, finish, foffset, start, soffset)))\n };\n }\n });\n const doDiagnose = (win, ranges) => {\n const rng = ranges.ltr();\n if (rng.collapsed) {\n const reversed = ranges.rtl().filter(rev => rev.collapsed === false);\n return reversed.map(rev => adt$3.rtl(SugarElement.fromDom(rev.endContainer), rev.endOffset, SugarElement.fromDom(rev.startContainer), rev.startOffset)).getOrThunk(() => fromRange(win, adt$3.ltr, rng));\n } else {\n return fromRange(win, adt$3.ltr, rng);\n }\n };\n const diagnose = (win, selection) => {\n const ranges = getRanges(win, selection);\n return doDiagnose(win, ranges);\n };\n const asLtrRange = (win, selection) => {\n const diagnosis = diagnose(win, selection);\n return diagnosis.match({\n ltr: (start, soffset, finish, foffset) => {\n const rng = win.document.createRange();\n rng.setStart(start.dom, soffset);\n rng.setEnd(finish.dom, foffset);\n return rng;\n },\n rtl: (start, soffset, finish, foffset) => {\n const rng = win.document.createRange();\n rng.setStart(finish.dom, foffset);\n rng.setEnd(start.dom, soffset);\n return rng;\n }\n });\n };\n adt$3.ltr;\n adt$3.rtl;\n\n const create$3 = (start, soffset, finish, foffset) => ({\n start,\n soffset,\n finish,\n foffset\n });\n const SimRange = { create: create$3 };\n\n const create$2 = (start, soffset, finish, foffset) => {\n return {\n start: Situ.on(start, soffset),\n finish: Situ.on(finish, foffset)\n };\n };\n const Situs = { create: create$2 };\n\n const convertToRange = (win, selection) => {\n const rng = asLtrRange(win, selection);\n return SimRange.create(SugarElement.fromDom(rng.startContainer), rng.startOffset, SugarElement.fromDom(rng.endContainer), rng.endOffset);\n };\n const makeSitus = Situs.create;\n\n const sync = (container, isRoot, start, soffset, finish, foffset, selectRange) => {\n if (!(eq$1(start, finish) && soffset === foffset)) {\n return closest$1(start, 'td,th', isRoot).bind(s => {\n return closest$1(finish, 'td,th', isRoot).bind(f => {\n return detect(container, isRoot, s, f, selectRange);\n });\n });\n } else {\n return Optional.none();\n }\n };\n const detect = (container, isRoot, start, finish, selectRange) => {\n if (!eq$1(start, finish)) {\n return identify(start, finish, isRoot).bind(cellSel => {\n const boxes = cellSel.boxes.getOr([]);\n if (boxes.length > 1) {\n selectRange(container, boxes, cellSel.start, cellSel.finish);\n return Optional.some(Response.create(Optional.some(makeSitus(start, 0, start, getEnd(start))), true));\n } else {\n return Optional.none();\n }\n });\n } else {\n return Optional.none();\n }\n };\n const update = (rows, columns, container, selected, annotations) => {\n const updateSelection = newSels => {\n annotations.clearBeforeUpdate(container);\n annotations.selectRange(container, newSels.boxes, newSels.start, newSels.finish);\n return newSels.boxes;\n };\n return shiftSelection(selected, rows, columns, annotations.firstSelectedSelector, annotations.lastSelectedSelector).map(updateSelection);\n };\n\n const traverse = (item, mode) => ({\n item,\n mode\n });\n const backtrack = (universe, item, _direction, transition = sidestep) => {\n return universe.property().parent(item).map(p => {\n return traverse(p, transition);\n });\n };\n const sidestep = (universe, item, direction, transition = advance) => {\n return direction.sibling(universe, item).map(p => {\n return traverse(p, transition);\n });\n };\n const advance = (universe, item, direction, transition = advance) => {\n const children = universe.property().children(item);\n const result = direction.first(children);\n return result.map(r => {\n return traverse(r, transition);\n });\n };\n const successors = [\n {\n current: backtrack,\n next: sidestep,\n fallback: Optional.none()\n },\n {\n current: sidestep,\n next: advance,\n fallback: Optional.some(backtrack)\n },\n {\n current: advance,\n next: advance,\n fallback: Optional.some(sidestep)\n }\n ];\n const go = (universe, item, mode, direction, rules = successors) => {\n const ruleOpt = find$1(rules, succ => {\n return succ.current === mode;\n });\n return ruleOpt.bind(rule => {\n return rule.current(universe, item, direction, rule.next).orThunk(() => {\n return rule.fallback.bind(fb => {\n return go(universe, item, fb, direction);\n });\n });\n });\n };\n\n const left$1 = () => {\n const sibling = (universe, item) => {\n return universe.query().prevSibling(item);\n };\n const first = children => {\n return children.length > 0 ? Optional.some(children[children.length - 1]) : Optional.none();\n };\n return {\n sibling,\n first\n };\n };\n const right$1 = () => {\n const sibling = (universe, item) => {\n return universe.query().nextSibling(item);\n };\n const first = children => {\n return children.length > 0 ? Optional.some(children[0]) : Optional.none();\n };\n return {\n sibling,\n first\n };\n };\n const Walkers = {\n left: left$1,\n right: right$1\n };\n\n const hone = (universe, item, predicate, mode, direction, isRoot) => {\n const next = go(universe, item, mode, direction);\n return next.bind(n => {\n if (isRoot(n.item)) {\n return Optional.none();\n } else {\n return predicate(n.item) ? Optional.some(n.item) : hone(universe, n.item, predicate, n.mode, direction, isRoot);\n }\n });\n };\n const left = (universe, item, predicate, isRoot) => {\n return hone(universe, item, predicate, sidestep, Walkers.left(), isRoot);\n };\n const right = (universe, item, predicate, isRoot) => {\n return hone(universe, item, predicate, sidestep, Walkers.right(), isRoot);\n };\n\n const isLeaf = universe => element => universe.property().children(element).length === 0;\n const before$1 = (universe, item, isRoot) => {\n return seekLeft$1(universe, item, isLeaf(universe), isRoot);\n };\n const after$2 = (universe, item, isRoot) => {\n return seekRight$1(universe, item, isLeaf(universe), isRoot);\n };\n const seekLeft$1 = left;\n const seekRight$1 = right;\n\n const universe = DomUniverse();\n const before = (element, isRoot) => {\n return before$1(universe, element, isRoot);\n };\n const after$1 = (element, isRoot) => {\n return after$2(universe, element, isRoot);\n };\n const seekLeft = (element, predicate, isRoot) => {\n return seekLeft$1(universe, element, predicate, isRoot);\n };\n const seekRight = (element, predicate, isRoot) => {\n return seekRight$1(universe, element, predicate, isRoot);\n };\n\n const ancestor = (scope, predicate, isRoot) => ancestor$2(scope, predicate, isRoot).isSome();\n\n const adt$2 = Adt.generate([\n { none: ['message'] },\n { success: [] },\n { failedUp: ['cell'] },\n { failedDown: ['cell'] }\n ]);\n const isOverlapping = (bridge, before, after) => {\n const beforeBounds = bridge.getRect(before);\n const afterBounds = bridge.getRect(after);\n return afterBounds.right > beforeBounds.left && afterBounds.left < beforeBounds.right;\n };\n const isRow = elem => {\n return closest$1(elem, 'tr');\n };\n const verify = (bridge, before, beforeOffset, after, afterOffset, failure, isRoot) => {\n return closest$1(after, 'td,th', isRoot).bind(afterCell => {\n return closest$1(before, 'td,th', isRoot).map(beforeCell => {\n if (!eq$1(afterCell, beforeCell)) {\n return sharedOne(isRow, [\n afterCell,\n beforeCell\n ]).fold(() => {\n return isOverlapping(bridge, beforeCell, afterCell) ? adt$2.success() : failure(beforeCell);\n }, _sharedRow => {\n return failure(beforeCell);\n });\n } else {\n return eq$1(after, afterCell) && getEnd(afterCell) === afterOffset ? failure(beforeCell) : adt$2.none('in same cell');\n }\n });\n }).getOr(adt$2.none('default'));\n };\n const cata = (subject, onNone, onSuccess, onFailedUp, onFailedDown) => {\n return subject.fold(onNone, onSuccess, onFailedUp, onFailedDown);\n };\n const BeforeAfter = {\n ...adt$2,\n verify,\n cata\n };\n\n const inParent = (parent, children, element, index) => ({\n parent,\n children,\n element,\n index\n });\n const indexInParent = element => parent(element).bind(parent => {\n const children = children$2(parent);\n return indexOf(children, element).map(index => inParent(parent, children, element, index));\n });\n const indexOf = (elements, element) => findIndex(elements, curry(eq$1, element));\n\n const isBr = isTag('br');\n const gatherer = (cand, gather, isRoot) => {\n return gather(cand, isRoot).bind(target => {\n return isText(target) && get$6(target).trim().length === 0 ? gatherer(target, gather, isRoot) : Optional.some(target);\n });\n };\n const handleBr = (isRoot, element, direction) => {\n return direction.traverse(element).orThunk(() => {\n return gatherer(element, direction.gather, isRoot);\n }).map(direction.relative);\n };\n const findBr = (element, offset) => {\n return child$2(element, offset).filter(isBr).orThunk(() => {\n return child$2(element, offset - 1).filter(isBr);\n });\n };\n const handleParent = (isRoot, element, offset, direction) => {\n return findBr(element, offset).bind(br => {\n return direction.traverse(br).fold(() => {\n return gatherer(br, direction.gather, isRoot).map(direction.relative);\n }, adjacent => {\n return indexInParent(adjacent).map(info => {\n return Situ.on(info.parent, info.index);\n });\n });\n });\n };\n const tryBr = (isRoot, element, offset, direction) => {\n const target = isBr(element) ? handleBr(isRoot, element, direction) : handleParent(isRoot, element, offset, direction);\n return target.map(tgt => {\n return {\n start: tgt,\n finish: tgt\n };\n });\n };\n const process = analysis => {\n return BeforeAfter.cata(analysis, _message => {\n return Optional.none();\n }, () => {\n return Optional.none();\n }, cell => {\n return Optional.some(point(cell, 0));\n }, cell => {\n return Optional.some(point(cell, getEnd(cell)));\n });\n };\n\n const moveDown = (caret, amount) => {\n return {\n left: caret.left,\n top: caret.top + amount,\n right: caret.right,\n bottom: caret.bottom + amount\n };\n };\n const moveUp = (caret, amount) => {\n return {\n left: caret.left,\n top: caret.top - amount,\n right: caret.right,\n bottom: caret.bottom - amount\n };\n };\n const translate = (caret, xDelta, yDelta) => {\n return {\n left: caret.left + xDelta,\n top: caret.top + yDelta,\n right: caret.right + xDelta,\n bottom: caret.bottom + yDelta\n };\n };\n const getTop = caret => {\n return caret.top;\n };\n const getBottom = caret => {\n return caret.bottom;\n };\n\n const getPartialBox = (bridge, element, offset) => {\n if (offset >= 0 && offset < getEnd(element)) {\n return bridge.getRangedRect(element, offset, element, offset + 1);\n } else if (offset > 0) {\n return bridge.getRangedRect(element, offset - 1, element, offset);\n }\n return Optional.none();\n };\n const toCaret = rect => ({\n left: rect.left,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom\n });\n const getElemBox = (bridge, element) => {\n return Optional.some(bridge.getRect(element));\n };\n const getBoxAt = (bridge, element, offset) => {\n if (isElement(element)) {\n return getElemBox(bridge, element).map(toCaret);\n } else if (isText(element)) {\n return getPartialBox(bridge, element, offset).map(toCaret);\n } else {\n return Optional.none();\n }\n };\n const getEntireBox = (bridge, element) => {\n if (isElement(element)) {\n return getElemBox(bridge, element).map(toCaret);\n } else if (isText(element)) {\n return bridge.getRangedRect(element, 0, element, getEnd(element)).map(toCaret);\n } else {\n return Optional.none();\n }\n };\n\n const JUMP_SIZE = 5;\n const NUM_RETRIES = 100;\n const adt$1 = Adt.generate([\n { none: [] },\n { retry: ['caret'] }\n ]);\n const isOutside = (caret, box) => {\n return caret.left < box.left || Math.abs(box.right - caret.left) < 1 || caret.left > box.right;\n };\n const inOutsideBlock = (bridge, element, caret) => {\n return closest$2(element, isBlock).fold(never, cell => {\n return getEntireBox(bridge, cell).exists(box => {\n return isOutside(caret, box);\n });\n });\n };\n const adjustDown = (bridge, element, guessBox, original, caret) => {\n const lowerCaret = moveDown(caret, JUMP_SIZE);\n if (Math.abs(guessBox.bottom - original.bottom) < 1) {\n return adt$1.retry(lowerCaret);\n } else if (guessBox.top > caret.bottom) {\n return adt$1.retry(lowerCaret);\n } else if (guessBox.top === caret.bottom) {\n return adt$1.retry(moveDown(caret, 1));\n } else {\n return inOutsideBlock(bridge, element, caret) ? adt$1.retry(translate(lowerCaret, JUMP_SIZE, 0)) : adt$1.none();\n }\n };\n const adjustUp = (bridge, element, guessBox, original, caret) => {\n const higherCaret = moveUp(caret, JUMP_SIZE);\n if (Math.abs(guessBox.top - original.top) < 1) {\n return adt$1.retry(higherCaret);\n } else if (guessBox.bottom < caret.top) {\n return adt$1.retry(higherCaret);\n } else if (guessBox.bottom === caret.top) {\n return adt$1.retry(moveUp(caret, 1));\n } else {\n return inOutsideBlock(bridge, element, caret) ? adt$1.retry(translate(higherCaret, JUMP_SIZE, 0)) : adt$1.none();\n }\n };\n const upMovement = {\n point: getTop,\n adjuster: adjustUp,\n move: moveUp,\n gather: before\n };\n const downMovement = {\n point: getBottom,\n adjuster: adjustDown,\n move: moveDown,\n gather: after$1\n };\n const isAtTable = (bridge, x, y) => {\n return bridge.elementFromPoint(x, y).filter(elm => {\n return name(elm) === 'table';\n }).isSome();\n };\n const adjustForTable = (bridge, movement, original, caret, numRetries) => {\n return adjustTil(bridge, movement, original, movement.move(caret, JUMP_SIZE), numRetries);\n };\n const adjustTil = (bridge, movement, original, caret, numRetries) => {\n if (numRetries === 0) {\n return Optional.some(caret);\n }\n if (isAtTable(bridge, caret.left, movement.point(caret))) {\n return adjustForTable(bridge, movement, original, caret, numRetries - 1);\n }\n return bridge.situsFromPoint(caret.left, movement.point(caret)).bind(guess => {\n return guess.start.fold(Optional.none, element => {\n return getEntireBox(bridge, element).bind(guessBox => {\n return movement.adjuster(bridge, element, guessBox, original, caret).fold(Optional.none, newCaret => {\n return adjustTil(bridge, movement, original, newCaret, numRetries - 1);\n });\n }).orThunk(() => {\n return Optional.some(caret);\n });\n }, Optional.none);\n });\n };\n const checkScroll = (movement, adjusted, bridge) => {\n if (movement.point(adjusted) > bridge.getInnerHeight()) {\n return Optional.some(movement.point(adjusted) - bridge.getInnerHeight());\n } else if (movement.point(adjusted) < 0) {\n return Optional.some(-movement.point(adjusted));\n } else {\n return Optional.none();\n }\n };\n const retry = (movement, bridge, caret) => {\n const moved = movement.move(caret, JUMP_SIZE);\n const adjusted = adjustTil(bridge, movement, caret, moved, NUM_RETRIES).getOr(moved);\n return checkScroll(movement, adjusted, bridge).fold(() => {\n return bridge.situsFromPoint(adjusted.left, movement.point(adjusted));\n }, delta => {\n bridge.scrollBy(0, delta);\n return bridge.situsFromPoint(adjusted.left, movement.point(adjusted) - delta);\n });\n };\n const Retries = {\n tryUp: curry(retry, upMovement),\n tryDown: curry(retry, downMovement),\n getJumpSize: constant(JUMP_SIZE)\n };\n\n const MAX_RETRIES = 20;\n const findSpot = (bridge, isRoot, direction) => {\n return bridge.getSelection().bind(sel => {\n return tryBr(isRoot, sel.finish, sel.foffset, direction).fold(() => {\n return Optional.some(point(sel.finish, sel.foffset));\n }, brNeighbour => {\n const range = bridge.fromSitus(brNeighbour);\n const analysis = BeforeAfter.verify(bridge, sel.finish, sel.foffset, range.finish, range.foffset, direction.failure, isRoot);\n return process(analysis);\n });\n });\n };\n const scan = (bridge, isRoot, element, offset, direction, numRetries) => {\n if (numRetries === 0) {\n return Optional.none();\n }\n return tryCursor(bridge, isRoot, element, offset, direction).bind(situs => {\n const range = bridge.fromSitus(situs);\n const analysis = BeforeAfter.verify(bridge, element, offset, range.finish, range.foffset, direction.failure, isRoot);\n return BeforeAfter.cata(analysis, () => {\n return Optional.none();\n }, () => {\n return Optional.some(situs);\n }, cell => {\n if (eq$1(element, cell) && offset === 0) {\n return tryAgain(bridge, element, offset, moveUp, direction);\n } else {\n return scan(bridge, isRoot, cell, 0, direction, numRetries - 1);\n }\n }, cell => {\n if (eq$1(element, cell) && offset === getEnd(cell)) {\n return tryAgain(bridge, element, offset, moveDown, direction);\n } else {\n return scan(bridge, isRoot, cell, getEnd(cell), direction, numRetries - 1);\n }\n });\n });\n };\n const tryAgain = (bridge, element, offset, move, direction) => {\n return getBoxAt(bridge, element, offset).bind(box => {\n return tryAt(bridge, direction, move(box, Retries.getJumpSize()));\n });\n };\n const tryAt = (bridge, direction, box) => {\n const browser = detect$2().browser;\n if (browser.isChromium() || browser.isSafari() || browser.isFirefox()) {\n return direction.retry(bridge, box);\n } else {\n return Optional.none();\n }\n };\n const tryCursor = (bridge, isRoot, element, offset, direction) => {\n return getBoxAt(bridge, element, offset).bind(box => {\n return tryAt(bridge, direction, box);\n });\n };\n const handle$1 = (bridge, isRoot, direction) => {\n return findSpot(bridge, isRoot, direction).bind(spot => {\n return scan(bridge, isRoot, spot.element, spot.offset, direction, MAX_RETRIES).map(bridge.fromSitus);\n });\n };\n\n const inSameTable = (elem, table) => {\n return ancestor(elem, e => {\n return parent(e).exists(p => {\n return eq$1(p, table);\n });\n });\n };\n const simulate = (bridge, isRoot, direction, initial, anchor) => {\n return closest$1(initial, 'td,th', isRoot).bind(start => {\n return closest$1(start, 'table', isRoot).bind(table => {\n if (!inSameTable(anchor, table)) {\n return Optional.none();\n }\n return handle$1(bridge, isRoot, direction).bind(range => {\n return closest$1(range.finish, 'td,th', isRoot).map(finish => {\n return {\n start,\n finish,\n range\n };\n });\n });\n });\n });\n };\n const navigate = (bridge, isRoot, direction, initial, anchor, precheck) => {\n return precheck(initial, isRoot).orThunk(() => {\n return simulate(bridge, isRoot, direction, initial, anchor).map(info => {\n const range = info.range;\n return Response.create(Optional.some(makeSitus(range.start, range.soffset, range.finish, range.foffset)), true);\n });\n });\n };\n const firstUpCheck = (initial, isRoot) => {\n return closest$1(initial, 'tr', isRoot).bind(startRow => {\n return closest$1(startRow, 'table', isRoot).bind(table => {\n const rows = descendants(table, 'tr');\n if (eq$1(startRow, rows[0])) {\n return seekLeft(table, element => {\n return last$1(element).isSome();\n }, isRoot).map(last => {\n const lastOffset = getEnd(last);\n return Response.create(Optional.some(makeSitus(last, lastOffset, last, lastOffset)), true);\n });\n } else {\n return Optional.none();\n }\n });\n });\n };\n const lastDownCheck = (initial, isRoot) => {\n return closest$1(initial, 'tr', isRoot).bind(startRow => {\n return closest$1(startRow, 'table', isRoot).bind(table => {\n const rows = descendants(table, 'tr');\n if (eq$1(startRow, rows[rows.length - 1])) {\n return seekRight(table, element => {\n return first(element).isSome();\n }, isRoot).map(first => {\n return Response.create(Optional.some(makeSitus(first, 0, first, 0)), true);\n });\n } else {\n return Optional.none();\n }\n });\n });\n };\n const select = (bridge, container, isRoot, direction, initial, anchor, selectRange) => {\n return simulate(bridge, isRoot, direction, initial, anchor).bind(info => {\n return detect(container, isRoot, info.start, info.finish, selectRange);\n });\n };\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 value = () => {\n const subject = singleton(noop);\n const on = f => subject.get().each(f);\n return {\n ...subject,\n on\n };\n };\n\n const findCell = (target, isRoot) => closest$1(target, 'td,th', isRoot);\n const MouseSelection = (bridge, container, isRoot, annotations) => {\n const cursor = value();\n const clearstate = cursor.clear;\n const applySelection = event => {\n cursor.on(start => {\n annotations.clearBeforeUpdate(container);\n findCell(event.target, isRoot).each(finish => {\n identify(start, finish, isRoot).each(cellSel => {\n const boxes = cellSel.boxes.getOr([]);\n if (boxes.length === 1) {\n const singleCell = boxes[0];\n const isNonEditableCell = getRaw(singleCell) === 'false';\n const isCellClosestContentEditable = is(closest(event.target), singleCell, eq$1);\n if (isNonEditableCell && isCellClosestContentEditable) {\n annotations.selectRange(container, boxes, singleCell, singleCell);\n bridge.selectContents(singleCell);\n }\n } else if (boxes.length > 1) {\n annotations.selectRange(container, boxes, cellSel.start, cellSel.finish);\n bridge.selectContents(finish);\n }\n });\n });\n });\n };\n const mousedown = event => {\n annotations.clear(container);\n findCell(event.target, isRoot).each(cursor.set);\n };\n const mouseover = event => {\n applySelection(event);\n };\n const mouseup = event => {\n applySelection(event);\n clearstate();\n };\n return {\n clearstate,\n mousedown,\n mouseover,\n mouseup\n };\n };\n\n const down = {\n traverse: nextSibling,\n gather: after$1,\n relative: Situ.before,\n retry: Retries.tryDown,\n failure: BeforeAfter.failedDown\n };\n const up = {\n traverse: prevSibling,\n gather: before,\n relative: Situ.before,\n retry: Retries.tryUp,\n failure: BeforeAfter.failedUp\n };\n\n const isKey = key => {\n return keycode => {\n return keycode === key;\n };\n };\n const isUp = isKey(38);\n const isDown = isKey(40);\n const isNavigation = keycode => {\n return keycode >= 37 && keycode <= 40;\n };\n const ltr = {\n isBackward: isKey(37),\n isForward: isKey(39)\n };\n const rtl = {\n isBackward: isKey(39),\n isForward: isKey(37)\n };\n\n const get$3 = _DOC => {\n const doc = _DOC !== undefined ? _DOC.dom : document;\n const x = doc.body.scrollLeft || doc.documentElement.scrollLeft;\n const y = doc.body.scrollTop || doc.documentElement.scrollTop;\n return SugarPosition(x, y);\n };\n const by = (x, y, _DOC) => {\n const doc = _DOC !== undefined ? _DOC.dom : document;\n const win = doc.defaultView;\n if (win) {\n win.scrollBy(x, y);\n }\n };\n\n const adt = Adt.generate([\n { domRange: ['rng'] },\n {\n relative: [\n 'startSitu',\n 'finishSitu'\n ]\n },\n {\n exact: [\n 'start',\n 'soffset',\n 'finish',\n 'foffset'\n ]\n }\n ]);\n const exactFromRange = simRange => adt.exact(simRange.start, simRange.soffset, simRange.finish, simRange.foffset);\n const getStart = selection => selection.match({\n domRange: rng => SugarElement.fromDom(rng.startContainer),\n relative: (startSitu, _finishSitu) => Situ.getStart(startSitu),\n exact: (start, _soffset, _finish, _foffset) => start\n });\n const domRange = adt.domRange;\n const relative = adt.relative;\n const exact = adt.exact;\n const getWin = selection => {\n const start = getStart(selection);\n return defaultView(start);\n };\n const range = SimRange.create;\n const SimSelection = {\n domRange,\n relative,\n exact,\n exactFromRange,\n getWin,\n range\n };\n\n const caretPositionFromPoint = (doc, x, y) => {\n var _a, _b;\n return Optional.from((_b = (_a = doc.dom).caretPositionFromPoint) === null || _b === void 0 ? void 0 : _b.call(_a, x, y)).bind(pos => {\n if (pos.offsetNode === null) {\n return Optional.none();\n }\n const r = doc.dom.createRange();\n r.setStart(pos.offsetNode, pos.offset);\n r.collapse();\n return Optional.some(r);\n });\n };\n const caretRangeFromPoint = (doc, x, y) => {\n var _a, _b;\n return Optional.from((_b = (_a = doc.dom).caretRangeFromPoint) === null || _b === void 0 ? void 0 : _b.call(_a, x, y));\n };\n const availableSearch = (() => {\n if (document.caretPositionFromPoint) {\n return caretPositionFromPoint;\n } else if (document.caretRangeFromPoint) {\n return caretRangeFromPoint;\n } else {\n return Optional.none;\n }\n })();\n const fromPoint = (win, x, y) => {\n const doc = SugarElement.fromDom(win.document);\n return availableSearch(doc, x, y).map(rng => SimRange.create(SugarElement.fromDom(rng.startContainer), rng.startOffset, SugarElement.fromDom(rng.endContainer), rng.endOffset));\n };\n\n const beforeSpecial = (element, offset) => {\n const name$1 = name(element);\n if ('input' === name$1) {\n return Situ.after(element);\n } else if (!contains$2([\n 'br',\n 'img'\n ], name$1)) {\n return Situ.on(element, offset);\n } else {\n return offset === 0 ? Situ.before(element) : Situ.after(element);\n }\n };\n const preprocessRelative = (startSitu, finishSitu) => {\n const start = startSitu.fold(Situ.before, beforeSpecial, Situ.after);\n const finish = finishSitu.fold(Situ.before, beforeSpecial, Situ.after);\n return SimSelection.relative(start, finish);\n };\n const preprocessExact = (start, soffset, finish, foffset) => {\n const startSitu = beforeSpecial(start, soffset);\n const finishSitu = beforeSpecial(finish, foffset);\n return SimSelection.relative(startSitu, finishSitu);\n };\n\n const makeRange = (start, soffset, finish, foffset) => {\n const doc = owner(start);\n const rng = doc.dom.createRange();\n rng.setStart(start.dom, soffset);\n rng.setEnd(finish.dom, foffset);\n return rng;\n };\n const after = (start, soffset, finish, foffset) => {\n const r = makeRange(start, soffset, finish, foffset);\n const same = eq$1(start, finish) && soffset === foffset;\n return r.collapsed && !same;\n };\n\n const getNativeSelection = win => Optional.from(win.getSelection());\n const doSetNativeRange = (win, rng) => {\n getNativeSelection(win).each(selection => {\n selection.removeAllRanges();\n selection.addRange(rng);\n });\n };\n const doSetRange = (win, start, soffset, finish, foffset) => {\n const rng = exactToNative(win, start, soffset, finish, foffset);\n doSetNativeRange(win, rng);\n };\n const setLegacyRtlRange = (win, selection, start, soffset, finish, foffset) => {\n selection.collapse(start.dom, soffset);\n selection.extend(finish.dom, foffset);\n };\n const setRangeFromRelative = (win, relative) => diagnose(win, relative).match({\n ltr: (start, soffset, finish, foffset) => {\n doSetRange(win, start, soffset, finish, foffset);\n },\n rtl: (start, soffset, finish, foffset) => {\n getNativeSelection(win).each(selection => {\n if (selection.setBaseAndExtent) {\n selection.setBaseAndExtent(start.dom, soffset, finish.dom, foffset);\n } else if (selection.extend) {\n try {\n setLegacyRtlRange(win, selection, start, soffset, finish, foffset);\n } catch (e) {\n doSetRange(win, finish, foffset, start, soffset);\n }\n } else {\n doSetRange(win, finish, foffset, start, soffset);\n }\n });\n }\n });\n const setExact = (win, start, soffset, finish, foffset) => {\n const relative = preprocessExact(start, soffset, finish, foffset);\n setRangeFromRelative(win, relative);\n };\n const setRelative = (win, startSitu, finishSitu) => {\n const relative = preprocessRelative(startSitu, finishSitu);\n setRangeFromRelative(win, relative);\n };\n const readRange = selection => {\n if (selection.rangeCount > 0) {\n const firstRng = selection.getRangeAt(0);\n const lastRng = selection.getRangeAt(selection.rangeCount - 1);\n return Optional.some(SimRange.create(SugarElement.fromDom(firstRng.startContainer), firstRng.startOffset, SugarElement.fromDom(lastRng.endContainer), lastRng.endOffset));\n } else {\n return Optional.none();\n }\n };\n const doGetExact = selection => {\n if (selection.anchorNode === null || selection.focusNode === null) {\n return readRange(selection);\n } else {\n const anchor = SugarElement.fromDom(selection.anchorNode);\n const focus = SugarElement.fromDom(selection.focusNode);\n return after(anchor, selection.anchorOffset, focus, selection.focusOffset) ? Optional.some(SimRange.create(anchor, selection.anchorOffset, focus, selection.focusOffset)) : readRange(selection);\n }\n };\n const setToElement = (win, element, selectNodeContents$1 = true) => {\n const rngGetter = selectNodeContents$1 ? selectNodeContents : selectNode;\n const rng = rngGetter(win, element);\n doSetNativeRange(win, rng);\n };\n const getExact = win => getNativeSelection(win).filter(sel => sel.rangeCount > 0).bind(doGetExact);\n const get$2 = win => getExact(win).map(range => SimSelection.exact(range.start, range.soffset, range.finish, range.foffset));\n const getFirstRect = (win, selection) => {\n const rng = asLtrRange(win, selection);\n return getFirstRect$1(rng);\n };\n const getAtPoint = (win, x, y) => fromPoint(win, x, y);\n const clear = win => {\n getNativeSelection(win).each(selection => selection.removeAllRanges());\n };\n\n const WindowBridge = win => {\n const elementFromPoint = (x, y) => {\n return SugarElement.fromPoint(SugarElement.fromDom(win.document), x, y);\n };\n const getRect = element => {\n return element.dom.getBoundingClientRect();\n };\n const getRangedRect = (start, soffset, finish, foffset) => {\n const sel = SimSelection.exact(start, soffset, finish, foffset);\n return getFirstRect(win, sel);\n };\n const getSelection = () => {\n return get$2(win).map(exactAdt => {\n return convertToRange(win, exactAdt);\n });\n };\n const fromSitus = situs => {\n const relative = SimSelection.relative(situs.start, situs.finish);\n return convertToRange(win, relative);\n };\n const situsFromPoint = (x, y) => {\n return getAtPoint(win, x, y).map(exact => {\n return Situs.create(exact.start, exact.soffset, exact.finish, exact.foffset);\n });\n };\n const clearSelection = () => {\n clear(win);\n };\n const collapseSelection = (toStart = false) => {\n get$2(win).each(sel => sel.fold(rng => rng.collapse(toStart), (startSitu, finishSitu) => {\n const situ = toStart ? startSitu : finishSitu;\n setRelative(win, situ, situ);\n }, (start, soffset, finish, foffset) => {\n const node = toStart ? start : finish;\n const offset = toStart ? soffset : foffset;\n setExact(win, node, offset, node, offset);\n }));\n };\n const selectNode = element => {\n setToElement(win, element, false);\n };\n const selectContents = element => {\n setToElement(win, element);\n };\n const setSelection = sel => {\n setExact(win, sel.start, sel.soffset, sel.finish, sel.foffset);\n };\n const setRelativeSelection = (start, finish) => {\n setRelative(win, start, finish);\n };\n const getInnerHeight = () => {\n return win.innerHeight;\n };\n const getScrollY = () => {\n const pos = get$3(SugarElement.fromDom(win.document));\n return pos.top;\n };\n const scrollBy = (x, y) => {\n by(x, y, SugarElement.fromDom(win.document));\n };\n return {\n elementFromPoint,\n getRect,\n getRangedRect,\n getSelection,\n fromSitus,\n situsFromPoint,\n clearSelection,\n collapseSelection,\n setSelection,\n setRelativeSelection,\n selectNode,\n selectContents,\n getInnerHeight,\n getScrollY,\n scrollBy\n };\n };\n\n const rc = (rows, cols) => ({\n rows,\n cols\n });\n const mouse = (win, container, isRoot, annotations) => {\n const bridge = WindowBridge(win);\n const handlers = MouseSelection(bridge, container, isRoot, annotations);\n return {\n clearstate: handlers.clearstate,\n mousedown: handlers.mousedown,\n mouseover: handlers.mouseover,\n mouseup: handlers.mouseup\n };\n };\n const keyboard = (win, container, isRoot, annotations) => {\n const bridge = WindowBridge(win);\n const clearToNavigate = () => {\n annotations.clear(container);\n return Optional.none();\n };\n const keydown = (event, start, soffset, finish, foffset, direction) => {\n const realEvent = event.raw;\n const keycode = realEvent.which;\n const shiftKey = realEvent.shiftKey === true;\n const handler = retrieve$1(container, annotations.selectedSelector).fold(() => {\n if (isNavigation(keycode) && !shiftKey) {\n annotations.clearBeforeUpdate(container);\n }\n if (isDown(keycode) && shiftKey) {\n return curry(select, bridge, container, isRoot, down, finish, start, annotations.selectRange);\n } else if (isUp(keycode) && shiftKey) {\n return curry(select, bridge, container, isRoot, up, finish, start, annotations.selectRange);\n } else if (isDown(keycode)) {\n return curry(navigate, bridge, isRoot, down, finish, start, lastDownCheck);\n } else if (isUp(keycode)) {\n return curry(navigate, bridge, isRoot, up, finish, start, firstUpCheck);\n } else {\n return Optional.none;\n }\n }, selected => {\n const update$1 = attempts => {\n return () => {\n const navigation = findMap(attempts, delta => {\n return update(delta.rows, delta.cols, container, selected, annotations);\n });\n return navigation.fold(() => {\n return getEdges(container, annotations.firstSelectedSelector, annotations.lastSelectedSelector).map(edges => {\n const relative = isDown(keycode) || direction.isForward(keycode) ? Situ.after : Situ.before;\n bridge.setRelativeSelection(Situ.on(edges.first, 0), relative(edges.table));\n annotations.clear(container);\n return Response.create(Optional.none(), true);\n });\n }, _ => {\n return Optional.some(Response.create(Optional.none(), true));\n });\n };\n };\n if (isDown(keycode) && shiftKey) {\n return update$1([rc(+1, 0)]);\n } else if (isUp(keycode) && shiftKey) {\n return update$1([rc(-1, 0)]);\n } else if (direction.isBackward(keycode) && shiftKey) {\n return update$1([\n rc(0, -1),\n rc(-1, 0)\n ]);\n } else if (direction.isForward(keycode) && shiftKey) {\n return update$1([\n rc(0, +1),\n rc(+1, 0)\n ]);\n } else if (isNavigation(keycode) && !shiftKey) {\n return clearToNavigate;\n } else {\n return Optional.none;\n }\n });\n return handler();\n };\n const keyup = (event, start, soffset, finish, foffset) => {\n return retrieve$1(container, annotations.selectedSelector).fold(() => {\n const realEvent = event.raw;\n const keycode = realEvent.which;\n const shiftKey = realEvent.shiftKey === true;\n if (!shiftKey) {\n return Optional.none();\n }\n if (isNavigation(keycode)) {\n return sync(container, isRoot, start, soffset, finish, foffset, annotations.selectRange);\n } else {\n return Optional.none();\n }\n }, Optional.none);\n };\n return {\n keydown,\n keyup\n };\n };\n const external = (win, container, isRoot, annotations) => {\n const bridge = WindowBridge(win);\n return (start, finish) => {\n annotations.clearBeforeUpdate(container);\n identify(start, finish, isRoot).each(cellSel => {\n const boxes = cellSel.boxes.getOr([]);\n annotations.selectRange(container, boxes, cellSel.start, cellSel.finish);\n bridge.selectContents(finish);\n bridge.collapseSelection();\n });\n };\n };\n\n const read = (element, attr) => {\n const value = get$b(element, attr);\n return value === undefined || value === '' ? [] : value.split(' ');\n };\n const add$2 = (element, attr, id) => {\n const old = read(element, attr);\n const nu = old.concat([id]);\n set$2(element, attr, nu.join(' '));\n return true;\n };\n const remove$4 = (element, attr, id) => {\n const nu = filter$2(read(element, attr), v => v !== id);\n if (nu.length > 0) {\n set$2(element, attr, nu.join(' '));\n } else {\n remove$7(element, attr);\n }\n return false;\n };\n\n const supports = element => element.dom.classList !== undefined;\n const get$1 = element => read(element, 'class');\n const add$1 = (element, clazz) => add$2(element, 'class', clazz);\n const remove$3 = (element, clazz) => remove$4(element, 'class', clazz);\n\n const add = (element, clazz) => {\n if (supports(element)) {\n element.dom.classList.add(clazz);\n } else {\n add$1(element, clazz);\n }\n };\n const cleanClass = element => {\n const classList = supports(element) ? element.dom.classList : get$1(element);\n if (classList.length === 0) {\n remove$7(element, 'class');\n }\n };\n const remove$2 = (element, clazz) => {\n if (supports(element)) {\n const classList = element.dom.classList;\n classList.remove(clazz);\n } else {\n remove$3(element, clazz);\n }\n cleanClass(element);\n };\n const has = (element, clazz) => supports(element) && element.dom.classList.contains(clazz);\n\n const remove$1 = (element, classes) => {\n each$2(classes, x => {\n remove$2(element, x);\n });\n };\n\n const addClass = clazz => element => {\n add(element, clazz);\n };\n const removeClasses = classes => element => {\n remove$1(element, classes);\n };\n\n const byClass = ephemera => {\n const addSelectionClass = addClass(ephemera.selected);\n const removeSelectionClasses = removeClasses([\n ephemera.selected,\n ephemera.lastSelected,\n ephemera.firstSelected\n ]);\n const clear = container => {\n const sels = descendants(container, ephemera.selectedSelector);\n each$2(sels, removeSelectionClasses);\n };\n const selectRange = (container, cells, start, finish) => {\n clear(container);\n each$2(cells, addSelectionClass);\n add(start, ephemera.firstSelected);\n add(finish, ephemera.lastSelected);\n };\n return {\n clearBeforeUpdate: clear,\n clear,\n selectRange,\n selectedSelector: ephemera.selectedSelector,\n firstSelectedSelector: ephemera.firstSelectedSelector,\n lastSelectedSelector: ephemera.lastSelectedSelector\n };\n };\n const byAttr = (ephemera, onSelection, onClear) => {\n const removeSelectionAttributes = element => {\n remove$7(element, ephemera.selected);\n remove$7(element, ephemera.firstSelected);\n remove$7(element, ephemera.lastSelected);\n };\n const addSelectionAttribute = element => {\n set$2(element, ephemera.selected, '1');\n };\n const clear = container => {\n clearBeforeUpdate(container);\n onClear();\n };\n const clearBeforeUpdate = container => {\n const sels = descendants(container, `${ ephemera.selectedSelector },${ ephemera.firstSelectedSelector },${ ephemera.lastSelectedSelector }`);\n each$2(sels, removeSelectionAttributes);\n };\n const selectRange = (container, cells, start, finish) => {\n clear(container);\n each$2(cells, addSelectionAttribute);\n set$2(start, ephemera.firstSelected, '1');\n set$2(finish, ephemera.lastSelected, '1');\n onSelection(cells, start, finish);\n };\n return {\n clearBeforeUpdate,\n clear,\n selectRange,\n selectedSelector: ephemera.selectedSelector,\n firstSelectedSelector: ephemera.firstSelectedSelector,\n lastSelectedSelector: ephemera.lastSelectedSelector\n };\n };\n const SelectionAnnotation = {\n byClass,\n byAttr\n };\n\n const fold = (subject, onNone, onMultiple, onSingle) => {\n switch (subject.tag) {\n case 'none':\n return onNone();\n case 'single':\n return onSingle(subject.element);\n case 'multiple':\n return onMultiple(subject.elements);\n }\n };\n const none = () => ({ tag: 'none' });\n const multiple = elements => ({\n tag: 'multiple',\n elements\n });\n const single = element => ({\n tag: 'single',\n element\n });\n\n const Selections = (lazyRoot, getStart, selectedSelector) => {\n const get = () => retrieve(lazyRoot(), selectedSelector).fold(() => getStart().fold(none, single), multiple);\n return { get };\n };\n\n const getUpOrLeftCells = (grid, selectedCells) => {\n const upGrid = grid.slice(0, selectedCells[selectedCells.length - 1].row + 1);\n const upDetails = toDetailList(upGrid);\n return bind$2(upDetails, detail => {\n const slicedCells = detail.cells.slice(0, selectedCells[selectedCells.length - 1].column + 1);\n return map$1(slicedCells, cell => cell.element);\n });\n };\n const getDownOrRightCells = (grid, selectedCells) => {\n const downGrid = grid.slice(selectedCells[0].row + selectedCells[0].rowspan - 1, grid.length);\n const downDetails = toDetailList(downGrid);\n return bind$2(downDetails, detail => {\n const slicedCells = detail.cells.slice(selectedCells[0].column + selectedCells[0].colspan - 1, detail.cells.length);\n return map$1(slicedCells, cell => cell.element);\n });\n };\n const getOtherCells = (table, target, generators) => {\n const warehouse = Warehouse.fromTable(table);\n const details = onCells(warehouse, target);\n return details.map(selectedCells => {\n const grid = toGrid(warehouse, generators, false);\n const {rows} = extractGridDetails(grid);\n const upOrLeftCells = getUpOrLeftCells(rows, selectedCells);\n const downOrRightCells = getDownOrRightCells(rows, selectedCells);\n return {\n upOrLeftCells,\n downOrRightCells\n };\n });\n };\n\n const mkEvent = (target, x, y, stop, prevent, kill, raw) => ({\n target,\n x,\n y,\n stop,\n prevent,\n kill,\n raw\n });\n const fromRawEvent$1 = rawEvent => {\n const target = SugarElement.fromDom(getOriginalEventTarget(rawEvent).getOr(rawEvent.target));\n const stop = () => rawEvent.stopPropagation();\n const prevent = () => rawEvent.preventDefault();\n const kill = compose(prevent, stop);\n return mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent);\n };\n const handle = (filter, handler) => rawEvent => {\n if (filter(rawEvent)) {\n handler(fromRawEvent$1(rawEvent));\n }\n };\n const binder = (element, event, filter, handler, useCapture) => {\n const wrapped = handle(filter, handler);\n element.dom.addEventListener(event, wrapped, useCapture);\n return { unbind: curry(unbind, element, event, wrapped, useCapture) };\n };\n const bind$1 = (element, event, filter, handler) => binder(element, event, filter, handler, false);\n const unbind = (element, event, handler, useCapture) => {\n element.dom.removeEventListener(event, handler, useCapture);\n };\n\n const filter = always;\n const bind = (element, event, handler) => bind$1(element, event, filter, handler);\n const fromRawEvent = fromRawEvent$1;\n\n const hasInternalTarget = e => has(SugarElement.fromDom(e.target), 'ephox-snooker-resizer-bar') === false;\n const TableCellSelectionHandler = (editor, resizeHandler) => {\n const cellSelection = Selections(() => SugarElement.fromDom(editor.getBody()), () => getSelectionCell(getSelectionStart(editor), getIsRoot(editor)), ephemera.selectedSelector);\n const onSelection = (cells, start, finish) => {\n const tableOpt = table(start);\n tableOpt.each(table => {\n const cloneFormats = getTableCloneElements(editor);\n const generators = cellOperations(noop, SugarElement.fromDom(editor.getDoc()), cloneFormats);\n const selectedCells = getCellsFromSelection(editor);\n const otherCells = getOtherCells(table, { selection: selectedCells }, generators);\n fireTableSelectionChange(editor, cells, start, finish, otherCells);\n });\n };\n const onClear = () => fireTableSelectionClear(editor);\n const annotations = SelectionAnnotation.byAttr(ephemera, onSelection, onClear);\n editor.on('init', _e => {\n const win = editor.getWin();\n const body = getBody(editor);\n const isRoot = getIsRoot(editor);\n const syncSelection = () => {\n const sel = editor.selection;\n const start = SugarElement.fromDom(sel.getStart());\n const end = SugarElement.fromDom(sel.getEnd());\n const shared = sharedOne(table, [\n start,\n end\n ]);\n shared.fold(() => annotations.clear(body), noop);\n };\n const mouseHandlers = mouse(win, body, isRoot, annotations);\n const keyHandlers = keyboard(win, body, isRoot, annotations);\n const external$1 = external(win, body, isRoot, annotations);\n const hasShiftKey = event => event.raw.shiftKey === true;\n editor.on('TableSelectorChange', e => external$1(e.start, e.finish));\n const handleResponse = (event, response) => {\n if (!hasShiftKey(event)) {\n return;\n }\n if (response.kill) {\n event.kill();\n }\n response.selection.each(ns => {\n const relative = SimSelection.relative(ns.start, ns.finish);\n const rng = asLtrRange(win, relative);\n editor.selection.setRng(rng);\n });\n };\n const keyup = event => {\n const wrappedEvent = fromRawEvent(event);\n if (wrappedEvent.raw.shiftKey && isNavigation(wrappedEvent.raw.which)) {\n const rng = editor.selection.getRng();\n const start = SugarElement.fromDom(rng.startContainer);\n const end = SugarElement.fromDom(rng.endContainer);\n keyHandlers.keyup(wrappedEvent, start, rng.startOffset, end, rng.endOffset).each(response => {\n handleResponse(wrappedEvent, response);\n });\n }\n };\n const keydown = event => {\n const wrappedEvent = fromRawEvent(event);\n resizeHandler.hide();\n const rng = editor.selection.getRng();\n const start = SugarElement.fromDom(rng.startContainer);\n const end = SugarElement.fromDom(rng.endContainer);\n const direction = onDirection(ltr, rtl)(SugarElement.fromDom(editor.selection.getStart()));\n keyHandlers.keydown(wrappedEvent, start, rng.startOffset, end, rng.endOffset, direction).each(response => {\n handleResponse(wrappedEvent, response);\n });\n resizeHandler.show();\n };\n const isLeftMouse = raw => raw.button === 0;\n const isLeftButtonPressed = raw => {\n if (raw.buttons === undefined) {\n return true;\n }\n return (raw.buttons & 1) !== 0;\n };\n const dragStart = _e => {\n mouseHandlers.clearstate();\n };\n const mouseDown = e => {\n if (isLeftMouse(e) && hasInternalTarget(e)) {\n mouseHandlers.mousedown(fromRawEvent(e));\n }\n };\n const mouseOver = e => {\n if (isLeftButtonPressed(e) && hasInternalTarget(e)) {\n mouseHandlers.mouseover(fromRawEvent(e));\n }\n };\n const mouseUp = e => {\n if (isLeftMouse(e) && hasInternalTarget(e)) {\n mouseHandlers.mouseup(fromRawEvent(e));\n }\n };\n const getDoubleTap = () => {\n const lastTarget = Cell(SugarElement.fromDom(body));\n const lastTimeStamp = Cell(0);\n const touchEnd = t => {\n const target = SugarElement.fromDom(t.target);\n if (isTag('td')(target) || isTag('th')(target)) {\n const lT = lastTarget.get();\n const lTS = lastTimeStamp.get();\n if (eq$1(lT, target) && t.timeStamp - lTS < 300) {\n t.preventDefault();\n external$1(target, target);\n }\n }\n lastTarget.set(target);\n lastTimeStamp.set(t.timeStamp);\n };\n return { touchEnd };\n };\n const doubleTap = getDoubleTap();\n editor.on('dragstart', dragStart);\n editor.on('mousedown', mouseDown);\n editor.on('mouseover', mouseOver);\n editor.on('mouseup', mouseUp);\n editor.on('touchend', doubleTap.touchEnd);\n editor.on('keyup', keyup);\n editor.on('keydown', keydown);\n editor.on('NodeChange', syncSelection);\n });\n editor.on('PreInit', () => {\n editor.serializer.addTempAttr(ephemera.firstSelected);\n editor.serializer.addTempAttr(ephemera.lastSelected);\n });\n const clearSelectedCells = container => annotations.clear(SugarElement.fromDom(container));\n const getSelectedCells = () => fold(cellSelection.get(), constant([]), cells => {\n return map$1(cells, cell => cell.dom);\n }, cell => [cell.dom]);\n return {\n getSelectedCells,\n clearSelectedCells\n };\n };\n\n const Event = fields => {\n let handlers = [];\n const bind = handler => {\n if (handler === undefined) {\n throw new Error('Event bind error: undefined handler');\n }\n handlers.push(handler);\n };\n const unbind = handler => {\n handlers = filter$2(handlers, h => {\n return h !== handler;\n });\n };\n const trigger = (...args) => {\n const event = {};\n each$2(fields, (name, i) => {\n event[name] = args[i];\n });\n each$2(handlers, handler => {\n handler(event);\n });\n };\n return {\n bind,\n unbind,\n trigger\n };\n };\n\n const create$1 = typeDefs => {\n const registry = map(typeDefs, event => {\n return {\n bind: event.bind,\n unbind: event.unbind\n };\n });\n const trigger = map(typeDefs, event => {\n return event.trigger;\n });\n return {\n registry,\n trigger\n };\n };\n\n const last = (fn, rate) => {\n let timer = null;\n const cancel = () => {\n if (!isNull(timer)) {\n clearTimeout(timer);\n timer = null;\n }\n };\n const throttle = (...args) => {\n cancel();\n timer = setTimeout(() => {\n timer = null;\n fn.apply(null, args);\n }, rate);\n };\n return {\n cancel,\n throttle\n };\n };\n\n const sort = arr => {\n return arr.slice(0).sort();\n };\n const reqMessage = (required, keys) => {\n throw new Error('All required keys (' + sort(required).join(', ') + ') were not specified. Specified keys were: ' + sort(keys).join(', ') + '.');\n };\n const unsuppMessage = unsupported => {\n throw new Error('Unsupported keys for object: ' + sort(unsupported).join(', '));\n };\n const validateStrArr = (label, array) => {\n if (!isArray(array)) {\n throw new Error('The ' + label + ' fields must be an array. Was: ' + array + '.');\n }\n each$2(array, a => {\n if (!isString(a)) {\n throw new Error('The value ' + a + ' in the ' + label + ' fields was not a string.');\n }\n });\n };\n const invalidTypeMessage = (incorrect, type) => {\n throw new Error('All values need to be of type: ' + type + '. Keys (' + sort(incorrect).join(', ') + ') were not.');\n };\n const checkDupes = everything => {\n const sorted = sort(everything);\n const dupe = find$1(sorted, (s, i) => {\n return i < sorted.length - 1 && s === sorted[i + 1];\n });\n dupe.each(d => {\n throw new Error('The field: ' + d + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].');\n });\n };\n\n const base = (handleUnsupported, required) => {\n return baseWith(handleUnsupported, required, {\n validate: isFunction,\n label: 'function'\n });\n };\n const baseWith = (handleUnsupported, required, pred) => {\n if (required.length === 0) {\n throw new Error('You must specify at least one required field.');\n }\n validateStrArr('required', required);\n checkDupes(required);\n return obj => {\n const keys$1 = keys(obj);\n const allReqd = forall(required, req => {\n return contains$2(keys$1, req);\n });\n if (!allReqd) {\n reqMessage(required, keys$1);\n }\n handleUnsupported(required, keys$1);\n const invalidKeys = filter$2(required, key => {\n return !pred.validate(obj[key], key);\n });\n if (invalidKeys.length > 0) {\n invalidTypeMessage(invalidKeys, pred.label);\n }\n return obj;\n };\n };\n const handleExact = (required, keys) => {\n const unsupported = filter$2(keys, key => {\n return !contains$2(required, key);\n });\n if (unsupported.length > 0) {\n unsuppMessage(unsupported);\n }\n };\n const exactly = required => base(handleExact, required);\n\n const DragMode = exactly([\n 'compare',\n 'extract',\n 'mutate',\n 'sink'\n ]);\n const DragSink = exactly([\n 'element',\n 'start',\n 'stop',\n 'destroy'\n ]);\n const DragApi = exactly([\n 'forceDrop',\n 'drop',\n 'move',\n 'delayDrop'\n ]);\n\n const InDrag = () => {\n let previous = Optional.none();\n const reset = () => {\n previous = Optional.none();\n };\n const update = (mode, nu) => {\n const result = previous.map(old => {\n return mode.compare(old, nu);\n });\n previous = Optional.some(nu);\n return result;\n };\n const onEvent = (event, mode) => {\n const dataOption = mode.extract(event);\n dataOption.each(data => {\n const offset = update(mode, data);\n offset.each(d => {\n events.trigger.move(d);\n });\n });\n };\n const events = create$1({ move: Event(['info']) });\n return {\n onEvent,\n reset,\n events: events.registry\n };\n };\n\n const NoDrag = () => {\n const events = create$1({ move: Event(['info']) });\n return {\n onEvent: noop,\n reset: noop,\n events: events.registry\n };\n };\n\n const Movement = () => {\n const noDragState = NoDrag();\n const inDragState = InDrag();\n let dragState = noDragState;\n const on = () => {\n dragState.reset();\n dragState = inDragState;\n };\n const off = () => {\n dragState.reset();\n dragState = noDragState;\n };\n const onEvent = (event, mode) => {\n dragState.onEvent(event, mode);\n };\n const isOn = () => {\n return dragState === inDragState;\n };\n return {\n on,\n off,\n isOn,\n onEvent,\n events: inDragState.events\n };\n };\n\n const setup = (mutation, mode, settings) => {\n let active = false;\n const events = create$1({\n start: Event([]),\n stop: Event([])\n });\n const movement = Movement();\n const drop = () => {\n sink.stop();\n if (movement.isOn()) {\n movement.off();\n events.trigger.stop();\n }\n };\n const throttledDrop = last(drop, 200);\n const go = parent => {\n sink.start(parent);\n movement.on();\n events.trigger.start();\n };\n const mousemove = event => {\n throttledDrop.cancel();\n movement.onEvent(event, mode);\n };\n movement.events.move.bind(event => {\n mode.mutate(mutation, event.info);\n });\n const on = () => {\n active = true;\n };\n const off = () => {\n active = false;\n };\n const runIfActive = f => {\n return (...args) => {\n if (active) {\n f.apply(null, args);\n }\n };\n };\n const sink = mode.sink(DragApi({\n forceDrop: drop,\n drop: runIfActive(drop),\n move: runIfActive(mousemove),\n delayDrop: runIfActive(throttledDrop.throttle)\n }), settings);\n const destroy = () => {\n sink.destroy();\n };\n return {\n element: sink.element,\n go,\n on,\n off,\n destroy,\n events: events.registry\n };\n };\n\n const css = namespace => {\n const dashNamespace = namespace.replace(/\\./g, '-');\n const resolve = str => {\n return dashNamespace + '-' + str;\n };\n return { resolve };\n };\n\n const styles$1 = css('ephox-dragster');\n const resolve$1 = styles$1.resolve;\n\n const Blocker = options => {\n const settings = {\n layerClass: resolve$1('blocker'),\n ...options\n };\n const div = SugarElement.fromTag('div');\n set$2(div, 'role', 'presentation');\n setAll(div, {\n position: 'fixed',\n left: '0px',\n top: '0px',\n width: '100%',\n height: '100%'\n });\n add(div, resolve$1('blocker'));\n add(div, settings.layerClass);\n const element = constant(div);\n const destroy = () => {\n remove$6(div);\n };\n return {\n element,\n destroy\n };\n };\n\n const compare = (old, nu) => {\n return SugarPosition(nu.left - old.left, nu.top - old.top);\n };\n const extract = event => {\n return Optional.some(SugarPosition(event.x, event.y));\n };\n const mutate = (mutation, info) => {\n mutation.mutate(info.left, info.top);\n };\n const sink = (dragApi, settings) => {\n const blocker = Blocker(settings);\n const mdown = bind(blocker.element(), 'mousedown', dragApi.forceDrop);\n const mup = bind(blocker.element(), 'mouseup', dragApi.drop);\n const mmove = bind(blocker.element(), 'mousemove', dragApi.move);\n const mout = bind(blocker.element(), 'mouseout', dragApi.delayDrop);\n const destroy = () => {\n blocker.destroy();\n mup.unbind();\n mmove.unbind();\n mout.unbind();\n mdown.unbind();\n };\n const start = parent => {\n append$1(parent, blocker.element());\n };\n const stop = () => {\n remove$6(blocker.element());\n };\n return DragSink({\n element: blocker.element,\n start,\n stop,\n destroy\n });\n };\n var MouseDrag = DragMode({\n compare,\n extract,\n sink,\n mutate\n });\n\n const transform = (mutation, settings = {}) => {\n var _a;\n const mode = (_a = settings.mode) !== null && _a !== void 0 ? _a : MouseDrag;\n return setup(mutation, mode, settings);\n };\n\n const styles = css('ephox-snooker');\n const resolve = styles.resolve;\n\n const Mutation = () => {\n const events = create$1({\n drag: Event([\n 'xDelta',\n 'yDelta'\n ])\n });\n const mutate = (x, y) => {\n events.trigger.drag(x, y);\n };\n return {\n mutate,\n events: events.registry\n };\n };\n\n const BarMutation = () => {\n const events = create$1({\n drag: Event([\n 'xDelta',\n 'yDelta',\n 'target'\n ])\n });\n let target = Optional.none();\n const delegate = Mutation();\n delegate.events.drag.bind(event => {\n target.each(t => {\n events.trigger.drag(event.xDelta, event.yDelta, t);\n });\n });\n const assign = t => {\n target = Optional.some(t);\n };\n const get = () => {\n return target;\n };\n return {\n assign,\n get,\n mutate: delegate.mutate,\n events: events.registry\n };\n };\n\n const col = (column, x, y, w, h) => {\n const bar = SugarElement.fromTag('div');\n setAll(bar, {\n position: 'absolute',\n left: x - w / 2 + 'px',\n top: y + 'px',\n height: h + 'px',\n width: w + 'px'\n });\n setAll$1(bar, {\n 'data-column': column,\n 'role': 'presentation'\n });\n return bar;\n };\n const row = (r, x, y, w, h) => {\n const bar = SugarElement.fromTag('div');\n setAll(bar, {\n position: 'absolute',\n left: x + 'px',\n top: y - h / 2 + 'px',\n height: h + 'px',\n width: w + 'px'\n });\n setAll$1(bar, {\n 'data-row': r,\n 'role': 'presentation'\n });\n return bar;\n };\n\n const resizeBar = resolve('resizer-bar');\n const resizeRowBar = resolve('resizer-rows');\n const resizeColBar = resolve('resizer-cols');\n const BAR_THICKNESS = 7;\n const resizableRows = (warehouse, isResizable) => bind$2(warehouse.all, (row, i) => isResizable(row.element) ? [i] : []);\n const resizableColumns = (warehouse, isResizable) => {\n const resizableCols = [];\n range$1(warehouse.grid.columns, index => {\n const colElmOpt = Warehouse.getColumnAt(warehouse, index).map(col => col.element);\n if (colElmOpt.forall(isResizable)) {\n resizableCols.push(index);\n }\n });\n return filter$2(resizableCols, colIndex => {\n const columnCells = Warehouse.filterItems(warehouse, cell => cell.column === colIndex);\n return forall(columnCells, cell => isResizable(cell.element));\n });\n };\n const destroy = wire => {\n const previous = descendants(wire.parent(), '.' + resizeBar);\n each$2(previous, remove$6);\n };\n const drawBar = (wire, positions, create) => {\n const origin = wire.origin();\n each$2(positions, cpOption => {\n cpOption.each(cp => {\n const bar = create(origin, cp);\n add(bar, resizeBar);\n append$1(wire.parent(), bar);\n });\n });\n };\n const refreshCol = (wire, colPositions, position, tableHeight) => {\n drawBar(wire, colPositions, (origin, cp) => {\n const colBar = col(cp.col, cp.x - origin.left, position.top - origin.top, BAR_THICKNESS, tableHeight);\n add(colBar, resizeColBar);\n return colBar;\n });\n };\n const refreshRow = (wire, rowPositions, position, tableWidth) => {\n drawBar(wire, rowPositions, (origin, cp) => {\n const rowBar = row(cp.row, position.left - origin.left, cp.y - origin.top, tableWidth, BAR_THICKNESS);\n add(rowBar, resizeRowBar);\n return rowBar;\n });\n };\n const refreshGrid = (warhouse, wire, table, rows, cols) => {\n const position = absolute(table);\n const isResizable = wire.isResizable;\n const rowPositions = rows.length > 0 ? height.positions(rows, table) : [];\n const resizableRowBars = rowPositions.length > 0 ? resizableRows(warhouse, isResizable) : [];\n const resizableRowPositions = filter$2(rowPositions, (_pos, i) => exists(resizableRowBars, barIndex => i === barIndex));\n refreshRow(wire, resizableRowPositions, position, getOuter$2(table));\n const colPositions = cols.length > 0 ? width.positions(cols, table) : [];\n const resizableColBars = colPositions.length > 0 ? resizableColumns(warhouse, isResizable) : [];\n const resizableColPositions = filter$2(colPositions, (_pos, i) => exists(resizableColBars, barIndex => i === barIndex));\n refreshCol(wire, resizableColPositions, position, getOuter$1(table));\n };\n const refresh = (wire, table) => {\n destroy(wire);\n if (wire.isResizable(table)) {\n const warehouse = Warehouse.fromTable(table);\n const rows$1 = rows(warehouse);\n const cols = columns(warehouse);\n refreshGrid(warehouse, wire, table, rows$1, cols);\n }\n };\n const each = (wire, f) => {\n const bars = descendants(wire.parent(), '.' + resizeBar);\n each$2(bars, f);\n };\n const hide = wire => {\n each(wire, bar => {\n set$1(bar, 'display', 'none');\n });\n };\n const show = wire => {\n each(wire, bar => {\n set$1(bar, 'display', 'block');\n });\n };\n const isRowBar = element => {\n return has(element, resizeRowBar);\n };\n const isColBar = element => {\n return has(element, resizeColBar);\n };\n\n const resizeBarDragging = resolve('resizer-bar-dragging');\n const BarManager = wire => {\n const mutation = BarMutation();\n const resizing = transform(mutation, {});\n let hoverTable = Optional.none();\n const getResizer = (element, type) => {\n return Optional.from(get$b(element, type));\n };\n mutation.events.drag.bind(event => {\n getResizer(event.target, 'data-row').each(_dataRow => {\n const currentRow = getCssValue(event.target, 'top');\n set$1(event.target, 'top', currentRow + event.yDelta + 'px');\n });\n getResizer(event.target, 'data-column').each(_dataCol => {\n const currentCol = getCssValue(event.target, 'left');\n set$1(event.target, 'left', currentCol + event.xDelta + 'px');\n });\n });\n const getDelta = (target, dir) => {\n const newX = getCssValue(target, dir);\n const oldX = getAttrValue(target, 'data-initial-' + dir, 0);\n return newX - oldX;\n };\n resizing.events.stop.bind(() => {\n mutation.get().each(target => {\n hoverTable.each(table => {\n getResizer(target, 'data-row').each(row => {\n const delta = getDelta(target, 'top');\n remove$7(target, 'data-initial-top');\n events.trigger.adjustHeight(table, delta, parseInt(row, 10));\n });\n getResizer(target, 'data-column').each(column => {\n const delta = getDelta(target, 'left');\n remove$7(target, 'data-initial-left');\n events.trigger.adjustWidth(table, delta, parseInt(column, 10));\n });\n refresh(wire, table);\n });\n });\n });\n const handler = (target, dir) => {\n events.trigger.startAdjust();\n mutation.assign(target);\n set$2(target, 'data-initial-' + dir, getCssValue(target, dir));\n add(target, resizeBarDragging);\n set$1(target, 'opacity', '0.2');\n resizing.go(wire.parent());\n };\n const mousedown = bind(wire.parent(), 'mousedown', event => {\n if (isRowBar(event.target)) {\n handler(event.target, 'top');\n }\n if (isColBar(event.target)) {\n handler(event.target, 'left');\n }\n });\n const isRoot = e => {\n return eq$1(e, wire.view());\n };\n const findClosestEditableTable = target => closest$1(target, 'table', isRoot).filter(isEditable$1);\n const mouseover = bind(wire.view(), 'mouseover', event => {\n findClosestEditableTable(event.target).fold(() => {\n if (inBody(event.target)) {\n destroy(wire);\n }\n }, table => {\n hoverTable = Optional.some(table);\n refresh(wire, table);\n });\n });\n const destroy$1 = () => {\n mousedown.unbind();\n mouseover.unbind();\n resizing.destroy();\n destroy(wire);\n };\n const refresh$1 = tbl => {\n refresh(wire, tbl);\n };\n const events = create$1({\n adjustHeight: Event([\n 'table',\n 'delta',\n 'row'\n ]),\n adjustWidth: Event([\n 'table',\n 'delta',\n 'column'\n ]),\n startAdjust: Event([])\n });\n return {\n destroy: destroy$1,\n refresh: refresh$1,\n on: resizing.on,\n off: resizing.off,\n hideBars: curry(hide, wire),\n showBars: curry(show, wire),\n events: events.registry\n };\n };\n\n const create = (wire, resizing, lazySizing) => {\n const hdirection = height;\n const vdirection = width;\n const manager = BarManager(wire);\n const events = create$1({\n beforeResize: Event([\n 'table',\n 'type'\n ]),\n afterResize: Event([\n 'table',\n 'type'\n ]),\n startDrag: Event([])\n });\n manager.events.adjustHeight.bind(event => {\n const table = event.table;\n events.trigger.beforeResize(table, 'row');\n const delta = hdirection.delta(event.delta, table);\n adjustHeight(table, delta, event.row, hdirection);\n events.trigger.afterResize(table, 'row');\n });\n manager.events.startAdjust.bind(_event => {\n events.trigger.startDrag();\n });\n manager.events.adjustWidth.bind(event => {\n const table = event.table;\n events.trigger.beforeResize(table, 'col');\n const delta = vdirection.delta(event.delta, table);\n const tableSize = lazySizing(table);\n adjustWidth(table, delta, event.column, resizing, tableSize);\n events.trigger.afterResize(table, 'col');\n });\n return {\n on: manager.on,\n off: manager.off,\n refreshBars: manager.refresh,\n hideBars: manager.hideBars,\n showBars: manager.showBars,\n destroy: manager.destroy,\n events: events.registry\n };\n };\n const TableResize = { create };\n\n const only = (element, isResizable) => {\n const parent = isDocument(element) ? documentElement(element) : element;\n return {\n parent: constant(parent),\n view: constant(element),\n origin: constant(SugarPosition(0, 0)),\n isResizable\n };\n };\n const detached = (editable, chrome, isResizable) => {\n const origin = () => absolute(chrome);\n return {\n parent: constant(chrome),\n view: constant(editable),\n origin,\n isResizable\n };\n };\n const body = (editable, chrome, isResizable) => {\n return {\n parent: constant(chrome),\n view: constant(editable),\n origin: constant(SugarPosition(0, 0)),\n isResizable\n };\n };\n const ResizeWire = {\n only,\n detached,\n body\n };\n\n const createContainer = () => {\n const container = SugarElement.fromTag('div');\n setAll(container, {\n position: 'static',\n height: '0',\n width: '0',\n padding: '0',\n margin: '0',\n border: '0'\n });\n append$1(body$1(), container);\n return container;\n };\n const get = (editor, isResizable) => {\n return editor.inline ? ResizeWire.body(SugarElement.fromDom(editor.getBody()), createContainer(), isResizable) : ResizeWire.only(SugarElement.fromDom(editor.getDoc()), isResizable);\n };\n const remove = (editor, wire) => {\n if (editor.inline) {\n remove$6(wire.parent());\n }\n };\n\n const isTable = node => isNonNullable(node) && node.tagName === 'TABLE';\n const barResizerPrefix = 'bar-';\n const isResizable = elm => get$b(elm, 'data-mce-resize') !== 'false';\n const syncPixels = table => {\n const warehouse = Warehouse.fromTable(table);\n if (!Warehouse.hasColumns(warehouse)) {\n each$2(cells$1(table), cell => {\n const computedWidth = get$a(cell, 'width');\n set$1(cell, 'width', computedWidth);\n remove$7(cell, 'width');\n });\n }\n };\n const TableResizeHandler = editor => {\n const selectionRng = value();\n const tableResize = value();\n const resizeWire = value();\n let startW;\n let startRawW;\n const lazySizing = table => get$5(editor, table);\n const lazyResizingBehaviour = () => isPreserveTableColumnResizing(editor) ? preserveTable() : resizeTable();\n const getNumColumns = table => getGridSize(table).columns;\n const afterCornerResize = (table, origin, width) => {\n const isRightEdgeResize = endsWith(origin, 'e');\n if (startRawW === '') {\n convertToPercentSize(table);\n }\n if (width !== startW && startRawW !== '') {\n set$1(table, 'width', startRawW);\n const resizing = lazyResizingBehaviour();\n const tableSize = lazySizing(table);\n const col = isPreserveTableColumnResizing(editor) || isRightEdgeResize ? getNumColumns(table) - 1 : 0;\n adjustWidth(table, width - startW, col, resizing, tableSize);\n } else if (isPercentage$1(startRawW)) {\n const percentW = parseFloat(startRawW.replace('%', ''));\n const targetPercentW = width * percentW / startW;\n set$1(table, 'width', targetPercentW + '%');\n }\n if (isPixel(startRawW)) {\n syncPixels(table);\n }\n };\n const destroy = () => {\n tableResize.on(sz => {\n sz.destroy();\n });\n resizeWire.on(w => {\n remove(editor, w);\n });\n };\n editor.on('init', () => {\n const rawWire = get(editor, isResizable);\n resizeWire.set(rawWire);\n if (hasTableObjectResizing(editor) && hasTableResizeBars(editor)) {\n const resizing = lazyResizingBehaviour();\n const sz = TableResize.create(rawWire, resizing, lazySizing);\n sz.on();\n sz.events.startDrag.bind(_event => {\n selectionRng.set(editor.selection.getRng());\n });\n sz.events.beforeResize.bind(event => {\n const rawTable = event.table.dom;\n fireObjectResizeStart(editor, rawTable, getPixelWidth(rawTable), getPixelHeight(rawTable), barResizerPrefix + event.type);\n });\n sz.events.afterResize.bind(event => {\n const table = event.table;\n const rawTable = table.dom;\n removeDataStyle(table);\n selectionRng.on(rng => {\n editor.selection.setRng(rng);\n editor.focus();\n });\n fireObjectResized(editor, rawTable, getPixelWidth(rawTable), getPixelHeight(rawTable), barResizerPrefix + event.type);\n editor.undoManager.add();\n });\n tableResize.set(sz);\n }\n });\n editor.on('ObjectResizeStart', e => {\n const targetElm = e.target;\n if (isTable(targetElm)) {\n const table = SugarElement.fromDom(targetElm);\n each$2(editor.dom.select('.mce-clonedresizable'), clone => {\n editor.dom.addClass(clone, 'mce-' + getTableColumnResizingBehaviour(editor) + '-columns');\n });\n if (!isPixelSizing(table) && isTablePixelsForced(editor)) {\n convertToPixelSize(table);\n } else if (!isPercentSizing(table) && isTablePercentagesForced(editor)) {\n convertToPercentSize(table);\n }\n if (isNoneSizing(table) && startsWith(e.origin, barResizerPrefix)) {\n convertToPercentSize(table);\n }\n startW = e.width;\n startRawW = isTableResponsiveForced(editor) ? '' : getRawWidth(editor, targetElm).getOr('');\n }\n });\n editor.on('ObjectResized', e => {\n const targetElm = e.target;\n if (isTable(targetElm)) {\n const table = SugarElement.fromDom(targetElm);\n const origin = e.origin;\n if (startsWith(origin, 'corner-')) {\n afterCornerResize(table, origin, e.width);\n }\n removeDataStyle(table);\n fireTableModified(editor, table.dom, styleModified);\n }\n });\n editor.on('SwitchMode', () => {\n tableResize.on(resize => {\n if (editor.mode.isReadOnly()) {\n resize.hideBars();\n } else {\n resize.showBars();\n }\n });\n });\n editor.on('remove', () => {\n destroy();\n });\n const refresh = table => {\n tableResize.on(resize => resize.refreshBars(SugarElement.fromDom(table)));\n };\n const hide = () => {\n tableResize.on(resize => resize.hideBars());\n };\n const show = () => {\n tableResize.on(resize => resize.showBars());\n };\n return {\n refresh,\n hide,\n show\n };\n };\n\n const setupTable = editor => {\n register(editor);\n const resizeHandler = TableResizeHandler(editor);\n const cellSelectionHandler = TableCellSelectionHandler(editor, resizeHandler);\n const actions = TableActions(editor, resizeHandler, cellSelectionHandler);\n registerCommands(editor, actions);\n registerQueryCommands(editor, actions);\n registerEvents(editor, actions);\n return {\n getSelectedCells: cellSelectionHandler.getSelectedCells,\n clearSelectedCells: cellSelectionHandler.clearSelectedCells\n };\n };\n\n const DomModel = editor => {\n const table = setupTable(editor);\n return { table };\n };\n var Model = () => {\n global$1.add('dom', DomModel);\n };\n\n Model();\n\n})();\n","// Exports the \"dom\" model for usage with module loaders\n// Usage:\n// CommonJS:\n// require('tinymce/models/dom')\n// ES2015:\n// import 'tinymce/models/dom'\nrequire('./model.js');"],"names":[],"mappings":"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"}