{
  "version": 3,
  "sources": ["../../../node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@rails/actioncable/src/index.js", "../../../node_modules/tinymce/tinymce.js", "../../../node_modules/tinymce/models/dom/model.js", "../../../node_modules/tinymce/icons/default/icons.js", "../../../node_modules/tinymce/themes/silver/theme.js", "../../../node_modules/tinymce/plugins/autolink/plugin.js", "../../../node_modules/tinymce/plugins/link/plugin.js", "../../../node_modules/tinymce/plugins/lists/plugin.js", "../../../node_modules/tinymce/plugins/visualchars/plugin.js", "../../../node_modules/tinymce/plugins/visualblocks/plugin.js", "../../../node_modules/tinymce/plugins/wordcount/plugin.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../../node_modules/@popperjs/core/lib/index.js", "../../../node_modules/@popperjs/core/lib/enums.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/math.js", "../../../node_modules/@popperjs/core/lib/utils/userAgent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/contains.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../../../node_modules/@popperjs/core/lib/utils/within.js", "../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../../../node_modules/@popperjs/core/lib/modifiers/arrow.js", "../../../node_modules/@popperjs/core/lib/utils/getVariation.js", "../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../../../node_modules/@popperjs/core/lib/modifiers/flip.js", "../../../node_modules/@popperjs/core/lib/modifiers/hide.js", "../../../node_modules/@popperjs/core/lib/modifiers/offset.js", "../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../../../node_modules/@popperjs/core/lib/utils/debounce.js", "../../../node_modules/@popperjs/core/lib/utils/mergeByName.js", "../../../node_modules/@popperjs/core/lib/createPopper.js", "../../../node_modules/@popperjs/core/lib/popper-lite.js", "../../../node_modules/@popperjs/core/lib/popper.js", "../../../node_modules/bootstrap/js/src/dom/data.js", "../../../node_modules/bootstrap/js/src/util/index.js", "../../../node_modules/bootstrap/js/src/dom/event-handler.js", "../../../node_modules/bootstrap/js/src/dom/manipulator.js", "../../../node_modules/bootstrap/js/src/util/config.js", "../../../node_modules/bootstrap/js/src/base-component.js", "../../../node_modules/bootstrap/js/src/dom/selector-engine.js", "../../../node_modules/bootstrap/js/src/util/component-functions.js", "../../../node_modules/bootstrap/js/src/alert.js", "../../../node_modules/bootstrap/js/src/button.js", "../../../node_modules/bootstrap/js/src/util/swipe.js", "../../../node_modules/bootstrap/js/src/carousel.js", "../../../node_modules/bootstrap/js/src/collapse.js", "../../../node_modules/bootstrap/js/src/dropdown.js", "../../../node_modules/bootstrap/js/src/util/backdrop.js", "../../../node_modules/bootstrap/js/src/util/focustrap.js", "../../../node_modules/bootstrap/js/src/util/scrollbar.js", "../../../node_modules/bootstrap/js/src/modal.js", "../../../node_modules/bootstrap/js/src/offcanvas.js", "../../../node_modules/bootstrap/js/src/util/sanitizer.js", "../../../node_modules/bootstrap/js/src/util/template-factory.js", "../../../node_modules/bootstrap/js/src/tooltip.js", "../../../node_modules/bootstrap/js/src/popover.js", "../../../node_modules/bootstrap/js/src/scrollspy.js", "../../../node_modules/bootstrap/js/src/tab.js", "../../../node_modules/bootstrap/js/src/toast.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../../node_modules/@fancyapps/ui/dist/index.esm.js", "../../javascript/controllers/fancybox_controller.js", "../../javascript/controllers/tinymce_controller.js", "../../../node_modules/tinymce/models/dom/index.js", "../../../node_modules/tinymce/icons/default/index.js", "../../../node_modules/tinymce/themes/silver/index.js", "../../../node_modules/tinymce/plugins/autolink/index.js", "../../../node_modules/tinymce/plugins/link/index.js", "../../../node_modules/tinymce/plugins/lists/index.js", "../../../node_modules/tinymce/plugins/visualchars/index.js", "../../../node_modules/tinymce/plugins/visualblocks/index.js", "../../../node_modules/tinymce/plugins/wordcount/index.js", "../../javascript/controllers/index.js", "../../../node_modules/mmenu-js/dist/core/oncanvas/options.js", "../../../node_modules/mmenu-js/dist/core/oncanvas/configs.js", "../../../node_modules/mmenu-js/dist/_modules/helpers.js", "../../../node_modules/mmenu-js/dist/_modules/i18n.js", "../../../node_modules/mmenu-js/dist/core/oncanvas/translations/de.js", "../../../node_modules/mmenu-js/dist/core/oncanvas/translations/fa.js", "../../../node_modules/mmenu-js/dist/core/oncanvas/translations/nl.js", "../../../node_modules/mmenu-js/dist/core/oncanvas/translations/pt_br.js", "../../../node_modules/mmenu-js/dist/core/oncanvas/translations/ru.js", "../../../node_modules/mmenu-js/dist/core/oncanvas/translations/sk.js", "../../../node_modules/mmenu-js/dist/core/oncanvas/translations/uk.js", "../../../node_modules/mmenu-js/dist/core/oncanvas/translations/index.js", "../../../node_modules/mmenu-js/dist/_modules/dom.js", "../../../node_modules/mmenu-js/dist/_modules/matchmedia.js", "../../../node_modules/mmenu-js/dist/core/oncanvas/mmenu.oncanvas.js", "../../../node_modules/mmenu-js/dist/core/offcanvas/options.js", "../../../node_modules/mmenu-js/dist/core/offcanvas/configs.js", "../../../node_modules/mmenu-js/dist/core/offcanvas/mmenu.offcanvas.js", "../../../node_modules/mmenu-js/dist/core/scrollbugfix/options.js", "../../../node_modules/mmenu-js/dist/_modules/support.js", "../../../node_modules/mmenu-js/dist/core/scrollbugfix/mmenu.scrollbugfix.js", "../../../node_modules/mmenu-js/dist/core/theme/options.js", "../../../node_modules/mmenu-js/dist/core/theme/mmenu.theme.js", "../../../node_modules/mmenu-js/dist/addons/backbutton/options.js", "../../../node_modules/mmenu-js/dist/addons/backbutton/mmenu.backbutton.js", "../../../node_modules/mmenu-js/dist/addons/counters/options.js", "../../../node_modules/mmenu-js/dist/addons/counters/mmenu.counters.js", "../../../node_modules/mmenu-js/dist/addons/iconbar/options.js", "../../../node_modules/mmenu-js/dist/addons/iconbar/mmenu.iconbar.js", "../../../node_modules/mmenu-js/dist/addons/iconpanels/_options.js", "../../../node_modules/mmenu-js/dist/addons/iconpanels/mmenu.iconpanels.js", "../../../node_modules/mmenu-js/dist/addons/navbars/configs.js", "../../../node_modules/mmenu-js/dist/addons/navbars/options.js", "../../../node_modules/mmenu-js/dist/addons/navbars/navbar.breadcrumbs.js", "../../../node_modules/mmenu-js/dist/addons/navbars/navbar.close.js", "../../../node_modules/mmenu-js/dist/addons/navbars/navbar.prev.js", "../../../node_modules/mmenu-js/dist/addons/navbars/navbar.searchfield.js", "../../../node_modules/mmenu-js/dist/addons/navbars/navbar.title.js", "../../../node_modules/mmenu-js/dist/addons/navbars/navbar.tabs.js", "../../../node_modules/mmenu-js/dist/addons/navbars/mmenu.navbars.js", "../../../node_modules/mmenu-js/dist/addons/pagescroll/options.js", "../../../node_modules/mmenu-js/dist/addons/pagescroll/configs.js", "../../../node_modules/mmenu-js/dist/addons/pagescroll/mmenu.pagescroll.js", "../../../node_modules/mmenu-js/dist/addons/searchfield/options.js", "../../../node_modules/mmenu-js/dist/addons/searchfield/configs.js", "../../../node_modules/mmenu-js/dist/addons/searchfield/translations/de.js", "../../../node_modules/mmenu-js/dist/addons/searchfield/translations/fa.js", "../../../node_modules/mmenu-js/dist/addons/searchfield/translations/nl.js", "../../../node_modules/mmenu-js/dist/addons/searchfield/translations/pt_br.js", "../../../node_modules/mmenu-js/dist/addons/searchfield/translations/ru.js", "../../../node_modules/mmenu-js/dist/addons/searchfield/translations/sk.js", "../../../node_modules/mmenu-js/dist/addons/searchfield/translations/uk.js", "../../../node_modules/mmenu-js/dist/addons/searchfield/translations/index.js", "../../../node_modules/mmenu-js/dist/addons/searchfield/mmenu.searchfield.js", "../../../node_modules/mmenu-js/dist/addons/sectionindexer/options.js", "../../../node_modules/mmenu-js/dist/addons/sectionindexer/mmenu.sectionindexer.js", "../../../node_modules/mmenu-js/dist/addons/setselected/options.js", "../../../node_modules/mmenu-js/dist/addons/setselected/mmenu.setselected.js", "../../../node_modules/mmenu-js/dist/addons/sidebar/options.js", "../../../node_modules/mmenu-js/dist/addons/sidebar/mmenu.sidebar.js", "../../../node_modules/mmenu-js/src/mmenu.js", "../../javascript/frontend.js"],
  "sourcesContent": ["export default {\n  logger: typeof console !== \"undefined\" ? console : undefined,\n  WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined,\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n//   ActionCable.logger.enabled = true\n//\n//   Example:\n//\n//   import * as ActionCable from '@rails/actioncable'\n//\n//   ActionCable.logger.enabled = true\n//   ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now())\n      adapters.logger.log(\"[ActionCable]\", ...messages)\n    }\n  },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this)\n    this.connection = connection\n    this.reconnectAttempts = 0\n  }\n\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now()\n      delete this.stoppedAt\n      this.startPolling()\n      addEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n    }\n  }\n\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now()\n      this.stopPolling()\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(\"ConnectionMonitor stopped\")\n    }\n  }\n\n  isRunning() {\n    return this.startedAt && !this.stoppedAt\n  }\n\n  recordMessage() {\n    this.pingedAt = now()\n  }\n\n  recordConnect() {\n    this.reconnectAttempts = 0\n    delete this.disconnectedAt\n    logger.log(\"ConnectionMonitor recorded connect\")\n  }\n\n  recordDisconnect() {\n    this.disconnectedAt = now()\n    logger.log(\"ConnectionMonitor recorded disconnect\")\n  }\n\n  // Private\n\n  startPolling() {\n    this.stopPolling()\n    this.poll()\n  }\n\n  stopPolling() {\n    clearTimeout(this.pollTimeout)\n  }\n\n  poll() {\n    this.pollTimeout = setTimeout(() => {\n      this.reconnectIfStale()\n      this.poll()\n    }\n    , this.getPollInterval())\n  }\n\n  getPollInterval() {\n    const { staleThreshold, reconnectionBackoffRate } = this.constructor\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n    const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n    const jitter = jitterMax * Math.random()\n    return staleThreshold * 1000 * backoff * (1 + jitter)\n  }\n\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n      this.reconnectAttempts++\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n      } else {\n        logger.log(\"ConnectionMonitor reopening\")\n        this.connection.reopen()\n      }\n    }\n  }\n\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt\n  }\n\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n  }\n\n  disconnectedRecently() {\n    return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n  }\n\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout(() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n          this.connection.reopen()\n        }\n      }\n      , 200)\n    }\n  }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n  \"message_types\": {\n    \"welcome\": \"welcome\",\n    \"disconnect\": \"disconnect\",\n    \"ping\": \"ping\",\n    \"confirmation\": \"confirm_subscription\",\n    \"rejection\": \"reject_subscription\"\n  },\n  \"disconnect_reasons\": {\n    \"unauthorized\": \"unauthorized\",\n    \"invalid_request\": \"invalid_request\",\n    \"server_restart\": \"server_restart\",\n    \"remote\": \"remote\"\n  },\n  \"default_mount_path\": \"/cable\",\n  \"protocols\": [\n    \"actioncable-v1-json\",\n    \"actioncable-unsupported\"\n  ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this)\n    this.consumer = consumer\n    this.subscriptions = this.consumer.subscriptions\n    this.monitor = new ConnectionMonitor(this)\n    this.disconnected = true\n  }\n\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data))\n      return true\n    } else {\n      return false\n    }\n  }\n\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n      return false\n    } else {\n      const socketProtocols = [...protocols, ...this.consumer.subprotocols || []]\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`)\n      if (this.webSocket) { this.uninstallEventHandlers() }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols)\n      this.installEventHandlers()\n      this.monitor.start()\n      return true\n    }\n  }\n\n  close({allowReconnect} = {allowReconnect: true}) {\n    if (!allowReconnect) { this.monitor.stop() }\n    // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n    if (this.isOpen()) {\n      return this.webSocket.close()\n    }\n  }\n\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n    if (this.isActive()) {\n      try {\n        return this.close()\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error)\n      }\n      finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n        setTimeout(this.open, this.constructor.reopenDelay)\n      }\n    } else {\n      return this.open()\n    }\n  }\n\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol\n    }\n  }\n\n  isOpen() {\n    return this.isState(\"open\")\n  }\n\n  isActive() {\n    return this.isState(\"open\", \"connecting\")\n  }\n\n  triedToReconnect() {\n    return this.monitor.reconnectAttempts > 0\n  }\n\n  // Private\n\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n  }\n\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0\n  }\n\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase()\n        }\n      }\n    }\n    return null\n  }\n\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this)\n      this.webSocket[`on${eventName}`] = handler\n    }\n  }\n\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {}\n    }\n  }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) { return }\n    const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n    this.monitor.recordMessage()\n    switch (type) {\n      case message_types.welcome:\n        if (this.triedToReconnect()) {\n          this.reconnectAttempted = true\n        }\n        this.monitor.recordConnect()\n        return this.subscriptions.reload()\n      case message_types.disconnect:\n        logger.log(`Disconnecting. Reason: ${reason}`)\n        return this.close({allowReconnect: reconnect})\n      case message_types.ping:\n        return null\n      case message_types.confirmation:\n        this.subscriptions.confirmSubscription(identifier)\n        if (this.reconnectAttempted) {\n          this.reconnectAttempted = false\n          return this.subscriptions.notify(identifier, \"connected\", {reconnected: true})\n        } else {\n          return this.subscriptions.notify(identifier, \"connected\", {reconnected: false})\n        }\n      case message_types.rejection:\n        return this.subscriptions.reject(identifier)\n      default:\n        return this.subscriptions.notify(identifier, \"received\", message)\n    }\n  },\n\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n    this.disconnected = false\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n      return this.close({allowReconnect: false})\n    }\n  },\n\n  close(event) {\n    logger.log(\"WebSocket onclose event\")\n    if (this.disconnected) { return }\n    this.disconnected = true\n    this.monitor.recordDisconnect()\n    return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n  },\n\n  error() {\n    logger.log(\"WebSocket onerror event\")\n  }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n//     connected() {\n//       // Called once the subscription has been successfully completed\n//     },\n//\n//     disconnected({ willAttemptReconnect: boolean }) {\n//       // Called when the client has disconnected with the server.\n//       // The object will have an `willAttemptReconnect` property which\n//       // says whether the client has the intention of attempting\n//       // to reconnect.\n//     },\n//\n//     appear() {\n//       this.perform('appear', {appearing_on: this.appearingOn()})\n//     },\n//\n//     away() {\n//       this.perform('away')\n//     },\n//\n//     appearingOn() {\n//       $('main').data('appearing-on')\n//     }\n//   })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n//   class AppearanceChannel < ApplicationActionCable::Channel\n//     def subscribed\n//       current_user.appear\n//     end\n//\n//     def unsubscribed\n//       current_user.disappear\n//     end\n//\n//     def appear(data)\n//       current_user.appear on: data['appearing_on']\n//     end\n//\n//     def away\n//       current_user.away\n//     end\n//   end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key]\n      object[key] = value\n    }\n  }\n  return object\n}\n\nexport default class Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer\n    this.identifier = JSON.stringify(params)\n    extend(this, mixin)\n  }\n\n  // Perform a channel action with the optional data passed as an attribute\n  perform(action, data = {}) {\n    data.action = action\n    return this.send(data)\n  }\n\n  send(data) {\n    return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n  }\n\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this)\n  }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions\n    this.pendingSubscriptions = []\n  }\n\n  guarantee(subscription) {\n    if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n      this.pendingSubscriptions.push(subscription) \n    }\n    else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n    }\n    this.startGuaranteeing()\n  }\n\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n    this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n  }\n\n  startGuaranteeing() {\n    this.stopGuaranteeing()\n    this.retrySubscribing()\n  }\n  \n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout)\n  }\n\n  retrySubscribing() {\n    this.retryTimeout = setTimeout(() => {\n      if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n        this.pendingSubscriptions.map((subscription) => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n          this.subscriptions.subscribe(subscription)\n        })\n      }\n    }\n    , 500)\n  }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer\n    this.guarantor = new SubscriptionGuarantor(this)\n    this.subscriptions = []\n  }\n\n  create(channelName, mixin) {\n    const channel = channelName\n    const params = typeof channel === \"object\" ? channel : {channel}\n    const subscription = new Subscription(this.consumer, params, mixin)\n    return this.add(subscription)\n  }\n\n  // Private\n\n  add(subscription) {\n    this.subscriptions.push(subscription)\n    this.consumer.ensureActiveConnection()\n    this.notify(subscription, \"initialized\")\n    this.subscribe(subscription)\n    return subscription\n  }\n\n  remove(subscription) {\n    this.forget(subscription)\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\")\n    }\n    return subscription\n  }\n\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription) => {\n      this.forget(subscription)\n      this.notify(subscription, \"rejected\")\n      return subscription\n    })\n  }\n\n  forget(subscription) {\n    this.guarantor.forget(subscription)\n    this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n    return subscription\n  }\n\n  findAll(identifier) {\n    return this.subscriptions.filter((s) => s.identifier === identifier)\n  }\n\n  reload() {\n    return this.subscriptions.map((subscription) =>\n      this.subscribe(subscription))\n  }\n\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription) =>\n      this.notify(subscription, callbackName, ...args))\n  }\n\n  notify(subscription, callbackName, ...args) {\n    let subscriptions\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription)\n    } else {\n      subscriptions = [subscription]\n    }\n\n    return subscriptions.map((subscription) =>\n      (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n  }\n\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription)\n    }\n  }\n\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`)\n    this.findAll(identifier).map((subscription) =>\n      this.guarantor.forget(subscription))\n  }\n\n  sendCommand(subscription, command) {\n    const {identifier} = subscription\n    return this.consumer.send({command, identifier})\n  }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n//   App.cable.disconnect()\n//\n// and to restart the connection:\n//\n//   App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n  constructor(url) {\n    this._url = url\n    this.subscriptions = new Subscriptions(this)\n    this.connection = new Connection(this)\n    this.subprotocols = []\n  }\n\n  get url() {\n    return createWebSocketURL(this._url)\n  }\n\n  send(data) {\n    return this.connection.send(data)\n  }\n\n  connect() {\n    return this.connection.open()\n  }\n\n  disconnect() {\n    return this.connection.close({allowReconnect: false})\n  }\n\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open()\n    }\n  }\n\n  addSubProtocol(subprotocol) {\n    this.subprotocols = [...this.subprotocols, subprotocol]\n  }\n}\n\nexport function createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url()\n  }\n\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\")\n    a.href = url\n    // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n    a.href = a.href\n    a.protocol = a.protocol.replace(\"http\", \"ws\")\n    return a.href\n  } else {\n    return url\n  }\n}\n", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n  Connection,\n  ConnectionMonitor,\n  Consumer,\n  INTERNAL,\n  Subscription,\n  Subscriptions,\n  SubscriptionGuarantor,\n  adapters,\n  createWebSocketURL,\n  logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url)\n}\n\nexport function getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n  if (element) {\n    return element.getAttribute(\"content\")\n  }\n}\n", "/**\n * TinyMCE version 6.8.6 (TBD)\n */\n\n(function () {\n    'use strict';\n\n    var typeOf$1 = function (x) {\n      if (x === null) {\n        return 'null';\n      }\n      if (x === undefined) {\n        return 'undefined';\n      }\n      var t = typeof x;\n      if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) {\n        return 'array';\n      }\n      if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) {\n        return 'string';\n      }\n      return t;\n    };\n    var isEquatableType = function (x) {\n      return [\n        'undefined',\n        'boolean',\n        'number',\n        'string',\n        'function',\n        'xml',\n        'null'\n      ].indexOf(x) !== -1;\n    };\n\n    var sort$1 = function (xs, compareFn) {\n      var clone = Array.prototype.slice.call(xs);\n      return clone.sort(compareFn);\n    };\n\n    var contramap = function (eqa, f) {\n      return eq$2(function (x, y) {\n        return eqa.eq(f(x), f(y));\n      });\n    };\n    var eq$2 = function (f) {\n      return { eq: f };\n    };\n    var tripleEq = eq$2(function (x, y) {\n      return x === y;\n    });\n    var eqString = tripleEq;\n    var eqArray = function (eqa) {\n      return eq$2(function (x, y) {\n        if (x.length !== y.length) {\n          return false;\n        }\n        var len = x.length;\n        for (var i = 0; i < len; i++) {\n          if (!eqa.eq(x[i], y[i])) {\n            return false;\n          }\n        }\n        return true;\n      });\n    };\n    var eqSortedArray = function (eqa, compareFn) {\n      return contramap(eqArray(eqa), function (xs) {\n        return sort$1(xs, compareFn);\n      });\n    };\n    var eqRecord = function (eqa) {\n      return eq$2(function (x, y) {\n        var kx = Object.keys(x);\n        var ky = Object.keys(y);\n        if (!eqSortedArray(eqString).eq(kx, ky)) {\n          return false;\n        }\n        var len = kx.length;\n        for (var i = 0; i < len; i++) {\n          var q = kx[i];\n          if (!eqa.eq(x[q], y[q])) {\n            return false;\n          }\n        }\n        return true;\n      });\n    };\n    var eqAny = eq$2(function (x, y) {\n      if (x === y) {\n        return true;\n      }\n      var tx = typeOf$1(x);\n      var ty = typeOf$1(y);\n      if (tx !== ty) {\n        return false;\n      }\n      if (isEquatableType(tx)) {\n        return x === y;\n      } else if (tx === 'array') {\n        return eqArray(eqAny).eq(x, y);\n      } else if (tx === 'object') {\n        return eqRecord(eqAny).eq(x, y);\n      }\n      return false;\n    });\n\n    const getPrototypeOf$2 = Object.getPrototypeOf;\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const eq$1 = t => a => t === a;\n    const is$4 = (value, constructor) => isObject(value) && hasProto(value, constructor, (o, proto) => getPrototypeOf$2(o) === proto);\n    const isString = isType$1('string');\n    const isObject = isType$1('object');\n    const isPlainObject = value => is$4(value, Object);\n    const isArray$1 = isType$1('array');\n    const isNull = eq$1(null);\n    const isBoolean = isSimpleType('boolean');\n    const isUndefined = eq$1(undefined);\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n    const isArrayOf = (value, pred) => {\n      if (isArray$1(value)) {\n        for (let i = 0, len = value.length; i < len; ++i) {\n          if (!pred(value[i])) {\n            return false;\n          }\n        }\n        return true;\n      }\n      return false;\n    };\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$1 = f => {\n      return f();\n    };\n    const call = f => {\n      f();\n    };\n    const never = constant(false);\n    const always = constant(true);\n\n    class Optional {\n      constructor(tag, value) {\n        this.tag = tag;\n        this.value = value;\n      }\n      static some(value) {\n        return new Optional(true, value);\n      }\n      static none() {\n        return Optional.singletonNone;\n      }\n      fold(onNone, onSome) {\n        if (this.tag) {\n          return onSome(this.value);\n        } else {\n          return onNone();\n        }\n      }\n      isSome() {\n        return this.tag;\n      }\n      isNone() {\n        return !this.tag;\n      }\n      map(mapper) {\n        if (this.tag) {\n          return Optional.some(mapper(this.value));\n        } else {\n          return Optional.none();\n        }\n      }\n      bind(binder) {\n        if (this.tag) {\n          return binder(this.value);\n        } else {\n          return Optional.none();\n        }\n      }\n      exists(predicate) {\n        return this.tag && predicate(this.value);\n      }\n      forall(predicate) {\n        return !this.tag || predicate(this.value);\n      }\n      filter(predicate) {\n        if (!this.tag || predicate(this.value)) {\n          return this;\n        } else {\n          return Optional.none();\n        }\n      }\n      getOr(replacement) {\n        return this.tag ? this.value : replacement;\n      }\n      or(replacement) {\n        return this.tag ? this : replacement;\n      }\n      getOrThunk(thunk) {\n        return this.tag ? this.value : thunk();\n      }\n      orThunk(thunk) {\n        return this.tag ? this : thunk();\n      }\n      getOrDie(message) {\n        if (!this.tag) {\n          throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');\n        } else {\n          return this.value;\n        }\n      }\n      static from(value) {\n        return isNonNullable(value) ? Optional.some(value) : Optional.none();\n      }\n      getOrNull() {\n        return this.tag ? this.value : null;\n      }\n      getOrUndefined() {\n        return this.value;\n      }\n      each(worker) {\n        if (this.tag) {\n          worker(this.value);\n        }\n      }\n      toArray() {\n        return this.tag ? [this.value] : [];\n      }\n      toString() {\n        return this.tag ? `some(${ this.value })` : 'none()';\n      }\n    }\n    Optional.singletonNone = new Optional(false);\n\n    const 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 indexOf$1 = (xs, x) => {\n      const r = rawIndexOf(xs, x);\n      return r === -1 ? Optional.none() : Optional.some(r);\n    };\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 map$3 = (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$e = (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$2 = (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$5 = (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$e(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\n    };\n    const findUntil$1 = (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$2 = (xs, pred) => {\n      return findUntil$1(xs, pred, never);\n    };\n    const findIndex$2 = (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$1(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$3 = (xs, f) => flatten(map$3(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 difference = (a1, a2) => filter$5(a1, x => !contains$2(a2, x));\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 = (xs, comparator) => {\n      const copy = nativeSlice.call(xs, 0);\n      copy.sort(comparator);\n      return copy;\n    };\n    const get$b = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();\n    const head = xs => get$b(xs, 0);\n    const last$3 = xs => get$b(xs, xs.length - 1);\n    const from = isFunction(Array.from) ? Array.from : x => nativeSlice.call(x);\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    const unique$1 = (xs, comparator) => {\n      const r = [];\n      const isDuplicated = isFunction(comparator) ? x => exists(r, i => comparator(i, x)) : x => contains$2(r, x);\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (!isDuplicated(x)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n\n    const keys = Object.keys;\n    const hasOwnProperty$1 = Object.hasOwnProperty;\n    const each$d = (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$2 = (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$d(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      each$d(obj, (x, i) => {\n        (pred(x, i) ? onTrue : onFalse)(x, i);\n      });\n    };\n    const bifilter = (obj, pred) => {\n      const t = {};\n      const f = {};\n      internalFilter(obj, pred, objAcc(t), objAcc(f));\n      return {\n        t,\n        f\n      };\n    };\n    const filter$4 = (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$d(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$a = (obj, key) => {\n      return has$2(obj, key) ? Optional.from(obj[key]) : Optional.none();\n    };\n    const has$2 = (obj, key) => hasOwnProperty$1.call(obj, key);\n    const hasNonNullableKey = (obj, key) => has$2(obj, key) && obj[key] !== undefined && obj[key] !== null;\n    const equal$1 = (a1, a2, eq = eqAny) => eqRecord(eq).eq(a1, a2);\n\n    const stringArray = a => {\n      const all = {};\n      each$e(a, key => {\n        all[key] = {};\n      });\n      return keys(all);\n    };\n\n    const isArrayLike = o => o.length !== undefined;\n    const isArray = Array.isArray;\n    const toArray$1 = obj => {\n      if (!isArray(obj)) {\n        const array = [];\n        for (let i = 0, l = obj.length; i < l; i++) {\n          array[i] = obj[i];\n        }\n        return array;\n      } else {\n        return obj;\n      }\n    };\n    const each$c = (o, cb, s) => {\n      if (!o) {\n        return false;\n      }\n      s = s || o;\n      if (isArrayLike(o)) {\n        for (let n = 0, l = o.length; n < l; n++) {\n          if (cb.call(s, o[n], n, o) === false) {\n            return false;\n          }\n        }\n      } else {\n        for (const n in o) {\n          if (has$2(o, n)) {\n            if (cb.call(s, o[n], n, o) === false) {\n              return false;\n            }\n          }\n        }\n      }\n      return true;\n    };\n    const map$1 = (array, callback) => {\n      const out = [];\n      each$c(array, (item, index) => {\n        out.push(callback(item, index, array));\n      });\n      return out;\n    };\n    const filter$3 = (a, f) => {\n      const o = [];\n      each$c(a, (v, index) => {\n        if (!f || f(v, index, a)) {\n          o.push(v);\n        }\n      });\n      return o;\n    };\n    const indexOf = (a, v) => {\n      if (a) {\n        for (let i = 0, l = a.length; i < l; i++) {\n          if (a[i] === v) {\n            return i;\n          }\n        }\n      }\n      return -1;\n    };\n    const reduce = (collection, iteratee, accumulator, thisArg) => {\n      let acc = isUndefined(accumulator) ? collection[0] : accumulator;\n      for (let i = 0; i < collection.length; i++) {\n        acc = iteratee.call(thisArg, acc, collection[i], i);\n      }\n      return acc;\n    };\n    const findIndex$1 = (array, predicate, thisArg) => {\n      for (let i = 0, l = array.length; i < l; i++) {\n        if (predicate.call(thisArg, array[i], i, array)) {\n          return i;\n        }\n      }\n      return -1;\n    };\n    const last$2 = collection => collection[collection.length - 1];\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$1 = (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$3(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$1(versionRegexes, cleanedAgent);\n    };\n    const unknown$2 = () => {\n      return nu$3(0, 0);\n    };\n    const nu$3 = (major, minor) => {\n      return {\n        major,\n        minor\n      };\n    };\n    const Version = {\n      nu: nu$3,\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$2(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$2(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 removeFromStart = (str, numChars) => {\n      return str.substring(numChars);\n    };\n\n    const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;\n    const removeLeading = (str, prefix) => {\n      return startsWith(str, prefix) ? removeFromStart(str, prefix.length) : str;\n    };\n    const contains$1 = (str, substr, start = 0, end) => {\n      const idx = str.indexOf(substr, start);\n      if (idx !== -1) {\n        return isUndefined(end) ? true : idx + substr.length <= end;\n      } else {\n        return false;\n      }\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$4 = blank(/^\\s+|\\s+$/g);\n    const lTrim = blank(/^\\s+/g);\n    const rTrim = blank(/\\s+$/g);\n    const isNotEmpty = s => s.length > 0;\n    const isEmpty$3 = s => !isNotEmpty(s);\n    const repeat = (s, count) => count <= 0 ? '' : new Array(count + 1).join(s);\n    const toInt = (value, radix = 10) => {\n      const num = parseInt(value, radix);\n      return isNaN(num) ? Optional.none() : Optional.some(num);\n    };\n\n    const normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n    const checkContains = target => {\n      return uastring => {\n        return contains$1(uastring, target);\n      };\n    };\n    const browsers = [\n      {\n        name: 'Edge',\n        versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n        search: uastring => {\n          return contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(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$1(uastring, 'chrome') && !contains$1(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$1(uastring, 'msie') || contains$1(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$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(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$1(uastring, 'iphone') || contains$1(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$2({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    const nu$2 = 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$2,\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$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 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: nu$1,\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$4 = cached(() => PlatformDetection.detect(navigator.userAgent, Optional.from(navigator.userAgentData), mediaMatch));\n    const detect$2 = () => platform$4();\n\n    const userAgent = navigator.userAgent;\n    const platform$3 = detect$2();\n    const browser$3 = platform$3.browser;\n    const os$1 = platform$3.os;\n    const deviceType = platform$3.deviceType;\n    const windowsPhone = userAgent.indexOf('Windows Phone') !== -1;\n    const Env = {\n      transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',\n      documentMode: browser$3.isIE() ? document.documentMode || 7 : 10,\n      cacheSuffix: null,\n      container: null,\n      canHaveCSP: !browser$3.isIE(),\n      windowsPhone,\n      browser: {\n        current: browser$3.current,\n        version: browser$3.version,\n        isChromium: browser$3.isChromium,\n        isEdge: browser$3.isEdge,\n        isFirefox: browser$3.isFirefox,\n        isIE: browser$3.isIE,\n        isOpera: browser$3.isOpera,\n        isSafari: browser$3.isSafari\n      },\n      os: {\n        current: os$1.current,\n        version: os$1.version,\n        isAndroid: os$1.isAndroid,\n        isChromeOS: os$1.isChromeOS,\n        isFreeBSD: os$1.isFreeBSD,\n        isiOS: os$1.isiOS,\n        isLinux: os$1.isLinux,\n        isMacOS: os$1.isMacOS,\n        isSolaris: os$1.isSolaris,\n        isWindows: os$1.isWindows\n      },\n      deviceType: {\n        isDesktop: deviceType.isDesktop,\n        isiPad: deviceType.isiPad,\n        isiPhone: deviceType.isiPhone,\n        isPhone: deviceType.isPhone,\n        isTablet: deviceType.isTablet,\n        isTouch: deviceType.isTouch,\n        isWebView: deviceType.isWebView\n      }\n    };\n\n    const whiteSpaceRegExp$1 = /^\\s*|\\s*$/g;\n    const trim$3 = str => {\n      return isNullable(str) ? '' : ('' + str).replace(whiteSpaceRegExp$1, '');\n    };\n    const is$3 = (obj, type) => {\n      if (!type) {\n        return obj !== undefined;\n      }\n      if (type === 'array' && isArray(obj)) {\n        return true;\n      }\n      return typeof obj === type;\n    };\n    const makeMap$4 = (items, delim, map = {}) => {\n      const resolvedItems = isString(items) ? items.split(delim || ',') : items || [];\n      let i = resolvedItems.length;\n      while (i--) {\n        map[resolvedItems[i]] = {};\n      }\n      return map;\n    };\n    const hasOwnProperty = has$2;\n    const extend$3 = (obj, ...exts) => {\n      for (let i = 0; i < exts.length; i++) {\n        const ext = exts[i];\n        for (const name in ext) {\n          if (has$2(ext, name)) {\n            const value = ext[name];\n            if (value !== undefined) {\n              obj[name] = value;\n            }\n          }\n        }\n      }\n      return obj;\n    };\n    const walk$4 = function (o, f, n, s) {\n      s = s || this;\n      if (o) {\n        if (n) {\n          o = o[n];\n        }\n        each$c(o, (o, i) => {\n          if (f.call(s, o, i, n) === false) {\n            return false;\n          } else {\n            walk$4(o, f, n, s);\n            return true;\n          }\n        });\n      }\n    };\n    const resolve$3 = (n, o = window) => {\n      const path = n.split('.');\n      for (let i = 0, l = path.length; i < l; i++) {\n        o = o[path[i]];\n        if (!o) {\n          break;\n        }\n      }\n      return o;\n    };\n    const explode$3 = (s, d) => {\n      if (isArray$1(s)) {\n        return s;\n      } else if (s === '') {\n        return [];\n      } else {\n        return map$1(s.split(d || ','), trim$3);\n      }\n    };\n    const _addCacheSuffix = url => {\n      const cacheSuffix = Env.cacheSuffix;\n      if (cacheSuffix) {\n        url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix;\n      }\n      return url;\n    };\n    const Tools = {\n      trim: trim$3,\n      isArray: isArray,\n      is: is$3,\n      toArray: toArray$1,\n      makeMap: makeMap$4,\n      each: each$c,\n      map: map$1,\n      grep: filter$3,\n      inArray: indexOf,\n      hasOwn: hasOwnProperty,\n      extend: extend$3,\n      walk: walk$4,\n      resolve: resolve$3,\n      explode: explode$3,\n      _addCacheSuffix\n    };\n\n    const is$2 = (lhs, rhs, comparator = tripleEquals) => lhs.exists(left => comparator(left, rhs));\n    const equals = (lhs, rhs, comparator = tripleEquals) => lift2(lhs, rhs, comparator).getOr(lhs.isNone() && rhs.isNone());\n    const cat = arr => {\n      const r = [];\n      const push = x => {\n        r.push(x);\n      };\n      for (let i = 0; i < arr.length; i++) {\n        arr[i].each(push);\n      }\n      return r;\n    };\n    const lift2 = (oa, ob, f) => oa.isSome() && ob.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie())) : Optional.none();\n    const lift3 = (oa, ob, oc, f) => oa.isSome() && ob.isSome() && oc.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie(), oc.getOrDie())) : Optional.none();\n    const someIf = (b, a) => b ? Optional.some(a) : Optional.none();\n\n    const Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const path = (parts, scope) => {\n      let o = scope !== undefined && scope !== null ? scope : Global;\n      for (let i = 0; i < parts.length && o !== undefined && o !== null; ++i) {\n        o = o[parts[i]];\n      }\n      return o;\n    };\n    const resolve$2 = (p, scope) => {\n      const parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    const unsafe = (name, scope) => {\n      return resolve$2(name, scope);\n    };\n    const getOrDie = (name, scope) => {\n      const actual = unsafe(name, scope);\n      if (actual === undefined || actual === null) {\n        throw new Error(name + ' not available on this browser');\n      }\n      return actual;\n    };\n\n    const getPrototypeOf$1 = Object.getPrototypeOf;\n    const sandHTMLElement = scope => {\n      return getOrDie('HTMLElement', scope);\n    };\n    const isPrototypeOf = x => {\n      const scope = resolve$2('ownerDocument.defaultView', x);\n      return isObject(x) && (sandHTMLElement(scope).prototype.isPrototypeOf(x) || /^HTML\\w*Element$/.test(getPrototypeOf$1(x).constructor.name));\n    };\n\n    const COMMENT = 8;\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const name = element => {\n      const r = element.dom.nodeName;\n      return r.toLowerCase();\n    };\n    const type$1 = element => element.dom.nodeType;\n    const isType = t => element => type$1(element) === t;\n    const isComment$1 = element => type$1(element) === COMMENT || name(element) === '#comment';\n    const isHTMLElement$1 = element => isElement$7(element) && isPrototypeOf(element.dom);\n    const isElement$7 = isType(ELEMENT);\n    const isText$b = isType(TEXT);\n    const isDocument$2 = isType(DOCUMENT);\n    const isDocumentFragment$1 = isType(DOCUMENT_FRAGMENT);\n    const isTag = tag => e => isElement$7(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$3 = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const setAll$1 = (element, attrs) => {\n      const dom = element.dom;\n      each$d(attrs, (v, k) => {\n        rawSet(dom, k, v);\n      });\n    };\n    const get$9 = (element, key) => {\n      const v = element.dom.getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    const getOpt = (element, key) => Optional.from(get$9(element, key));\n    const has$1 = (element, key) => {\n      const dom = element.dom;\n      return dom && dom.hasAttribute ? dom.hasAttribute(key) : false;\n    };\n    const remove$a = (element, key) => {\n      element.dom.removeAttribute(key);\n    };\n    const hasNone = element => {\n      const attrs = element.dom.attributes;\n      return attrs === undefined || attrs === null || attrs.length === 0;\n    };\n    const clone$4 = element => foldl(element.dom.attributes, (acc, attr) => {\n      acc[attr.name] = attr.value;\n      return acc;\n    }, {});\n\n    const read$4 = (element, attr) => {\n      const value = get$9(element, attr);\n      return value === undefined || value === '' ? [] : value.split(' ');\n    };\n    const add$4 = (element, attr, id) => {\n      const old = read$4(element, attr);\n      const nu = old.concat([id]);\n      set$3(element, attr, nu.join(' '));\n      return true;\n    };\n    const remove$9 = (element, attr, id) => {\n      const nu = filter$5(read$4(element, attr), v => v !== id);\n      if (nu.length > 0) {\n        set$3(element, attr, nu.join(' '));\n      } else {\n        remove$a(element, attr);\n      }\n      return false;\n    };\n\n    const supports = element => element.dom.classList !== undefined;\n    const get$8 = element => read$4(element, 'class');\n    const add$3 = (element, clazz) => add$4(element, 'class', clazz);\n    const remove$8 = (element, clazz) => remove$9(element, 'class', clazz);\n    const toggle$2 = (element, clazz) => {\n      if (contains$2(get$8(element), clazz)) {\n        return remove$8(element, clazz);\n      } else {\n        return add$3(element, clazz);\n      }\n    };\n\n    const add$2 = (element, clazz) => {\n      if (supports(element)) {\n        element.dom.classList.add(clazz);\n      } else {\n        add$3(element, clazz);\n      }\n    };\n    const cleanClass = element => {\n      const classList = supports(element) ? element.dom.classList : get$8(element);\n      if (classList.length === 0) {\n        remove$a(element, 'class');\n      }\n    };\n    const remove$7 = (element, clazz) => {\n      if (supports(element)) {\n        const classList = element.dom.classList;\n        classList.remove(clazz);\n      } else {\n        remove$8(element, clazz);\n      }\n      cleanClass(element);\n    };\n    const toggle$1 = (element, clazz) => {\n      const result = supports(element) ? element.dom.classList.toggle(clazz) : toggle$2(element, clazz);\n      cleanClass(element);\n      return result;\n    };\n    const has = (element, clazz) => supports(element) && element.dom.classList.contains(clazz);\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$2(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom$2(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom$2(node);\n    };\n    const fromDom$2 = 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$2 = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom$2);\n    const SugarElement = {\n      fromHtml: fromHtml$1,\n      fromTag,\n      fromText,\n      fromDom: fromDom$2,\n      fromPoint: fromPoint$2\n    };\n\n    const toArray = (target, f) => {\n      const r = [];\n      const recurse = e => {\n        r.push(e);\n        return f(e);\n      };\n      let cur = f(target);\n      do {\n        cur = cur.bind(recurse);\n      } while (cur.isSome());\n      return r;\n    };\n\n    const is$1 = (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 = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? [] : map$3(base.querySelectorAll(selector), SugarElement.fromDom);\n    };\n    const one = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? Optional.none() : Optional.from(base.querySelector(selector)).map(SugarElement.fromDom);\n    };\n\n    const eq = (e1, e2) => e1.dom === e2.dom;\n    const contains = (e1, e2) => {\n      const d1 = e1.dom;\n      const d2 = e2.dom;\n      return d1 === d2 ? false : d1.contains(d2);\n    };\n\n    const owner$1 = element => SugarElement.fromDom(element.dom.ownerDocument);\n    const documentOrOwner = dos => isDocument$2(dos) ? dos : owner$1(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$1 = (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 siblings = element => {\n      const filterSelf = elements => filter$5(elements, x => !eq(element, x));\n      return parent(element).map(children$1).map(filterSelf).getOr([]);\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 prevSiblings = element => reverse(toArray(element, prevSibling));\n    const nextSiblings = element => toArray(element, nextSibling);\n    const children$1 = element => map$3(element.dom.childNodes, SugarElement.fromDom);\n    const child$1 = (element, index) => {\n      const cs = element.dom.childNodes;\n      return Optional.from(cs[index]).map(SugarElement.fromDom);\n    };\n    const firstChild = element => child$1(element, 0);\n    const lastChild = element => child$1(element, element.dom.childNodes.length - 1);\n    const childNodesCount = element => element.dom.childNodes.length;\n    const hasChildNodes = element => element.dom.hasChildNodes();\n\n    const getHead = doc => {\n      const b = doc.dom.head;\n      if (b === null || b === undefined) {\n        throw new Error('Head is not available yet');\n      }\n      return SugarElement.fromDom(b);\n    };\n\n    const isShadowRoot = dos => isDocumentFragment$1(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 getStyleContainer = dos => isShadowRoot(dos) ? dos : getHead(documentOrOwner(dos));\n    const getContentContainer = dos => isShadowRoot(dos) ? dos : SugarElement.fromDom(documentOrOwner(dos).dom.body);\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$7(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$b(element) ? element.dom.parentNode : element.dom;\n      if (dom === undefined || dom === null || dom.ownerDocument === null) {\n        return false;\n      }\n      const doc = dom.ownerDocument;\n      return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost));\n    };\n\n    var ClosestOrAncestor = (is, ancestor, scope, a, isRoot) => {\n      if (is(scope, a)) {\n        return Optional.some(scope);\n      } else if (isFunction(isRoot) && isRoot(scope)) {\n        return Optional.none();\n      } else {\n        return ancestor(scope, a, isRoot);\n      }\n    };\n\n    const ancestor$4 = (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$4 = (scope, predicate, isRoot) => {\n      const is = (s, test) => test(s);\n      return ClosestOrAncestor(is, ancestor$4, scope, predicate, isRoot);\n    };\n    const sibling$1 = (scope, predicate) => {\n      const element = scope.dom;\n      if (!element.parentNode) {\n        return Optional.none();\n      }\n      return child(SugarElement.fromDom(element.parentNode), x => !eq(scope, x) && predicate(x));\n    };\n    const child = (scope, predicate) => {\n      const pred = node => predicate(SugarElement.fromDom(node));\n      const result = find$2(scope.dom.childNodes, pred);\n      return result.map(SugarElement.fromDom);\n    };\n    const descendant$2 = (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$3 = (scope, selector, isRoot) => ancestor$4(scope, e => is$1(e, selector), isRoot);\n    const descendant$1 = (scope, selector) => one(selector, scope);\n    const closest$3 = (scope, selector, isRoot) => {\n      const is = (element, selector) => is$1(element, selector);\n      return ClosestOrAncestor(is, ancestor$3, scope, selector, isRoot);\n    };\n\n    const closest$2 = target => closest$3(target, '[contenteditable]');\n    const isEditable$2 = (element, assumeEditable = false) => {\n      if (inBody(element)) {\n        return element.dom.isContentEditable;\n      } else {\n        return closest$2(element).fold(constant(assumeEditable), editable => getRaw$1(editable) === 'true');\n      }\n    };\n    const getRaw$1 = element => element.dom.contentEditable;\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$2 = (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$d(css, (v, k) => {\n        internalSet(dom, k, v);\n      });\n    };\n    const get$7 = (element, property) => {\n      const dom = element.dom;\n      const styles = window.getComputedStyle(dom);\n      const r = styles.getPropertyValue(property);\n      return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;\n    };\n    const getUnsafeProperty = (dom, property) => isSupported(dom) ? dom.style.getPropertyValue(property) : '';\n    const getRaw = (element, property) => {\n      const dom = element.dom;\n      const raw = getUnsafeProperty(dom, property);\n      return Optional.from(raw).filter(r => r.length > 0);\n    };\n    const getAllRaw = element => {\n      const css = {};\n      const dom = element.dom;\n      if (isSupported(dom)) {\n        for (let i = 0; i < dom.style.length; i++) {\n          const ruleName = dom.style.item(i);\n          css[ruleName] = dom.style[ruleName];\n        }\n      }\n      return css;\n    };\n    const remove$6 = (element, property) => {\n      const dom = element.dom;\n      internalRemove(dom, property);\n      if (is$2(getOpt(element, 'style').map(trim$4), '')) {\n        remove$a(element, 'style');\n      }\n    };\n    const reflow = e => e.dom.offsetWidth;\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$4 = (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 wrap$2 = (element, wrapper) => {\n      before$3(element, wrapper);\n      append$1(wrapper, element);\n    };\n\n    const after$3 = (marker, elements) => {\n      each$e(elements, (x, i) => {\n        const e = i === 0 ? marker : elements[i - 1];\n        after$4(e, x);\n      });\n    };\n    const append = (parent, elements) => {\n      each$e(elements, x => {\n        append$1(parent, x);\n      });\n    };\n\n    const empty = element => {\n      element.dom.textContent = '';\n      each$e(children$1(element), rogue => {\n        remove$5(rogue);\n      });\n    };\n    const remove$5 = 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$1(wrapper);\n      if (children.length > 0) {\n        after$3(wrapper, children);\n      }\n      remove$5(wrapper);\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$1(SugarElement.fromDom(div));\n    };\n    const fromDom$1 = nodes => map$3(nodes, SugarElement.fromDom);\n\n    const get$6 = element => element.dom.innerHTML;\n    const set$1 = (element, content) => {\n      const owner = owner$1(element);\n      const docDom = owner.dom;\n      const fragment = SugarElement.fromDom(docDom.createDocumentFragment());\n      const contentElements = fromHtml(content, docDom);\n      append(fragment, contentElements);\n      empty(element);\n      append$1(element, fragment);\n    };\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$6(container);\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 = 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$1 = (filter, handler) => rawEvent => {\n      if (filter(rawEvent)) {\n        handler(fromRawEvent(rawEvent));\n      }\n    };\n    const binder = (element, event, filter, handler, useCapture) => {\n      const wrapped = handle$1(filter, handler);\n      element.dom.addEventListener(event, wrapped, useCapture);\n      return { unbind: curry(unbind, element, event, wrapped, useCapture) };\n    };\n    const bind$2 = (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 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 get$5 = _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 to = (x, y, _DOC) => {\n      const doc = _DOC !== undefined ? _DOC.dom : document;\n      const win = doc.defaultView;\n      if (win) {\n        win.scrollTo(x, y);\n      }\n    };\n    const intoView = (element, alignToTop) => {\n      const isSafari = detect$2().browser.isSafari();\n      if (isSafari && isFunction(element.dom.scrollIntoViewIfNeeded)) {\n        element.dom.scrollIntoViewIfNeeded(false);\n      } else {\n        element.dom.scrollIntoView(alignToTop);\n      }\n    };\n\n    const get$4 = _win => {\n      const win = _win === undefined ? window : _win;\n      if (detect$2().browser.isFirefox()) {\n        return Optional.none();\n      } else {\n        return Optional.from(win.visualViewport);\n      }\n    };\n    const bounds = (x, y, width, height) => ({\n      x,\n      y,\n      width,\n      height,\n      right: x + width,\n      bottom: y + height\n    });\n    const getBounds = _win => {\n      const win = _win === undefined ? window : _win;\n      const doc = win.document;\n      const scroll = get$5(SugarElement.fromDom(doc));\n      return get$4(win).fold(() => {\n        const html = win.document.documentElement;\n        const width = html.clientWidth;\n        const height = html.clientHeight;\n        return bounds(scroll.left, scroll.top, width, height);\n      }, visualViewport => bounds(Math.max(visualViewport.pageLeft, scroll.left), Math.max(visualViewport.pageTop, scroll.top), visualViewport.width, visualViewport.height));\n    };\n\n    const children = (scope, predicate) => filter$5(children$1(scope), predicate);\n    const descendants$1 = (scope, predicate) => {\n      let result = [];\n      each$e(children$1(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 descendants = (scope, selector) => all(selector, scope);\n\n    const ancestor$2 = (scope, selector, isRoot) => ancestor$3(scope, selector, isRoot).isSome();\n\n    class DomTreeWalker {\n      constructor(startNode, rootNode) {\n        this.node = startNode;\n        this.rootNode = rootNode;\n        this.current = this.current.bind(this);\n        this.next = this.next.bind(this);\n        this.prev = this.prev.bind(this);\n        this.prev2 = this.prev2.bind(this);\n      }\n      current() {\n        return this.node;\n      }\n      next(shallow) {\n        this.node = this.findSibling(this.node, 'firstChild', 'nextSibling', shallow);\n        return this.node;\n      }\n      prev(shallow) {\n        this.node = this.findSibling(this.node, 'lastChild', 'previousSibling', shallow);\n        return this.node;\n      }\n      prev2(shallow) {\n        this.node = this.findPreviousNode(this.node, shallow);\n        return this.node;\n      }\n      findSibling(node, startName, siblingName, shallow) {\n        if (node) {\n          if (!shallow && node[startName]) {\n            return node[startName];\n          }\n          if (node !== this.rootNode) {\n            let sibling = node[siblingName];\n            if (sibling) {\n              return sibling;\n            }\n            for (let parent = node.parentNode; parent && parent !== this.rootNode; parent = parent.parentNode) {\n              sibling = parent[siblingName];\n              if (sibling) {\n                return sibling;\n              }\n            }\n          }\n        }\n        return undefined;\n      }\n      findPreviousNode(node, shallow) {\n        if (node) {\n          const sibling = node.previousSibling;\n          if (this.rootNode && sibling === this.rootNode) {\n            return;\n          }\n          if (sibling) {\n            if (!shallow) {\n              for (let child = sibling.lastChild; child; child = child.lastChild) {\n                if (!child.lastChild) {\n                  return child;\n                }\n              }\n            }\n            return sibling;\n          }\n          const parent = node.parentNode;\n          if (parent && parent !== this.rootNode) {\n            return parent;\n          }\n        }\n        return undefined;\n      }\n    }\n\n    const isNodeType = type => {\n      return node => {\n        return !!node && node.nodeType === type;\n      };\n    };\n    const isRestrictedNode = node => !!node && !Object.getPrototypeOf(node);\n    const isElement$6 = isNodeType(1);\n    const isHTMLElement = node => isElement$6(node) && isHTMLElement$1(SugarElement.fromDom(node));\n    const isSVGElement = node => isElement$6(node) && node.namespaceURI === 'http://www.w3.org/2000/svg';\n    const matchNodeName = name => {\n      const lowerCasedName = name.toLowerCase();\n      return node => isNonNullable(node) && node.nodeName.toLowerCase() === lowerCasedName;\n    };\n    const matchNodeNames = names => {\n      const lowerCasedNames = names.map(s => s.toLowerCase());\n      return node => {\n        if (node && node.nodeName) {\n          const nodeName = node.nodeName.toLowerCase();\n          return contains$2(lowerCasedNames, nodeName);\n        }\n        return false;\n      };\n    };\n    const matchStyleValues = (name, values) => {\n      const items = values.toLowerCase().split(' ');\n      return node => {\n        if (isElement$6(node)) {\n          const win = node.ownerDocument.defaultView;\n          if (win) {\n            for (let i = 0; i < items.length; i++) {\n              const computed = win.getComputedStyle(node, null);\n              const cssValue = computed ? computed.getPropertyValue(name) : null;\n              if (cssValue === items[i]) {\n                return true;\n              }\n            }\n          }\n        }\n        return false;\n      };\n    };\n    const hasAttribute = attrName => {\n      return node => {\n        return isElement$6(node) && node.hasAttribute(attrName);\n      };\n    };\n    const hasAttributeValue = (attrName, attrValue) => {\n      return node => {\n        return isElement$6(node) && node.getAttribute(attrName) === attrValue;\n      };\n    };\n    const isBogus$2 = node => isElement$6(node) && node.hasAttribute('data-mce-bogus');\n    const isBogusAll$1 = node => isElement$6(node) && node.getAttribute('data-mce-bogus') === 'all';\n    const isTable$2 = node => isElement$6(node) && node.tagName === 'TABLE';\n    const hasContentEditableState = value => {\n      return node => {\n        if (isHTMLElement(node)) {\n          if (node.contentEditable === value) {\n            return true;\n          }\n          if (node.getAttribute('data-mce-contenteditable') === value) {\n            return true;\n          }\n        }\n        return false;\n      };\n    };\n    const isTextareaOrInput = matchNodeNames([\n      'textarea',\n      'input'\n    ]);\n    const isText$a = isNodeType(3);\n    const isCData = isNodeType(4);\n    const isPi = isNodeType(7);\n    const isComment = isNodeType(8);\n    const isDocument$1 = isNodeType(9);\n    const isDocumentFragment = isNodeType(11);\n    const isBr$6 = matchNodeName('br');\n    const isImg = matchNodeName('img');\n    const isContentEditableTrue$3 = hasContentEditableState('true');\n    const isContentEditableFalse$b = hasContentEditableState('false');\n    const isTableCell$3 = matchNodeNames([\n      'td',\n      'th'\n    ]);\n    const isTableCellOrCaption = matchNodeNames([\n      'td',\n      'th',\n      'caption'\n    ]);\n    const isMedia$2 = matchNodeNames([\n      'video',\n      'audio',\n      'object',\n      'embed'\n    ]);\n    const isListItem$2 = matchNodeName('li');\n    const isDetails = matchNodeName('details');\n    const isSummary$1 = matchNodeName('summary');\n\n    const zeroWidth = '\\uFEFF';\n    const nbsp = '\\xA0';\n    const isZwsp$2 = char => char === zeroWidth;\n    const removeZwsp = s => s.replace(/\\uFEFF/g, '');\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$1 = NodeValue(isText$b, 'text');\n    const get$3 = element => api$1.get(element);\n    const getOption = element => api$1.getOption(element);\n    const set = (element, value) => api$1.set(element, value);\n\n    const tableCells = [\n      'td',\n      'th'\n    ];\n    const tableSections = [\n      'thead',\n      'tbody',\n      'tfoot'\n    ];\n    const textBlocks = [\n      'h1',\n      'h2',\n      'h3',\n      'h4',\n      'h5',\n      'h6',\n      'p',\n      'div',\n      'address',\n      'pre',\n      'form',\n      'blockquote',\n      'center',\n      'dir',\n      'fieldset',\n      'header',\n      'footer',\n      'article',\n      'section',\n      'hgroup',\n      'aside',\n      'nav',\n      'figure'\n    ];\n    const listItems$1 = [\n      'li',\n      'dd',\n      'dt'\n    ];\n    const lists = [\n      'ul',\n      'ol',\n      'dl'\n    ];\n    const wsElements = [\n      'pre',\n      'script',\n      'textarea',\n      'style'\n    ];\n    const lazyLookup = items => {\n      let lookup;\n      return node => {\n        lookup = lookup ? lookup : mapToObject(items, always);\n        return has$2(lookup, name(node));\n      };\n    };\n    const isTable$1 = node => name(node) === 'table';\n    const isBr$5 = node => isElement$7(node) && name(node) === 'br';\n    const isTextBlock$2 = lazyLookup(textBlocks);\n    const isList = lazyLookup(lists);\n    const isListItem$1 = lazyLookup(listItems$1);\n    const isTableSection = lazyLookup(tableSections);\n    const isTableCell$2 = lazyLookup(tableCells);\n    const isWsPreserveElement = lazyLookup(wsElements);\n\n    const getLastChildren$1 = elm => {\n      const children = [];\n      let rawNode = elm.dom;\n      while (rawNode) {\n        children.push(SugarElement.fromDom(rawNode));\n        rawNode = rawNode.lastChild;\n      }\n      return children;\n    };\n    const removeTrailingBr = elm => {\n      const allBrs = descendants(elm, 'br');\n      const brs = filter$5(getLastChildren$1(elm).slice(-1), isBr$5);\n      if (allBrs.length === brs.length) {\n        each$e(brs, remove$5);\n      }\n    };\n    const createPaddingBr = () => {\n      const br = SugarElement.fromTag('br');\n      set$3(br, 'data-mce-bogus', '1');\n      return br;\n    };\n    const fillWithPaddingBr = elm => {\n      empty(elm);\n      append$1(elm, createPaddingBr());\n    };\n    const trimBlockTrailingBr = (elm, schema) => {\n      lastChild(elm).each(lastChild => {\n        prevSibling(lastChild).each(lastChildPrevSibling => {\n          if (schema.isBlock(name(elm)) && isBr$5(lastChild) && schema.isBlock(name(lastChildPrevSibling))) {\n            remove$5(lastChild);\n          }\n        });\n      });\n    };\n\n    const ZWSP$1 = zeroWidth;\n    const isZwsp$1 = isZwsp$2;\n    const trim$2 = removeZwsp;\n    const insert$5 = editor => editor.insertContent(ZWSP$1, { preserve_zwsp: true });\n\n    const isElement$5 = isElement$6;\n    const isText$9 = isText$a;\n    const isCaretContainerBlock$1 = node => {\n      if (isText$9(node)) {\n        node = node.parentNode;\n      }\n      return isElement$5(node) && node.hasAttribute('data-mce-caret');\n    };\n    const isCaretContainerInline = node => isText$9(node) && isZwsp$1(node.data);\n    const isCaretContainer$2 = node => isCaretContainerBlock$1(node) || isCaretContainerInline(node);\n    const hasContent = node => node.firstChild !== node.lastChild || !isBr$6(node.firstChild);\n    const insertInline$1 = (node, before) => {\n      var _a;\n      const doc = (_a = node.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      const textNode = doc.createTextNode(ZWSP$1);\n      const parentNode = node.parentNode;\n      if (!before) {\n        const sibling = node.nextSibling;\n        if (isText$9(sibling)) {\n          if (isCaretContainer$2(sibling)) {\n            return sibling;\n          }\n          if (startsWithCaretContainer$1(sibling)) {\n            sibling.splitText(1);\n            return sibling;\n          }\n        }\n        if (node.nextSibling) {\n          parentNode === null || parentNode === void 0 ? void 0 : parentNode.insertBefore(textNode, node.nextSibling);\n        } else {\n          parentNode === null || parentNode === void 0 ? void 0 : parentNode.appendChild(textNode);\n        }\n      } else {\n        const sibling = node.previousSibling;\n        if (isText$9(sibling)) {\n          if (isCaretContainer$2(sibling)) {\n            return sibling;\n          }\n          if (endsWithCaretContainer$1(sibling)) {\n            return sibling.splitText(sibling.data.length - 1);\n          }\n        }\n        parentNode === null || parentNode === void 0 ? void 0 : parentNode.insertBefore(textNode, node);\n      }\n      return textNode;\n    };\n    const isBeforeInline = pos => {\n      const container = pos.container();\n      if (!isText$a(container)) {\n        return false;\n      }\n      return container.data.charAt(pos.offset()) === ZWSP$1 || pos.isAtStart() && isCaretContainerInline(container.previousSibling);\n    };\n    const isAfterInline = pos => {\n      const container = pos.container();\n      if (!isText$a(container)) {\n        return false;\n      }\n      return container.data.charAt(pos.offset() - 1) === ZWSP$1 || pos.isAtEnd() && isCaretContainerInline(container.nextSibling);\n    };\n    const insertBlock = (blockName, node, before) => {\n      var _a;\n      const doc = (_a = node.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      const blockNode = doc.createElement(blockName);\n      blockNode.setAttribute('data-mce-caret', before ? 'before' : 'after');\n      blockNode.setAttribute('data-mce-bogus', 'all');\n      blockNode.appendChild(createPaddingBr().dom);\n      const parentNode = node.parentNode;\n      if (!before) {\n        if (node.nextSibling) {\n          parentNode === null || parentNode === void 0 ? void 0 : parentNode.insertBefore(blockNode, node.nextSibling);\n        } else {\n          parentNode === null || parentNode === void 0 ? void 0 : parentNode.appendChild(blockNode);\n        }\n      } else {\n        parentNode === null || parentNode === void 0 ? void 0 : parentNode.insertBefore(blockNode, node);\n      }\n      return blockNode;\n    };\n    const startsWithCaretContainer$1 = node => isText$9(node) && node.data[0] === ZWSP$1;\n    const endsWithCaretContainer$1 = node => isText$9(node) && node.data[node.data.length - 1] === ZWSP$1;\n    const trimBogusBr = elm => {\n      var _a;\n      const brs = elm.getElementsByTagName('br');\n      const lastBr = brs[brs.length - 1];\n      if (isBogus$2(lastBr)) {\n        (_a = lastBr.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(lastBr);\n      }\n    };\n    const showCaretContainerBlock = caretContainer => {\n      if (caretContainer && caretContainer.hasAttribute('data-mce-caret')) {\n        trimBogusBr(caretContainer);\n        caretContainer.removeAttribute('data-mce-caret');\n        caretContainer.removeAttribute('data-mce-bogus');\n        caretContainer.removeAttribute('style');\n        caretContainer.removeAttribute('data-mce-style');\n        caretContainer.removeAttribute('_moz_abspos');\n        return caretContainer;\n      }\n      return null;\n    };\n    const isRangeInCaretContainerBlock = range => isCaretContainerBlock$1(range.startContainer);\n\n    const isContentEditableTrue$2 = isContentEditableTrue$3;\n    const isContentEditableFalse$a = isContentEditableFalse$b;\n    const isBr$4 = isBr$6;\n    const isText$8 = isText$a;\n    const isInvalidTextElement = matchNodeNames([\n      'script',\n      'style',\n      'textarea'\n    ]);\n    const isAtomicInline = matchNodeNames([\n      'img',\n      'input',\n      'textarea',\n      'hr',\n      'iframe',\n      'video',\n      'audio',\n      'object',\n      'embed'\n    ]);\n    const isTable = matchNodeNames(['table']);\n    const isCaretContainer$1 = isCaretContainer$2;\n    const isCaretCandidate$3 = node => {\n      if (isCaretContainer$1(node)) {\n        return false;\n      }\n      if (isText$8(node)) {\n        return !isInvalidTextElement(node.parentNode);\n      }\n      return isAtomicInline(node) || isBr$4(node) || isTable(node) || isNonUiContentEditableFalse(node);\n    };\n    const isUnselectable = node => isElement$6(node) && node.getAttribute('unselectable') === 'true';\n    const isNonUiContentEditableFalse = node => !isUnselectable(node) && isContentEditableFalse$a(node);\n    const isInEditable = (node, root) => {\n      for (let tempNode = node.parentNode; tempNode && tempNode !== root; tempNode = tempNode.parentNode) {\n        if (isNonUiContentEditableFalse(tempNode)) {\n          return false;\n        }\n        if (isContentEditableTrue$2(tempNode)) {\n          return true;\n        }\n      }\n      return true;\n    };\n    const isAtomicContentEditableFalse = node => {\n      if (!isNonUiContentEditableFalse(node)) {\n        return false;\n      }\n      return !foldl(from(node.getElementsByTagName('*')), (result, elm) => {\n        return result || isContentEditableTrue$2(elm);\n      }, false);\n    };\n    const isAtomic$1 = node => isAtomicInline(node) || isAtomicContentEditableFalse(node);\n    const isEditableCaretCandidate$1 = (node, root) => isCaretCandidate$3(node) && isInEditable(node, root);\n\n    const whiteSpaceRegExp = /^[ \\t\\r\\n]*$/;\n    const isWhitespaceText = text => whiteSpaceRegExp.test(text);\n    const isZwsp = text => {\n      for (const c of text) {\n        if (!isZwsp$2(c)) {\n          return false;\n        }\n      }\n      return true;\n    };\n    const isCollapsibleWhitespace$1 = c => ' \\f\\t\\x0B'.indexOf(c) !== -1;\n    const isNewLineChar = c => c === '\\n' || c === '\\r';\n    const isNewline = (text, idx) => idx < text.length && idx >= 0 ? isNewLineChar(text[idx]) : false;\n    const normalize$4 = (text, tabSpaces = 4, isStartOfContent = true, isEndOfContent = true) => {\n      const tabSpace = repeat(' ', tabSpaces);\n      const normalizedText = text.replace(/\\t/g, tabSpace);\n      const result = foldl(normalizedText, (acc, c) => {\n        if (isCollapsibleWhitespace$1(c) || c === nbsp) {\n          if (acc.pcIsSpace || acc.str === '' && isStartOfContent || acc.str.length === normalizedText.length - 1 && isEndOfContent || isNewline(normalizedText, acc.str.length + 1)) {\n            return {\n              pcIsSpace: false,\n              str: acc.str + nbsp\n            };\n          } else {\n            return {\n              pcIsSpace: true,\n              str: acc.str + ' '\n            };\n          }\n        } else {\n          return {\n            pcIsSpace: isNewLineChar(c),\n            str: acc.str + c\n          };\n        }\n      }, {\n        pcIsSpace: false,\n        str: ''\n      });\n      return result.str;\n    };\n\n    const hasWhitespacePreserveParent = (node, rootNode) => {\n      const rootElement = SugarElement.fromDom(rootNode);\n      const startNode = SugarElement.fromDom(node);\n      return ancestor$2(startNode, 'pre,code', curry(eq, rootElement));\n    };\n    const isWhitespace$1 = (node, rootNode) => {\n      return isText$a(node) && isWhitespaceText(node.data) && !hasWhitespacePreserveParent(node, rootNode);\n    };\n    const isNamedAnchor = node => {\n      return isElement$6(node) && node.nodeName === 'A' && !node.hasAttribute('href') && (node.hasAttribute('name') || node.hasAttribute('id'));\n    };\n    const isContent$1 = (node, rootNode) => {\n      return isCaretCandidate$3(node) && !isWhitespace$1(node, rootNode) || isNamedAnchor(node) || isBookmark(node);\n    };\n    const isBookmark = hasAttribute('data-mce-bookmark');\n    const isBogus$1 = hasAttribute('data-mce-bogus');\n    const isBogusAll = hasAttributeValue('data-mce-bogus', 'all');\n    const hasNonEditableParent = node => parentElement(SugarElement.fromDom(node)).exists(parent => !isEditable$2(parent));\n    const isEmptyNode = (targetNode, skipBogus) => {\n      let brCount = 0;\n      if (isContent$1(targetNode, targetNode)) {\n        return false;\n      } else {\n        let node = targetNode.firstChild;\n        if (!node) {\n          return true;\n        }\n        const walker = new DomTreeWalker(node, targetNode);\n        do {\n          if (skipBogus) {\n            if (isBogusAll(node)) {\n              node = walker.next(true);\n              continue;\n            }\n            if (isBogus$1(node)) {\n              node = walker.next();\n              continue;\n            }\n          }\n          if (isContentEditableTrue$3(node) && hasNonEditableParent(node)) {\n            return false;\n          }\n          if (isBr$6(node)) {\n            brCount++;\n            node = walker.next();\n            continue;\n          }\n          if (isContent$1(node, targetNode)) {\n            return false;\n          }\n          node = walker.next();\n        } while (node);\n        return brCount <= 1;\n      }\n    };\n    const isEmpty$2 = (elm, skipBogus = true) => isEmptyNode(elm.dom, skipBogus);\n\n    const isNonHtmlElementRootName = name => name.toLowerCase() === 'svg';\n    const isNonHtmlElementRoot = node => isNonHtmlElementRootName(node.nodeName);\n    const toScopeType = node => (node === null || node === void 0 ? void 0 : node.nodeName) === 'svg' ? 'svg' : 'html';\n    const namespaceElements = ['svg'];\n    const createNamespaceTracker = () => {\n      let scopes = [];\n      const peek = () => scopes[scopes.length - 1];\n      const track = node => {\n        if (isNonHtmlElementRoot(node)) {\n          scopes.push(node);\n        }\n        let currentScope = peek();\n        if (currentScope && !currentScope.contains(node)) {\n          scopes.pop();\n          currentScope = peek();\n        }\n        return toScopeType(currentScope);\n      };\n      const current = () => toScopeType(peek());\n      const reset = () => {\n        scopes = [];\n      };\n      return {\n        track,\n        current,\n        reset\n      };\n    };\n\n    const transparentBlockAttr = 'data-mce-block';\n    const elementNames = map => filter$5(keys(map), key => !/[A-Z]/.test(key));\n    const makeSelectorFromSchemaMap = map => map$3(elementNames(map), name => {\n      return `${ name }:` + map$3(namespaceElements, ns => `not(${ ns } ${ name })`).join(':');\n    }).join(',');\n    const updateTransparent = (blocksSelector, transparent) => {\n      if (isNonNullable(transparent.querySelector(blocksSelector))) {\n        transparent.setAttribute(transparentBlockAttr, 'true');\n        if (transparent.getAttribute('data-mce-selected') === 'inline-boundary') {\n          transparent.removeAttribute('data-mce-selected');\n        }\n        return true;\n      } else {\n        transparent.removeAttribute(transparentBlockAttr);\n        return false;\n      }\n    };\n    const updateBlockStateOnChildren = (schema, scope) => {\n      const transparentSelector = makeSelectorFromSchemaMap(schema.getTransparentElements());\n      const blocksSelector = makeSelectorFromSchemaMap(schema.getBlockElements());\n      return filter$5(scope.querySelectorAll(transparentSelector), transparent => updateTransparent(blocksSelector, transparent));\n    };\n    const trimEdge = (el, leftSide) => {\n      var _a;\n      const childPropertyName = leftSide ? 'lastChild' : 'firstChild';\n      for (let child = el[childPropertyName]; child; child = child[childPropertyName]) {\n        if (isEmpty$2(SugarElement.fromDom(child))) {\n          (_a = child.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(child);\n          return;\n        }\n      }\n    };\n    const split$2 = (parentElm, splitElm) => {\n      const range = document.createRange();\n      const parentNode = parentElm.parentNode;\n      if (parentNode) {\n        range.setStartBefore(parentElm);\n        range.setEndBefore(splitElm);\n        const beforeFragment = range.extractContents();\n        trimEdge(beforeFragment, true);\n        range.setStartAfter(splitElm);\n        range.setEndAfter(parentElm);\n        const afterFragment = range.extractContents();\n        trimEdge(afterFragment, false);\n        if (!isEmpty$2(SugarElement.fromDom(beforeFragment))) {\n          parentNode.insertBefore(beforeFragment, parentElm);\n        }\n        if (!isEmpty$2(SugarElement.fromDom(splitElm))) {\n          parentNode.insertBefore(splitElm, parentElm);\n        }\n        if (!isEmpty$2(SugarElement.fromDom(afterFragment))) {\n          parentNode.insertBefore(afterFragment, parentElm);\n        }\n        parentNode.removeChild(parentElm);\n      }\n    };\n    const splitInvalidChildren = (schema, scope, transparentBlocks) => {\n      const blocksElements = schema.getBlockElements();\n      const rootNode = SugarElement.fromDom(scope);\n      const isBlock = el => name(el) in blocksElements;\n      const isRoot = el => eq(el, rootNode);\n      each$e(fromDom$1(transparentBlocks), transparentBlock => {\n        ancestor$4(transparentBlock, isBlock, isRoot).each(parentBlock => {\n          const invalidChildren = children(transparentBlock, el => isBlock(el) && !schema.isValidChild(name(parentBlock), name(el)));\n          if (invalidChildren.length > 0) {\n            const stateScope = parentElement(parentBlock);\n            each$e(invalidChildren, child => {\n              ancestor$4(child, isBlock, isRoot).each(parentBlock => {\n                split$2(parentBlock.dom, child.dom);\n              });\n            });\n            stateScope.each(scope => updateBlockStateOnChildren(schema, scope.dom));\n          }\n        });\n      });\n    };\n    const unwrapInvalidChildren = (schema, scope, transparentBlocks) => {\n      each$e([\n        ...transparentBlocks,\n        ...isTransparentBlock(schema, scope) ? [scope] : []\n      ], block => each$e(descendants(SugarElement.fromDom(block), block.nodeName.toLowerCase()), elm => {\n        if (isTransparentInline(schema, elm.dom)) {\n          unwrap(elm);\n        }\n      }));\n    };\n    const updateChildren = (schema, scope) => {\n      const transparentBlocks = updateBlockStateOnChildren(schema, scope);\n      splitInvalidChildren(schema, scope, transparentBlocks);\n      unwrapInvalidChildren(schema, scope, transparentBlocks);\n    };\n    const updateElement = (schema, target) => {\n      if (isTransparentElement(schema, target)) {\n        const blocksSelector = makeSelectorFromSchemaMap(schema.getBlockElements());\n        updateTransparent(blocksSelector, target);\n      }\n    };\n    const updateCaret = (schema, root, caretParent) => {\n      const isRoot = el => eq(el, SugarElement.fromDom(root));\n      const parents = parents$1(SugarElement.fromDom(caretParent), isRoot);\n      get$b(parents, parents.length - 2).filter(isElement$7).fold(() => updateChildren(schema, root), scope => updateChildren(schema, scope.dom));\n    };\n    const hasBlockAttr = el => el.hasAttribute(transparentBlockAttr);\n    const isTransparentElementName = (schema, name) => has$2(schema.getTransparentElements(), name);\n    const isTransparentElement = (schema, node) => isElement$6(node) && isTransparentElementName(schema, node.nodeName);\n    const isTransparentBlock = (schema, node) => isTransparentElement(schema, node) && hasBlockAttr(node);\n    const isTransparentInline = (schema, node) => isTransparentElement(schema, node) && !hasBlockAttr(node);\n    const isTransparentAstBlock = (schema, node) => node.type === 1 && isTransparentElementName(schema, node.name) && isString(node.attr(transparentBlockAttr));\n\n    const browser$2 = detect$2().browser;\n    const firstElement = nodes => find$2(nodes, isElement$7);\n    const getTableCaptionDeltaY = elm => {\n      if (browser$2.isFirefox() && name(elm) === 'table') {\n        return firstElement(children$1(elm)).filter(elm => {\n          return name(elm) === 'caption';\n        }).bind(caption => {\n          return firstElement(nextSiblings(caption)).map(body => {\n            const bodyTop = body.dom.offsetTop;\n            const captionTop = caption.dom.offsetTop;\n            const captionHeight = caption.dom.offsetHeight;\n            return bodyTop <= captionTop ? -captionHeight : 0;\n          });\n        }).getOr(0);\n      } else {\n        return 0;\n      }\n    };\n    const hasChild = (elm, child) => elm.children && contains$2(elm.children, child);\n    const getPos = (body, elm, rootElm) => {\n      let x = 0, y = 0;\n      const doc = body.ownerDocument;\n      rootElm = rootElm ? rootElm : body;\n      if (elm) {\n        if (rootElm === body && elm.getBoundingClientRect && get$7(SugarElement.fromDom(body), 'position') === 'static') {\n          const pos = elm.getBoundingClientRect();\n          x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - doc.documentElement.clientLeft;\n          y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - doc.documentElement.clientTop;\n          return {\n            x,\n            y\n          };\n        }\n        let offsetParent = elm;\n        while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType && !hasChild(offsetParent, rootElm)) {\n          const castOffsetParent = offsetParent;\n          x += castOffsetParent.offsetLeft || 0;\n          y += castOffsetParent.offsetTop || 0;\n          offsetParent = castOffsetParent.offsetParent;\n        }\n        offsetParent = elm.parentNode;\n        while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType && !hasChild(offsetParent, rootElm)) {\n          x -= offsetParent.scrollLeft || 0;\n          y -= offsetParent.scrollTop || 0;\n          offsetParent = offsetParent.parentNode;\n        }\n        y += getTableCaptionDeltaY(SugarElement.fromDom(elm));\n      }\n      return {\n        x,\n        y\n      };\n    };\n\n    const StyleSheetLoader = (documentOrShadowRoot, settings = {}) => {\n      let idCount = 0;\n      const loadedStates = {};\n      const edos = SugarElement.fromDom(documentOrShadowRoot);\n      const doc = documentOrOwner(edos);\n      const _setReferrerPolicy = referrerPolicy => {\n        settings.referrerPolicy = referrerPolicy;\n      };\n      const _setContentCssCors = contentCssCors => {\n        settings.contentCssCors = contentCssCors;\n      };\n      const addStyle = element => {\n        append$1(getStyleContainer(edos), element);\n      };\n      const removeStyle = id => {\n        const styleContainer = getStyleContainer(edos);\n        descendant$1(styleContainer, '#' + id).each(remove$5);\n      };\n      const getOrCreateState = url => get$a(loadedStates, url).getOrThunk(() => ({\n        id: 'mce-u' + idCount++,\n        passed: [],\n        failed: [],\n        count: 0\n      }));\n      const load = url => new Promise((success, failure) => {\n        let link;\n        const urlWithSuffix = Tools._addCacheSuffix(url);\n        const state = getOrCreateState(urlWithSuffix);\n        loadedStates[urlWithSuffix] = state;\n        state.count++;\n        const resolve = (callbacks, status) => {\n          each$e(callbacks, call);\n          state.status = status;\n          state.passed = [];\n          state.failed = [];\n          if (link) {\n            link.onload = null;\n            link.onerror = null;\n            link = null;\n          }\n        };\n        const passed = () => resolve(state.passed, 2);\n        const failed = () => resolve(state.failed, 3);\n        if (success) {\n          state.passed.push(success);\n        }\n        if (failure) {\n          state.failed.push(failure);\n        }\n        if (state.status === 1) {\n          return;\n        }\n        if (state.status === 2) {\n          passed();\n          return;\n        }\n        if (state.status === 3) {\n          failed();\n          return;\n        }\n        state.status = 1;\n        const linkElem = SugarElement.fromTag('link', doc.dom);\n        setAll$1(linkElem, {\n          rel: 'stylesheet',\n          type: 'text/css',\n          id: state.id\n        });\n        if (settings.contentCssCors) {\n          set$3(linkElem, 'crossOrigin', 'anonymous');\n        }\n        if (settings.referrerPolicy) {\n          set$3(linkElem, 'referrerpolicy', settings.referrerPolicy);\n        }\n        link = linkElem.dom;\n        link.onload = passed;\n        link.onerror = failed;\n        addStyle(linkElem);\n        set$3(linkElem, 'href', urlWithSuffix);\n      });\n      const loadRawCss = (key, css) => {\n        const state = getOrCreateState(key);\n        loadedStates[key] = state;\n        state.count++;\n        const styleElem = SugarElement.fromTag('style', doc.dom);\n        setAll$1(styleElem, {\n          rel: 'stylesheet',\n          type: 'text/css',\n          id: state.id\n        });\n        styleElem.dom.innerHTML = css;\n        addStyle(styleElem);\n      };\n      const loadAll = urls => {\n        const loadedUrls = Promise.allSettled(map$3(urls, url => load(url).then(constant(url))));\n        return loadedUrls.then(results => {\n          const parts = partition$2(results, r => r.status === 'fulfilled');\n          if (parts.fail.length > 0) {\n            return Promise.reject(map$3(parts.fail, result => result.reason));\n          } else {\n            return map$3(parts.pass, result => result.value);\n          }\n        });\n      };\n      const unload = url => {\n        const urlWithSuffix = Tools._addCacheSuffix(url);\n        get$a(loadedStates, urlWithSuffix).each(state => {\n          const count = --state.count;\n          if (count === 0) {\n            delete loadedStates[urlWithSuffix];\n            removeStyle(state.id);\n          }\n        });\n      };\n      const unloadRawCss = key => {\n        get$a(loadedStates, key).each(state => {\n          const count = --state.count;\n          if (count === 0) {\n            delete loadedStates[key];\n            removeStyle(state.id);\n          }\n        });\n      };\n      const unloadAll = urls => {\n        each$e(urls, url => {\n          unload(url);\n        });\n      };\n      return {\n        load,\n        loadRawCss,\n        loadAll,\n        unload,\n        unloadRawCss,\n        unloadAll,\n        _setReferrerPolicy,\n        _setContentCssCors\n      };\n    };\n\n    const create$d = () => {\n      const map = new WeakMap();\n      const forElement = (referenceElement, settings) => {\n        const root = getRootNode(referenceElement);\n        const rootDom = root.dom;\n        return Optional.from(map.get(rootDom)).getOrThunk(() => {\n          const sl = StyleSheetLoader(rootDom, settings);\n          map.set(rootDom, sl);\n          return sl;\n        });\n      };\n      return { forElement };\n    };\n    const instance = create$d();\n\n    const isSpan = node => node.nodeName.toLowerCase() === 'span';\n    const isInlineContent = (node, root, schema) => isNonNullable(node) && (isContent$1(node, root) || schema.isInline(node.nodeName.toLowerCase()));\n    const surroundedByInlineContent = (node, root, schema) => {\n      const prev = new DomTreeWalker(node, root).prev(false);\n      const next = new DomTreeWalker(node, root).next(false);\n      const prevIsInline = isUndefined(prev) || isInlineContent(prev, root, schema);\n      const nextIsInline = isUndefined(next) || isInlineContent(next, root, schema);\n      return prevIsInline && nextIsInline;\n    };\n    const isBookmarkNode$2 = node => isSpan(node) && node.getAttribute('data-mce-type') === 'bookmark';\n    const isKeepTextNode = (node, root, schema) => isText$a(node) && node.data.length > 0 && surroundedByInlineContent(node, root, schema);\n    const isKeepElement = node => isElement$6(node) ? node.childNodes.length > 0 : false;\n    const isDocument = node => isDocumentFragment(node) || isDocument$1(node);\n    const trimNode = (dom, node, schema, root) => {\n      var _a;\n      const rootNode = root || node;\n      if (isElement$6(node) && isBookmarkNode$2(node)) {\n        return node;\n      }\n      const children = node.childNodes;\n      for (let i = children.length - 1; i >= 0; i--) {\n        trimNode(dom, children[i], schema, rootNode);\n      }\n      if (isElement$6(node)) {\n        const currentChildren = node.childNodes;\n        if (currentChildren.length === 1 && isBookmarkNode$2(currentChildren[0])) {\n          (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(currentChildren[0], node);\n        }\n      }\n      if (!isDocument(node) && !isContent$1(node, rootNode) && !isKeepElement(node) && !isKeepTextNode(node, rootNode, schema)) {\n        dom.remove(node);\n      }\n      return node;\n    };\n\n    const makeMap$3 = Tools.makeMap;\n    const attrsCharsRegExp = /[&<>\\\"\\u0060\\u007E-\\uD7FF\\uE000-\\uFFEF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n    const textCharsRegExp = /[<>&\\u007E-\\uD7FF\\uE000-\\uFFEF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n    const rawCharsRegExp = /[<>&\\\"\\']/g;\n    const entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi;\n    const asciiMap = {\n      128: '\\u20AC',\n      130: '\\u201A',\n      131: '\\u0192',\n      132: '\\u201E',\n      133: '\\u2026',\n      134: '\\u2020',\n      135: '\\u2021',\n      136: '\\u02c6',\n      137: '\\u2030',\n      138: '\\u0160',\n      139: '\\u2039',\n      140: '\\u0152',\n      142: '\\u017d',\n      145: '\\u2018',\n      146: '\\u2019',\n      147: '\\u201C',\n      148: '\\u201D',\n      149: '\\u2022',\n      150: '\\u2013',\n      151: '\\u2014',\n      152: '\\u02DC',\n      153: '\\u2122',\n      154: '\\u0161',\n      155: '\\u203A',\n      156: '\\u0153',\n      158: '\\u017e',\n      159: '\\u0178'\n    };\n    const baseEntities = {\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '&': '&amp;',\n      '`': '&#96;'\n    };\n    const reverseEntities = {\n      '&lt;': '<',\n      '&gt;': '>',\n      '&amp;': '&',\n      '&quot;': '\"',\n      '&apos;': `'`\n    };\n    const nativeDecode = text => {\n      const elm = SugarElement.fromTag('div').dom;\n      elm.innerHTML = text;\n      return elm.textContent || elm.innerText || text;\n    };\n    const buildEntitiesLookup = (items, radix) => {\n      const lookup = {};\n      if (items) {\n        const itemList = items.split(',');\n        radix = radix || 10;\n        for (let i = 0; i < itemList.length; i += 2) {\n          const chr = String.fromCharCode(parseInt(itemList[i], radix));\n          if (!baseEntities[chr]) {\n            const entity = '&' + itemList[i + 1] + ';';\n            lookup[chr] = entity;\n            lookup[entity] = chr;\n          }\n        }\n        return lookup;\n      } else {\n        return undefined;\n      }\n    };\n    const namedEntities = buildEntitiesLookup('50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' + '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' + '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' + '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' + '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' + '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' + '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' + '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' + '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' + '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' + 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' + 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' + 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' + 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' + 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' + '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' + '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' + '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' + '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' + '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' + 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' + 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' + 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' + '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' + '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);\n    const encodeRaw = (text, attr) => text.replace(attr ? attrsCharsRegExp : textCharsRegExp, chr => {\n      return baseEntities[chr] || chr;\n    });\n    const encodeAllRaw = text => ('' + text).replace(rawCharsRegExp, chr => {\n      return baseEntities[chr] || chr;\n    });\n    const encodeNumeric = (text, attr) => text.replace(attr ? attrsCharsRegExp : textCharsRegExp, chr => {\n      if (chr.length > 1) {\n        return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';\n      }\n      return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';\n    });\n    const encodeNamed = (text, attr, entities) => {\n      const resolveEntities = entities || namedEntities;\n      return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, chr => {\n        return baseEntities[chr] || resolveEntities[chr] || chr;\n      });\n    };\n    const getEncodeFunc = (name, entities) => {\n      const entitiesMap = buildEntitiesLookup(entities) || namedEntities;\n      const encodeNamedAndNumeric = (text, attr) => text.replace(attr ? attrsCharsRegExp : textCharsRegExp, chr => {\n        if (baseEntities[chr] !== undefined) {\n          return baseEntities[chr];\n        }\n        if (entitiesMap[chr] !== undefined) {\n          return entitiesMap[chr];\n        }\n        if (chr.length > 1) {\n          return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';\n        }\n        return '&#' + chr.charCodeAt(0) + ';';\n      });\n      const encodeCustomNamed = (text, attr) => {\n        return encodeNamed(text, attr, entitiesMap);\n      };\n      const nameMap = makeMap$3(name.replace(/\\+/g, ','));\n      if (nameMap.named && nameMap.numeric) {\n        return encodeNamedAndNumeric;\n      }\n      if (nameMap.named) {\n        if (entities) {\n          return encodeCustomNamed;\n        }\n        return encodeNamed;\n      }\n      if (nameMap.numeric) {\n        return encodeNumeric;\n      }\n      return encodeRaw;\n    };\n    const decode = text => text.replace(entityRegExp, (all, numeric) => {\n      if (numeric) {\n        if (numeric.charAt(0).toLowerCase() === 'x') {\n          numeric = parseInt(numeric.substr(1), 16);\n        } else {\n          numeric = parseInt(numeric, 10);\n        }\n        if (numeric > 65535) {\n          numeric -= 65536;\n          return String.fromCharCode(55296 + (numeric >> 10), 56320 + (numeric & 1023));\n        }\n        return asciiMap[numeric] || String.fromCharCode(numeric);\n      }\n      return reverseEntities[all] || namedEntities[all] || nativeDecode(all);\n    });\n    const Entities = {\n      encodeRaw,\n      encodeAllRaw,\n      encodeNumeric,\n      encodeNamed,\n      getEncodeFunc,\n      decode\n    };\n\n    const split$1 = (items, delim) => {\n      items = Tools.trim(items);\n      return items ? items.split(delim || ' ') : [];\n    };\n    const patternToRegExp = str => new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');\n\n    const parseCustomElementsRules = value => {\n      const customElementRegExp = /^(~)?(.+)$/;\n      return bind$3(split$1(value, ','), rule => {\n        const matches = customElementRegExp.exec(rule);\n        if (matches) {\n          const inline = matches[1] === '~';\n          const cloneName = inline ? 'span' : 'div';\n          const name = matches[2];\n          return [{\n              inline,\n              cloneName,\n              name\n            }];\n        } else {\n          return [];\n        }\n      });\n    };\n\n    const getElementSetsAsStrings = type => {\n      let globalAttributes, blockContent;\n      let phrasingContent;\n      globalAttributes = 'id accesskey class dir lang style tabindex title role';\n      blockContent = 'address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul';\n      phrasingContent = 'a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd ' + 'label map noscript object q s samp script select small span strong sub sup ' + 'textarea u var #text #comment';\n      if (type !== 'html4') {\n        const transparentContent = 'a ins del canvas map';\n        globalAttributes += ' contenteditable contextmenu draggable dropzone ' + 'hidden spellcheck translate';\n        blockContent += ' article aside details dialog figure main header footer hgroup section nav ' + transparentContent;\n        phrasingContent += ' audio canvas command datalist mark meter output picture ' + 'progress time wbr video ruby bdi keygen svg';\n      }\n      if (type !== 'html5-strict') {\n        globalAttributes += ' xml:lang';\n        const html4PhrasingContent = 'acronym applet basefont big font strike tt';\n        phrasingContent = [\n          phrasingContent,\n          html4PhrasingContent\n        ].join(' ');\n        const html4BlockContent = 'center dir isindex noframes';\n        blockContent = [\n          blockContent,\n          html4BlockContent\n        ].join(' ');\n      }\n      const flowContent = [\n        blockContent,\n        phrasingContent\n      ].join(' ');\n      return {\n        globalAttributes,\n        blockContent,\n        phrasingContent,\n        flowContent\n      };\n    };\n\n    const makeSchema = type => {\n      const {globalAttributes, phrasingContent, flowContent} = getElementSetsAsStrings(type);\n      const schema = {};\n      const addElement = (name, attributes, children) => {\n        schema[name] = {\n          attributes: mapToObject(attributes, constant({})),\n          attributesOrder: attributes,\n          children: mapToObject(children, constant({}))\n        };\n      };\n      const add = (name, attributes = '', children = '') => {\n        const childNames = split$1(children);\n        const names = split$1(name);\n        let ni = names.length;\n        const allAttributes = split$1([\n          globalAttributes,\n          attributes\n        ].join(' '));\n        while (ni--) {\n          addElement(names[ni], allAttributes.slice(), childNames);\n        }\n      };\n      const addAttrs = (name, attributes) => {\n        const names = split$1(name);\n        const attrs = split$1(attributes);\n        let ni = names.length;\n        while (ni--) {\n          const schemaItem = schema[names[ni]];\n          for (let i = 0, l = attrs.length; i < l; i++) {\n            schemaItem.attributes[attrs[i]] = {};\n            schemaItem.attributesOrder.push(attrs[i]);\n          }\n        }\n      };\n      if (type !== 'html5-strict') {\n        const html4PhrasingContent = 'acronym applet basefont big font strike tt';\n        each$e(split$1(html4PhrasingContent), name => {\n          add(name, '', phrasingContent);\n        });\n        const html4BlockContent = 'center dir isindex noframes';\n        each$e(split$1(html4BlockContent), name => {\n          add(name, '', flowContent);\n        });\n      }\n      add('html', 'manifest', 'head body');\n      add('head', '', 'base command link meta noscript script style title');\n      add('title hr noscript br');\n      add('base', 'href target');\n      add('link', 'href rel media hreflang type sizes hreflang');\n      add('meta', 'name http-equiv content charset');\n      add('style', 'media type scoped');\n      add('script', 'src async defer type charset');\n      add('body', 'onafterprint onbeforeprint onbeforeunload onblur onerror onfocus ' + 'onhashchange onload onmessage onoffline ononline onpagehide onpageshow ' + 'onpopstate onresize onscroll onstorage onunload', flowContent);\n      add('dd div', '', flowContent);\n      add('address dt caption', '', type === 'html4' ? phrasingContent : flowContent);\n      add('h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn', '', phrasingContent);\n      add('blockquote', 'cite', flowContent);\n      add('ol', 'reversed start type', 'li');\n      add('ul', '', 'li');\n      add('li', 'value', flowContent);\n      add('dl', '', 'dt dd');\n      add('a', 'href target rel media hreflang type', type === 'html4' ? phrasingContent : flowContent);\n      add('q', 'cite', phrasingContent);\n      add('ins del', 'cite datetime', flowContent);\n      add('img', 'src sizes srcset alt usemap ismap width height');\n      add('iframe', 'src name width height', flowContent);\n      add('embed', 'src type width height');\n      add('object', 'data type typemustmatch name usemap form width height', [\n        flowContent,\n        'param'\n      ].join(' '));\n      add('param', 'name value');\n      add('map', 'name', [\n        flowContent,\n        'area'\n      ].join(' '));\n      add('area', 'alt coords shape href target rel media hreflang type');\n      add('table', 'border', 'caption colgroup thead tfoot tbody tr' + (type === 'html4' ? ' col' : ''));\n      add('colgroup', 'span', 'col');\n      add('col', 'span');\n      add('tbody thead tfoot', '', 'tr');\n      add('tr', '', 'td th');\n      add('td', 'colspan rowspan headers', flowContent);\n      add('th', 'colspan rowspan headers scope abbr', flowContent);\n      add('form', 'accept-charset action autocomplete enctype method name novalidate target', flowContent);\n      add('fieldset', 'disabled form name', [\n        flowContent,\n        'legend'\n      ].join(' '));\n      add('label', 'form for', phrasingContent);\n      add('input', 'accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate ' + 'formtarget height list max maxlength min multiple name pattern readonly required size src step type value width');\n      add('button', 'disabled form formaction formenctype formmethod formnovalidate formtarget name type value', type === 'html4' ? flowContent : phrasingContent);\n      add('select', 'disabled form multiple name required size', 'option optgroup');\n      add('optgroup', 'disabled label', 'option');\n      add('option', 'disabled label selected value');\n      add('textarea', 'cols dirname disabled form maxlength name readonly required rows wrap');\n      add('menu', 'type label', [\n        flowContent,\n        'li'\n      ].join(' '));\n      add('noscript', '', flowContent);\n      if (type !== 'html4') {\n        add('wbr');\n        add('ruby', '', [\n          phrasingContent,\n          'rt rp'\n        ].join(' '));\n        add('figcaption', '', flowContent);\n        add('mark rt rp bdi', '', phrasingContent);\n        add('summary', '', [\n          phrasingContent,\n          'h1 h2 h3 h4 h5 h6'\n        ].join(' '));\n        add('canvas', 'width height', flowContent);\n        add('video', 'src crossorigin poster preload autoplay mediagroup loop ' + 'muted controls width height buffered', [\n          flowContent,\n          'track source'\n        ].join(' '));\n        add('audio', 'src crossorigin preload autoplay mediagroup loop muted controls ' + 'buffered volume', [\n          flowContent,\n          'track source'\n        ].join(' '));\n        add('picture', '', 'img source');\n        add('source', 'src srcset type media sizes');\n        add('track', 'kind src srclang label default');\n        add('datalist', '', [\n          phrasingContent,\n          'option'\n        ].join(' '));\n        add('article section nav aside main header footer', '', flowContent);\n        add('hgroup', '', 'h1 h2 h3 h4 h5 h6');\n        add('figure', '', [\n          flowContent,\n          'figcaption'\n        ].join(' '));\n        add('time', 'datetime', phrasingContent);\n        add('dialog', 'open', flowContent);\n        add('command', 'type label icon disabled checked radiogroup command');\n        add('output', 'for form name', phrasingContent);\n        add('progress', 'value max', phrasingContent);\n        add('meter', 'value min max low high optimum', phrasingContent);\n        add('details', 'open', [\n          flowContent,\n          'summary'\n        ].join(' '));\n        add('keygen', 'autofocus challenge disabled form keytype name');\n        addElement('svg', 'id tabindex lang xml:space class style x y width height viewBox preserveAspectRatio zoomAndPan transform'.split(' '), []);\n      }\n      if (type !== 'html5-strict') {\n        addAttrs('script', 'language xml:space');\n        addAttrs('style', 'xml:space');\n        addAttrs('object', 'declare classid code codebase codetype archive standby align border hspace vspace');\n        addAttrs('embed', 'align name hspace vspace');\n        addAttrs('param', 'valuetype type');\n        addAttrs('a', 'charset name rev shape coords');\n        addAttrs('br', 'clear');\n        addAttrs('applet', 'codebase archive code object alt name width height align hspace vspace');\n        addAttrs('img', 'name longdesc align border hspace vspace');\n        addAttrs('iframe', 'longdesc frameborder marginwidth marginheight scrolling align');\n        addAttrs('font basefont', 'size color face');\n        addAttrs('input', 'usemap align');\n        addAttrs('select');\n        addAttrs('textarea');\n        addAttrs('h1 h2 h3 h4 h5 h6 div p legend caption', 'align');\n        addAttrs('ul', 'type compact');\n        addAttrs('li', 'type');\n        addAttrs('ol dl menu dir', 'compact');\n        addAttrs('pre', 'width xml:space');\n        addAttrs('hr', 'align noshade size width');\n        addAttrs('isindex', 'prompt');\n        addAttrs('table', 'summary width frame rules cellspacing cellpadding align bgcolor');\n        addAttrs('col', 'width align char charoff valign');\n        addAttrs('colgroup', 'width align char charoff valign');\n        addAttrs('thead', 'align char charoff valign');\n        addAttrs('tr', 'align char charoff valign bgcolor');\n        addAttrs('th', 'axis align char charoff valign nowrap bgcolor width height');\n        addAttrs('form', 'accept');\n        addAttrs('td', 'abbr axis scope align char charoff valign nowrap bgcolor width height');\n        addAttrs('tfoot', 'align char charoff valign');\n        addAttrs('tbody', 'align char charoff valign');\n        addAttrs('area', 'nohref');\n        addAttrs('body', 'background bgcolor text link vlink alink');\n      }\n      if (type !== 'html4') {\n        addAttrs('input button select textarea', 'autofocus');\n        addAttrs('input textarea', 'placeholder');\n        addAttrs('a', 'download');\n        addAttrs('link script img', 'crossorigin');\n        addAttrs('img', 'loading');\n        addAttrs('iframe', 'sandbox seamless allow allowfullscreen loading');\n      }\n      if (type !== 'html4') {\n        each$e([\n          schema.video,\n          schema.audio\n        ], item => {\n          delete item.children.audio;\n          delete item.children.video;\n        });\n      }\n      each$e(split$1('a form meter progress dfn'), name => {\n        if (schema[name]) {\n          delete schema[name].children[name];\n        }\n      });\n      delete schema.caption.children.table;\n      delete schema.script;\n      return schema;\n    };\n\n    const prefixToOperation = prefix => prefix === '-' ? 'remove' : 'add';\n    const parseValidChildrenRules = value => {\n      const childRuleRegExp = /^([+\\-]?)([A-Za-z0-9_\\-.\\u00b7\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u037d\\u037f-\\u1fff\\u200c-\\u200d\\u203f-\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]+)\\[([^\\]]+)]$/;\n      return bind$3(split$1(value, ','), rule => {\n        const matches = childRuleRegExp.exec(rule);\n        if (matches) {\n          const prefix = matches[1];\n          const operation = prefix ? prefixToOperation(prefix) : 'replace';\n          const name = matches[2];\n          const validChildren = split$1(matches[3], '|');\n          return [{\n              operation,\n              name,\n              validChildren\n            }];\n        } else {\n          return [];\n        }\n      });\n    };\n\n    const parseValidElementsAttrDataIntoElement = (attrData, targetElement) => {\n      const attrRuleRegExp = /^([!\\-])?(\\w+[\\\\:]:\\w+|[^=~<]+)?(?:([=~<])(.*))?$/;\n      const hasPatternsRegExp = /[*?+]/;\n      const {attributes, attributesOrder} = targetElement;\n      return each$e(split$1(attrData, '|'), rule => {\n        const matches = attrRuleRegExp.exec(rule);\n        if (matches) {\n          const attr = {};\n          const attrType = matches[1];\n          const attrName = matches[2].replace(/[\\\\:]:/g, ':');\n          const attrPrefix = matches[3];\n          const value = matches[4];\n          if (attrType === '!') {\n            targetElement.attributesRequired = targetElement.attributesRequired || [];\n            targetElement.attributesRequired.push(attrName);\n            attr.required = true;\n          }\n          if (attrType === '-') {\n            delete attributes[attrName];\n            attributesOrder.splice(Tools.inArray(attributesOrder, attrName), 1);\n            return;\n          }\n          if (attrPrefix) {\n            if (attrPrefix === '=') {\n              targetElement.attributesDefault = targetElement.attributesDefault || [];\n              targetElement.attributesDefault.push({\n                name: attrName,\n                value\n              });\n              attr.defaultValue = value;\n            } else if (attrPrefix === '~') {\n              targetElement.attributesForced = targetElement.attributesForced || [];\n              targetElement.attributesForced.push({\n                name: attrName,\n                value\n              });\n              attr.forcedValue = value;\n            } else if (attrPrefix === '<') {\n              attr.validValues = Tools.makeMap(value, '?');\n            }\n          }\n          if (hasPatternsRegExp.test(attrName)) {\n            const attrPattern = attr;\n            targetElement.attributePatterns = targetElement.attributePatterns || [];\n            attrPattern.pattern = patternToRegExp(attrName);\n            targetElement.attributePatterns.push(attrPattern);\n          } else {\n            if (!attributes[attrName]) {\n              attributesOrder.push(attrName);\n            }\n            attributes[attrName] = attr;\n          }\n        }\n      });\n    };\n    const cloneAttributesInto = (from, to) => {\n      each$d(from.attributes, (value, key) => {\n        to.attributes[key] = value;\n      });\n      to.attributesOrder.push(...from.attributesOrder);\n    };\n    const parseValidElementsRules = (globalElement, validElements) => {\n      const elementRuleRegExp = /^([#+\\-])?([^\\[!\\/]+)(?:\\/([^\\[!]+))?(?:(!?)\\[([^\\]]+)])?$/;\n      return bind$3(split$1(validElements, ','), rule => {\n        const matches = elementRuleRegExp.exec(rule);\n        if (matches) {\n          const prefix = matches[1];\n          const elementName = matches[2];\n          const outputName = matches[3];\n          const attrsPrefix = matches[4];\n          const attrData = matches[5];\n          const element = {\n            attributes: {},\n            attributesOrder: []\n          };\n          globalElement.each(el => cloneAttributesInto(el, element));\n          if (prefix === '#') {\n            element.paddEmpty = true;\n          } else if (prefix === '-') {\n            element.removeEmpty = true;\n          }\n          if (attrsPrefix === '!') {\n            element.removeEmptyAttrs = true;\n          }\n          if (attrData) {\n            parseValidElementsAttrDataIntoElement(attrData, element);\n          }\n          if (outputName) {\n            element.outputName = elementName;\n          }\n          if (elementName === '@') {\n            if (globalElement.isNone()) {\n              globalElement = Optional.some(element);\n            } else {\n              return [];\n            }\n          }\n          return [outputName ? {\n              name: elementName,\n              element,\n              aliasName: outputName\n            } : {\n              name: elementName,\n              element\n            }];\n        } else {\n          return [];\n        }\n      });\n    };\n\n    const mapCache = {};\n    const makeMap$2 = Tools.makeMap, each$b = Tools.each, extend$2 = Tools.extend, explode$2 = Tools.explode;\n    const createMap = (defaultValue, extendWith = {}) => {\n      const value = makeMap$2(defaultValue, ' ', makeMap$2(defaultValue.toUpperCase(), ' '));\n      return extend$2(value, extendWith);\n    };\n    const getTextRootBlockElements = schema => createMap('td th li dt dd figcaption caption details summary', schema.getTextBlockElements());\n    const compileElementMap = (value, mode) => {\n      if (value) {\n        const styles = {};\n        if (isString(value)) {\n          value = { '*': value };\n        }\n        each$b(value, (value, key) => {\n          styles[key] = styles[key.toUpperCase()] = mode === 'map' ? makeMap$2(value, /[, ]/) : explode$2(value, /[, ]/);\n        });\n        return styles;\n      } else {\n        return undefined;\n      }\n    };\n    const Schema = (settings = {}) => {\n      var _a;\n      const elements = {};\n      const children = {};\n      let patternElements = [];\n      const customElementsMap = {};\n      const specialElements = {};\n      const createLookupTable = (option, defaultValue, extendWith) => {\n        const value = settings[option];\n        if (!value) {\n          let newValue = mapCache[option];\n          if (!newValue) {\n            newValue = createMap(defaultValue, extendWith);\n            mapCache[option] = newValue;\n          }\n          return newValue;\n        } else {\n          return makeMap$2(value, /[, ]/, makeMap$2(value.toUpperCase(), /[, ]/));\n        }\n      };\n      const schemaType = (_a = settings.schema) !== null && _a !== void 0 ? _a : 'html5';\n      const schemaItems = makeSchema(schemaType);\n      if (settings.verify_html === false) {\n        settings.valid_elements = '*[*]';\n      }\n      const validStyles = compileElementMap(settings.valid_styles);\n      const invalidStyles = compileElementMap(settings.invalid_styles, 'map');\n      const validClasses = compileElementMap(settings.valid_classes, 'map');\n      const whitespaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object code');\n      const selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');\n      const voidElementsMap = createLookupTable('void_elements', 'area base basefont br col frame hr img input isindex link ' + 'meta param embed source wbr track');\n      const boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' + 'noshade nowrap readonly selected autoplay loop controls allowfullscreen');\n      const nonEmptyOrMoveCaretBeforeOnEnter = 'td th iframe video audio object script code';\n      const nonEmptyElementsMap = createLookupTable('non_empty_elements', nonEmptyOrMoveCaretBeforeOnEnter + ' pre svg', voidElementsMap);\n      const moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', nonEmptyOrMoveCaretBeforeOnEnter + ' table', voidElementsMap);\n      const headings = 'h1 h2 h3 h4 h5 h6';\n      const textBlockElementsMap = createLookupTable('text_block_elements', headings + ' p div address pre form ' + 'blockquote center dir fieldset header footer article section hgroup aside main nav figure');\n      const blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' + 'th tr td li ol ul caption dl dt dd noscript menu isindex option ' + 'datalist select optgroup figcaption details summary html body multicol listing', textBlockElementsMap);\n      const textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font s strike u var cite ' + 'dfn code mark q sup sub samp');\n      const transparentElementsMap = createLookupTable('transparent_elements', 'a ins del canvas map');\n      const wrapBlockElementsMap = createLookupTable('wrap_block_elements', 'pre ' + headings);\n      each$b('script noscript iframe noframes noembed title style textarea xmp plaintext'.split(' '), name => {\n        specialElements[name] = new RegExp('</' + name + '[^>]*>', 'gi');\n      });\n      const addValidElements = validElements => {\n        const globalElement = Optional.from(elements['@']);\n        const hasPatternsRegExp = /[*?+]/;\n        each$e(parseValidElementsRules(globalElement, validElements !== null && validElements !== void 0 ? validElements : ''), ({name, element, aliasName}) => {\n          if (aliasName) {\n            elements[aliasName] = element;\n          }\n          if (hasPatternsRegExp.test(name)) {\n            const patternElement = element;\n            patternElement.pattern = patternToRegExp(name);\n            patternElements.push(patternElement);\n          } else {\n            elements[name] = element;\n          }\n        });\n      };\n      const setValidElements = validElements => {\n        patternElements = [];\n        each$e(keys(elements), name => {\n          delete elements[name];\n        });\n        addValidElements(validElements);\n      };\n      const addCustomElements = customElements => {\n        delete mapCache.text_block_elements;\n        delete mapCache.block_elements;\n        each$e(parseCustomElementsRules(customElements !== null && customElements !== void 0 ? customElements : ''), ({inline, name, cloneName}) => {\n          children[name] = children[cloneName];\n          customElementsMap[name] = cloneName;\n          nonEmptyElementsMap[name.toUpperCase()] = {};\n          nonEmptyElementsMap[name] = {};\n          if (!inline) {\n            blockElementsMap[name.toUpperCase()] = {};\n            blockElementsMap[name] = {};\n          }\n          if (!elements[name]) {\n            let customRule = elements[cloneName];\n            customRule = extend$2({}, customRule);\n            delete customRule.removeEmptyAttrs;\n            delete customRule.removeEmpty;\n            elements[name] = customRule;\n          }\n          each$d(children, (element, elmName) => {\n            if (element[cloneName]) {\n              children[elmName] = element = extend$2({}, children[elmName]);\n              element[name] = element[cloneName];\n            }\n          });\n        });\n      };\n      const addValidChildren = validChildren => {\n        each$e(parseValidChildrenRules(validChildren !== null && validChildren !== void 0 ? validChildren : ''), ({operation, name, validChildren}) => {\n          const parent = operation === 'replace' ? { '#comment': {} } : children[name];\n          each$e(validChildren, child => {\n            if (operation === 'remove') {\n              delete parent[child];\n            } else {\n              parent[child] = {};\n            }\n          });\n          children[name] = parent;\n        });\n      };\n      const getElementRule = name => {\n        const element = elements[name];\n        if (element) {\n          return element;\n        }\n        let i = patternElements.length;\n        while (i--) {\n          const patternElement = patternElements[i];\n          if (patternElement.pattern.test(name)) {\n            return patternElement;\n          }\n        }\n        return undefined;\n      };\n      if (!settings.valid_elements) {\n        each$b(schemaItems, (element, name) => {\n          elements[name] = {\n            attributes: element.attributes,\n            attributesOrder: element.attributesOrder\n          };\n          children[name] = element.children;\n        });\n        each$b(split$1('strong/b em/i'), item => {\n          const items = split$1(item, '/');\n          elements[items[1]].outputName = items[0];\n        });\n        each$b(textInlineElementsMap, (_val, name) => {\n          if (elements[name]) {\n            if (settings.padd_empty_block_inline_children) {\n              elements[name].paddInEmptyBlock = true;\n            }\n            elements[name].removeEmpty = true;\n          }\n        });\n        each$b(split$1('ol ul blockquote a table tbody'), name => {\n          if (elements[name]) {\n            elements[name].removeEmpty = true;\n          }\n        });\n        each$b(split$1('p h1 h2 h3 h4 h5 h6 th td pre div address caption li summary'), name => {\n          if (elements[name]) {\n            elements[name].paddEmpty = true;\n          }\n        });\n        each$b(split$1('span'), name => {\n          elements[name].removeEmptyAttrs = true;\n        });\n      } else {\n        setValidElements(settings.valid_elements);\n        each$b(schemaItems, (element, name) => {\n          children[name] = element.children;\n        });\n      }\n      delete elements.svg;\n      addCustomElements(settings.custom_elements);\n      addValidChildren(settings.valid_children);\n      addValidElements(settings.extended_valid_elements);\n      addValidChildren('+ol[ul|ol],+ul[ul|ol]');\n      each$b({\n        dd: 'dl',\n        dt: 'dl',\n        li: 'ul ol',\n        td: 'tr',\n        th: 'tr',\n        tr: 'tbody thead tfoot',\n        tbody: 'table',\n        thead: 'table',\n        tfoot: 'table',\n        legend: 'fieldset',\n        area: 'map',\n        param: 'video audio object'\n      }, (parents, item) => {\n        if (elements[item]) {\n          elements[item].parentsRequired = split$1(parents);\n        }\n      });\n      if (settings.invalid_elements) {\n        each$b(explode$2(settings.invalid_elements), item => {\n          if (elements[item]) {\n            delete elements[item];\n          }\n        });\n      }\n      if (!getElementRule('span')) {\n        addValidElements('span[!data-mce-type|*]');\n      }\n      const getValidStyles = constant(validStyles);\n      const getInvalidStyles = constant(invalidStyles);\n      const getValidClasses = constant(validClasses);\n      const getBoolAttrs = constant(boolAttrMap);\n      const getBlockElements = constant(blockElementsMap);\n      const getTextBlockElements = constant(textBlockElementsMap);\n      const getTextInlineElements = constant(textInlineElementsMap);\n      const getVoidElements = constant(Object.seal(voidElementsMap));\n      const getSelfClosingElements = constant(selfClosingElementsMap);\n      const getNonEmptyElements = constant(nonEmptyElementsMap);\n      const getMoveCaretBeforeOnEnterElements = constant(moveCaretBeforeOnEnterElementsMap);\n      const getWhitespaceElements = constant(whitespaceElementsMap);\n      const getTransparentElements = constant(transparentElementsMap);\n      const getWrapBlockElements = constant(wrapBlockElementsMap);\n      const getSpecialElements = constant(Object.seal(specialElements));\n      const isValidChild = (name, child) => {\n        const parent = children[name.toLowerCase()];\n        return !!(parent && parent[child.toLowerCase()]);\n      };\n      const isValid = (name, attr) => {\n        const rule = getElementRule(name);\n        if (rule) {\n          if (attr) {\n            if (rule.attributes[attr]) {\n              return true;\n            }\n            const attrPatterns = rule.attributePatterns;\n            if (attrPatterns) {\n              let i = attrPatterns.length;\n              while (i--) {\n                if (attrPatterns[i].pattern.test(attr)) {\n                  return true;\n                }\n              }\n            }\n          } else {\n            return true;\n          }\n        }\n        return false;\n      };\n      const isBlock = name => has$2(getBlockElements(), name);\n      const isInline = name => !startsWith(name, '#') && isValid(name) && !isBlock(name);\n      const isWrapper = name => has$2(getWrapBlockElements(), name) || isInline(name);\n      const getCustomElements = constant(customElementsMap);\n      return {\n        type: schemaType,\n        children,\n        elements,\n        getValidStyles,\n        getValidClasses,\n        getBlockElements,\n        getInvalidStyles,\n        getVoidElements,\n        getTextBlockElements,\n        getTextInlineElements,\n        getBoolAttrs,\n        getElementRule,\n        getSelfClosingElements,\n        getNonEmptyElements,\n        getMoveCaretBeforeOnEnterElements,\n        getWhitespaceElements,\n        getTransparentElements,\n        getSpecialElements,\n        isValidChild,\n        isValid,\n        isBlock,\n        isInline,\n        isWrapper,\n        getCustomElements,\n        addValidElements,\n        setValidElements,\n        addCustomElements,\n        addValidChildren\n      };\n    };\n\n    const hexColour = value => ({ value: normalizeHex(value) });\n    const normalizeHex = hex => removeLeading(hex, '#').toUpperCase();\n    const toHex = component => {\n      const hex = component.toString(16);\n      return (hex.length === 1 ? '0' + hex : hex).toUpperCase();\n    };\n    const fromRgba = rgbaColour => {\n      const value = toHex(rgbaColour.red) + toHex(rgbaColour.green) + toHex(rgbaColour.blue);\n      return hexColour(value);\n    };\n\n    const rgbRegex = /^\\s*rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)\\s*$/i;\n    const rgbaRegex = /^\\s*rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d?(?:\\.\\d+)?)\\s*\\)\\s*$/i;\n    const rgbaColour = (red, green, blue, alpha) => ({\n      red,\n      green,\n      blue,\n      alpha\n    });\n    const fromStringValues = (red, green, blue, alpha) => {\n      const r = parseInt(red, 10);\n      const g = parseInt(green, 10);\n      const b = parseInt(blue, 10);\n      const a = parseFloat(alpha);\n      return rgbaColour(r, g, b, a);\n    };\n    const fromString = rgbaString => {\n      if (rgbaString === 'transparent') {\n        return Optional.some(rgbaColour(0, 0, 0, 0));\n      }\n      const rgbMatch = rgbRegex.exec(rgbaString);\n      if (rgbMatch !== null) {\n        return Optional.some(fromStringValues(rgbMatch[1], rgbMatch[2], rgbMatch[3], '1'));\n      }\n      const rgbaMatch = rgbaRegex.exec(rgbaString);\n      if (rgbaMatch !== null) {\n        return Optional.some(fromStringValues(rgbaMatch[1], rgbaMatch[2], rgbaMatch[3], rgbaMatch[4]));\n      }\n      return Optional.none();\n    };\n    const toString = rgba => `rgba(${ rgba.red },${ rgba.green },${ rgba.blue },${ rgba.alpha })`;\n\n    const rgbaToHexString = color => fromString(color).map(fromRgba).map(h => '#' + h.value).getOr(color);\n\n    const Styles = (settings = {}, schema) => {\n      const urlOrStrRegExp = /(?:url(?:(?:\\(\\s*\\\"([^\\\"]+)\\\"\\s*\\))|(?:\\(\\s*\\'([^\\']+)\\'\\s*\\))|(?:\\(\\s*([^)\\s]+)\\s*\\))))|(?:\\'([^\\']+)\\')|(?:\\\"([^\\\"]+)\\\")/gi;\n      const styleRegExp = /\\s*([^:]+):\\s*([^;]+);?/g;\n      const trimRightRegExp = /\\s+$/;\n      const encodingLookup = {};\n      let validStyles;\n      let invalidStyles;\n      const invisibleChar = zeroWidth;\n      if (schema) {\n        validStyles = schema.getValidStyles();\n        invalidStyles = schema.getInvalidStyles();\n      }\n      const encodingItems = (`\\\\\" \\\\' \\\\; \\\\: ; : ` + invisibleChar).split(' ');\n      for (let i = 0; i < encodingItems.length; i++) {\n        encodingLookup[encodingItems[i]] = invisibleChar + i;\n        encodingLookup[invisibleChar + i] = encodingItems[i];\n      }\n      const self = {\n        parse: css => {\n          const styles = {};\n          let isEncoded = false;\n          const urlConverter = settings.url_converter;\n          const urlConverterScope = settings.url_converter_scope || self;\n          const compress = (prefix, suffix, noJoin) => {\n            const top = styles[prefix + '-top' + suffix];\n            if (!top) {\n              return;\n            }\n            const right = styles[prefix + '-right' + suffix];\n            if (!right) {\n              return;\n            }\n            const bottom = styles[prefix + '-bottom' + suffix];\n            if (!bottom) {\n              return;\n            }\n            const left = styles[prefix + '-left' + suffix];\n            if (!left) {\n              return;\n            }\n            const box = [\n              top,\n              right,\n              bottom,\n              left\n            ];\n            let i = box.length - 1;\n            while (i--) {\n              if (box[i] !== box[i + 1]) {\n                break;\n              }\n            }\n            if (i > -1 && noJoin) {\n              return;\n            }\n            styles[prefix + suffix] = i === -1 ? box[0] : box.join(' ');\n            delete styles[prefix + '-top' + suffix];\n            delete styles[prefix + '-right' + suffix];\n            delete styles[prefix + '-bottom' + suffix];\n            delete styles[prefix + '-left' + suffix];\n          };\n          const canCompress = key => {\n            const value = styles[key];\n            if (!value) {\n              return;\n            }\n            const values = value.indexOf(',') > -1 ? [value] : value.split(' ');\n            let i = values.length;\n            while (i--) {\n              if (values[i] !== values[0]) {\n                return false;\n              }\n            }\n            styles[key] = values[0];\n            return true;\n          };\n          const compress2 = (target, a, b, c) => {\n            if (!canCompress(a)) {\n              return;\n            }\n            if (!canCompress(b)) {\n              return;\n            }\n            if (!canCompress(c)) {\n              return;\n            }\n            styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];\n            delete styles[a];\n            delete styles[b];\n            delete styles[c];\n          };\n          const encode = str => {\n            isEncoded = true;\n            return encodingLookup[str];\n          };\n          const decode = (str, keepSlashes) => {\n            if (isEncoded) {\n              str = str.replace(/\\uFEFF[0-9]/g, str => {\n                return encodingLookup[str];\n              });\n            }\n            if (!keepSlashes) {\n              str = str.replace(/\\\\([\\'\\\";:])/g, '$1');\n            }\n            return str;\n          };\n          const decodeSingleHexSequence = escSeq => {\n            return String.fromCharCode(parseInt(escSeq.slice(1), 16));\n          };\n          const decodeHexSequences = value => {\n            return value.replace(/\\\\[0-9a-f]+/gi, decodeSingleHexSequence);\n          };\n          const processUrl = (match, url, url2, url3, str, str2) => {\n            str = str || str2;\n            if (str) {\n              str = decode(str);\n              return `'` + str.replace(/\\'/g, `\\\\'`) + `'`;\n            }\n            url = decode(url || url2 || url3 || '');\n            if (!settings.allow_script_urls) {\n              const scriptUrl = url.replace(/[\\s\\r\\n]+/g, '');\n              if (/(java|vb)script:/i.test(scriptUrl)) {\n                return '';\n              }\n              if (!settings.allow_svg_data_urls && /^data:image\\/svg/i.test(scriptUrl)) {\n                return '';\n              }\n            }\n            if (urlConverter) {\n              url = urlConverter.call(urlConverterScope, url, 'style');\n            }\n            return `url('` + url.replace(/\\'/g, `\\\\'`) + `')`;\n          };\n          if (css) {\n            css = css.replace(/[\\u0000-\\u001F]/g, '');\n            css = css.replace(/\\\\[\\\"\\';:\\uFEFF]/g, encode).replace(/\\\"[^\\\"]+\\\"|\\'[^\\']+\\'/g, str => {\n              return str.replace(/[;:]/g, encode);\n            });\n            let matches;\n            while (matches = styleRegExp.exec(css)) {\n              styleRegExp.lastIndex = matches.index + matches[0].length;\n              let name = matches[1].replace(trimRightRegExp, '').toLowerCase();\n              let value = matches[2].replace(trimRightRegExp, '');\n              if (name && value) {\n                name = decodeHexSequences(name);\n                value = decodeHexSequences(value);\n                if (name.indexOf(invisibleChar) !== -1 || name.indexOf('\"') !== -1) {\n                  continue;\n                }\n                if (!settings.allow_script_urls && (name === 'behavior' || /expression\\s*\\(|\\/\\*|\\*\\//.test(value))) {\n                  continue;\n                }\n                if (name === 'font-weight' && value === '700') {\n                  value = 'bold';\n                } else if (name === 'color' || name === 'background-color') {\n                  value = value.toLowerCase();\n                }\n                if (isString(settings.force_hex_color) && settings.force_hex_color !== 'off') {\n                  fromString(value).each(rgba => {\n                    if (settings.force_hex_color === 'always' || rgba.alpha === 1) {\n                      value = rgbaToHexString(toString(rgba));\n                    }\n                  });\n                }\n                value = value.replace(urlOrStrRegExp, processUrl);\n                styles[name] = isEncoded ? decode(value, true) : value;\n              }\n            }\n            compress('border', '', true);\n            compress('border', '-width');\n            compress('border', '-color');\n            compress('border', '-style');\n            compress('padding', '');\n            compress('margin', '');\n            compress2('border', 'border-width', 'border-style', 'border-color');\n            if (styles.border === 'medium none') {\n              delete styles.border;\n            }\n            if (styles['border-image'] === 'none') {\n              delete styles['border-image'];\n            }\n          }\n          return styles;\n        },\n        serialize: (styles, elementName) => {\n          let css = '';\n          const serializeStyles = (elemName, validStyleList) => {\n            const styleList = validStyleList[elemName];\n            if (styleList) {\n              for (let i = 0, l = styleList.length; i < l; i++) {\n                const name = styleList[i];\n                const value = styles[name];\n                if (value) {\n                  css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\n                }\n              }\n            }\n          };\n          const isValid = (name, elemName) => {\n            if (!invalidStyles || !elemName) {\n              return true;\n            }\n            let styleMap = invalidStyles['*'];\n            if (styleMap && styleMap[name]) {\n              return false;\n            }\n            styleMap = invalidStyles[elemName];\n            return !(styleMap && styleMap[name]);\n          };\n          if (elementName && validStyles) {\n            serializeStyles('*', validStyles);\n            serializeStyles(elementName, validStyles);\n          } else {\n            each$d(styles, (value, name) => {\n              if (value && isValid(name, elementName)) {\n                css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\n              }\n            });\n          }\n          return css;\n        }\n      };\n      return self;\n    };\n\n    const deprecated = {\n      keyLocation: true,\n      layerX: true,\n      layerY: true,\n      returnValue: true,\n      webkitMovementX: true,\n      webkitMovementY: true,\n      keyIdentifier: true,\n      mozPressure: true\n    };\n    const isNativeEvent = event => event instanceof Event || isFunction(event.initEvent);\n    const hasIsDefaultPrevented = event => event.isDefaultPrevented === always || event.isDefaultPrevented === never;\n    const needsNormalizing = event => isNullable(event.preventDefault) || isNativeEvent(event);\n    const clone$3 = (originalEvent, data) => {\n      const event = data !== null && data !== void 0 ? data : {};\n      for (const name in originalEvent) {\n        if (!has$2(deprecated, name)) {\n          event[name] = originalEvent[name];\n        }\n      }\n      if (isNonNullable(originalEvent.composedPath)) {\n        event.composedPath = () => originalEvent.composedPath();\n      }\n      if (isNonNullable(originalEvent.getModifierState)) {\n        event.getModifierState = keyArg => originalEvent.getModifierState(keyArg);\n      }\n      if (isNonNullable(originalEvent.getTargetRanges)) {\n        event.getTargetRanges = () => originalEvent.getTargetRanges();\n      }\n      return event;\n    };\n    const normalize$3 = (type, originalEvent, fallbackTarget, data) => {\n      var _a;\n      const event = clone$3(originalEvent, data);\n      event.type = type;\n      if (isNullable(event.target)) {\n        event.target = (_a = event.srcElement) !== null && _a !== void 0 ? _a : fallbackTarget;\n      }\n      if (needsNormalizing(originalEvent)) {\n        event.preventDefault = () => {\n          event.defaultPrevented = true;\n          event.isDefaultPrevented = always;\n          if (isFunction(originalEvent.preventDefault)) {\n            originalEvent.preventDefault();\n          }\n        };\n        event.stopPropagation = () => {\n          event.cancelBubble = true;\n          event.isPropagationStopped = always;\n          if (isFunction(originalEvent.stopPropagation)) {\n            originalEvent.stopPropagation();\n          }\n        };\n        event.stopImmediatePropagation = () => {\n          event.isImmediatePropagationStopped = always;\n          event.stopPropagation();\n        };\n        if (!hasIsDefaultPrevented(event)) {\n          event.isDefaultPrevented = event.defaultPrevented === true ? always : never;\n          event.isPropagationStopped = event.cancelBubble === true ? always : never;\n          event.isImmediatePropagationStopped = never;\n        }\n      }\n      return event;\n    };\n\n    const eventExpandoPrefix = 'mce-data-';\n    const mouseEventRe = /^(?:mouse|contextmenu)|click/;\n    const addEvent = (target, name, callback, capture) => {\n      target.addEventListener(name, callback, capture || false);\n    };\n    const removeEvent = (target, name, callback, capture) => {\n      target.removeEventListener(name, callback, capture || false);\n    };\n    const isMouseEvent = event => isNonNullable(event) && mouseEventRe.test(event.type);\n    const fix = (originalEvent, data) => {\n      const event = normalize$3(originalEvent.type, originalEvent, document, data);\n      if (isMouseEvent(originalEvent) && isUndefined(originalEvent.pageX) && !isUndefined(originalEvent.clientX)) {\n        const eventDoc = event.target.ownerDocument || document;\n        const doc = eventDoc.documentElement;\n        const body = eventDoc.body;\n        const mouseEvent = event;\n        mouseEvent.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n        mouseEvent.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n      }\n      return event;\n    };\n    const bindOnReady = (win, callback, eventUtils) => {\n      const doc = win.document, event = { type: 'ready' };\n      if (eventUtils.domLoaded) {\n        callback(event);\n        return;\n      }\n      const isDocReady = () => {\n        return doc.readyState === 'complete' || doc.readyState === 'interactive' && doc.body;\n      };\n      const readyHandler = () => {\n        removeEvent(win, 'DOMContentLoaded', readyHandler);\n        removeEvent(win, 'load', readyHandler);\n        if (!eventUtils.domLoaded) {\n          eventUtils.domLoaded = true;\n          callback(event);\n        }\n        win = null;\n      };\n      if (isDocReady()) {\n        readyHandler();\n      } else {\n        addEvent(win, 'DOMContentLoaded', readyHandler);\n      }\n      if (!eventUtils.domLoaded) {\n        addEvent(win, 'load', readyHandler);\n      }\n    };\n    class EventUtils {\n      constructor() {\n        this.domLoaded = false;\n        this.events = {};\n        this.count = 1;\n        this.expando = eventExpandoPrefix + (+new Date()).toString(32);\n        this.hasFocusIn = 'onfocusin' in document.documentElement;\n        this.count = 1;\n      }\n      bind(target, names, callback, scope) {\n        const self = this;\n        let callbackList;\n        const win = window;\n        const defaultNativeHandler = evt => {\n          self.executeHandlers(fix(evt || win.event), id);\n        };\n        if (!target || isText$a(target) || isComment(target)) {\n          return callback;\n        }\n        let id;\n        if (!target[self.expando]) {\n          id = self.count++;\n          target[self.expando] = id;\n          self.events[id] = {};\n        } else {\n          id = target[self.expando];\n        }\n        scope = scope || target;\n        const namesList = names.split(' ');\n        let i = namesList.length;\n        while (i--) {\n          let name = namesList[i];\n          let nativeHandler = defaultNativeHandler;\n          let capture = false;\n          let fakeName = false;\n          if (name === 'DOMContentLoaded') {\n            name = 'ready';\n          }\n          if (self.domLoaded && name === 'ready' && target.readyState === 'complete') {\n            callback.call(scope, fix({ type: name }));\n            continue;\n          }\n          if (!self.hasFocusIn && (name === 'focusin' || name === 'focusout')) {\n            capture = true;\n            fakeName = name === 'focusin' ? 'focus' : 'blur';\n            nativeHandler = evt => {\n              const event = fix(evt || win.event);\n              event.type = event.type === 'focus' ? 'focusin' : 'focusout';\n              self.executeHandlers(event, id);\n            };\n          }\n          callbackList = self.events[id][name];\n          if (!callbackList) {\n            self.events[id][name] = callbackList = [{\n                func: callback,\n                scope\n              }];\n            callbackList.fakeName = fakeName;\n            callbackList.capture = capture;\n            callbackList.nativeHandler = nativeHandler;\n            if (name === 'ready') {\n              bindOnReady(target, nativeHandler, self);\n            } else {\n              addEvent(target, fakeName || name, nativeHandler, capture);\n            }\n          } else {\n            if (name === 'ready' && self.domLoaded) {\n              callback(fix({ type: name }));\n            } else {\n              callbackList.push({\n                func: callback,\n                scope\n              });\n            }\n          }\n        }\n        target = callbackList = null;\n        return callback;\n      }\n      unbind(target, names, callback) {\n        if (!target || isText$a(target) || isComment(target)) {\n          return this;\n        }\n        const id = target[this.expando];\n        if (id) {\n          let eventMap = this.events[id];\n          if (names) {\n            const namesList = names.split(' ');\n            let i = namesList.length;\n            while (i--) {\n              const name = namesList[i];\n              const callbackList = eventMap[name];\n              if (callbackList) {\n                if (callback) {\n                  let ci = callbackList.length;\n                  while (ci--) {\n                    if (callbackList[ci].func === callback) {\n                      const nativeHandler = callbackList.nativeHandler;\n                      const fakeName = callbackList.fakeName, capture = callbackList.capture;\n                      const newCallbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1));\n                      newCallbackList.nativeHandler = nativeHandler;\n                      newCallbackList.fakeName = fakeName;\n                      newCallbackList.capture = capture;\n                      eventMap[name] = newCallbackList;\n                    }\n                  }\n                }\n                if (!callback || callbackList.length === 0) {\n                  delete eventMap[name];\n                  removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);\n                }\n              }\n            }\n          } else {\n            each$d(eventMap, (callbackList, name) => {\n              removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);\n            });\n            eventMap = {};\n          }\n          for (const name in eventMap) {\n            if (has$2(eventMap, name)) {\n              return this;\n            }\n          }\n          delete this.events[id];\n          try {\n            delete target[this.expando];\n          } catch (ex) {\n            target[this.expando] = null;\n          }\n        }\n        return this;\n      }\n      fire(target, name, args) {\n        return this.dispatch(target, name, args);\n      }\n      dispatch(target, name, args) {\n        if (!target || isText$a(target) || isComment(target)) {\n          return this;\n        }\n        const event = fix({\n          type: name,\n          target\n        }, args);\n        do {\n          const id = target[this.expando];\n          if (id) {\n            this.executeHandlers(event, id);\n          }\n          target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;\n        } while (target && !event.isPropagationStopped());\n        return this;\n      }\n      clean(target) {\n        if (!target || isText$a(target) || isComment(target)) {\n          return this;\n        }\n        if (target[this.expando]) {\n          this.unbind(target);\n        }\n        if (!target.getElementsByTagName) {\n          target = target.document;\n        }\n        if (target && target.getElementsByTagName) {\n          this.unbind(target);\n          const children = target.getElementsByTagName('*');\n          let i = children.length;\n          while (i--) {\n            target = children[i];\n            if (target[this.expando]) {\n              this.unbind(target);\n            }\n          }\n        }\n        return this;\n      }\n      destroy() {\n        this.events = {};\n      }\n      cancel(e) {\n        if (e) {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n        }\n        return false;\n      }\n      executeHandlers(evt, id) {\n        const container = this.events[id];\n        const callbackList = container && container[evt.type];\n        if (callbackList) {\n          for (let i = 0, l = callbackList.length; i < l; i++) {\n            const callback = callbackList[i];\n            if (callback && callback.func.call(callback.scope, evt) === false) {\n              evt.preventDefault();\n            }\n            if (evt.isImmediatePropagationStopped()) {\n              return;\n            }\n          }\n        }\n      }\n    }\n    EventUtils.Event = new EventUtils();\n\n    const each$a = Tools.each;\n    const grep = Tools.grep;\n    const internalStyleName = 'data-mce-style';\n    const numericalCssMap = Tools.makeMap('fill-opacity font-weight line-height opacity orphans widows z-index zoom', ' ');\n    const legacySetAttribute = (elm, name, value) => {\n      if (isNullable(value) || value === '') {\n        remove$a(elm, name);\n      } else {\n        set$3(elm, name, value);\n      }\n    };\n    const camelCaseToHyphens = name => name.replace(/[A-Z]/g, v => '-' + v.toLowerCase());\n    const findNodeIndex = (node, normalized) => {\n      let idx = 0;\n      if (node) {\n        for (let lastNodeType = node.nodeType, tempNode = node.previousSibling; tempNode; tempNode = tempNode.previousSibling) {\n          const nodeType = tempNode.nodeType;\n          if (normalized && isText$a(tempNode)) {\n            if (nodeType === lastNodeType || !tempNode.data.length) {\n              continue;\n            }\n          }\n          idx++;\n          lastNodeType = nodeType;\n        }\n      }\n      return idx;\n    };\n    const updateInternalStyleAttr = (styles, elm) => {\n      const rawValue = get$9(elm, 'style');\n      const value = styles.serialize(styles.parse(rawValue), name(elm));\n      legacySetAttribute(elm, internalStyleName, value);\n    };\n    const convertStyleToString = (cssValue, cssName) => {\n      if (isNumber(cssValue)) {\n        return has$2(numericalCssMap, cssName) ? cssValue + '' : cssValue + 'px';\n      } else {\n        return cssValue;\n      }\n    };\n    const applyStyle$1 = ($elm, cssName, cssValue) => {\n      const normalizedName = camelCaseToHyphens(cssName);\n      if (isNullable(cssValue) || cssValue === '') {\n        remove$6($elm, normalizedName);\n      } else {\n        set$2($elm, normalizedName, convertStyleToString(cssValue, normalizedName));\n      }\n    };\n    const setupAttrHooks = (styles, settings, getContext) => {\n      const keepValues = settings.keep_values;\n      const keepUrlHook = {\n        set: (elm, value, name) => {\n          const sugarElm = SugarElement.fromDom(elm);\n          if (isFunction(settings.url_converter) && isNonNullable(value)) {\n            value = settings.url_converter.call(settings.url_converter_scope || getContext(), String(value), name, elm);\n          }\n          const internalName = 'data-mce-' + name;\n          legacySetAttribute(sugarElm, internalName, value);\n          legacySetAttribute(sugarElm, name, value);\n        },\n        get: (elm, name) => {\n          const sugarElm = SugarElement.fromDom(elm);\n          return get$9(sugarElm, 'data-mce-' + name) || get$9(sugarElm, name);\n        }\n      };\n      const attrHooks = {\n        style: {\n          set: (elm, value) => {\n            const sugarElm = SugarElement.fromDom(elm);\n            if (keepValues) {\n              legacySetAttribute(sugarElm, internalStyleName, value);\n            }\n            remove$a(sugarElm, 'style');\n            if (isString(value)) {\n              setAll(sugarElm, styles.parse(value));\n            }\n          },\n          get: elm => {\n            const sugarElm = SugarElement.fromDom(elm);\n            const value = get$9(sugarElm, internalStyleName) || get$9(sugarElm, 'style');\n            return styles.serialize(styles.parse(value), name(sugarElm));\n          }\n        }\n      };\n      if (keepValues) {\n        attrHooks.href = attrHooks.src = keepUrlHook;\n      }\n      return attrHooks;\n    };\n    const DOMUtils = (doc, settings = {}) => {\n      const addedStyles = {};\n      const win = window;\n      const files = {};\n      let counter = 0;\n      const stdMode = true;\n      const boxModel = true;\n      const styleSheetLoader = instance.forElement(SugarElement.fromDom(doc), {\n        contentCssCors: settings.contentCssCors,\n        referrerPolicy: settings.referrerPolicy\n      });\n      const boundEvents = [];\n      const schema = settings.schema ? settings.schema : Schema({});\n      const styles = Styles({\n        url_converter: settings.url_converter,\n        url_converter_scope: settings.url_converter_scope,\n        force_hex_color: settings.force_hex_color\n      }, settings.schema);\n      const events = settings.ownEvents ? new EventUtils() : EventUtils.Event;\n      const blockElementsMap = schema.getBlockElements();\n      const isBlock = node => {\n        if (isString(node)) {\n          return has$2(blockElementsMap, node);\n        } else {\n          return isElement$6(node) && (has$2(blockElementsMap, node.nodeName) || isTransparentBlock(schema, node));\n        }\n      };\n      const get = elm => elm && doc && isString(elm) ? doc.getElementById(elm) : elm;\n      const _get = elm => {\n        const value = get(elm);\n        return isNonNullable(value) ? SugarElement.fromDom(value) : null;\n      };\n      const getAttrib = (elm, name, defaultVal = '') => {\n        let value;\n        const $elm = _get(elm);\n        if (isNonNullable($elm) && isElement$7($elm)) {\n          const hook = attrHooks[name];\n          if (hook && hook.get) {\n            value = hook.get($elm.dom, name);\n          } else {\n            value = get$9($elm, name);\n          }\n        }\n        return isNonNullable(value) ? value : defaultVal;\n      };\n      const getAttribs = elm => {\n        const node = get(elm);\n        return isNullable(node) ? [] : node.attributes;\n      };\n      const setAttrib = (elm, name, value) => {\n        run(elm, e => {\n          if (isElement$6(e)) {\n            const $elm = SugarElement.fromDom(e);\n            const val = value === '' ? null : value;\n            const originalValue = get$9($elm, name);\n            const hook = attrHooks[name];\n            if (hook && hook.set) {\n              hook.set($elm.dom, val, name);\n            } else {\n              legacySetAttribute($elm, name, val);\n            }\n            if (originalValue !== val && settings.onSetAttrib) {\n              settings.onSetAttrib({\n                attrElm: $elm.dom,\n                attrName: name,\n                attrValue: val\n              });\n            }\n          }\n        });\n      };\n      const clone = (node, deep) => {\n        return node.cloneNode(deep);\n      };\n      const getRoot = () => settings.root_element || doc.body;\n      const getViewPort = argWin => {\n        const vp = getBounds(argWin);\n        return {\n          x: vp.x,\n          y: vp.y,\n          w: vp.width,\n          h: vp.height\n        };\n      };\n      const getPos$1 = (elm, rootElm) => getPos(doc.body, get(elm), rootElm);\n      const setStyle = (elm, name, value) => {\n        run(elm, e => {\n          const $elm = SugarElement.fromDom(e);\n          applyStyle$1($elm, name, value);\n          if (settings.update_styles) {\n            updateInternalStyleAttr(styles, $elm);\n          }\n        });\n      };\n      const setStyles = (elm, stylesArg) => {\n        run(elm, e => {\n          const $elm = SugarElement.fromDom(e);\n          each$d(stylesArg, (v, n) => {\n            applyStyle$1($elm, n, v);\n          });\n          if (settings.update_styles) {\n            updateInternalStyleAttr(styles, $elm);\n          }\n        });\n      };\n      const getStyle = (elm, name, computed) => {\n        const $elm = get(elm);\n        if (isNullable($elm) || !isHTMLElement($elm) && !isSVGElement($elm)) {\n          return undefined;\n        }\n        if (computed) {\n          return get$7(SugarElement.fromDom($elm), camelCaseToHyphens(name));\n        } else {\n          name = name.replace(/-(\\D)/g, (a, b) => b.toUpperCase());\n          if (name === 'float') {\n            name = 'cssFloat';\n          }\n          return $elm.style ? $elm.style[name] : undefined;\n        }\n      };\n      const getSize = elm => {\n        const $elm = get(elm);\n        if (!$elm) {\n          return {\n            w: 0,\n            h: 0\n          };\n        }\n        let w = getStyle($elm, 'width');\n        let h = getStyle($elm, 'height');\n        if (!w || w.indexOf('px') === -1) {\n          w = '0';\n        }\n        if (!h || h.indexOf('px') === -1) {\n          h = '0';\n        }\n        return {\n          w: parseInt(w, 10) || $elm.offsetWidth || $elm.clientWidth,\n          h: parseInt(h, 10) || $elm.offsetHeight || $elm.clientHeight\n        };\n      };\n      const getRect = elm => {\n        const $elm = get(elm);\n        const pos = getPos$1($elm);\n        const size = getSize($elm);\n        return {\n          x: pos.x,\n          y: pos.y,\n          w: size.w,\n          h: size.h\n        };\n      };\n      const is = (elm, selector) => {\n        if (!elm) {\n          return false;\n        }\n        const elms = isArray$1(elm) ? elm : [elm];\n        return exists(elms, e => {\n          return is$1(SugarElement.fromDom(e), selector);\n        });\n      };\n      const getParents = (elm, selector, root, collect) => {\n        const result = [];\n        let node = get(elm);\n        collect = collect === undefined;\n        const resolvedRoot = root || (getRoot().nodeName !== 'BODY' ? getRoot().parentNode : null);\n        if (isString(selector)) {\n          if (selector === '*') {\n            selector = isElement$6;\n          } else {\n            const selectorVal = selector;\n            selector = node => is(node, selectorVal);\n          }\n        }\n        while (node) {\n          if (node === resolvedRoot || isNullable(node.nodeType) || isDocument$1(node) || isDocumentFragment(node)) {\n            break;\n          }\n          if (!selector || selector(node)) {\n            if (collect) {\n              result.push(node);\n            } else {\n              return [node];\n            }\n          }\n          node = node.parentNode;\n        }\n        return collect ? result : null;\n      };\n      const getParent = (node, selector, root) => {\n        const parents = getParents(node, selector, root, false);\n        return parents && parents.length > 0 ? parents[0] : null;\n      };\n      const _findSib = (node, selector, name) => {\n        let func = selector;\n        if (node) {\n          if (isString(selector)) {\n            func = node => {\n              return is(node, selector);\n            };\n          }\n          for (let tempNode = node[name]; tempNode; tempNode = tempNode[name]) {\n            if (isFunction(func) && func(tempNode)) {\n              return tempNode;\n            }\n          }\n        }\n        return null;\n      };\n      const getNext = (node, selector) => _findSib(node, selector, 'nextSibling');\n      const getPrev = (node, selector) => _findSib(node, selector, 'previousSibling');\n      const isParentNode = node => isFunction(node.querySelectorAll);\n      const select = (selector, scope) => {\n        var _a, _b;\n        const elm = (_b = (_a = get(scope)) !== null && _a !== void 0 ? _a : settings.root_element) !== null && _b !== void 0 ? _b : doc;\n        return isParentNode(elm) ? from(elm.querySelectorAll(selector)) : [];\n      };\n      const run = function (elm, func, scope) {\n        const context = scope !== null && scope !== void 0 ? scope : this;\n        if (isArray$1(elm)) {\n          const result = [];\n          each$a(elm, (e, i) => {\n            const node = get(e);\n            if (node) {\n              result.push(func.call(context, node, i));\n            }\n          });\n          return result;\n        } else {\n          const node = get(elm);\n          return !node ? false : func.call(context, node);\n        }\n      };\n      const setAttribs = (elm, attrs) => {\n        run(elm, $elm => {\n          each$d(attrs, (value, name) => {\n            setAttrib($elm, name, value);\n          });\n        });\n      };\n      const setHTML = (elm, html) => {\n        run(elm, e => {\n          const $elm = SugarElement.fromDom(e);\n          set$1($elm, html);\n        });\n      };\n      const add = (parentElm, name, attrs, html, create) => run(parentElm, parentElm => {\n        const newElm = isString(name) ? doc.createElement(name) : name;\n        if (isNonNullable(attrs)) {\n          setAttribs(newElm, attrs);\n        }\n        if (html) {\n          if (!isString(html) && html.nodeType) {\n            newElm.appendChild(html);\n          } else if (isString(html)) {\n            setHTML(newElm, html);\n          }\n        }\n        return !create ? parentElm.appendChild(newElm) : newElm;\n      });\n      const create = (name, attrs, html) => add(doc.createElement(name), name, attrs, html, true);\n      const decode = Entities.decode;\n      const encode = Entities.encodeAllRaw;\n      const createHTML = (name, attrs, html = '') => {\n        let outHtml = '<' + name;\n        for (const key in attrs) {\n          if (hasNonNullableKey(attrs, key)) {\n            outHtml += ' ' + key + '=\"' + encode(attrs[key]) + '\"';\n          }\n        }\n        if (isEmpty$3(html) && has$2(schema.getVoidElements(), name)) {\n          return outHtml + ' />';\n        } else {\n          return outHtml + '>' + html + '</' + name + '>';\n        }\n      };\n      const createFragment = html => {\n        const container = doc.createElement('div');\n        const frag = doc.createDocumentFragment();\n        frag.appendChild(container);\n        if (html) {\n          container.innerHTML = html;\n        }\n        let node;\n        while (node = container.firstChild) {\n          frag.appendChild(node);\n        }\n        frag.removeChild(container);\n        return frag;\n      };\n      const remove = (node, keepChildren) => {\n        return run(node, n => {\n          const $node = SugarElement.fromDom(n);\n          if (keepChildren) {\n            each$e(children$1($node), child => {\n              if (isText$b(child) && child.dom.length === 0) {\n                remove$5(child);\n              } else {\n                before$3($node, child);\n              }\n            });\n          }\n          remove$5($node);\n          return $node.dom;\n        });\n      };\n      const removeAllAttribs = e => run(e, e => {\n        const attrs = e.attributes;\n        for (let i = attrs.length - 1; i >= 0; i--) {\n          e.removeAttributeNode(attrs.item(i));\n        }\n      });\n      const parseStyle = cssText => styles.parse(cssText);\n      const serializeStyle = (stylesArg, name) => styles.serialize(stylesArg, name);\n      const addStyle = cssText => {\n        if (self !== DOMUtils.DOM && doc === document) {\n          if (addedStyles[cssText]) {\n            return;\n          }\n          addedStyles[cssText] = true;\n        }\n        let styleElm = doc.getElementById('mceDefaultStyles');\n        if (!styleElm) {\n          styleElm = doc.createElement('style');\n          styleElm.id = 'mceDefaultStyles';\n          styleElm.type = 'text/css';\n          const head = doc.head;\n          if (head.firstChild) {\n            head.insertBefore(styleElm, head.firstChild);\n          } else {\n            head.appendChild(styleElm);\n          }\n        }\n        if (styleElm.styleSheet) {\n          styleElm.styleSheet.cssText += cssText;\n        } else {\n          styleElm.appendChild(doc.createTextNode(cssText));\n        }\n      };\n      const loadCSS = urls => {\n        if (!urls) {\n          urls = '';\n        }\n        each$e(urls.split(','), url => {\n          files[url] = true;\n          styleSheetLoader.load(url).catch(noop);\n        });\n      };\n      const toggleClass = (elm, cls, state) => {\n        run(elm, e => {\n          if (isElement$6(e)) {\n            const $elm = SugarElement.fromDom(e);\n            const classes = cls.split(' ');\n            each$e(classes, c => {\n              if (isNonNullable(state)) {\n                const fn = state ? add$2 : remove$7;\n                fn($elm, c);\n              } else {\n                toggle$1($elm, c);\n              }\n            });\n          }\n        });\n      };\n      const addClass = (elm, cls) => {\n        toggleClass(elm, cls, true);\n      };\n      const removeClass = (elm, cls) => {\n        toggleClass(elm, cls, false);\n      };\n      const hasClass = (elm, cls) => {\n        const $elm = _get(elm);\n        const classes = cls.split(' ');\n        return isNonNullable($elm) && forall(classes, c => has($elm, c));\n      };\n      const show = elm => {\n        run(elm, e => remove$6(SugarElement.fromDom(e), 'display'));\n      };\n      const hide = elm => {\n        run(elm, e => set$2(SugarElement.fromDom(e), 'display', 'none'));\n      };\n      const isHidden = elm => {\n        const $elm = _get(elm);\n        return isNonNullable($elm) && is$2(getRaw($elm, 'display'), 'none');\n      };\n      const uniqueId = prefix => (!prefix ? 'mce_' : prefix) + counter++;\n      const getOuterHTML = elm => {\n        const $elm = _get(elm);\n        if (isNonNullable($elm)) {\n          return isElement$6($elm.dom) ? $elm.dom.outerHTML : getOuter($elm);\n        } else {\n          return '';\n        }\n      };\n      const setOuterHTML = (elm, html) => {\n        run(elm, $elm => {\n          if (isElement$6($elm)) {\n            $elm.outerHTML = html;\n          }\n        });\n      };\n      const insertAfter = (node, reference) => {\n        const referenceNode = get(reference);\n        return run(node, node => {\n          const parent = referenceNode === null || referenceNode === void 0 ? void 0 : referenceNode.parentNode;\n          const nextSibling = referenceNode === null || referenceNode === void 0 ? void 0 : referenceNode.nextSibling;\n          if (parent) {\n            if (nextSibling) {\n              parent.insertBefore(node, nextSibling);\n            } else {\n              parent.appendChild(node);\n            }\n          }\n          return node;\n        });\n      };\n      const replace = (newElm, oldElm, keepChildren) => run(oldElm, elm => {\n        var _a;\n        const replacee = isArray$1(oldElm) ? newElm.cloneNode(true) : newElm;\n        if (keepChildren) {\n          each$a(grep(elm.childNodes), node => {\n            replacee.appendChild(node);\n          });\n        }\n        (_a = elm.parentNode) === null || _a === void 0 ? void 0 : _a.replaceChild(replacee, elm);\n        return elm;\n      });\n      const rename = (elm, name) => {\n        if (elm.nodeName !== name.toUpperCase()) {\n          const newElm = create(name);\n          each$a(getAttribs(elm), attrNode => {\n            setAttrib(newElm, attrNode.nodeName, getAttrib(elm, attrNode.nodeName));\n          });\n          replace(newElm, elm, true);\n          return newElm;\n        } else {\n          return elm;\n        }\n      };\n      const findCommonAncestor = (a, b) => {\n        let ps = a;\n        while (ps) {\n          let pe = b;\n          while (pe && ps !== pe) {\n            pe = pe.parentNode;\n          }\n          if (ps === pe) {\n            break;\n          }\n          ps = ps.parentNode;\n        }\n        if (!ps && a.ownerDocument) {\n          return a.ownerDocument.documentElement;\n        } else {\n          return ps;\n        }\n      };\n      const isNonEmptyElement = node => {\n        if (isElement$6(node)) {\n          const isNamedAnchor = node.nodeName.toLowerCase() === 'a' && !getAttrib(node, 'href') && getAttrib(node, 'id');\n          if (getAttrib(node, 'name') || getAttrib(node, 'data-mce-bookmark') || isNamedAnchor) {\n            return true;\n          }\n        }\n        return false;\n      };\n      const isEmpty = (node, elements, options) => {\n        let brCount = 0;\n        if (isNonEmptyElement(node)) {\n          return false;\n        }\n        const firstChild = node.firstChild;\n        if (firstChild) {\n          const walker = new DomTreeWalker(firstChild, node);\n          const whitespaceElements = schema ? schema.getWhitespaceElements() : {};\n          const nonEmptyElements = elements || (schema ? schema.getNonEmptyElements() : null);\n          let tempNode = firstChild;\n          do {\n            if (isElement$6(tempNode)) {\n              const bogusVal = tempNode.getAttribute('data-mce-bogus');\n              if (bogusVal) {\n                tempNode = walker.next(bogusVal === 'all');\n                continue;\n              }\n              const name = tempNode.nodeName.toLowerCase();\n              if (nonEmptyElements && nonEmptyElements[name]) {\n                if (name === 'br') {\n                  brCount++;\n                  tempNode = walker.next();\n                  continue;\n                }\n                return false;\n              }\n              if (isNonEmptyElement(tempNode)) {\n                return false;\n              }\n            }\n            if (isComment(tempNode)) {\n              return false;\n            }\n            if (isText$a(tempNode) && !isWhitespaceText(tempNode.data) && (!(options === null || options === void 0 ? void 0 : options.includeZwsp) || !isZwsp(tempNode.data))) {\n              return false;\n            }\n            if (isText$a(tempNode) && tempNode.parentNode && whitespaceElements[tempNode.parentNode.nodeName] && isWhitespaceText(tempNode.data)) {\n              return false;\n            }\n            tempNode = walker.next();\n          } while (tempNode);\n        }\n        return brCount <= 1;\n      };\n      const createRng = () => doc.createRange();\n      const split = (parentElm, splitElm, replacementElm) => {\n        let range = createRng();\n        let beforeFragment;\n        let afterFragment;\n        if (parentElm && splitElm && parentElm.parentNode && splitElm.parentNode) {\n          const parentNode = parentElm.parentNode;\n          range.setStart(parentNode, findNodeIndex(parentElm));\n          range.setEnd(splitElm.parentNode, findNodeIndex(splitElm));\n          beforeFragment = range.extractContents();\n          range = createRng();\n          range.setStart(splitElm.parentNode, findNodeIndex(splitElm) + 1);\n          range.setEnd(parentNode, findNodeIndex(parentElm) + 1);\n          afterFragment = range.extractContents();\n          parentNode.insertBefore(trimNode(self, beforeFragment, schema), parentElm);\n          if (replacementElm) {\n            parentNode.insertBefore(replacementElm, parentElm);\n          } else {\n            parentNode.insertBefore(splitElm, parentElm);\n          }\n          parentNode.insertBefore(trimNode(self, afterFragment, schema), parentElm);\n          remove(parentElm);\n          return replacementElm || splitElm;\n        } else {\n          return undefined;\n        }\n      };\n      const bind = (target, name, func, scope) => {\n        if (isArray$1(target)) {\n          let i = target.length;\n          const rv = [];\n          while (i--) {\n            rv[i] = bind(target[i], name, func, scope);\n          }\n          return rv;\n        } else {\n          if (settings.collect && (target === doc || target === win)) {\n            boundEvents.push([\n              target,\n              name,\n              func,\n              scope\n            ]);\n          }\n          return events.bind(target, name, func, scope || self);\n        }\n      };\n      const unbind = (target, name, func) => {\n        if (isArray$1(target)) {\n          let i = target.length;\n          const rv = [];\n          while (i--) {\n            rv[i] = unbind(target[i], name, func);\n          }\n          return rv;\n        } else {\n          if (boundEvents.length > 0 && (target === doc || target === win)) {\n            let i = boundEvents.length;\n            while (i--) {\n              const [boundTarget, boundName, boundFunc] = boundEvents[i];\n              if (target === boundTarget && (!name || name === boundName) && (!func || func === boundFunc)) {\n                events.unbind(boundTarget, boundName, boundFunc);\n              }\n            }\n          }\n          return events.unbind(target, name, func);\n        }\n      };\n      const dispatch = (target, name, evt) => events.dispatch(target, name, evt);\n      const fire = (target, name, evt) => events.dispatch(target, name, evt);\n      const getContentEditable = node => {\n        if (node && isHTMLElement(node)) {\n          const contentEditable = node.getAttribute('data-mce-contenteditable');\n          if (contentEditable && contentEditable !== 'inherit') {\n            return contentEditable;\n          }\n          return node.contentEditable !== 'inherit' ? node.contentEditable : null;\n        } else {\n          return null;\n        }\n      };\n      const getContentEditableParent = node => {\n        const root = getRoot();\n        let state = null;\n        for (let tempNode = node; tempNode && tempNode !== root; tempNode = tempNode.parentNode) {\n          state = getContentEditable(tempNode);\n          if (state !== null) {\n            break;\n          }\n        }\n        return state;\n      };\n      const isEditable = node => {\n        if (isNonNullable(node)) {\n          const scope = isElement$6(node) ? node : node.parentElement;\n          return isNonNullable(scope) && isHTMLElement(scope) && isEditable$2(SugarElement.fromDom(scope));\n        } else {\n          return false;\n        }\n      };\n      const destroy = () => {\n        if (boundEvents.length > 0) {\n          let i = boundEvents.length;\n          while (i--) {\n            const [boundTarget, boundName, boundFunc] = boundEvents[i];\n            events.unbind(boundTarget, boundName, boundFunc);\n          }\n        }\n        each$d(files, (_, url) => {\n          styleSheetLoader.unload(url);\n          delete files[url];\n        });\n      };\n      const isChildOf = (node, parent) => {\n        return node === parent || parent.contains(node);\n      };\n      const dumpRng = r => 'startContainer: ' + r.startContainer.nodeName + ', startOffset: ' + r.startOffset + ', endContainer: ' + r.endContainer.nodeName + ', endOffset: ' + r.endOffset;\n      const self = {\n        doc,\n        settings,\n        win,\n        files,\n        stdMode,\n        boxModel,\n        styleSheetLoader,\n        boundEvents,\n        styles,\n        schema,\n        events,\n        isBlock: isBlock,\n        root: null,\n        clone,\n        getRoot,\n        getViewPort,\n        getRect,\n        getSize,\n        getParent,\n        getParents: getParents,\n        get,\n        getNext,\n        getPrev,\n        select,\n        is,\n        add,\n        create,\n        createHTML,\n        createFragment,\n        remove,\n        setStyle,\n        getStyle: getStyle,\n        setStyles,\n        removeAllAttribs,\n        setAttrib,\n        setAttribs,\n        getAttrib,\n        getPos: getPos$1,\n        parseStyle,\n        serializeStyle,\n        addStyle,\n        loadCSS,\n        addClass,\n        removeClass,\n        hasClass,\n        toggleClass,\n        show,\n        hide,\n        isHidden,\n        uniqueId,\n        setHTML,\n        getOuterHTML,\n        setOuterHTML,\n        decode,\n        encode,\n        insertAfter,\n        replace,\n        rename,\n        findCommonAncestor,\n        run,\n        getAttribs,\n        isEmpty,\n        createRng,\n        nodeIndex: findNodeIndex,\n        split,\n        bind: bind,\n        unbind: unbind,\n        fire,\n        dispatch,\n        getContentEditable,\n        getContentEditableParent,\n        isEditable,\n        destroy,\n        isChildOf,\n        dumpRng\n      };\n      const attrHooks = setupAttrHooks(styles, settings, constant(self));\n      return self;\n    };\n    DOMUtils.DOM = DOMUtils(document);\n    DOMUtils.nodeIndex = findNodeIndex;\n\n    const DOM$b = DOMUtils.DOM;\n    const QUEUED = 0;\n    const LOADING = 1;\n    const LOADED = 2;\n    const FAILED = 3;\n    class ScriptLoader {\n      constructor(settings = {}) {\n        this.states = {};\n        this.queue = [];\n        this.scriptLoadedCallbacks = {};\n        this.queueLoadedCallbacks = [];\n        this.loading = false;\n        this.settings = settings;\n      }\n      _setReferrerPolicy(referrerPolicy) {\n        this.settings.referrerPolicy = referrerPolicy;\n      }\n      loadScript(url) {\n        return new Promise((resolve, reject) => {\n          const dom = DOM$b;\n          let elm;\n          const cleanup = () => {\n            dom.remove(id);\n            if (elm) {\n              elm.onerror = elm.onload = elm = null;\n            }\n          };\n          const done = () => {\n            cleanup();\n            resolve();\n          };\n          const error = () => {\n            cleanup();\n            reject('Failed to load script: ' + url);\n          };\n          const id = dom.uniqueId();\n          elm = document.createElement('script');\n          elm.id = id;\n          elm.type = 'text/javascript';\n          elm.src = Tools._addCacheSuffix(url);\n          if (this.settings.referrerPolicy) {\n            dom.setAttrib(elm, 'referrerpolicy', this.settings.referrerPolicy);\n          }\n          elm.onload = done;\n          elm.onerror = error;\n          (document.getElementsByTagName('head')[0] || document.body).appendChild(elm);\n        });\n      }\n      isDone(url) {\n        return this.states[url] === LOADED;\n      }\n      markDone(url) {\n        this.states[url] = LOADED;\n      }\n      add(url) {\n        const self = this;\n        self.queue.push(url);\n        const state = self.states[url];\n        if (state === undefined) {\n          self.states[url] = QUEUED;\n        }\n        return new Promise((resolve, reject) => {\n          if (!self.scriptLoadedCallbacks[url]) {\n            self.scriptLoadedCallbacks[url] = [];\n          }\n          self.scriptLoadedCallbacks[url].push({\n            resolve,\n            reject\n          });\n        });\n      }\n      load(url) {\n        return this.add(url);\n      }\n      remove(url) {\n        delete this.states[url];\n        delete this.scriptLoadedCallbacks[url];\n      }\n      loadQueue() {\n        const queue = this.queue;\n        this.queue = [];\n        return this.loadScripts(queue);\n      }\n      loadScripts(scripts) {\n        const self = this;\n        const execCallbacks = (name, url) => {\n          get$a(self.scriptLoadedCallbacks, url).each(callbacks => {\n            each$e(callbacks, callback => callback[name](url));\n          });\n          delete self.scriptLoadedCallbacks[url];\n        };\n        const processResults = results => {\n          const failures = filter$5(results, result => result.status === 'rejected');\n          if (failures.length > 0) {\n            return Promise.reject(bind$3(failures, ({reason}) => isArray$1(reason) ? reason : [reason]));\n          } else {\n            return Promise.resolve();\n          }\n        };\n        const load = urls => Promise.allSettled(map$3(urls, url => {\n          if (self.states[url] === LOADED) {\n            execCallbacks('resolve', url);\n            return Promise.resolve();\n          } else if (self.states[url] === FAILED) {\n            execCallbacks('reject', url);\n            return Promise.reject(url);\n          } else {\n            self.states[url] = LOADING;\n            return self.loadScript(url).then(() => {\n              self.states[url] = LOADED;\n              execCallbacks('resolve', url);\n              const queue = self.queue;\n              if (queue.length > 0) {\n                self.queue = [];\n                return load(queue).then(processResults);\n              } else {\n                return Promise.resolve();\n              }\n            }, () => {\n              self.states[url] = FAILED;\n              execCallbacks('reject', url);\n              return Promise.reject(url);\n            });\n          }\n        }));\n        const processQueue = urls => {\n          self.loading = true;\n          return load(urls).then(results => {\n            self.loading = false;\n            const nextQueuedItem = self.queueLoadedCallbacks.shift();\n            Optional.from(nextQueuedItem).each(call);\n            return processResults(results);\n          });\n        };\n        const uniqueScripts = stringArray(scripts);\n        if (self.loading) {\n          return new Promise((resolve, reject) => {\n            self.queueLoadedCallbacks.push(() => {\n              processQueue(uniqueScripts).then(resolve, reject);\n            });\n          });\n        } else {\n          return processQueue(uniqueScripts);\n        }\n      }\n    }\n    ScriptLoader.ScriptLoader = new ScriptLoader();\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 isDuplicated = (items, item) => {\n      const firstIndex = items.indexOf(item);\n      return firstIndex !== -1 && items.indexOf(item, firstIndex + 1) > firstIndex;\n    };\n    const isRaw = str => isObject(str) && has$2(str, 'raw');\n    const isTokenised = str => isArray$1(str) && str.length > 1;\n    const data = {};\n    const currentCode = Cell('en');\n    const getLanguageData = () => get$a(data, currentCode.get());\n    const getData$1 = () => map$2(data, value => ({ ...value }));\n    const setCode = newCode => {\n      if (newCode) {\n        currentCode.set(newCode);\n      }\n    };\n    const getCode = () => currentCode.get();\n    const add$1 = (code, items) => {\n      let langData = data[code];\n      if (!langData) {\n        data[code] = langData = {};\n      }\n      const lcNames = map$3(keys(items), name => name.toLowerCase());\n      each$d(items, (translation, name) => {\n        const lcName = name.toLowerCase();\n        if (lcName !== name && isDuplicated(lcNames, lcName)) {\n          if (!has$2(items, lcName)) {\n            langData[lcName] = translation;\n          }\n          langData[name] = translation;\n        } else {\n          langData[lcName] = translation;\n        }\n      });\n    };\n    const translate = text => {\n      const langData = getLanguageData().getOr({});\n      const toString = obj => {\n        if (isFunction(obj)) {\n          return Object.prototype.toString.call(obj);\n        }\n        return !isEmpty(obj) ? '' + obj : '';\n      };\n      const isEmpty = text => text === '' || text === null || text === undefined;\n      const getLangData = text => {\n        const textStr = toString(text);\n        return has$2(langData, textStr) ? toString(langData[textStr]) : get$a(langData, textStr.toLowerCase()).map(toString).getOr(textStr);\n      };\n      const removeContext = str => str.replace(/{context:\\w+}$/, '');\n      if (isEmpty(text)) {\n        return '';\n      }\n      if (isRaw(text)) {\n        return toString(text.raw);\n      }\n      if (isTokenised(text)) {\n        const values = text.slice(1);\n        const substitued = getLangData(text[0]).replace(/\\{([0-9]+)\\}/g, ($1, $2) => has$2(values, $2) ? toString(values[$2]) : $1);\n        return removeContext(substitued);\n      }\n      return removeContext(getLangData(text));\n    };\n    const isRtl$1 = () => getLanguageData().bind(items => get$a(items, '_dir')).exists(dir => dir === 'rtl');\n    const hasCode = code => has$2(data, code);\n    const I18n = {\n      getData: getData$1,\n      setCode,\n      getCode,\n      add: add$1,\n      translate,\n      isRtl: isRtl$1,\n      hasCode\n    };\n\n    const AddOnManager = () => {\n      const items = [];\n      const urls = {};\n      const lookup = {};\n      const _listeners = [];\n      const runListeners = (name, state) => {\n        const matchedListeners = filter$5(_listeners, listener => listener.name === name && listener.state === state);\n        each$e(matchedListeners, listener => listener.resolve());\n      };\n      const isLoaded = name => has$2(urls, name);\n      const isAdded = name => has$2(lookup, name);\n      const get = name => {\n        if (lookup[name]) {\n          return lookup[name].instance;\n        }\n        return undefined;\n      };\n      const loadLanguagePack = (name, languages) => {\n        const language = I18n.getCode();\n        const wrappedLanguages = ',' + (languages || '') + ',';\n        if (!language || languages && wrappedLanguages.indexOf(',' + language + ',') === -1) {\n          return;\n        }\n        ScriptLoader.ScriptLoader.add(urls[name] + '/langs/' + language + '.js');\n      };\n      const requireLangPack = (name, languages) => {\n        if (AddOnManager.languageLoad !== false) {\n          if (isLoaded(name)) {\n            loadLanguagePack(name, languages);\n          } else {\n            waitFor(name, 'loaded').then(() => loadLanguagePack(name, languages));\n          }\n        }\n      };\n      const add = (id, addOn) => {\n        items.push(addOn);\n        lookup[id] = { instance: addOn };\n        runListeners(id, 'added');\n        return addOn;\n      };\n      const remove = name => {\n        delete urls[name];\n        delete lookup[name];\n      };\n      const createUrl = (baseUrl, dep) => {\n        if (isString(dep)) {\n          return isString(baseUrl) ? {\n            prefix: '',\n            resource: dep,\n            suffix: ''\n          } : {\n            prefix: baseUrl.prefix,\n            resource: dep,\n            suffix: baseUrl.suffix\n          };\n        } else {\n          return dep;\n        }\n      };\n      const load = (name, addOnUrl) => {\n        if (urls[name]) {\n          return Promise.resolve();\n        }\n        let urlString = isString(addOnUrl) ? addOnUrl : addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix;\n        if (urlString.indexOf('/') !== 0 && urlString.indexOf('://') === -1) {\n          urlString = AddOnManager.baseURL + '/' + urlString;\n        }\n        urls[name] = urlString.substring(0, urlString.lastIndexOf('/'));\n        const done = () => {\n          runListeners(name, 'loaded');\n          return Promise.resolve();\n        };\n        if (lookup[name]) {\n          return done();\n        } else {\n          return ScriptLoader.ScriptLoader.add(urlString).then(done);\n        }\n      };\n      const waitFor = (name, state = 'added') => {\n        if (state === 'added' && isAdded(name)) {\n          return Promise.resolve();\n        } else if (state === 'loaded' && isLoaded(name)) {\n          return Promise.resolve();\n        } else {\n          return new Promise(resolve => {\n            _listeners.push({\n              name,\n              state,\n              resolve\n            });\n          });\n        }\n      };\n      return {\n        items,\n        urls,\n        lookup,\n        get,\n        requireLangPack,\n        add,\n        remove,\n        createUrl,\n        load,\n        waitFor\n      };\n    };\n    AddOnManager.languageLoad = true;\n    AddOnManager.baseURL = '';\n    AddOnManager.PluginManager = AddOnManager();\n    AddOnManager.ThemeManager = AddOnManager();\n    AddOnManager.ModelManager = AddOnManager();\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 repeatable = delay => {\n      const intervalId = Cell(Optional.none());\n      const revoke = () => intervalId.get().each(id => clearInterval(id));\n      const clear = () => {\n        revoke();\n        intervalId.set(Optional.none());\n      };\n      const isSet = () => intervalId.get().isSome();\n      const get = () => intervalId.get();\n      const set = functionToRepeat => {\n        revoke();\n        intervalId.set(Optional.some(setInterval(functionToRepeat, delay)));\n      };\n      return {\n        clear,\n        isSet,\n        get,\n        set\n      };\n    };\n    const value$2 = () => {\n      const subject = singleton(noop);\n      const on = f => subject.get().each(f);\n      return {\n        ...subject,\n        on\n      };\n    };\n\n    const first$1 = (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        if (isNull(timer)) {\n          timer = setTimeout(() => {\n            timer = null;\n            fn.apply(null, args);\n          }, rate);\n        }\n      };\n      return {\n        cancel,\n        throttle\n      };\n    };\n    const last$1 = (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 annotation = constant('mce-annotation');\n    const dataAnnotation = constant('data-mce-annotation');\n    const dataAnnotationId = constant('data-mce-annotation-uid');\n    const dataAnnotationActive = constant('data-mce-annotation-active');\n    const dataAnnotationClasses = constant('data-mce-annotation-classes');\n    const dataAnnotationAttributes = constant('data-mce-annotation-attrs');\n\n    const isRoot$1 = root => node => eq(node, root);\n    const identify = (editor, annotationName) => {\n      const rng = editor.selection.getRng();\n      const start = SugarElement.fromDom(rng.startContainer);\n      const root = SugarElement.fromDom(editor.getBody());\n      const selector = annotationName.fold(() => '.' + annotation(), an => `[${ dataAnnotation() }=\"${ an }\"]`);\n      const newStart = child$1(start, rng.startOffset).getOr(start);\n      const closest = closest$3(newStart, selector, isRoot$1(root));\n      return closest.bind(c => getOpt(c, `${ dataAnnotationId() }`).bind(uid => getOpt(c, `${ dataAnnotation() }`).map(name => {\n        const elements = findMarkers(editor, uid);\n        return {\n          uid,\n          name,\n          elements\n        };\n      })));\n    };\n    const isAnnotation = elem => isElement$7(elem) && has(elem, annotation());\n    const isBogusElement = (elem, root) => has$1(elem, 'data-mce-bogus') || ancestor$2(elem, '[data-mce-bogus=\"all\"]', isRoot$1(root));\n    const findMarkers = (editor, uid) => {\n      const body = SugarElement.fromDom(editor.getBody());\n      const descendants$1 = descendants(body, `[${ dataAnnotationId() }=\"${ uid }\"]`);\n      return filter$5(descendants$1, descendant => !isBogusElement(descendant, body));\n    };\n    const findAll = (editor, name) => {\n      const body = SugarElement.fromDom(editor.getBody());\n      const markers = descendants(body, `[${ dataAnnotation() }=\"${ name }\"]`);\n      const directory = {};\n      each$e(markers, m => {\n        if (!isBogusElement(m, body)) {\n          const uid = get$9(m, dataAnnotationId());\n          const nodesAlready = get$a(directory, uid).getOr([]);\n          directory[uid] = nodesAlready.concat([m]);\n        }\n      });\n      return directory;\n    };\n\n    const setup$y = (editor, registry) => {\n      const changeCallbacks = Cell({});\n      const initData = () => ({\n        listeners: [],\n        previous: value$2()\n      });\n      const withCallbacks = (name, f) => {\n        updateCallbacks(name, data => {\n          f(data);\n          return data;\n        });\n      };\n      const updateCallbacks = (name, f) => {\n        const callbackMap = changeCallbacks.get();\n        const data = get$a(callbackMap, name).getOrThunk(initData);\n        const outputData = f(data);\n        callbackMap[name] = outputData;\n        changeCallbacks.set(callbackMap);\n      };\n      const fireCallbacks = (name, uid, elements) => {\n        withCallbacks(name, data => {\n          each$e(data.listeners, f => f(true, name, {\n            uid,\n            nodes: map$3(elements, elem => elem.dom)\n          }));\n        });\n      };\n      const fireNoAnnotation = name => {\n        withCallbacks(name, data => {\n          each$e(data.listeners, f => f(false, name));\n        });\n      };\n      const toggleActiveAttr = (uid, state) => {\n        each$e(findMarkers(editor, uid), elem => {\n          if (state) {\n            set$3(elem, dataAnnotationActive(), 'true');\n          } else {\n            remove$a(elem, dataAnnotationActive());\n          }\n        });\n      };\n      const onNodeChange = last$1(() => {\n        const annotations = sort(registry.getNames());\n        each$e(annotations, name => {\n          updateCallbacks(name, data => {\n            const prev = data.previous.get();\n            identify(editor, Optional.some(name)).fold(() => {\n              prev.each(uid => {\n                fireNoAnnotation(name);\n                data.previous.clear();\n                toggleActiveAttr(uid, false);\n              });\n            }, ({uid, name, elements}) => {\n              if (!is$2(prev, uid)) {\n                prev.each(uid => toggleActiveAttr(uid, false));\n                fireCallbacks(name, uid, elements);\n                data.previous.set(uid);\n                toggleActiveAttr(uid, true);\n              }\n            });\n            return {\n              previous: data.previous,\n              listeners: data.listeners\n            };\n          });\n        });\n      }, 30);\n      editor.on('remove', () => {\n        onNodeChange.cancel();\n      });\n      editor.on('NodeChange', () => {\n        onNodeChange.throttle();\n      });\n      const addListener = (name, f) => {\n        updateCallbacks(name, data => ({\n          previous: data.previous,\n          listeners: data.listeners.concat([f])\n        }));\n      };\n      return { addListener };\n    };\n\n    const setup$x = (editor, registry) => {\n      const dataAnnotation$1 = dataAnnotation();\n      const identifyParserNode = node => Optional.from(node.attr(dataAnnotation$1)).bind(registry.lookup);\n      const removeDirectAnnotation = node => {\n        var _a, _b;\n        node.attr(dataAnnotationId(), null);\n        node.attr(dataAnnotation(), null);\n        node.attr(dataAnnotationActive(), null);\n        const customAttrNames = Optional.from(node.attr(dataAnnotationAttributes())).map(names => names.split(',')).getOr([]);\n        const customClasses = Optional.from(node.attr(dataAnnotationClasses())).map(names => names.split(',')).getOr([]);\n        each$e(customAttrNames, name => node.attr(name, null));\n        const classList = (_b = (_a = node.attr('class')) === null || _a === void 0 ? void 0 : _a.split(' ')) !== null && _b !== void 0 ? _b : [];\n        const newClassList = difference(classList, [annotation()].concat(customClasses));\n        node.attr('class', newClassList.length > 0 ? newClassList.join(' ') : null);\n        node.attr(dataAnnotationClasses(), null);\n        node.attr(dataAnnotationAttributes(), null);\n      };\n      editor.serializer.addTempAttr(dataAnnotationActive());\n      editor.serializer.addAttributeFilter(dataAnnotation$1, nodes => {\n        for (const node of nodes) {\n          identifyParserNode(node).each(settings => {\n            if (settings.persistent === false) {\n              if (node.name === 'span') {\n                node.unwrap();\n              } else {\n                removeDirectAnnotation(node);\n              }\n            }\n          });\n        }\n      });\n    };\n\n    const create$c = () => {\n      const annotations = {};\n      const register = (name, settings) => {\n        annotations[name] = {\n          name,\n          settings\n        };\n      };\n      const lookup = name => get$a(annotations, name).map(a => a.settings);\n      const getNames = () => keys(annotations);\n      return {\n        register,\n        lookup,\n        getNames\n      };\n    };\n\n    let unique = 0;\n    const generate$1 = prefix => {\n      const date = new Date();\n      const time = date.getTime();\n      const random = Math.floor(Math.random() * 1000000000);\n      unique++;\n      return prefix + '_' + random + unique + String(time);\n    };\n\n    const add = (element, classes) => {\n      each$e(classes, x => {\n        add$2(element, x);\n      });\n    };\n    const remove$4 = (element, classes) => {\n      each$e(classes, x => {\n        remove$7(element, x);\n      });\n    };\n\n    const clone$2 = (original, isDeep) => SugarElement.fromDom(original.dom.cloneNode(isDeep));\n    const shallow$1 = original => clone$2(original, false);\n    const deep$1 = original => clone$2(original, true);\n    const shallowAs = (original, tag) => {\n      const nu = SugarElement.fromTag(tag);\n      const attributes = clone$4(original);\n      setAll$1(nu, attributes);\n      return nu;\n    };\n    const mutate = (original, tag) => {\n      const nu = shallowAs(original, tag);\n      after$4(original, nu);\n      const children = children$1(original);\n      append(nu, children);\n      remove$5(original);\n      return nu;\n    };\n\n    const TextWalker = (startNode, rootNode, isBoundary = never) => {\n      const walker = new DomTreeWalker(startNode, rootNode);\n      const walk = direction => {\n        let next;\n        do {\n          next = walker[direction]();\n        } while (next && !isText$a(next) && !isBoundary(next));\n        return Optional.from(next).filter(isText$a);\n      };\n      return {\n        current: () => Optional.from(walker.current()).filter(isText$a),\n        next: () => walk('next'),\n        prev: () => walk('prev'),\n        prev2: () => walk('prev2')\n      };\n    };\n\n    const TextSeeker = (dom, isBoundary) => {\n      const isBlockBoundary = isBoundary ? isBoundary : node => dom.isBlock(node) || isBr$6(node) || isContentEditableFalse$b(node);\n      const walk = (node, offset, walker, process) => {\n        if (isText$a(node)) {\n          const newOffset = process(node, offset, node.data);\n          if (newOffset !== -1) {\n            return Optional.some({\n              container: node,\n              offset: newOffset\n            });\n          }\n        }\n        return walker().bind(next => walk(next.container, next.offset, walker, process));\n      };\n      const backwards = (node, offset, process, root) => {\n        const walker = TextWalker(node, root !== null && root !== void 0 ? root : dom.getRoot(), isBlockBoundary);\n        return walk(node, offset, () => walker.prev().map(prev => ({\n          container: prev,\n          offset: prev.length\n        })), process).getOrNull();\n      };\n      const forwards = (node, offset, process, root) => {\n        const walker = TextWalker(node, root !== null && root !== void 0 ? root : dom.getRoot(), isBlockBoundary);\n        return walk(node, offset, () => walker.next().map(next => ({\n          container: next,\n          offset: 0\n        })), process).getOrNull();\n      };\n      return {\n        backwards,\n        forwards\n      };\n    };\n\n    const round$2 = Math.round;\n    const clone$1 = rect => {\n      if (!rect) {\n        return {\n          left: 0,\n          top: 0,\n          bottom: 0,\n          right: 0,\n          width: 0,\n          height: 0\n        };\n      }\n      return {\n        left: round$2(rect.left),\n        top: round$2(rect.top),\n        bottom: round$2(rect.bottom),\n        right: round$2(rect.right),\n        width: round$2(rect.width),\n        height: round$2(rect.height)\n      };\n    };\n    const collapse = (rect, toStart) => {\n      rect = clone$1(rect);\n      if (toStart) {\n        rect.right = rect.left;\n      } else {\n        rect.left = rect.left + rect.width;\n        rect.right = rect.left;\n      }\n      rect.width = 0;\n      return rect;\n    };\n    const isEqual = (rect1, rect2) => rect1.left === rect2.left && rect1.top === rect2.top && rect1.bottom === rect2.bottom && rect1.right === rect2.right;\n    const isValidOverflow = (overflowY, rect1, rect2) => overflowY >= 0 && overflowY <= Math.min(rect1.height, rect2.height) / 2;\n    const isAbove$1 = (rect1, rect2) => {\n      const halfHeight = Math.min(rect2.height / 2, rect1.height / 2);\n      if (rect1.bottom - halfHeight < rect2.top) {\n        return true;\n      }\n      if (rect1.top > rect2.bottom) {\n        return false;\n      }\n      return isValidOverflow(rect2.top - rect1.bottom, rect1, rect2);\n    };\n    const isBelow$1 = (rect1, rect2) => {\n      if (rect1.top > rect2.bottom) {\n        return true;\n      }\n      if (rect1.bottom < rect2.top) {\n        return false;\n      }\n      return isValidOverflow(rect2.bottom - rect1.top, rect1, rect2);\n    };\n    const containsXY = (rect, clientX, clientY) => clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom;\n    const boundingClientRectFromRects = rects => {\n      return foldl(rects, (acc, rect) => {\n        return acc.fold(() => Optional.some(rect), prevRect => {\n          const left = Math.min(rect.left, prevRect.left);\n          const top = Math.min(rect.top, prevRect.top);\n          const right = Math.max(rect.right, prevRect.right);\n          const bottom = Math.max(rect.bottom, prevRect.bottom);\n          return Optional.some({\n            top,\n            right,\n            bottom,\n            left,\n            width: right - left,\n            height: bottom - top\n          });\n        });\n      }, Optional.none());\n    };\n    const distanceToRectEdgeFromXY = (rect, x, y) => {\n      const cx = Math.max(Math.min(x, rect.left + rect.width), rect.left);\n      const cy = Math.max(Math.min(y, rect.top + rect.height), rect.top);\n      return Math.sqrt((x - cx) * (x - cx) + (y - cy) * (y - cy));\n    };\n    const overlapY = (r1, r2) => Math.max(0, Math.min(r1.bottom, r2.bottom) - Math.max(r1.top, r2.top));\n\n    const clamp$2 = (value, min, max) => Math.min(Math.max(value, min), max);\n\n    const getSelectedNode = range => {\n      const startContainer = range.startContainer, startOffset = range.startOffset;\n      if (startContainer === range.endContainer && startContainer.hasChildNodes() && range.endOffset === startOffset + 1) {\n        return startContainer.childNodes[startOffset];\n      }\n      return null;\n    };\n    const getNode$1 = (container, offset) => {\n      if (isElement$6(container) && container.hasChildNodes()) {\n        const childNodes = container.childNodes;\n        const safeOffset = clamp$2(offset, 0, childNodes.length - 1);\n        return childNodes[safeOffset];\n      } else {\n        return container;\n      }\n    };\n    const getNodeUnsafe = (container, offset) => {\n      if (offset < 0 && isElement$6(container) && container.hasChildNodes()) {\n        return undefined;\n      } else {\n        return getNode$1(container, offset);\n      }\n    };\n\n    const extendingChars = new RegExp('[\\u0300-\\u036f\\u0483-\\u0487\\u0488-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1-\\u05c2\\u05c4-\\u05c5\\u05c7\\u0610-\\u061a' + '\\u064b-\\u065f\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7-\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0' + '\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08e3-\\u0902\\u093a\\u093c' + '\\u0941-\\u0948\\u094d\\u0951-\\u0957\\u0962-\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2-\\u09e3' + '\\u0a01-\\u0a02\\u0a3c\\u0a41-\\u0a42\\u0a47-\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70-\\u0a71\\u0a75\\u0a81-\\u0a82\\u0abc' + '\\u0ac1-\\u0ac5\\u0ac7-\\u0ac8\\u0acd\\u0ae2-\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57' + '\\u0b62-\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c00\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55-\\u0c56' + '\\u0c62-\\u0c63\\u0c81\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc-\\u0ccd\\u0cd5-\\u0cd6\\u0ce2-\\u0ce3\\u0d01\\u0d3e\\u0d41-\\u0d44' + '\\u0d4d\\u0d57\\u0d62-\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9' + '\\u0ebb-\\u0ebc\\u0ec8-\\u0ecd\\u0f18-\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97' + '\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039-\\u103a\\u103d-\\u103e\\u1058-\\u1059\\u105e-\\u1060\\u1071-\\u1074' + '\\u1082\\u1085-\\u1086\\u108d\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752-\\u1753\\u1772-\\u1773\\u17b4-\\u17b5' + '\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927-\\u1928\\u1932\\u1939-\\u193b\\u1a17-\\u1a18' + '\\u1a1b\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1ab0-\\u1abd\\u1ABE\\u1b00-\\u1b03\\u1b34' + '\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80-\\u1b81\\u1ba2-\\u1ba5\\u1ba8-\\u1ba9\\u1bab-\\u1bad\\u1be6\\u1be8-\\u1be9' + '\\u1bed\\u1bef-\\u1bf1\\u1c2c-\\u1c33\\u1c36-\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1cf4\\u1cf8-\\u1cf9' + '\\u1dc0-\\u1df5\\u1dfc-\\u1dff\\u200c-\\u200d\\u20d0-\\u20dc\\u20DD-\\u20E0\\u20e1\\u20E2-\\u20E4\\u20e5-\\u20f0\\u2cef-\\u2cf1' + '\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302d\\u302e-\\u302f\\u3099-\\u309a\\ua66f\\uA670-\\uA672\\ua674-\\ua67d\\ua69e-\\ua69f\\ua6f0-\\ua6f1' + '\\ua802\\ua806\\ua80b\\ua825-\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc' + '\\ua9e5\\uaa29-\\uaa2e\\uaa31-\\uaa32\\uaa35-\\uaa36\\uaa43\\uaa4c\\uaa7c\\uaab0\\uaab2-\\uaab4\\uaab7-\\uaab8\\uaabe-\\uaabf\\uaac1' + '\\uaaec-\\uaaed\\uaaf6\\uabe5\\uabe8\\uabed\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\uff9e-\\uff9f]');\n    const isExtendingChar = ch => isString(ch) && ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n\n    const or = (...args) => {\n      return x => {\n        for (let i = 0; i < args.length; i++) {\n          if (args[i](x)) {\n            return true;\n          }\n        }\n        return false;\n      };\n    };\n    const and = (...args) => {\n      return x => {\n        for (let i = 0; i < args.length; i++) {\n          if (!args[i](x)) {\n            return false;\n          }\n        }\n        return true;\n      };\n    };\n\n    const isElement$4 = isElement$6;\n    const isCaretCandidate$2 = isCaretCandidate$3;\n    const isBlock$2 = matchStyleValues('display', 'block table');\n    const isFloated = matchStyleValues('float', 'left right');\n    const isValidElementCaretCandidate = and(isElement$4, isCaretCandidate$2, not(isFloated));\n    const isNotPre = not(matchStyleValues('white-space', 'pre pre-line pre-wrap'));\n    const isText$7 = isText$a;\n    const isBr$3 = isBr$6;\n    const nodeIndex$1 = DOMUtils.nodeIndex;\n    const resolveIndex$1 = getNodeUnsafe;\n    const createRange$1 = doc => doc ? doc.createRange() : DOMUtils.DOM.createRng();\n    const isWhiteSpace$1 = chr => isString(chr) && /[\\r\\n\\t ]/.test(chr);\n    const isRange = rng => !!rng.setStart && !!rng.setEnd;\n    const isHiddenWhiteSpaceRange = range => {\n      const container = range.startContainer;\n      const offset = range.startOffset;\n      if (isWhiteSpace$1(range.toString()) && isNotPre(container.parentNode) && isText$a(container)) {\n        const text = container.data;\n        if (isWhiteSpace$1(text[offset - 1]) || isWhiteSpace$1(text[offset + 1])) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const getBrClientRect = brNode => {\n      const doc = brNode.ownerDocument;\n      const rng = createRange$1(doc);\n      const nbsp$1 = doc.createTextNode(nbsp);\n      const parentNode = brNode.parentNode;\n      parentNode.insertBefore(nbsp$1, brNode);\n      rng.setStart(nbsp$1, 0);\n      rng.setEnd(nbsp$1, 1);\n      const clientRect = clone$1(rng.getBoundingClientRect());\n      parentNode.removeChild(nbsp$1);\n      return clientRect;\n    };\n    const getBoundingClientRectWebKitText = rng => {\n      const sc = rng.startContainer;\n      const ec = rng.endContainer;\n      const so = rng.startOffset;\n      const eo = rng.endOffset;\n      if (sc === ec && isText$a(ec) && so === 0 && eo === 1) {\n        const newRng = rng.cloneRange();\n        newRng.setEndAfter(ec);\n        return getBoundingClientRect$1(newRng);\n      } else {\n        return null;\n      }\n    };\n    const isZeroRect = r => r.left === 0 && r.right === 0 && r.top === 0 && r.bottom === 0;\n    const getBoundingClientRect$1 = item => {\n      var _a;\n      let clientRect;\n      const clientRects = item.getClientRects();\n      if (clientRects.length > 0) {\n        clientRect = clone$1(clientRects[0]);\n      } else {\n        clientRect = clone$1(item.getBoundingClientRect());\n      }\n      if (!isRange(item) && isBr$3(item) && isZeroRect(clientRect)) {\n        return getBrClientRect(item);\n      }\n      if (isZeroRect(clientRect) && isRange(item)) {\n        return (_a = getBoundingClientRectWebKitText(item)) !== null && _a !== void 0 ? _a : clientRect;\n      }\n      return clientRect;\n    };\n    const collapseAndInflateWidth = (clientRect, toStart) => {\n      const newClientRect = collapse(clientRect, toStart);\n      newClientRect.width = 1;\n      newClientRect.right = newClientRect.left + 1;\n      return newClientRect;\n    };\n    const getCaretPositionClientRects = caretPosition => {\n      const clientRects = [];\n      const addUniqueAndValidRect = clientRect => {\n        if (clientRect.height === 0) {\n          return;\n        }\n        if (clientRects.length > 0) {\n          if (isEqual(clientRect, clientRects[clientRects.length - 1])) {\n            return;\n          }\n        }\n        clientRects.push(clientRect);\n      };\n      const addCharacterOffset = (container, offset) => {\n        const range = createRange$1(container.ownerDocument);\n        if (offset < container.data.length) {\n          if (isExtendingChar(container.data[offset])) {\n            return;\n          }\n          if (isExtendingChar(container.data[offset - 1])) {\n            range.setStart(container, offset);\n            range.setEnd(container, offset + 1);\n            if (!isHiddenWhiteSpaceRange(range)) {\n              addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(range), false));\n              return;\n            }\n          }\n        }\n        if (offset > 0) {\n          range.setStart(container, offset - 1);\n          range.setEnd(container, offset);\n          if (!isHiddenWhiteSpaceRange(range)) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(range), false));\n          }\n        }\n        if (offset < container.data.length) {\n          range.setStart(container, offset);\n          range.setEnd(container, offset + 1);\n          if (!isHiddenWhiteSpaceRange(range)) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(range), true));\n          }\n        }\n      };\n      const container = caretPosition.container();\n      const offset = caretPosition.offset();\n      if (isText$7(container)) {\n        addCharacterOffset(container, offset);\n        return clientRects;\n      }\n      if (isElement$4(container)) {\n        if (caretPosition.isAtEnd()) {\n          const node = resolveIndex$1(container, offset);\n          if (isText$7(node)) {\n            addCharacterOffset(node, node.data.length);\n          }\n          if (isValidElementCaretCandidate(node) && !isBr$3(node)) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(node), false));\n          }\n        } else {\n          const node = resolveIndex$1(container, offset);\n          if (isText$7(node)) {\n            addCharacterOffset(node, 0);\n          }\n          if (isValidElementCaretCandidate(node) && caretPosition.isAtEnd()) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(node), false));\n            return clientRects;\n          }\n          const beforeNode = resolveIndex$1(caretPosition.container(), caretPosition.offset() - 1);\n          if (isValidElementCaretCandidate(beforeNode) && !isBr$3(beforeNode)) {\n            if (isBlock$2(beforeNode) || isBlock$2(node) || !isValidElementCaretCandidate(node)) {\n              addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(beforeNode), false));\n            }\n          }\n          if (isValidElementCaretCandidate(node)) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect$1(node), true));\n          }\n        }\n      }\n      return clientRects;\n    };\n    const CaretPosition = (container, offset, clientRects) => {\n      const isAtStart = () => {\n        if (isText$7(container)) {\n          return offset === 0;\n        }\n        return offset === 0;\n      };\n      const isAtEnd = () => {\n        if (isText$7(container)) {\n          return offset >= container.data.length;\n        }\n        return offset >= container.childNodes.length;\n      };\n      const toRange = () => {\n        const range = createRange$1(container.ownerDocument);\n        range.setStart(container, offset);\n        range.setEnd(container, offset);\n        return range;\n      };\n      const getClientRects = () => {\n        if (!clientRects) {\n          clientRects = getCaretPositionClientRects(CaretPosition(container, offset));\n        }\n        return clientRects;\n      };\n      const isVisible = () => getClientRects().length > 0;\n      const isEqual = caretPosition => caretPosition && container === caretPosition.container() && offset === caretPosition.offset();\n      const getNode = before => resolveIndex$1(container, before ? offset - 1 : offset);\n      return {\n        container: constant(container),\n        offset: constant(offset),\n        toRange,\n        getClientRects,\n        isVisible,\n        isAtStart,\n        isAtEnd,\n        isEqual,\n        getNode\n      };\n    };\n    CaretPosition.fromRangeStart = range => CaretPosition(range.startContainer, range.startOffset);\n    CaretPosition.fromRangeEnd = range => CaretPosition(range.endContainer, range.endOffset);\n    CaretPosition.after = node => CaretPosition(node.parentNode, nodeIndex$1(node) + 1);\n    CaretPosition.before = node => CaretPosition(node.parentNode, nodeIndex$1(node));\n    CaretPosition.isAbove = (pos1, pos2) => lift2(head(pos2.getClientRects()), last$3(pos1.getClientRects()), isAbove$1).getOr(false);\n    CaretPosition.isBelow = (pos1, pos2) => lift2(last$3(pos2.getClientRects()), head(pos1.getClientRects()), isBelow$1).getOr(false);\n    CaretPosition.isAtStart = pos => pos ? pos.isAtStart() : false;\n    CaretPosition.isAtEnd = pos => pos ? pos.isAtEnd() : false;\n    CaretPosition.isTextPosition = pos => pos ? isText$a(pos.container()) : false;\n    CaretPosition.isElementPosition = pos => !CaretPosition.isTextPosition(pos);\n\n    const trimEmptyTextNode$1 = (dom, node) => {\n      if (isText$a(node) && node.data.length === 0) {\n        dom.remove(node);\n      }\n    };\n    const insertNode = (dom, rng, node) => {\n      rng.insertNode(node);\n      trimEmptyTextNode$1(dom, node.previousSibling);\n      trimEmptyTextNode$1(dom, node.nextSibling);\n    };\n    const insertFragment = (dom, rng, frag) => {\n      const firstChild = Optional.from(frag.firstChild);\n      const lastChild = Optional.from(frag.lastChild);\n      rng.insertNode(frag);\n      firstChild.each(child => trimEmptyTextNode$1(dom, child.previousSibling));\n      lastChild.each(child => trimEmptyTextNode$1(dom, child.nextSibling));\n    };\n    const rangeInsertNode = (dom, rng, node) => {\n      if (isDocumentFragment(node)) {\n        insertFragment(dom, rng, node);\n      } else {\n        insertNode(dom, rng, node);\n      }\n    };\n\n    const isText$6 = isText$a;\n    const isBogus = isBogus$2;\n    const nodeIndex = DOMUtils.nodeIndex;\n    const normalizedParent = node => {\n      const parentNode = node.parentNode;\n      if (isBogus(parentNode)) {\n        return normalizedParent(parentNode);\n      }\n      return parentNode;\n    };\n    const getChildNodes = node => {\n      if (!node) {\n        return [];\n      }\n      return reduce(node.childNodes, (result, node) => {\n        if (isBogus(node) && node.nodeName !== 'BR') {\n          result = result.concat(getChildNodes(node));\n        } else {\n          result.push(node);\n        }\n        return result;\n      }, []);\n    };\n    const normalizedTextOffset = (node, offset) => {\n      let tempNode = node;\n      while (tempNode = tempNode.previousSibling) {\n        if (!isText$6(tempNode)) {\n          break;\n        }\n        offset += tempNode.data.length;\n      }\n      return offset;\n    };\n    const equal = a => b => a === b;\n    const normalizedNodeIndex = node => {\n      let nodes, index;\n      nodes = getChildNodes(normalizedParent(node));\n      index = findIndex$1(nodes, equal(node), node);\n      nodes = nodes.slice(0, index + 1);\n      const numTextFragments = reduce(nodes, (result, node, i) => {\n        if (isText$6(node) && isText$6(nodes[i - 1])) {\n          result++;\n        }\n        return result;\n      }, 0);\n      nodes = filter$3(nodes, matchNodeNames([node.nodeName]));\n      index = findIndex$1(nodes, equal(node), node);\n      return index - numTextFragments;\n    };\n    const createPathItem = node => {\n      const name = isText$6(node) ? 'text()' : node.nodeName.toLowerCase();\n      return name + '[' + normalizedNodeIndex(node) + ']';\n    };\n    const parentsUntil$1 = (root, node, predicate) => {\n      const parents = [];\n      for (let tempNode = node.parentNode; tempNode && tempNode !== root; tempNode = tempNode.parentNode) {\n        if (predicate && predicate(tempNode)) {\n          break;\n        }\n        parents.push(tempNode);\n      }\n      return parents;\n    };\n    const create$b = (root, caretPosition) => {\n      let path = [];\n      let container = caretPosition.container();\n      let offset = caretPosition.offset();\n      let outputOffset;\n      if (isText$6(container)) {\n        outputOffset = normalizedTextOffset(container, offset);\n      } else {\n        const childNodes = container.childNodes;\n        if (offset >= childNodes.length) {\n          outputOffset = 'after';\n          offset = childNodes.length - 1;\n        } else {\n          outputOffset = 'before';\n        }\n        container = childNodes[offset];\n      }\n      path.push(createPathItem(container));\n      let parents = parentsUntil$1(root, container);\n      parents = filter$3(parents, not(isBogus$2));\n      path = path.concat(map$1(parents, node => {\n        return createPathItem(node);\n      }));\n      return path.reverse().join('/') + ',' + outputOffset;\n    };\n    const resolvePathItem = (node, name, index) => {\n      let nodes = getChildNodes(node);\n      nodes = filter$3(nodes, (node, index) => {\n        return !isText$6(node) || !isText$6(nodes[index - 1]);\n      });\n      nodes = filter$3(nodes, matchNodeNames([name]));\n      return nodes[index];\n    };\n    const findTextPosition = (container, offset) => {\n      let node = container;\n      let targetOffset = 0;\n      while (isText$6(node)) {\n        const dataLen = node.data.length;\n        if (offset >= targetOffset && offset <= targetOffset + dataLen) {\n          container = node;\n          offset = offset - targetOffset;\n          break;\n        }\n        if (!isText$6(node.nextSibling)) {\n          container = node;\n          offset = dataLen;\n          break;\n        }\n        targetOffset += dataLen;\n        node = node.nextSibling;\n      }\n      if (isText$6(container) && offset > container.data.length) {\n        offset = container.data.length;\n      }\n      return CaretPosition(container, offset);\n    };\n    const resolve$1 = (root, path) => {\n      if (!path) {\n        return null;\n      }\n      const parts = path.split(',');\n      const paths = parts[0].split('/');\n      const offset = parts.length > 1 ? parts[1] : 'before';\n      const container = reduce(paths, (result, value) => {\n        const match = /([\\w\\-\\(\\)]+)\\[([0-9]+)\\]/.exec(value);\n        if (!match) {\n          return null;\n        }\n        if (match[1] === 'text()') {\n          match[1] = '#text';\n        }\n        return resolvePathItem(result, match[1], parseInt(match[2], 10));\n      }, root);\n      if (!container) {\n        return null;\n      }\n      if (!isText$6(container) && container.parentNode) {\n        let nodeOffset;\n        if (offset === 'after') {\n          nodeOffset = nodeIndex(container) + 1;\n        } else {\n          nodeOffset = nodeIndex(container);\n        }\n        return CaretPosition(container.parentNode, nodeOffset);\n      }\n      return findTextPosition(container, parseInt(offset, 10));\n    };\n\n    const isContentEditableFalse$9 = isContentEditableFalse$b;\n    const getNormalizedTextOffset$1 = (trim, container, offset) => {\n      let trimmedOffset = trim(container.data.slice(0, offset)).length;\n      for (let node = container.previousSibling; node && isText$a(node); node = node.previousSibling) {\n        trimmedOffset += trim(node.data).length;\n      }\n      return trimmedOffset;\n    };\n    const getPoint = (dom, trim, normalized, rng, start) => {\n      const container = start ? rng.startContainer : rng.endContainer;\n      let offset = start ? rng.startOffset : rng.endOffset;\n      const point = [];\n      const root = dom.getRoot();\n      if (isText$a(container)) {\n        point.push(normalized ? getNormalizedTextOffset$1(trim, container, offset) : offset);\n      } else {\n        let after = 0;\n        const childNodes = container.childNodes;\n        if (offset >= childNodes.length && childNodes.length) {\n          after = 1;\n          offset = Math.max(0, childNodes.length - 1);\n        }\n        point.push(dom.nodeIndex(childNodes[offset], normalized) + after);\n      }\n      for (let node = container; node && node !== root; node = node.parentNode) {\n        point.push(dom.nodeIndex(node, normalized));\n      }\n      return point;\n    };\n    const getLocation = (trim, selection, normalized, rng) => {\n      const dom = selection.dom;\n      const start = getPoint(dom, trim, normalized, rng, true);\n      const forward = selection.isForward();\n      const fakeCaret = isRangeInCaretContainerBlock(rng) ? { isFakeCaret: true } : {};\n      if (!selection.isCollapsed()) {\n        const end = getPoint(dom, trim, normalized, rng, false);\n        return {\n          start,\n          end,\n          forward,\n          ...fakeCaret\n        };\n      } else {\n        return {\n          start,\n          forward,\n          ...fakeCaret\n        };\n      }\n    };\n    const findIndex = (dom, name, element) => {\n      let count = 0;\n      Tools.each(dom.select(name), node => {\n        if (node.getAttribute('data-mce-bogus') === 'all') {\n          return;\n        } else if (node === element) {\n          return false;\n        } else {\n          count++;\n          return;\n        }\n      });\n      return count;\n    };\n    const moveEndPoint$1 = (rng, start) => {\n      let container = start ? rng.startContainer : rng.endContainer;\n      let offset = start ? rng.startOffset : rng.endOffset;\n      if (isElement$6(container) && container.nodeName === 'TR') {\n        const childNodes = container.childNodes;\n        container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];\n        if (container) {\n          offset = start ? 0 : container.childNodes.length;\n          if (start) {\n            rng.setStart(container, offset);\n          } else {\n            rng.setEnd(container, offset);\n          }\n        }\n      }\n    };\n    const normalizeTableCellSelection = rng => {\n      moveEndPoint$1(rng, true);\n      moveEndPoint$1(rng, false);\n      return rng;\n    };\n    const findSibling = (node, offset) => {\n      if (isElement$6(node)) {\n        node = getNode$1(node, offset);\n        if (isContentEditableFalse$9(node)) {\n          return node;\n        }\n      }\n      if (isCaretContainer$2(node)) {\n        if (isText$a(node) && isCaretContainerBlock$1(node)) {\n          node = node.parentNode;\n        }\n        let sibling = node.previousSibling;\n        if (isContentEditableFalse$9(sibling)) {\n          return sibling;\n        }\n        sibling = node.nextSibling;\n        if (isContentEditableFalse$9(sibling)) {\n          return sibling;\n        }\n      }\n      return undefined;\n    };\n    const findAdjacentContentEditableFalseElm = rng => {\n      return findSibling(rng.startContainer, rng.startOffset) || findSibling(rng.endContainer, rng.endOffset);\n    };\n    const getOffsetBookmark = (trim, normalized, selection) => {\n      const element = selection.getNode();\n      const rng = selection.getRng();\n      if (element.nodeName === 'IMG' || isContentEditableFalse$9(element)) {\n        const name = element.nodeName;\n        return {\n          name,\n          index: findIndex(selection.dom, name, element)\n        };\n      }\n      const sibling = findAdjacentContentEditableFalseElm(rng);\n      if (sibling) {\n        const name = sibling.tagName;\n        return {\n          name,\n          index: findIndex(selection.dom, name, sibling)\n        };\n      }\n      return getLocation(trim, selection, normalized, rng);\n    };\n    const getCaretBookmark = selection => {\n      const rng = selection.getRng();\n      return {\n        start: create$b(selection.dom.getRoot(), CaretPosition.fromRangeStart(rng)),\n        end: create$b(selection.dom.getRoot(), CaretPosition.fromRangeEnd(rng)),\n        forward: selection.isForward()\n      };\n    };\n    const getRangeBookmark = selection => {\n      return {\n        rng: selection.getRng(),\n        forward: selection.isForward()\n      };\n    };\n    const createBookmarkSpan = (dom, id, filled) => {\n      const args = {\n        'data-mce-type': 'bookmark',\n        id,\n        'style': 'overflow:hidden;line-height:0px'\n      };\n      return filled ? dom.create('span', args, '&#xFEFF;') : dom.create('span', args);\n    };\n    const getPersistentBookmark = (selection, filled) => {\n      const dom = selection.dom;\n      let rng = selection.getRng();\n      const id = dom.uniqueId();\n      const collapsed = selection.isCollapsed();\n      const element = selection.getNode();\n      const name = element.nodeName;\n      const forward = selection.isForward();\n      if (name === 'IMG') {\n        return {\n          name,\n          index: findIndex(dom, name, element)\n        };\n      }\n      const rng2 = normalizeTableCellSelection(rng.cloneRange());\n      if (!collapsed) {\n        rng2.collapse(false);\n        const endBookmarkNode = createBookmarkSpan(dom, id + '_end', filled);\n        rangeInsertNode(dom, rng2, endBookmarkNode);\n      }\n      rng = normalizeTableCellSelection(rng);\n      rng.collapse(true);\n      const startBookmarkNode = createBookmarkSpan(dom, id + '_start', filled);\n      rangeInsertNode(dom, rng, startBookmarkNode);\n      selection.moveToBookmark({\n        id,\n        keep: true,\n        forward\n      });\n      return {\n        id,\n        forward\n      };\n    };\n    const getBookmark$2 = (selection, type, normalized = false) => {\n      if (type === 2) {\n        return getOffsetBookmark(trim$2, normalized, selection);\n      } else if (type === 3) {\n        return getCaretBookmark(selection);\n      } else if (type) {\n        return getRangeBookmark(selection);\n      } else {\n        return getPersistentBookmark(selection, false);\n      }\n    };\n    const getUndoBookmark = curry(getOffsetBookmark, identity, true);\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$1,\n        orThunk: apply$1,\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 generate = cases => {\n      if (!isArray$1(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$e(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$1(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    Adt.generate([\n      {\n        bothErrors: [\n          'error1',\n          'error2'\n        ]\n      },\n      {\n        firstError: [\n          'error1',\n          'value2'\n        ]\n      },\n      {\n        secondError: [\n          'value1',\n          'error2'\n        ]\n      },\n      {\n        bothValues: [\n          'value1',\n          'value2'\n        ]\n      }\n    ]);\n    const partition$1 = results => {\n      const errors = [];\n      const values = [];\n      each$e(results, result => {\n        result.fold(err => {\n          errors.push(err);\n        }, value => {\n          values.push(value);\n        });\n      });\n      return {\n        errors,\n        values\n      };\n    };\n\n    const isInlinePattern = pattern => pattern.type === 'inline-command' || pattern.type === 'inline-format';\n    const isBlockPattern = pattern => pattern.type === 'block-command' || pattern.type === 'block-format';\n    const normalizePattern = pattern => {\n      const err = message => Result.error({\n        message,\n        pattern\n      });\n      const formatOrCmd = (name, onFormat, onCommand) => {\n        if (pattern.format !== undefined) {\n          let formats;\n          if (isArray$1(pattern.format)) {\n            if (!forall(pattern.format, isString)) {\n              return err(name + ' pattern has non-string items in the `format` array');\n            }\n            formats = pattern.format;\n          } else if (isString(pattern.format)) {\n            formats = [pattern.format];\n          } else {\n            return err(name + ' pattern has non-string `format` parameter');\n          }\n          return Result.value(onFormat(formats));\n        } else if (pattern.cmd !== undefined) {\n          if (!isString(pattern.cmd)) {\n            return err(name + ' pattern has non-string `cmd` parameter');\n          }\n          return Result.value(onCommand(pattern.cmd, pattern.value));\n        } else {\n          return err(name + ' pattern is missing both `format` and `cmd` parameters');\n        }\n      };\n      if (!isObject(pattern)) {\n        return err('Raw pattern is not an object');\n      }\n      if (!isString(pattern.start)) {\n        return err('Raw pattern is missing `start` parameter');\n      }\n      if (pattern.end !== undefined) {\n        if (!isString(pattern.end)) {\n          return err('Inline pattern has non-string `end` parameter');\n        }\n        if (pattern.start.length === 0 && pattern.end.length === 0) {\n          return err('Inline pattern has empty `start` and `end` parameters');\n        }\n        let start = pattern.start;\n        let end = pattern.end;\n        if (end.length === 0) {\n          end = start;\n          start = '';\n        }\n        return formatOrCmd('Inline', format => ({\n          type: 'inline-format',\n          start,\n          end,\n          format\n        }), (cmd, value) => ({\n          type: 'inline-command',\n          start,\n          end,\n          cmd,\n          value\n        }));\n      } else if (pattern.replacement !== undefined) {\n        if (!isString(pattern.replacement)) {\n          return err('Replacement pattern has non-string `replacement` parameter');\n        }\n        if (pattern.start.length === 0) {\n          return err('Replacement pattern has empty `start` parameter');\n        }\n        return Result.value({\n          type: 'inline-command',\n          start: '',\n          end: pattern.start,\n          cmd: 'mceInsertContent',\n          value: pattern.replacement\n        });\n      } else {\n        if (pattern.start.length === 0) {\n          return err('Block pattern has empty `start` parameter');\n        }\n        return formatOrCmd('Block', formats => ({\n          type: 'block-format',\n          start: pattern.start,\n          format: formats[0]\n        }), (command, commandValue) => ({\n          type: 'block-command',\n          start: pattern.start,\n          cmd: command,\n          value: commandValue\n        }));\n      }\n    };\n    const getBlockPatterns = patterns => filter$5(patterns, isBlockPattern);\n    const getInlinePatterns = patterns => filter$5(patterns, isInlinePattern);\n    const createPatternSet = (patterns, dynamicPatternsLookup) => ({\n      inlinePatterns: getInlinePatterns(patterns),\n      blockPatterns: getBlockPatterns(patterns),\n      dynamicPatternsLookup\n    });\n    const fromRawPatterns = patterns => {\n      const normalized = partition$1(map$3(patterns, normalizePattern));\n      each$e(normalized.errors, err => console.error(err.message, err.pattern));\n      return normalized.values;\n    };\n    const fromRawPatternsLookup = lookupFn => {\n      return ctx => {\n        const rawPatterns = lookupFn(ctx);\n        return fromRawPatterns(rawPatterns);\n      };\n    };\n\n    const deviceDetection$1 = detect$2().deviceType;\n    const isTouch = deviceDetection$1.isTouch();\n    const DOM$a = DOMUtils.DOM;\n    const getHash = value => {\n      const items = value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(',');\n      return foldl(items, (output, item) => {\n        const arr = item.split('=');\n        const key = arr[0];\n        const val = arr.length > 1 ? arr[1] : key;\n        output[trim$4(key)] = trim$4(val);\n        return output;\n      }, {});\n    };\n    const isRegExp = x => is$4(x, RegExp);\n    const option = name => editor => editor.options.get(name);\n    const stringOrObjectProcessor = value => isString(value) || isObject(value);\n    const bodyOptionProcessor = (editor, defaultValue = '') => value => {\n      const valid = isString(value);\n      if (valid) {\n        if (value.indexOf('=') !== -1) {\n          const bodyObj = getHash(value);\n          return {\n            value: get$a(bodyObj, editor.id).getOr(defaultValue),\n            valid\n          };\n        } else {\n          return {\n            value,\n            valid\n          };\n        }\n      } else {\n        return {\n          valid: false,\n          message: 'Must be a string.'\n        };\n      }\n    };\n    const register$7 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('id', {\n        processor: 'string',\n        default: editor.id\n      });\n      registerOption('selector', { processor: 'string' });\n      registerOption('target', { processor: 'object' });\n      registerOption('suffix', { processor: 'string' });\n      registerOption('cache_suffix', { processor: 'string' });\n      registerOption('base_url', { processor: 'string' });\n      registerOption('referrer_policy', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('language_load', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('inline', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('iframe_attrs', {\n        processor: 'object',\n        default: {}\n      });\n      registerOption('doctype', {\n        processor: 'string',\n        default: '<!DOCTYPE html>'\n      });\n      registerOption('document_base_url', {\n        processor: 'string',\n        default: editor.documentBaseUrl\n      });\n      registerOption('body_id', {\n        processor: bodyOptionProcessor(editor, 'tinymce'),\n        default: 'tinymce'\n      });\n      registerOption('body_class', {\n        processor: bodyOptionProcessor(editor),\n        default: ''\n      });\n      registerOption('content_security_policy', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('br_in_pre', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('forced_root_block', {\n        processor: value => {\n          const valid = isString(value) && isNotEmpty(value);\n          if (valid) {\n            return {\n              value,\n              valid\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be a non-empty string.'\n            };\n          }\n        },\n        default: 'p'\n      });\n      registerOption('forced_root_block_attrs', {\n        processor: 'object',\n        default: {}\n      });\n      registerOption('newline_behavior', {\n        processor: value => {\n          const valid = contains$2([\n            'block',\n            'linebreak',\n            'invert',\n            'default'\n          ], value);\n          return valid ? {\n            value,\n            valid\n          } : {\n            valid: false,\n            message: 'Must be one of: block, linebreak, invert or default.'\n          };\n        },\n        default: 'default'\n      });\n      registerOption('br_newline_selector', {\n        processor: 'string',\n        default: '.mce-toc h2,figcaption,caption'\n      });\n      registerOption('no_newline_selector', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('keep_styles', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('end_container_on_empty_block', {\n        processor: value => {\n          if (isBoolean(value)) {\n            return {\n              valid: true,\n              value\n            };\n          } else if (isString(value)) {\n            return {\n              valid: true,\n              value\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be boolean or a string'\n            };\n          }\n        },\n        default: 'blockquote'\n      });\n      registerOption('font_size_style_values', {\n        processor: 'string',\n        default: 'xx-small,x-small,small,medium,large,x-large,xx-large'\n      });\n      registerOption('font_size_legacy_values', {\n        processor: 'string',\n        default: 'xx-small,small,medium,large,x-large,xx-large,300%'\n      });\n      registerOption('font_size_classes', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('automatic_uploads', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('images_reuse_filename', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('images_replace_blob_uris', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('icons', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('icons_url', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('images_upload_url', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('images_upload_base_path', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('images_upload_credentials', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('images_upload_handler', { processor: 'function' });\n      registerOption('language', {\n        processor: 'string',\n        default: 'en'\n      });\n      registerOption('language_url', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('entity_encoding', {\n        processor: 'string',\n        default: 'named'\n      });\n      registerOption('indent', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('indent_before', {\n        processor: 'string',\n        default: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,details,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist'\n      });\n      registerOption('indent_after', {\n        processor: 'string',\n        default: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,details,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist'\n      });\n      registerOption('indent_use_margin', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('indentation', {\n        processor: 'string',\n        default: '40px'\n      });\n      registerOption('content_css', {\n        processor: value => {\n          const valid = value === false || isString(value) || isArrayOf(value, isString);\n          if (valid) {\n            if (isString(value)) {\n              return {\n                value: map$3(value.split(','), trim$4),\n                valid\n              };\n            } else if (isArray$1(value)) {\n              return {\n                value,\n                valid\n              };\n            } else if (value === false) {\n              return {\n                value: [],\n                valid\n              };\n            } else {\n              return {\n                value,\n                valid\n              };\n            }\n          } else {\n            return {\n              valid: false,\n              message: 'Must be false, a string or an array of strings.'\n            };\n          }\n        },\n        default: isInline$1(editor) ? [] : ['default']\n      });\n      registerOption('content_style', { processor: 'string' });\n      registerOption('content_css_cors', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('font_css', {\n        processor: value => {\n          const valid = isString(value) || isArrayOf(value, isString);\n          if (valid) {\n            const newValue = isArray$1(value) ? value : map$3(value.split(','), trim$4);\n            return {\n              value: newValue,\n              valid\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be a string or an array of strings.'\n            };\n          }\n        },\n        default: []\n      });\n      registerOption('inline_boundaries', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('inline_boundaries_selector', {\n        processor: 'string',\n        default: 'a[href],code,span.mce-annotation'\n      });\n      registerOption('object_resizing', {\n        processor: value => {\n          const valid = isBoolean(value) || isString(value);\n          if (valid) {\n            if (value === false || deviceDetection$1.isiPhone() || deviceDetection$1.isiPad()) {\n              return {\n                value: '',\n                valid\n              };\n            } else {\n              return {\n                value: value === true ? 'table,img,figure.image,div,video,iframe' : value,\n                valid\n              };\n            }\n          } else {\n            return {\n              valid: false,\n              message: 'Must be boolean or a string'\n            };\n          }\n        },\n        default: !isTouch\n      });\n      registerOption('resize_img_proportional', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('event_root', { processor: 'object' });\n      registerOption('service_message', { processor: 'string' });\n      registerOption('theme', {\n        processor: value => value === false || isString(value) || isFunction(value),\n        default: 'silver'\n      });\n      registerOption('theme_url', { processor: 'string' });\n      registerOption('formats', { processor: 'object' });\n      registerOption('format_empty_lines', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('format_noneditable_selector', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('preview_styles', {\n        processor: value => {\n          const valid = value === false || isString(value);\n          if (valid) {\n            return {\n              value: value === false ? '' : value,\n              valid\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be false or a string'\n            };\n          }\n        },\n        default: 'font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow'\n      });\n      registerOption('custom_ui_selector', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('hidden_input', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('submit_patch', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('encoding', { processor: 'string' });\n      registerOption('add_form_submit_trigger', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('add_unload_trigger', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('custom_undo_redo_levels', {\n        processor: 'number',\n        default: 0\n      });\n      registerOption('disable_nodechange', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('readonly', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('editable_root', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('plugins', {\n        processor: 'string[]',\n        default: []\n      });\n      registerOption('external_plugins', { processor: 'object' });\n      registerOption('forced_plugins', { processor: 'string[]' });\n      registerOption('model', {\n        processor: 'string',\n        default: editor.hasPlugin('rtc') ? 'plugin' : 'dom'\n      });\n      registerOption('model_url', { processor: 'string' });\n      registerOption('block_unsupported_drop', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('visual', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('visual_table_class', {\n        processor: 'string',\n        default: 'mce-item-table'\n      });\n      registerOption('visual_anchor_class', {\n        processor: 'string',\n        default: 'mce-item-anchor'\n      });\n      registerOption('iframe_aria_text', {\n        processor: 'string',\n        default: 'Rich Text Area. Press ALT-0 for help.'\n      });\n      registerOption('setup', { processor: 'function' });\n      registerOption('init_instance_callback', { processor: 'function' });\n      registerOption('url_converter', {\n        processor: 'function',\n        default: editor.convertURL\n      });\n      registerOption('url_converter_scope', {\n        processor: 'object',\n        default: editor\n      });\n      registerOption('urlconverter_callback', { processor: 'function' });\n      registerOption('allow_conditional_comments', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('allow_html_data_urls', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('allow_svg_data_urls', { processor: 'boolean' });\n      registerOption('allow_html_in_named_anchor', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('allow_script_urls', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('allow_unsafe_link_target', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('convert_fonts_to_spans', {\n        processor: 'boolean',\n        default: true,\n        deprecated: true\n      });\n      registerOption('fix_list_elements', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('preserve_cdata', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('remove_trailing_brs', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('pad_empty_with_br', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('inline_styles', {\n        processor: 'boolean',\n        default: true,\n        deprecated: true\n      });\n      registerOption('element_format', {\n        processor: 'string',\n        default: 'html'\n      });\n      registerOption('entities', { processor: 'string' });\n      registerOption('schema', {\n        processor: 'string',\n        default: 'html5'\n      });\n      registerOption('convert_urls', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('relative_urls', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('remove_script_host', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('custom_elements', { processor: 'string' });\n      registerOption('extended_valid_elements', { processor: 'string' });\n      registerOption('invalid_elements', { processor: 'string' });\n      registerOption('invalid_styles', { processor: stringOrObjectProcessor });\n      registerOption('valid_children', { processor: 'string' });\n      registerOption('valid_classes', { processor: stringOrObjectProcessor });\n      registerOption('valid_elements', { processor: 'string' });\n      registerOption('valid_styles', { processor: stringOrObjectProcessor });\n      registerOption('verify_html', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('auto_focus', { processor: value => isString(value) || value === true });\n      registerOption('browser_spellcheck', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('protect', { processor: 'array' });\n      registerOption('images_file_types', {\n        processor: 'string',\n        default: 'jpeg,jpg,jpe,jfi,jif,jfif,png,gif,bmp,webp'\n      });\n      registerOption('deprecation_warnings', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('a11y_advanced_options', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('api_key', { processor: 'string' });\n      registerOption('paste_block_drop', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('paste_data_images', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('paste_preprocess', { processor: 'function' });\n      registerOption('paste_postprocess', { processor: 'function' });\n      registerOption('paste_webkit_styles', {\n        processor: 'string',\n        default: 'none'\n      });\n      registerOption('paste_remove_styles_if_webkit', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('paste_merge_formats', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('smart_paste', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('paste_as_text', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('paste_tab_spaces', {\n        processor: 'number',\n        default: 4\n      });\n      registerOption('text_patterns', {\n        processor: value => {\n          if (isArrayOf(value, isObject) || value === false) {\n            const patterns = value === false ? [] : value;\n            return {\n              value: fromRawPatterns(patterns),\n              valid: true\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be an array of objects or false.'\n            };\n          }\n        },\n        default: [\n          {\n            start: '*',\n            end: '*',\n            format: 'italic'\n          },\n          {\n            start: '**',\n            end: '**',\n            format: 'bold'\n          },\n          {\n            start: '#',\n            format: 'h1'\n          },\n          {\n            start: '##',\n            format: 'h2'\n          },\n          {\n            start: '###',\n            format: 'h3'\n          },\n          {\n            start: '####',\n            format: 'h4'\n          },\n          {\n            start: '#####',\n            format: 'h5'\n          },\n          {\n            start: '######',\n            format: 'h6'\n          },\n          {\n            start: '1. ',\n            cmd: 'InsertOrderedList'\n          },\n          {\n            start: '* ',\n            cmd: 'InsertUnorderedList'\n          },\n          {\n            start: '- ',\n            cmd: 'InsertUnorderedList'\n          }\n        ]\n      });\n      registerOption('text_patterns_lookup', {\n        processor: value => {\n          if (isFunction(value)) {\n            return {\n              value: fromRawPatternsLookup(value),\n              valid: true\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be a single function'\n            };\n          }\n        },\n        default: _ctx => []\n      });\n      registerOption('noneditable_class', {\n        processor: 'string',\n        default: 'mceNonEditable'\n      });\n      registerOption('editable_class', {\n        processor: 'string',\n        default: 'mceEditable'\n      });\n      registerOption('noneditable_regexp', {\n        processor: value => {\n          if (isArrayOf(value, isRegExp)) {\n            return {\n              value,\n              valid: true\n            };\n          } else if (isRegExp(value)) {\n            return {\n              value: [value],\n              valid: true\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be a RegExp or an array of RegExp.'\n            };\n          }\n        },\n        default: []\n      });\n      registerOption('table_tab_navigation', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('highlight_on_focus', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('xss_sanitization', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('details_initial_state', {\n        processor: value => {\n          const valid = contains$2([\n            'inherited',\n            'collapsed',\n            'expanded'\n          ], value);\n          return valid ? {\n            value,\n            valid\n          } : {\n            valid: false,\n            message: 'Must be one of: inherited, collapsed, or expanded.'\n          };\n        },\n        default: 'inherited'\n      });\n      registerOption('details_serialized_state', {\n        processor: value => {\n          const valid = contains$2([\n            'inherited',\n            'collapsed',\n            'expanded'\n          ], value);\n          return valid ? {\n            value,\n            valid\n          } : {\n            valid: false,\n            message: 'Must be one of: inherited, collapsed, or expanded.'\n          };\n        },\n        default: 'inherited'\n      });\n      registerOption('init_content_sync', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('newdocument_content', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('force_hex_color', {\n        processor: value => {\n          const options = [\n            'always',\n            'rgb_only',\n            'off'\n          ];\n          const valid = contains$2(options, value);\n          return valid ? {\n            value,\n            valid\n          } : {\n            valid: false,\n            message: `Must be one of: ${ options.join(', ') }.`\n          };\n        },\n        default: 'off'\n      });\n      registerOption('sandbox_iframes', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('convert_unsafe_embeds', {\n        processor: 'boolean',\n        default: false\n      });\n      editor.on('ScriptsLoaded', () => {\n        registerOption('directionality', {\n          processor: 'string',\n          default: I18n.isRtl() ? 'rtl' : undefined\n        });\n        registerOption('placeholder', {\n          processor: 'string',\n          default: DOM$a.getAttrib(editor.getElement(), 'placeholder')\n        });\n      });\n    };\n    const getIframeAttrs = option('iframe_attrs');\n    const getDocType = option('doctype');\n    const getDocumentBaseUrl = option('document_base_url');\n    const getBodyId = option('body_id');\n    const getBodyClass = option('body_class');\n    const getContentSecurityPolicy = option('content_security_policy');\n    const shouldPutBrInPre$1 = option('br_in_pre');\n    const getForcedRootBlock = option('forced_root_block');\n    const getForcedRootBlockAttrs = option('forced_root_block_attrs');\n    const getNewlineBehavior = option('newline_behavior');\n    const getBrNewLineSelector = option('br_newline_selector');\n    const getNoNewLineSelector = option('no_newline_selector');\n    const shouldKeepStyles = option('keep_styles');\n    const shouldEndContainerOnEmptyBlock = option('end_container_on_empty_block');\n    const isAutomaticUploadsEnabled = option('automatic_uploads');\n    const shouldReuseFileName = option('images_reuse_filename');\n    const shouldReplaceBlobUris = option('images_replace_blob_uris');\n    const getIconPackName = option('icons');\n    const getIconsUrl = option('icons_url');\n    const getImageUploadUrl = option('images_upload_url');\n    const getImageUploadBasePath = option('images_upload_base_path');\n    const getImagesUploadCredentials = option('images_upload_credentials');\n    const getImagesUploadHandler = option('images_upload_handler');\n    const shouldUseContentCssCors = option('content_css_cors');\n    const getReferrerPolicy = option('referrer_policy');\n    const getLanguageCode = option('language');\n    const getLanguageUrl = option('language_url');\n    const shouldIndentUseMargin = option('indent_use_margin');\n    const getIndentation = option('indentation');\n    const getContentCss = option('content_css');\n    const getContentStyle = option('content_style');\n    const getFontCss = option('font_css');\n    const getDirectionality = option('directionality');\n    const getInlineBoundarySelector = option('inline_boundaries_selector');\n    const getObjectResizing = option('object_resizing');\n    const getResizeImgProportional = option('resize_img_proportional');\n    const getPlaceholder = option('placeholder');\n    const getEventRoot = option('event_root');\n    const getServiceMessage = option('service_message');\n    const getTheme = option('theme');\n    const getThemeUrl = option('theme_url');\n    const getModel = option('model');\n    const getModelUrl = option('model_url');\n    const isInlineBoundariesEnabled = option('inline_boundaries');\n    const getFormats = option('formats');\n    const getPreviewStyles = option('preview_styles');\n    const canFormatEmptyLines = option('format_empty_lines');\n    const getFormatNoneditableSelector = option('format_noneditable_selector');\n    const getCustomUiSelector = option('custom_ui_selector');\n    const isInline$1 = option('inline');\n    const hasHiddenInput = option('hidden_input');\n    const shouldPatchSubmit = option('submit_patch');\n    const shouldAddFormSubmitTrigger = option('add_form_submit_trigger');\n    const shouldAddUnloadTrigger = option('add_unload_trigger');\n    const getCustomUndoRedoLevels = option('custom_undo_redo_levels');\n    const shouldDisableNodeChange = option('disable_nodechange');\n    const isReadOnly$1 = option('readonly');\n    const hasEditableRoot$1 = option('editable_root');\n    const hasContentCssCors = option('content_css_cors');\n    const getPlugins = option('plugins');\n    const getExternalPlugins$1 = option('external_plugins');\n    const shouldBlockUnsupportedDrop = option('block_unsupported_drop');\n    const isVisualAidsEnabled = option('visual');\n    const getVisualAidsTableClass = option('visual_table_class');\n    const getVisualAidsAnchorClass = option('visual_anchor_class');\n    const getIframeAriaText = option('iframe_aria_text');\n    const getSetupCallback = option('setup');\n    const getInitInstanceCallback = option('init_instance_callback');\n    const getUrlConverterCallback = option('urlconverter_callback');\n    const getAutoFocus = option('auto_focus');\n    const shouldBrowserSpellcheck = option('browser_spellcheck');\n    const getProtect = option('protect');\n    const shouldPasteBlockDrop = option('paste_block_drop');\n    const shouldPasteDataImages = option('paste_data_images');\n    const getPastePreProcess = option('paste_preprocess');\n    const getPastePostProcess = option('paste_postprocess');\n    const getNewDocumentContent = option('newdocument_content');\n    const getPasteWebkitStyles = option('paste_webkit_styles');\n    const shouldPasteRemoveWebKitStyles = option('paste_remove_styles_if_webkit');\n    const shouldPasteMergeFormats = option('paste_merge_formats');\n    const isSmartPasteEnabled = option('smart_paste');\n    const isPasteAsTextEnabled = option('paste_as_text');\n    const getPasteTabSpaces = option('paste_tab_spaces');\n    const shouldAllowHtmlDataUrls = option('allow_html_data_urls');\n    const getTextPatterns = option('text_patterns');\n    const getTextPatternsLookup = option('text_patterns_lookup');\n    const getNonEditableClass = option('noneditable_class');\n    const getEditableClass = option('editable_class');\n    const getNonEditableRegExps = option('noneditable_regexp');\n    const shouldPreserveCData = option('preserve_cdata');\n    const shouldHighlightOnFocus = option('highlight_on_focus');\n    const shouldSanitizeXss = option('xss_sanitization');\n    const shouldUseDocumentWrite = option('init_content_sync');\n    const hasTextPatternsLookup = editor => editor.options.isSet('text_patterns_lookup');\n    const getFontStyleValues = editor => Tools.explode(editor.options.get('font_size_style_values'));\n    const getFontSizeClasses = editor => Tools.explode(editor.options.get('font_size_classes'));\n    const isEncodingXml = editor => editor.options.get('encoding') === 'xml';\n    const getAllowedImageFileTypes = editor => Tools.explode(editor.options.get('images_file_types'));\n    const hasTableTabNavigation = option('table_tab_navigation');\n    const getDetailsInitialState = option('details_initial_state');\n    const getDetailsSerializedState = option('details_serialized_state');\n    const shouldForceHexColor = option('force_hex_color');\n    const shouldSandboxIframes = option('sandbox_iframes');\n\n    const isElement$3 = isElement$6;\n    const isText$5 = isText$a;\n    const removeNode$1 = node => {\n      const parentNode = node.parentNode;\n      if (parentNode) {\n        parentNode.removeChild(node);\n      }\n    };\n    const trimCount = text => {\n      const trimmedText = trim$2(text);\n      return {\n        count: text.length - trimmedText.length,\n        text: trimmedText\n      };\n    };\n    const deleteZwspChars = caretContainer => {\n      let idx;\n      while ((idx = caretContainer.data.lastIndexOf(ZWSP$1)) !== -1) {\n        caretContainer.deleteData(idx, 1);\n      }\n    };\n    const removeUnchanged = (caretContainer, pos) => {\n      remove$3(caretContainer);\n      return pos;\n    };\n    const removeTextAndReposition = (caretContainer, pos) => {\n      const before = trimCount(caretContainer.data.substr(0, pos.offset()));\n      const after = trimCount(caretContainer.data.substr(pos.offset()));\n      const text = before.text + after.text;\n      if (text.length > 0) {\n        deleteZwspChars(caretContainer);\n        return CaretPosition(caretContainer, pos.offset() - before.count);\n      } else {\n        return pos;\n      }\n    };\n    const removeElementAndReposition = (caretContainer, pos) => {\n      const parentNode = pos.container();\n      const newPosition = indexOf$1(from(parentNode.childNodes), caretContainer).map(index => {\n        return index < pos.offset() ? CaretPosition(parentNode, pos.offset() - 1) : pos;\n      }).getOr(pos);\n      remove$3(caretContainer);\n      return newPosition;\n    };\n    const removeTextCaretContainer = (caretContainer, pos) => isText$5(caretContainer) && pos.container() === caretContainer ? removeTextAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);\n    const removeElementCaretContainer = (caretContainer, pos) => pos.container() === caretContainer.parentNode ? removeElementAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);\n    const removeAndReposition = (container, pos) => CaretPosition.isTextPosition(pos) ? removeTextCaretContainer(container, pos) : removeElementCaretContainer(container, pos);\n    const remove$3 = caretContainerNode => {\n      if (isElement$3(caretContainerNode) && isCaretContainer$2(caretContainerNode)) {\n        if (hasContent(caretContainerNode)) {\n          caretContainerNode.removeAttribute('data-mce-caret');\n        } else {\n          removeNode$1(caretContainerNode);\n        }\n      }\n      if (isText$5(caretContainerNode)) {\n        deleteZwspChars(caretContainerNode);\n        if (caretContainerNode.data.length === 0) {\n          removeNode$1(caretContainerNode);\n        }\n      }\n    };\n\n    const isContentEditableFalse$8 = isContentEditableFalse$b;\n    const isMedia$1 = isMedia$2;\n    const isTableCell$1 = isTableCell$3;\n    const inlineFakeCaretSelector = '*[contentEditable=false],video,audio,embed,object';\n    const getAbsoluteClientRect = (root, element, before) => {\n      const clientRect = collapse(element.getBoundingClientRect(), before);\n      let scrollX;\n      let scrollY;\n      if (root.tagName === 'BODY') {\n        const docElm = root.ownerDocument.documentElement;\n        scrollX = root.scrollLeft || docElm.scrollLeft;\n        scrollY = root.scrollTop || docElm.scrollTop;\n      } else {\n        const rootRect = root.getBoundingClientRect();\n        scrollX = root.scrollLeft - rootRect.left;\n        scrollY = root.scrollTop - rootRect.top;\n      }\n      clientRect.left += scrollX;\n      clientRect.right += scrollX;\n      clientRect.top += scrollY;\n      clientRect.bottom += scrollY;\n      clientRect.width = 1;\n      let margin = element.offsetWidth - element.clientWidth;\n      if (margin > 0) {\n        if (before) {\n          margin *= -1;\n        }\n        clientRect.left += margin;\n        clientRect.right += margin;\n      }\n      return clientRect;\n    };\n    const trimInlineCaretContainers = root => {\n      var _a, _b;\n      const fakeCaretTargetNodes = descendants(SugarElement.fromDom(root), inlineFakeCaretSelector);\n      for (let i = 0; i < fakeCaretTargetNodes.length; i++) {\n        const node = fakeCaretTargetNodes[i].dom;\n        let sibling = node.previousSibling;\n        if (endsWithCaretContainer$1(sibling)) {\n          const data = sibling.data;\n          if (data.length === 1) {\n            (_a = sibling.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(sibling);\n          } else {\n            sibling.deleteData(data.length - 1, 1);\n          }\n        }\n        sibling = node.nextSibling;\n        if (startsWithCaretContainer$1(sibling)) {\n          const data = sibling.data;\n          if (data.length === 1) {\n            (_b = sibling.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(sibling);\n          } else {\n            sibling.deleteData(0, 1);\n          }\n        }\n      }\n    };\n    const FakeCaret = (editor, root, isBlock, hasFocus) => {\n      const lastVisualCaret = value$2();\n      let cursorInterval;\n      let caretContainerNode;\n      const caretBlock = getForcedRootBlock(editor);\n      const dom = editor.dom;\n      const show = (before, element) => {\n        let rng;\n        hide();\n        if (isTableCell$1(element)) {\n          return null;\n        }\n        if (isBlock(element)) {\n          const caretContainer = insertBlock(caretBlock, element, before);\n          const clientRect = getAbsoluteClientRect(root, element, before);\n          dom.setStyle(caretContainer, 'top', clientRect.top);\n          caretContainerNode = caretContainer;\n          const caret = dom.create('div', {\n            'class': 'mce-visual-caret',\n            'data-mce-bogus': 'all'\n          });\n          dom.setStyles(caret, { ...clientRect });\n          dom.add(root, caret);\n          lastVisualCaret.set({\n            caret,\n            element,\n            before\n          });\n          if (before) {\n            dom.addClass(caret, 'mce-visual-caret-before');\n          }\n          startBlink();\n          rng = element.ownerDocument.createRange();\n          rng.setStart(caretContainer, 0);\n          rng.setEnd(caretContainer, 0);\n        } else {\n          caretContainerNode = insertInline$1(element, before);\n          rng = element.ownerDocument.createRange();\n          if (isInlineFakeCaretTarget(caretContainerNode.nextSibling)) {\n            rng.setStart(caretContainerNode, 0);\n            rng.setEnd(caretContainerNode, 0);\n          } else {\n            rng.setStart(caretContainerNode, 1);\n            rng.setEnd(caretContainerNode, 1);\n          }\n          return rng;\n        }\n        return rng;\n      };\n      const hide = () => {\n        trimInlineCaretContainers(root);\n        if (caretContainerNode) {\n          remove$3(caretContainerNode);\n          caretContainerNode = null;\n        }\n        lastVisualCaret.on(caretState => {\n          dom.remove(caretState.caret);\n          lastVisualCaret.clear();\n        });\n        if (cursorInterval) {\n          clearInterval(cursorInterval);\n          cursorInterval = undefined;\n        }\n      };\n      const startBlink = () => {\n        cursorInterval = setInterval(() => {\n          lastVisualCaret.on(caretState => {\n            if (hasFocus()) {\n              dom.toggleClass(caretState.caret, 'mce-visual-caret-hidden');\n            } else {\n              dom.addClass(caretState.caret, 'mce-visual-caret-hidden');\n            }\n          });\n        }, 500);\n      };\n      const reposition = () => {\n        lastVisualCaret.on(caretState => {\n          const clientRect = getAbsoluteClientRect(root, caretState.element, caretState.before);\n          dom.setStyles(caretState.caret, { ...clientRect });\n        });\n      };\n      const destroy = () => clearInterval(cursorInterval);\n      const getCss = () => '.mce-visual-caret {' + 'position: absolute;' + 'background-color: black;' + 'background-color: currentcolor;' + '}' + '.mce-visual-caret-hidden {' + 'display: none;' + '}' + '*[data-mce-caret] {' + 'position: absolute;' + 'left: -1000px;' + 'right: auto;' + 'top: 0;' + 'margin: 0;' + 'padding: 0;' + '}';\n      return {\n        show,\n        hide,\n        getCss,\n        reposition,\n        destroy\n      };\n    };\n    const isFakeCaretTableBrowser = () => Env.browser.isFirefox();\n    const isInlineFakeCaretTarget = node => isContentEditableFalse$8(node) || isMedia$1(node);\n    const isFakeCaretTarget = node => {\n      const isTarget = isInlineFakeCaretTarget(node) || isTable$2(node) && isFakeCaretTableBrowser();\n      return isTarget && parentElement(SugarElement.fromDom(node)).exists(isEditable$2);\n    };\n\n    const isContentEditableTrue$1 = isContentEditableTrue$3;\n    const isContentEditableFalse$7 = isContentEditableFalse$b;\n    const isMedia = isMedia$2;\n    const isBlockLike = matchStyleValues('display', 'block table table-cell table-caption list-item');\n    const isCaretContainer = isCaretContainer$2;\n    const isCaretContainerBlock = isCaretContainerBlock$1;\n    const isElement$2 = isElement$6;\n    const isText$4 = isText$a;\n    const isCaretCandidate$1 = isCaretCandidate$3;\n    const isForwards = direction => direction > 0;\n    const isBackwards = direction => direction < 0;\n    const skipCaretContainers = (walk, shallow) => {\n      let node;\n      while (node = walk(shallow)) {\n        if (!isCaretContainerBlock(node)) {\n          return node;\n        }\n      }\n      return null;\n    };\n    const findNode = (node, direction, predicateFn, rootNode, shallow) => {\n      const walker = new DomTreeWalker(node, rootNode);\n      const isCefOrCaretContainer = isContentEditableFalse$7(node) || isCaretContainerBlock(node);\n      let tempNode;\n      if (isBackwards(direction)) {\n        if (isCefOrCaretContainer) {\n          tempNode = skipCaretContainers(walker.prev.bind(walker), true);\n          if (predicateFn(tempNode)) {\n            return tempNode;\n          }\n        }\n        while (tempNode = skipCaretContainers(walker.prev.bind(walker), shallow)) {\n          if (predicateFn(tempNode)) {\n            return tempNode;\n          }\n        }\n      }\n      if (isForwards(direction)) {\n        if (isCefOrCaretContainer) {\n          tempNode = skipCaretContainers(walker.next.bind(walker), true);\n          if (predicateFn(tempNode)) {\n            return tempNode;\n          }\n        }\n        while (tempNode = skipCaretContainers(walker.next.bind(walker), shallow)) {\n          if (predicateFn(tempNode)) {\n            return tempNode;\n          }\n        }\n      }\n      return null;\n    };\n    const getEditingHost = (node, rootNode) => {\n      const isCETrue = node => isContentEditableTrue$1(node.dom);\n      const isRoot = node => node.dom === rootNode;\n      return ancestor$4(SugarElement.fromDom(node), isCETrue, isRoot).map(elm => elm.dom).getOr(rootNode);\n    };\n    const getParentBlock$3 = (node, rootNode) => {\n      while (node && node !== rootNode) {\n        if (isBlockLike(node)) {\n          return node;\n        }\n        node = node.parentNode;\n      }\n      return null;\n    };\n    const isInSameBlock = (caretPosition1, caretPosition2, rootNode) => getParentBlock$3(caretPosition1.container(), rootNode) === getParentBlock$3(caretPosition2.container(), rootNode);\n    const getChildNodeAtRelativeOffset = (relativeOffset, caretPosition) => {\n      if (!caretPosition) {\n        return Optional.none();\n      }\n      const container = caretPosition.container();\n      const offset = caretPosition.offset();\n      if (!isElement$2(container)) {\n        return Optional.none();\n      }\n      return Optional.from(container.childNodes[offset + relativeOffset]);\n    };\n    const beforeAfter = (before, node) => {\n      var _a;\n      const doc = (_a = node.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      const range = doc.createRange();\n      if (before) {\n        range.setStartBefore(node);\n        range.setEndBefore(node);\n      } else {\n        range.setStartAfter(node);\n        range.setEndAfter(node);\n      }\n      return range;\n    };\n    const isNodesInSameBlock = (root, node1, node2) => getParentBlock$3(node1, root) === getParentBlock$3(node2, root);\n    const lean = (left, root, node) => {\n      const siblingName = left ? 'previousSibling' : 'nextSibling';\n      let tempNode = node;\n      while (tempNode && tempNode !== root) {\n        let sibling = tempNode[siblingName];\n        if (sibling && isCaretContainer(sibling)) {\n          sibling = sibling[siblingName];\n        }\n        if (isContentEditableFalse$7(sibling) || isMedia(sibling)) {\n          if (isNodesInSameBlock(root, sibling, tempNode)) {\n            return sibling;\n          }\n          break;\n        }\n        if (isCaretCandidate$1(sibling)) {\n          break;\n        }\n        tempNode = tempNode.parentNode;\n      }\n      return null;\n    };\n    const before$2 = curry(beforeAfter, true);\n    const after$2 = curry(beforeAfter, false);\n    const normalizeRange = (direction, root, range) => {\n      let node;\n      const leanLeft = curry(lean, true, root);\n      const leanRight = curry(lean, false, root);\n      const container = range.startContainer;\n      const offset = range.startOffset;\n      if (isCaretContainerBlock$1(container)) {\n        const block = isText$4(container) ? container.parentNode : container;\n        const location = block.getAttribute('data-mce-caret');\n        if (location === 'before') {\n          node = block.nextSibling;\n          if (isFakeCaretTarget(node)) {\n            return before$2(node);\n          }\n        }\n        if (location === 'after') {\n          node = block.previousSibling;\n          if (isFakeCaretTarget(node)) {\n            return after$2(node);\n          }\n        }\n      }\n      if (!range.collapsed) {\n        return range;\n      }\n      if (isText$a(container)) {\n        if (isCaretContainer(container)) {\n          if (direction === 1) {\n            node = leanRight(container);\n            if (node) {\n              return before$2(node);\n            }\n            node = leanLeft(container);\n            if (node) {\n              return after$2(node);\n            }\n          }\n          if (direction === -1) {\n            node = leanLeft(container);\n            if (node) {\n              return after$2(node);\n            }\n            node = leanRight(container);\n            if (node) {\n              return before$2(node);\n            }\n          }\n          return range;\n        }\n        if (endsWithCaretContainer$1(container) && offset >= container.data.length - 1) {\n          if (direction === 1) {\n            node = leanRight(container);\n            if (node) {\n              return before$2(node);\n            }\n          }\n          return range;\n        }\n        if (startsWithCaretContainer$1(container) && offset <= 1) {\n          if (direction === -1) {\n            node = leanLeft(container);\n            if (node) {\n              return after$2(node);\n            }\n          }\n          return range;\n        }\n        if (offset === container.data.length) {\n          node = leanRight(container);\n          if (node) {\n            return before$2(node);\n          }\n          return range;\n        }\n        if (offset === 0) {\n          node = leanLeft(container);\n          if (node) {\n            return after$2(node);\n          }\n          return range;\n        }\n      }\n      return range;\n    };\n    const getRelativeCefElm = (forward, caretPosition) => getChildNodeAtRelativeOffset(forward ? 0 : -1, caretPosition).filter(isContentEditableFalse$7);\n    const getNormalizedRangeEndPoint = (direction, root, range) => {\n      const normalizedRange = normalizeRange(direction, root, range);\n      return direction === -1 ? CaretPosition.fromRangeStart(normalizedRange) : CaretPosition.fromRangeEnd(normalizedRange);\n    };\n    const getElementFromPosition = pos => Optional.from(pos.getNode()).map(SugarElement.fromDom);\n    const getElementFromPrevPosition = pos => Optional.from(pos.getNode(true)).map(SugarElement.fromDom);\n    const getVisualCaretPosition = (walkFn, caretPosition) => {\n      let pos = caretPosition;\n      while (pos = walkFn(pos)) {\n        if (pos.isVisible()) {\n          return pos;\n        }\n      }\n      return pos;\n    };\n    const isMoveInsideSameBlock = (from, to) => {\n      const inSameBlock = isInSameBlock(from, to);\n      if (!inSameBlock && isBr$6(from.getNode())) {\n        return true;\n      }\n      return inSameBlock;\n    };\n\n    var HDirection;\n    (function (HDirection) {\n      HDirection[HDirection['Backwards'] = -1] = 'Backwards';\n      HDirection[HDirection['Forwards'] = 1] = 'Forwards';\n    }(HDirection || (HDirection = {})));\n    const isContentEditableFalse$6 = isContentEditableFalse$b;\n    const isText$3 = isText$a;\n    const isElement$1 = isElement$6;\n    const isBr$2 = isBr$6;\n    const isCaretCandidate = isCaretCandidate$3;\n    const isAtomic = isAtomic$1;\n    const isEditableCaretCandidate = isEditableCaretCandidate$1;\n    const getParents$3 = (node, root) => {\n      const parents = [];\n      let tempNode = node;\n      while (tempNode && tempNode !== root) {\n        parents.push(tempNode);\n        tempNode = tempNode.parentNode;\n      }\n      return parents;\n    };\n    const nodeAtIndex = (container, offset) => {\n      if (container.hasChildNodes() && offset < container.childNodes.length) {\n        return container.childNodes[offset];\n      }\n      return null;\n    };\n    const getCaretCandidatePosition = (direction, node) => {\n      if (isForwards(direction)) {\n        if (isCaretCandidate(node.previousSibling) && !isText$3(node.previousSibling)) {\n          return CaretPosition.before(node);\n        }\n        if (isText$3(node)) {\n          return CaretPosition(node, 0);\n        }\n      }\n      if (isBackwards(direction)) {\n        if (isCaretCandidate(node.nextSibling) && !isText$3(node.nextSibling)) {\n          return CaretPosition.after(node);\n        }\n        if (isText$3(node)) {\n          return CaretPosition(node, node.data.length);\n        }\n      }\n      if (isBackwards(direction)) {\n        if (isBr$2(node)) {\n          return CaretPosition.before(node);\n        }\n        return CaretPosition.after(node);\n      }\n      return CaretPosition.before(node);\n    };\n    const moveForwardFromBr = (root, nextNode) => {\n      const nextSibling = nextNode.nextSibling;\n      if (nextSibling && isCaretCandidate(nextSibling)) {\n        if (isText$3(nextSibling)) {\n          return CaretPosition(nextSibling, 0);\n        } else {\n          return CaretPosition.before(nextSibling);\n        }\n      } else {\n        return findCaretPosition$1(HDirection.Forwards, CaretPosition.after(nextNode), root);\n      }\n    };\n    const findCaretPosition$1 = (direction, startPos, root) => {\n      let node;\n      let nextNode;\n      let innerNode;\n      let caretPosition;\n      if (!isElement$1(root) || !startPos) {\n        return null;\n      }\n      if (startPos.isEqual(CaretPosition.after(root)) && root.lastChild) {\n        caretPosition = CaretPosition.after(root.lastChild);\n        if (isBackwards(direction) && isCaretCandidate(root.lastChild) && isElement$1(root.lastChild)) {\n          return isBr$2(root.lastChild) ? CaretPosition.before(root.lastChild) : caretPosition;\n        }\n      } else {\n        caretPosition = startPos;\n      }\n      const container = caretPosition.container();\n      let offset = caretPosition.offset();\n      if (isText$3(container)) {\n        if (isBackwards(direction) && offset > 0) {\n          return CaretPosition(container, --offset);\n        }\n        if (isForwards(direction) && offset < container.length) {\n          return CaretPosition(container, ++offset);\n        }\n        node = container;\n      } else {\n        if (isBackwards(direction) && offset > 0) {\n          nextNode = nodeAtIndex(container, offset - 1);\n          if (isCaretCandidate(nextNode)) {\n            if (!isAtomic(nextNode)) {\n              innerNode = findNode(nextNode, direction, isEditableCaretCandidate, nextNode);\n              if (innerNode) {\n                if (isText$3(innerNode)) {\n                  return CaretPosition(innerNode, innerNode.data.length);\n                }\n                return CaretPosition.after(innerNode);\n              }\n            }\n            if (isText$3(nextNode)) {\n              return CaretPosition(nextNode, nextNode.data.length);\n            }\n            return CaretPosition.before(nextNode);\n          }\n        }\n        if (isForwards(direction) && offset < container.childNodes.length) {\n          nextNode = nodeAtIndex(container, offset);\n          if (isCaretCandidate(nextNode)) {\n            if (isBr$2(nextNode)) {\n              return moveForwardFromBr(root, nextNode);\n            }\n            if (!isAtomic(nextNode)) {\n              innerNode = findNode(nextNode, direction, isEditableCaretCandidate, nextNode);\n              if (innerNode) {\n                if (isText$3(innerNode)) {\n                  return CaretPosition(innerNode, 0);\n                }\n                return CaretPosition.before(innerNode);\n              }\n            }\n            if (isText$3(nextNode)) {\n              return CaretPosition(nextNode, 0);\n            }\n            return CaretPosition.after(nextNode);\n          }\n        }\n        node = nextNode ? nextNode : caretPosition.getNode();\n      }\n      if (node && (isForwards(direction) && caretPosition.isAtEnd() || isBackwards(direction) && caretPosition.isAtStart())) {\n        node = findNode(node, direction, always, root, true);\n        if (isEditableCaretCandidate(node, root)) {\n          return getCaretCandidatePosition(direction, node);\n        }\n      }\n      nextNode = node ? findNode(node, direction, isEditableCaretCandidate, root) : node;\n      const rootContentEditableFalseElm = last$2(filter$5(getParents$3(container, root), isContentEditableFalse$6));\n      if (rootContentEditableFalseElm && (!nextNode || !rootContentEditableFalseElm.contains(nextNode))) {\n        if (isForwards(direction)) {\n          caretPosition = CaretPosition.after(rootContentEditableFalseElm);\n        } else {\n          caretPosition = CaretPosition.before(rootContentEditableFalseElm);\n        }\n        return caretPosition;\n      }\n      if (nextNode) {\n        return getCaretCandidatePosition(direction, nextNode);\n      }\n      return null;\n    };\n    const CaretWalker = root => ({\n      next: caretPosition => {\n        return findCaretPosition$1(HDirection.Forwards, caretPosition, root);\n      },\n      prev: caretPosition => {\n        return findCaretPosition$1(HDirection.Backwards, caretPosition, root);\n      }\n    });\n\n    const walkToPositionIn = (forward, root, start) => {\n      const position = forward ? CaretPosition.before(start) : CaretPosition.after(start);\n      return fromPosition(forward, root, position);\n    };\n    const afterElement = node => isBr$6(node) ? CaretPosition.before(node) : CaretPosition.after(node);\n    const isBeforeOrStart = position => {\n      if (CaretPosition.isTextPosition(position)) {\n        return position.offset() === 0;\n      } else {\n        return isCaretCandidate$3(position.getNode());\n      }\n    };\n    const isAfterOrEnd = position => {\n      if (CaretPosition.isTextPosition(position)) {\n        const container = position.container();\n        return position.offset() === container.data.length;\n      } else {\n        return isCaretCandidate$3(position.getNode(true));\n      }\n    };\n    const isBeforeAfterSameElement = (from, to) => !CaretPosition.isTextPosition(from) && !CaretPosition.isTextPosition(to) && from.getNode() === to.getNode(true);\n    const isAtBr = position => !CaretPosition.isTextPosition(position) && isBr$6(position.getNode());\n    const shouldSkipPosition = (forward, from, to) => {\n      if (forward) {\n        return !isBeforeAfterSameElement(from, to) && !isAtBr(from) && isAfterOrEnd(from) && isBeforeOrStart(to);\n      } else {\n        return !isBeforeAfterSameElement(to, from) && isBeforeOrStart(from) && isAfterOrEnd(to);\n      }\n    };\n    const fromPosition = (forward, root, pos) => {\n      const walker = CaretWalker(root);\n      return Optional.from(forward ? walker.next(pos) : walker.prev(pos));\n    };\n    const navigate = (forward, root, from) => fromPosition(forward, root, from).bind(to => {\n      if (isInSameBlock(from, to, root) && shouldSkipPosition(forward, from, to)) {\n        return fromPosition(forward, root, to);\n      } else {\n        return Optional.some(to);\n      }\n    });\n    const navigateIgnore = (forward, root, from, ignoreFilter) => navigate(forward, root, from).bind(pos => ignoreFilter(pos) ? navigateIgnore(forward, root, pos, ignoreFilter) : Optional.some(pos));\n    const positionIn = (forward, element) => {\n      const startNode = forward ? element.firstChild : element.lastChild;\n      if (isText$a(startNode)) {\n        return Optional.some(CaretPosition(startNode, forward ? 0 : startNode.data.length));\n      } else if (startNode) {\n        if (isCaretCandidate$3(startNode)) {\n          return Optional.some(forward ? CaretPosition.before(startNode) : afterElement(startNode));\n        } else {\n          return walkToPositionIn(forward, element, startNode);\n        }\n      } else {\n        return Optional.none();\n      }\n    };\n    const nextPosition = curry(fromPosition, true);\n    const prevPosition = curry(fromPosition, false);\n    const firstPositionIn = curry(positionIn, true);\n    const lastPositionIn = curry(positionIn, false);\n\n    const CARET_ID = '_mce_caret';\n    const isCaretNode = node => isElement$6(node) && node.id === CARET_ID;\n    const getParentCaretContainer = (body, node) => {\n      let currentNode = node;\n      while (currentNode && currentNode !== body) {\n        if (isCaretNode(currentNode)) {\n          return currentNode;\n        }\n        currentNode = currentNode.parentNode;\n      }\n      return null;\n    };\n\n    const isStringPathBookmark = bookmark => isString(bookmark.start);\n    const isRangeBookmark = bookmark => has$2(bookmark, 'rng');\n    const isIdBookmark = bookmark => has$2(bookmark, 'id');\n    const isIndexBookmark = bookmark => has$2(bookmark, 'name');\n    const isPathBookmark = bookmark => Tools.isArray(bookmark.start);\n\n    const isForwardBookmark = bookmark => !isIndexBookmark(bookmark) && isBoolean(bookmark.forward) ? bookmark.forward : true;\n    const addBogus = (dom, node) => {\n      if (isElement$6(node) && dom.isBlock(node) && !node.innerHTML) {\n        node.innerHTML = '<br data-mce-bogus=\"1\" />';\n      }\n      return node;\n    };\n    const resolveCaretPositionBookmark = (dom, bookmark) => {\n      const startPos = Optional.from(resolve$1(dom.getRoot(), bookmark.start));\n      const endPos = Optional.from(resolve$1(dom.getRoot(), bookmark.end));\n      return lift2(startPos, endPos, (start, end) => {\n        const range = dom.createRng();\n        range.setStart(start.container(), start.offset());\n        range.setEnd(end.container(), end.offset());\n        return {\n          range,\n          forward: isForwardBookmark(bookmark)\n        };\n      });\n    };\n    const insertZwsp = (node, rng) => {\n      var _a;\n      const doc = (_a = node.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      const textNode = doc.createTextNode(ZWSP$1);\n      node.appendChild(textNode);\n      rng.setStart(textNode, 0);\n      rng.setEnd(textNode, 0);\n    };\n    const isEmpty$1 = node => !node.hasChildNodes();\n    const tryFindRangePosition = (node, rng) => lastPositionIn(node).fold(never, pos => {\n      rng.setStart(pos.container(), pos.offset());\n      rng.setEnd(pos.container(), pos.offset());\n      return true;\n    });\n    const padEmptyCaretContainer = (root, node, rng) => {\n      if (isEmpty$1(node) && getParentCaretContainer(root, node)) {\n        insertZwsp(node, rng);\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const setEndPoint = (dom, start, bookmark, rng) => {\n      const point = bookmark[start ? 'start' : 'end'];\n      const root = dom.getRoot();\n      if (point) {\n        let node = root;\n        let offset = point[0];\n        for (let i = point.length - 1; node && i >= 1; i--) {\n          const children = node.childNodes;\n          if (padEmptyCaretContainer(root, node, rng)) {\n            return true;\n          }\n          if (point[i] > children.length - 1) {\n            if (padEmptyCaretContainer(root, node, rng)) {\n              return true;\n            }\n            return tryFindRangePosition(node, rng);\n          }\n          node = children[point[i]];\n        }\n        if (isText$a(node)) {\n          offset = Math.min(point[0], node.data.length);\n        }\n        if (isElement$6(node)) {\n          offset = Math.min(point[0], node.childNodes.length);\n        }\n        if (start) {\n          rng.setStart(node, offset);\n        } else {\n          rng.setEnd(node, offset);\n        }\n      }\n      return true;\n    };\n    const isValidTextNode = node => isText$a(node) && node.data.length > 0;\n    const restoreEndPoint = (dom, suffix, bookmark) => {\n      const marker = dom.get(bookmark.id + '_' + suffix);\n      const markerParent = marker === null || marker === void 0 ? void 0 : marker.parentNode;\n      const keep = bookmark.keep;\n      if (marker && markerParent) {\n        let container;\n        let offset;\n        if (suffix === 'start') {\n          if (!keep) {\n            container = markerParent;\n            offset = dom.nodeIndex(marker);\n          } else {\n            if (marker.hasChildNodes()) {\n              container = marker.firstChild;\n              offset = 1;\n            } else if (isValidTextNode(marker.nextSibling)) {\n              container = marker.nextSibling;\n              offset = 0;\n            } else if (isValidTextNode(marker.previousSibling)) {\n              container = marker.previousSibling;\n              offset = marker.previousSibling.data.length;\n            } else {\n              container = markerParent;\n              offset = dom.nodeIndex(marker) + 1;\n            }\n          }\n        } else {\n          if (!keep) {\n            container = markerParent;\n            offset = dom.nodeIndex(marker);\n          } else {\n            if (marker.hasChildNodes()) {\n              container = marker.firstChild;\n              offset = 1;\n            } else if (isValidTextNode(marker.previousSibling)) {\n              container = marker.previousSibling;\n              offset = marker.previousSibling.data.length;\n            } else {\n              container = markerParent;\n              offset = dom.nodeIndex(marker);\n            }\n          }\n        }\n        if (!keep) {\n          const prev = marker.previousSibling;\n          const next = marker.nextSibling;\n          Tools.each(Tools.grep(marker.childNodes), node => {\n            if (isText$a(node)) {\n              node.data = node.data.replace(/\\uFEFF/g, '');\n            }\n          });\n          let otherMarker;\n          while (otherMarker = dom.get(bookmark.id + '_' + suffix)) {\n            dom.remove(otherMarker, true);\n          }\n          if (isText$a(next) && isText$a(prev) && !Env.browser.isOpera()) {\n            const idx = prev.data.length;\n            prev.appendData(next.data);\n            dom.remove(next);\n            container = prev;\n            offset = idx;\n          }\n        }\n        return Optional.some(CaretPosition(container, offset));\n      } else {\n        return Optional.none();\n      }\n    };\n    const resolvePaths = (dom, bookmark) => {\n      const range = dom.createRng();\n      if (setEndPoint(dom, true, bookmark, range) && setEndPoint(dom, false, bookmark, range)) {\n        return Optional.some({\n          range,\n          forward: isForwardBookmark(bookmark)\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const resolveId = (dom, bookmark) => {\n      const startPos = restoreEndPoint(dom, 'start', bookmark);\n      const endPos = restoreEndPoint(dom, 'end', bookmark);\n      return lift2(startPos, endPos.or(startPos), (spos, epos) => {\n        const range = dom.createRng();\n        range.setStart(addBogus(dom, spos.container()), spos.offset());\n        range.setEnd(addBogus(dom, epos.container()), epos.offset());\n        return {\n          range,\n          forward: isForwardBookmark(bookmark)\n        };\n      });\n    };\n    const resolveIndex = (dom, bookmark) => Optional.from(dom.select(bookmark.name)[bookmark.index]).map(elm => {\n      const range = dom.createRng();\n      range.selectNode(elm);\n      return {\n        range,\n        forward: true\n      };\n    });\n    const resolve = (selection, bookmark) => {\n      const dom = selection.dom;\n      if (bookmark) {\n        if (isPathBookmark(bookmark)) {\n          return resolvePaths(dom, bookmark);\n        } else if (isStringPathBookmark(bookmark)) {\n          return resolveCaretPositionBookmark(dom, bookmark);\n        } else if (isIdBookmark(bookmark)) {\n          return resolveId(dom, bookmark);\n        } else if (isIndexBookmark(bookmark)) {\n          return resolveIndex(dom, bookmark);\n        } else if (isRangeBookmark(bookmark)) {\n          return Optional.some({\n            range: bookmark.rng,\n            forward: isForwardBookmark(bookmark)\n          });\n        }\n      }\n      return Optional.none();\n    };\n\n    const getBookmark$1 = (selection, type, normalized) => {\n      return getBookmark$2(selection, type, normalized);\n    };\n    const moveToBookmark = (selection, bookmark) => {\n      resolve(selection, bookmark).each(({range, forward}) => {\n        selection.setRng(range, forward);\n      });\n    };\n    const isBookmarkNode$1 = node => {\n      return isElement$6(node) && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';\n    };\n\n    const is = expected => actual => expected === actual;\n    const isNbsp = is(nbsp);\n    const isWhiteSpace = chr => chr !== '' && ' \\f\\n\\r\\t\\x0B'.indexOf(chr) !== -1;\n    const isContent = chr => !isWhiteSpace(chr) && !isNbsp(chr) && !isZwsp$2(chr);\n\n    const getRanges$1 = selection => {\n      const ranges = [];\n      if (selection) {\n        for (let i = 0; i < selection.rangeCount; i++) {\n          ranges.push(selection.getRangeAt(i));\n        }\n      }\n      return ranges;\n    };\n    const getSelectedNodes = ranges => {\n      return bind$3(ranges, range => {\n        const node = getSelectedNode(range);\n        return node ? [SugarElement.fromDom(node)] : [];\n      });\n    };\n    const hasMultipleRanges = selection => {\n      return getRanges$1(selection).length > 1;\n    };\n\n    const getCellsFromRanges = ranges => filter$5(getSelectedNodes(ranges), isTableCell$2);\n    const getCellsFromElement = elm => descendants(elm, 'td[data-mce-selected],th[data-mce-selected]');\n    const getCellsFromElementOrRanges = (ranges, element) => {\n      const selectedCells = getCellsFromElement(element);\n      return selectedCells.length > 0 ? selectedCells : getCellsFromRanges(ranges);\n    };\n    const getCellsFromEditor = editor => getCellsFromElementOrRanges(getRanges$1(editor.selection.getSel()), SugarElement.fromDom(editor.getBody()));\n    const getClosestTable = (cell, isRoot) => ancestor$3(cell, 'table', isRoot);\n\n    const getStartNode = rng => {\n      const sc = rng.startContainer, so = rng.startOffset;\n      if (isText$a(sc)) {\n        return so === 0 ? Optional.some(SugarElement.fromDom(sc)) : Optional.none();\n      } else {\n        return Optional.from(sc.childNodes[so]).map(SugarElement.fromDom);\n      }\n    };\n    const getEndNode = rng => {\n      const ec = rng.endContainer, eo = rng.endOffset;\n      if (isText$a(ec)) {\n        return eo === ec.data.length ? Optional.some(SugarElement.fromDom(ec)) : Optional.none();\n      } else {\n        return Optional.from(ec.childNodes[eo - 1]).map(SugarElement.fromDom);\n      }\n    };\n    const getFirstChildren = node => {\n      return firstChild(node).fold(constant([node]), child => {\n        return [node].concat(getFirstChildren(child));\n      });\n    };\n    const getLastChildren = node => {\n      return lastChild(node).fold(constant([node]), child => {\n        if (name(child) === 'br') {\n          return prevSibling(child).map(sibling => {\n            return [node].concat(getLastChildren(sibling));\n          }).getOr([]);\n        } else {\n          return [node].concat(getLastChildren(child));\n        }\n      });\n    };\n    const hasAllContentsSelected = (elm, rng) => {\n      return lift2(getStartNode(rng), getEndNode(rng), (startNode, endNode) => {\n        const start = find$2(getFirstChildren(elm), curry(eq, startNode));\n        const end = find$2(getLastChildren(elm), curry(eq, endNode));\n        return start.isSome() && end.isSome();\n      }).getOr(false);\n    };\n    const moveEndPoint = (dom, rng, node, start) => {\n      const root = node;\n      const walker = new DomTreeWalker(node, root);\n      const moveCaretBeforeOnEnterElementsMap = filter$4(dom.schema.getMoveCaretBeforeOnEnterElements(), (_, name) => !contains$2([\n        'td',\n        'th',\n        'table'\n      ], name.toLowerCase()));\n      let currentNode = node;\n      do {\n        if (isText$a(currentNode) && Tools.trim(currentNode.data).length !== 0) {\n          if (start) {\n            rng.setStart(currentNode, 0);\n          } else {\n            rng.setEnd(currentNode, currentNode.data.length);\n          }\n          return;\n        }\n        if (moveCaretBeforeOnEnterElementsMap[currentNode.nodeName]) {\n          if (start) {\n            rng.setStartBefore(currentNode);\n          } else {\n            if (currentNode.nodeName === 'BR') {\n              rng.setEndBefore(currentNode);\n            } else {\n              rng.setEndAfter(currentNode);\n            }\n          }\n          return;\n        }\n      } while (currentNode = start ? walker.next() : walker.prev());\n      if (root.nodeName === 'BODY') {\n        if (start) {\n          rng.setStart(root, 0);\n        } else {\n          rng.setEnd(root, root.childNodes.length);\n        }\n      }\n    };\n    const hasAnyRanges = editor => {\n      const sel = editor.selection.getSel();\n      return isNonNullable(sel) && sel.rangeCount > 0;\n    };\n    const runOnRanges = (editor, executor) => {\n      const fakeSelectionNodes = getCellsFromEditor(editor);\n      if (fakeSelectionNodes.length > 0) {\n        each$e(fakeSelectionNodes, elem => {\n          const node = elem.dom;\n          const fakeNodeRng = editor.dom.createRng();\n          fakeNodeRng.setStartBefore(node);\n          fakeNodeRng.setEndAfter(node);\n          executor(fakeNodeRng, true);\n        });\n      } else {\n        executor(editor.selection.getRng(), false);\n      }\n    };\n    const preserve = (selection, fillBookmark, executor) => {\n      const bookmark = getPersistentBookmark(selection, fillBookmark);\n      executor(bookmark);\n      selection.moveToBookmark(bookmark);\n    };\n\n    const isNode = node => isNumber(node === null || node === void 0 ? void 0 : node.nodeType);\n    const isElementNode$1 = node => isElement$6(node) && !isBookmarkNode$1(node) && !isCaretNode(node) && !isBogus$2(node);\n    const isElementDirectlySelected = (dom, node) => {\n      if (isElementNode$1(node) && !/^(TD|TH)$/.test(node.nodeName)) {\n        const selectedAttr = dom.getAttrib(node, 'data-mce-selected');\n        const value = parseInt(selectedAttr, 10);\n        return !isNaN(value) && value > 0;\n      } else {\n        return false;\n      }\n    };\n    const preserveSelection = (editor, action, shouldMoveStart) => {\n      const {selection, dom} = editor;\n      const selectedNodeBeforeAction = selection.getNode();\n      const isSelectedBeforeNodeNoneditable = isContentEditableFalse$b(selectedNodeBeforeAction);\n      preserve(selection, true, () => {\n        action();\n      });\n      const isBeforeNodeStillNoneditable = isSelectedBeforeNodeNoneditable && isContentEditableFalse$b(selectedNodeBeforeAction);\n      if (isBeforeNodeStillNoneditable && dom.isChildOf(selectedNodeBeforeAction, editor.getBody())) {\n        editor.selection.select(selectedNodeBeforeAction);\n      } else if (shouldMoveStart(selection.getStart())) {\n        moveStartToNearestText(dom, selection);\n      }\n    };\n    const moveStartToNearestText = (dom, selection) => {\n      var _a, _b;\n      const rng = selection.getRng();\n      const {startContainer, startOffset} = rng;\n      const selectedNode = selection.getNode();\n      if (isElementDirectlySelected(dom, selectedNode)) {\n        return;\n      }\n      if (isElement$6(startContainer)) {\n        const nodes = startContainer.childNodes;\n        const root = dom.getRoot();\n        let walker;\n        if (startOffset < nodes.length) {\n          const startNode = nodes[startOffset];\n          walker = new DomTreeWalker(startNode, (_a = dom.getParent(startNode, dom.isBlock)) !== null && _a !== void 0 ? _a : root);\n        } else {\n          const startNode = nodes[nodes.length - 1];\n          walker = new DomTreeWalker(startNode, (_b = dom.getParent(startNode, dom.isBlock)) !== null && _b !== void 0 ? _b : root);\n          walker.next(true);\n        }\n        for (let node = walker.current(); node; node = walker.next()) {\n          if (dom.getContentEditable(node) === 'false') {\n            return;\n          } else if (isText$a(node) && !isWhiteSpaceNode$1(node)) {\n            rng.setStart(node, 0);\n            selection.setRng(rng);\n            return;\n          }\n        }\n      }\n    };\n    const getNonWhiteSpaceSibling = (node, next, inc) => {\n      if (node) {\n        const nextName = next ? 'nextSibling' : 'previousSibling';\n        for (node = inc ? node : node[nextName]; node; node = node[nextName]) {\n          if (isElement$6(node) || !isWhiteSpaceNode$1(node)) {\n            return node;\n          }\n        }\n      }\n      return undefined;\n    };\n    const isTextBlock$1 = (schema, node) => !!schema.getTextBlockElements()[node.nodeName.toLowerCase()] || isTransparentBlock(schema, node);\n    const isValid = (ed, parent, child) => {\n      return ed.schema.isValidChild(parent, child);\n    };\n    const isWhiteSpaceNode$1 = (node, allowSpaces = false) => {\n      if (isNonNullable(node) && isText$a(node)) {\n        const data = allowSpaces ? node.data.replace(/ /g, '\\xA0') : node.data;\n        return isWhitespaceText(data);\n      } else {\n        return false;\n      }\n    };\n    const isEmptyTextNode$1 = node => {\n      return isNonNullable(node) && isText$a(node) && node.length === 0;\n    };\n    const isWrapNoneditableTarget = (editor, node) => {\n      const baseDataSelector = '[data-mce-cef-wrappable]';\n      const formatNoneditableSelector = getFormatNoneditableSelector(editor);\n      const selector = isEmpty$3(formatNoneditableSelector) ? baseDataSelector : `${ baseDataSelector },${ formatNoneditableSelector }`;\n      return is$1(SugarElement.fromDom(node), selector);\n    };\n    const isWrappableNoneditable = (editor, node) => {\n      const dom = editor.dom;\n      return isElementNode$1(node) && dom.getContentEditable(node) === 'false' && isWrapNoneditableTarget(editor, node) && dom.select('[contenteditable=\"true\"]', node).length === 0;\n    };\n    const replaceVars = (value, vars) => {\n      if (isFunction(value)) {\n        return value(vars);\n      } else if (isNonNullable(vars)) {\n        value = value.replace(/%(\\w+)/g, (str, name) => {\n          return vars[name] || str;\n        });\n      }\n      return value;\n    };\n    const isEq$5 = (str1, str2) => {\n      str1 = str1 || '';\n      str2 = str2 || '';\n      str1 = '' + (str1.nodeName || str1);\n      str2 = '' + (str2.nodeName || str2);\n      return str1.toLowerCase() === str2.toLowerCase();\n    };\n    const normalizeStyleValue = (value, name) => {\n      if (isNullable(value)) {\n        return null;\n      } else {\n        let strValue = String(value);\n        if (name === 'color' || name === 'backgroundColor') {\n          strValue = rgbaToHexString(strValue);\n        }\n        if (name === 'fontWeight' && value === 700) {\n          strValue = 'bold';\n        }\n        if (name === 'fontFamily') {\n          strValue = strValue.replace(/[\\'\\\"]/g, '').replace(/,\\s+/g, ',');\n        }\n        return strValue;\n      }\n    };\n    const getStyle = (dom, node, name) => {\n      const style = dom.getStyle(node, name);\n      return normalizeStyleValue(style, name);\n    };\n    const getTextDecoration = (dom, node) => {\n      let decoration;\n      dom.getParent(node, n => {\n        if (isElement$6(n)) {\n          decoration = dom.getStyle(n, 'text-decoration');\n          return !!decoration && decoration !== 'none';\n        } else {\n          return false;\n        }\n      });\n      return decoration;\n    };\n    const getParents$2 = (dom, node, selector) => {\n      return dom.getParents(node, selector, dom.getRoot());\n    };\n    const isFormatPredicate = (editor, formatName, predicate) => {\n      const formats = editor.formatter.get(formatName);\n      return isNonNullable(formats) && exists(formats, predicate);\n    };\n    const isVariableFormatName = (editor, formatName) => {\n      const hasVariableValues = format => {\n        const isVariableValue = val => isFunction(val) || val.length > 1 && val.charAt(0) === '%';\n        return exists([\n          'styles',\n          'attributes'\n        ], key => get$a(format, key).exists(field => {\n          const fieldValues = isArray$1(field) ? field : values(field);\n          return exists(fieldValues, isVariableValue);\n        }));\n      };\n      return isFormatPredicate(editor, formatName, hasVariableValues);\n    };\n    const areSimilarFormats = (editor, formatName, otherFormatName) => {\n      const validKeys = [\n        'inline',\n        'block',\n        'selector',\n        'attributes',\n        'styles',\n        'classes'\n      ];\n      const filterObj = format => filter$4(format, (_, key) => exists(validKeys, validKey => validKey === key));\n      return isFormatPredicate(editor, formatName, fmt1 => {\n        const filteredFmt1 = filterObj(fmt1);\n        return isFormatPredicate(editor, otherFormatName, fmt2 => {\n          const filteredFmt2 = filterObj(fmt2);\n          return equal$1(filteredFmt1, filteredFmt2);\n        });\n      });\n    };\n    const isBlockFormat = format => hasNonNullableKey(format, 'block');\n    const isWrappingBlockFormat = format => isBlockFormat(format) && format.wrapper === true;\n    const isNonWrappingBlockFormat = format => isBlockFormat(format) && format.wrapper !== true;\n    const isSelectorFormat = format => hasNonNullableKey(format, 'selector');\n    const isInlineFormat = format => hasNonNullableKey(format, 'inline');\n    const isMixedFormat = format => isSelectorFormat(format) && isInlineFormat(format) && is$2(get$a(format, 'mixed'), true);\n    const shouldExpandToSelector = format => isSelectorFormat(format) && format.expand !== false && !isInlineFormat(format);\n    const getEmptyCaretContainers = node => {\n      const nodes = [];\n      let tempNode = node;\n      while (tempNode) {\n        if (isText$a(tempNode) && tempNode.data !== ZWSP$1 || tempNode.childNodes.length > 1) {\n          return [];\n        }\n        if (isElement$6(tempNode)) {\n          nodes.push(tempNode);\n        }\n        tempNode = tempNode.firstChild;\n      }\n      return nodes;\n    };\n    const isCaretContainerEmpty = node => {\n      return getEmptyCaretContainers(node).length > 0;\n    };\n    const isEmptyCaretFormatElement = element => {\n      return isCaretNode(element.dom) && isCaretContainerEmpty(element.dom);\n    };\n\n    const isBookmarkNode = isBookmarkNode$1;\n    const getParents$1 = getParents$2;\n    const isWhiteSpaceNode = isWhiteSpaceNode$1;\n    const isTextBlock = isTextBlock$1;\n    const isBogusBr = node => {\n      return isBr$6(node) && node.getAttribute('data-mce-bogus') && !node.nextSibling;\n    };\n    const findParentContentEditable = (dom, node) => {\n      let parent = node;\n      while (parent) {\n        if (isElement$6(parent) && dom.getContentEditable(parent)) {\n          return dom.getContentEditable(parent) === 'false' ? parent : node;\n        }\n        parent = parent.parentNode;\n      }\n      return node;\n    };\n    const walkText = (start, node, offset, predicate) => {\n      const str = node.data;\n      if (start) {\n        for (let i = offset; i > 0; i--) {\n          if (predicate(str.charAt(i - 1))) {\n            return i;\n          }\n        }\n      } else {\n        for (let i = offset; i < str.length; i++) {\n          if (predicate(str.charAt(i))) {\n            return i;\n          }\n        }\n      }\n      return -1;\n    };\n    const findSpace = (start, node, offset) => walkText(start, node, offset, c => isNbsp(c) || isWhiteSpace(c));\n    const findContent = (start, node, offset) => walkText(start, node, offset, isContent);\n    const findWordEndPoint = (dom, body, container, offset, start, includeTrailingSpaces) => {\n      let lastTextNode;\n      const rootNode = dom.getParent(container, dom.isBlock) || body;\n      const walk = (container, offset, pred) => {\n        const textSeeker = TextSeeker(dom);\n        const walker = start ? textSeeker.backwards : textSeeker.forwards;\n        return Optional.from(walker(container, offset, (text, textOffset) => {\n          if (isBookmarkNode(text.parentNode)) {\n            return -1;\n          } else {\n            lastTextNode = text;\n            return pred(start, text, textOffset);\n          }\n        }, rootNode));\n      };\n      const spaceResult = walk(container, offset, findSpace);\n      return spaceResult.bind(result => includeTrailingSpaces ? walk(result.container, result.offset + (start ? -1 : 0), findContent) : Optional.some(result)).orThunk(() => lastTextNode ? Optional.some({\n        container: lastTextNode,\n        offset: start ? 0 : lastTextNode.length\n      }) : Optional.none());\n    };\n    const findSelectorEndPoint = (dom, formatList, rng, container, siblingName) => {\n      const sibling = container[siblingName];\n      if (isText$a(container) && isEmpty$3(container.data) && sibling) {\n        container = sibling;\n      }\n      const parents = getParents$1(dom, container);\n      for (let i = 0; i < parents.length; i++) {\n        for (let y = 0; y < formatList.length; y++) {\n          const curFormat = formatList[y];\n          if (isNonNullable(curFormat.collapsed) && curFormat.collapsed !== rng.collapsed) {\n            continue;\n          }\n          if (isSelectorFormat(curFormat) && dom.is(parents[i], curFormat.selector)) {\n            return parents[i];\n          }\n        }\n      }\n      return container;\n    };\n    const findBlockEndPoint = (dom, formatList, container, siblingName) => {\n      var _a;\n      let node = container;\n      const root = dom.getRoot();\n      const format = formatList[0];\n      if (isBlockFormat(format)) {\n        node = format.wrapper ? null : dom.getParent(container, format.block, root);\n      }\n      if (!node) {\n        const scopeRoot = (_a = dom.getParent(container, 'LI,TD,TH,SUMMARY')) !== null && _a !== void 0 ? _a : root;\n        node = dom.getParent(isText$a(container) ? container.parentNode : container, node => node !== root && isTextBlock(dom.schema, node), scopeRoot);\n      }\n      if (node && isBlockFormat(format) && format.wrapper) {\n        node = getParents$1(dom, node, 'ul,ol').reverse()[0] || node;\n      }\n      if (!node) {\n        node = container;\n        while (node && node[siblingName] && !dom.isBlock(node[siblingName])) {\n          node = node[siblingName];\n          if (isEq$5(node, 'br')) {\n            break;\n          }\n        }\n      }\n      return node || container;\n    };\n    const isAtBlockBoundary$1 = (dom, root, container, siblingName) => {\n      const parent = container.parentNode;\n      if (isNonNullable(container[siblingName])) {\n        return false;\n      } else if (parent === root || isNullable(parent) || dom.isBlock(parent)) {\n        return true;\n      } else {\n        return isAtBlockBoundary$1(dom, root, parent, siblingName);\n      }\n    };\n    const findParentContainer = (dom, formatList, container, offset, start) => {\n      let parent = container;\n      const siblingName = start ? 'previousSibling' : 'nextSibling';\n      const root = dom.getRoot();\n      if (isText$a(container) && !isWhiteSpaceNode(container)) {\n        if (start ? offset > 0 : offset < container.data.length) {\n          return container;\n        }\n      }\n      while (parent) {\n        if (!formatList[0].block_expand && dom.isBlock(parent)) {\n          return parent;\n        }\n        for (let sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {\n          const allowSpaces = isText$a(sibling) && !isAtBlockBoundary$1(dom, root, sibling, siblingName);\n          if (!isBookmarkNode(sibling) && !isBogusBr(sibling) && !isWhiteSpaceNode(sibling, allowSpaces)) {\n            return parent;\n          }\n        }\n        if (parent === root || parent.parentNode === root) {\n          container = parent;\n          break;\n        }\n        parent = parent.parentNode;\n      }\n      return container;\n    };\n    const isSelfOrParentBookmark = container => isBookmarkNode(container.parentNode) || isBookmarkNode(container);\n    const expandRng = (dom, rng, formatList, includeTrailingSpace = false) => {\n      let {startContainer, startOffset, endContainer, endOffset} = rng;\n      const format = formatList[0];\n      if (isElement$6(startContainer) && startContainer.hasChildNodes()) {\n        startContainer = getNode$1(startContainer, startOffset);\n        if (isText$a(startContainer)) {\n          startOffset = 0;\n        }\n      }\n      if (isElement$6(endContainer) && endContainer.hasChildNodes()) {\n        endContainer = getNode$1(endContainer, rng.collapsed ? endOffset : endOffset - 1);\n        if (isText$a(endContainer)) {\n          endOffset = endContainer.data.length;\n        }\n      }\n      startContainer = findParentContentEditable(dom, startContainer);\n      endContainer = findParentContentEditable(dom, endContainer);\n      if (isSelfOrParentBookmark(startContainer)) {\n        startContainer = isBookmarkNode(startContainer) ? startContainer : startContainer.parentNode;\n        if (rng.collapsed) {\n          startContainer = startContainer.previousSibling || startContainer;\n        } else {\n          startContainer = startContainer.nextSibling || startContainer;\n        }\n        if (isText$a(startContainer)) {\n          startOffset = rng.collapsed ? startContainer.length : 0;\n        }\n      }\n      if (isSelfOrParentBookmark(endContainer)) {\n        endContainer = isBookmarkNode(endContainer) ? endContainer : endContainer.parentNode;\n        if (rng.collapsed) {\n          endContainer = endContainer.nextSibling || endContainer;\n        } else {\n          endContainer = endContainer.previousSibling || endContainer;\n        }\n        if (isText$a(endContainer)) {\n          endOffset = rng.collapsed ? 0 : endContainer.length;\n        }\n      }\n      if (rng.collapsed) {\n        const startPoint = findWordEndPoint(dom, dom.getRoot(), startContainer, startOffset, true, includeTrailingSpace);\n        startPoint.each(({container, offset}) => {\n          startContainer = container;\n          startOffset = offset;\n        });\n        const endPoint = findWordEndPoint(dom, dom.getRoot(), endContainer, endOffset, false, includeTrailingSpace);\n        endPoint.each(({container, offset}) => {\n          endContainer = container;\n          endOffset = offset;\n        });\n      }\n      if (isInlineFormat(format) || format.block_expand) {\n        if (!isInlineFormat(format) || (!isText$a(startContainer) || startOffset === 0)) {\n          startContainer = findParentContainer(dom, formatList, startContainer, startOffset, true);\n        }\n        if (!isInlineFormat(format) || (!isText$a(endContainer) || endOffset === endContainer.data.length)) {\n          endContainer = findParentContainer(dom, formatList, endContainer, endOffset, false);\n        }\n      }\n      if (shouldExpandToSelector(format)) {\n        startContainer = findSelectorEndPoint(dom, formatList, rng, startContainer, 'previousSibling');\n        endContainer = findSelectorEndPoint(dom, formatList, rng, endContainer, 'nextSibling');\n      }\n      if (isBlockFormat(format) || isSelectorFormat(format)) {\n        startContainer = findBlockEndPoint(dom, formatList, startContainer, 'previousSibling');\n        endContainer = findBlockEndPoint(dom, formatList, endContainer, 'nextSibling');\n        if (isBlockFormat(format)) {\n          if (!dom.isBlock(startContainer)) {\n            startContainer = findParentContainer(dom, formatList, startContainer, startOffset, true);\n          }\n          if (!dom.isBlock(endContainer)) {\n            endContainer = findParentContainer(dom, formatList, endContainer, endOffset, false);\n          }\n        }\n      }\n      if (isElement$6(startContainer) && startContainer.parentNode) {\n        startOffset = dom.nodeIndex(startContainer);\n        startContainer = startContainer.parentNode;\n      }\n      if (isElement$6(endContainer) && endContainer.parentNode) {\n        endOffset = dom.nodeIndex(endContainer) + 1;\n        endContainer = endContainer.parentNode;\n      }\n      return {\n        startContainer,\n        startOffset,\n        endContainer,\n        endOffset\n      };\n    };\n\n    const walk$3 = (dom, rng, callback) => {\n      var _a;\n      const startOffset = rng.startOffset;\n      const startContainer = getNode$1(rng.startContainer, startOffset);\n      const endOffset = rng.endOffset;\n      const endContainer = getNode$1(rng.endContainer, endOffset - 1);\n      const exclude = nodes => {\n        const firstNode = nodes[0];\n        if (isText$a(firstNode) && firstNode === startContainer && startOffset >= firstNode.data.length) {\n          nodes.splice(0, 1);\n        }\n        const lastNode = nodes[nodes.length - 1];\n        if (endOffset === 0 && nodes.length > 0 && lastNode === endContainer && isText$a(lastNode)) {\n          nodes.splice(nodes.length - 1, 1);\n        }\n        return nodes;\n      };\n      const collectSiblings = (node, name, endNode) => {\n        const siblings = [];\n        for (; node && node !== endNode; node = node[name]) {\n          siblings.push(node);\n        }\n        return siblings;\n      };\n      const findEndPoint = (node, root) => dom.getParent(node, node => node.parentNode === root, root);\n      const walkBoundary = (startNode, endNode, next) => {\n        const siblingName = next ? 'nextSibling' : 'previousSibling';\n        for (let node = startNode, parent = node.parentNode; node && node !== endNode; node = parent) {\n          parent = node.parentNode;\n          const siblings = collectSiblings(node === startNode ? node : node[siblingName], siblingName);\n          if (siblings.length) {\n            if (!next) {\n              siblings.reverse();\n            }\n            callback(exclude(siblings));\n          }\n        }\n      };\n      if (startContainer === endContainer) {\n        return callback(exclude([startContainer]));\n      }\n      const ancestor = (_a = dom.findCommonAncestor(startContainer, endContainer)) !== null && _a !== void 0 ? _a : dom.getRoot();\n      if (dom.isChildOf(startContainer, endContainer)) {\n        return walkBoundary(startContainer, ancestor, true);\n      }\n      if (dom.isChildOf(endContainer, startContainer)) {\n        return walkBoundary(endContainer, ancestor);\n      }\n      const startPoint = findEndPoint(startContainer, ancestor) || startContainer;\n      const endPoint = findEndPoint(endContainer, ancestor) || endContainer;\n      walkBoundary(startContainer, startPoint, true);\n      const siblings = collectSiblings(startPoint === startContainer ? startPoint : startPoint.nextSibling, 'nextSibling', endPoint === endContainer ? endPoint.nextSibling : endPoint);\n      if (siblings.length) {\n        callback(exclude(siblings));\n      }\n      walkBoundary(endContainer, endPoint);\n    };\n\n    const validBlocks = [\n      'pre[class*=language-][contenteditable=\"false\"]',\n      'figure.image',\n      'div[data-ephox-embed-iri]',\n      'div.tiny-pageembed',\n      'div.mce-toc',\n      'div[data-mce-toc]'\n    ];\n    const isZeroWidth = elem => isText$b(elem) && get$3(elem) === ZWSP$1;\n    const context = (editor, elem, wrapName, nodeName) => parent(elem).fold(() => 'skipping', parent => {\n      if (nodeName === 'br' || isZeroWidth(elem)) {\n        return 'valid';\n      } else if (isAnnotation(elem)) {\n        return 'existing';\n      } else if (isCaretNode(elem.dom)) {\n        return 'caret';\n      } else if (exists(validBlocks, selector => is$1(elem, selector))) {\n        return 'valid-block';\n      } else if (!isValid(editor, wrapName, nodeName) || !isValid(editor, name(parent), wrapName)) {\n        return 'invalid-child';\n      } else {\n        return 'valid';\n      }\n    });\n\n    const applyWordGrab = (editor, rng) => {\n      const r = expandRng(editor.dom, rng, [{ inline: 'span' }]);\n      rng.setStart(r.startContainer, r.startOffset);\n      rng.setEnd(r.endContainer, r.endOffset);\n      editor.selection.setRng(rng);\n    };\n    const applyAnnotation = (elem, masterUId, data, annotationName, decorate, directAnnotation) => {\n      const {uid = masterUId, ...otherData} = data;\n      add$2(elem, annotation());\n      set$3(elem, `${ dataAnnotationId() }`, uid);\n      set$3(elem, `${ dataAnnotation() }`, annotationName);\n      const {attributes = {}, classes = []} = decorate(uid, otherData);\n      setAll$1(elem, attributes);\n      add(elem, classes);\n      if (directAnnotation) {\n        if (classes.length > 0) {\n          set$3(elem, `${ dataAnnotationClasses() }`, classes.join(','));\n        }\n        const attributeNames = keys(attributes);\n        if (attributeNames.length > 0) {\n          set$3(elem, `${ dataAnnotationAttributes() }`, attributeNames.join(','));\n        }\n      }\n    };\n    const removeDirectAnnotation = elem => {\n      remove$7(elem, annotation());\n      remove$a(elem, `${ dataAnnotationId() }`);\n      remove$a(elem, `${ dataAnnotation() }`);\n      remove$a(elem, `${ dataAnnotationActive() }`);\n      const customAttrNames = getOpt(elem, `${ dataAnnotationAttributes() }`).map(names => names.split(',')).getOr([]);\n      const customClasses = getOpt(elem, `${ dataAnnotationClasses() }`).map(names => names.split(',')).getOr([]);\n      each$e(customAttrNames, name => remove$a(elem, name));\n      remove$4(elem, customClasses);\n      remove$a(elem, `${ dataAnnotationClasses() }`);\n      remove$a(elem, `${ dataAnnotationAttributes() }`);\n    };\n    const makeAnnotation = (eDoc, uid, data, annotationName, decorate) => {\n      const master = SugarElement.fromTag('span', eDoc);\n      applyAnnotation(master, uid, data, annotationName, decorate, false);\n      return master;\n    };\n    const annotate = (editor, rng, uid, annotationName, decorate, data) => {\n      const newWrappers = [];\n      const master = makeAnnotation(editor.getDoc(), uid, data, annotationName, decorate);\n      const wrapper = value$2();\n      const finishWrapper = () => {\n        wrapper.clear();\n      };\n      const getOrOpenWrapper = () => wrapper.get().getOrThunk(() => {\n        const nu = shallow$1(master);\n        newWrappers.push(nu);\n        wrapper.set(nu);\n        return nu;\n      });\n      const processElements = elems => {\n        each$e(elems, processElement);\n      };\n      const processElement = elem => {\n        const ctx = context(editor, elem, 'span', name(elem));\n        switch (ctx) {\n        case 'invalid-child': {\n            finishWrapper();\n            const children = children$1(elem);\n            processElements(children);\n            finishWrapper();\n            break;\n          }\n        case 'valid-block': {\n            finishWrapper();\n            applyAnnotation(elem, uid, data, annotationName, decorate, true);\n            break;\n          }\n        case 'valid': {\n            const w = getOrOpenWrapper();\n            wrap$2(elem, w);\n            break;\n          }\n        }\n      };\n      const processNodes = nodes => {\n        const elems = map$3(nodes, SugarElement.fromDom);\n        processElements(elems);\n      };\n      walk$3(editor.dom, rng, nodes => {\n        finishWrapper();\n        processNodes(nodes);\n      });\n      return newWrappers;\n    };\n    const annotateWithBookmark = (editor, name, settings, data) => {\n      editor.undoManager.transact(() => {\n        const selection = editor.selection;\n        const initialRng = selection.getRng();\n        const hasFakeSelection = getCellsFromEditor(editor).length > 0;\n        const masterUid = generate$1('mce-annotation');\n        if (initialRng.collapsed && !hasFakeSelection) {\n          applyWordGrab(editor, initialRng);\n        }\n        if (selection.getRng().collapsed && !hasFakeSelection) {\n          const wrapper = makeAnnotation(editor.getDoc(), masterUid, data, name, settings.decorate);\n          set$1(wrapper, nbsp);\n          selection.getRng().insertNode(wrapper.dom);\n          selection.select(wrapper.dom);\n        } else {\n          preserve(selection, false, () => {\n            runOnRanges(editor, selectionRng => {\n              annotate(editor, selectionRng, masterUid, name, settings.decorate, data);\n            });\n          });\n        }\n      });\n    };\n\n    const Annotator = editor => {\n      const registry = create$c();\n      setup$x(editor, registry);\n      const changes = setup$y(editor, registry);\n      const isSpan = isTag('span');\n      const removeAnnotations = elements => {\n        each$e(elements, element => {\n          if (isSpan(element)) {\n            unwrap(element);\n          } else {\n            removeDirectAnnotation(element);\n          }\n        });\n      };\n      return {\n        register: (name, settings) => {\n          registry.register(name, settings);\n        },\n        annotate: (name, data) => {\n          registry.lookup(name).each(settings => {\n            annotateWithBookmark(editor, name, settings, data);\n          });\n        },\n        annotationChanged: (name, callback) => {\n          changes.addListener(name, callback);\n        },\n        remove: name => {\n          identify(editor, Optional.some(name)).each(({elements}) => {\n            const bookmark = editor.selection.getBookmark();\n            removeAnnotations(elements);\n            editor.selection.moveToBookmark(bookmark);\n          });\n        },\n        removeAll: name => {\n          const bookmark = editor.selection.getBookmark();\n          each$d(findAll(editor, name), (elements, _) => {\n            removeAnnotations(elements);\n          });\n          editor.selection.moveToBookmark(bookmark);\n        },\n        getAll: name => {\n          const directory = findAll(editor, name);\n          return map$2(directory, elems => map$3(elems, elem => elem.dom));\n        }\n      };\n    };\n\n    const BookmarkManager = selection => {\n      return {\n        getBookmark: curry(getBookmark$1, selection),\n        moveToBookmark: curry(moveToBookmark, selection)\n      };\n    };\n    BookmarkManager.isBookmarkNode = isBookmarkNode$1;\n\n    const isXYWithinRange = (clientX, clientY, range) => {\n      if (range.collapsed) {\n        return false;\n      } else {\n        return exists(range.getClientRects(), rect => containsXY(rect, clientX, clientY));\n      }\n    };\n\n    const firePreProcess = (editor, args) => editor.dispatch('PreProcess', args);\n    const firePostProcess = (editor, args) => editor.dispatch('PostProcess', args);\n    const fireRemove = editor => {\n      editor.dispatch('remove');\n    };\n    const fireDetach = editor => {\n      editor.dispatch('detach');\n    };\n    const fireSwitchMode = (editor, mode) => {\n      editor.dispatch('SwitchMode', { mode });\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 firePreInit = editor => {\n      editor.dispatch('PreInit');\n    };\n    const firePostRender = editor => {\n      editor.dispatch('PostRender');\n    };\n    const fireInit = editor => {\n      editor.dispatch('Init');\n    };\n    const firePlaceholderToggle = (editor, state) => {\n      editor.dispatch('PlaceholderToggle', { state });\n    };\n    const fireError = (editor, errorType, error) => {\n      editor.dispatch(errorType, error);\n    };\n    const fireFormatApply = (editor, format, node, vars) => {\n      editor.dispatch('FormatApply', {\n        format,\n        node,\n        vars\n      });\n    };\n    const fireFormatRemove = (editor, format, node, vars) => {\n      editor.dispatch('FormatRemove', {\n        format,\n        node,\n        vars\n      });\n    };\n    const fireBeforeSetContent = (editor, args) => editor.dispatch('BeforeSetContent', args);\n    const fireSetContent = (editor, args) => editor.dispatch('SetContent', args);\n    const fireBeforeGetContent = (editor, args) => editor.dispatch('BeforeGetContent', args);\n    const fireGetContent = (editor, args) => editor.dispatch('GetContent', args);\n    const fireAutocompleterStart = (editor, args) => {\n      editor.dispatch('AutocompleterStart', args);\n    };\n    const fireAutocompleterUpdate = (editor, args) => {\n      editor.dispatch('AutocompleterUpdate', args);\n    };\n    const fireAutocompleterEnd = editor => {\n      editor.dispatch('AutocompleterEnd');\n    };\n    const firePastePreProcess = (editor, html, internal) => editor.dispatch('PastePreProcess', {\n      content: html,\n      internal\n    });\n    const firePastePostProcess = (editor, node, internal) => editor.dispatch('PastePostProcess', {\n      node,\n      internal\n    });\n    const firePastePlainTextToggle = (editor, state) => editor.dispatch('PastePlainTextToggle', { state });\n    const fireEditableRootStateChange = (editor, state) => editor.dispatch('EditableRootStateChange', { state });\n\n    const VK = {\n      BACKSPACE: 8,\n      DELETE: 46,\n      DOWN: 40,\n      ENTER: 13,\n      ESC: 27,\n      LEFT: 37,\n      RIGHT: 39,\n      SPACEBAR: 32,\n      TAB: 9,\n      UP: 38,\n      PAGE_UP: 33,\n      PAGE_DOWN: 34,\n      END: 35,\n      HOME: 36,\n      modifierPressed: e => {\n        return e.shiftKey || e.ctrlKey || e.altKey || VK.metaKeyPressed(e);\n      },\n      metaKeyPressed: e => {\n        return Env.os.isMacOS() || Env.os.isiOS() ? e.metaKey : e.ctrlKey && !e.altKey;\n      }\n    };\n\n    const elementSelectionAttr = 'data-mce-selected';\n    const controlElmSelector = 'table,img,figure.image,hr,video,span.mce-preview-object,details';\n    const abs = Math.abs;\n    const round$1 = Math.round;\n    const resizeHandles = {\n      nw: [\n        0,\n        0,\n        -1,\n        -1\n      ],\n      ne: [\n        1,\n        0,\n        1,\n        -1\n      ],\n      se: [\n        1,\n        1,\n        1,\n        1\n      ],\n      sw: [\n        0,\n        1,\n        -1,\n        1\n      ]\n    };\n    const isTouchEvent = evt => evt.type === 'longpress' || evt.type.indexOf('touch') === 0;\n    const ControlSelection = (selection, editor) => {\n      const dom = editor.dom;\n      const editableDoc = editor.getDoc();\n      const rootDocument = document;\n      const rootElement = editor.getBody();\n      let selectedElm, selectedElmGhost, resizeHelper, selectedHandle, resizeBackdrop;\n      let startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted;\n      let width;\n      let height;\n      let startScrollWidth;\n      let startScrollHeight;\n      const isImage = elm => isNonNullable(elm) && (isImg(elm) || dom.is(elm, 'figure.image'));\n      const isMedia = elm => isMedia$2(elm) || dom.hasClass(elm, 'mce-preview-object');\n      const isEventOnImageOutsideRange = (evt, range) => {\n        if (isTouchEvent(evt)) {\n          const touch = evt.touches[0];\n          return isImage(evt.target) && !isXYWithinRange(touch.clientX, touch.clientY, range);\n        } else {\n          return isImage(evt.target) && !isXYWithinRange(evt.clientX, evt.clientY, range);\n        }\n      };\n      const contextMenuSelectImage = evt => {\n        const target = evt.target;\n        if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) {\n          editor.selection.select(target);\n        }\n      };\n      const getResizeTargets = elm => {\n        if (dom.hasClass(elm, 'mce-preview-object') && isNonNullable(elm.firstElementChild)) {\n          return [\n            elm,\n            elm.firstElementChild\n          ];\n        } else if (dom.is(elm, 'figure.image')) {\n          return [elm.querySelector('img')];\n        } else {\n          return [elm];\n        }\n      };\n      const isResizable = elm => {\n        const selector = getObjectResizing(editor);\n        if (!selector) {\n          return false;\n        }\n        if (elm.getAttribute('data-mce-resize') === 'false') {\n          return false;\n        }\n        if (elm === editor.getBody()) {\n          return false;\n        }\n        if (dom.hasClass(elm, 'mce-preview-object') && isNonNullable(elm.firstElementChild)) {\n          return is$1(SugarElement.fromDom(elm.firstElementChild), selector);\n        } else {\n          return is$1(SugarElement.fromDom(elm), selector);\n        }\n      };\n      const createGhostElement = elm => {\n        if (isMedia(elm)) {\n          return dom.create('img', { src: Env.transparentSrc });\n        } else {\n          return elm.cloneNode(true);\n        }\n      };\n      const setSizeProp = (element, name, value) => {\n        if (isNonNullable(value)) {\n          const targets = getResizeTargets(element);\n          each$e(targets, target => {\n            if (target.style[name] || !editor.schema.isValid(target.nodeName.toLowerCase(), name)) {\n              dom.setStyle(target, name, value);\n            } else {\n              dom.setAttrib(target, name, '' + value);\n            }\n          });\n        }\n      };\n      const setGhostElmSize = (ghostElm, width, height) => {\n        setSizeProp(ghostElm, 'width', width);\n        setSizeProp(ghostElm, 'height', height);\n      };\n      const resizeGhostElement = e => {\n        let deltaX, deltaY, proportional;\n        let resizeHelperX, resizeHelperY;\n        deltaX = e.screenX - startX;\n        deltaY = e.screenY - startY;\n        width = deltaX * selectedHandle[2] + startW;\n        height = deltaY * selectedHandle[3] + startH;\n        width = width < 5 ? 5 : width;\n        height = height < 5 ? 5 : height;\n        if ((isImage(selectedElm) || isMedia(selectedElm)) && getResizeImgProportional(editor) !== false) {\n          proportional = !VK.modifierPressed(e);\n        } else {\n          proportional = VK.modifierPressed(e);\n        }\n        if (proportional) {\n          if (abs(deltaX) > abs(deltaY)) {\n            height = round$1(width * ratio);\n            width = round$1(height / ratio);\n          } else {\n            width = round$1(height / ratio);\n            height = round$1(width * ratio);\n          }\n        }\n        setGhostElmSize(selectedElmGhost, width, height);\n        resizeHelperX = selectedHandle.startPos.x + deltaX;\n        resizeHelperY = selectedHandle.startPos.y + deltaY;\n        resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0;\n        resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0;\n        dom.setStyles(resizeHelper, {\n          left: resizeHelperX,\n          top: resizeHelperY,\n          display: 'block'\n        });\n        resizeHelper.innerHTML = width + ' &times; ' + height;\n        if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {\n          dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));\n        }\n        if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {\n          dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));\n        }\n        deltaX = rootElement.scrollWidth - startScrollWidth;\n        deltaY = rootElement.scrollHeight - startScrollHeight;\n        if (deltaX + deltaY !== 0) {\n          dom.setStyles(resizeHelper, {\n            left: resizeHelperX - deltaX,\n            top: resizeHelperY - deltaY\n          });\n        }\n        if (!resizeStarted) {\n          fireObjectResizeStart(editor, selectedElm, startW, startH, 'corner-' + selectedHandle.name);\n          resizeStarted = true;\n        }\n      };\n      const endGhostResize = () => {\n        const wasResizeStarted = resizeStarted;\n        resizeStarted = false;\n        if (wasResizeStarted) {\n          setSizeProp(selectedElm, 'width', width);\n          setSizeProp(selectedElm, 'height', height);\n        }\n        dom.unbind(editableDoc, 'mousemove', resizeGhostElement);\n        dom.unbind(editableDoc, 'mouseup', endGhostResize);\n        if (rootDocument !== editableDoc) {\n          dom.unbind(rootDocument, 'mousemove', resizeGhostElement);\n          dom.unbind(rootDocument, 'mouseup', endGhostResize);\n        }\n        dom.remove(selectedElmGhost);\n        dom.remove(resizeHelper);\n        dom.remove(resizeBackdrop);\n        showResizeRect(selectedElm);\n        if (wasResizeStarted) {\n          fireObjectResized(editor, selectedElm, width, height, 'corner-' + selectedHandle.name);\n          dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style'));\n        }\n        editor.nodeChanged();\n      };\n      const showResizeRect = targetElm => {\n        unbindResizeHandleEvents();\n        const position = dom.getPos(targetElm, rootElement);\n        const selectedElmX = position.x;\n        const selectedElmY = position.y;\n        const rect = targetElm.getBoundingClientRect();\n        const targetWidth = rect.width || rect.right - rect.left;\n        const targetHeight = rect.height || rect.bottom - rect.top;\n        if (selectedElm !== targetElm) {\n          hideResizeRect();\n          selectedElm = targetElm;\n          width = height = 0;\n        }\n        const e = editor.dispatch('ObjectSelected', { target: targetElm });\n        if (isResizable(targetElm) && !e.isDefaultPrevented()) {\n          each$d(resizeHandles, (handle, name) => {\n            const startDrag = e => {\n              const target = getResizeTargets(selectedElm)[0];\n              startX = e.screenX;\n              startY = e.screenY;\n              startW = target.clientWidth;\n              startH = target.clientHeight;\n              ratio = startH / startW;\n              selectedHandle = handle;\n              selectedHandle.name = name;\n              selectedHandle.startPos = {\n                x: targetWidth * handle[0] + selectedElmX,\n                y: targetHeight * handle[1] + selectedElmY\n              };\n              startScrollWidth = rootElement.scrollWidth;\n              startScrollHeight = rootElement.scrollHeight;\n              resizeBackdrop = dom.add(rootElement, 'div', {\n                'class': 'mce-resize-backdrop',\n                'data-mce-bogus': 'all'\n              });\n              dom.setStyles(resizeBackdrop, {\n                position: 'fixed',\n                left: '0',\n                top: '0',\n                width: '100%',\n                height: '100%'\n              });\n              selectedElmGhost = createGhostElement(selectedElm);\n              dom.addClass(selectedElmGhost, 'mce-clonedresizable');\n              dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all');\n              selectedElmGhost.contentEditable = 'false';\n              dom.setStyles(selectedElmGhost, {\n                left: selectedElmX,\n                top: selectedElmY,\n                margin: 0\n              });\n              setGhostElmSize(selectedElmGhost, targetWidth, targetHeight);\n              selectedElmGhost.removeAttribute(elementSelectionAttr);\n              rootElement.appendChild(selectedElmGhost);\n              dom.bind(editableDoc, 'mousemove', resizeGhostElement);\n              dom.bind(editableDoc, 'mouseup', endGhostResize);\n              if (rootDocument !== editableDoc) {\n                dom.bind(rootDocument, 'mousemove', resizeGhostElement);\n                dom.bind(rootDocument, 'mouseup', endGhostResize);\n              }\n              resizeHelper = dom.add(rootElement, 'div', {\n                'class': 'mce-resize-helper',\n                'data-mce-bogus': 'all'\n              }, startW + ' &times; ' + startH);\n            };\n            let handleElm = dom.get('mceResizeHandle' + name);\n            if (handleElm) {\n              dom.remove(handleElm);\n            }\n            handleElm = dom.add(rootElement, 'div', {\n              'id': 'mceResizeHandle' + name,\n              'data-mce-bogus': 'all',\n              'class': 'mce-resizehandle',\n              'unselectable': true,\n              'style': 'cursor:' + name + '-resize; margin:0; padding:0'\n            });\n            dom.bind(handleElm, 'mousedown', e => {\n              e.stopImmediatePropagation();\n              e.preventDefault();\n              startDrag(e);\n            });\n            handle.elm = handleElm;\n            dom.setStyles(handleElm, {\n              left: targetWidth * handle[0] + selectedElmX - handleElm.offsetWidth / 2,\n              top: targetHeight * handle[1] + selectedElmY - handleElm.offsetHeight / 2\n            });\n          });\n        } else {\n          hideResizeRect(false);\n        }\n      };\n      const throttledShowResizeRect = first$1(showResizeRect, 0);\n      const hideResizeRect = (removeSelected = true) => {\n        throttledShowResizeRect.cancel();\n        unbindResizeHandleEvents();\n        if (selectedElm && removeSelected) {\n          selectedElm.removeAttribute(elementSelectionAttr);\n        }\n        each$d(resizeHandles, (value, name) => {\n          const handleElm = dom.get('mceResizeHandle' + name);\n          if (handleElm) {\n            dom.unbind(handleElm);\n            dom.remove(handleElm);\n          }\n        });\n      };\n      const isChildOrEqual = (node, parent) => dom.isChildOf(node, parent);\n      const updateResizeRect = e => {\n        if (resizeStarted || editor.removed || editor.composing) {\n          return;\n        }\n        const targetElm = e.type === 'mousedown' ? e.target : selection.getNode();\n        const controlElm = closest$3(SugarElement.fromDom(targetElm), controlElmSelector).map(e => e.dom).filter(e => dom.isEditable(e.parentElement) || e.nodeName === 'IMG' && dom.isEditable(e)).getOrUndefined();\n        const selectedValue = isNonNullable(controlElm) ? dom.getAttrib(controlElm, elementSelectionAttr, '1') : '1';\n        each$e(dom.select(`img[${ elementSelectionAttr }],hr[${ elementSelectionAttr }]`), img => {\n          img.removeAttribute(elementSelectionAttr);\n        });\n        if (isNonNullable(controlElm) && isChildOrEqual(controlElm, rootElement) && editor.hasFocus()) {\n          disableGeckoResize();\n          const startElm = selection.getStart(true);\n          if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) {\n            dom.setAttrib(controlElm, elementSelectionAttr, selectedValue);\n            throttledShowResizeRect.throttle(controlElm);\n            return;\n          }\n        }\n        hideResizeRect();\n      };\n      const unbindResizeHandleEvents = () => {\n        each$d(resizeHandles, handle => {\n          if (handle.elm) {\n            dom.unbind(handle.elm);\n            delete handle.elm;\n          }\n        });\n      };\n      const disableGeckoResize = () => {\n        try {\n          editor.getDoc().execCommand('enableObjectResizing', false, 'false');\n        } catch (ex) {\n        }\n      };\n      editor.on('init', () => {\n        disableGeckoResize();\n        editor.on('NodeChange ResizeEditor ResizeWindow ResizeContent drop', updateResizeRect);\n        editor.on('keyup compositionend', e => {\n          if (selectedElm && selectedElm.nodeName === 'TABLE') {\n            updateResizeRect(e);\n          }\n        });\n        editor.on('hide blur', hideResizeRect);\n        editor.on('contextmenu longpress', contextMenuSelectImage, true);\n      });\n      editor.on('remove', unbindResizeHandleEvents);\n      const destroy = () => {\n        throttledShowResizeRect.cancel();\n        selectedElm = selectedElmGhost = resizeBackdrop = null;\n      };\n      return {\n        isResizable,\n        showResizeRect,\n        hideResizeRect,\n        updateResizeRect,\n        destroy\n      };\n    };\n\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\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    adt$3.ltr;\n    adt$3.rtl;\n\n    const create$a = (start, soffset, finish, foffset) => ({\n      start,\n      soffset,\n      finish,\n      foffset\n    });\n    const SimRange = { create: create$a };\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$1 = (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 adt$2 = Adt.generate([\n      { before: ['element'] },\n      {\n        on: [\n          'element',\n          'offset'\n        ]\n      },\n      { after: ['element'] }\n    ]);\n    const cata = (subject, onBefore, onOn, onAfter) => subject.fold(onBefore, onOn, onAfter);\n    const getStart$2 = situ => situ.fold(identity, identity, identity);\n    const before$1 = adt$2.before;\n    const on = adt$2.on;\n    const after$1 = adt$2.after;\n    const Situ = {\n      before: before$1,\n      on,\n      after: after$1,\n      cata,\n      getStart: getStart$2\n    };\n\n    const adt$1 = 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$1.exact(simRange.start, simRange.soffset, simRange.finish, simRange.foffset);\n    const getStart$1 = 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$1.domRange;\n    const relative = adt$1.relative;\n    const exact = adt$1.exact;\n    const getWin = selection => {\n      const start = getStart$1(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 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    const preprocess = selection => selection.match({\n      domRange: rng => {\n        const start = SugarElement.fromDom(rng.startContainer);\n        const finish = SugarElement.fromDom(rng.endContainer);\n        return preprocessExact(start, rng.startOffset, finish, rng.endOffset);\n      },\n      relative: preprocessRelative,\n      exact: preprocessExact\n    });\n\n    const fromElements = (elements, scope) => {\n      const doc = scope || document;\n      const fragment = doc.createDocumentFragment();\n      each$e(elements, element => {\n        fragment.appendChild(element.dom);\n      });\n      return SugarElement.fromDom(fragment);\n    };\n\n    const toNative = selection => {\n      const win = SimSelection.getWin(selection).dom;\n      const getDomRange = (start, soffset, finish, foffset) => exactToNative(win, start, soffset, finish, foffset);\n      const filtered = preprocess(selection);\n      return diagnose(win, filtered).match({\n        ltr: getDomRange,\n        rtl: getDomRange\n      });\n    };\n    const getAtPoint = (win, x, y) => fromPoint$1(win, x, y);\n\n    const fromPoint = (clientX, clientY, doc) => {\n      const win = defaultView(SugarElement.fromDom(doc));\n      return getAtPoint(win.dom, clientX, clientY).map(simRange => {\n        const rng = doc.createRange();\n        rng.setStart(simRange.start.dom, simRange.soffset);\n        rng.setEnd(simRange.finish.dom, simRange.foffset);\n        return rng;\n      }).getOrUndefined();\n    };\n\n    const isEq$4 = (rng1, rng2) => {\n      return isNonNullable(rng1) && isNonNullable(rng2) && (rng1.startContainer === rng2.startContainer && rng1.startOffset === rng2.startOffset) && (rng1.endContainer === rng2.endContainer && rng1.endOffset === rng2.endOffset);\n    };\n\n    const findParent = (node, rootNode, predicate) => {\n      let currentNode = node;\n      while (currentNode && currentNode !== rootNode) {\n        if (predicate(currentNode)) {\n          return currentNode;\n        }\n        currentNode = currentNode.parentNode;\n      }\n      return null;\n    };\n    const hasParent$1 = (node, rootNode, predicate) => findParent(node, rootNode, predicate) !== null;\n    const hasParentWithName = (node, rootNode, name) => hasParent$1(node, rootNode, node => node.nodeName === name);\n    const isCeFalseCaretContainer = (node, rootNode) => isCaretContainer$2(node) && !hasParent$1(node, rootNode, isCaretNode);\n    const hasBrBeforeAfter = (dom, node, left) => {\n      const parentNode = node.parentNode;\n      if (parentNode) {\n        const walker = new DomTreeWalker(node, dom.getParent(parentNode, dom.isBlock) || dom.getRoot());\n        let currentNode;\n        while (currentNode = walker[left ? 'prev' : 'next']()) {\n          if (isBr$6(currentNode)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    };\n    const isPrevNode = (node, name) => {\n      var _a;\n      return ((_a = node.previousSibling) === null || _a === void 0 ? void 0 : _a.nodeName) === name;\n    };\n    const hasContentEditableFalseParent = (root, node) => {\n      let currentNode = node;\n      while (currentNode && currentNode !== root) {\n        if (isContentEditableFalse$b(currentNode)) {\n          return true;\n        }\n        currentNode = currentNode.parentNode;\n      }\n      return false;\n    };\n    const findTextNodeRelative = (dom, isAfterNode, collapsed, left, startNode) => {\n      const body = dom.getRoot();\n      const nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n      const parentNode = startNode.parentNode;\n      let lastInlineElement;\n      let node;\n      if (!parentNode) {\n        return Optional.none();\n      }\n      const parentBlockContainer = dom.getParent(parentNode, dom.isBlock) || body;\n      if (left && isBr$6(startNode) && isAfterNode && dom.isEmpty(parentBlockContainer)) {\n        return Optional.some(CaretPosition(parentNode, dom.nodeIndex(startNode)));\n      }\n      const walker = new DomTreeWalker(startNode, parentBlockContainer);\n      while (node = walker[left ? 'prev' : 'next']()) {\n        if (dom.getContentEditableParent(node) === 'false' || isCeFalseCaretContainer(node, body)) {\n          return Optional.none();\n        }\n        if (isText$a(node) && node.data.length > 0) {\n          if (!hasParentWithName(node, body, 'A')) {\n            return Optional.some(CaretPosition(node, left ? node.data.length : 0));\n          }\n          return Optional.none();\n        }\n        if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\n          return Optional.none();\n        }\n        lastInlineElement = node;\n      }\n      if (isComment(lastInlineElement)) {\n        return Optional.none();\n      }\n      if (collapsed && lastInlineElement) {\n        return Optional.some(CaretPosition(lastInlineElement, 0));\n      }\n      return Optional.none();\n    };\n    const normalizeEndPoint = (dom, collapsed, start, rng) => {\n      const body = dom.getRoot();\n      let node;\n      let normalized = false;\n      let container = start ? rng.startContainer : rng.endContainer;\n      let offset = start ? rng.startOffset : rng.endOffset;\n      const isAfterNode = isElement$6(container) && offset === container.childNodes.length;\n      const nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n      let directionLeft = start;\n      if (isCaretContainer$2(container)) {\n        return Optional.none();\n      }\n      if (isElement$6(container) && offset > container.childNodes.length - 1) {\n        directionLeft = false;\n      }\n      if (isDocument$1(container)) {\n        container = body;\n        offset = 0;\n      }\n      if (container === body) {\n        if (directionLeft) {\n          node = container.childNodes[offset > 0 ? offset - 1 : 0];\n          if (node) {\n            if (isCaretContainer$2(node)) {\n              return Optional.none();\n            }\n            if (nonEmptyElementsMap[node.nodeName] || isTable$2(node)) {\n              return Optional.none();\n            }\n          }\n        }\n        if (container.hasChildNodes()) {\n          offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1);\n          container = container.childNodes[offset];\n          offset = isText$a(container) && isAfterNode ? container.data.length : 0;\n          if (!collapsed && container === body.lastChild && isTable$2(container)) {\n            return Optional.none();\n          }\n          if (hasContentEditableFalseParent(body, container) || isCaretContainer$2(container)) {\n            return Optional.none();\n          }\n          if (isDetails(container)) {\n            return Optional.none();\n          }\n          if (container.hasChildNodes() && !isTable$2(container)) {\n            node = container;\n            const walker = new DomTreeWalker(container, body);\n            do {\n              if (isContentEditableFalse$b(node) || isCaretContainer$2(node)) {\n                normalized = false;\n                break;\n              }\n              if (isText$a(node) && node.data.length > 0) {\n                offset = directionLeft ? 0 : node.data.length;\n                container = node;\n                normalized = true;\n                break;\n              }\n              if (nonEmptyElementsMap[node.nodeName.toLowerCase()] && !isTableCellOrCaption(node)) {\n                offset = dom.nodeIndex(node);\n                container = node.parentNode;\n                if (!directionLeft) {\n                  offset++;\n                }\n                normalized = true;\n                break;\n              }\n            } while (node = directionLeft ? walker.next() : walker.prev());\n          }\n        }\n      }\n      if (collapsed) {\n        if (isText$a(container) && offset === 0) {\n          findTextNodeRelative(dom, isAfterNode, collapsed, true, container).each(pos => {\n            container = pos.container();\n            offset = pos.offset();\n            normalized = true;\n          });\n        }\n        if (isElement$6(container)) {\n          node = container.childNodes[offset];\n          if (!node) {\n            node = container.childNodes[offset - 1];\n          }\n          if (node && isBr$6(node) && !isPrevNode(node, 'A') && !hasBrBeforeAfter(dom, node, false) && !hasBrBeforeAfter(dom, node, true)) {\n            findTextNodeRelative(dom, isAfterNode, collapsed, true, node).each(pos => {\n              container = pos.container();\n              offset = pos.offset();\n              normalized = true;\n            });\n          }\n        }\n      }\n      if (directionLeft && !collapsed && isText$a(container) && offset === container.data.length) {\n        findTextNodeRelative(dom, isAfterNode, collapsed, false, container).each(pos => {\n          container = pos.container();\n          offset = pos.offset();\n          normalized = true;\n        });\n      }\n      return normalized && container ? Optional.some(CaretPosition(container, offset)) : Optional.none();\n    };\n    const normalize$2 = (dom, rng) => {\n      const collapsed = rng.collapsed, normRng = rng.cloneRange();\n      const startPos = CaretPosition.fromRangeStart(rng);\n      normalizeEndPoint(dom, collapsed, true, normRng).each(pos => {\n        if (!collapsed || !CaretPosition.isAbove(startPos, pos)) {\n          normRng.setStart(pos.container(), pos.offset());\n        }\n      });\n      if (!collapsed) {\n        normalizeEndPoint(dom, collapsed, false, normRng).each(pos => {\n          normRng.setEnd(pos.container(), pos.offset());\n        });\n      }\n      if (collapsed) {\n        normRng.collapse(true);\n      }\n      return isEq$4(rng, normRng) ? Optional.none() : Optional.some(normRng);\n    };\n\n    const splitText = (node, offset) => {\n      return node.splitText(offset);\n    };\n    const split = rng => {\n      let startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;\n      if (startContainer === endContainer && isText$a(startContainer)) {\n        if (startOffset > 0 && startOffset < startContainer.data.length) {\n          endContainer = splitText(startContainer, startOffset);\n          startContainer = endContainer.previousSibling;\n          if (endOffset > startOffset) {\n            endOffset = endOffset - startOffset;\n            const newContainer = splitText(endContainer, endOffset).previousSibling;\n            startContainer = endContainer = newContainer;\n            endOffset = newContainer.data.length;\n            startOffset = 0;\n          } else {\n            endOffset = 0;\n          }\n        }\n      } else {\n        if (isText$a(startContainer) && startOffset > 0 && startOffset < startContainer.data.length) {\n          startContainer = splitText(startContainer, startOffset);\n          startOffset = 0;\n        }\n        if (isText$a(endContainer) && endOffset > 0 && endOffset < endContainer.data.length) {\n          const newContainer = splitText(endContainer, endOffset).previousSibling;\n          endContainer = newContainer;\n          endOffset = newContainer.data.length;\n        }\n      }\n      return {\n        startContainer,\n        startOffset,\n        endContainer,\n        endOffset\n      };\n    };\n\n    const RangeUtils = dom => {\n      const walk = (rng, callback) => {\n        return walk$3(dom, rng, callback);\n      };\n      const split$1 = split;\n      const normalize = rng => {\n        return normalize$2(dom, rng).fold(never, normalizedRng => {\n          rng.setStart(normalizedRng.startContainer, normalizedRng.startOffset);\n          rng.setEnd(normalizedRng.endContainer, normalizedRng.endOffset);\n          return true;\n        });\n      };\n      const expand = (rng, options = { type: 'word' }) => {\n        if (options.type === 'word') {\n          const rangeLike = expandRng(dom, rng, [{ inline: 'span' }]);\n          const newRange = dom.createRng();\n          newRange.setStart(rangeLike.startContainer, rangeLike.startOffset);\n          newRange.setEnd(rangeLike.endContainer, rangeLike.endOffset);\n          return newRange;\n        }\n        return rng;\n      };\n      return {\n        walk,\n        split: split$1,\n        expand,\n        normalize\n      };\n    };\n    RangeUtils.compareRanges = isEq$4;\n    RangeUtils.getCaretRangeFromPoint = fromPoint;\n    RangeUtils.getSelectedNode = getSelectedNode;\n    RangeUtils.getNode = getNode$1;\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$7(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$7(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 api = Dimension('height', element => {\n      const dom = element.dom;\n      return inBody(element) ? dom.getBoundingClientRect().height : dom.offsetHeight;\n    });\n    const get$2 = element => api.get(element);\n\n    const getDocument = () => SugarElement.fromDom(document);\n\n    const walkUp = (navigation, doc) => {\n      const frame = navigation.view(doc);\n      return frame.fold(constant([]), f => {\n        const parent = navigation.owner(f);\n        const rest = walkUp(navigation, parent);\n        return [f].concat(rest);\n      });\n    };\n    const pathTo = (element, navigation) => {\n      const d = navigation.owner(element);\n      return walkUp(navigation, d);\n    };\n\n    const view = doc => {\n      var _a;\n      const element = doc.dom === document ? Optional.none() : Optional.from((_a = doc.dom.defaultView) === null || _a === void 0 ? void 0 : _a.frameElement);\n      return element.map(SugarElement.fromDom);\n    };\n    const owner = element => documentOrOwner(element);\n\n    var Navigation = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        view: view,\n        owner: owner\n    });\n\n    const find = element => {\n      const doc = getDocument();\n      const scroll = get$5(doc);\n      const frames = pathTo(element, Navigation);\n      const offset = viewport(element);\n      const r = foldr(frames, (b, a) => {\n        const loc = viewport(a);\n        return {\n          left: b.left + loc.left,\n          top: b.top + loc.top\n        };\n      }, {\n        left: 0,\n        top: 0\n      });\n      return SugarPosition(r.left + offset.left + scroll.left, r.top + offset.top + scroll.top);\n    };\n\n    const excludeFromDescend = element => name(element) === 'textarea';\n    const fireScrollIntoViewEvent = (editor, data) => {\n      const scrollEvent = editor.dispatch('ScrollIntoView', data);\n      return scrollEvent.isDefaultPrevented();\n    };\n    const fireAfterScrollIntoViewEvent = (editor, data) => {\n      editor.dispatch('AfterScrollIntoView', data);\n    };\n    const descend = (element, offset) => {\n      const children = children$1(element);\n      if (children.length === 0 || excludeFromDescend(element)) {\n        return {\n          element,\n          offset\n        };\n      } else if (offset < children.length && !excludeFromDescend(children[offset])) {\n        return {\n          element: children[offset],\n          offset: 0\n        };\n      } else {\n        const last = children[children.length - 1];\n        if (excludeFromDescend(last)) {\n          return {\n            element,\n            offset\n          };\n        } else {\n          if (name(last) === 'img') {\n            return {\n              element: last,\n              offset: 1\n            };\n          } else if (isText$b(last)) {\n            return {\n              element: last,\n              offset: get$3(last).length\n            };\n          } else {\n            return {\n              element: last,\n              offset: children$1(last).length\n            };\n          }\n        }\n      }\n    };\n    const markerInfo = (element, cleanupFun) => {\n      const pos = absolute(element);\n      const height = get$2(element);\n      return {\n        element,\n        bottom: pos.top + height,\n        height,\n        pos,\n        cleanup: cleanupFun\n      };\n    };\n    const createMarker$1 = (element, offset) => {\n      const startPoint = descend(element, offset);\n      const span = SugarElement.fromHtml('<span data-mce-bogus=\"all\" style=\"display: inline-block;\">' + ZWSP$1 + '</span>');\n      before$3(startPoint.element, span);\n      return markerInfo(span, () => remove$5(span));\n    };\n    const elementMarker = element => markerInfo(SugarElement.fromDom(element), noop);\n    const withMarker = (editor, f, rng, alignToTop) => {\n      preserveWith(editor, (_s, _e) => applyWithMarker(editor, f, rng, alignToTop), rng);\n    };\n    const withScrollEvents = (editor, doc, f, marker, alignToTop) => {\n      const data = {\n        elm: marker.element.dom,\n        alignToTop\n      };\n      if (fireScrollIntoViewEvent(editor, data)) {\n        return;\n      }\n      const scrollTop = get$5(doc).top;\n      f(editor, doc, scrollTop, marker, alignToTop);\n      fireAfterScrollIntoViewEvent(editor, data);\n    };\n    const applyWithMarker = (editor, f, rng, alignToTop) => {\n      const body = SugarElement.fromDom(editor.getBody());\n      const doc = SugarElement.fromDom(editor.getDoc());\n      reflow(body);\n      const marker = createMarker$1(SugarElement.fromDom(rng.startContainer), rng.startOffset);\n      withScrollEvents(editor, doc, f, marker, alignToTop);\n      marker.cleanup();\n    };\n    const withElement = (editor, element, f, alignToTop) => {\n      const doc = SugarElement.fromDom(editor.getDoc());\n      withScrollEvents(editor, doc, f, elementMarker(element), alignToTop);\n    };\n    const preserveWith = (editor, f, rng) => {\n      const startElement = rng.startContainer;\n      const startOffset = rng.startOffset;\n      const endElement = rng.endContainer;\n      const endOffset = rng.endOffset;\n      f(SugarElement.fromDom(startElement), SugarElement.fromDom(endElement));\n      const newRng = editor.dom.createRng();\n      newRng.setStart(startElement, startOffset);\n      newRng.setEnd(endElement, endOffset);\n      editor.selection.setRng(rng);\n    };\n    const scrollToMarker = (editor, marker, viewHeight, alignToTop, doc) => {\n      const pos = marker.pos;\n      if (alignToTop) {\n        to(pos.left, pos.top, doc);\n      } else {\n        const y = pos.top - viewHeight + marker.height;\n        to(-editor.getBody().getBoundingClientRect().left, y, doc);\n      }\n    };\n    const intoWindowIfNeeded = (editor, doc, scrollTop, viewHeight, marker, alignToTop) => {\n      const viewportBottom = viewHeight + scrollTop;\n      const markerTop = marker.pos.top;\n      const markerBottom = marker.bottom;\n      const largerThanViewport = markerBottom - markerTop >= viewHeight;\n      if (markerTop < scrollTop) {\n        scrollToMarker(editor, marker, viewHeight, alignToTop !== false, doc);\n      } else if (markerTop > viewportBottom) {\n        const align = largerThanViewport ? alignToTop !== false : alignToTop === true;\n        scrollToMarker(editor, marker, viewHeight, align, doc);\n      } else if (markerBottom > viewportBottom && !largerThanViewport) {\n        scrollToMarker(editor, marker, viewHeight, alignToTop === true, doc);\n      }\n    };\n    const intoWindow = (editor, doc, scrollTop, marker, alignToTop) => {\n      const viewHeight = defaultView(doc).dom.innerHeight;\n      intoWindowIfNeeded(editor, doc, scrollTop, viewHeight, marker, alignToTop);\n    };\n    const intoFrame = (editor, doc, scrollTop, marker, alignToTop) => {\n      const frameViewHeight = defaultView(doc).dom.innerHeight;\n      intoWindowIfNeeded(editor, doc, scrollTop, frameViewHeight, marker, alignToTop);\n      const op = find(marker.element);\n      const viewportBounds = getBounds(window);\n      if (op.top < viewportBounds.y) {\n        intoView(marker.element, alignToTop !== false);\n      } else if (op.top > viewportBounds.bottom) {\n        intoView(marker.element, alignToTop === true);\n      }\n    };\n    const rangeIntoWindow = (editor, rng, alignToTop) => withMarker(editor, intoWindow, rng, alignToTop);\n    const elementIntoWindow = (editor, element, alignToTop) => withElement(editor, element, intoWindow, alignToTop);\n    const rangeIntoFrame = (editor, rng, alignToTop) => withMarker(editor, intoFrame, rng, alignToTop);\n    const elementIntoFrame = (editor, element, alignToTop) => withElement(editor, element, intoFrame, alignToTop);\n    const scrollElementIntoView = (editor, element, alignToTop) => {\n      const scroller = editor.inline ? elementIntoWindow : elementIntoFrame;\n      scroller(editor, element, alignToTop);\n    };\n    const scrollRangeIntoView = (editor, rng, alignToTop) => {\n      const scroller = editor.inline ? rangeIntoWindow : rangeIntoFrame;\n      scroller(editor, rng, alignToTop);\n    };\n\n    const focus$1 = (element, preventScroll = false) => element.dom.focus({ preventScroll });\n    const hasFocus$1 = element => {\n      const root = getRootNode(element).dom;\n      return element.dom === root.activeElement;\n    };\n    const active$1 = (root = getDocument()) => Optional.from(root.dom.activeElement).map(SugarElement.fromDom);\n    const search = element => active$1(getRootNode(element)).filter(e => element.dom.contains(e.dom));\n\n    const clamp$1 = (offset, element) => {\n      const max = isText$b(element) ? get$3(element).length : children$1(element).length + 1;\n      if (offset > max) {\n        return max;\n      } else if (offset < 0) {\n        return 0;\n      }\n      return offset;\n    };\n    const normalizeRng = rng => SimSelection.range(rng.start, clamp$1(rng.soffset, rng.start), rng.finish, clamp$1(rng.foffset, rng.finish));\n    const isOrContains = (root, elm) => !isRestrictedNode(elm.dom) && (contains(root, elm) || eq(root, elm));\n    const isRngInRoot = root => rng => isOrContains(root, rng.start) && isOrContains(root, rng.finish);\n    const shouldStore = editor => editor.inline || Env.browser.isFirefox();\n    const nativeRangeToSelectionRange = r => SimSelection.range(SugarElement.fromDom(r.startContainer), r.startOffset, SugarElement.fromDom(r.endContainer), r.endOffset);\n    const readRange = win => {\n      const selection = win.getSelection();\n      const rng = !selection || selection.rangeCount === 0 ? Optional.none() : Optional.from(selection.getRangeAt(0));\n      return rng.map(nativeRangeToSelectionRange);\n    };\n    const getBookmark = root => {\n      const win = defaultView(root);\n      return readRange(win.dom).filter(isRngInRoot(root));\n    };\n    const validate = (root, bookmark) => Optional.from(bookmark).filter(isRngInRoot(root)).map(normalizeRng);\n    const bookmarkToNativeRng = bookmark => {\n      const rng = document.createRange();\n      try {\n        rng.setStart(bookmark.start.dom, bookmark.soffset);\n        rng.setEnd(bookmark.finish.dom, bookmark.foffset);\n        return Optional.some(rng);\n      } catch (_) {\n        return Optional.none();\n      }\n    };\n    const store = editor => {\n      const newBookmark = shouldStore(editor) ? getBookmark(SugarElement.fromDom(editor.getBody())) : Optional.none();\n      editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;\n    };\n    const getRng = editor => {\n      const bookmark = editor.bookmark ? editor.bookmark : Optional.none();\n      return bookmark.bind(x => validate(SugarElement.fromDom(editor.getBody()), x)).bind(bookmarkToNativeRng);\n    };\n    const restore = editor => {\n      getRng(editor).each(rng => editor.selection.setRng(rng));\n    };\n\n    const isEditorUIElement$1 = elm => {\n      const className = elm.className.toString();\n      return className.indexOf('tox-') !== -1 || className.indexOf('mce-') !== -1;\n    };\n    const FocusManager = { isEditorUIElement: isEditorUIElement$1 };\n\n    const wrappedSetTimeout = (callback, time) => {\n      if (!isNumber(time)) {\n        time = 0;\n      }\n      return setTimeout(callback, time);\n    };\n    const wrappedSetInterval = (callback, time) => {\n      if (!isNumber(time)) {\n        time = 0;\n      }\n      return setInterval(callback, time);\n    };\n    const Delay = {\n      setEditorTimeout: (editor, callback, time) => {\n        return wrappedSetTimeout(() => {\n          if (!editor.removed) {\n            callback();\n          }\n        }, time);\n      },\n      setEditorInterval: (editor, callback, time) => {\n        const timer = wrappedSetInterval(() => {\n          if (!editor.removed) {\n            callback();\n          } else {\n            clearInterval(timer);\n          }\n        }, time);\n        return timer;\n      }\n    };\n\n    const isManualNodeChange = e => {\n      return e.type === 'nodechange' && e.selectionChange;\n    };\n    const registerPageMouseUp = (editor, throttledStore) => {\n      const mouseUpPage = () => {\n        throttledStore.throttle();\n      };\n      DOMUtils.DOM.bind(document, 'mouseup', mouseUpPage);\n      editor.on('remove', () => {\n        DOMUtils.DOM.unbind(document, 'mouseup', mouseUpPage);\n      });\n    };\n    const registerMouseUp = (editor, throttledStore) => {\n      editor.on('mouseup touchend', _e => {\n        throttledStore.throttle();\n      });\n    };\n    const registerEditorEvents = (editor, throttledStore) => {\n      registerMouseUp(editor, throttledStore);\n      editor.on('keyup NodeChange AfterSetSelectionRange', e => {\n        if (!isManualNodeChange(e)) {\n          store(editor);\n        }\n      });\n    };\n    const register$6 = editor => {\n      const throttledStore = first$1(() => {\n        store(editor);\n      }, 0);\n      editor.on('init', () => {\n        if (editor.inline) {\n          registerPageMouseUp(editor, throttledStore);\n        }\n        registerEditorEvents(editor, throttledStore);\n      });\n      editor.on('remove', () => {\n        throttledStore.cancel();\n      });\n    };\n\n    let documentFocusInHandler;\n    const DOM$9 = DOMUtils.DOM;\n    const isEditorUIElement = elm => {\n      return isElement$6(elm) && FocusManager.isEditorUIElement(elm);\n    };\n    const isEditorContentAreaElement = elm => {\n      const classList = elm.classList;\n      if (classList !== undefined) {\n        return classList.contains('tox-edit-area') || classList.contains('tox-edit-area__iframe') || classList.contains('mce-content-body');\n      } else {\n        return false;\n      }\n    };\n    const isUIElement = (editor, elm) => {\n      const customSelector = getCustomUiSelector(editor);\n      const parent = DOM$9.getParent(elm, elm => {\n        return isEditorUIElement(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false);\n      });\n      return parent !== null;\n    };\n    const getActiveElement = editor => {\n      try {\n        const root = getRootNode(SugarElement.fromDom(editor.getElement()));\n        return active$1(root).fold(() => document.body, x => x.dom);\n      } catch (ex) {\n        return document.body;\n      }\n    };\n    const registerEvents$1 = (editorManager, e) => {\n      const editor = e.editor;\n      register$6(editor);\n      const toggleContentAreaOnFocus = (editor, fn) => {\n        if (shouldHighlightOnFocus(editor) && editor.inline !== true) {\n          const contentArea = SugarElement.fromDom(editor.getContainer());\n          fn(contentArea, 'tox-edit-focus');\n        }\n      };\n      editor.on('focusin', () => {\n        const focusedEditor = editorManager.focusedEditor;\n        if (isEditorContentAreaElement(getActiveElement(editor))) {\n          toggleContentAreaOnFocus(editor, add$2);\n        }\n        if (focusedEditor !== editor) {\n          if (focusedEditor) {\n            focusedEditor.dispatch('blur', { focusedEditor: editor });\n          }\n          editorManager.setActive(editor);\n          editorManager.focusedEditor = editor;\n          editor.dispatch('focus', { blurredEditor: focusedEditor });\n          editor.focus(true);\n        }\n      });\n      editor.on('focusout', () => {\n        Delay.setEditorTimeout(editor, () => {\n          const focusedEditor = editorManager.focusedEditor;\n          if (!isEditorContentAreaElement(getActiveElement(editor)) || focusedEditor !== editor) {\n            toggleContentAreaOnFocus(editor, remove$7);\n          }\n          if (!isUIElement(editor, getActiveElement(editor)) && focusedEditor === editor) {\n            editor.dispatch('blur', { focusedEditor: null });\n            editorManager.focusedEditor = null;\n          }\n        });\n      });\n      if (!documentFocusInHandler) {\n        documentFocusInHandler = e => {\n          const activeEditor = editorManager.activeEditor;\n          if (activeEditor) {\n            getOriginalEventTarget(e).each(target => {\n              const elem = target;\n              if (elem.ownerDocument === document) {\n                if (elem !== document.body && !isUIElement(activeEditor, elem) && editorManager.focusedEditor === activeEditor) {\n                  activeEditor.dispatch('blur', { focusedEditor: null });\n                  editorManager.focusedEditor = null;\n                }\n              }\n            });\n          }\n        };\n        DOM$9.bind(document, 'focusin', documentFocusInHandler);\n      }\n    };\n    const unregisterDocumentEvents = (editorManager, e) => {\n      if (editorManager.focusedEditor === e.editor) {\n        editorManager.focusedEditor = null;\n      }\n      if (!editorManager.activeEditor && documentFocusInHandler) {\n        DOM$9.unbind(document, 'focusin', documentFocusInHandler);\n        documentFocusInHandler = null;\n      }\n    };\n    const setup$w = editorManager => {\n      editorManager.on('AddEditor', curry(registerEvents$1, editorManager));\n      editorManager.on('RemoveEditor', curry(unregisterDocumentEvents, editorManager));\n    };\n\n    const getContentEditableHost = (editor, node) => editor.dom.getParent(node, node => editor.dom.getContentEditable(node) === 'true');\n    const getCollapsedNode = rng => rng.collapsed ? Optional.from(getNode$1(rng.startContainer, rng.startOffset)).map(SugarElement.fromDom) : Optional.none();\n    const getFocusInElement = (root, rng) => getCollapsedNode(rng).bind(node => {\n      if (isTableSection(node)) {\n        return Optional.some(node);\n      } else if (!contains(root, node)) {\n        return Optional.some(root);\n      } else {\n        return Optional.none();\n      }\n    });\n    const normalizeSelection = (editor, rng) => {\n      getFocusInElement(SugarElement.fromDom(editor.getBody()), rng).bind(elm => {\n        return firstPositionIn(elm.dom);\n      }).fold(() => {\n        editor.selection.normalize();\n      }, caretPos => editor.selection.setRng(caretPos.toRange()));\n    };\n    const focusBody = body => {\n      if (body.setActive) {\n        try {\n          body.setActive();\n        } catch (ex) {\n          body.focus();\n        }\n      } else {\n        body.focus();\n      }\n    };\n    const hasElementFocus = elm => hasFocus$1(elm) || search(elm).isSome();\n    const hasIframeFocus = editor => isNonNullable(editor.iframeElement) && hasFocus$1(SugarElement.fromDom(editor.iframeElement));\n    const hasInlineFocus = editor => {\n      const rawBody = editor.getBody();\n      return rawBody && hasElementFocus(SugarElement.fromDom(rawBody));\n    };\n    const hasUiFocus = editor => {\n      const dos = getRootNode(SugarElement.fromDom(editor.getElement()));\n      return active$1(dos).filter(elem => !isEditorContentAreaElement(elem.dom) && isUIElement(editor, elem.dom)).isSome();\n    };\n    const hasFocus = editor => editor.inline ? hasInlineFocus(editor) : hasIframeFocus(editor);\n    const hasEditorOrUiFocus = editor => hasFocus(editor) || hasUiFocus(editor);\n    const focusEditor = editor => {\n      const selection = editor.selection;\n      const body = editor.getBody();\n      let rng = selection.getRng();\n      editor.quirks.refreshContentEditable();\n      if (isNonNullable(editor.bookmark) && !hasFocus(editor)) {\n        getRng(editor).each(bookmarkRng => {\n          editor.selection.setRng(bookmarkRng);\n          rng = bookmarkRng;\n        });\n      }\n      const contentEditableHost = getContentEditableHost(editor, selection.getNode());\n      if (contentEditableHost && editor.dom.isChildOf(contentEditableHost, body)) {\n        focusBody(contentEditableHost);\n        normalizeSelection(editor, rng);\n        activateEditor(editor);\n        return;\n      }\n      if (!editor.inline) {\n        if (!Env.browser.isOpera()) {\n          focusBody(body);\n        }\n        editor.getWin().focus();\n      }\n      if (Env.browser.isFirefox() || editor.inline) {\n        focusBody(body);\n        normalizeSelection(editor, rng);\n      }\n      activateEditor(editor);\n    };\n    const activateEditor = editor => editor.editorManager.setActive(editor);\n    const focus = (editor, skipFocus) => {\n      if (editor.removed) {\n        return;\n      }\n      if (skipFocus) {\n        activateEditor(editor);\n      } else {\n        focusEditor(editor);\n      }\n    };\n\n    const isEditableRange = (dom, rng) => {\n      if (rng.collapsed) {\n        return dom.isEditable(rng.startContainer);\n      } else {\n        return dom.isEditable(rng.startContainer) && dom.isEditable(rng.endContainer);\n      }\n    };\n\n    const getEndpointElement = (root, rng, start, real, resolve) => {\n      const container = start ? rng.startContainer : rng.endContainer;\n      const offset = start ? rng.startOffset : rng.endOffset;\n      return Optional.from(container).map(SugarElement.fromDom).map(elm => !real || !rng.collapsed ? child$1(elm, resolve(elm, offset)).getOr(elm) : elm).bind(elm => isElement$7(elm) ? Optional.some(elm) : parent(elm).filter(isElement$7)).map(elm => elm.dom).getOr(root);\n    };\n    const getStart = (root, rng, real = false) => getEndpointElement(root, rng, true, real, (elm, offset) => Math.min(childNodesCount(elm), offset));\n    const getEnd$1 = (root, rng, real = false) => getEndpointElement(root, rng, false, real, (elm, offset) => offset > 0 ? offset - 1 : offset);\n    const skipEmptyTextNodes = (node, forwards) => {\n      const orig = node;\n      while (node && isText$a(node) && node.length === 0) {\n        node = forwards ? node.nextSibling : node.previousSibling;\n      }\n      return node || orig;\n    };\n    const getNode = (root, rng) => {\n      if (!rng) {\n        return root;\n      }\n      let startContainer = rng.startContainer;\n      let endContainer = rng.endContainer;\n      const startOffset = rng.startOffset;\n      const endOffset = rng.endOffset;\n      let node = rng.commonAncestorContainer;\n      if (!rng.collapsed) {\n        if (startContainer === endContainer) {\n          if (endOffset - startOffset < 2) {\n            if (startContainer.hasChildNodes()) {\n              node = startContainer.childNodes[startOffset];\n            }\n          }\n        }\n        if (isText$a(startContainer) && isText$a(endContainer)) {\n          if (startContainer.length === startOffset) {\n            startContainer = skipEmptyTextNodes(startContainer.nextSibling, true);\n          } else {\n            startContainer = startContainer.parentNode;\n          }\n          if (endOffset === 0) {\n            endContainer = skipEmptyTextNodes(endContainer.previousSibling, false);\n          } else {\n            endContainer = endContainer.parentNode;\n          }\n          if (startContainer && startContainer === endContainer) {\n            node = startContainer;\n          }\n        }\n      }\n      const elm = isText$a(node) ? node.parentNode : node;\n      return isHTMLElement(elm) ? elm : root;\n    };\n    const getSelectedBlocks = (dom, rng, startElm, endElm) => {\n      const selectedBlocks = [];\n      const root = dom.getRoot();\n      const start = dom.getParent(startElm || getStart(root, rng, rng.collapsed), dom.isBlock);\n      const end = dom.getParent(endElm || getEnd$1(root, rng, rng.collapsed), dom.isBlock);\n      if (start && start !== root) {\n        selectedBlocks.push(start);\n      }\n      if (start && end && start !== end) {\n        let node;\n        const walker = new DomTreeWalker(start, root);\n        while ((node = walker.next()) && node !== end) {\n          if (dom.isBlock(node)) {\n            selectedBlocks.push(node);\n          }\n        }\n      }\n      if (end && start !== end && end !== root) {\n        selectedBlocks.push(end);\n      }\n      return selectedBlocks;\n    };\n    const select = (dom, node, content) => Optional.from(node).bind(node => Optional.from(node.parentNode).map(parent => {\n      const idx = dom.nodeIndex(node);\n      const rng = dom.createRng();\n      rng.setStart(parent, idx);\n      rng.setEnd(parent, idx + 1);\n      if (content) {\n        moveEndPoint(dom, rng, node, true);\n        moveEndPoint(dom, rng, node, false);\n      }\n      return rng;\n    }));\n\n    const processRanges = (editor, ranges) => map$3(ranges, range => {\n      const evt = editor.dispatch('GetSelectionRange', { range });\n      return evt.range !== range ? evt.range : range;\n    });\n\n    const getEnd = element => name(element) === 'img' ? 1 : getOption(element).fold(() => children$1(element).length, v => v.length);\n    const isTextNodeWithCursorPosition = el => getOption(el).filter(text => text.trim().length !== 0 || text.indexOf(nbsp) > -1).isSome();\n    const isContentEditableFalse$5 = elem => isHTMLElement$1(elem) && get$9(elem, 'contenteditable') === 'false';\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)) || isContentEditableFalse$5(elem);\n    };\n\n    const first = element => descendant$2(element, isCursorPosition);\n    const last = element => descendantRtl(element, isCursorPosition);\n    const descendantRtl = (scope, predicate) => {\n      const descend = element => {\n        const children = children$1(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 autocompleteSelector = '[data-mce-autocompleter]';\n    const create$9 = (editor, range) => {\n      if (findIn(SugarElement.fromDom(editor.getBody())).isNone()) {\n        const wrapper = SugarElement.fromHtml('<span data-mce-autocompleter=\"1\" data-mce-bogus=\"1\"></span>', editor.getDoc());\n        append$1(wrapper, SugarElement.fromDom(range.extractContents()));\n        range.insertNode(wrapper.dom);\n        parent(wrapper).each(elm => elm.dom.normalize());\n        last(wrapper).map(last => {\n          editor.selection.setCursorLocation(last.dom, getEnd(last));\n        });\n      }\n    };\n    const detect$1 = elm => closest$3(elm, autocompleteSelector);\n    const findIn = elm => descendant$1(elm, autocompleteSelector);\n    const remove$2 = (editor, elm) => findIn(elm).each(wrapper => {\n      const bookmark = editor.selection.getBookmark();\n      unwrap(wrapper);\n      editor.selection.moveToBookmark(bookmark);\n    });\n\n    const typeLookup = {\n      '#text': 3,\n      '#comment': 8,\n      '#cdata': 4,\n      '#pi': 7,\n      '#doctype': 10,\n      '#document-fragment': 11\n    };\n    const walk$2 = (node, root, prev) => {\n      const startName = prev ? 'lastChild' : 'firstChild';\n      const siblingName = prev ? 'prev' : 'next';\n      if (node[startName]) {\n        return node[startName];\n      }\n      if (node !== root) {\n        let sibling = node[siblingName];\n        if (sibling) {\n          return sibling;\n        }\n        for (let parent = node.parent; parent && parent !== root; parent = parent.parent) {\n          sibling = parent[siblingName];\n          if (sibling) {\n            return sibling;\n          }\n        }\n      }\n      return undefined;\n    };\n    const isEmptyTextNode = node => {\n      var _a;\n      const text = (_a = node.value) !== null && _a !== void 0 ? _a : '';\n      if (!isWhitespaceText(text)) {\n        return false;\n      }\n      const parentNode = node.parent;\n      if (parentNode && (parentNode.name !== 'span' || parentNode.attr('style')) && /^[ ]+$/.test(text)) {\n        return false;\n      }\n      return true;\n    };\n    const isNonEmptyElement = node => {\n      const isNamedAnchor = node.name === 'a' && !node.attr('href') && node.attr('id');\n      return node.attr('name') || node.attr('id') && !node.firstChild || node.attr('data-mce-bookmark') || isNamedAnchor;\n    };\n    class AstNode {\n      static create(name, attrs) {\n        const node = new AstNode(name, typeLookup[name] || 1);\n        if (attrs) {\n          each$d(attrs, (value, attrName) => {\n            node.attr(attrName, value);\n          });\n        }\n        return node;\n      }\n      constructor(name, type) {\n        this.name = name;\n        this.type = type;\n        if (type === 1) {\n          this.attributes = [];\n          this.attributes.map = {};\n        }\n      }\n      replace(node) {\n        const self = this;\n        if (node.parent) {\n          node.remove();\n        }\n        self.insert(node, self);\n        self.remove();\n        return self;\n      }\n      attr(name, value) {\n        const self = this;\n        if (!isString(name)) {\n          if (isNonNullable(name)) {\n            each$d(name, (value, key) => {\n              self.attr(key, value);\n            });\n          }\n          return self;\n        }\n        const attrs = self.attributes;\n        if (attrs) {\n          if (value !== undefined) {\n            if (value === null) {\n              if (name in attrs.map) {\n                delete attrs.map[name];\n                let i = attrs.length;\n                while (i--) {\n                  if (attrs[i].name === name) {\n                    attrs.splice(i, 1);\n                    return self;\n                  }\n                }\n              }\n              return self;\n            }\n            if (name in attrs.map) {\n              let i = attrs.length;\n              while (i--) {\n                if (attrs[i].name === name) {\n                  attrs[i].value = value;\n                  break;\n                }\n              }\n            } else {\n              attrs.push({\n                name,\n                value\n              });\n            }\n            attrs.map[name] = value;\n            return self;\n          }\n          return attrs.map[name];\n        }\n        return undefined;\n      }\n      clone() {\n        const self = this;\n        const clone = new AstNode(self.name, self.type);\n        const selfAttrs = self.attributes;\n        if (selfAttrs) {\n          const cloneAttrs = [];\n          cloneAttrs.map = {};\n          for (let i = 0, l = selfAttrs.length; i < l; i++) {\n            const selfAttr = selfAttrs[i];\n            if (selfAttr.name !== 'id') {\n              cloneAttrs[cloneAttrs.length] = {\n                name: selfAttr.name,\n                value: selfAttr.value\n              };\n              cloneAttrs.map[selfAttr.name] = selfAttr.value;\n            }\n          }\n          clone.attributes = cloneAttrs;\n        }\n        clone.value = self.value;\n        return clone;\n      }\n      wrap(wrapper) {\n        const self = this;\n        if (self.parent) {\n          self.parent.insert(wrapper, self);\n          wrapper.append(self);\n        }\n        return self;\n      }\n      unwrap() {\n        const self = this;\n        for (let node = self.firstChild; node;) {\n          const next = node.next;\n          self.insert(node, self, true);\n          node = next;\n        }\n        self.remove();\n      }\n      remove() {\n        const self = this, parent = self.parent, next = self.next, prev = self.prev;\n        if (parent) {\n          if (parent.firstChild === self) {\n            parent.firstChild = next;\n            if (next) {\n              next.prev = null;\n            }\n          } else if (prev) {\n            prev.next = next;\n          }\n          if (parent.lastChild === self) {\n            parent.lastChild = prev;\n            if (prev) {\n              prev.next = null;\n            }\n          } else if (next) {\n            next.prev = prev;\n          }\n          self.parent = self.next = self.prev = null;\n        }\n        return self;\n      }\n      append(node) {\n        const self = this;\n        if (node.parent) {\n          node.remove();\n        }\n        const last = self.lastChild;\n        if (last) {\n          last.next = node;\n          node.prev = last;\n          self.lastChild = node;\n        } else {\n          self.lastChild = self.firstChild = node;\n        }\n        node.parent = self;\n        return node;\n      }\n      insert(node, refNode, before) {\n        if (node.parent) {\n          node.remove();\n        }\n        const parent = refNode.parent || this;\n        if (before) {\n          if (refNode === parent.firstChild) {\n            parent.firstChild = node;\n          } else if (refNode.prev) {\n            refNode.prev.next = node;\n          }\n          node.prev = refNode.prev;\n          node.next = refNode;\n          refNode.prev = node;\n        } else {\n          if (refNode === parent.lastChild) {\n            parent.lastChild = node;\n          } else if (refNode.next) {\n            refNode.next.prev = node;\n          }\n          node.next = refNode.next;\n          node.prev = refNode;\n          refNode.next = node;\n        }\n        node.parent = parent;\n        return node;\n      }\n      getAll(name) {\n        const self = this;\n        const collection = [];\n        for (let node = self.firstChild; node; node = walk$2(node, self)) {\n          if (node.name === name) {\n            collection.push(node);\n          }\n        }\n        return collection;\n      }\n      children() {\n        const self = this;\n        const collection = [];\n        for (let node = self.firstChild; node; node = node.next) {\n          collection.push(node);\n        }\n        return collection;\n      }\n      empty() {\n        const self = this;\n        if (self.firstChild) {\n          const nodes = [];\n          for (let node = self.firstChild; node; node = walk$2(node, self)) {\n            nodes.push(node);\n          }\n          let i = nodes.length;\n          while (i--) {\n            const node = nodes[i];\n            node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;\n          }\n        }\n        self.firstChild = self.lastChild = null;\n        return self;\n      }\n      isEmpty(elements, whitespace = {}, predicate) {\n        var _a;\n        const self = this;\n        let node = self.firstChild;\n        if (isNonEmptyElement(self)) {\n          return false;\n        }\n        if (node) {\n          do {\n            if (node.type === 1) {\n              if (node.attr('data-mce-bogus')) {\n                continue;\n              }\n              if (elements[node.name]) {\n                return false;\n              }\n              if (isNonEmptyElement(node)) {\n                return false;\n              }\n            }\n            if (node.type === 8) {\n              return false;\n            }\n            if (node.type === 3 && !isEmptyTextNode(node)) {\n              return false;\n            }\n            if (node.type === 3 && node.parent && whitespace[node.parent.name] && isWhitespaceText((_a = node.value) !== null && _a !== void 0 ? _a : '')) {\n              return false;\n            }\n            if (predicate && predicate(node)) {\n              return false;\n            }\n          } while (node = walk$2(node, self));\n        }\n        return true;\n      }\n      walk(prev) {\n        return walk$2(this, null, prev);\n      }\n    }\n\n    const unescapedTextParents = Tools.makeMap('NOSCRIPT STYLE SCRIPT XMP IFRAME NOEMBED NOFRAMES PLAINTEXT', ' ');\n    const containsZwsp = node => isString(node.nodeValue) && node.nodeValue.includes(ZWSP$1);\n    const getTemporaryNodeSelector = tempAttrs => `${ tempAttrs.length === 0 ? '' : `${ map$3(tempAttrs, attr => `[${ attr }]`).join(',') },` }[data-mce-bogus=\"all\"]`;\n    const getTemporaryNodes = (tempAttrs, body) => body.querySelectorAll(getTemporaryNodeSelector(tempAttrs));\n    const createZwspCommentWalker = body => document.createTreeWalker(body, NodeFilter.SHOW_COMMENT, node => containsZwsp(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);\n    const createUnescapedZwspTextWalker = body => document.createTreeWalker(body, NodeFilter.SHOW_TEXT, node => {\n      if (containsZwsp(node)) {\n        const parent = node.parentNode;\n        return parent && has$2(unescapedTextParents, parent.nodeName) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n      } else {\n        return NodeFilter.FILTER_SKIP;\n      }\n    });\n    const hasZwspComment = body => createZwspCommentWalker(body).nextNode() !== null;\n    const hasUnescapedZwspText = body => createUnescapedZwspTextWalker(body).nextNode() !== null;\n    const hasTemporaryNode = (tempAttrs, body) => body.querySelector(getTemporaryNodeSelector(tempAttrs)) !== null;\n    const trimTemporaryNodes = (tempAttrs, body) => {\n      each$e(getTemporaryNodes(tempAttrs, body), elm => {\n        const element = SugarElement.fromDom(elm);\n        if (get$9(element, 'data-mce-bogus') === 'all') {\n          remove$5(element);\n        } else {\n          each$e(tempAttrs, attr => {\n            if (has$1(element, attr)) {\n              remove$a(element, attr);\n            }\n          });\n        }\n      });\n    };\n    const emptyAllNodeValuesInWalker = walker => {\n      let curr = walker.nextNode();\n      while (curr !== null) {\n        curr.nodeValue = null;\n        curr = walker.nextNode();\n      }\n    };\n    const emptyZwspComments = compose(emptyAllNodeValuesInWalker, createZwspCommentWalker);\n    const emptyUnescapedZwspTexts = compose(emptyAllNodeValuesInWalker, createUnescapedZwspTextWalker);\n    const trim$1 = (body, tempAttrs) => {\n      const conditionalTrims = [\n        {\n          condition: curry(hasTemporaryNode, tempAttrs),\n          action: curry(trimTemporaryNodes, tempAttrs)\n        },\n        {\n          condition: hasZwspComment,\n          action: emptyZwspComments\n        },\n        {\n          condition: hasUnescapedZwspText,\n          action: emptyUnescapedZwspTexts\n        }\n      ];\n      let trimmed = body;\n      let cloned = false;\n      each$e(conditionalTrims, ({condition, action}) => {\n        if (condition(trimmed)) {\n          if (!cloned) {\n            trimmed = body.cloneNode(true);\n            cloned = true;\n          }\n          action(trimmed);\n        }\n      });\n      return trimmed;\n    };\n\n    const cleanupBogusElements = parent => {\n      const bogusElements = descendants(parent, '[data-mce-bogus]');\n      each$e(bogusElements, elem => {\n        const bogusValue = get$9(elem, 'data-mce-bogus');\n        if (bogusValue === 'all') {\n          remove$5(elem);\n        } else if (isBr$5(elem)) {\n          before$3(elem, SugarElement.fromText(zeroWidth));\n          remove$5(elem);\n        } else {\n          unwrap(elem);\n        }\n      });\n    };\n    const cleanupInputNames = parent => {\n      const inputs = descendants(parent, 'input');\n      each$e(inputs, input => {\n        remove$a(input, 'name');\n      });\n    };\n\n    const trimEmptyContents = (editor, html) => {\n      const blockName = getForcedRootBlock(editor);\n      const emptyRegExp = new RegExp(`^(<${ blockName }[^>]*>(&nbsp;|&#160;|\\\\s|\\u00a0|<br \\\\/>|)<\\\\/${ blockName }>[\\r\\n]*|<br \\\\/>[\\r\\n]*)$`);\n      return html.replace(emptyRegExp, '');\n    };\n    const getPlainTextContent = (editor, body) => {\n      const doc = editor.getDoc();\n      const dos = getRootNode(SugarElement.fromDom(editor.getBody()));\n      const offscreenDiv = SugarElement.fromTag('div', doc);\n      set$3(offscreenDiv, 'data-mce-bogus', 'all');\n      setAll(offscreenDiv, {\n        position: 'fixed',\n        left: '-9999999px',\n        top: '0'\n      });\n      set$1(offscreenDiv, body.innerHTML);\n      cleanupBogusElements(offscreenDiv);\n      cleanupInputNames(offscreenDiv);\n      const root = getContentContainer(dos);\n      append$1(root, offscreenDiv);\n      const content = trim$2(offscreenDiv.dom.innerText);\n      remove$5(offscreenDiv);\n      return content;\n    };\n    const getContentFromBody = (editor, args, body) => {\n      let content;\n      if (args.format === 'raw') {\n        content = Tools.trim(trim$2(trim$1(body, editor.serializer.getTempAttrs()).innerHTML));\n      } else if (args.format === 'text') {\n        content = getPlainTextContent(editor, body);\n      } else if (args.format === 'tree') {\n        content = editor.serializer.serialize(body, args);\n      } else {\n        content = trimEmptyContents(editor, editor.serializer.serialize(body, args));\n      }\n      const shouldTrim = args.format !== 'text' && !isWsPreserveElement(SugarElement.fromDom(body));\n      return shouldTrim && isString(content) ? Tools.trim(content) : content;\n    };\n    const getContentInternal = (editor, args) => Optional.from(editor.getBody()).fold(constant(args.format === 'tree' ? new AstNode('body', 11) : ''), body => getContentFromBody(editor, args, body));\n\n    const makeMap$1 = Tools.makeMap;\n    const Writer = settings => {\n      const html = [];\n      settings = settings || {};\n      const indent = settings.indent;\n      const indentBefore = makeMap$1(settings.indent_before || '');\n      const indentAfter = makeMap$1(settings.indent_after || '');\n      const encode = Entities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);\n      const htmlOutput = settings.element_format !== 'xhtml';\n      return {\n        start: (name, attrs, empty) => {\n          if (indent && indentBefore[name] && html.length > 0) {\n            const value = html[html.length - 1];\n            if (value.length > 0 && value !== '\\n') {\n              html.push('\\n');\n            }\n          }\n          html.push('<', name);\n          if (attrs) {\n            for (let i = 0, l = attrs.length; i < l; i++) {\n              const attr = attrs[i];\n              html.push(' ', attr.name, '=\"', encode(attr.value, true), '\"');\n            }\n          }\n          if (!empty || htmlOutput) {\n            html[html.length] = '>';\n          } else {\n            html[html.length] = ' />';\n          }\n          if (empty && indent && indentAfter[name] && html.length > 0) {\n            const value = html[html.length - 1];\n            if (value.length > 0 && value !== '\\n') {\n              html.push('\\n');\n            }\n          }\n        },\n        end: name => {\n          let value;\n          html.push('</', name, '>');\n          if (indent && indentAfter[name] && html.length > 0) {\n            value = html[html.length - 1];\n            if (value.length > 0 && value !== '\\n') {\n              html.push('\\n');\n            }\n          }\n        },\n        text: (text, raw) => {\n          if (text.length > 0) {\n            html[html.length] = raw ? text : encode(text);\n          }\n        },\n        cdata: text => {\n          html.push('<![CDATA[', text, ']]>');\n        },\n        comment: text => {\n          html.push('<!--', text, '-->');\n        },\n        pi: (name, text) => {\n          if (text) {\n            html.push('<?', name, ' ', encode(text), '?>');\n          } else {\n            html.push('<?', name, '?>');\n          }\n          if (indent) {\n            html.push('\\n');\n          }\n        },\n        doctype: text => {\n          html.push('<!DOCTYPE', text, '>', indent ? '\\n' : '');\n        },\n        reset: () => {\n          html.length = 0;\n        },\n        getContent: () => {\n          return html.join('').replace(/\\n$/, '');\n        }\n      };\n    };\n\n    const HtmlSerializer = (settings = {}, schema = Schema()) => {\n      const writer = Writer(settings);\n      settings.validate = 'validate' in settings ? settings.validate : true;\n      const serialize = node => {\n        const validate = settings.validate;\n        const handlers = {\n          3: node => {\n            var _a;\n            writer.text((_a = node.value) !== null && _a !== void 0 ? _a : '', node.raw);\n          },\n          8: node => {\n            var _a;\n            writer.comment((_a = node.value) !== null && _a !== void 0 ? _a : '');\n          },\n          7: node => {\n            writer.pi(node.name, node.value);\n          },\n          10: node => {\n            var _a;\n            writer.doctype((_a = node.value) !== null && _a !== void 0 ? _a : '');\n          },\n          4: node => {\n            var _a;\n            writer.cdata((_a = node.value) !== null && _a !== void 0 ? _a : '');\n          },\n          11: node => {\n            let tempNode = node;\n            if (tempNode = tempNode.firstChild) {\n              do {\n                walk(tempNode);\n              } while (tempNode = tempNode.next);\n            }\n          }\n        };\n        writer.reset();\n        const walk = node => {\n          var _a;\n          const handler = handlers[node.type];\n          if (!handler) {\n            const name = node.name;\n            const isEmpty = name in schema.getVoidElements();\n            let attrs = node.attributes;\n            if (validate && attrs && attrs.length > 1) {\n              const sortedAttrs = [];\n              sortedAttrs.map = {};\n              const elementRule = schema.getElementRule(node.name);\n              if (elementRule) {\n                for (let i = 0, l = elementRule.attributesOrder.length; i < l; i++) {\n                  const attrName = elementRule.attributesOrder[i];\n                  if (attrName in attrs.map) {\n                    const attrValue = attrs.map[attrName];\n                    sortedAttrs.map[attrName] = attrValue;\n                    sortedAttrs.push({\n                      name: attrName,\n                      value: attrValue\n                    });\n                  }\n                }\n                for (let i = 0, l = attrs.length; i < l; i++) {\n                  const attrName = attrs[i].name;\n                  if (!(attrName in sortedAttrs.map)) {\n                    const attrValue = attrs.map[attrName];\n                    sortedAttrs.map[attrName] = attrValue;\n                    sortedAttrs.push({\n                      name: attrName,\n                      value: attrValue\n                    });\n                  }\n                }\n                attrs = sortedAttrs;\n              }\n            }\n            writer.start(name, attrs, isEmpty);\n            if (isNonHtmlElementRootName(name)) {\n              if (isString(node.value)) {\n                writer.text(node.value, true);\n              }\n              writer.end(name);\n            } else {\n              if (!isEmpty) {\n                let child = node.firstChild;\n                if (child) {\n                  if ((name === 'pre' || name === 'textarea') && child.type === 3 && ((_a = child.value) === null || _a === void 0 ? void 0 : _a[0]) === '\\n') {\n                    writer.text('\\n', true);\n                  }\n                  do {\n                    walk(child);\n                  } while (child = child.next);\n                }\n                writer.end(name);\n              }\n            }\n          } else {\n            handler(node);\n          }\n        };\n        if (node.type === 1 && !settings.inner) {\n          walk(node);\n        } else if (node.type === 3) {\n          handlers[3](node);\n        } else {\n          handlers[11](node);\n        }\n        return writer.getContent();\n      };\n      return { serialize };\n    };\n\n    const nonInheritableStyles = new Set();\n    (() => {\n      const nonInheritableStylesArr = [\n        'margin',\n        'margin-left',\n        'margin-right',\n        'margin-top',\n        'margin-bottom',\n        'padding',\n        'padding-left',\n        'padding-right',\n        'padding-top',\n        'padding-bottom',\n        'border',\n        'border-width',\n        'border-style',\n        'border-color',\n        'background',\n        'background-attachment',\n        'background-clip',\n        'background-color',\n        'background-image',\n        'background-origin',\n        'background-position',\n        'background-repeat',\n        'background-size',\n        'float',\n        'position',\n        'left',\n        'right',\n        'top',\n        'bottom',\n        'z-index',\n        'display',\n        'transform',\n        'width',\n        'max-width',\n        'min-width',\n        'height',\n        'max-height',\n        'min-height',\n        'overflow',\n        'overflow-x',\n        'overflow-y',\n        'text-overflow',\n        'vertical-align',\n        'transition',\n        'transition-delay',\n        'transition-duration',\n        'transition-property',\n        'transition-timing-function'\n      ];\n      each$e(nonInheritableStylesArr, style => {\n        nonInheritableStyles.add(style);\n      });\n    })();\n    const shorthandStyleProps = [\n      'font',\n      'text-decoration',\n      'text-emphasis'\n    ];\n    const getStyleProps = (dom, node) => keys(dom.parseStyle(dom.getAttrib(node, 'style')));\n    const isNonInheritableStyle = style => nonInheritableStyles.has(style);\n    const hasInheritableStyles = (dom, node) => forall(getStyleProps(dom, node), style => !isNonInheritableStyle(style));\n    const getLonghandStyleProps = styles => filter$5(styles, style => exists(shorthandStyleProps, prop => startsWith(style, prop)));\n    const hasStyleConflict = (dom, node, parentNode) => {\n      const nodeStyleProps = getStyleProps(dom, node);\n      const parentNodeStyleProps = getStyleProps(dom, parentNode);\n      const valueMismatch = prop => {\n        var _a, _b;\n        const nodeValue = (_a = dom.getStyle(node, prop)) !== null && _a !== void 0 ? _a : '';\n        const parentValue = (_b = dom.getStyle(parentNode, prop)) !== null && _b !== void 0 ? _b : '';\n        return isNotEmpty(nodeValue) && isNotEmpty(parentValue) && nodeValue !== parentValue;\n      };\n      return exists(nodeStyleProps, nodeStyleProp => {\n        const propExists = props => exists(props, prop => prop === nodeStyleProp);\n        if (!propExists(parentNodeStyleProps) && propExists(shorthandStyleProps)) {\n          const longhandProps = getLonghandStyleProps(parentNodeStyleProps);\n          return exists(longhandProps, valueMismatch);\n        } else {\n          return valueMismatch(nodeStyleProp);\n        }\n      });\n    };\n\n    const isChar = (forward, predicate, pos) => Optional.from(pos.container()).filter(isText$a).exists(text => {\n      const delta = forward ? 0 : -1;\n      return predicate(text.data.charAt(pos.offset() + delta));\n    });\n    const isBeforeSpace = curry(isChar, true, isWhiteSpace);\n    const isAfterSpace = curry(isChar, false, isWhiteSpace);\n    const isEmptyText = pos => {\n      const container = pos.container();\n      return isText$a(container) && (container.data.length === 0 || isZwsp$1(container.data) && BookmarkManager.isBookmarkNode(container.parentNode));\n    };\n    const matchesElementPosition = (before, predicate) => pos => getChildNodeAtRelativeOffset(before ? 0 : -1, pos).filter(predicate).isSome();\n    const isImageBlock = node => isImg(node) && get$7(SugarElement.fromDom(node), 'display') === 'block';\n    const isCefNode = node => isContentEditableFalse$b(node) && !isBogusAll$1(node);\n    const isBeforeImageBlock = matchesElementPosition(true, isImageBlock);\n    const isAfterImageBlock = matchesElementPosition(false, isImageBlock);\n    const isBeforeMedia = matchesElementPosition(true, isMedia$2);\n    const isAfterMedia = matchesElementPosition(false, isMedia$2);\n    const isBeforeTable = matchesElementPosition(true, isTable$2);\n    const isAfterTable = matchesElementPosition(false, isTable$2);\n    const isBeforeContentEditableFalse = matchesElementPosition(true, isCefNode);\n    const isAfterContentEditableFalse = matchesElementPosition(false, isCefNode);\n\n    const dropLast = xs => xs.slice(0, -1);\n    const parentsUntil = (start, root, predicate) => {\n      if (contains(root, start)) {\n        return dropLast(parents$1(start, elm => {\n          return predicate(elm) || eq(elm, root);\n        }));\n      } else {\n        return [];\n      }\n    };\n    const parents = (start, root) => parentsUntil(start, root, never);\n    const parentsAndSelf = (start, root) => [start].concat(parents(start, root));\n\n    const navigateIgnoreEmptyTextNodes = (forward, root, from) => navigateIgnore(forward, root, from, isEmptyText);\n    const isBlock$1 = schema => el => schema.isBlock(name(el));\n    const getClosestBlock$1 = (root, pos, schema) => find$2(parentsAndSelf(SugarElement.fromDom(pos.container()), root), isBlock$1(schema));\n    const isAtBeforeAfterBlockBoundary = (forward, root, pos, schema) => navigateIgnoreEmptyTextNodes(forward, root.dom, pos).forall(newPos => getClosestBlock$1(root, pos, schema).fold(() => !isInSameBlock(newPos, pos, root.dom), fromBlock => !isInSameBlock(newPos, pos, root.dom) && contains(fromBlock, SugarElement.fromDom(newPos.container()))));\n    const isAtBlockBoundary = (forward, root, pos, schema) => getClosestBlock$1(root, pos, schema).fold(() => navigateIgnoreEmptyTextNodes(forward, root.dom, pos).forall(newPos => !isInSameBlock(newPos, pos, root.dom)), parent => navigateIgnoreEmptyTextNodes(forward, parent.dom, pos).isNone());\n    const isAtStartOfBlock = curry(isAtBlockBoundary, false);\n    const isAtEndOfBlock = curry(isAtBlockBoundary, true);\n    const isBeforeBlock = curry(isAtBeforeAfterBlockBoundary, false);\n    const isAfterBlock = curry(isAtBeforeAfterBlockBoundary, true);\n\n    const isBr$1 = pos => getElementFromPosition(pos).exists(isBr$5);\n    const findBr = (forward, root, pos, schema) => {\n      const parentBlocks = filter$5(parentsAndSelf(SugarElement.fromDom(pos.container()), root), el => schema.isBlock(name(el)));\n      const scope = head(parentBlocks).getOr(root);\n      return fromPosition(forward, scope.dom, pos).filter(isBr$1);\n    };\n    const isBeforeBr$1 = (root, pos, schema) => getElementFromPosition(pos).exists(isBr$5) || findBr(true, root, pos, schema).isSome();\n    const isAfterBr = (root, pos, schema) => getElementFromPrevPosition(pos).exists(isBr$5) || findBr(false, root, pos, schema).isSome();\n    const findPreviousBr = curry(findBr, false);\n    const findNextBr = curry(findBr, true);\n\n    const isInMiddleOfText = pos => CaretPosition.isTextPosition(pos) && !pos.isAtStart() && !pos.isAtEnd();\n    const getClosestBlock = (root, pos, schema) => {\n      const parentBlocks = filter$5(parentsAndSelf(SugarElement.fromDom(pos.container()), root), el => schema.isBlock(name(el)));\n      return head(parentBlocks).getOr(root);\n    };\n    const hasSpaceBefore = (root, pos, schema) => {\n      if (isInMiddleOfText(pos)) {\n        return isAfterSpace(pos);\n      } else {\n        return isAfterSpace(pos) || prevPosition(getClosestBlock(root, pos, schema).dom, pos).exists(isAfterSpace);\n      }\n    };\n    const hasSpaceAfter = (root, pos, schema) => {\n      if (isInMiddleOfText(pos)) {\n        return isBeforeSpace(pos);\n      } else {\n        return isBeforeSpace(pos) || nextPosition(getClosestBlock(root, pos, schema).dom, pos).exists(isBeforeSpace);\n      }\n    };\n    const isPreValue = value => contains$2([\n      'pre',\n      'pre-wrap'\n    ], value);\n    const isInPre = pos => getElementFromPosition(pos).bind(elm => closest$4(elm, isElement$7)).exists(elm => isPreValue(get$7(elm, 'white-space')));\n    const isAtBeginningOfBody = (root, pos) => prevPosition(root.dom, pos).isNone();\n    const isAtEndOfBody = (root, pos) => nextPosition(root.dom, pos).isNone();\n    const isAtLineBoundary = (root, pos, schema) => isAtBeginningOfBody(root, pos) || isAtEndOfBody(root, pos) || isAtStartOfBlock(root, pos, schema) || isAtEndOfBlock(root, pos, schema) || isAfterBr(root, pos, schema) || isBeforeBr$1(root, pos, schema);\n    const isCefBlock = node => isNonNullable(node) && isContentEditableFalse$b(node) && isBlockLike(node);\n    const isSiblingCefBlock = (root, direction) => container => {\n      return isCefBlock(new DomTreeWalker(container, root)[direction]());\n    };\n    const isBeforeCefBlock = (root, pos) => {\n      const nextPos = nextPosition(root.dom, pos).getOr(pos);\n      const isNextCefBlock = isSiblingCefBlock(root.dom, 'next');\n      return pos.isAtEnd() && (isNextCefBlock(pos.container()) || isNextCefBlock(nextPos.container()));\n    };\n    const isAfterCefBlock = (root, pos) => {\n      const prevPos = prevPosition(root.dom, pos).getOr(pos);\n      const isPrevCefBlock = isSiblingCefBlock(root.dom, 'prev');\n      return pos.isAtStart() && (isPrevCefBlock(pos.container()) || isPrevCefBlock(prevPos.container()));\n    };\n    const needsToHaveNbsp = (root, pos, schema) => {\n      if (isInPre(pos)) {\n        return false;\n      } else {\n        return isAtLineBoundary(root, pos, schema) || hasSpaceBefore(root, pos, schema) || hasSpaceAfter(root, pos, schema);\n      }\n    };\n    const needsToBeNbspLeft = (root, pos, schema) => {\n      if (isInPre(pos)) {\n        return false;\n      } else {\n        return isAtStartOfBlock(root, pos, schema) || isBeforeBlock(root, pos, schema) || isAfterBr(root, pos, schema) || hasSpaceBefore(root, pos, schema) || isAfterCefBlock(root, pos);\n      }\n    };\n    const leanRight = pos => {\n      const container = pos.container();\n      const offset = pos.offset();\n      if (isText$a(container) && offset < container.data.length) {\n        return CaretPosition(container, offset + 1);\n      } else {\n        return pos;\n      }\n    };\n    const needsToBeNbspRight = (root, pos, schema) => {\n      if (isInPre(pos)) {\n        return false;\n      } else {\n        return isAtEndOfBlock(root, pos, schema) || isAfterBlock(root, pos, schema) || isBeforeBr$1(root, pos, schema) || hasSpaceAfter(root, pos, schema) || isBeforeCefBlock(root, pos);\n      }\n    };\n    const needsToBeNbsp = (root, pos, schema) => needsToBeNbspLeft(root, pos, schema) || needsToBeNbspRight(root, leanRight(pos), schema);\n    const isNbspAt = (text, offset) => isNbsp(text.charAt(offset));\n    const isWhiteSpaceAt = (text, offset) => isWhiteSpace(text.charAt(offset));\n    const hasNbsp = pos => {\n      const container = pos.container();\n      return isText$a(container) && contains$1(container.data, nbsp);\n    };\n    const normalizeNbspMiddle = text => {\n      const chars = text.split('');\n      return map$3(chars, (chr, i) => {\n        if (isNbsp(chr) && i > 0 && i < chars.length - 1 && isContent(chars[i - 1]) && isContent(chars[i + 1])) {\n          return ' ';\n        } else {\n          return chr;\n        }\n      }).join('');\n    };\n    const normalizeNbspAtStart = (root, node, makeNbsp, schema) => {\n      const text = node.data;\n      const firstPos = CaretPosition(node, 0);\n      if (!makeNbsp && isNbspAt(text, 0) && !needsToBeNbsp(root, firstPos, schema)) {\n        node.data = ' ' + text.slice(1);\n        return true;\n      } else if (makeNbsp && isWhiteSpaceAt(text, 0) && needsToBeNbspLeft(root, firstPos, schema)) {\n        node.data = nbsp + text.slice(1);\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const normalizeNbspInMiddleOfTextNode = node => {\n      const text = node.data;\n      const newText = normalizeNbspMiddle(text);\n      if (newText !== text) {\n        node.data = newText;\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const normalizeNbspAtEnd = (root, node, makeNbsp, schema) => {\n      const text = node.data;\n      const lastPos = CaretPosition(node, text.length - 1);\n      if (!makeNbsp && isNbspAt(text, text.length - 1) && !needsToBeNbsp(root, lastPos, schema)) {\n        node.data = text.slice(0, -1) + ' ';\n        return true;\n      } else if (makeNbsp && isWhiteSpaceAt(text, text.length - 1) && needsToBeNbspRight(root, lastPos, schema)) {\n        node.data = text.slice(0, -1) + nbsp;\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const normalizeNbsps = (root, pos, schema) => {\n      const container = pos.container();\n      if (!isText$a(container)) {\n        return Optional.none();\n      }\n      if (hasNbsp(pos)) {\n        const normalized = normalizeNbspAtStart(root, container, false, schema) || normalizeNbspInMiddleOfTextNode(container) || normalizeNbspAtEnd(root, container, false, schema);\n        return someIf(normalized, pos);\n      } else if (needsToBeNbsp(root, pos, schema)) {\n        const normalized = normalizeNbspAtStart(root, container, true, schema) || normalizeNbspAtEnd(root, container, true, schema);\n        return someIf(normalized, pos);\n      } else {\n        return Optional.none();\n      }\n    };\n    const normalizeNbspsInEditor = editor => {\n      const root = SugarElement.fromDom(editor.getBody());\n      if (editor.selection.isCollapsed()) {\n        normalizeNbsps(root, CaretPosition.fromRangeStart(editor.selection.getRng()), editor.schema).each(pos => {\n          editor.selection.setRng(pos.toRange());\n        });\n      }\n    };\n\n    const normalize$1 = (node, offset, count, schema) => {\n      if (count === 0) {\n        return;\n      }\n      const elm = SugarElement.fromDom(node);\n      const root = ancestor$4(elm, el => schema.isBlock(name(el))).getOr(elm);\n      const whitespace = node.data.slice(offset, offset + count);\n      const isEndOfContent = offset + count >= node.data.length && needsToBeNbspRight(root, CaretPosition(node, node.data.length), schema);\n      const isStartOfContent = offset === 0 && needsToBeNbspLeft(root, CaretPosition(node, 0), schema);\n      node.replaceData(offset, count, normalize$4(whitespace, 4, isStartOfContent, isEndOfContent));\n    };\n    const normalizeWhitespaceAfter = (node, offset, schema) => {\n      const content = node.data.slice(offset);\n      const whitespaceCount = content.length - lTrim(content).length;\n      normalize$1(node, offset, whitespaceCount, schema);\n    };\n    const normalizeWhitespaceBefore = (node, offset, schema) => {\n      const content = node.data.slice(0, offset);\n      const whitespaceCount = content.length - rTrim(content).length;\n      normalize$1(node, offset - whitespaceCount, whitespaceCount, schema);\n    };\n    const mergeTextNodes = (prevNode, nextNode, schema, normalizeWhitespace, mergeToPrev = true) => {\n      const whitespaceOffset = rTrim(prevNode.data).length;\n      const newNode = mergeToPrev ? prevNode : nextNode;\n      const removeNode = mergeToPrev ? nextNode : prevNode;\n      if (mergeToPrev) {\n        newNode.appendData(removeNode.data);\n      } else {\n        newNode.insertData(0, removeNode.data);\n      }\n      remove$5(SugarElement.fromDom(removeNode));\n      if (normalizeWhitespace) {\n        normalizeWhitespaceAfter(newNode, whitespaceOffset, schema);\n      }\n      return newNode;\n    };\n\n    const needsReposition = (pos, elm) => {\n      const container = pos.container();\n      const offset = pos.offset();\n      return !CaretPosition.isTextPosition(pos) && container === elm.parentNode && offset > CaretPosition.before(elm).offset();\n    };\n    const reposition = (elm, pos) => needsReposition(pos, elm) ? CaretPosition(pos.container(), pos.offset() - 1) : pos;\n    const beforeOrStartOf = node => isText$a(node) ? CaretPosition(node, 0) : CaretPosition.before(node);\n    const afterOrEndOf = node => isText$a(node) ? CaretPosition(node, node.data.length) : CaretPosition.after(node);\n    const getPreviousSiblingCaretPosition = elm => {\n      if (isCaretCandidate$3(elm.previousSibling)) {\n        return Optional.some(afterOrEndOf(elm.previousSibling));\n      } else {\n        return elm.previousSibling ? lastPositionIn(elm.previousSibling) : Optional.none();\n      }\n    };\n    const getNextSiblingCaretPosition = elm => {\n      if (isCaretCandidate$3(elm.nextSibling)) {\n        return Optional.some(beforeOrStartOf(elm.nextSibling));\n      } else {\n        return elm.nextSibling ? firstPositionIn(elm.nextSibling) : Optional.none();\n      }\n    };\n    const findCaretPositionBackwardsFromElm = (rootElement, elm) => {\n      return Optional.from(elm.previousSibling ? elm.previousSibling : elm.parentNode).bind(node => prevPosition(rootElement, CaretPosition.before(node))).orThunk(() => nextPosition(rootElement, CaretPosition.after(elm)));\n    };\n    const findCaretPositionForwardsFromElm = (rootElement, elm) => nextPosition(rootElement, CaretPosition.after(elm)).orThunk(() => prevPosition(rootElement, CaretPosition.before(elm)));\n    const findCaretPositionBackwards = (rootElement, elm) => getPreviousSiblingCaretPosition(elm).orThunk(() => getNextSiblingCaretPosition(elm)).orThunk(() => findCaretPositionBackwardsFromElm(rootElement, elm));\n    const findCaretPositionForward = (rootElement, elm) => getNextSiblingCaretPosition(elm).orThunk(() => getPreviousSiblingCaretPosition(elm)).orThunk(() => findCaretPositionForwardsFromElm(rootElement, elm));\n    const findCaretPosition = (forward, rootElement, elm) => forward ? findCaretPositionForward(rootElement, elm) : findCaretPositionBackwards(rootElement, elm);\n    const findCaretPosOutsideElmAfterDelete = (forward, rootElement, elm) => findCaretPosition(forward, rootElement, elm).map(curry(reposition, elm));\n    const setSelection$1 = (editor, forward, pos) => {\n      pos.fold(() => {\n        editor.focus();\n      }, pos => {\n        editor.selection.setRng(pos.toRange(), forward);\n      });\n    };\n    const eqRawNode = rawNode => elm => elm.dom === rawNode;\n    const isBlock = (editor, elm) => elm && has$2(editor.schema.getBlockElements(), name(elm));\n    const paddEmptyBlock = (elm, preserveEmptyCaret) => {\n      if (isEmpty$2(elm)) {\n        const br = SugarElement.fromHtml('<br data-mce-bogus=\"1\">');\n        if (preserveEmptyCaret) {\n          each$e(children$1(elm), node => {\n            if (!isEmptyCaretFormatElement(node)) {\n              remove$5(node);\n            }\n          });\n        } else {\n          empty(elm);\n        }\n        append$1(elm, br);\n        return Optional.some(CaretPosition.before(br.dom));\n      } else {\n        return Optional.none();\n      }\n    };\n    const deleteNormalized = (elm, afterDeletePosOpt, schema, normalizeWhitespace) => {\n      const prevTextOpt = prevSibling(elm).filter(isText$b);\n      const nextTextOpt = nextSibling(elm).filter(isText$b);\n      remove$5(elm);\n      return lift3(prevTextOpt, nextTextOpt, afterDeletePosOpt, (prev, next, pos) => {\n        const prevNode = prev.dom, nextNode = next.dom;\n        const offset = prevNode.data.length;\n        mergeTextNodes(prevNode, nextNode, schema, normalizeWhitespace);\n        return pos.container() === nextNode ? CaretPosition(prevNode, offset) : pos;\n      }).orThunk(() => {\n        if (normalizeWhitespace) {\n          prevTextOpt.each(elm => normalizeWhitespaceBefore(elm.dom, elm.dom.length, schema));\n          nextTextOpt.each(elm => normalizeWhitespaceAfter(elm.dom, 0, schema));\n        }\n        return afterDeletePosOpt;\n      });\n    };\n    const isInlineElement = (editor, element) => has$2(editor.schema.getTextInlineElements(), name(element));\n    const deleteElement$2 = (editor, forward, elm, moveCaret = true, preserveEmptyCaret = false) => {\n      const afterDeletePos = findCaretPosOutsideElmAfterDelete(forward, editor.getBody(), elm.dom);\n      const parentBlock = ancestor$4(elm, curry(isBlock, editor), eqRawNode(editor.getBody()));\n      const normalizedAfterDeletePos = deleteNormalized(elm, afterDeletePos, editor.schema, isInlineElement(editor, elm));\n      if (editor.dom.isEmpty(editor.getBody())) {\n        editor.setContent('');\n        editor.selection.setCursorLocation();\n      } else {\n        parentBlock.bind(elm => paddEmptyBlock(elm, preserveEmptyCaret)).fold(() => {\n          if (moveCaret) {\n            setSelection$1(editor, forward, normalizedAfterDeletePos);\n          }\n        }, paddPos => {\n          if (moveCaret) {\n            setSelection$1(editor, forward, Optional.some(paddPos));\n          }\n        });\n      }\n    };\n\n    const strongRtl = /[\\u0591-\\u07FF\\uFB1D-\\uFDFF\\uFE70-\\uFEFC]/;\n    const hasStrongRtl = text => strongRtl.test(text);\n\n    const isInlineTarget = (editor, elm) => is$1(SugarElement.fromDom(elm), getInlineBoundarySelector(editor)) && !isTransparentBlock(editor.schema, elm) && editor.dom.isEditable(elm);\n    const isRtl = element => {\n      var _a;\n      return DOMUtils.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl((_a = element.textContent) !== null && _a !== void 0 ? _a : '');\n    };\n    const findInlineParents = (isInlineTarget, rootNode, pos) => filter$5(DOMUtils.DOM.getParents(pos.container(), '*', rootNode), isInlineTarget);\n    const findRootInline = (isInlineTarget, rootNode, pos) => {\n      const parents = findInlineParents(isInlineTarget, rootNode, pos);\n      return Optional.from(parents[parents.length - 1]);\n    };\n    const hasSameParentBlock = (rootNode, node1, node2) => {\n      const block1 = getParentBlock$3(node1, rootNode);\n      const block2 = getParentBlock$3(node2, rootNode);\n      return isNonNullable(block1) && block1 === block2;\n    };\n    const isAtZwsp = pos => isBeforeInline(pos) || isAfterInline(pos);\n    const normalizePosition = (forward, pos) => {\n      const container = pos.container(), offset = pos.offset();\n      if (forward) {\n        if (isCaretContainerInline(container)) {\n          if (isText$a(container.nextSibling)) {\n            return CaretPosition(container.nextSibling, 0);\n          } else {\n            return CaretPosition.after(container);\n          }\n        } else {\n          return isBeforeInline(pos) ? CaretPosition(container, offset + 1) : pos;\n        }\n      } else {\n        if (isCaretContainerInline(container)) {\n          if (isText$a(container.previousSibling)) {\n            return CaretPosition(container.previousSibling, container.previousSibling.data.length);\n          } else {\n            return CaretPosition.before(container);\n          }\n        } else {\n          return isAfterInline(pos) ? CaretPosition(container, offset - 1) : pos;\n        }\n      }\n    };\n    const normalizeForwards = curry(normalizePosition, true);\n    const normalizeBackwards = curry(normalizePosition, false);\n\n    const execCommandIgnoreInputEvents = (editor, command) => {\n      const inputBlocker = e => e.stopImmediatePropagation();\n      editor.on('beforeinput input', inputBlocker, true);\n      editor.getDoc().execCommand(command);\n      editor.off('beforeinput input', inputBlocker);\n    };\n    const execEditorDeleteCommand = editor => {\n      editor.execCommand('delete');\n    };\n    const execNativeDeleteCommand = editor => execCommandIgnoreInputEvents(editor, 'Delete');\n    const execNativeForwardDeleteCommand = editor => execCommandIgnoreInputEvents(editor, 'ForwardDelete');\n    const isBeforeRoot = rootNode => elm => is$2(parent(elm), rootNode, eq);\n    const isTextBlockOrListItem = element => isTextBlock$2(element) || isListItem$1(element);\n    const getParentBlock$2 = (rootNode, elm) => {\n      if (contains(rootNode, elm)) {\n        return closest$4(elm, isTextBlockOrListItem, isBeforeRoot(rootNode));\n      } else {\n        return Optional.none();\n      }\n    };\n    const paddEmptyBody = (editor, moveSelection = true) => {\n      if (editor.dom.isEmpty(editor.getBody())) {\n        editor.setContent('', { no_selection: !moveSelection });\n      }\n    };\n    const willDeleteLastPositionInElement = (forward, fromPos, elm) => lift2(firstPositionIn(elm), lastPositionIn(elm), (firstPos, lastPos) => {\n      const normalizedFirstPos = normalizePosition(true, firstPos);\n      const normalizedLastPos = normalizePosition(false, lastPos);\n      const normalizedFromPos = normalizePosition(false, fromPos);\n      if (forward) {\n        return nextPosition(elm, normalizedFromPos).exists(nextPos => nextPos.isEqual(normalizedLastPos) && fromPos.isEqual(normalizedFirstPos));\n      } else {\n        return prevPosition(elm, normalizedFromPos).exists(prevPos => prevPos.isEqual(normalizedFirstPos) && fromPos.isEqual(normalizedLastPos));\n      }\n    }).getOr(true);\n    const freefallRtl = root => {\n      const child = isComment$1(root) ? prevSibling(root) : lastChild(root);\n      return child.bind(freefallRtl).orThunk(() => Optional.some(root));\n    };\n    const deleteRangeContents = (editor, rng, root, moveSelection = true) => {\n      var _a;\n      rng.deleteContents();\n      const lastNode = freefallRtl(root).getOr(root);\n      const lastBlock = SugarElement.fromDom((_a = editor.dom.getParent(lastNode.dom, editor.dom.isBlock)) !== null && _a !== void 0 ? _a : root.dom);\n      if (lastBlock.dom === editor.getBody()) {\n        paddEmptyBody(editor, moveSelection);\n      } else if (isEmpty$2(lastBlock)) {\n        fillWithPaddingBr(lastBlock);\n        if (moveSelection) {\n          editor.selection.setCursorLocation(lastBlock.dom, 0);\n        }\n      }\n      if (!eq(root, lastBlock)) {\n        const additionalCleanupNodes = is$2(parent(lastBlock), root) ? [] : siblings(lastBlock);\n        each$e(additionalCleanupNodes.concat(children$1(root)), node => {\n          if (!eq(node, lastBlock) && !contains(node, lastBlock) && isEmpty$2(node)) {\n            remove$5(node);\n          }\n        });\n      }\n    };\n\n    const ancestor$1 = (scope, predicate, isRoot) => ancestor$4(scope, predicate, isRoot).isSome();\n    const sibling = (scope, predicate) => sibling$1(scope, predicate).isSome();\n    const descendant = (scope, predicate) => descendant$2(scope, predicate).isSome();\n\n    const isRootFromElement = root => cur => eq(root, cur);\n    const getTableCells = table => descendants(table, 'td,th');\n    const getTable$1 = (node, isRoot) => getClosestTable(SugarElement.fromDom(node), isRoot);\n    const selectionInTableWithNestedTable = details => {\n      return lift2(details.startTable, details.endTable, (startTable, endTable) => {\n        const isStartTableParentOfEndTable = descendant(startTable, t => eq(t, endTable));\n        const isEndTableParentOfStartTable = descendant(endTable, t => eq(t, startTable));\n        return !isStartTableParentOfEndTable && !isEndTableParentOfStartTable ? details : {\n          ...details,\n          startTable: isStartTableParentOfEndTable ? Optional.none() : details.startTable,\n          endTable: isEndTableParentOfStartTable ? Optional.none() : details.endTable,\n          isSameTable: false,\n          isMultiTable: false\n        };\n      }).getOr(details);\n    };\n    const adjustQuirksInDetails = details => {\n      return selectionInTableWithNestedTable(details);\n    };\n    const getTableDetailsFromRange = (rng, isRoot) => {\n      const startTable = getTable$1(rng.startContainer, isRoot);\n      const endTable = getTable$1(rng.endContainer, isRoot);\n      const isStartInTable = startTable.isSome();\n      const isEndInTable = endTable.isSome();\n      const isSameTable = lift2(startTable, endTable, eq).getOr(false);\n      const isMultiTable = !isSameTable && isStartInTable && isEndInTable;\n      return adjustQuirksInDetails({\n        startTable,\n        endTable,\n        isStartInTable,\n        isEndInTable,\n        isSameTable,\n        isMultiTable\n      });\n    };\n\n    const tableCellRng = (start, end) => ({\n      start,\n      end\n    });\n    const tableSelection = (rng, table, cells) => ({\n      rng,\n      table,\n      cells\n    });\n    const deleteAction = Adt.generate([\n      {\n        singleCellTable: [\n          'rng',\n          'cell'\n        ]\n      },\n      { fullTable: ['table'] },\n      {\n        partialTable: [\n          'cells',\n          'outsideDetails'\n        ]\n      },\n      {\n        multiTable: [\n          'startTableCells',\n          'endTableCells',\n          'betweenRng'\n        ]\n      }\n    ]);\n    const getClosestCell$1 = (container, isRoot) => closest$3(SugarElement.fromDom(container), 'td,th', isRoot);\n    const isExpandedCellRng = cellRng => !eq(cellRng.start, cellRng.end);\n    const getTableFromCellRng = (cellRng, isRoot) => getClosestTable(cellRng.start, isRoot).bind(startParentTable => getClosestTable(cellRng.end, isRoot).bind(endParentTable => someIf(eq(startParentTable, endParentTable), startParentTable)));\n    const isSingleCellTable = (cellRng, isRoot) => !isExpandedCellRng(cellRng) && getTableFromCellRng(cellRng, isRoot).exists(table => {\n      const rows = table.dom.rows;\n      return rows.length === 1 && rows[0].cells.length === 1;\n    });\n    const getCellRng = (rng, isRoot) => {\n      const startCell = getClosestCell$1(rng.startContainer, isRoot);\n      const endCell = getClosestCell$1(rng.endContainer, isRoot);\n      return lift2(startCell, endCell, tableCellRng);\n    };\n    const getCellRangeFromStartTable = isRoot => startCell => getClosestTable(startCell, isRoot).bind(table => last$3(getTableCells(table)).map(endCell => tableCellRng(startCell, endCell)));\n    const getCellRangeFromEndTable = isRoot => endCell => getClosestTable(endCell, isRoot).bind(table => head(getTableCells(table)).map(startCell => tableCellRng(startCell, endCell)));\n    const getTableSelectionFromCellRng = isRoot => cellRng => getTableFromCellRng(cellRng, isRoot).map(table => tableSelection(cellRng, table, getTableCells(table)));\n    const getTableSelections = (cellRng, selectionDetails, rng, isRoot) => {\n      if (rng.collapsed || !cellRng.forall(isExpandedCellRng)) {\n        return Optional.none();\n      } else if (selectionDetails.isSameTable) {\n        const sameTableSelection = cellRng.bind(getTableSelectionFromCellRng(isRoot));\n        return Optional.some({\n          start: sameTableSelection,\n          end: sameTableSelection\n        });\n      } else {\n        const startCell = getClosestCell$1(rng.startContainer, isRoot);\n        const endCell = getClosestCell$1(rng.endContainer, isRoot);\n        const startTableSelection = startCell.bind(getCellRangeFromStartTable(isRoot)).bind(getTableSelectionFromCellRng(isRoot));\n        const endTableSelection = endCell.bind(getCellRangeFromEndTable(isRoot)).bind(getTableSelectionFromCellRng(isRoot));\n        return Optional.some({\n          start: startTableSelection,\n          end: endTableSelection\n        });\n      }\n    };\n    const getCellIndex = (cells, cell) => findIndex$2(cells, x => eq(x, cell));\n    const getSelectedCells = tableSelection => lift2(getCellIndex(tableSelection.cells, tableSelection.rng.start), getCellIndex(tableSelection.cells, tableSelection.rng.end), (startIndex, endIndex) => tableSelection.cells.slice(startIndex, endIndex + 1));\n    const isSingleCellTableContentSelected = (optCellRng, rng, isRoot) => optCellRng.exists(cellRng => isSingleCellTable(cellRng, isRoot) && hasAllContentsSelected(cellRng.start, rng));\n    const unselectCells = (rng, selectionDetails) => {\n      const {startTable, endTable} = selectionDetails;\n      const otherContentRng = rng.cloneRange();\n      startTable.each(table => otherContentRng.setStartAfter(table.dom));\n      endTable.each(table => otherContentRng.setEndBefore(table.dom));\n      return otherContentRng;\n    };\n    const handleSingleTable = (cellRng, selectionDetails, rng, isRoot) => getTableSelections(cellRng, selectionDetails, rng, isRoot).bind(({start, end}) => start.or(end)).bind(tableSelection => {\n      const {isSameTable} = selectionDetails;\n      const selectedCells = getSelectedCells(tableSelection).getOr([]);\n      if (isSameTable && tableSelection.cells.length === selectedCells.length) {\n        return Optional.some(deleteAction.fullTable(tableSelection.table));\n      } else if (selectedCells.length > 0) {\n        if (isSameTable) {\n          return Optional.some(deleteAction.partialTable(selectedCells, Optional.none()));\n        } else {\n          const otherContentRng = unselectCells(rng, selectionDetails);\n          return Optional.some(deleteAction.partialTable(selectedCells, Optional.some({\n            ...selectionDetails,\n            rng: otherContentRng\n          })));\n        }\n      } else {\n        return Optional.none();\n      }\n    });\n    const handleMultiTable = (cellRng, selectionDetails, rng, isRoot) => getTableSelections(cellRng, selectionDetails, rng, isRoot).bind(({start, end}) => {\n      const startTableSelectedCells = start.bind(getSelectedCells).getOr([]);\n      const endTableSelectedCells = end.bind(getSelectedCells).getOr([]);\n      if (startTableSelectedCells.length > 0 && endTableSelectedCells.length > 0) {\n        const otherContentRng = unselectCells(rng, selectionDetails);\n        return Optional.some(deleteAction.multiTable(startTableSelectedCells, endTableSelectedCells, otherContentRng));\n      } else {\n        return Optional.none();\n      }\n    });\n    const getActionFromRange = (root, rng) => {\n      const isRoot = isRootFromElement(root);\n      const optCellRng = getCellRng(rng, isRoot);\n      const selectionDetails = getTableDetailsFromRange(rng, isRoot);\n      if (isSingleCellTableContentSelected(optCellRng, rng, isRoot)) {\n        return optCellRng.map(cellRng => deleteAction.singleCellTable(rng, cellRng.start));\n      } else if (selectionDetails.isMultiTable) {\n        return handleMultiTable(optCellRng, selectionDetails, rng, isRoot);\n      } else {\n        return handleSingleTable(optCellRng, selectionDetails, rng, isRoot);\n      }\n    };\n\n    const cleanCells = cells => each$e(cells, cell => {\n      remove$a(cell, 'contenteditable');\n      fillWithPaddingBr(cell);\n    });\n    const getOutsideBlock = (editor, container) => Optional.from(editor.dom.getParent(container, editor.dom.isBlock)).map(SugarElement.fromDom);\n    const handleEmptyBlock = (editor, startInTable, emptyBlock) => {\n      emptyBlock.each(block => {\n        if (startInTable) {\n          remove$5(block);\n        } else {\n          fillWithPaddingBr(block);\n          editor.selection.setCursorLocation(block.dom, 0);\n        }\n      });\n    };\n    const deleteContentInsideCell = (editor, cell, rng, isFirstCellInSelection) => {\n      const insideTableRng = rng.cloneRange();\n      if (isFirstCellInSelection) {\n        insideTableRng.setStart(rng.startContainer, rng.startOffset);\n        insideTableRng.setEndAfter(cell.dom.lastChild);\n      } else {\n        insideTableRng.setStartBefore(cell.dom.firstChild);\n        insideTableRng.setEnd(rng.endContainer, rng.endOffset);\n      }\n      deleteCellContents(editor, insideTableRng, cell, false).each(action => action());\n    };\n    const collapseAndRestoreCellSelection = editor => {\n      const selectedCells = getCellsFromEditor(editor);\n      const selectedNode = SugarElement.fromDom(editor.selection.getNode());\n      if (isTableCell$3(selectedNode.dom) && isEmpty$2(selectedNode)) {\n        editor.selection.setCursorLocation(selectedNode.dom, 0);\n      } else {\n        editor.selection.collapse(true);\n      }\n      if (selectedCells.length > 1 && exists(selectedCells, cell => eq(cell, selectedNode))) {\n        set$3(selectedNode, 'data-mce-selected', '1');\n      }\n    };\n    const emptySingleTableCells = (editor, cells, outsideDetails) => Optional.some(() => {\n      const editorRng = editor.selection.getRng();\n      const cellsToClean = outsideDetails.bind(({rng, isStartInTable}) => {\n        const outsideBlock = getOutsideBlock(editor, isStartInTable ? rng.endContainer : rng.startContainer);\n        rng.deleteContents();\n        handleEmptyBlock(editor, isStartInTable, outsideBlock.filter(isEmpty$2));\n        const endPointCell = isStartInTable ? cells[0] : cells[cells.length - 1];\n        deleteContentInsideCell(editor, endPointCell, editorRng, isStartInTable);\n        if (!isEmpty$2(endPointCell)) {\n          return Optional.some(isStartInTable ? cells.slice(1) : cells.slice(0, -1));\n        } else {\n          return Optional.none();\n        }\n      }).getOr(cells);\n      cleanCells(cellsToClean);\n      collapseAndRestoreCellSelection(editor);\n    });\n    const emptyMultiTableCells = (editor, startTableCells, endTableCells, betweenRng) => Optional.some(() => {\n      const rng = editor.selection.getRng();\n      const startCell = startTableCells[0];\n      const endCell = endTableCells[endTableCells.length - 1];\n      deleteContentInsideCell(editor, startCell, rng, true);\n      deleteContentInsideCell(editor, endCell, rng, false);\n      const startTableCellsToClean = isEmpty$2(startCell) ? startTableCells : startTableCells.slice(1);\n      const endTableCellsToClean = isEmpty$2(endCell) ? endTableCells : endTableCells.slice(0, -1);\n      cleanCells(startTableCellsToClean.concat(endTableCellsToClean));\n      betweenRng.deleteContents();\n      collapseAndRestoreCellSelection(editor);\n    });\n    const deleteCellContents = (editor, rng, cell, moveSelection = true) => Optional.some(() => {\n      deleteRangeContents(editor, rng, cell, moveSelection);\n    });\n    const deleteTableElement = (editor, table) => Optional.some(() => deleteElement$2(editor, false, table));\n    const deleteCellRange = (editor, rootElm, rng) => getActionFromRange(rootElm, rng).bind(action => action.fold(curry(deleteCellContents, editor), curry(deleteTableElement, editor), curry(emptySingleTableCells, editor), curry(emptyMultiTableCells, editor)));\n    const deleteCaptionRange = (editor, caption) => emptyElement(editor, caption);\n    const deleteTableRange = (editor, rootElm, rng, startElm) => getParentCaption(rootElm, startElm).fold(() => deleteCellRange(editor, rootElm, rng), caption => deleteCaptionRange(editor, caption));\n    const deleteRange$3 = (editor, startElm, selectedCells) => {\n      const rootNode = SugarElement.fromDom(editor.getBody());\n      const rng = editor.selection.getRng();\n      return selectedCells.length !== 0 ? emptySingleTableCells(editor, selectedCells, Optional.none()) : deleteTableRange(editor, rootNode, rng, startElm);\n    };\n    const getParentCell = (rootElm, elm) => find$2(parentsAndSelf(elm, rootElm), isTableCell$2);\n    const getParentCaption = (rootElm, elm) => find$2(parentsAndSelf(elm, rootElm), isTag('caption'));\n    const deleteBetweenCells = (editor, rootElm, forward, fromCell, from) => navigate(forward, editor.getBody(), from).bind(to => getParentCell(rootElm, SugarElement.fromDom(to.getNode())).bind(toCell => eq(toCell, fromCell) ? Optional.none() : Optional.some(noop)));\n    const emptyElement = (editor, elm) => Optional.some(() => {\n      fillWithPaddingBr(elm);\n      editor.selection.setCursorLocation(elm.dom, 0);\n    });\n    const isDeleteOfLastCharPos = (fromCaption, forward, from, to) => firstPositionIn(fromCaption.dom).bind(first => lastPositionIn(fromCaption.dom).map(last => forward ? from.isEqual(first) && to.isEqual(last) : from.isEqual(last) && to.isEqual(first))).getOr(true);\n    const emptyCaretCaption = (editor, elm) => emptyElement(editor, elm);\n    const validateCaretCaption = (rootElm, fromCaption, to) => getParentCaption(rootElm, SugarElement.fromDom(to.getNode())).fold(() => Optional.some(noop), toCaption => someIf(!eq(toCaption, fromCaption), noop));\n    const deleteCaretInsideCaption = (editor, rootElm, forward, fromCaption, from) => navigate(forward, editor.getBody(), from).fold(() => Optional.some(noop), to => isDeleteOfLastCharPos(fromCaption, forward, from, to) ? emptyCaretCaption(editor, fromCaption) : validateCaretCaption(rootElm, fromCaption, to));\n    const deleteCaretCells = (editor, forward, rootElm, startElm) => {\n      const from = CaretPosition.fromRangeStart(editor.selection.getRng());\n      return getParentCell(rootElm, startElm).bind(fromCell => isEmpty$2(fromCell) ? emptyElement(editor, fromCell) : deleteBetweenCells(editor, rootElm, forward, fromCell, from));\n    };\n    const deleteCaretCaption = (editor, forward, rootElm, fromCaption) => {\n      const from = CaretPosition.fromRangeStart(editor.selection.getRng());\n      return isEmpty$2(fromCaption) ? emptyElement(editor, fromCaption) : deleteCaretInsideCaption(editor, rootElm, forward, fromCaption, from);\n    };\n    const isNearTable = (forward, pos) => forward ? isBeforeTable(pos) : isAfterTable(pos);\n    const isBeforeOrAfterTable = (editor, forward) => {\n      const fromPos = CaretPosition.fromRangeStart(editor.selection.getRng());\n      return isNearTable(forward, fromPos) || fromPosition(forward, editor.getBody(), fromPos).exists(pos => isNearTable(forward, pos));\n    };\n    const deleteCaret$3 = (editor, forward, startElm) => {\n      const rootElm = SugarElement.fromDom(editor.getBody());\n      return getParentCaption(rootElm, startElm).fold(() => deleteCaretCells(editor, forward, rootElm, startElm).orThunk(() => someIf(isBeforeOrAfterTable(editor, forward), noop)), fromCaption => deleteCaretCaption(editor, forward, rootElm, fromCaption));\n    };\n    const backspaceDelete$a = (editor, forward) => {\n      const startElm = SugarElement.fromDom(editor.selection.getStart(true));\n      const cells = getCellsFromEditor(editor);\n      return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret$3(editor, forward, startElm) : deleteRange$3(editor, startElm, cells);\n    };\n\n    const getContentEditableRoot$1 = (root, node) => {\n      let tempNode = node;\n      while (tempNode && tempNode !== root) {\n        if (isContentEditableTrue$3(tempNode) || isContentEditableFalse$b(tempNode)) {\n          return tempNode;\n        }\n        tempNode = tempNode.parentNode;\n      }\n      return null;\n    };\n\n    const internalAttributesPrefixes = [\n      'data-ephox-',\n      'data-mce-',\n      'data-alloy-',\n      'data-snooker-',\n      '_'\n    ];\n    const each$9 = Tools.each;\n    const ElementUtils = editor => {\n      const dom = editor.dom;\n      const internalAttributes = new Set(editor.serializer.getTempAttrs());\n      const compare = (node1, node2) => {\n        if (node1.nodeName !== node2.nodeName || node1.nodeType !== node2.nodeType) {\n          return false;\n        }\n        const getAttribs = node => {\n          const attribs = {};\n          each$9(dom.getAttribs(node), attr => {\n            const name = attr.nodeName.toLowerCase();\n            if (name !== 'style' && !isAttributeInternal(name)) {\n              attribs[name] = dom.getAttrib(node, name);\n            }\n          });\n          return attribs;\n        };\n        const compareObjects = (obj1, obj2) => {\n          for (const name in obj1) {\n            if (has$2(obj1, name)) {\n              const value = obj2[name];\n              if (isUndefined(value)) {\n                return false;\n              }\n              if (obj1[name] !== value) {\n                return false;\n              }\n              delete obj2[name];\n            }\n          }\n          for (const name in obj2) {\n            if (has$2(obj2, name)) {\n              return false;\n            }\n          }\n          return true;\n        };\n        if (isElement$6(node1) && isElement$6(node2)) {\n          if (!compareObjects(getAttribs(node1), getAttribs(node2))) {\n            return false;\n          }\n          if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) {\n            return false;\n          }\n        }\n        return !isBookmarkNode$1(node1) && !isBookmarkNode$1(node2);\n      };\n      const isAttributeInternal = attributeName => exists(internalAttributesPrefixes, value => startsWith(attributeName, value)) || internalAttributes.has(attributeName);\n      return {\n        compare,\n        isAttributeInternal\n      };\n    };\n\n    const isHeading = node => [\n      'h1',\n      'h2',\n      'h3',\n      'h4',\n      'h5',\n      'h6'\n    ].includes(node.name);\n    const isSummary = node => node.name === 'summary';\n\n    const traverse = (root, fn) => {\n      let node = root;\n      while (node = node.walk()) {\n        fn(node);\n      }\n    };\n    const matchNode$1 = (nodeFilters, attributeFilters, node, matches) => {\n      const name = node.name;\n      for (let ni = 0, nl = nodeFilters.length; ni < nl; ni++) {\n        const filter = nodeFilters[ni];\n        if (filter.name === name) {\n          const match = matches.nodes[name];\n          if (match) {\n            match.nodes.push(node);\n          } else {\n            matches.nodes[name] = {\n              filter,\n              nodes: [node]\n            };\n          }\n        }\n      }\n      if (node.attributes) {\n        for (let ai = 0, al = attributeFilters.length; ai < al; ai++) {\n          const filter = attributeFilters[ai];\n          const attrName = filter.name;\n          if (attrName in node.attributes.map) {\n            const match = matches.attributes[attrName];\n            if (match) {\n              match.nodes.push(node);\n            } else {\n              matches.attributes[attrName] = {\n                filter,\n                nodes: [node]\n              };\n            }\n          }\n        }\n      }\n    };\n    const findMatchingNodes = (nodeFilters, attributeFilters, node) => {\n      const matches = {\n        nodes: {},\n        attributes: {}\n      };\n      if (node.firstChild) {\n        traverse(node, childNode => {\n          matchNode$1(nodeFilters, attributeFilters, childNode, matches);\n        });\n      }\n      return matches;\n    };\n    const runFilters = (matches, args) => {\n      const run = (matchRecord, filteringAttributes) => {\n        each$d(matchRecord, match => {\n          const nodes = from(match.nodes);\n          each$e(match.filter.callbacks, callback => {\n            for (let i = nodes.length - 1; i >= 0; i--) {\n              const node = nodes[i];\n              const valueMatches = filteringAttributes ? node.attr(match.filter.name) !== undefined : node.name === match.filter.name;\n              if (!valueMatches || isNullable(node.parent)) {\n                nodes.splice(i, 1);\n              }\n            }\n            if (nodes.length > 0) {\n              callback(nodes, match.filter.name, args);\n            }\n          });\n        });\n      };\n      run(matches.nodes, false);\n      run(matches.attributes, true);\n    };\n    const filter$2 = (nodeFilters, attributeFilters, node, args = {}) => {\n      const matches = findMatchingNodes(nodeFilters, attributeFilters, node);\n      runFilters(matches, args);\n    };\n\n    const paddEmptyNode = (settings, args, isBlock, node) => {\n      const brPreferred = settings.pad_empty_with_br || args.insert;\n      if (brPreferred && isBlock(node)) {\n        const astNode = new AstNode('br', 1);\n        if (args.insert) {\n          astNode.attr('data-mce-bogus', '1');\n        }\n        node.empty().append(astNode);\n      } else {\n        node.empty().append(new AstNode('#text', 3)).value = nbsp;\n      }\n    };\n    const isPaddedWithNbsp = node => {\n      var _a;\n      return hasOnlyChild(node, '#text') && ((_a = node === null || node === void 0 ? void 0 : node.firstChild) === null || _a === void 0 ? void 0 : _a.value) === nbsp;\n    };\n    const hasOnlyChild = (node, name) => {\n      const firstChild = node === null || node === void 0 ? void 0 : node.firstChild;\n      return isNonNullable(firstChild) && firstChild === node.lastChild && firstChild.name === name;\n    };\n    const isPadded = (schema, node) => {\n      const rule = schema.getElementRule(node.name);\n      return (rule === null || rule === void 0 ? void 0 : rule.paddEmpty) === true;\n    };\n    const isEmpty = (schema, nonEmptyElements, whitespaceElements, node) => node.isEmpty(nonEmptyElements, whitespaceElements, node => isPadded(schema, node));\n    const isLineBreakNode = (node, isBlock) => isNonNullable(node) && (isBlock(node) || node.name === 'br');\n    const findClosestEditingHost = scope => {\n      let editableNode;\n      for (let node = scope; node; node = node.parent) {\n        const contentEditable = node.attr('contenteditable');\n        if (contentEditable === 'false') {\n          break;\n        } else if (contentEditable === 'true') {\n          editableNode = node;\n        }\n      }\n      return Optional.from(editableNode);\n    };\n\n    const removeOrUnwrapInvalidNode = (node, schema, originalNodeParent = node.parent) => {\n      if (schema.getSpecialElements()[node.name]) {\n        node.empty().remove();\n      } else {\n        const children = node.children();\n        for (const childNode of children) {\n          if (originalNodeParent && !schema.isValidChild(originalNodeParent.name, childNode.name)) {\n            removeOrUnwrapInvalidNode(childNode, schema, originalNodeParent);\n          }\n        }\n        node.unwrap();\n      }\n    };\n    const cleanInvalidNodes = (nodes, schema, rootNode, onCreate = noop) => {\n      const textBlockElements = schema.getTextBlockElements();\n      const nonEmptyElements = schema.getNonEmptyElements();\n      const whitespaceElements = schema.getWhitespaceElements();\n      const nonSplittableElements = Tools.makeMap('tr,td,th,tbody,thead,tfoot,table,summary');\n      const fixed = new Set();\n      const isSplittableElement = node => node !== rootNode && !nonSplittableElements[node.name];\n      for (let ni = 0; ni < nodes.length; ni++) {\n        const node = nodes[ni];\n        let parent;\n        let newParent;\n        let tempNode;\n        if (!node.parent || fixed.has(node)) {\n          continue;\n        }\n        if (textBlockElements[node.name] && node.parent.name === 'li') {\n          let sibling = node.next;\n          while (sibling) {\n            if (textBlockElements[sibling.name]) {\n              sibling.name = 'li';\n              fixed.add(sibling);\n              node.parent.insert(sibling, node.parent);\n            } else {\n              break;\n            }\n            sibling = sibling.next;\n          }\n          node.unwrap();\n          continue;\n        }\n        const parents = [node];\n        for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && isSplittableElement(parent); parent = parent.parent) {\n          parents.push(parent);\n        }\n        if (parent && parents.length > 1) {\n          if (!isInvalid(schema, node, parent)) {\n            parents.reverse();\n            newParent = parents[0].clone();\n            onCreate(newParent);\n            let currentNode = newParent;\n            for (let i = 0; i < parents.length - 1; i++) {\n              if (schema.isValidChild(currentNode.name, parents[i].name) && i > 0) {\n                tempNode = parents[i].clone();\n                onCreate(tempNode);\n                currentNode.append(tempNode);\n              } else {\n                tempNode = currentNode;\n              }\n              for (let childNode = parents[i].firstChild; childNode && childNode !== parents[i + 1];) {\n                const nextNode = childNode.next;\n                tempNode.append(childNode);\n                childNode = nextNode;\n              }\n              currentNode = tempNode;\n            }\n            if (!isEmpty(schema, nonEmptyElements, whitespaceElements, newParent)) {\n              parent.insert(newParent, parents[0], true);\n              parent.insert(node, newParent);\n            } else {\n              parent.insert(node, parents[0], true);\n            }\n            parent = parents[0];\n            if (isEmpty(schema, nonEmptyElements, whitespaceElements, parent) || hasOnlyChild(parent, 'br')) {\n              parent.empty().remove();\n            }\n          } else {\n            removeOrUnwrapInvalidNode(node, schema);\n          }\n        } else if (node.parent) {\n          if (node.name === 'li') {\n            let sibling = node.prev;\n            if (sibling && (sibling.name === 'ul' || sibling.name === 'ol')) {\n              sibling.append(node);\n              continue;\n            }\n            sibling = node.next;\n            if (sibling && (sibling.name === 'ul' || sibling.name === 'ol') && sibling.firstChild) {\n              sibling.insert(node, sibling.firstChild, true);\n              continue;\n            }\n            const wrapper = new AstNode('ul', 1);\n            onCreate(wrapper);\n            node.wrap(wrapper);\n            continue;\n          }\n          if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {\n            const wrapper = new AstNode('div', 1);\n            onCreate(wrapper);\n            node.wrap(wrapper);\n          } else {\n            removeOrUnwrapInvalidNode(node, schema);\n          }\n        }\n      }\n    };\n    const hasClosest = (node, parentName) => {\n      let tempNode = node;\n      while (tempNode) {\n        if (tempNode.name === parentName) {\n          return true;\n        }\n        tempNode = tempNode.parent;\n      }\n      return false;\n    };\n    const isInvalid = (schema, node, parent = node.parent) => {\n      if (!parent) {\n        return false;\n      }\n      if (schema.children[node.name] && !schema.isValidChild(parent.name, node.name)) {\n        return true;\n      }\n      if (node.name === 'a' && hasClosest(parent, 'a')) {\n        return true;\n      }\n      if (isSummary(parent) && isHeading(node)) {\n        return !((parent === null || parent === void 0 ? void 0 : parent.firstChild) === node && (parent === null || parent === void 0 ? void 0 : parent.lastChild) === node);\n      }\n      return false;\n    };\n\n    const createRange = (sc, so, ec, eo) => {\n      const rng = document.createRange();\n      rng.setStart(sc, so);\n      rng.setEnd(ec, eo);\n      return rng;\n    };\n    const normalizeBlockSelectionRange = rng => {\n      const startPos = CaretPosition.fromRangeStart(rng);\n      const endPos = CaretPosition.fromRangeEnd(rng);\n      const rootNode = rng.commonAncestorContainer;\n      return fromPosition(false, rootNode, endPos).map(newEndPos => {\n        if (!isInSameBlock(startPos, endPos, rootNode) && isInSameBlock(startPos, newEndPos, rootNode)) {\n          return createRange(startPos.container(), startPos.offset(), newEndPos.container(), newEndPos.offset());\n        } else {\n          return rng;\n        }\n      }).getOr(rng);\n    };\n    const normalize = rng => rng.collapsed ? rng : normalizeBlockSelectionRange(rng);\n\n    const hasOnlyOneChild$1 = node => {\n      return isNonNullable(node.firstChild) && node.firstChild === node.lastChild;\n    };\n    const isPaddingNode = node => {\n      return node.name === 'br' || node.value === nbsp;\n    };\n    const isPaddedEmptyBlock = (schema, node) => {\n      const blockElements = schema.getBlockElements();\n      return blockElements[node.name] && hasOnlyOneChild$1(node) && isPaddingNode(node.firstChild);\n    };\n    const isEmptyFragmentElement = (schema, node) => {\n      const nonEmptyElements = schema.getNonEmptyElements();\n      return isNonNullable(node) && (node.isEmpty(nonEmptyElements) || isPaddedEmptyBlock(schema, node));\n    };\n    const isListFragment = (schema, fragment) => {\n      let firstChild = fragment.firstChild;\n      let lastChild = fragment.lastChild;\n      if (firstChild && firstChild.name === 'meta') {\n        firstChild = firstChild.next;\n      }\n      if (lastChild && lastChild.attr('id') === 'mce_marker') {\n        lastChild = lastChild.prev;\n      }\n      if (isEmptyFragmentElement(schema, lastChild)) {\n        lastChild = lastChild === null || lastChild === void 0 ? void 0 : lastChild.prev;\n      }\n      if (!firstChild || firstChild !== lastChild) {\n        return false;\n      }\n      return firstChild.name === 'ul' || firstChild.name === 'ol';\n    };\n    const cleanupDomFragment = domFragment => {\n      var _a, _b;\n      const firstChild = domFragment.firstChild;\n      const lastChild = domFragment.lastChild;\n      if (firstChild && firstChild.nodeName === 'META') {\n        (_a = firstChild.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(firstChild);\n      }\n      if (lastChild && lastChild.id === 'mce_marker') {\n        (_b = lastChild.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(lastChild);\n      }\n      return domFragment;\n    };\n    const toDomFragment = (dom, serializer, fragment) => {\n      const html = serializer.serialize(fragment);\n      const domFragment = dom.createFragment(html);\n      return cleanupDomFragment(domFragment);\n    };\n    const listItems = elm => {\n      var _a;\n      return filter$5((_a = elm === null || elm === void 0 ? void 0 : elm.childNodes) !== null && _a !== void 0 ? _a : [], child => {\n        return child.nodeName === 'LI';\n      });\n    };\n    const isPadding = node => {\n      return node.data === nbsp || isBr$6(node);\n    };\n    const isListItemPadded = node => {\n      return isNonNullable(node === null || node === void 0 ? void 0 : node.firstChild) && node.firstChild === node.lastChild && isPadding(node.firstChild);\n    };\n    const isEmptyOrPadded = elm => {\n      return !elm.firstChild || isListItemPadded(elm);\n    };\n    const trimListItems = elms => {\n      return elms.length > 0 && isEmptyOrPadded(elms[elms.length - 1]) ? elms.slice(0, -1) : elms;\n    };\n    const getParentLi = (dom, node) => {\n      const parentBlock = dom.getParent(node, dom.isBlock);\n      return parentBlock && parentBlock.nodeName === 'LI' ? parentBlock : null;\n    };\n    const isParentBlockLi = (dom, node) => {\n      return !!getParentLi(dom, node);\n    };\n    const getSplit = (parentNode, rng) => {\n      const beforeRng = rng.cloneRange();\n      const afterRng = rng.cloneRange();\n      beforeRng.setStartBefore(parentNode);\n      afterRng.setEndAfter(parentNode);\n      return [\n        beforeRng.cloneContents(),\n        afterRng.cloneContents()\n      ];\n    };\n    const findFirstIn = (node, rootNode) => {\n      const caretPos = CaretPosition.before(node);\n      const caretWalker = CaretWalker(rootNode);\n      const newCaretPos = caretWalker.next(caretPos);\n      return newCaretPos ? newCaretPos.toRange() : null;\n    };\n    const findLastOf = (node, rootNode) => {\n      const caretPos = CaretPosition.after(node);\n      const caretWalker = CaretWalker(rootNode);\n      const newCaretPos = caretWalker.prev(caretPos);\n      return newCaretPos ? newCaretPos.toRange() : null;\n    };\n    const insertMiddle = (target, elms, rootNode, rng) => {\n      const parts = getSplit(target, rng);\n      const parentElm = target.parentNode;\n      if (parentElm) {\n        parentElm.insertBefore(parts[0], target);\n        Tools.each(elms, li => {\n          parentElm.insertBefore(li, target);\n        });\n        parentElm.insertBefore(parts[1], target);\n        parentElm.removeChild(target);\n      }\n      return findLastOf(elms[elms.length - 1], rootNode);\n    };\n    const insertBefore$2 = (target, elms, rootNode) => {\n      const parentElm = target.parentNode;\n      if (parentElm) {\n        Tools.each(elms, elm => {\n          parentElm.insertBefore(elm, target);\n        });\n      }\n      return findFirstIn(target, rootNode);\n    };\n    const insertAfter$2 = (target, elms, rootNode, dom) => {\n      dom.insertAfter(elms.reverse(), target);\n      return findLastOf(elms[0], rootNode);\n    };\n    const insertAtCaret$1 = (serializer, dom, rng, fragment) => {\n      const domFragment = toDomFragment(dom, serializer, fragment);\n      const liTarget = getParentLi(dom, rng.startContainer);\n      const liElms = trimListItems(listItems(domFragment.firstChild));\n      const BEGINNING = 1, END = 2;\n      const rootNode = dom.getRoot();\n      const isAt = location => {\n        const caretPos = CaretPosition.fromRangeStart(rng);\n        const caretWalker = CaretWalker(dom.getRoot());\n        const newPos = location === BEGINNING ? caretWalker.prev(caretPos) : caretWalker.next(caretPos);\n        const newPosNode = newPos === null || newPos === void 0 ? void 0 : newPos.getNode();\n        return newPosNode ? getParentLi(dom, newPosNode) !== liTarget : true;\n      };\n      if (!liTarget) {\n        return null;\n      } else if (isAt(BEGINNING)) {\n        return insertBefore$2(liTarget, liElms, rootNode);\n      } else if (isAt(END)) {\n        return insertAfter$2(liTarget, liElms, rootNode, dom);\n      } else {\n        return insertMiddle(liTarget, liElms, rootNode, rng);\n      }\n    };\n\n    const mergeableWrappedElements = ['pre'];\n    const shouldPasteContentOnly = (dom, fragment, parentNode, root) => {\n      var _a;\n      const firstNode = fragment.firstChild;\n      const lastNode = fragment.lastChild;\n      const last = lastNode.attr('data-mce-type') === 'bookmark' ? lastNode.prev : lastNode;\n      const isPastingSingleElement = firstNode === last;\n      const isWrappedElement = contains$2(mergeableWrappedElements, firstNode.name);\n      if (isPastingSingleElement && isWrappedElement) {\n        const isContentEditable = firstNode.attr('contenteditable') !== 'false';\n        const isPastingInTheSameBlockTag = ((_a = dom.getParent(parentNode, dom.isBlock)) === null || _a === void 0 ? void 0 : _a.nodeName.toLowerCase()) === firstNode.name;\n        const isPastingInContentEditable = Optional.from(getContentEditableRoot$1(root, parentNode)).forall(isContentEditableTrue$3);\n        return isContentEditable && isPastingInTheSameBlockTag && isPastingInContentEditable;\n      } else {\n        return false;\n      }\n    };\n    const isTableCell = isTableCell$3;\n    const isTableCellContentSelected = (dom, rng, cell) => {\n      if (isNonNullable(cell)) {\n        const endCell = dom.getParent(rng.endContainer, isTableCell);\n        return cell === endCell && hasAllContentsSelected(SugarElement.fromDom(cell), rng);\n      } else {\n        return false;\n      }\n    };\n    const validInsertion = (editor, value, parentNode) => {\n      var _a;\n      if (parentNode.getAttribute('data-mce-bogus') === 'all') {\n        (_a = parentNode.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(editor.dom.createFragment(value), parentNode);\n      } else {\n        const node = parentNode.firstChild;\n        const node2 = parentNode.lastChild;\n        if (!node || node === node2 && node.nodeName === 'BR') {\n          editor.dom.setHTML(parentNode, value);\n        } else {\n          editor.selection.setContent(value, { no_events: true });\n        }\n      }\n    };\n    const trimBrsFromTableCell = (dom, elm, schema) => {\n      Optional.from(dom.getParent(elm, 'td,th')).map(SugarElement.fromDom).each(el => trimBlockTrailingBr(el, schema));\n    };\n    const reduceInlineTextElements = (editor, merge) => {\n      const textInlineElements = editor.schema.getTextInlineElements();\n      const dom = editor.dom;\n      if (merge) {\n        const root = editor.getBody();\n        const elementUtils = ElementUtils(editor);\n        Tools.each(dom.select('*[data-mce-fragment]'), node => {\n          const isInline = isNonNullable(textInlineElements[node.nodeName.toLowerCase()]);\n          if (isInline && hasInheritableStyles(dom, node)) {\n            for (let parentNode = node.parentElement; isNonNullable(parentNode) && parentNode !== root; parentNode = parentNode.parentElement) {\n              const styleConflict = hasStyleConflict(dom, node, parentNode);\n              if (styleConflict) {\n                break;\n              }\n              if (elementUtils.compare(parentNode, node)) {\n                dom.remove(node, true);\n                break;\n              }\n            }\n          }\n        });\n      }\n    };\n    const markFragmentElements = fragment => {\n      let node = fragment;\n      while (node = node.walk()) {\n        if (node.type === 1) {\n          node.attr('data-mce-fragment', '1');\n        }\n      }\n    };\n    const unmarkFragmentElements = elm => {\n      Tools.each(elm.getElementsByTagName('*'), elm => {\n        elm.removeAttribute('data-mce-fragment');\n      });\n    };\n    const isPartOfFragment = node => {\n      return !!node.getAttribute('data-mce-fragment');\n    };\n    const canHaveChildren = (editor, node) => {\n      return isNonNullable(node) && !editor.schema.getVoidElements()[node.nodeName];\n    };\n    const moveSelectionToMarker = (editor, marker) => {\n      var _a, _b, _c;\n      let nextRng;\n      const dom = editor.dom;\n      const selection = editor.selection;\n      if (!marker) {\n        return;\n      }\n      selection.scrollIntoView(marker);\n      const parentEditableElm = getContentEditableRoot$1(editor.getBody(), marker);\n      if (parentEditableElm && dom.getContentEditable(parentEditableElm) === 'false') {\n        dom.remove(marker);\n        selection.select(parentEditableElm);\n        return;\n      }\n      let rng = dom.createRng();\n      const node = marker.previousSibling;\n      if (isText$a(node)) {\n        rng.setStart(node, (_b = (_a = node.nodeValue) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0);\n        const node2 = marker.nextSibling;\n        if (isText$a(node2)) {\n          node.appendData(node2.data);\n          (_c = node2.parentNode) === null || _c === void 0 ? void 0 : _c.removeChild(node2);\n        }\n      } else {\n        rng.setStartBefore(marker);\n        rng.setEndBefore(marker);\n      }\n      const findNextCaretRng = rng => {\n        let caretPos = CaretPosition.fromRangeStart(rng);\n        const caretWalker = CaretWalker(editor.getBody());\n        caretPos = caretWalker.next(caretPos);\n        return caretPos === null || caretPos === void 0 ? void 0 : caretPos.toRange();\n      };\n      const parentBlock = dom.getParent(marker, dom.isBlock);\n      dom.remove(marker);\n      if (parentBlock && dom.isEmpty(parentBlock)) {\n        const isCell = isTableCell(parentBlock);\n        empty(SugarElement.fromDom(parentBlock));\n        rng.setStart(parentBlock, 0);\n        rng.setEnd(parentBlock, 0);\n        if (!isCell && !isPartOfFragment(parentBlock) && (nextRng = findNextCaretRng(rng))) {\n          rng = nextRng;\n          dom.remove(parentBlock);\n        } else {\n          dom.add(parentBlock, dom.create('br', isCell ? {} : { 'data-mce-bogus': '1' }));\n        }\n      }\n      selection.setRng(rng);\n    };\n    const deleteSelectedContent = editor => {\n      const dom = editor.dom;\n      const rng = normalize(editor.selection.getRng());\n      editor.selection.setRng(rng);\n      const startCell = dom.getParent(rng.startContainer, isTableCell);\n      if (isTableCellContentSelected(dom, rng, startCell)) {\n        deleteCellContents(editor, rng, SugarElement.fromDom(startCell));\n      } else if (rng.startContainer === rng.endContainer && rng.endOffset - rng.startOffset === 1 && isText$a(rng.startContainer.childNodes[rng.startOffset])) {\n        rng.deleteContents();\n      } else {\n        editor.getDoc().execCommand('Delete', false);\n      }\n    };\n    const findMarkerNode = scope => {\n      for (let markerNode = scope; markerNode; markerNode = markerNode.walk()) {\n        if (markerNode.attr('id') === 'mce_marker') {\n          return Optional.some(markerNode);\n        }\n      }\n      return Optional.none();\n    };\n    const notHeadingsInSummary = (dom, node, fragment) => {\n      var _a;\n      return exists(fragment.children(), isHeading) && ((_a = dom.getParent(node, dom.isBlock)) === null || _a === void 0 ? void 0 : _a.nodeName) === 'SUMMARY';\n    };\n    const insertHtmlAtCaret = (editor, value, details) => {\n      var _a, _b;\n      const selection = editor.selection;\n      const dom = editor.dom;\n      const parser = editor.parser;\n      const merge = details.merge;\n      const serializer = HtmlSerializer({ validate: true }, editor.schema);\n      const bookmarkHtml = '<span id=\"mce_marker\" data-mce-type=\"bookmark\">&#xFEFF;</span>';\n      if (!details.preserve_zwsp) {\n        value = trim$2(value);\n      }\n      if (value.indexOf('{$caret}') === -1) {\n        value += '{$caret}';\n      }\n      value = value.replace(/\\{\\$caret\\}/, bookmarkHtml);\n      let rng = selection.getRng();\n      const caretElement = rng.startContainer;\n      const body = editor.getBody();\n      if (caretElement === body && selection.isCollapsed()) {\n        if (dom.isBlock(body.firstChild) && canHaveChildren(editor, body.firstChild) && dom.isEmpty(body.firstChild)) {\n          rng = dom.createRng();\n          rng.setStart(body.firstChild, 0);\n          rng.setEnd(body.firstChild, 0);\n          selection.setRng(rng);\n        }\n      }\n      if (!selection.isCollapsed()) {\n        deleteSelectedContent(editor);\n      }\n      const parentNode = selection.getNode();\n      const parserArgs = {\n        context: parentNode.nodeName.toLowerCase(),\n        data: details.data,\n        insert: true\n      };\n      const fragment = parser.parse(value, parserArgs);\n      if (details.paste === true && isListFragment(editor.schema, fragment) && isParentBlockLi(dom, parentNode)) {\n        rng = insertAtCaret$1(serializer, dom, selection.getRng(), fragment);\n        if (rng) {\n          selection.setRng(rng);\n        }\n        return value;\n      }\n      if (details.paste === true && shouldPasteContentOnly(dom, fragment, parentNode, editor.getBody())) {\n        (_a = fragment.firstChild) === null || _a === void 0 ? void 0 : _a.unwrap();\n      }\n      markFragmentElements(fragment);\n      let node = fragment.lastChild;\n      if (node && node.attr('id') === 'mce_marker') {\n        const marker = node;\n        for (node = node.prev; node; node = node.walk(true)) {\n          if (node.type === 3 || !dom.isBlock(node.name)) {\n            if (node.parent && editor.schema.isValidChild(node.parent.name, 'span')) {\n              node.parent.insert(marker, node, node.name === 'br');\n            }\n            break;\n          }\n        }\n      }\n      editor._selectionOverrides.showBlockCaretContainer(parentNode);\n      if (!parserArgs.invalid && !notHeadingsInSummary(dom, parentNode, fragment)) {\n        value = serializer.serialize(fragment);\n        validInsertion(editor, value, parentNode);\n      } else {\n        editor.selection.setContent(bookmarkHtml);\n        let parentNode = selection.getNode();\n        let tempNode;\n        const rootNode = editor.getBody();\n        if (isDocument$1(parentNode)) {\n          parentNode = tempNode = rootNode;\n        } else {\n          tempNode = parentNode;\n        }\n        while (tempNode && tempNode !== rootNode) {\n          parentNode = tempNode;\n          tempNode = tempNode.parentNode;\n        }\n        value = parentNode === rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);\n        const root = parser.parse(value);\n        const markerNode = findMarkerNode(root);\n        const editingHost = markerNode.bind(findClosestEditingHost).getOr(root);\n        markerNode.each(marker => marker.replace(fragment));\n        const toExtract = fragment.children();\n        const parent = (_b = fragment.parent) !== null && _b !== void 0 ? _b : root;\n        fragment.unwrap();\n        const invalidChildren = filter$5(toExtract, node => isInvalid(editor.schema, node, parent));\n        cleanInvalidNodes(invalidChildren, editor.schema, editingHost);\n        filter$2(parser.getNodeFilters(), parser.getAttributeFilters(), root);\n        value = serializer.serialize(root);\n        if (parentNode === rootNode) {\n          dom.setHTML(rootNode, value);\n        } else {\n          dom.setOuterHTML(parentNode, value);\n        }\n      }\n      reduceInlineTextElements(editor, merge);\n      moveSelectionToMarker(editor, dom.get('mce_marker'));\n      unmarkFragmentElements(editor.getBody());\n      trimBrsFromTableCell(dom, selection.getStart(), editor.schema);\n      updateCaret(editor.schema, editor.getBody(), selection.getStart());\n      return value;\n    };\n\n    const isTreeNode = content => content instanceof AstNode;\n\n    const moveSelection = editor => {\n      if (hasFocus(editor)) {\n        firstPositionIn(editor.getBody()).each(pos => {\n          const node = pos.getNode();\n          const caretPos = isTable$2(node) ? firstPositionIn(node).getOr(pos) : pos;\n          editor.selection.setRng(caretPos.toRange());\n        });\n      }\n    };\n    const setEditorHtml = (editor, html, noSelection) => {\n      editor.dom.setHTML(editor.getBody(), html);\n      if (noSelection !== true) {\n        moveSelection(editor);\n      }\n    };\n    const setContentString = (editor, body, content, args) => {\n      content = trim$2(content);\n      if (content.length === 0 || /^\\s+$/.test(content)) {\n        const padd = '<br data-mce-bogus=\"1\">';\n        if (body.nodeName === 'TABLE') {\n          content = '<tr><td>' + padd + '</td></tr>';\n        } else if (/^(UL|OL)$/.test(body.nodeName)) {\n          content = '<li>' + padd + '</li>';\n        }\n        const forcedRootBlockName = getForcedRootBlock(editor);\n        if (editor.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) {\n          content = padd;\n          content = editor.dom.createHTML(forcedRootBlockName, getForcedRootBlockAttrs(editor), content);\n        } else if (!content) {\n          content = padd;\n        }\n        setEditorHtml(editor, content, args.no_selection);\n        return {\n          content,\n          html: content\n        };\n      } else {\n        if (args.format !== 'raw') {\n          content = HtmlSerializer({ validate: false }, editor.schema).serialize(editor.parser.parse(content, {\n            isRootContent: true,\n            insert: true\n          }));\n        }\n        const trimmedHtml = isWsPreserveElement(SugarElement.fromDom(body)) ? content : Tools.trim(content);\n        setEditorHtml(editor, trimmedHtml, args.no_selection);\n        return {\n          content: trimmedHtml,\n          html: trimmedHtml\n        };\n      }\n    };\n    const setContentTree = (editor, body, content, args) => {\n      filter$2(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content);\n      const html = HtmlSerializer({ validate: false }, editor.schema).serialize(content);\n      const trimmedHtml = trim$2(isWsPreserveElement(SugarElement.fromDom(body)) ? html : Tools.trim(html));\n      setEditorHtml(editor, trimmedHtml, args.no_selection);\n      return {\n        content,\n        html: trimmedHtml\n      };\n    };\n    const setContentInternal = (editor, content, args) => {\n      return Optional.from(editor.getBody()).map(body => {\n        if (isTreeNode(content)) {\n          return setContentTree(editor, body, content, args);\n        } else {\n          return setContentString(editor, body, content, args);\n        }\n      }).getOr({\n        content,\n        html: isTreeNode(args.content) ? '' : args.content\n      });\n    };\n\n    const ensureIsRoot = isRoot => isFunction(isRoot) ? isRoot : never;\n    const ancestor = (scope, transform, isRoot) => {\n      let element = scope.dom;\n      const stop = ensureIsRoot(isRoot);\n      while (element.parentNode) {\n        element = element.parentNode;\n        const el = SugarElement.fromDom(element);\n        const transformed = transform(el);\n        if (transformed.isSome()) {\n          return transformed;\n        } else if (stop(el)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const closest$1 = (scope, transform, isRoot) => {\n      const current = transform(scope);\n      const stop = ensureIsRoot(isRoot);\n      return current.orThunk(() => stop(scope) ? Optional.none() : ancestor(scope, transform, stop));\n    };\n\n    const isEq$3 = isEq$5;\n    const matchesUnInheritedFormatSelector = (ed, node, name) => {\n      const formatList = ed.formatter.get(name);\n      if (formatList) {\n        for (let i = 0; i < formatList.length; i++) {\n          const format = formatList[i];\n          if (isSelectorFormat(format) && format.inherit === false && ed.dom.is(node, format.selector)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    };\n    const matchParents = (editor, node, name, vars, similar) => {\n      const root = editor.dom.getRoot();\n      if (node === root) {\n        return false;\n      }\n      const matchedNode = editor.dom.getParent(node, elm => {\n        if (matchesUnInheritedFormatSelector(editor, elm, name)) {\n          return true;\n        }\n        return elm.parentNode === root || !!matchNode(editor, elm, name, vars, true);\n      });\n      return !!matchNode(editor, matchedNode, name, vars, similar);\n    };\n    const matchName = (dom, node, format) => {\n      if (isInlineFormat(format) && isEq$3(node, format.inline)) {\n        return true;\n      }\n      if (isBlockFormat(format) && isEq$3(node, format.block)) {\n        return true;\n      }\n      if (isSelectorFormat(format)) {\n        return isElement$6(node) && dom.is(node, format.selector);\n      }\n      return false;\n    };\n    const matchItems = (dom, node, format, itemName, similar, vars) => {\n      const items = format[itemName];\n      const matchAttributes = itemName === 'attributes';\n      if (isFunction(format.onmatch)) {\n        return format.onmatch(node, format, itemName);\n      }\n      if (items) {\n        if (!isArrayLike(items)) {\n          for (const key in items) {\n            if (has$2(items, key)) {\n              const value = matchAttributes ? dom.getAttrib(node, key) : getStyle(dom, node, key);\n              const expectedValue = replaceVars(items[key], vars);\n              const isEmptyValue = isNullable(value) || isEmpty$3(value);\n              if (isEmptyValue && isNullable(expectedValue)) {\n                continue;\n              }\n              if (similar && isEmptyValue && !format.exact) {\n                return false;\n              }\n              if ((!similar || format.exact) && !isEq$3(value, normalizeStyleValue(expectedValue, key))) {\n                return false;\n              }\n            }\n          }\n        } else {\n          for (let i = 0; i < items.length; i++) {\n            if (matchAttributes ? dom.getAttrib(node, items[i]) : getStyle(dom, node, items[i])) {\n              return true;\n            }\n          }\n        }\n      }\n      return true;\n    };\n    const matchNode = (ed, node, name, vars, similar) => {\n      const formatList = ed.formatter.get(name);\n      const dom = ed.dom;\n      if (formatList && isElement$6(node)) {\n        for (let i = 0; i < formatList.length; i++) {\n          const format = formatList[i];\n          if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) {\n            const classes = format.classes;\n            if (classes) {\n              for (let x = 0; x < classes.length; x++) {\n                if (!ed.dom.hasClass(node, replaceVars(classes[x], vars))) {\n                  return;\n                }\n              }\n            }\n            return format;\n          }\n        }\n      }\n      return undefined;\n    };\n    const match$2 = (editor, name, vars, node, similar) => {\n      if (node) {\n        return matchParents(editor, node, name, vars, similar);\n      }\n      node = editor.selection.getNode();\n      if (matchParents(editor, node, name, vars, similar)) {\n        return true;\n      }\n      const startNode = editor.selection.getStart();\n      if (startNode !== node) {\n        if (matchParents(editor, startNode, name, vars, similar)) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const matchAll = (editor, names, vars) => {\n      const matchedFormatNames = [];\n      const checkedMap = {};\n      const startElement = editor.selection.getStart();\n      editor.dom.getParent(startElement, node => {\n        for (let i = 0; i < names.length; i++) {\n          const name = names[i];\n          if (!checkedMap[name] && matchNode(editor, node, name, vars)) {\n            checkedMap[name] = true;\n            matchedFormatNames.push(name);\n          }\n        }\n      }, editor.dom.getRoot());\n      return matchedFormatNames;\n    };\n    const closest = (editor, names) => {\n      const isRoot = elm => eq(elm, SugarElement.fromDom(editor.getBody()));\n      const match = (elm, name) => matchNode(editor, elm.dom, name) ? Optional.some(name) : Optional.none();\n      return Optional.from(editor.selection.getStart(true)).bind(rawElm => closest$1(SugarElement.fromDom(rawElm), elm => findMap(names, name => match(elm, name)), isRoot)).getOrNull();\n    };\n    const canApply = (editor, name) => {\n      const formatList = editor.formatter.get(name);\n      const dom = editor.dom;\n      if (formatList && editor.selection.isEditable()) {\n        const startNode = editor.selection.getStart();\n        const parents = getParents$2(dom, startNode);\n        for (let x = formatList.length - 1; x >= 0; x--) {\n          const format = formatList[x];\n          if (!isSelectorFormat(format)) {\n            return true;\n          }\n          for (let i = parents.length - 1; i >= 0; i--) {\n            if (dom.is(parents[i], format.selector)) {\n              return true;\n            }\n          }\n        }\n      }\n      return false;\n    };\n    const matchAllOnNode = (editor, node, formatNames) => foldl(formatNames, (acc, name) => {\n      const matchSimilar = isVariableFormatName(editor, name);\n      if (editor.formatter.matchNode(node, name, {}, matchSimilar)) {\n        return acc.concat([name]);\n      } else {\n        return acc;\n      }\n    }, []);\n\n    const ZWSP = ZWSP$1;\n    const importNode = (ownerDocument, node) => {\n      return ownerDocument.importNode(node, true);\n    };\n    const findFirstTextNode = node => {\n      if (node) {\n        const walker = new DomTreeWalker(node, node);\n        for (let tempNode = walker.current(); tempNode; tempNode = walker.next()) {\n          if (isText$a(tempNode)) {\n            return tempNode;\n          }\n        }\n      }\n      return null;\n    };\n    const createCaretContainer = fill => {\n      const caretContainer = SugarElement.fromTag('span');\n      setAll$1(caretContainer, {\n        'id': CARET_ID,\n        'data-mce-bogus': '1',\n        'data-mce-type': 'format-caret'\n      });\n      if (fill) {\n        append$1(caretContainer, SugarElement.fromText(ZWSP));\n      }\n      return caretContainer;\n    };\n    const trimZwspFromCaretContainer = caretContainerNode => {\n      const textNode = findFirstTextNode(caretContainerNode);\n      if (textNode && textNode.data.charAt(0) === ZWSP) {\n        textNode.deleteData(0, 1);\n      }\n      return textNode;\n    };\n    const removeCaretContainerNode = (editor, node, moveCaret) => {\n      const dom = editor.dom, selection = editor.selection;\n      if (isCaretContainerEmpty(node)) {\n        deleteElement$2(editor, false, SugarElement.fromDom(node), moveCaret, true);\n      } else {\n        const rng = selection.getRng();\n        const block = dom.getParent(node, dom.isBlock);\n        const startContainer = rng.startContainer;\n        const startOffset = rng.startOffset;\n        const endContainer = rng.endContainer;\n        const endOffset = rng.endOffset;\n        const textNode = trimZwspFromCaretContainer(node);\n        dom.remove(node, true);\n        if (startContainer === textNode && startOffset > 0) {\n          rng.setStart(textNode, startOffset - 1);\n        }\n        if (endContainer === textNode && endOffset > 0) {\n          rng.setEnd(textNode, endOffset - 1);\n        }\n        if (block && dom.isEmpty(block)) {\n          fillWithPaddingBr(SugarElement.fromDom(block));\n        }\n        selection.setRng(rng);\n      }\n    };\n    const removeCaretContainer = (editor, node, moveCaret) => {\n      const dom = editor.dom, selection = editor.selection;\n      if (!node) {\n        node = getParentCaretContainer(editor.getBody(), selection.getStart());\n        if (!node) {\n          while (node = dom.get(CARET_ID)) {\n            removeCaretContainerNode(editor, node, moveCaret);\n          }\n        }\n      } else {\n        removeCaretContainerNode(editor, node, moveCaret);\n      }\n    };\n    const insertCaretContainerNode = (editor, caretContainer, formatNode) => {\n      var _a, _b;\n      const dom = editor.dom;\n      const block = dom.getParent(formatNode, curry(isTextBlock$1, editor.schema));\n      if (block && dom.isEmpty(block)) {\n        (_a = formatNode.parentNode) === null || _a === void 0 ? void 0 : _a.replaceChild(caretContainer, formatNode);\n      } else {\n        removeTrailingBr(SugarElement.fromDom(formatNode));\n        if (dom.isEmpty(formatNode)) {\n          (_b = formatNode.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(caretContainer, formatNode);\n        } else {\n          dom.insertAfter(caretContainer, formatNode);\n        }\n      }\n    };\n    const appendNode = (parentNode, node) => {\n      parentNode.appendChild(node);\n      return node;\n    };\n    const insertFormatNodesIntoCaretContainer = (formatNodes, caretContainer) => {\n      var _a;\n      const innerMostFormatNode = foldr(formatNodes, (parentNode, formatNode) => {\n        return appendNode(parentNode, formatNode.cloneNode(false));\n      }, caretContainer);\n      const doc = (_a = innerMostFormatNode.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      return appendNode(innerMostFormatNode, doc.createTextNode(ZWSP));\n    };\n    const cleanFormatNode = (editor, caretContainer, formatNode, name, vars, similar) => {\n      const formatter = editor.formatter;\n      const dom = editor.dom;\n      const validFormats = filter$5(keys(formatter.get()), formatName => formatName !== name && !contains$1(formatName, 'removeformat'));\n      const matchedFormats = matchAllOnNode(editor, formatNode, validFormats);\n      const uniqueFormats = filter$5(matchedFormats, fmtName => !areSimilarFormats(editor, fmtName, name));\n      if (uniqueFormats.length > 0) {\n        const clonedFormatNode = formatNode.cloneNode(false);\n        dom.add(caretContainer, clonedFormatNode);\n        formatter.remove(name, vars, clonedFormatNode, similar);\n        dom.remove(clonedFormatNode);\n        return Optional.some(clonedFormatNode);\n      } else {\n        return Optional.none();\n      }\n    };\n    const applyCaretFormat = (editor, name, vars) => {\n      let caretContainer;\n      const selection = editor.selection;\n      const formatList = editor.formatter.get(name);\n      if (!formatList) {\n        return;\n      }\n      const selectionRng = selection.getRng();\n      let offset = selectionRng.startOffset;\n      const container = selectionRng.startContainer;\n      const text = container.nodeValue;\n      caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart());\n      const wordcharRegex = /[^\\s\\u00a0\\u00ad\\u200b\\ufeff]/;\n      if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) {\n        const bookmark = selection.getBookmark();\n        selectionRng.collapse(true);\n        let rng = expandRng(editor.dom, selectionRng, formatList);\n        rng = split(rng);\n        editor.formatter.apply(name, vars, rng);\n        selection.moveToBookmark(bookmark);\n      } else {\n        let textNode = caretContainer ? findFirstTextNode(caretContainer) : null;\n        if (!caretContainer || (textNode === null || textNode === void 0 ? void 0 : textNode.data) !== ZWSP) {\n          caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom);\n          textNode = caretContainer.firstChild;\n          selectionRng.insertNode(caretContainer);\n          offset = 1;\n          editor.formatter.apply(name, vars, caretContainer);\n        } else {\n          editor.formatter.apply(name, vars, caretContainer);\n        }\n        selection.setCursorLocation(textNode, offset);\n      }\n    };\n    const removeCaretFormat = (editor, name, vars, similar) => {\n      const dom = editor.dom;\n      const selection = editor.selection;\n      let hasContentAfter = false;\n      const formatList = editor.formatter.get(name);\n      if (!formatList) {\n        return;\n      }\n      const rng = selection.getRng();\n      const container = rng.startContainer;\n      const offset = rng.startOffset;\n      let node = container;\n      if (isText$a(container)) {\n        if (offset !== container.data.length) {\n          hasContentAfter = true;\n        }\n        node = node.parentNode;\n      }\n      const parents = [];\n      let formatNode;\n      while (node) {\n        if (matchNode(editor, node, name, vars, similar)) {\n          formatNode = node;\n          break;\n        }\n        if (node.nextSibling) {\n          hasContentAfter = true;\n        }\n        parents.push(node);\n        node = node.parentNode;\n      }\n      if (!formatNode) {\n        return;\n      }\n      if (hasContentAfter) {\n        const bookmark = selection.getBookmark();\n        rng.collapse(true);\n        let expandedRng = expandRng(dom, rng, formatList, true);\n        expandedRng = split(expandedRng);\n        editor.formatter.remove(name, vars, expandedRng, similar);\n        selection.moveToBookmark(bookmark);\n      } else {\n        const caretContainer = getParentCaretContainer(editor.getBody(), formatNode);\n        const parentsAfter = isNonNullable(caretContainer) ? dom.getParents(formatNode.parentNode, always, caretContainer) : [];\n        const newCaretContainer = createCaretContainer(false).dom;\n        insertCaretContainerNode(editor, newCaretContainer, caretContainer !== null && caretContainer !== void 0 ? caretContainer : formatNode);\n        const cleanedFormatNode = cleanFormatNode(editor, newCaretContainer, formatNode, name, vars, similar);\n        const caretTextNode = insertFormatNodesIntoCaretContainer([\n          ...parents,\n          ...cleanedFormatNode.toArray(),\n          ...parentsAfter\n        ], newCaretContainer);\n        if (caretContainer) {\n          removeCaretContainerNode(editor, caretContainer, isNonNullable(caretContainer));\n        }\n        selection.setCursorLocation(caretTextNode, 1);\n        if (dom.isEmpty(formatNode)) {\n          dom.remove(formatNode);\n        }\n      }\n    };\n    const disableCaretContainer = (editor, keyCode, moveCaret) => {\n      const selection = editor.selection, body = editor.getBody();\n      removeCaretContainer(editor, null, moveCaret);\n      if ((keyCode === 8 || keyCode === 46) && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP) {\n        removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()), true);\n      }\n      if (keyCode === 37 || keyCode === 39) {\n        removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()), true);\n      }\n    };\n    const endsWithNbsp = element => isText$a(element) && endsWith(element.data, nbsp);\n    const setup$v = editor => {\n      editor.on('mouseup keydown', e => {\n        disableCaretContainer(editor, e.keyCode, endsWithNbsp(editor.selection.getRng().endContainer));\n      });\n    };\n    const createCaretFormat = formatNodes => {\n      const caretContainer = createCaretContainer(false);\n      const innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom);\n      return {\n        caretContainer,\n        caretPosition: CaretPosition(innerMost, 0)\n      };\n    };\n    const replaceWithCaretFormat = (targetNode, formatNodes) => {\n      const {caretContainer, caretPosition} = createCaretFormat(formatNodes);\n      before$3(SugarElement.fromDom(targetNode), caretContainer);\n      remove$5(SugarElement.fromDom(targetNode));\n      return caretPosition;\n    };\n    const createCaretFormatAtStart$1 = (rng, formatNodes) => {\n      const {caretContainer, caretPosition} = createCaretFormat(formatNodes);\n      rng.insertNode(caretContainer.dom);\n      return caretPosition;\n    };\n    const isFormatElement = (editor, element) => {\n      if (isCaretNode(element.dom)) {\n        return false;\n      }\n      const inlineElements = editor.schema.getTextInlineElements();\n      return has$2(inlineElements, name(element)) && !isCaretNode(element.dom) && !isBogus$2(element.dom);\n    };\n\n    const postProcessHooks = {};\n    const isPre = matchNodeNames(['pre']);\n    const addPostProcessHook = (name, hook) => {\n      const hooks = postProcessHooks[name];\n      if (!hooks) {\n        postProcessHooks[name] = [];\n      }\n      postProcessHooks[name].push(hook);\n    };\n    const postProcess$1 = (name, editor) => {\n      if (has$2(postProcessHooks, name)) {\n        each$e(postProcessHooks[name], hook => {\n          hook(editor);\n        });\n      }\n    };\n    addPostProcessHook('pre', editor => {\n      const rng = editor.selection.getRng();\n      const hasPreSibling = blocks => pre => {\n        const prev = pre.previousSibling;\n        return isPre(prev) && contains$2(blocks, prev);\n      };\n      const joinPre = (pre1, pre2) => {\n        const sPre2 = SugarElement.fromDom(pre2);\n        const doc = documentOrOwner(sPre2).dom;\n        remove$5(sPre2);\n        append(SugarElement.fromDom(pre1), [\n          SugarElement.fromTag('br', doc),\n          SugarElement.fromTag('br', doc),\n          ...children$1(sPre2)\n        ]);\n      };\n      if (!rng.collapsed) {\n        const blocks = editor.selection.getSelectedBlocks();\n        const preBlocks = filter$5(filter$5(blocks, isPre), hasPreSibling(blocks));\n        each$e(preBlocks, pre => {\n          joinPre(pre.previousSibling, pre);\n        });\n      }\n    });\n\n    const listItemStyles = [\n      'fontWeight',\n      'fontStyle',\n      'color',\n      'fontSize',\n      'fontFamily'\n    ];\n    const hasListStyles = fmt => isObject(fmt.styles) && exists(keys(fmt.styles), name => contains$2(listItemStyles, name));\n    const findExpandedListItemFormat = formats => find$2(formats, fmt => isInlineFormat(fmt) && fmt.inline === 'span' && hasListStyles(fmt));\n    const getExpandedListItemFormat = (formatter, format) => {\n      const formatList = formatter.get(format);\n      return isArray$1(formatList) ? findExpandedListItemFormat(formatList) : Optional.none();\n    };\n    const isRngStartAtStartOfElement = (rng, elm) => prevPosition(elm, CaretPosition.fromRangeStart(rng)).isNone();\n    const isRngEndAtEndOfElement = (rng, elm) => {\n      return nextPosition(elm, CaretPosition.fromRangeEnd(rng)).exists(pos => !isBr$6(pos.getNode()) || nextPosition(elm, pos).isSome()) === false;\n    };\n    const isEditableListItem = dom => elm => isListItem$2(elm) && dom.isEditable(elm);\n    const getFullySelectedBlocks = selection => {\n      const blocks = selection.getSelectedBlocks();\n      const rng = selection.getRng();\n      if (selection.isCollapsed()) {\n        return [];\n      }\n      if (blocks.length === 1) {\n        return isRngStartAtStartOfElement(rng, blocks[0]) && isRngEndAtEndOfElement(rng, blocks[0]) ? blocks : [];\n      } else {\n        const first = head(blocks).filter(elm => isRngStartAtStartOfElement(rng, elm)).toArray();\n        const last = last$3(blocks).filter(elm => isRngEndAtEndOfElement(rng, elm)).toArray();\n        const middle = blocks.slice(1, -1);\n        return first.concat(middle).concat(last);\n      }\n    };\n    const getFullySelectedListItems = selection => filter$5(getFullySelectedBlocks(selection), isEditableListItem(selection.dom));\n    const getPartiallySelectedListItems = selection => filter$5(selection.getSelectedBlocks(), isEditableListItem(selection.dom));\n\n    const each$8 = Tools.each;\n    const isElementNode = node => isElement$6(node) && !isBookmarkNode$1(node) && !isCaretNode(node) && !isBogus$2(node);\n    const findElementSibling = (node, siblingName) => {\n      for (let sibling = node; sibling; sibling = sibling[siblingName]) {\n        if (isText$a(sibling) && isNotEmpty(sibling.data)) {\n          return node;\n        }\n        if (isElement$6(sibling) && !isBookmarkNode$1(sibling)) {\n          return sibling;\n        }\n      }\n      return node;\n    };\n    const mergeSiblingsNodes = (editor, prev, next) => {\n      const elementUtils = ElementUtils(editor);\n      const isPrevEditable = isHTMLElement(prev) && editor.dom.isEditable(prev);\n      const isNextEditable = isHTMLElement(next) && editor.dom.isEditable(next);\n      if (isPrevEditable && isNextEditable) {\n        const prevSibling = findElementSibling(prev, 'previousSibling');\n        const nextSibling = findElementSibling(next, 'nextSibling');\n        if (elementUtils.compare(prevSibling, nextSibling)) {\n          for (let sibling = prevSibling.nextSibling; sibling && sibling !== nextSibling;) {\n            const tmpSibling = sibling;\n            sibling = sibling.nextSibling;\n            prevSibling.appendChild(tmpSibling);\n          }\n          editor.dom.remove(nextSibling);\n          Tools.each(Tools.grep(nextSibling.childNodes), node => {\n            prevSibling.appendChild(node);\n          });\n          return prevSibling;\n        }\n      }\n      return next;\n    };\n    const mergeSiblings = (editor, format, vars, node) => {\n      var _a;\n      if (node && format.merge_siblings !== false) {\n        const newNode = (_a = mergeSiblingsNodes(editor, getNonWhiteSpaceSibling(node), node)) !== null && _a !== void 0 ? _a : node;\n        mergeSiblingsNodes(editor, newNode, getNonWhiteSpaceSibling(newNode, true));\n      }\n    };\n    const clearChildStyles = (dom, format, node) => {\n      if (format.clear_child_styles) {\n        const selector = format.links ? '*:not(a)' : '*';\n        each$8(dom.select(selector, node), childNode => {\n          if (isElementNode(childNode) && dom.isEditable(childNode)) {\n            each$8(format.styles, (_value, name) => {\n              dom.setStyle(childNode, name, '');\n            });\n          }\n        });\n      }\n    };\n    const processChildElements = (node, filter, process) => {\n      each$8(node.childNodes, node => {\n        if (isElementNode(node)) {\n          if (filter(node)) {\n            process(node);\n          }\n          if (node.hasChildNodes()) {\n            processChildElements(node, filter, process);\n          }\n        }\n      });\n    };\n    const unwrapEmptySpan = (dom, node) => {\n      if (node.nodeName === 'SPAN' && dom.getAttribs(node).length === 0) {\n        dom.remove(node, true);\n      }\n    };\n    const hasStyle = (dom, name) => node => !!(node && getStyle(dom, node, name));\n    const applyStyle = (dom, name, value) => node => {\n      dom.setStyle(node, name, value);\n      if (node.getAttribute('style') === '') {\n        node.removeAttribute('style');\n      }\n      unwrapEmptySpan(dom, node);\n    };\n\n    const removeResult = Adt.generate([\n      { keep: [] },\n      { rename: ['name'] },\n      { removed: [] }\n    ]);\n    const MCE_ATTR_RE = /^(src|href|style)$/;\n    const each$7 = Tools.each;\n    const isEq$2 = isEq$5;\n    const isTableCellOrRow = node => /^(TR|TH|TD)$/.test(node.nodeName);\n    const isChildOfInlineParent = (dom, node, parent) => dom.isChildOf(node, parent) && node !== parent && !dom.isBlock(parent);\n    const getContainer = (ed, rng, start) => {\n      let container = rng[start ? 'startContainer' : 'endContainer'];\n      let offset = rng[start ? 'startOffset' : 'endOffset'];\n      if (isElement$6(container)) {\n        const lastIdx = container.childNodes.length - 1;\n        if (!start && offset) {\n          offset--;\n        }\n        container = container.childNodes[offset > lastIdx ? lastIdx : offset];\n      }\n      if (isText$a(container) && start && offset >= container.data.length) {\n        container = new DomTreeWalker(container, ed.getBody()).next() || container;\n      }\n      if (isText$a(container) && !start && offset === 0) {\n        container = new DomTreeWalker(container, ed.getBody()).prev() || container;\n      }\n      return container;\n    };\n    const normalizeTableSelection = (node, start) => {\n      const prop = start ? 'firstChild' : 'lastChild';\n      const childNode = node[prop];\n      if (isTableCellOrRow(node) && childNode) {\n        if (node.nodeName === 'TR') {\n          return childNode[prop] || childNode;\n        } else {\n          return childNode;\n        }\n      }\n      return node;\n    };\n    const wrap$1 = (dom, node, name, attrs) => {\n      var _a;\n      const wrapper = dom.create(name, attrs);\n      (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(wrapper, node);\n      wrapper.appendChild(node);\n      return wrapper;\n    };\n    const wrapWithSiblings = (dom, node, next, name, attrs) => {\n      const start = SugarElement.fromDom(node);\n      const wrapper = SugarElement.fromDom(dom.create(name, attrs));\n      const siblings = next ? nextSiblings(start) : prevSiblings(start);\n      append(wrapper, siblings);\n      if (next) {\n        before$3(start, wrapper);\n        prepend(wrapper, start);\n      } else {\n        after$4(start, wrapper);\n        append$1(wrapper, start);\n      }\n      return wrapper.dom;\n    };\n    const isColorFormatAndAnchor = (node, format) => format.links && node.nodeName === 'A';\n    const removeNode = (ed, node, format) => {\n      const parentNode = node.parentNode;\n      let rootBlockElm;\n      const dom = ed.dom;\n      const forcedRootBlock = getForcedRootBlock(ed);\n      if (isBlockFormat(format)) {\n        if (parentNode === dom.getRoot()) {\n          if (!format.list_block || !isEq$2(node, format.list_block)) {\n            each$e(from(node.childNodes), node => {\n              if (isValid(ed, forcedRootBlock, node.nodeName.toLowerCase())) {\n                if (!rootBlockElm) {\n                  rootBlockElm = wrap$1(dom, node, forcedRootBlock);\n                  dom.setAttribs(rootBlockElm, getForcedRootBlockAttrs(ed));\n                } else {\n                  rootBlockElm.appendChild(node);\n                }\n              } else {\n                rootBlockElm = null;\n              }\n            });\n          }\n        }\n      }\n      if (isMixedFormat(format) && !isEq$2(format.inline, node)) {\n        return;\n      }\n      dom.remove(node, true);\n    };\n    const processFormatAttrOrStyle = (name, value, vars) => {\n      if (isNumber(name)) {\n        return {\n          name: value,\n          value: null\n        };\n      } else {\n        return {\n          name,\n          value: replaceVars(value, vars)\n        };\n      }\n    };\n    const removeEmptyStyleAttributeIfNeeded = (dom, elm) => {\n      if (dom.getAttrib(elm, 'style') === '') {\n        elm.removeAttribute('style');\n        elm.removeAttribute('data-mce-style');\n      }\n    };\n    const removeStyles = (dom, elm, format, vars, compareNode) => {\n      let stylesModified = false;\n      each$7(format.styles, (value, name) => {\n        const {\n          name: styleName,\n          value: styleValue\n        } = processFormatAttrOrStyle(name, value, vars);\n        const normalizedStyleValue = normalizeStyleValue(styleValue, styleName);\n        if (format.remove_similar || isNull(styleValue) || !isElement$6(compareNode) || isEq$2(getStyle(dom, compareNode, styleName), normalizedStyleValue)) {\n          dom.setStyle(elm, styleName, '');\n        }\n        stylesModified = true;\n      });\n      if (stylesModified) {\n        removeEmptyStyleAttributeIfNeeded(dom, elm);\n      }\n    };\n    const removeListStyleFormats = (editor, name, vars) => {\n      if (name === 'removeformat') {\n        each$e(getPartiallySelectedListItems(editor.selection), li => {\n          each$e(listItemStyles, name => editor.dom.setStyle(li, name, ''));\n          removeEmptyStyleAttributeIfNeeded(editor.dom, li);\n        });\n      } else {\n        getExpandedListItemFormat(editor.formatter, name).each(liFmt => {\n          each$e(getPartiallySelectedListItems(editor.selection), li => removeStyles(editor.dom, li, liFmt, vars, null));\n        });\n      }\n    };\n    const removeNodeFormatInternal = (ed, format, vars, node, compareNode) => {\n      const dom = ed.dom;\n      const elementUtils = ElementUtils(ed);\n      const schema = ed.schema;\n      if (isInlineFormat(format) && isTransparentElementName(schema, format.inline) && isTransparentBlock(schema, node) && node.parentElement === ed.getBody()) {\n        removeNode(ed, node, format);\n        return removeResult.removed();\n      }\n      if (!format.ceFalseOverride && node && dom.getContentEditableParent(node) === 'false') {\n        return removeResult.keep();\n      }\n      if (node && !matchName(dom, node, format) && !isColorFormatAndAnchor(node, format)) {\n        return removeResult.keep();\n      }\n      const elm = node;\n      const preserveAttributes = format.preserve_attributes;\n      if (isInlineFormat(format) && format.remove === 'all' && isArray$1(preserveAttributes)) {\n        const attrsToPreserve = filter$5(dom.getAttribs(elm), attr => contains$2(preserveAttributes, attr.name.toLowerCase()));\n        dom.removeAllAttribs(elm);\n        each$e(attrsToPreserve, attr => dom.setAttrib(elm, attr.name, attr.value));\n        if (attrsToPreserve.length > 0) {\n          return removeResult.rename('span');\n        }\n      }\n      if (format.remove !== 'all') {\n        removeStyles(dom, elm, format, vars, compareNode);\n        each$7(format.attributes, (value, name) => {\n          const {\n            name: attrName,\n            value: attrValue\n          } = processFormatAttrOrStyle(name, value, vars);\n          if (format.remove_similar || isNull(attrValue) || !isElement$6(compareNode) || isEq$2(dom.getAttrib(compareNode, attrName), attrValue)) {\n            if (attrName === 'class') {\n              const currentValue = dom.getAttrib(elm, attrName);\n              if (currentValue) {\n                let valueOut = '';\n                each$e(currentValue.split(/\\s+/), cls => {\n                  if (/mce\\-\\w+/.test(cls)) {\n                    valueOut += (valueOut ? ' ' : '') + cls;\n                  }\n                });\n                if (valueOut) {\n                  dom.setAttrib(elm, attrName, valueOut);\n                  return;\n                }\n              }\n            }\n            if (MCE_ATTR_RE.test(attrName)) {\n              elm.removeAttribute('data-mce-' + attrName);\n            }\n            if (attrName === 'style' && matchNodeNames(['li'])(elm) && dom.getStyle(elm, 'list-style-type') === 'none') {\n              elm.removeAttribute(attrName);\n              dom.setStyle(elm, 'list-style-type', 'none');\n              return;\n            }\n            if (attrName === 'class') {\n              elm.removeAttribute('className');\n            }\n            elm.removeAttribute(attrName);\n          }\n        });\n        each$7(format.classes, value => {\n          value = replaceVars(value, vars);\n          if (!isElement$6(compareNode) || dom.hasClass(compareNode, value)) {\n            dom.removeClass(elm, value);\n          }\n        });\n        const attrs = dom.getAttribs(elm);\n        for (let i = 0; i < attrs.length; i++) {\n          const attrName = attrs[i].nodeName;\n          if (!elementUtils.isAttributeInternal(attrName)) {\n            return removeResult.keep();\n          }\n        }\n      }\n      if (format.remove !== 'none') {\n        removeNode(ed, elm, format);\n        return removeResult.removed();\n      }\n      return removeResult.keep();\n    };\n    const findFormatRoot = (editor, container, name, vars, similar) => {\n      let formatRoot;\n      if (container.parentNode) {\n        each$e(getParents$2(editor.dom, container.parentNode).reverse(), parent => {\n          if (!formatRoot && isElement$6(parent) && parent.id !== '_start' && parent.id !== '_end') {\n            const format = matchNode(editor, parent, name, vars, similar);\n            if (format && format.split !== false) {\n              formatRoot = parent;\n            }\n          }\n        });\n      }\n      return formatRoot;\n    };\n    const removeNodeFormatFromClone = (editor, format, vars, clone) => removeNodeFormatInternal(editor, format, vars, clone, clone).fold(constant(clone), newName => {\n      const fragment = editor.dom.createFragment();\n      fragment.appendChild(clone);\n      return editor.dom.rename(clone, newName);\n    }, constant(null));\n    const wrapAndSplit = (editor, formatList, formatRoot, container, target, split, format, vars) => {\n      var _a, _b;\n      let lastClone;\n      let firstClone;\n      const dom = editor.dom;\n      if (formatRoot) {\n        const formatRootParent = formatRoot.parentNode;\n        for (let parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) {\n          let clone = dom.clone(parent, false);\n          for (let i = 0; i < formatList.length; i++) {\n            clone = removeNodeFormatFromClone(editor, formatList[i], vars, clone);\n            if (clone === null) {\n              break;\n            }\n          }\n          if (clone) {\n            if (lastClone) {\n              clone.appendChild(lastClone);\n            }\n            if (!firstClone) {\n              firstClone = clone;\n            }\n            lastClone = clone;\n          }\n        }\n        if (split && (!format.mixed || !dom.isBlock(formatRoot))) {\n          container = (_a = dom.split(formatRoot, container)) !== null && _a !== void 0 ? _a : container;\n        }\n        if (lastClone && firstClone) {\n          (_b = target.parentNode) === null || _b === void 0 ? void 0 : _b.insertBefore(lastClone, target);\n          firstClone.appendChild(target);\n          if (isInlineFormat(format)) {\n            mergeSiblings(editor, format, vars, lastClone);\n          }\n        }\n      }\n      return container;\n    };\n    const removeFormatInternal = (ed, name, vars, node, similar) => {\n      const formatList = ed.formatter.get(name);\n      const format = formatList[0];\n      const dom = ed.dom;\n      const selection = ed.selection;\n      const splitToFormatRoot = container => {\n        const formatRoot = findFormatRoot(ed, container, name, vars, similar);\n        return wrapAndSplit(ed, formatList, formatRoot, container, container, true, format, vars);\n      };\n      const isRemoveBookmarkNode = node => isBookmarkNode$1(node) && isElement$6(node) && (node.id === '_start' || node.id === '_end');\n      const removeFormatOnNode = node => exists(formatList, fmt => removeNodeFormat(ed, fmt, vars, node, node));\n      const process = node => {\n        const children = from(node.childNodes);\n        const removed = removeFormatOnNode(node);\n        const currentNodeMatches = removed || exists(formatList, f => matchName(dom, node, f));\n        const parentNode = node.parentNode;\n        if (!currentNodeMatches && isNonNullable(parentNode) && shouldExpandToSelector(format)) {\n          removeFormatOnNode(parentNode);\n        }\n        if (format.deep) {\n          if (children.length) {\n            for (let i = 0; i < children.length; i++) {\n              process(children[i]);\n            }\n          }\n        }\n        const textDecorations = [\n          'underline',\n          'line-through',\n          'overline'\n        ];\n        each$e(textDecorations, decoration => {\n          if (isElement$6(node) && ed.dom.getStyle(node, 'text-decoration') === decoration && node.parentNode && getTextDecoration(dom, node.parentNode) === decoration) {\n            removeNodeFormat(ed, {\n              deep: false,\n              exact: true,\n              inline: 'span',\n              styles: { textDecoration: decoration }\n            }, undefined, node);\n          }\n        });\n      };\n      const unwrap = start => {\n        const node = dom.get(start ? '_start' : '_end');\n        if (node) {\n          let out = node[start ? 'firstChild' : 'lastChild'];\n          if (isRemoveBookmarkNode(out)) {\n            out = out[start ? 'firstChild' : 'lastChild'];\n          }\n          if (isText$a(out) && out.data.length === 0) {\n            out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling;\n          }\n          dom.remove(node, true);\n          return out;\n        } else {\n          return null;\n        }\n      };\n      const removeRngStyle = rng => {\n        let startContainer;\n        let endContainer;\n        let expandedRng = expandRng(dom, rng, formatList, rng.collapsed);\n        if (format.split) {\n          expandedRng = split(expandedRng);\n          startContainer = getContainer(ed, expandedRng, true);\n          endContainer = getContainer(ed, expandedRng);\n          if (startContainer !== endContainer) {\n            startContainer = normalizeTableSelection(startContainer, true);\n            endContainer = normalizeTableSelection(endContainer, false);\n            if (isChildOfInlineParent(dom, startContainer, endContainer)) {\n              const marker = Optional.from(startContainer.firstChild).getOr(startContainer);\n              splitToFormatRoot(wrapWithSiblings(dom, marker, true, 'span', {\n                'id': '_start',\n                'data-mce-type': 'bookmark'\n              }));\n              unwrap(true);\n              return;\n            }\n            if (isChildOfInlineParent(dom, endContainer, startContainer)) {\n              const marker = Optional.from(endContainer.lastChild).getOr(endContainer);\n              splitToFormatRoot(wrapWithSiblings(dom, marker, false, 'span', {\n                'id': '_end',\n                'data-mce-type': 'bookmark'\n              }));\n              unwrap(false);\n              return;\n            }\n            startContainer = wrap$1(dom, startContainer, 'span', {\n              'id': '_start',\n              'data-mce-type': 'bookmark'\n            });\n            endContainer = wrap$1(dom, endContainer, 'span', {\n              'id': '_end',\n              'data-mce-type': 'bookmark'\n            });\n            const newRng = dom.createRng();\n            newRng.setStartAfter(startContainer);\n            newRng.setEndBefore(endContainer);\n            walk$3(dom, newRng, nodes => {\n              each$e(nodes, n => {\n                if (!isBookmarkNode$1(n) && !isBookmarkNode$1(n.parentNode)) {\n                  splitToFormatRoot(n);\n                }\n              });\n            });\n            splitToFormatRoot(startContainer);\n            splitToFormatRoot(endContainer);\n            startContainer = unwrap(true);\n            endContainer = unwrap();\n          } else {\n            startContainer = endContainer = splitToFormatRoot(startContainer);\n          }\n          expandedRng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer;\n          expandedRng.startOffset = dom.nodeIndex(startContainer);\n          expandedRng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer;\n          expandedRng.endOffset = dom.nodeIndex(endContainer) + 1;\n        }\n        walk$3(dom, expandedRng, nodes => {\n          each$e(nodes, process);\n        });\n      };\n      if (node) {\n        if (isNode(node)) {\n          const rng = dom.createRng();\n          rng.setStartBefore(node);\n          rng.setEndAfter(node);\n          removeRngStyle(rng);\n        } else {\n          removeRngStyle(node);\n        }\n        fireFormatRemove(ed, name, node, vars);\n        return;\n      }\n      if (!selection.isCollapsed() || !isInlineFormat(format) || getCellsFromEditor(ed).length) {\n        preserveSelection(ed, () => runOnRanges(ed, removeRngStyle), startNode => isInlineFormat(format) && match$2(ed, name, vars, startNode));\n        ed.nodeChanged();\n      } else {\n        removeCaretFormat(ed, name, vars, similar);\n      }\n      removeListStyleFormats(ed, name, vars);\n      fireFormatRemove(ed, name, node, vars);\n    };\n    const removeFormat$1 = (ed, name, vars, node, similar) => {\n      if (node || ed.selection.isEditable()) {\n        removeFormatInternal(ed, name, vars, node, similar);\n      }\n    };\n    const removeNodeFormat = (editor, format, vars, node, compareNode) => {\n      return removeNodeFormatInternal(editor, format, vars, node, compareNode).fold(never, newName => {\n        editor.dom.rename(node, newName);\n        return true;\n      }, always);\n    };\n\n    const each$6 = Tools.each;\n    const mergeTextDecorationsAndColor = (dom, format, vars, node) => {\n      const processTextDecorationsAndColor = n => {\n        if (isHTMLElement(n) && isElement$6(n.parentNode) && dom.isEditable(n)) {\n          const parentTextDecoration = getTextDecoration(dom, n.parentNode);\n          if (dom.getStyle(n, 'color') && parentTextDecoration) {\n            dom.setStyle(n, 'text-decoration', parentTextDecoration);\n          } else if (dom.getStyle(n, 'text-decoration') === parentTextDecoration) {\n            dom.setStyle(n, 'text-decoration', null);\n          }\n        }\n      };\n      if (format.styles && (format.styles.color || format.styles.textDecoration)) {\n        Tools.walk(node, processTextDecorationsAndColor, 'childNodes');\n        processTextDecorationsAndColor(node);\n      }\n    };\n    const mergeBackgroundColorAndFontSize = (dom, format, vars, node) => {\n      if (format.styles && format.styles.backgroundColor) {\n        const hasFontSize = hasStyle(dom, 'fontSize');\n        processChildElements(node, elm => hasFontSize(elm) && dom.isEditable(elm), applyStyle(dom, 'backgroundColor', replaceVars(format.styles.backgroundColor, vars)));\n      }\n    };\n    const mergeSubSup = (dom, format, vars, node) => {\n      if (isInlineFormat(format) && (format.inline === 'sub' || format.inline === 'sup')) {\n        const hasFontSize = hasStyle(dom, 'fontSize');\n        processChildElements(node, elm => hasFontSize(elm) && dom.isEditable(elm), applyStyle(dom, 'fontSize', ''));\n        const inverseTagDescendants = filter$5(dom.select(format.inline === 'sup' ? 'sub' : 'sup', node), dom.isEditable);\n        dom.remove(inverseTagDescendants, true);\n      }\n    };\n    const mergeWithChildren = (editor, formatList, vars, node) => {\n      each$6(formatList, format => {\n        if (isInlineFormat(format)) {\n          each$6(editor.dom.select(format.inline, node), child => {\n            if (isElementNode(child)) {\n              removeNodeFormat(editor, format, vars, child, format.exact ? child : null);\n            }\n          });\n        }\n        clearChildStyles(editor.dom, format, node);\n      });\n    };\n    const mergeWithParents = (editor, format, name, vars, node) => {\n      const parentNode = node.parentNode;\n      if (matchNode(editor, parentNode, name, vars)) {\n        if (removeNodeFormat(editor, format, vars, node)) {\n          return;\n        }\n      }\n      if (format.merge_with_parents && parentNode) {\n        editor.dom.getParent(parentNode, parent => {\n          if (matchNode(editor, parent, name, vars)) {\n            removeNodeFormat(editor, format, vars, node);\n            return true;\n          } else {\n            return false;\n          }\n        });\n      }\n    };\n\n    const each$5 = Tools.each;\n    const canFormatBR = (editor, format, node, parentName) => {\n      if (canFormatEmptyLines(editor) && isInlineFormat(format) && node.parentNode) {\n        const validBRParentElements = getTextRootBlockElements(editor.schema);\n        const hasCaretNodeSibling = sibling(SugarElement.fromDom(node), sibling => isCaretNode(sibling.dom));\n        return hasNonNullableKey(validBRParentElements, parentName) && isEmpty$2(SugarElement.fromDom(node.parentNode), false) && !hasCaretNodeSibling;\n      } else {\n        return false;\n      }\n    };\n    const applyStyles = (dom, elm, format, vars) => {\n      each$5(format.styles, (value, name) => {\n        dom.setStyle(elm, name, replaceVars(value, vars));\n      });\n      if (format.styles) {\n        const styleVal = dom.getAttrib(elm, 'style');\n        if (styleVal) {\n          dom.setAttrib(elm, 'data-mce-style', styleVal);\n        }\n      }\n    };\n    const applyFormatAction = (ed, name, vars, node) => {\n      const formatList = ed.formatter.get(name);\n      const format = formatList[0];\n      const isCollapsed = !node && ed.selection.isCollapsed();\n      const dom = ed.dom;\n      const selection = ed.selection;\n      const setElementFormat = (elm, fmt = format) => {\n        if (isFunction(fmt.onformat)) {\n          fmt.onformat(elm, fmt, vars, node);\n        }\n        applyStyles(dom, elm, fmt, vars);\n        each$5(fmt.attributes, (value, name) => {\n          dom.setAttrib(elm, name, replaceVars(value, vars));\n        });\n        each$5(fmt.classes, value => {\n          const newValue = replaceVars(value, vars);\n          if (!dom.hasClass(elm, newValue)) {\n            dom.addClass(elm, newValue);\n          }\n        });\n      };\n      const applyNodeStyle = (formatList, node) => {\n        let found = false;\n        each$5(formatList, format => {\n          if (!isSelectorFormat(format)) {\n            return false;\n          }\n          if (dom.getContentEditable(node) === 'false' && !format.ceFalseOverride) {\n            return true;\n          }\n          if (isNonNullable(format.collapsed) && format.collapsed !== isCollapsed) {\n            return true;\n          }\n          if (dom.is(node, format.selector) && !isCaretNode(node)) {\n            setElementFormat(node, format);\n            found = true;\n            return false;\n          }\n          return true;\n        });\n        return found;\n      };\n      const createWrapElement = wrapName => {\n        if (isString(wrapName)) {\n          const wrapElm = dom.create(wrapName);\n          setElementFormat(wrapElm);\n          return wrapElm;\n        } else {\n          return null;\n        }\n      };\n      const applyRngStyle = (dom, rng, nodeSpecific) => {\n        const newWrappers = [];\n        let contentEditable = true;\n        const wrapName = format.inline || format.block;\n        const wrapElm = createWrapElement(wrapName);\n        const isMatchingWrappingBlock = node => isWrappingBlockFormat(format) && matchNode(ed, node, name, vars);\n        const canRenameBlock = (node, parentName, isEditableDescendant) => {\n          const isValidBlockFormatForNode = isNonWrappingBlockFormat(format) && isTextBlock$1(ed.schema, node) && isValid(ed, parentName, wrapName);\n          return isEditableDescendant && isValidBlockFormatForNode;\n        };\n        const canWrapNode = (node, parentName, isEditableDescendant, isWrappableNoneditableElm) => {\n          const nodeName = node.nodeName.toLowerCase();\n          const isValidWrapNode = isValid(ed, wrapName, nodeName) && isValid(ed, parentName, wrapName);\n          const isZwsp = !nodeSpecific && isText$a(node) && isZwsp$1(node.data);\n          const isCaret = isCaretNode(node);\n          const isCorrectFormatForNode = !isInlineFormat(format) || !dom.isBlock(node);\n          return (isEditableDescendant || isWrappableNoneditableElm) && isValidWrapNode && !isZwsp && !isCaret && isCorrectFormatForNode;\n        };\n        walk$3(dom, rng, nodes => {\n          let currentWrapElm;\n          const process = node => {\n            let hasContentEditableState = false;\n            let lastContentEditable = contentEditable;\n            let isWrappableNoneditableElm = false;\n            const parentNode = node.parentNode;\n            const parentName = parentNode.nodeName.toLowerCase();\n            const contentEditableValue = dom.getContentEditable(node);\n            if (isNonNullable(contentEditableValue)) {\n              lastContentEditable = contentEditable;\n              contentEditable = contentEditableValue === 'true';\n              hasContentEditableState = true;\n              isWrappableNoneditableElm = isWrappableNoneditable(ed, node);\n            }\n            const isEditableDescendant = contentEditable && !hasContentEditableState;\n            if (isBr$6(node) && !canFormatBR(ed, format, node, parentName)) {\n              currentWrapElm = null;\n              if (isBlockFormat(format)) {\n                dom.remove(node);\n              }\n              return;\n            }\n            if (isMatchingWrappingBlock(node)) {\n              currentWrapElm = null;\n              return;\n            }\n            if (canRenameBlock(node, parentName, isEditableDescendant)) {\n              const elm = dom.rename(node, wrapName);\n              setElementFormat(elm);\n              newWrappers.push(elm);\n              currentWrapElm = null;\n              return;\n            }\n            if (isSelectorFormat(format)) {\n              let found = applyNodeStyle(formatList, node);\n              if (!found && isNonNullable(parentNode) && shouldExpandToSelector(format)) {\n                found = applyNodeStyle(formatList, parentNode);\n              }\n              if (!isInlineFormat(format) || found) {\n                currentWrapElm = null;\n                return;\n              }\n            }\n            if (isNonNullable(wrapElm) && canWrapNode(node, parentName, isEditableDescendant, isWrappableNoneditableElm)) {\n              if (!currentWrapElm) {\n                currentWrapElm = dom.clone(wrapElm, false);\n                parentNode.insertBefore(currentWrapElm, node);\n                newWrappers.push(currentWrapElm);\n              }\n              if (isWrappableNoneditableElm && hasContentEditableState) {\n                contentEditable = lastContentEditable;\n              }\n              currentWrapElm.appendChild(node);\n            } else {\n              currentWrapElm = null;\n              each$e(from(node.childNodes), process);\n              if (hasContentEditableState) {\n                contentEditable = lastContentEditable;\n              }\n              currentWrapElm = null;\n            }\n          };\n          each$e(nodes, process);\n        });\n        if (format.links === true) {\n          each$e(newWrappers, node => {\n            const process = node => {\n              if (node.nodeName === 'A') {\n                setElementFormat(node, format);\n              }\n              each$e(from(node.childNodes), process);\n            };\n            process(node);\n          });\n        }\n        each$e(newWrappers, node => {\n          const getChildCount = node => {\n            let count = 0;\n            each$e(node.childNodes, node => {\n              if (!isEmptyTextNode$1(node) && !isBookmarkNode$1(node)) {\n                count++;\n              }\n            });\n            return count;\n          };\n          const mergeStyles = node => {\n            const childElement = find$2(node.childNodes, isElementNode$1).filter(child => dom.getContentEditable(child) !== 'false' && matchName(dom, child, format));\n            return childElement.map(child => {\n              const clone = dom.clone(child, false);\n              setElementFormat(clone);\n              dom.replace(clone, node, true);\n              dom.remove(child, true);\n              return clone;\n            }).getOr(node);\n          };\n          const childCount = getChildCount(node);\n          if ((newWrappers.length > 1 || !dom.isBlock(node)) && childCount === 0) {\n            dom.remove(node, true);\n            return;\n          }\n          if (isInlineFormat(format) || isBlockFormat(format) && format.wrapper) {\n            if (!format.exact && childCount === 1) {\n              node = mergeStyles(node);\n            }\n            mergeWithChildren(ed, formatList, vars, node);\n            mergeWithParents(ed, format, name, vars, node);\n            mergeBackgroundColorAndFontSize(dom, format, vars, node);\n            mergeTextDecorationsAndColor(dom, format, vars, node);\n            mergeSubSup(dom, format, vars, node);\n            mergeSiblings(ed, format, vars, node);\n          }\n        });\n      };\n      const targetNode = isNode(node) ? node : selection.getNode();\n      if (dom.getContentEditable(targetNode) === 'false' && !isWrappableNoneditable(ed, targetNode)) {\n        node = targetNode;\n        applyNodeStyle(formatList, node);\n        fireFormatApply(ed, name, node, vars);\n        return;\n      }\n      if (format) {\n        if (node) {\n          if (isNode(node)) {\n            if (!applyNodeStyle(formatList, node)) {\n              const rng = dom.createRng();\n              rng.setStartBefore(node);\n              rng.setEndAfter(node);\n              applyRngStyle(dom, expandRng(dom, rng, formatList), true);\n            }\n          } else {\n            applyRngStyle(dom, node, true);\n          }\n        } else {\n          if (!isCollapsed || !isInlineFormat(format) || getCellsFromEditor(ed).length) {\n            selection.setRng(normalize(selection.getRng()));\n            preserveSelection(ed, () => {\n              runOnRanges(ed, (selectionRng, fake) => {\n                const expandedRng = fake ? selectionRng : expandRng(dom, selectionRng, formatList);\n                applyRngStyle(dom, expandedRng, false);\n              });\n            }, always);\n            ed.nodeChanged();\n          } else {\n            applyCaretFormat(ed, name, vars);\n          }\n          getExpandedListItemFormat(ed.formatter, name).each(liFmt => {\n            each$e(getFullySelectedListItems(ed.selection), li => applyStyles(dom, li, liFmt, vars));\n          });\n        }\n        postProcess$1(name, ed);\n      }\n      fireFormatApply(ed, name, node, vars);\n    };\n    const applyFormat$1 = (editor, name, vars, node) => {\n      if (node || editor.selection.isEditable()) {\n        applyFormatAction(editor, name, vars, node);\n      }\n    };\n\n    const hasVars = value => has$2(value, 'vars');\n    const setup$u = (registeredFormatListeners, editor) => {\n      registeredFormatListeners.set({});\n      editor.on('NodeChange', e => {\n        updateAndFireChangeCallbacks(editor, e.element, registeredFormatListeners.get());\n      });\n      editor.on('FormatApply FormatRemove', e => {\n        const element = Optional.from(e.node).map(nodeOrRange => isNode(nodeOrRange) ? nodeOrRange : nodeOrRange.startContainer).bind(node => isElement$6(node) ? Optional.some(node) : Optional.from(node.parentElement)).getOrThunk(() => fallbackElement(editor));\n        updateAndFireChangeCallbacks(editor, element, registeredFormatListeners.get());\n      });\n    };\n    const fallbackElement = editor => editor.selection.getStart();\n    const matchingNode = (editor, parents, format, similar, vars) => {\n      const isMatchingNode = node => {\n        const matchingFormat = editor.formatter.matchNode(node, format, vars !== null && vars !== void 0 ? vars : {}, similar);\n        return !isUndefined(matchingFormat);\n      };\n      const isUnableToMatch = node => {\n        if (matchesUnInheritedFormatSelector(editor, node, format)) {\n          return true;\n        } else {\n          if (!similar) {\n            return isNonNullable(editor.formatter.matchNode(node, format, vars, true));\n          } else {\n            return false;\n          }\n        }\n      };\n      return findUntil$1(parents, isMatchingNode, isUnableToMatch);\n    };\n    const getParents = (editor, elm) => {\n      const element = elm !== null && elm !== void 0 ? elm : fallbackElement(editor);\n      return filter$5(getParents$2(editor.dom, element), node => isElement$6(node) && !isBogus$2(node));\n    };\n    const updateAndFireChangeCallbacks = (editor, elm, registeredCallbacks) => {\n      const parents = getParents(editor, elm);\n      each$d(registeredCallbacks, (data, format) => {\n        const runIfChanged = spec => {\n          const match = matchingNode(editor, parents, format, spec.similar, hasVars(spec) ? spec.vars : undefined);\n          const isSet = match.isSome();\n          if (spec.state.get() !== isSet) {\n            spec.state.set(isSet);\n            const node = match.getOr(elm);\n            if (hasVars(spec)) {\n              spec.callback(isSet, {\n                node,\n                format,\n                parents\n              });\n            } else {\n              each$e(spec.callbacks, callback => callback(isSet, {\n                node,\n                format,\n                parents\n              }));\n            }\n          }\n        };\n        each$e([\n          data.withSimilar,\n          data.withoutSimilar\n        ], runIfChanged);\n        each$e(data.withVars, runIfChanged);\n      });\n    };\n    const addListeners = (editor, registeredFormatListeners, formats, callback, similar, vars) => {\n      const formatChangeItems = registeredFormatListeners.get();\n      each$e(formats.split(','), format => {\n        const group = get$a(formatChangeItems, format).getOrThunk(() => {\n          const base = {\n            withSimilar: {\n              state: Cell(false),\n              similar: true,\n              callbacks: []\n            },\n            withoutSimilar: {\n              state: Cell(false),\n              similar: false,\n              callbacks: []\n            },\n            withVars: []\n          };\n          formatChangeItems[format] = base;\n          return base;\n        });\n        const getCurrent = () => {\n          const parents = getParents(editor);\n          return matchingNode(editor, parents, format, similar, vars).isSome();\n        };\n        if (isUndefined(vars)) {\n          const toAppendTo = similar ? group.withSimilar : group.withoutSimilar;\n          toAppendTo.callbacks.push(callback);\n          if (toAppendTo.callbacks.length === 1) {\n            toAppendTo.state.set(getCurrent());\n          }\n        } else {\n          group.withVars.push({\n            state: Cell(getCurrent()),\n            similar,\n            vars,\n            callback\n          });\n        }\n      });\n      registeredFormatListeners.set(formatChangeItems);\n    };\n    const removeListeners = (registeredFormatListeners, formats, callback) => {\n      const formatChangeItems = registeredFormatListeners.get();\n      each$e(formats.split(','), format => get$a(formatChangeItems, format).each(group => {\n        formatChangeItems[format] = {\n          withSimilar: {\n            ...group.withSimilar,\n            callbacks: filter$5(group.withSimilar.callbacks, cb => cb !== callback)\n          },\n          withoutSimilar: {\n            ...group.withoutSimilar,\n            callbacks: filter$5(group.withoutSimilar.callbacks, cb => cb !== callback)\n          },\n          withVars: filter$5(group.withVars, item => item.callback !== callback)\n        };\n      }));\n      registeredFormatListeners.set(formatChangeItems);\n    };\n    const formatChangedInternal = (editor, registeredFormatListeners, formats, callback, similar, vars) => {\n      addListeners(editor, registeredFormatListeners, formats, callback, similar, vars);\n      return { unbind: () => removeListeners(registeredFormatListeners, formats, callback) };\n    };\n\n    const toggle = (editor, name, vars, node) => {\n      const fmt = editor.formatter.get(name);\n      if (fmt) {\n        if (match$2(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {\n          removeFormat$1(editor, name, vars, node);\n        } else {\n          applyFormat$1(editor, name, vars, node);\n        }\n      }\n    };\n\n    const explode$1 = Tools.explode;\n    const create$8 = () => {\n      const filters = {};\n      const addFilter = (name, callback) => {\n        each$e(explode$1(name), name => {\n          if (!has$2(filters, name)) {\n            filters[name] = {\n              name,\n              callbacks: []\n            };\n          }\n          filters[name].callbacks.push(callback);\n        });\n      };\n      const getFilters = () => values(filters);\n      const removeFilter = (name, callback) => {\n        each$e(explode$1(name), name => {\n          if (has$2(filters, name)) {\n            if (isNonNullable(callback)) {\n              const filter = filters[name];\n              const newCallbacks = filter$5(filter.callbacks, c => c !== callback);\n              if (newCallbacks.length > 0) {\n                filter.callbacks = newCallbacks;\n              } else {\n                delete filters[name];\n              }\n            } else {\n              delete filters[name];\n            }\n          }\n        });\n      };\n      return {\n        addFilter,\n        getFilters,\n        removeFilter\n      };\n    };\n\n    const removeAttrs = (node, names) => {\n      each$e(names, name => {\n        node.attr(name, null);\n      });\n    };\n    const addFontToSpansFilter = (domParser, styles, fontSizes) => {\n      domParser.addNodeFilter('font', nodes => {\n        each$e(nodes, node => {\n          const props = styles.parse(node.attr('style'));\n          const color = node.attr('color');\n          const face = node.attr('face');\n          const size = node.attr('size');\n          if (color) {\n            props.color = color;\n          }\n          if (face) {\n            props['font-family'] = face;\n          }\n          if (size) {\n            toInt(size).each(num => {\n              props['font-size'] = fontSizes[num - 1];\n            });\n          }\n          node.name = 'span';\n          node.attr('style', styles.serialize(props));\n          removeAttrs(node, [\n            'color',\n            'face',\n            'size'\n          ]);\n        });\n      });\n    };\n    const addStrikeFilter = (domParser, schema, styles) => {\n      domParser.addNodeFilter('strike', nodes => {\n        const convertToSTag = schema.type !== 'html4';\n        each$e(nodes, node => {\n          if (convertToSTag) {\n            node.name = 's';\n          } else {\n            const props = styles.parse(node.attr('style'));\n            props['text-decoration'] = 'line-through';\n            node.name = 'span';\n            node.attr('style', styles.serialize(props));\n          }\n        });\n      });\n    };\n    const addFilters = (domParser, settings, schema) => {\n      var _a;\n      const styles = Styles();\n      if (settings.convert_fonts_to_spans) {\n        addFontToSpansFilter(domParser, styles, Tools.explode((_a = settings.font_size_legacy_values) !== null && _a !== void 0 ? _a : ''));\n      }\n      addStrikeFilter(domParser, schema, styles);\n    };\n    const register$5 = (domParser, settings, schema) => {\n      if (settings.inline_styles) {\n        addFilters(domParser, settings, schema);\n      }\n    };\n\n    const addNodeFilter = (settings, htmlParser, schema) => {\n      htmlParser.addNodeFilter('br', (nodes, _, args) => {\n        const blockElements = Tools.extend({}, schema.getBlockElements());\n        const nonEmptyElements = schema.getNonEmptyElements();\n        const whitespaceElements = schema.getWhitespaceElements();\n        blockElements.body = 1;\n        const isBlock = node => node.name in blockElements || isTransparentAstBlock(schema, node);\n        for (let i = 0, l = nodes.length; i < l; i++) {\n          let node = nodes[i];\n          let parent = node.parent;\n          if (parent && isBlock(parent) && node === parent.lastChild) {\n            let prev = node.prev;\n            while (prev) {\n              const prevName = prev.name;\n              if (prevName !== 'span' || prev.attr('data-mce-type') !== 'bookmark') {\n                if (prevName === 'br') {\n                  node = null;\n                }\n                break;\n              }\n              prev = prev.prev;\n            }\n            if (node) {\n              node.remove();\n              if (isEmpty(schema, nonEmptyElements, whitespaceElements, parent)) {\n                const elementRule = schema.getElementRule(parent.name);\n                if (elementRule) {\n                  if (elementRule.removeEmpty) {\n                    parent.remove();\n                  } else if (elementRule.paddEmpty) {\n                    paddEmptyNode(settings, args, isBlock, parent);\n                  }\n                }\n              }\n            }\n          } else {\n            let lastParent = node;\n            while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) {\n              lastParent = parent;\n              if (blockElements[parent.name]) {\n                break;\n              }\n              parent = parent.parent;\n            }\n            if (lastParent === parent) {\n              const textNode = new AstNode('#text', 3);\n              textNode.value = nbsp;\n              node.replace(textNode);\n            }\n          }\n        }\n      });\n    };\n\n    const blobUriToBlob = url => fetch(url).then(res => res.ok ? res.blob() : Promise.reject()).catch(() => Promise.reject({\n      message: `Cannot convert ${ url } to Blob. Resource might not exist or is inaccessible.`,\n      uriType: 'blob'\n    }));\n    const extractBase64Data = data => {\n      const matches = /([a-z0-9+\\/=\\s]+)/i.exec(data);\n      return matches ? matches[1] : '';\n    };\n    const parseDataUri = uri => {\n      const [type, ...rest] = uri.split(',');\n      const data = rest.join(',');\n      const matches = /data:([^/]+\\/[^;]+)(;.+)?/.exec(type);\n      if (matches) {\n        const base64Encoded = matches[2] === ';base64';\n        const extractedData = base64Encoded ? extractBase64Data(data) : decodeURIComponent(data);\n        return Optional.some({\n          type: matches[1],\n          data: extractedData,\n          base64Encoded\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const buildBlob = (type, data, base64Encoded = true) => {\n      let str = data;\n      if (base64Encoded) {\n        try {\n          str = atob(data);\n        } catch (e) {\n          return Optional.none();\n        }\n      }\n      const arr = new Uint8Array(str.length);\n      for (let i = 0; i < arr.length; i++) {\n        arr[i] = str.charCodeAt(i);\n      }\n      return Optional.some(new Blob([arr], { type }));\n    };\n    const dataUriToBlob = uri => {\n      return new Promise((resolve, reject) => {\n        parseDataUri(uri).bind(({type, data, base64Encoded}) => buildBlob(type, data, base64Encoded)).fold(() => reject('Invalid data URI'), resolve);\n      });\n    };\n    const uriToBlob = url => {\n      if (startsWith(url, 'blob:')) {\n        return blobUriToBlob(url);\n      } else if (startsWith(url, 'data:')) {\n        return dataUriToBlob(url);\n      } else {\n        return Promise.reject('Unknown URI format');\n      }\n    };\n    const blobToDataUri = blob => {\n      return new Promise((resolve, reject) => {\n        const reader = new FileReader();\n        reader.onloadend = () => {\n          resolve(reader.result);\n        };\n        reader.onerror = () => {\n          var _a;\n          reject((_a = reader.error) === null || _a === void 0 ? void 0 : _a.message);\n        };\n        reader.readAsDataURL(blob);\n      });\n    };\n\n    let count$1 = 0;\n    const uniqueId$1 = prefix => {\n      return (prefix || 'blobid') + count$1++;\n    };\n    const processDataUri = (dataUri, base64Only, generateBlobInfo) => {\n      return parseDataUri(dataUri).bind(({data, type, base64Encoded}) => {\n        if (base64Only && !base64Encoded) {\n          return Optional.none();\n        } else {\n          const base64 = base64Encoded ? data : btoa(data);\n          return generateBlobInfo(base64, type);\n        }\n      });\n    };\n    const createBlobInfo$1 = (blobCache, blob, base64) => {\n      const blobInfo = blobCache.create(uniqueId$1(), blob, base64);\n      blobCache.add(blobInfo);\n      return blobInfo;\n    };\n    const dataUriToBlobInfo = (blobCache, dataUri, base64Only = false) => {\n      return processDataUri(dataUri, base64Only, (base64, type) => Optional.from(blobCache.getByData(base64, type)).orThunk(() => buildBlob(type, base64).map(blob => createBlobInfo$1(blobCache, blob, base64))));\n    };\n    const imageToBlobInfo = (blobCache, imageSrc) => {\n      const invalidDataUri = () => Promise.reject('Invalid data URI');\n      if (startsWith(imageSrc, 'blob:')) {\n        const blobInfo = blobCache.getByUri(imageSrc);\n        if (isNonNullable(blobInfo)) {\n          return Promise.resolve(blobInfo);\n        } else {\n          return uriToBlob(imageSrc).then(blob => {\n            return blobToDataUri(blob).then(dataUri => {\n              return processDataUri(dataUri, false, base64 => {\n                return Optional.some(createBlobInfo$1(blobCache, blob, base64));\n              }).getOrThunk(invalidDataUri);\n            });\n          });\n        }\n      } else if (startsWith(imageSrc, 'data:')) {\n        return dataUriToBlobInfo(blobCache, imageSrc).fold(invalidDataUri, blobInfo => Promise.resolve(blobInfo));\n      } else {\n        return Promise.reject('Unknown image data format');\n      }\n    };\n\n    const isBogusImage = img => isNonNullable(img.attr('data-mce-bogus'));\n    const isInternalImageSource = img => img.attr('src') === Env.transparentSrc || isNonNullable(img.attr('data-mce-placeholder'));\n    const registerBase64ImageFilter = (parser, settings) => {\n      const {blob_cache: blobCache} = settings;\n      if (blobCache) {\n        const processImage = img => {\n          const inputSrc = img.attr('src');\n          if (isInternalImageSource(img) || isBogusImage(img) || isNullable(inputSrc)) {\n            return;\n          }\n          dataUriToBlobInfo(blobCache, inputSrc, true).each(blobInfo => {\n            img.attr('src', blobInfo.blobUri());\n          });\n        };\n        parser.addAttributeFilter('src', nodes => each$e(nodes, processImage));\n      }\n    };\n    const isMimeType = (mime, type) => startsWith(mime, `${ type }/`);\n    const createSafeEmbed = (mime, src, width, height, sandboxIframes) => {\n      let name;\n      if (isUndefined(mime)) {\n        name = 'iframe';\n      } else if (isMimeType(mime, 'image')) {\n        name = 'img';\n      } else if (isMimeType(mime, 'video')) {\n        name = 'video';\n      } else if (isMimeType(mime, 'audio')) {\n        name = 'audio';\n      } else {\n        name = 'iframe';\n      }\n      const embed = new AstNode(name, 1);\n      embed.attr(name === 'audio' ? { src } : {\n        src,\n        width,\n        height\n      });\n      if (name === 'audio' || name === 'video') {\n        embed.attr('controls', '');\n      }\n      if (name === 'iframe' && sandboxIframes) {\n        embed.attr('sandbox', '');\n      }\n      return embed;\n    };\n    const register$4 = (parser, settings) => {\n      const schema = parser.schema;\n      if (settings.remove_trailing_brs) {\n        addNodeFilter(settings, parser, schema);\n      }\n      parser.addAttributeFilter('href', nodes => {\n        let i = nodes.length;\n        const appendRel = rel => {\n          const parts = rel.split(' ').filter(p => p.length > 0);\n          return parts.concat(['noopener']).sort().join(' ');\n        };\n        const addNoOpener = rel => {\n          const newRel = rel ? Tools.trim(rel) : '';\n          if (!/\\b(noopener)\\b/g.test(newRel)) {\n            return appendRel(newRel);\n          } else {\n            return newRel;\n          }\n        };\n        if (!settings.allow_unsafe_link_target) {\n          while (i--) {\n            const node = nodes[i];\n            if (node.name === 'a' && node.attr('target') === '_blank') {\n              node.attr('rel', addNoOpener(node.attr('rel')));\n            }\n          }\n        }\n      });\n      if (!settings.allow_html_in_named_anchor) {\n        parser.addAttributeFilter('id,name', nodes => {\n          let i = nodes.length, sibling, prevSibling, parent, node;\n          while (i--) {\n            node = nodes[i];\n            if (node.name === 'a' && node.firstChild && !node.attr('href')) {\n              parent = node.parent;\n              sibling = node.lastChild;\n              while (sibling && parent) {\n                prevSibling = sibling.prev;\n                parent.insert(sibling, node);\n                sibling = prevSibling;\n              }\n            }\n          }\n        });\n      }\n      if (settings.fix_list_elements) {\n        parser.addNodeFilter('ul,ol', nodes => {\n          let i = nodes.length, node, parentNode;\n          while (i--) {\n            node = nodes[i];\n            parentNode = node.parent;\n            if (parentNode && (parentNode.name === 'ul' || parentNode.name === 'ol')) {\n              if (node.prev && node.prev.name === 'li') {\n                node.prev.append(node);\n              } else {\n                const li = new AstNode('li', 1);\n                li.attr('style', 'list-style-type: none');\n                node.wrap(li);\n              }\n            }\n          }\n        });\n      }\n      const validClasses = schema.getValidClasses();\n      if (settings.validate && validClasses) {\n        parser.addAttributeFilter('class', nodes => {\n          var _a;\n          let i = nodes.length;\n          while (i--) {\n            const node = nodes[i];\n            const clazz = (_a = node.attr('class')) !== null && _a !== void 0 ? _a : '';\n            const classList = Tools.explode(clazz, ' ');\n            let classValue = '';\n            for (let ci = 0; ci < classList.length; ci++) {\n              const className = classList[ci];\n              let valid = false;\n              let validClassesMap = validClasses['*'];\n              if (validClassesMap && validClassesMap[className]) {\n                valid = true;\n              }\n              validClassesMap = validClasses[node.name];\n              if (!valid && validClassesMap && validClassesMap[className]) {\n                valid = true;\n              }\n              if (valid) {\n                if (classValue) {\n                  classValue += ' ';\n                }\n                classValue += className;\n              }\n            }\n            if (!classValue.length) {\n              classValue = null;\n            }\n            node.attr('class', classValue);\n          }\n        });\n      }\n      registerBase64ImageFilter(parser, settings);\n      if (settings.convert_unsafe_embeds) {\n        parser.addNodeFilter('object,embed', nodes => each$e(nodes, node => {\n          node.replace(createSafeEmbed(node.attr('type'), node.name === 'object' ? node.attr('data') : node.attr('src'), node.attr('width'), node.attr('height'), settings.sandbox_iframes));\n        }));\n      }\n      if (settings.sandbox_iframes) {\n        parser.addNodeFilter('iframe', nodes => each$e(nodes, node => node.attr('sandbox', '')));\n      }\n    };\n\n    /*! @license DOMPurify 3.1.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.7/LICENSE */\n\n    const {\n      entries,\n      setPrototypeOf,\n      isFrozen,\n      getPrototypeOf,\n      getOwnPropertyDescriptor\n    } = Object;\n    let {\n      freeze,\n      seal,\n      create: create$7\n    } = Object; // eslint-disable-line import/no-mutable-exports\n    let {\n      apply,\n      construct\n    } = typeof Reflect !== 'undefined' && Reflect;\n    if (!freeze) {\n      freeze = function freeze(x) {\n        return x;\n      };\n    }\n    if (!seal) {\n      seal = function seal(x) {\n        return x;\n      };\n    }\n    if (!apply) {\n      apply = function apply(fun, thisValue, args) {\n        return fun.apply(thisValue, args);\n      };\n    }\n    if (!construct) {\n      construct = function construct(Func, args) {\n        return new Func(...args);\n      };\n    }\n    const arrayForEach = unapply(Array.prototype.forEach);\n    const arrayPop = unapply(Array.prototype.pop);\n    const arrayPush = unapply(Array.prototype.push);\n    const stringToLowerCase = unapply(String.prototype.toLowerCase);\n    const stringToString = unapply(String.prototype.toString);\n    const stringMatch = unapply(String.prototype.match);\n    const stringReplace = unapply(String.prototype.replace);\n    const stringIndexOf = unapply(String.prototype.indexOf);\n    const stringTrim = unapply(String.prototype.trim);\n    const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n    const regExpTest = unapply(RegExp.prototype.test);\n    const typeErrorCreate = unconstruct(TypeError);\n\n    /**\n     * Creates a new function that calls the given function with a specified thisArg and arguments.\n     *\n     * @param {Function} func - The function to be wrapped and called.\n     * @returns {Function} A new function that calls the given function with a specified thisArg and arguments.\n     */\n    function unapply(func) {\n      return function (thisArg) {\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n        return apply(func, thisArg, args);\n      };\n    }\n\n    /**\n     * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n     *\n     * @param {Function} func - The constructor function to be wrapped and called.\n     * @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments.\n     */\n    function unconstruct(func) {\n      return function () {\n        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          args[_key2] = arguments[_key2];\n        }\n        return construct(func, args);\n      };\n    }\n\n    /**\n     * Add properties to a lookup table\n     *\n     * @param {Object} set - The set to which elements will be added.\n     * @param {Array} array - The array containing elements to be added to the set.\n     * @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n     * @returns {Object} The modified set with added elements.\n     */\n    function addToSet(set, array) {\n      let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n      if (setPrototypeOf) {\n        // Make 'in' and truthy checks like Boolean(set.constructor)\n        // independent of any properties defined on Object.prototype.\n        // Prevent prototype setters from intercepting set as a this value.\n        setPrototypeOf(set, null);\n      }\n      let l = array.length;\n      while (l--) {\n        let element = array[l];\n        if (typeof element === 'string') {\n          const lcElement = transformCaseFunc(element);\n          if (lcElement !== element) {\n            // Config presets (e.g. tags.js, attrs.js) are immutable.\n            if (!isFrozen(array)) {\n              array[l] = lcElement;\n            }\n            element = lcElement;\n          }\n        }\n        set[element] = true;\n      }\n      return set;\n    }\n\n    /**\n     * Clean up an array to harden against CSPP\n     *\n     * @param {Array} array - The array to be cleaned.\n     * @returns {Array} The cleaned version of the array\n     */\n    function cleanArray(array) {\n      for (let index = 0; index < array.length; index++) {\n        const isPropertyExist = objectHasOwnProperty(array, index);\n        if (!isPropertyExist) {\n          array[index] = null;\n        }\n      }\n      return array;\n    }\n\n    /**\n     * Shallow clone an object\n     *\n     * @param {Object} object - The object to be cloned.\n     * @returns {Object} A new object that copies the original.\n     */\n    function clone(object) {\n      const newObject = create$7(null);\n      for (const [property, value] of entries(object)) {\n        const isPropertyExist = objectHasOwnProperty(object, property);\n        if (isPropertyExist) {\n          if (Array.isArray(value)) {\n            newObject[property] = cleanArray(value);\n          } else if (value && typeof value === 'object' && value.constructor === Object) {\n            newObject[property] = clone(value);\n          } else {\n            newObject[property] = value;\n          }\n        }\n      }\n      return newObject;\n    }\n\n    /**\n     * This method automatically checks if the prop is function or getter and behaves accordingly.\n     *\n     * @param {Object} object - The object to look up the getter function in its prototype chain.\n     * @param {String} prop - The property name for which to find the getter function.\n     * @returns {Function} The getter function found in the prototype chain or a fallback function.\n     */\n    function lookupGetter(object, prop) {\n      while (object !== null) {\n        const desc = getOwnPropertyDescriptor(object, prop);\n        if (desc) {\n          if (desc.get) {\n            return unapply(desc.get);\n          }\n          if (typeof desc.value === 'function') {\n            return unapply(desc.value);\n          }\n        }\n        object = getPrototypeOf(object);\n      }\n      function fallbackValue() {\n        return null;\n      }\n      return fallbackValue;\n    }\n\n    const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n    // SVG\n    const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n    const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n    // List of SVG elements that are disallowed by default.\n    // We still need to know them so that we can do namespace\n    // checks properly in case one wants to add them to\n    // allow-list.\n    const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n    const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n\n    // Similarly to SVG, we want to know all MathML elements,\n    // even those that we disallow by default.\n    const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n    const text = freeze(['#text']);\n\n    const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\n    const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n    const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n    const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n    // eslint-disable-next-line unicorn/better-regex\n    const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n    const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\n    const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\n    const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n    const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n    const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n    );\n    const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n    const ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n    );\n    const DOCTYPE_NAME = seal(/^html$/i);\n    const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\n    var EXPRESSIONS = /*#__PURE__*/Object.freeze({\n      __proto__: null,\n      MUSTACHE_EXPR: MUSTACHE_EXPR,\n      ERB_EXPR: ERB_EXPR,\n      TMPLIT_EXPR: TMPLIT_EXPR,\n      DATA_ATTR: DATA_ATTR,\n      ARIA_ATTR: ARIA_ATTR,\n      IS_ALLOWED_URI: IS_ALLOWED_URI,\n      IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n      ATTR_WHITESPACE: ATTR_WHITESPACE,\n      DOCTYPE_NAME: DOCTYPE_NAME,\n      CUSTOM_ELEMENT: CUSTOM_ELEMENT\n    });\n\n    // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n    const NODE_TYPE = {\n      element: 1,\n      attribute: 2,\n      text: 3,\n      cdataSection: 4,\n      entityReference: 5,\n      // Deprecated\n      entityNode: 6,\n      // Deprecated\n      progressingInstruction: 7,\n      comment: 8,\n      document: 9,\n      documentType: 10,\n      documentFragment: 11,\n      notation: 12 // Deprecated\n    };\n    const getGlobal = function getGlobal() {\n      return typeof window === 'undefined' ? null : window;\n    };\n\n    /**\n     * Creates a no-op policy for internal use only.\n     * Don't export this function outside this module!\n     * @param {TrustedTypePolicyFactory} trustedTypes The policy factory.\n     * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n     * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types\n     * are not supported or creating the policy failed).\n     */\n    const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n      if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n        return null;\n      }\n\n      // Allow the callers to control the unique policy name\n      // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n      // Policy creation with duplicate names throws in Trusted Types.\n      let suffix = null;\n      const ATTR_NAME = 'data-tt-policy-suffix';\n      if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n        suffix = purifyHostElement.getAttribute(ATTR_NAME);\n      }\n      const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n      try {\n        return trustedTypes.createPolicy(policyName, {\n          createHTML(html) {\n            return html;\n          },\n          createScriptURL(scriptUrl) {\n            return scriptUrl;\n          }\n        });\n      } catch (_) {\n        // Policy creation failed (most likely another DOMPurify script has\n        // already run). Skip creating the policy, as this will only cause errors\n        // if TT are enforced.\n        console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n        return null;\n      }\n    };\n    function createDOMPurify() {\n      let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n      const DOMPurify = root => createDOMPurify(root);\n\n      /**\n       * Version label, exposed for easier checks\n       * if DOMPurify is up to date or not\n       */\n      DOMPurify.version = '3.1.7';\n\n      /**\n       * Array of elements that DOMPurify removed during sanitation.\n       * Empty if nothing was removed.\n       */\n      DOMPurify.removed = [];\n      if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document) {\n        // Not running in a browser, provide a factory function\n        // so that you can pass your own Window\n        DOMPurify.isSupported = false;\n        return DOMPurify;\n      }\n      let {\n        document\n      } = window;\n      const originalDocument = document;\n      const currentScript = originalDocument.currentScript;\n      const {\n        DocumentFragment,\n        HTMLTemplateElement,\n        Node,\n        Element,\n        NodeFilter,\n        NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n        HTMLFormElement,\n        DOMParser,\n        trustedTypes\n      } = window;\n      const ElementPrototype = Element.prototype;\n      const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n      const remove = lookupGetter(ElementPrototype, 'remove');\n      const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n      const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n      const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n      // As per issue #47, the web-components registry is inherited by a\n      // new document created via createHTMLDocument. As per the spec\n      // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n      // a new empty registry is used when creating a template contents owner\n      // document, so we use that as our parent document to ensure nothing\n      // is inherited.\n      if (typeof HTMLTemplateElement === 'function') {\n        const template = document.createElement('template');\n        if (template.content && template.content.ownerDocument) {\n          document = template.content.ownerDocument;\n        }\n      }\n      let trustedTypesPolicy;\n      let emptyHTML = '';\n      const {\n        implementation,\n        createNodeIterator,\n        createDocumentFragment,\n        getElementsByTagName\n      } = document;\n      const {\n        importNode\n      } = originalDocument;\n      let hooks = {};\n\n      /**\n       * Expose whether this browser supports running the full DOMPurify.\n       */\n      DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n      const {\n        MUSTACHE_EXPR,\n        ERB_EXPR,\n        TMPLIT_EXPR,\n        DATA_ATTR,\n        ARIA_ATTR,\n        IS_SCRIPT_OR_DATA,\n        ATTR_WHITESPACE,\n        CUSTOM_ELEMENT\n      } = EXPRESSIONS;\n      let {\n        IS_ALLOWED_URI: IS_ALLOWED_URI$1\n      } = EXPRESSIONS;\n\n      /**\n       * We consider the elements and attributes below to be safe. Ideally\n       * don't add any new ones but feel free to remove unwanted ones.\n       */\n\n      /* allowed element names */\n      let ALLOWED_TAGS = null;\n      const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n\n      /* Allowed attribute names */\n      let ALLOWED_ATTR = null;\n      const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n\n      /*\n       * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n       * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n       * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n       * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n       */\n      let CUSTOM_ELEMENT_HANDLING = Object.seal(create$7(null, {\n        tagNameCheck: {\n          writable: true,\n          configurable: false,\n          enumerable: true,\n          value: null\n        },\n        attributeNameCheck: {\n          writable: true,\n          configurable: false,\n          enumerable: true,\n          value: null\n        },\n        allowCustomizedBuiltInElements: {\n          writable: true,\n          configurable: false,\n          enumerable: true,\n          value: false\n        }\n      }));\n\n      /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n      let FORBID_TAGS = null;\n\n      /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n      let FORBID_ATTR = null;\n\n      /* Decide if ARIA attributes are okay */\n      let ALLOW_ARIA_ATTR = true;\n\n      /* Decide if custom data attributes are okay */\n      let ALLOW_DATA_ATTR = true;\n\n      /* Decide if unknown protocols are okay */\n      let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n      /* Decide if self-closing tags in attributes are allowed.\n       * Usually removed due to a mXSS issue in jQuery 3.0 */\n      let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n      /* Output should be safe for common template engines.\n       * This means, DOMPurify removes data attributes, mustaches and ERB\n       */\n      let SAFE_FOR_TEMPLATES = false;\n\n      /* Output should be safe even for XML used within HTML and alike.\n       * This means, DOMPurify removes comments when containing risky content.\n       */\n      let SAFE_FOR_XML = true;\n\n      /* Decide if document with <html>... should be returned */\n      let WHOLE_DOCUMENT = false;\n\n      /* Track whether config is already set on this instance of DOMPurify. */\n      let SET_CONFIG = false;\n\n      /* Decide if all elements (e.g. style, script) must be children of\n       * document.body. By default, browsers might move them to document.head */\n      let FORCE_BODY = false;\n\n      /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n       * string (or a TrustedHTML object if Trusted Types are supported).\n       * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n       */\n      let RETURN_DOM = false;\n\n      /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n       * string  (or a TrustedHTML object if Trusted Types are supported) */\n      let RETURN_DOM_FRAGMENT = false;\n\n      /* Try to return a Trusted Type object instead of a string, return a string in\n       * case Trusted Types are not supported  */\n      let RETURN_TRUSTED_TYPE = false;\n\n      /* Output should be free from DOM clobbering attacks?\n       * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n       */\n      let SANITIZE_DOM = true;\n\n      /* Achieve full DOM Clobbering protection by isolating the namespace of named\n       * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n       *\n       * HTML/DOM spec rules that enable DOM Clobbering:\n       *   - Named Access on Window (\u00A77.3.3)\n       *   - DOM Tree Accessors (\u00A73.1.5)\n       *   - Form Element Parent-Child Relations (\u00A74.10.3)\n       *   - Iframe srcdoc / Nested WindowProxies (\u00A74.8.5)\n       *   - HTMLCollection (\u00A74.2.10.2)\n       *\n       * Namespace isolation is implemented by prefixing `id` and `name` attributes\n       * with a constant string, i.e., `user-content-`\n       */\n      let SANITIZE_NAMED_PROPS = false;\n      const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n      /* Keep element content when removing element? */\n      let KEEP_CONTENT = true;\n\n      /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n       * of importing it into a new Document and returning a sanitized copy */\n      let IN_PLACE = false;\n\n      /* Allow usage of profiles like html, svg and mathMl */\n      let USE_PROFILES = {};\n\n      /* Tags to ignore content of when KEEP_CONTENT is true */\n      let FORBID_CONTENTS = null;\n      const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n      /* Tags that are safe for data: URIs */\n      let DATA_URI_TAGS = null;\n      const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n      /* Attributes safe for values like \"javascript:\" */\n      let URI_SAFE_ATTRIBUTES = null;\n      const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n      const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n      const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n      const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n      /* Document namespace */\n      let NAMESPACE = HTML_NAMESPACE;\n      let IS_EMPTY_INPUT = false;\n\n      /* Allowed XHTML+XML namespaces */\n      let ALLOWED_NAMESPACES = null;\n      const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n\n      /* Parsing of strict XHTML documents */\n      let PARSER_MEDIA_TYPE = null;\n      const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n      const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n      let transformCaseFunc = null;\n\n      /* Keep a reference to config to pass to hooks */\n      let CONFIG = null;\n\n      /* Ideally, do not touch anything below this line */\n      /* ______________________________________________ */\n\n      const formElement = document.createElement('form');\n      const isRegexOrFunction = function isRegexOrFunction(testValue) {\n        return testValue instanceof RegExp || testValue instanceof Function;\n      };\n\n      /**\n       * _parseConfig\n       *\n       * @param  {Object} cfg optional config literal\n       */\n      // eslint-disable-next-line complexity\n      const _parseConfig = function _parseConfig() {\n        let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        if (CONFIG && CONFIG === cfg) {\n          return;\n        }\n\n        /* Shield configuration object from tampering */\n        if (!cfg || typeof cfg !== 'object') {\n          cfg = {};\n        }\n\n        /* Shield configuration object from prototype pollution */\n        cfg = clone(cfg);\n        PARSER_MEDIA_TYPE =\n        // eslint-disable-next-line unicorn/prefer-includes\n        SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n\n        // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n        transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n\n        /* Set configuration parameters */\n        ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n        ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n        ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n        URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n        // eslint-disable-line indent\n        cfg.ADD_URI_SAFE_ATTR,\n        // eslint-disable-line indent\n        transformCaseFunc // eslint-disable-line indent\n        ) // eslint-disable-line indent\n        : DEFAULT_URI_SAFE_ATTRIBUTES;\n        DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS),\n        // eslint-disable-line indent\n        cfg.ADD_DATA_URI_TAGS,\n        // eslint-disable-line indent\n        transformCaseFunc // eslint-disable-line indent\n        ) // eslint-disable-line indent\n        : DEFAULT_DATA_URI_TAGS;\n        FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n        FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n        FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n        USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n        ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n        ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n        ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n        ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n        SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n        SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n        WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n        RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n        RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n        RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n        FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n        SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n        SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n        KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n        IN_PLACE = cfg.IN_PLACE || false; // Default false\n        IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n        NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n        CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n        if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n        }\n        if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n          CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n        }\n        if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n          CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n        }\n        if (SAFE_FOR_TEMPLATES) {\n          ALLOW_DATA_ATTR = false;\n        }\n        if (RETURN_DOM_FRAGMENT) {\n          RETURN_DOM = true;\n        }\n\n        /* Parse profile info */\n        if (USE_PROFILES) {\n          ALLOWED_TAGS = addToSet({}, text);\n          ALLOWED_ATTR = [];\n          if (USE_PROFILES.html === true) {\n            addToSet(ALLOWED_TAGS, html$1);\n            addToSet(ALLOWED_ATTR, html);\n          }\n          if (USE_PROFILES.svg === true) {\n            addToSet(ALLOWED_TAGS, svg$1);\n            addToSet(ALLOWED_ATTR, svg);\n            addToSet(ALLOWED_ATTR, xml);\n          }\n          if (USE_PROFILES.svgFilters === true) {\n            addToSet(ALLOWED_TAGS, svgFilters);\n            addToSet(ALLOWED_ATTR, svg);\n            addToSet(ALLOWED_ATTR, xml);\n          }\n          if (USE_PROFILES.mathMl === true) {\n            addToSet(ALLOWED_TAGS, mathMl$1);\n            addToSet(ALLOWED_ATTR, mathMl);\n            addToSet(ALLOWED_ATTR, xml);\n          }\n        }\n\n        /* Merge configuration parameters */\n        if (cfg.ADD_TAGS) {\n          if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n            ALLOWED_TAGS = clone(ALLOWED_TAGS);\n          }\n          addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n        }\n        if (cfg.ADD_ATTR) {\n          if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n            ALLOWED_ATTR = clone(ALLOWED_ATTR);\n          }\n          addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n        }\n        if (cfg.ADD_URI_SAFE_ATTR) {\n          addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n        }\n        if (cfg.FORBID_CONTENTS) {\n          if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n            FORBID_CONTENTS = clone(FORBID_CONTENTS);\n          }\n          addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n        }\n\n        /* Add #text in case KEEP_CONTENT is set to true */\n        if (KEEP_CONTENT) {\n          ALLOWED_TAGS['#text'] = true;\n        }\n\n        /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n        if (WHOLE_DOCUMENT) {\n          addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n        }\n\n        /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n        if (ALLOWED_TAGS.table) {\n          addToSet(ALLOWED_TAGS, ['tbody']);\n          delete FORBID_TAGS.tbody;\n        }\n        if (cfg.TRUSTED_TYPES_POLICY) {\n          if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n            throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n          }\n          if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n            throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n          }\n\n          // Overwrite existing TrustedTypes policy.\n          trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n          // Sign local variables required by `sanitize`.\n          emptyHTML = trustedTypesPolicy.createHTML('');\n        } else {\n          // Uninitialized policy, attempt to initialize the internal dompurify policy.\n          if (trustedTypesPolicy === undefined) {\n            trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n          }\n\n          // If creating the internal policy succeeded sign internal variables.\n          if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n            emptyHTML = trustedTypesPolicy.createHTML('');\n          }\n        }\n\n        // Prevent further manipulation of configuration.\n        // Not available in IE8, Safari 5, etc.\n        if (freeze) {\n          freeze(cfg);\n        }\n        CONFIG = cfg;\n      };\n      const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n      const HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n      // Certain elements are allowed in both SVG and HTML\n      // namespace. We need to specify them explicitly\n      // so that they don't get erroneously deleted from\n      // HTML namespace.\n      const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n      /* Keep track of all possible SVG and MathML tags\n       * so that we can perform the namespace checks\n       * correctly. */\n      const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n      const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n\n      /**\n       * @param  {Element} element a DOM element whose namespace is being checked\n       * @returns {boolean} Return false if the element has a\n       *  namespace that a spec-compliant parser would never\n       *  return. Return true otherwise.\n       */\n      const _checkValidNamespace = function _checkValidNamespace(element) {\n        let parent = getParentNode(element);\n\n        // In JSDOM, if we're inside shadow DOM, then parentNode\n        // can be null. We just simulate parent in this case.\n        if (!parent || !parent.tagName) {\n          parent = {\n            namespaceURI: NAMESPACE,\n            tagName: 'template'\n          };\n        }\n        const tagName = stringToLowerCase(element.tagName);\n        const parentTagName = stringToLowerCase(parent.tagName);\n        if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n          return false;\n        }\n        if (element.namespaceURI === SVG_NAMESPACE) {\n          // The only way to switch from HTML namespace to SVG\n          // is via <svg>. If it happens via any other tag, then\n          // it should be killed.\n          if (parent.namespaceURI === HTML_NAMESPACE) {\n            return tagName === 'svg';\n          }\n\n          // The only way to switch from MathML to SVG is via`\n          // svg if parent is either <annotation-xml> or MathML\n          // text integration points.\n          if (parent.namespaceURI === MATHML_NAMESPACE) {\n            return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n          }\n\n          // We only allow elements that are defined in SVG\n          // spec. All others are disallowed in SVG namespace.\n          return Boolean(ALL_SVG_TAGS[tagName]);\n        }\n        if (element.namespaceURI === MATHML_NAMESPACE) {\n          // The only way to switch from HTML namespace to MathML\n          // is via <math>. If it happens via any other tag, then\n          // it should be killed.\n          if (parent.namespaceURI === HTML_NAMESPACE) {\n            return tagName === 'math';\n          }\n\n          // The only way to switch from SVG to MathML is via\n          // <math> and HTML integration points\n          if (parent.namespaceURI === SVG_NAMESPACE) {\n            return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n          }\n\n          // We only allow elements that are defined in MathML\n          // spec. All others are disallowed in MathML namespace.\n          return Boolean(ALL_MATHML_TAGS[tagName]);\n        }\n        if (element.namespaceURI === HTML_NAMESPACE) {\n          // The only way to switch from SVG to HTML is via\n          // HTML integration points, and from MathML to HTML\n          // is via MathML text integration points\n          if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n            return false;\n          }\n          if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n            return false;\n          }\n\n          // We disallow tags that are specific for MathML\n          // or SVG and should never appear in HTML namespace\n          return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n        }\n\n        // For XHTML and XML documents that support custom namespaces\n        if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n          return true;\n        }\n\n        // The code should never reach this place (this means\n        // that the element somehow got namespace that is not\n        // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n        // Return false just in case.\n        return false;\n      };\n\n      /**\n       * _forceRemove\n       *\n       * @param  {Node} node a DOM node\n       */\n      const _forceRemove = function _forceRemove(node) {\n        arrayPush(DOMPurify.removed, {\n          element: node\n        });\n        try {\n          // eslint-disable-next-line unicorn/prefer-dom-node-remove\n          getParentNode(node).removeChild(node);\n        } catch (_) {\n          remove(node);\n        }\n      };\n\n      /**\n       * _removeAttribute\n       *\n       * @param  {String} name an Attribute name\n       * @param  {Node} node a DOM node\n       */\n      const _removeAttribute = function _removeAttribute(name, node) {\n        try {\n          arrayPush(DOMPurify.removed, {\n            attribute: node.getAttributeNode(name),\n            from: node\n          });\n        } catch (_) {\n          arrayPush(DOMPurify.removed, {\n            attribute: null,\n            from: node\n          });\n        }\n        node.removeAttribute(name);\n\n        // We void attribute values for unremovable \"is\"\" attributes\n        if (name === 'is' && !ALLOWED_ATTR[name]) {\n          if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n            try {\n              _forceRemove(node);\n            } catch (_) {}\n          } else {\n            try {\n              node.setAttribute(name, '');\n            } catch (_) {}\n          }\n        }\n      };\n\n      /**\n       * _initDocument\n       *\n       * @param  {String} dirty a string of dirty markup\n       * @return {Document} a DOM, filled with the dirty markup\n       */\n      const _initDocument = function _initDocument(dirty) {\n        /* Create a HTML document */\n        let doc = null;\n        let leadingWhitespace = null;\n        if (FORCE_BODY) {\n          dirty = '<remove></remove>' + dirty;\n        } else {\n          /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n          const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n          leadingWhitespace = matches && matches[0];\n        }\n        if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n          // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n          dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n        }\n        const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n        /*\n         * Use the DOMParser API by default, fallback later if needs be\n         * DOMParser not work for svg when has multiple root element.\n         */\n        if (NAMESPACE === HTML_NAMESPACE) {\n          try {\n            doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n          } catch (_) {}\n        }\n\n        /* Use createHTMLDocument in case DOMParser is not available */\n        if (!doc || !doc.documentElement) {\n          doc = implementation.createDocument(NAMESPACE, 'template', null);\n          try {\n            doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n          } catch (_) {\n            // Syntax error if dirtyPayload is invalid xml\n          }\n        }\n        const body = doc.body || doc.documentElement;\n        if (dirty && leadingWhitespace) {\n          body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n        }\n\n        /* Work on whole document or just its body */\n        if (NAMESPACE === HTML_NAMESPACE) {\n          return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n        }\n        return WHOLE_DOCUMENT ? doc.documentElement : body;\n      };\n\n      /**\n       * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n       *\n       * @param  {Node} root The root element or node to start traversing on.\n       * @return {NodeIterator} The created NodeIterator\n       */\n      const _createNodeIterator = function _createNodeIterator(root) {\n        return createNodeIterator.call(root.ownerDocument || root, root,\n        // eslint-disable-next-line no-bitwise\n        NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n      };\n\n      /**\n       * _isClobbered\n       *\n       * @param  {Node} elm element to check for clobbering attacks\n       * @return {Boolean} true if clobbered, false if safe\n       */\n      const _isClobbered = function _isClobbered(elm) {\n        return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n      };\n\n      /**\n       * Checks whether the given object is a DOM node.\n       *\n       * @param  {Node} object object to check whether it's a DOM node\n       * @return {Boolean} true is object is a DOM node\n       */\n      const _isNode = function _isNode(object) {\n        return typeof Node === 'function' && object instanceof Node;\n      };\n\n      /**\n       * _executeHook\n       * Execute user configurable hooks\n       *\n       * @param  {String} entryPoint  Name of the hook's entry point\n       * @param  {Node} currentNode node to work on with the hook\n       * @param  {Object} data additional hook parameters\n       */\n      const _executeHook = function _executeHook(entryPoint, currentNode, data) {\n        if (!hooks[entryPoint]) {\n          return;\n        }\n        arrayForEach(hooks[entryPoint], hook => {\n          hook.call(DOMPurify, currentNode, data, CONFIG);\n        });\n      };\n\n      /**\n       * _sanitizeElements\n       *\n       * @protect nodeName\n       * @protect textContent\n       * @protect removeChild\n       *\n       * @param   {Node} currentNode to check for permission to exist\n       * @return  {Boolean} true if node was killed, false if left alive\n       */\n      const _sanitizeElements = function _sanitizeElements(currentNode) {\n        let content = null;\n\n        /* Execute a hook if present */\n        _executeHook('beforeSanitizeElements', currentNode, null);\n\n        /* Check if element is clobbered or can clobber */\n        if (_isClobbered(currentNode)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Now let's check the element's type and name */\n        const tagName = transformCaseFunc(currentNode.nodeName);\n\n        /* Execute a hook if present */\n        _executeHook('uponSanitizeElement', currentNode, {\n          tagName,\n          allowedTags: ALLOWED_TAGS\n        });\n\n        /* Detect mXSS attempts abusing namespace confusion */\n        if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Remove any occurrence of processing instructions */\n        if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Remove any kind of possibly harmful comments */\n        if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Remove element if anything forbids its presence */\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          /* Check if we have a custom element to handle */\n          if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n            if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n              return false;\n            }\n            if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n              return false;\n            }\n          }\n\n          /* Keep content except for bad-listed elements */\n          if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n            const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n            const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n            if (childNodes && parentNode) {\n              const childCount = childNodes.length;\n              for (let i = childCount - 1; i >= 0; --i) {\n                const childClone = cloneNode(childNodes[i], true);\n                childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n                parentNode.insertBefore(childClone, getNextSibling(currentNode));\n              }\n            }\n          }\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Check whether element has a valid namespace */\n        if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Make sure that older browsers don't get fallback-tag mXSS */\n        if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Sanitize element content to be template-safe */\n        if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n          /* Get the element's text content */\n          content = currentNode.textContent;\n          arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n            content = stringReplace(content, expr, ' ');\n          });\n          if (currentNode.textContent !== content) {\n            arrayPush(DOMPurify.removed, {\n              element: currentNode.cloneNode()\n            });\n            currentNode.textContent = content;\n          }\n        }\n\n        /* Execute a hook if present */\n        _executeHook('afterSanitizeElements', currentNode, null);\n        return false;\n      };\n\n      /**\n       * _isValidAttribute\n       *\n       * @param  {string} lcTag Lowercase tag name of containing element.\n       * @param  {string} lcName Lowercase attribute name.\n       * @param  {string} value Attribute value.\n       * @return {Boolean} Returns true if `value` is valid, otherwise false.\n       */\n      // eslint-disable-next-line complexity\n      const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n        /* Make sure attribute cannot clobber */\n        if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n          return false;\n        }\n\n        /* Allow valid data-* attributes: At least one character after \"-\"\n            (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n            XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n            We don't need to check the value; it's always URI safe. */\n        if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n          if (\n          // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n          // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n          // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n          _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n          // Alternative, second condition checks if it's an `is`-attribute, AND\n          // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n          lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n            return false;\n          }\n          /* Check value is safe. First, is attr inert? If so, is safe */\n        } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n          return false;\n        } else ;\n        return true;\n      };\n\n      /**\n       * _isBasicCustomElement\n       * checks if at least one dash is included in tagName, and it's not the first char\n       * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n       *\n       * @param {string} tagName name of the tag of the node to sanitize\n       * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n       */\n      const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n        return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n      };\n\n      /**\n       * _sanitizeAttributes\n       *\n       * @protect attributes\n       * @protect nodeName\n       * @protect removeAttribute\n       * @protect setAttribute\n       *\n       * @param  {Node} currentNode to sanitize\n       */\n      const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n        /* Execute a hook if present */\n        _executeHook('beforeSanitizeAttributes', currentNode, null);\n        const {\n          attributes\n        } = currentNode;\n\n        /* Check if we have attributes; if not we might have a text node */\n        if (!attributes) {\n          return;\n        }\n        const hookEvent = {\n          attrName: '',\n          attrValue: '',\n          keepAttr: true,\n          allowedAttributes: ALLOWED_ATTR\n        };\n        let l = attributes.length;\n\n        /* Go backwards over all attributes; safely remove bad ones */\n        while (l--) {\n          const attr = attributes[l];\n          const {\n            name,\n            namespaceURI,\n            value: attrValue\n          } = attr;\n          const lcName = transformCaseFunc(name);\n          let value = name === 'value' ? attrValue : stringTrim(attrValue);\n          const initValue = value;\n\n          /* Execute a hook if present */\n          hookEvent.attrName = lcName;\n          hookEvent.attrValue = value;\n          hookEvent.keepAttr = true;\n          hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n          _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n          value = hookEvent.attrValue;\n\n          /* Did the hooks approve of the attribute? */\n          if (hookEvent.forceKeepAttr) {\n            continue;\n          }\n\n          /* Did the hooks approve of the attribute? */\n          if (!hookEvent.keepAttr) {\n            _removeAttribute(name, currentNode);\n            continue;\n          }\n\n          /* Work around a security issue in jQuery 3.0 */\n          if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n            _removeAttribute(name, currentNode);\n            continue;\n          }\n\n          /* Sanitize attribute content to be template-safe */\n          if (SAFE_FOR_TEMPLATES) {\n            arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n              value = stringReplace(value, expr, ' ');\n            });\n          }\n\n          /* Is `value` valid for this attribute? */\n          const lcTag = transformCaseFunc(currentNode.nodeName);\n          if (!_isValidAttribute(lcTag, lcName, value)) {\n            _removeAttribute(name, currentNode);\n            continue;\n          }\n\n          /* Full DOM Clobbering protection via namespace isolation,\n           * Prefix id and name attributes with `user-content-`\n           */\n          if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n            // Remove the attribute with this value\n            _removeAttribute(name, currentNode);\n\n            // Prefix the value and later re-create the attribute with the sanitized value\n            value = SANITIZE_NAMED_PROPS_PREFIX + value;\n          }\n\n          /* Work around a security issue with comments inside attributes */\n          if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n            _removeAttribute(name, currentNode);\n            continue;\n          }\n\n          /* Handle attributes that require Trusted Types */\n          if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n            if (namespaceURI) ; else {\n              switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n                case 'TrustedHTML':\n                  {\n                    value = trustedTypesPolicy.createHTML(value);\n                    break;\n                  }\n                case 'TrustedScriptURL':\n                  {\n                    value = trustedTypesPolicy.createScriptURL(value);\n                    break;\n                  }\n              }\n            }\n          }\n\n          /* Handle invalid data-* attribute set by try-catching it */\n          if (value !== initValue) {\n            try {\n              if (namespaceURI) {\n                currentNode.setAttributeNS(namespaceURI, name, value);\n              } else {\n                /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n                currentNode.setAttribute(name, value);\n              }\n              if (_isClobbered(currentNode)) {\n                _forceRemove(currentNode);\n              } else {\n                arrayPop(DOMPurify.removed);\n              }\n            } catch (_) {}\n          }\n        }\n\n        /* Execute a hook if present */\n        _executeHook('afterSanitizeAttributes', currentNode, null);\n      };\n\n      /**\n       * _sanitizeShadowDOM\n       *\n       * @param  {DocumentFragment} fragment to iterate over recursively\n       */\n      const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n        let shadowNode = null;\n        const shadowIterator = _createNodeIterator(fragment);\n\n        /* Execute a hook if present */\n        _executeHook('beforeSanitizeShadowDOM', fragment, null);\n        while (shadowNode = shadowIterator.nextNode()) {\n          /* Execute a hook if present */\n          _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n          /* Sanitize tags and elements */\n          if (_sanitizeElements(shadowNode)) {\n            continue;\n          }\n\n          /* Deep shadow DOM detected */\n          if (shadowNode.content instanceof DocumentFragment) {\n            _sanitizeShadowDOM(shadowNode.content);\n          }\n\n          /* Check attributes, sanitize if necessary */\n          _sanitizeAttributes(shadowNode);\n        }\n\n        /* Execute a hook if present */\n        _executeHook('afterSanitizeShadowDOM', fragment, null);\n      };\n\n      /**\n       * Sanitize\n       * Public method providing core sanitation functionality\n       *\n       * @param {String|Node} dirty string or DOM node\n       * @param {Object} cfg object\n       */\n      // eslint-disable-next-line complexity\n      DOMPurify.sanitize = function (dirty) {\n        let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        let body = null;\n        let importedNode = null;\n        let currentNode = null;\n        let returnNode = null;\n        /* Make sure we have a string to sanitize.\n          DO NOT return early, as this will return the wrong type if\n          the user has requested a DOM object rather than a string */\n        IS_EMPTY_INPUT = !dirty;\n        if (IS_EMPTY_INPUT) {\n          dirty = '<!-->';\n        }\n\n        /* Stringify, in case dirty is an object */\n        if (typeof dirty !== 'string' && !_isNode(dirty)) {\n          if (typeof dirty.toString === 'function') {\n            dirty = dirty.toString();\n            if (typeof dirty !== 'string') {\n              throw typeErrorCreate('dirty is not a string, aborting');\n            }\n          } else {\n            throw typeErrorCreate('toString is not a function');\n          }\n        }\n\n        /* Return dirty HTML if DOMPurify cannot run */\n        if (!DOMPurify.isSupported) {\n          return dirty;\n        }\n\n        /* Assign config vars */\n        if (!SET_CONFIG) {\n          _parseConfig(cfg);\n        }\n\n        /* Clean up removed elements */\n        DOMPurify.removed = [];\n\n        /* Check if dirty is correctly typed for IN_PLACE */\n        if (typeof dirty === 'string') {\n          IN_PLACE = false;\n        }\n        if (IN_PLACE) {\n          /* Do some early pre-sanitization to avoid unsafe root nodes */\n          if (dirty.nodeName) {\n            const tagName = transformCaseFunc(dirty.nodeName);\n            if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n              throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n            }\n          }\n        } else if (dirty instanceof Node) {\n          /* If dirty is a DOM element, append to an empty document to avoid\n             elements being stripped by the parser */\n          body = _initDocument('<!---->');\n          importedNode = body.ownerDocument.importNode(dirty, true);\n          if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n            /* Node is already a body, use as is */\n            body = importedNode;\n          } else if (importedNode.nodeName === 'HTML') {\n            body = importedNode;\n          } else {\n            // eslint-disable-next-line unicorn/prefer-dom-node-append\n            body.appendChild(importedNode);\n          }\n        } else {\n          /* Exit directly if we have nothing to do */\n          if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n          // eslint-disable-next-line unicorn/prefer-includes\n          dirty.indexOf('<') === -1) {\n            return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n          }\n\n          /* Initialize the document to work on */\n          body = _initDocument(dirty);\n\n          /* Check we have a DOM node from the data */\n          if (!body) {\n            return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n          }\n        }\n\n        /* Remove first element node (ours) if FORCE_BODY is set */\n        if (body && FORCE_BODY) {\n          _forceRemove(body.firstChild);\n        }\n\n        /* Get node iterator */\n        const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n        /* Now start iterating over the created document */\n        while (currentNode = nodeIterator.nextNode()) {\n          /* Sanitize tags and elements */\n          if (_sanitizeElements(currentNode)) {\n            continue;\n          }\n\n          /* Shadow DOM detected, sanitize it */\n          if (currentNode.content instanceof DocumentFragment) {\n            _sanitizeShadowDOM(currentNode.content);\n          }\n\n          /* Check attributes, sanitize if necessary */\n          _sanitizeAttributes(currentNode);\n        }\n\n        /* If we sanitized `dirty` in-place, return it. */\n        if (IN_PLACE) {\n          return dirty;\n        }\n\n        /* Return sanitized string or DOM */\n        if (RETURN_DOM) {\n          if (RETURN_DOM_FRAGMENT) {\n            returnNode = createDocumentFragment.call(body.ownerDocument);\n            while (body.firstChild) {\n              // eslint-disable-next-line unicorn/prefer-dom-node-append\n              returnNode.appendChild(body.firstChild);\n            }\n          } else {\n            returnNode = body;\n          }\n          if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n            /*\n              AdoptNode() is not used because internal state is not reset\n              (e.g. the past names map of a HTMLFormElement), this is safe\n              in theory but we would rather not risk another attack vector.\n              The state that is cloned by importNode() is explicitly defined\n              by the specs.\n            */\n            returnNode = importNode.call(originalDocument, returnNode, true);\n          }\n          return returnNode;\n        }\n        let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n        /* Serialize doctype if allowed */\n        if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n          serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n        }\n\n        /* Sanitize final string template-safe */\n        if (SAFE_FOR_TEMPLATES) {\n          arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n            serializedHTML = stringReplace(serializedHTML, expr, ' ');\n          });\n        }\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n      };\n\n      /**\n       * Public method to set the configuration once\n       * setConfig\n       *\n       * @param {Object} cfg configuration object\n       */\n      DOMPurify.setConfig = function () {\n        let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        _parseConfig(cfg);\n        SET_CONFIG = true;\n      };\n\n      /**\n       * Public method to remove the configuration\n       * clearConfig\n       *\n       */\n      DOMPurify.clearConfig = function () {\n        CONFIG = null;\n        SET_CONFIG = false;\n      };\n\n      /**\n       * Public method to check if an attribute value is valid.\n       * Uses last set config, if any. Otherwise, uses config defaults.\n       * isValidAttribute\n       *\n       * @param  {String} tag Tag name of containing element.\n       * @param  {String} attr Attribute name.\n       * @param  {String} value Attribute value.\n       * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n       */\n      DOMPurify.isValidAttribute = function (tag, attr, value) {\n        /* Initialize shared config vars if necessary. */\n        if (!CONFIG) {\n          _parseConfig({});\n        }\n        const lcTag = transformCaseFunc(tag);\n        const lcName = transformCaseFunc(attr);\n        return _isValidAttribute(lcTag, lcName, value);\n      };\n\n      /**\n       * AddHook\n       * Public method to add DOMPurify hooks\n       *\n       * @param {String} entryPoint entry point for the hook to add\n       * @param {Function} hookFunction function to execute\n       */\n      DOMPurify.addHook = function (entryPoint, hookFunction) {\n        if (typeof hookFunction !== 'function') {\n          return;\n        }\n        hooks[entryPoint] = hooks[entryPoint] || [];\n        arrayPush(hooks[entryPoint], hookFunction);\n      };\n\n      /**\n       * RemoveHook\n       * Public method to remove a DOMPurify hook at a given entryPoint\n       * (pops it from the stack of hooks if more are present)\n       *\n       * @param {String} entryPoint entry point for the hook to remove\n       * @return {Function} removed(popped) hook\n       */\n      DOMPurify.removeHook = function (entryPoint) {\n        if (hooks[entryPoint]) {\n          return arrayPop(hooks[entryPoint]);\n        }\n      };\n\n      /**\n       * RemoveHooks\n       * Public method to remove all DOMPurify hooks at a given entryPoint\n       *\n       * @param  {String} entryPoint entry point for the hooks to remove\n       */\n      DOMPurify.removeHooks = function (entryPoint) {\n        if (hooks[entryPoint]) {\n          hooks[entryPoint] = [];\n        }\n      };\n\n      /**\n       * RemoveAllHooks\n       * Public method to remove all DOMPurify hooks\n       */\n      DOMPurify.removeAllHooks = function () {\n        hooks = {};\n      };\n      return DOMPurify;\n    }\n    var purify = createDOMPurify();\n\n    const each$4 = Tools.each, trim = Tools.trim;\n    const queryParts = [\n      'source',\n      'protocol',\n      'authority',\n      'userInfo',\n      'user',\n      'password',\n      'host',\n      'port',\n      'relative',\n      'path',\n      'directory',\n      'file',\n      'query',\n      'anchor'\n    ];\n    const DEFAULT_PORTS = {\n      ftp: 21,\n      http: 80,\n      https: 443,\n      mailto: 25\n    };\n    const safeSvgDataUrlElements = [\n      'img',\n      'video'\n    ];\n    const blockSvgDataUris = (allowSvgDataUrls, tagName) => {\n      if (isNonNullable(allowSvgDataUrls)) {\n        return !allowSvgDataUrls;\n      } else {\n        return isNonNullable(tagName) ? !contains$2(safeSvgDataUrlElements, tagName) : true;\n      }\n    };\n    const decodeUri = encodedUri => {\n      try {\n        return decodeURIComponent(encodedUri);\n      } catch (ex) {\n        return unescape(encodedUri);\n      }\n    };\n    const isInvalidUri = (settings, uri, tagName) => {\n      const decodedUri = decodeUri(uri).replace(/\\s/g, '');\n      if (settings.allow_script_urls) {\n        return false;\n      } else if (/((java|vb)script|mhtml):/i.test(decodedUri)) {\n        return true;\n      } else if (settings.allow_html_data_urls) {\n        return false;\n      } else if (/^data:image\\//i.test(decodedUri)) {\n        return blockSvgDataUris(settings.allow_svg_data_urls, tagName) && /^data:image\\/svg\\+xml/i.test(decodedUri);\n      } else {\n        return /^data:/i.test(decodedUri);\n      }\n    };\n    class URI {\n      static parseDataUri(uri) {\n        let type;\n        const uriComponents = decodeURIComponent(uri).split(',');\n        const matches = /data:([^;]+)/.exec(uriComponents[0]);\n        if (matches) {\n          type = matches[1];\n        }\n        return {\n          type,\n          data: uriComponents[1]\n        };\n      }\n      static isDomSafe(uri, context, options = {}) {\n        if (options.allow_script_urls) {\n          return true;\n        } else {\n          const decodedUri = Entities.decode(uri).replace(/[\\s\\u0000-\\u001F]+/g, '');\n          return !isInvalidUri(options, decodedUri, context);\n        }\n      }\n      static getDocumentBaseUrl(loc) {\n        var _a;\n        let baseUrl;\n        if (loc.protocol.indexOf('http') !== 0 && loc.protocol !== 'file:') {\n          baseUrl = (_a = loc.href) !== null && _a !== void 0 ? _a : '';\n        } else {\n          baseUrl = loc.protocol + '//' + loc.host + loc.pathname;\n        }\n        if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(baseUrl)) {\n          baseUrl = baseUrl.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\n          if (!/[\\/\\\\]$/.test(baseUrl)) {\n            baseUrl += '/';\n          }\n        }\n        return baseUrl;\n      }\n      constructor(url, settings = {}) {\n        this.path = '';\n        this.directory = '';\n        url = trim(url);\n        this.settings = settings;\n        const baseUri = settings.base_uri;\n        const self = this;\n        if (/^([\\w\\-]+):([^\\/]{2})/i.test(url) || /^\\s*#/.test(url)) {\n          self.source = url;\n          return;\n        }\n        const isProtocolRelative = url.indexOf('//') === 0;\n        if (url.indexOf('/') === 0 && !isProtocolRelative) {\n          url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url;\n        }\n        if (!/^[\\w\\-]*:?\\/\\//.test(url)) {\n          const baseUrl = baseUri ? baseUri.path : new URI(document.location.href).directory;\n          if ((baseUri === null || baseUri === void 0 ? void 0 : baseUri.protocol) === '') {\n            url = '//mce_host' + self.toAbsPath(baseUrl, url);\n          } else {\n            const match = /([^#?]*)([#?]?.*)/.exec(url);\n            if (match) {\n              url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self.toAbsPath(baseUrl, match[1]) + match[2];\n            }\n          }\n        }\n        url = url.replace(/@@/g, '(mce_at)');\n        const urlMatch = /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@\\/]*):?([^:@\\/]*))?@)?(\\[[a-zA-Z0-9:.%]+\\]|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/.exec(url);\n        if (urlMatch) {\n          each$4(queryParts, (v, i) => {\n            let part = urlMatch[i];\n            if (part) {\n              part = part.replace(/\\(mce_at\\)/g, '@@');\n            }\n            self[v] = part;\n          });\n        }\n        if (baseUri) {\n          if (!self.protocol) {\n            self.protocol = baseUri.protocol;\n          }\n          if (!self.userInfo) {\n            self.userInfo = baseUri.userInfo;\n          }\n          if (!self.port && self.host === 'mce_host') {\n            self.port = baseUri.port;\n          }\n          if (!self.host || self.host === 'mce_host') {\n            self.host = baseUri.host;\n          }\n          self.source = '';\n        }\n        if (isProtocolRelative) {\n          self.protocol = '';\n        }\n      }\n      setPath(path) {\n        const pathMatch = /^(.*?)\\/?(\\w+)?$/.exec(path);\n        if (pathMatch) {\n          this.path = pathMatch[0];\n          this.directory = pathMatch[1];\n          this.file = pathMatch[2];\n        }\n        this.source = '';\n        this.getURI();\n      }\n      toRelative(uri) {\n        if (uri === './') {\n          return uri;\n        }\n        const relativeUri = new URI(uri, { base_uri: this });\n        if (relativeUri.host !== 'mce_host' && this.host !== relativeUri.host && relativeUri.host || this.port !== relativeUri.port || this.protocol !== relativeUri.protocol && relativeUri.protocol !== '') {\n          return relativeUri.getURI();\n        }\n        const tu = this.getURI(), uu = relativeUri.getURI();\n        if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) {\n          return tu;\n        }\n        let output = this.toRelPath(this.path, relativeUri.path);\n        if (relativeUri.query) {\n          output += '?' + relativeUri.query;\n        }\n        if (relativeUri.anchor) {\n          output += '#' + relativeUri.anchor;\n        }\n        return output;\n      }\n      toAbsolute(uri, noHost) {\n        const absoluteUri = new URI(uri, { base_uri: this });\n        return absoluteUri.getURI(noHost && this.isSameOrigin(absoluteUri));\n      }\n      isSameOrigin(uri) {\n        if (this.host == uri.host && this.protocol == uri.protocol) {\n          if (this.port == uri.port) {\n            return true;\n          }\n          const defaultPort = this.protocol ? DEFAULT_PORTS[this.protocol] : null;\n          if (defaultPort && (this.port || defaultPort) == (uri.port || defaultPort)) {\n            return true;\n          }\n        }\n        return false;\n      }\n      toRelPath(base, path) {\n        let breakPoint = 0, out = '', i, l;\n        const normalizedBase = base.substring(0, base.lastIndexOf('/')).split('/');\n        const items = path.split('/');\n        if (normalizedBase.length >= items.length) {\n          for (i = 0, l = normalizedBase.length; i < l; i++) {\n            if (i >= items.length || normalizedBase[i] !== items[i]) {\n              breakPoint = i + 1;\n              break;\n            }\n          }\n        }\n        if (normalizedBase.length < items.length) {\n          for (i = 0, l = items.length; i < l; i++) {\n            if (i >= normalizedBase.length || normalizedBase[i] !== items[i]) {\n              breakPoint = i + 1;\n              break;\n            }\n          }\n        }\n        if (breakPoint === 1) {\n          return path;\n        }\n        for (i = 0, l = normalizedBase.length - (breakPoint - 1); i < l; i++) {\n          out += '../';\n        }\n        for (i = breakPoint - 1, l = items.length; i < l; i++) {\n          if (i !== breakPoint - 1) {\n            out += '/' + items[i];\n          } else {\n            out += items[i];\n          }\n        }\n        return out;\n      }\n      toAbsPath(base, path) {\n        let nb = 0;\n        const tr = /\\/$/.test(path) ? '/' : '';\n        const normalizedBase = base.split('/');\n        const normalizedPath = path.split('/');\n        const baseParts = [];\n        each$4(normalizedBase, k => {\n          if (k) {\n            baseParts.push(k);\n          }\n        });\n        const pathParts = [];\n        for (let i = normalizedPath.length - 1; i >= 0; i--) {\n          if (normalizedPath[i].length === 0 || normalizedPath[i] === '.') {\n            continue;\n          }\n          if (normalizedPath[i] === '..') {\n            nb++;\n            continue;\n          }\n          if (nb > 0) {\n            nb--;\n            continue;\n          }\n          pathParts.push(normalizedPath[i]);\n        }\n        const i = baseParts.length - nb;\n        let outPath;\n        if (i <= 0) {\n          outPath = reverse(pathParts).join('/');\n        } else {\n          outPath = baseParts.slice(0, i).join('/') + '/' + reverse(pathParts).join('/');\n        }\n        if (outPath.indexOf('/') !== 0) {\n          outPath = '/' + outPath;\n        }\n        if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) {\n          outPath += tr;\n        }\n        return outPath;\n      }\n      getURI(noProtoHost = false) {\n        let s;\n        if (!this.source || noProtoHost) {\n          s = '';\n          if (!noProtoHost) {\n            if (this.protocol) {\n              s += this.protocol + '://';\n            } else {\n              s += '//';\n            }\n            if (this.userInfo) {\n              s += this.userInfo + '@';\n            }\n            if (this.host) {\n              s += this.host;\n            }\n            if (this.port) {\n              s += ':' + this.port;\n            }\n          }\n          if (this.path) {\n            s += this.path;\n          }\n          if (this.query) {\n            s += '?' + this.query;\n          }\n          if (this.anchor) {\n            s += '#' + this.anchor;\n          }\n          this.source = s;\n        }\n        return this.source;\n      }\n    }\n\n    const filteredUrlAttrs = Tools.makeMap('src,href,data,background,action,formaction,poster,xlink:href');\n    const internalElementAttr = 'data-mce-type';\n    let uid = 0;\n    const processNode = (node, settings, schema, scope, evt) => {\n      var _a, _b, _c, _d;\n      const validate = settings.validate;\n      const specialElements = schema.getSpecialElements();\n      if (node.nodeType === COMMENT && !settings.allow_conditional_comments && /^\\[if/i.test((_a = node.nodeValue) !== null && _a !== void 0 ? _a : '')) {\n        node.nodeValue = ' ' + node.nodeValue;\n      }\n      const lcTagName = (_b = evt === null || evt === void 0 ? void 0 : evt.tagName) !== null && _b !== void 0 ? _b : node.nodeName.toLowerCase();\n      if (scope !== 'html' && schema.isValid(scope)) {\n        if (isNonNullable(evt)) {\n          evt.allowedTags[lcTagName] = true;\n        }\n        return;\n      }\n      if (node.nodeType !== ELEMENT || lcTagName === 'body') {\n        return;\n      }\n      const element = SugarElement.fromDom(node);\n      const isInternalElement = has$1(element, internalElementAttr);\n      const bogus = get$9(element, 'data-mce-bogus');\n      if (!isInternalElement && isString(bogus)) {\n        if (bogus === 'all') {\n          remove$5(element);\n        } else {\n          unwrap(element);\n        }\n        return;\n      }\n      const rule = schema.getElementRule(lcTagName);\n      if (validate && !rule) {\n        if (has$2(specialElements, lcTagName)) {\n          remove$5(element);\n        } else {\n          unwrap(element);\n        }\n        return;\n      } else {\n        if (isNonNullable(evt)) {\n          evt.allowedTags[lcTagName] = true;\n        }\n      }\n      if (validate && rule && !isInternalElement) {\n        each$e((_c = rule.attributesForced) !== null && _c !== void 0 ? _c : [], attr => {\n          set$3(element, attr.name, attr.value === '{$uid}' ? `mce_${ uid++ }` : attr.value);\n        });\n        each$e((_d = rule.attributesDefault) !== null && _d !== void 0 ? _d : [], attr => {\n          if (!has$1(element, attr.name)) {\n            set$3(element, attr.name, attr.value === '{$uid}' ? `mce_${ uid++ }` : attr.value);\n          }\n        });\n        if (rule.attributesRequired && !exists(rule.attributesRequired, attr => has$1(element, attr))) {\n          unwrap(element);\n          return;\n        }\n        if (rule.removeEmptyAttrs && hasNone(element)) {\n          unwrap(element);\n          return;\n        }\n        if (rule.outputName && rule.outputName !== lcTagName) {\n          mutate(element, rule.outputName);\n        }\n      }\n    };\n    const processAttr = (ele, settings, schema, scope, evt) => {\n      const tagName = ele.tagName.toLowerCase();\n      const {attrName, attrValue} = evt;\n      evt.keepAttr = shouldKeepAttribute(settings, schema, scope, tagName, attrName, attrValue);\n      if (evt.keepAttr) {\n        evt.allowedAttributes[attrName] = true;\n        if (isBooleanAttribute(attrName, schema)) {\n          evt.attrValue = attrName;\n        }\n        if (settings.allow_svg_data_urls && startsWith(attrValue, 'data:image/svg+xml')) {\n          evt.forceKeepAttr = true;\n        }\n      } else if (isRequiredAttributeOfInternalElement(ele, attrName)) {\n        evt.forceKeepAttr = true;\n      }\n    };\n    const shouldKeepAttribute = (settings, schema, scope, tagName, attrName, attrValue) => {\n      if (scope !== 'html' && !isNonHtmlElementRootName(tagName)) {\n        return true;\n      }\n      return !(attrName in filteredUrlAttrs && isInvalidUri(settings, attrValue, tagName)) && (!settings.validate || schema.isValid(tagName, attrName) || startsWith(attrName, 'data-') || startsWith(attrName, 'aria-'));\n    };\n    const isRequiredAttributeOfInternalElement = (ele, attrName) => ele.hasAttribute(internalElementAttr) && (attrName === 'id' || attrName === 'class' || attrName === 'style');\n    const isBooleanAttribute = (attrName, schema) => attrName in schema.getBoolAttrs();\n    const filterAttributes = (ele, settings, schema, scope) => {\n      const {attributes} = ele;\n      for (let i = attributes.length - 1; i >= 0; i--) {\n        const attr = attributes[i];\n        const attrName = attr.name;\n        const attrValue = attr.value;\n        if (!shouldKeepAttribute(settings, schema, scope, ele.tagName.toLowerCase(), attrName, attrValue) && !isRequiredAttributeOfInternalElement(ele, attrName)) {\n          ele.removeAttribute(attrName);\n        } else if (isBooleanAttribute(attrName, schema)) {\n          ele.setAttribute(attrName, attrName);\n        }\n      }\n    };\n    const setupPurify = (settings, schema, namespaceTracker) => {\n      const purify$1 = purify();\n      purify$1.addHook('uponSanitizeElement', (ele, evt) => {\n        processNode(ele, settings, schema, namespaceTracker.track(ele), evt);\n      });\n      purify$1.addHook('uponSanitizeAttribute', (ele, evt) => {\n        processAttr(ele, settings, schema, namespaceTracker.current(), evt);\n      });\n      return purify$1;\n    };\n    const getPurifyConfig = (settings, mimeType) => {\n      const basePurifyConfig = {\n        IN_PLACE: true,\n        ALLOW_UNKNOWN_PROTOCOLS: true,\n        ALLOWED_TAGS: [\n          '#comment',\n          '#cdata-section',\n          'body'\n        ],\n        ALLOWED_ATTR: [],\n        SAFE_FOR_XML: false\n      };\n      const config = { ...basePurifyConfig };\n      config.PARSER_MEDIA_TYPE = mimeType;\n      if (settings.allow_script_urls) {\n        config.ALLOWED_URI_REGEXP = /.*/;\n      } else if (settings.allow_html_data_urls) {\n        config.ALLOWED_URI_REGEXP = /^(?!(\\w+script|mhtml):)/i;\n      }\n      return config;\n    };\n    const sanitizeNamespaceElement = ele => {\n      const xlinkAttrs = [\n        'type',\n        'href',\n        'role',\n        'arcrole',\n        'title',\n        'show',\n        'actuate',\n        'label',\n        'from',\n        'to'\n      ].map(name => `xlink:${ name }`);\n      const config = {\n        IN_PLACE: true,\n        USE_PROFILES: {\n          html: true,\n          svg: true,\n          svgFilters: true\n        },\n        ALLOWED_ATTR: xlinkAttrs\n      };\n      purify().sanitize(ele, config);\n      return ele.innerHTML;\n    };\n    const getSanitizer = (settings, schema) => {\n      const namespaceTracker = createNamespaceTracker();\n      if (settings.sanitize) {\n        const purify = setupPurify(settings, schema, namespaceTracker);\n        const sanitizeHtmlElement = (body, mimeType) => {\n          purify.sanitize(body, getPurifyConfig(settings, mimeType));\n          purify.removed = [];\n          namespaceTracker.reset();\n        };\n        return {\n          sanitizeHtmlElement,\n          sanitizeNamespaceElement\n        };\n      } else {\n        const sanitizeHtmlElement = (body, _mimeType) => {\n          const nodeIterator = document.createNodeIterator(body, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT);\n          let node;\n          while (node = nodeIterator.nextNode()) {\n            const currentScope = namespaceTracker.track(node);\n            processNode(node, settings, schema, currentScope);\n            if (isElement$6(node)) {\n              filterAttributes(node, settings, schema, currentScope);\n            }\n          }\n          namespaceTracker.reset();\n        };\n        const sanitizeNamespaceElement = noop;\n        return {\n          sanitizeHtmlElement,\n          sanitizeNamespaceElement\n        };\n      }\n    };\n\n    const makeMap = Tools.makeMap, extend$1 = Tools.extend;\n    const transferChildren = (parent, nativeParent, specialElements, nsSanitizer) => {\n      const parentName = parent.name;\n      const isSpecial = parentName in specialElements && parentName !== 'title' && parentName !== 'textarea' && parentName !== 'noscript';\n      const childNodes = nativeParent.childNodes;\n      for (let ni = 0, nl = childNodes.length; ni < nl; ni++) {\n        const nativeChild = childNodes[ni];\n        const child = new AstNode(nativeChild.nodeName.toLowerCase(), nativeChild.nodeType);\n        if (isElement$6(nativeChild)) {\n          const attributes = nativeChild.attributes;\n          for (let ai = 0, al = attributes.length; ai < al; ai++) {\n            const attr = attributes[ai];\n            child.attr(attr.name, attr.value);\n          }\n          if (isNonHtmlElementRootName(child.name)) {\n            nsSanitizer(nativeChild);\n            child.value = nativeChild.innerHTML;\n          }\n        } else if (isText$a(nativeChild)) {\n          child.value = nativeChild.data;\n          if (isSpecial) {\n            child.raw = true;\n          }\n        } else if (isComment(nativeChild) || isCData(nativeChild) || isPi(nativeChild)) {\n          child.value = nativeChild.data;\n        }\n        if (!isNonHtmlElementRootName(child.name)) {\n          transferChildren(child, nativeChild, specialElements, nsSanitizer);\n        }\n        parent.append(child);\n      }\n    };\n    const walkTree = (root, preprocessors, postprocessors) => {\n      const traverseOrder = [];\n      for (let node = root, lastNode = node; node; lastNode = node, node = node.walk()) {\n        const tempNode = node;\n        each$e(preprocessors, preprocess => preprocess(tempNode));\n        if (isNullable(tempNode.parent) && tempNode !== root) {\n          node = lastNode;\n        } else {\n          traverseOrder.push(tempNode);\n        }\n      }\n      for (let i = traverseOrder.length - 1; i >= 0; i--) {\n        const node = traverseOrder[i];\n        each$e(postprocessors, postprocess => postprocess(node));\n      }\n    };\n    const whitespaceCleaner = (root, schema, settings, args) => {\n      const validate = settings.validate;\n      const nonEmptyElements = schema.getNonEmptyElements();\n      const whitespaceElements = schema.getWhitespaceElements();\n      const blockElements = extend$1(makeMap('script,style,head,html,body,title,meta,param'), schema.getBlockElements());\n      const textRootBlockElements = getTextRootBlockElements(schema);\n      const allWhiteSpaceRegExp = /[ \\t\\r\\n]+/g;\n      const startWhiteSpaceRegExp = /^[ \\t\\r\\n]+/;\n      const endWhiteSpaceRegExp = /[ \\t\\r\\n]+$/;\n      const hasWhitespaceParent = node => {\n        let tempNode = node.parent;\n        while (isNonNullable(tempNode)) {\n          if (tempNode.name in whitespaceElements) {\n            return true;\n          } else {\n            tempNode = tempNode.parent;\n          }\n        }\n        return false;\n      };\n      const isTextRootBlockEmpty = node => {\n        let tempNode = node;\n        while (isNonNullable(tempNode)) {\n          if (tempNode.name in textRootBlockElements) {\n            return isEmpty(schema, nonEmptyElements, whitespaceElements, tempNode);\n          } else {\n            tempNode = tempNode.parent;\n          }\n        }\n        return false;\n      };\n      const isBlock = node => node.name in blockElements || isTransparentAstBlock(schema, node) || isNonHtmlElementRootName(node.name) && node.parent === root;\n      const isAtEdgeOfBlock = (node, start) => {\n        const neighbour = start ? node.prev : node.next;\n        if (isNonNullable(neighbour) || isNullable(node.parent)) {\n          return false;\n        }\n        return isBlock(node.parent) && (node.parent !== root || args.isRootContent === true);\n      };\n      const preprocess = node => {\n        var _a;\n        if (node.type === 3) {\n          if (!hasWhitespaceParent(node)) {\n            let text = (_a = node.value) !== null && _a !== void 0 ? _a : '';\n            text = text.replace(allWhiteSpaceRegExp, ' ');\n            if (isLineBreakNode(node.prev, isBlock) || isAtEdgeOfBlock(node, true)) {\n              text = text.replace(startWhiteSpaceRegExp, '');\n            }\n            if (text.length === 0) {\n              node.remove();\n            } else {\n              node.value = text;\n            }\n          }\n        }\n      };\n      const postprocess = node => {\n        var _a;\n        if (node.type === 1) {\n          const elementRule = schema.getElementRule(node.name);\n          if (validate && elementRule) {\n            const isNodeEmpty = isEmpty(schema, nonEmptyElements, whitespaceElements, node);\n            if (elementRule.paddInEmptyBlock && isNodeEmpty && isTextRootBlockEmpty(node)) {\n              paddEmptyNode(settings, args, isBlock, node);\n            } else if (elementRule.removeEmpty && isNodeEmpty) {\n              if (isBlock(node)) {\n                node.remove();\n              } else {\n                node.unwrap();\n              }\n            } else if (elementRule.paddEmpty && (isNodeEmpty || isPaddedWithNbsp(node))) {\n              paddEmptyNode(settings, args, isBlock, node);\n            }\n          }\n        } else if (node.type === 3) {\n          if (!hasWhitespaceParent(node)) {\n            let text = (_a = node.value) !== null && _a !== void 0 ? _a : '';\n            if (node.next && isBlock(node.next) || isAtEdgeOfBlock(node, false)) {\n              text = text.replace(endWhiteSpaceRegExp, '');\n            }\n            if (text.length === 0) {\n              node.remove();\n            } else {\n              node.value = text;\n            }\n          }\n        }\n      };\n      return [\n        preprocess,\n        postprocess\n      ];\n    };\n    const getRootBlockName = (settings, args) => {\n      var _a;\n      const name = (_a = args.forced_root_block) !== null && _a !== void 0 ? _a : settings.forced_root_block;\n      if (name === false) {\n        return '';\n      } else if (name === true) {\n        return 'p';\n      } else {\n        return name;\n      }\n    };\n    const DomParser = (settings = {}, schema = Schema()) => {\n      const nodeFilterRegistry = create$8();\n      const attributeFilterRegistry = create$8();\n      const defaultedSettings = {\n        validate: true,\n        root_name: 'body',\n        sanitize: true,\n        ...settings\n      };\n      const parser = new DOMParser();\n      const sanitizer = getSanitizer(defaultedSettings, schema);\n      const parseAndSanitizeWithContext = (html, rootName, format = 'html') => {\n        const mimeType = format === 'xhtml' ? 'application/xhtml+xml' : 'text/html';\n        const isSpecialRoot = has$2(schema.getSpecialElements(), rootName.toLowerCase());\n        const content = isSpecialRoot ? `<${ rootName }>${ html }</${ rootName }>` : html;\n        const wrappedHtml = format === 'xhtml' ? `<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>${ content }</body></html>` : `<body>${ content }</body>`;\n        const body = parser.parseFromString(wrappedHtml, mimeType).body;\n        sanitizer.sanitizeHtmlElement(body, mimeType);\n        return isSpecialRoot ? body.firstChild : body;\n      };\n      const addNodeFilter = nodeFilterRegistry.addFilter;\n      const getNodeFilters = nodeFilterRegistry.getFilters;\n      const removeNodeFilter = nodeFilterRegistry.removeFilter;\n      const addAttributeFilter = attributeFilterRegistry.addFilter;\n      const getAttributeFilters = attributeFilterRegistry.getFilters;\n      const removeAttributeFilter = attributeFilterRegistry.removeFilter;\n      const findInvalidChildren = (node, invalidChildren) => {\n        if (isInvalid(schema, node)) {\n          invalidChildren.push(node);\n        }\n      };\n      const isWrappableNode = (blockElements, node) => {\n        const isInternalElement = isString(node.attr(internalElementAttr));\n        const isInlineElement = node.type === 1 && (!has$2(blockElements, node.name) && !isTransparentAstBlock(schema, node)) && !isNonHtmlElementRootName(node.name);\n        return node.type === 3 || isInlineElement && !isInternalElement;\n      };\n      const addRootBlocks = (rootNode, rootBlockName) => {\n        const blockElements = extend$1(makeMap('script,style,head,html,body,title,meta,param'), schema.getBlockElements());\n        const startWhiteSpaceRegExp = /^[ \\t\\r\\n]+/;\n        const endWhiteSpaceRegExp = /[ \\t\\r\\n]+$/;\n        let node = rootNode.firstChild, rootBlockNode = null;\n        const trim = rootBlock => {\n          var _a, _b;\n          if (rootBlock) {\n            node = rootBlock.firstChild;\n            if (node && node.type === 3) {\n              node.value = (_a = node.value) === null || _a === void 0 ? void 0 : _a.replace(startWhiteSpaceRegExp, '');\n            }\n            node = rootBlock.lastChild;\n            if (node && node.type === 3) {\n              node.value = (_b = node.value) === null || _b === void 0 ? void 0 : _b.replace(endWhiteSpaceRegExp, '');\n            }\n          }\n        };\n        if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) {\n          return;\n        }\n        while (node) {\n          const next = node.next;\n          if (isWrappableNode(blockElements, node)) {\n            if (!rootBlockNode) {\n              rootBlockNode = new AstNode(rootBlockName, 1);\n              rootBlockNode.attr(defaultedSettings.forced_root_block_attrs);\n              rootNode.insert(rootBlockNode, node);\n              rootBlockNode.append(node);\n            } else {\n              rootBlockNode.append(node);\n            }\n          } else {\n            trim(rootBlockNode);\n            rootBlockNode = null;\n          }\n          node = next;\n        }\n        trim(rootBlockNode);\n      };\n      const parse = (html, args = {}) => {\n        var _a;\n        const validate = defaultedSettings.validate;\n        const rootName = (_a = args.context) !== null && _a !== void 0 ? _a : defaultedSettings.root_name;\n        const element = parseAndSanitizeWithContext(html, rootName, args.format);\n        updateChildren(schema, element);\n        const rootNode = new AstNode(rootName, 11);\n        transferChildren(rootNode, element, schema.getSpecialElements(), sanitizer.sanitizeNamespaceElement);\n        element.innerHTML = '';\n        const [whitespacePre, whitespacePost] = whitespaceCleaner(rootNode, schema, defaultedSettings, args);\n        const invalidChildren = [];\n        const invalidFinder = validate ? node => findInvalidChildren(node, invalidChildren) : noop;\n        const matches = {\n          nodes: {},\n          attributes: {}\n        };\n        const matchFinder = node => matchNode$1(getNodeFilters(), getAttributeFilters(), node, matches);\n        walkTree(rootNode, [\n          whitespacePre,\n          matchFinder\n        ], [\n          whitespacePost,\n          invalidFinder\n        ]);\n        invalidChildren.reverse();\n        if (validate && invalidChildren.length > 0) {\n          if (args.context) {\n            const {\n              pass: topLevelChildren,\n              fail: otherChildren\n            } = partition$2(invalidChildren, child => child.parent === rootNode);\n            cleanInvalidNodes(otherChildren, schema, rootNode, matchFinder);\n            args.invalid = topLevelChildren.length > 0;\n          } else {\n            cleanInvalidNodes(invalidChildren, schema, rootNode, matchFinder);\n          }\n        }\n        const rootBlockName = getRootBlockName(defaultedSettings, args);\n        if (rootBlockName && (rootNode.name === 'body' || args.isRootContent)) {\n          addRootBlocks(rootNode, rootBlockName);\n        }\n        if (!args.invalid) {\n          runFilters(matches, args);\n        }\n        return rootNode;\n      };\n      const exports = {\n        schema,\n        addAttributeFilter,\n        getAttributeFilters,\n        removeAttributeFilter,\n        addNodeFilter,\n        getNodeFilters,\n        removeNodeFilter,\n        parse\n      };\n      register$4(exports, defaultedSettings);\n      register$5(exports, defaultedSettings, schema);\n      return exports;\n    };\n\n    const serializeContent = content => isTreeNode(content) ? HtmlSerializer({ validate: false }).serialize(content) : content;\n    const withSerializedContent = (content, fireEvent, parserSettings) => {\n      const serializedContent = serializeContent(content);\n      const eventArgs = fireEvent(serializedContent);\n      if (eventArgs.isDefaultPrevented()) {\n        return eventArgs;\n      } else if (isTreeNode(content)) {\n        if (eventArgs.content !== serializedContent) {\n          const rootNode = DomParser({\n            validate: false,\n            forced_root_block: false,\n            ...parserSettings\n          }).parse(eventArgs.content, { context: content.name });\n          return {\n            ...eventArgs,\n            content: rootNode\n          };\n        } else {\n          return {\n            ...eventArgs,\n            content\n          };\n        }\n      } else {\n        return eventArgs;\n      }\n    };\n    const preProcessGetContent = (editor, args) => {\n      if (args.no_events) {\n        return Result.value(args);\n      } else {\n        const eventArgs = fireBeforeGetContent(editor, args);\n        if (eventArgs.isDefaultPrevented()) {\n          return Result.error(fireGetContent(editor, {\n            content: '',\n            ...eventArgs\n          }).content);\n        } else {\n          return Result.value(eventArgs);\n        }\n      }\n    };\n    const postProcessGetContent = (editor, content, args) => {\n      if (args.no_events) {\n        return content;\n      } else {\n        const processedEventArgs = withSerializedContent(content, content => fireGetContent(editor, {\n          ...args,\n          content\n        }), {\n          sanitize: shouldSanitizeXss(editor),\n          sandbox_iframes: shouldSandboxIframes(editor)\n        });\n        return processedEventArgs.content;\n      }\n    };\n    const preProcessSetContent = (editor, args) => {\n      if (args.no_events) {\n        return Result.value(args);\n      } else {\n        const processedEventArgs = withSerializedContent(args.content, content => fireBeforeSetContent(editor, {\n          ...args,\n          content\n        }), {\n          sanitize: shouldSanitizeXss(editor),\n          sandbox_iframes: shouldSandboxIframes(editor)\n        });\n        if (processedEventArgs.isDefaultPrevented()) {\n          fireSetContent(editor, processedEventArgs);\n          return Result.error(undefined);\n        } else {\n          return Result.value(processedEventArgs);\n        }\n      }\n    };\n    const postProcessSetContent = (editor, content, args) => {\n      if (!args.no_events) {\n        fireSetContent(editor, {\n          ...args,\n          content\n        });\n      }\n    };\n\n    const tableModel = (element, width, rows) => ({\n      element,\n      width,\n      rows\n    });\n    const tableRow = (element, cells) => ({\n      element,\n      cells\n    });\n    const cellPosition = (x, y) => ({\n      x,\n      y\n    });\n    const getSpan = (td, key) => {\n      return getOpt(td, key).bind(toInt).getOr(1);\n    };\n    const fillout = (table, x, y, tr, td) => {\n      const rowspan = getSpan(td, 'rowspan');\n      const colspan = getSpan(td, 'colspan');\n      const rows = table.rows;\n      for (let y2 = y; y2 < y + rowspan; y2++) {\n        if (!rows[y2]) {\n          rows[y2] = tableRow(deep$1(tr), []);\n        }\n        for (let x2 = x; x2 < x + colspan; x2++) {\n          const cells = rows[y2].cells;\n          cells[x2] = y2 === y && x2 === x ? td : shallow$1(td);\n        }\n      }\n    };\n    const cellExists = (table, x, y) => {\n      const rows = table.rows;\n      const cells = rows[y] ? rows[y].cells : [];\n      return !!cells[x];\n    };\n    const skipCellsX = (table, x, y) => {\n      while (cellExists(table, x, y)) {\n        x++;\n      }\n      return x;\n    };\n    const getWidth = rows => {\n      return foldl(rows, (acc, row) => {\n        return row.cells.length > acc ? row.cells.length : acc;\n      }, 0);\n    };\n    const findElementPos = (table, element) => {\n      const rows = table.rows;\n      for (let y = 0; y < rows.length; y++) {\n        const cells = rows[y].cells;\n        for (let x = 0; x < cells.length; x++) {\n          if (eq(cells[x], element)) {\n            return Optional.some(cellPosition(x, y));\n          }\n        }\n      }\n      return Optional.none();\n    };\n    const extractRows = (table, sx, sy, ex, ey) => {\n      const newRows = [];\n      const rows = table.rows;\n      for (let y = sy; y <= ey; y++) {\n        const cells = rows[y].cells;\n        const slice = sx < ex ? cells.slice(sx, ex + 1) : cells.slice(ex, sx + 1);\n        newRows.push(tableRow(rows[y].element, slice));\n      }\n      return newRows;\n    };\n    const subTable = (table, startPos, endPos) => {\n      const sx = startPos.x, sy = startPos.y;\n      const ex = endPos.x, ey = endPos.y;\n      const newRows = sy < ey ? extractRows(table, sx, sy, ex, ey) : extractRows(table, sx, ey, ex, sy);\n      return tableModel(table.element, getWidth(newRows), newRows);\n    };\n    const createDomTable = (table, rows) => {\n      const tableElement = shallow$1(table.element);\n      const tableBody = SugarElement.fromTag('tbody');\n      append(tableBody, rows);\n      append$1(tableElement, tableBody);\n      return tableElement;\n    };\n    const modelRowsToDomRows = table => {\n      return map$3(table.rows, row => {\n        const cells = map$3(row.cells, cell => {\n          const td = deep$1(cell);\n          remove$a(td, 'colspan');\n          remove$a(td, 'rowspan');\n          return td;\n        });\n        const tr = shallow$1(row.element);\n        append(tr, cells);\n        return tr;\n      });\n    };\n    const fromDom = tableElm => {\n      const table = tableModel(shallow$1(tableElm), 0, []);\n      each$e(descendants(tableElm, 'tr'), (tr, y) => {\n        each$e(descendants(tr, 'td,th'), (td, x) => {\n          fillout(table, skipCellsX(table, x, y), y, tr, td);\n        });\n      });\n      return tableModel(table.element, getWidth(table.rows), table.rows);\n    };\n    const toDom = table => {\n      return createDomTable(table, modelRowsToDomRows(table));\n    };\n    const subsection = (table, startElement, endElement) => {\n      return findElementPos(table, startElement).bind(startPos => {\n        return findElementPos(table, endElement).map(endPos => {\n          return subTable(table, startPos, endPos);\n        });\n      });\n    };\n\n    const findParentListContainer = parents => find$2(parents, elm => name(elm) === 'ul' || name(elm) === 'ol');\n    const getFullySelectedListWrappers = (parents, rng) => find$2(parents, elm => name(elm) === 'li' && hasAllContentsSelected(elm, rng)).fold(constant([]), _li => findParentListContainer(parents).map(listCont => {\n      const listElm = SugarElement.fromTag(name(listCont));\n      const listStyles = filter$4(getAllRaw(listCont), (_style, name) => startsWith(name, 'list-style'));\n      setAll(listElm, listStyles);\n      return [\n        SugarElement.fromTag('li'),\n        listElm\n      ];\n    }).getOr([]));\n    const wrap = (innerElm, elms) => {\n      const wrapped = foldl(elms, (acc, elm) => {\n        append$1(elm, acc);\n        return elm;\n      }, innerElm);\n      return elms.length > 0 ? fromElements([wrapped]) : wrapped;\n    };\n    const directListWrappers = commonAnchorContainer => {\n      if (isListItem$1(commonAnchorContainer)) {\n        return parent(commonAnchorContainer).filter(isList).fold(constant([]), listElm => [\n          commonAnchorContainer,\n          listElm\n        ]);\n      } else {\n        return isList(commonAnchorContainer) ? [commonAnchorContainer] : [];\n      }\n    };\n    const getWrapElements = (rootNode, rng, schema) => {\n      const commonAnchorContainer = SugarElement.fromDom(rng.commonAncestorContainer);\n      const parents = parentsAndSelf(commonAnchorContainer, rootNode);\n      const wrapElements = filter$5(parents, el => schema.isWrapper(name(el)));\n      const listWrappers = getFullySelectedListWrappers(parents, rng);\n      const allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer));\n      return map$3(allWrappers, shallow$1);\n    };\n    const emptyFragment = () => fromElements([]);\n    const getFragmentFromRange = (rootNode, rng, schema) => wrap(SugarElement.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng, schema));\n    const getParentTable = (rootElm, cell) => ancestor$3(cell, 'table', curry(eq, rootElm));\n    const getTableFragment = (rootNode, selectedTableCells) => getParentTable(rootNode, selectedTableCells[0]).bind(tableElm => {\n      const firstCell = selectedTableCells[0];\n      const lastCell = selectedTableCells[selectedTableCells.length - 1];\n      const fullTableModel = fromDom(tableElm);\n      return subsection(fullTableModel, firstCell, lastCell).map(sectionedTableModel => fromElements([toDom(sectionedTableModel)]));\n    }).getOrThunk(emptyFragment);\n    const getSelectionFragment = (rootNode, ranges, schema) => ranges.length > 0 && ranges[0].collapsed ? emptyFragment() : getFragmentFromRange(rootNode, ranges[0], schema);\n    const read$3 = (rootNode, ranges, schema) => {\n      const selectedCells = getCellsFromElementOrRanges(ranges, rootNode);\n      return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges, schema);\n    };\n\n    const isCollapsibleWhitespace = (text, index) => index >= 0 && index < text.length && isWhiteSpace(text.charAt(index));\n    const getInnerText = bin => {\n      return trim$2(bin.innerText);\n    };\n    const getContextNodeName = parentBlockOpt => parentBlockOpt.map(block => block.nodeName).getOr('div').toLowerCase();\n    const getTextContent = editor => Optional.from(editor.selection.getRng()).map(rng => {\n      var _a;\n      const parentBlockOpt = Optional.from(editor.dom.getParent(rng.commonAncestorContainer, editor.dom.isBlock));\n      const body = editor.getBody();\n      const contextNodeName = getContextNodeName(parentBlockOpt);\n      const rangeContentClone = SugarElement.fromDom(rng.cloneContents());\n      cleanupBogusElements(rangeContentClone);\n      cleanupInputNames(rangeContentClone);\n      const bin = editor.dom.add(body, contextNodeName, {\n        'data-mce-bogus': 'all',\n        'style': 'overflow: hidden; opacity: 0;'\n      }, rangeContentClone.dom);\n      const text = getInnerText(bin);\n      const nonRenderedText = trim$2((_a = bin.textContent) !== null && _a !== void 0 ? _a : '');\n      editor.dom.remove(bin);\n      if (isCollapsibleWhitespace(nonRenderedText, 0) || isCollapsibleWhitespace(nonRenderedText, nonRenderedText.length - 1)) {\n        const parentBlock = parentBlockOpt.getOr(body);\n        const parentBlockText = getInnerText(parentBlock);\n        const textIndex = parentBlockText.indexOf(text);\n        if (textIndex === -1) {\n          return text;\n        } else {\n          const hasProceedingSpace = isCollapsibleWhitespace(parentBlockText, textIndex - 1);\n          const hasTrailingSpace = isCollapsibleWhitespace(parentBlockText, textIndex + text.length);\n          return (hasProceedingSpace ? ' ' : '') + text + (hasTrailingSpace ? ' ' : '');\n        }\n      } else {\n        return text;\n      }\n    }).getOr('');\n    const getSerializedContent = (editor, args) => {\n      const rng = editor.selection.getRng(), tmpElm = editor.dom.create('body');\n      const sel = editor.selection.getSel();\n      const ranges = processRanges(editor, getRanges$1(sel));\n      const fragment = args.contextual ? read$3(SugarElement.fromDom(editor.getBody()), ranges, editor.schema).dom : rng.cloneContents();\n      if (fragment) {\n        tmpElm.appendChild(fragment);\n      }\n      return editor.selection.serializer.serialize(tmpElm, args);\n    };\n    const extractSelectedContent = (editor, args) => {\n      if (args.format === 'text') {\n        return getTextContent(editor);\n      } else {\n        const content = getSerializedContent(editor, args);\n        if (args.format === 'tree') {\n          return content;\n        } else {\n          return editor.selection.isCollapsed() ? '' : content;\n        }\n      }\n    };\n    const setupArgs$3 = (args, format) => ({\n      ...args,\n      format,\n      get: true,\n      selection: true,\n      getInner: true\n    });\n    const getSelectedContentInternal = (editor, format, args = {}) => {\n      const defaultedArgs = setupArgs$3(args, format);\n      return preProcessGetContent(editor, defaultedArgs).fold(identity, updatedArgs => {\n        const content = extractSelectedContent(editor, updatedArgs);\n        return postProcessGetContent(editor, content, updatedArgs);\n      });\n    };\n\n    const KEEP = 0, INSERT = 1, DELETE = 2;\n    const diff = (left, right) => {\n      const size = left.length + right.length + 2;\n      const vDown = new Array(size);\n      const vUp = new Array(size);\n      const snake = (start, end, diag) => {\n        return {\n          start,\n          end,\n          diag\n        };\n      };\n      const buildScript = (start1, end1, start2, end2, script) => {\n        const middle = getMiddleSnake(start1, end1, start2, end2);\n        if (middle === null || middle.start === end1 && middle.diag === end1 - end2 || middle.end === start1 && middle.diag === start1 - start2) {\n          let i = start1;\n          let j = start2;\n          while (i < end1 || j < end2) {\n            if (i < end1 && j < end2 && left[i] === right[j]) {\n              script.push([\n                KEEP,\n                left[i]\n              ]);\n              ++i;\n              ++j;\n            } else {\n              if (end1 - start1 > end2 - start2) {\n                script.push([\n                  DELETE,\n                  left[i]\n                ]);\n                ++i;\n              } else {\n                script.push([\n                  INSERT,\n                  right[j]\n                ]);\n                ++j;\n              }\n            }\n          }\n        } else {\n          buildScript(start1, middle.start, start2, middle.start - middle.diag, script);\n          for (let i2 = middle.start; i2 < middle.end; ++i2) {\n            script.push([\n              KEEP,\n              left[i2]\n            ]);\n          }\n          buildScript(middle.end, end1, middle.end - middle.diag, end2, script);\n        }\n      };\n      const buildSnake = (start, diag, end1, end2) => {\n        let end = start;\n        while (end - diag < end2 && end < end1 && left[end] === right[end - diag]) {\n          ++end;\n        }\n        return snake(start, end, diag);\n      };\n      const getMiddleSnake = (start1, end1, start2, end2) => {\n        const m = end1 - start1;\n        const n = end2 - start2;\n        if (m === 0 || n === 0) {\n          return null;\n        }\n        const delta = m - n;\n        const sum = n + m;\n        const offset = (sum % 2 === 0 ? sum : sum + 1) / 2;\n        vDown[1 + offset] = start1;\n        vUp[1 + offset] = end1 + 1;\n        let d, k, i, x, y;\n        for (d = 0; d <= offset; ++d) {\n          for (k = -d; k <= d; k += 2) {\n            i = k + offset;\n            if (k === -d || k !== d && vDown[i - 1] < vDown[i + 1]) {\n              vDown[i] = vDown[i + 1];\n            } else {\n              vDown[i] = vDown[i - 1] + 1;\n            }\n            x = vDown[i];\n            y = x - start1 + start2 - k;\n            while (x < end1 && y < end2 && left[x] === right[y]) {\n              vDown[i] = ++x;\n              ++y;\n            }\n            if (delta % 2 !== 0 && delta - d <= k && k <= delta + d) {\n              if (vUp[i - delta] <= vDown[i]) {\n                return buildSnake(vUp[i - delta], k + start1 - start2, end1, end2);\n              }\n            }\n          }\n          for (k = delta - d; k <= delta + d; k += 2) {\n            i = k + offset - delta;\n            if (k === delta - d || k !== delta + d && vUp[i + 1] <= vUp[i - 1]) {\n              vUp[i] = vUp[i + 1] - 1;\n            } else {\n              vUp[i] = vUp[i - 1];\n            }\n            x = vUp[i] - 1;\n            y = x - start1 + start2 - k;\n            while (x >= start1 && y >= start2 && left[x] === right[y]) {\n              vUp[i] = x--;\n              y--;\n            }\n            if (delta % 2 === 0 && -d <= k && k <= d) {\n              if (vUp[i] <= vDown[i + delta]) {\n                return buildSnake(vUp[i], k + start1 - start2, end1, end2);\n              }\n            }\n          }\n        }\n        return null;\n      };\n      const script = [];\n      buildScript(0, left.length, 0, right.length, script);\n      return script;\n    };\n\n    const getOuterHtml = elm => {\n      if (isElement$6(elm)) {\n        return elm.outerHTML;\n      } else if (isText$a(elm)) {\n        return Entities.encodeRaw(elm.data, false);\n      } else if (isComment(elm)) {\n        return '<!--' + elm.data + '-->';\n      }\n      return '';\n    };\n    const createFragment = html => {\n      let node;\n      const container = document.createElement('div');\n      const frag = document.createDocumentFragment();\n      if (html) {\n        container.innerHTML = html;\n      }\n      while (node = container.firstChild) {\n        frag.appendChild(node);\n      }\n      return frag;\n    };\n    const insertAt = (elm, html, index) => {\n      const fragment = createFragment(html);\n      if (elm.hasChildNodes() && index < elm.childNodes.length) {\n        const target = elm.childNodes[index];\n        elm.insertBefore(fragment, target);\n      } else {\n        elm.appendChild(fragment);\n      }\n    };\n    const removeAt = (elm, index) => {\n      if (elm.hasChildNodes() && index < elm.childNodes.length) {\n        const target = elm.childNodes[index];\n        elm.removeChild(target);\n      }\n    };\n    const applyDiff = (diff, elm) => {\n      let index = 0;\n      each$e(diff, action => {\n        if (action[0] === KEEP) {\n          index++;\n        } else if (action[0] === INSERT) {\n          insertAt(elm, action[1], index);\n          index++;\n        } else if (action[0] === DELETE) {\n          removeAt(elm, index);\n        }\n      });\n    };\n    const read$2 = (elm, trimZwsp) => filter$5(map$3(from(elm.childNodes), trimZwsp ? compose(trim$2, getOuterHtml) : getOuterHtml), item => {\n      return item.length > 0;\n    });\n    const write = (fragments, elm) => {\n      const currentFragments = map$3(from(elm.childNodes), getOuterHtml);\n      applyDiff(diff(currentFragments, fragments), elm);\n      return elm;\n    };\n\n    const lazyTempDocument = cached(() => document.implementation.createHTMLDocument('undo'));\n    const hasIframes = body => body.querySelector('iframe') !== null;\n    const createFragmentedLevel = fragments => {\n      return {\n        type: 'fragmented',\n        fragments,\n        content: '',\n        bookmark: null,\n        beforeBookmark: null\n      };\n    };\n    const createCompleteLevel = content => {\n      return {\n        type: 'complete',\n        fragments: null,\n        content,\n        bookmark: null,\n        beforeBookmark: null\n      };\n    };\n    const createFromEditor = editor => {\n      const tempAttrs = editor.serializer.getTempAttrs();\n      const body = trim$1(editor.getBody(), tempAttrs);\n      return hasIframes(body) ? createFragmentedLevel(read$2(body, true)) : createCompleteLevel(trim$2(body.innerHTML));\n    };\n    const applyToEditor = (editor, level, before) => {\n      const bookmark = before ? level.beforeBookmark : level.bookmark;\n      if (level.type === 'fragmented') {\n        write(level.fragments, editor.getBody());\n      } else {\n        editor.setContent(level.content, {\n          format: 'raw',\n          no_selection: isNonNullable(bookmark) && isPathBookmark(bookmark) ? !bookmark.isFakeCaret : true\n        });\n      }\n      if (bookmark) {\n        editor.selection.moveToBookmark(bookmark);\n        editor.selection.scrollIntoView();\n      }\n    };\n    const getLevelContent = level => {\n      return level.type === 'fragmented' ? level.fragments.join('') : level.content;\n    };\n    const getCleanLevelContent = level => {\n      const elm = SugarElement.fromTag('body', lazyTempDocument());\n      set$1(elm, getLevelContent(level));\n      each$e(descendants(elm, '*[data-mce-bogus]'), unwrap);\n      return get$6(elm);\n    };\n    const hasEqualContent = (level1, level2) => getLevelContent(level1) === getLevelContent(level2);\n    const hasEqualCleanedContent = (level1, level2) => getCleanLevelContent(level1) === getCleanLevelContent(level2);\n    const isEq$1 = (level1, level2) => {\n      if (!level1 || !level2) {\n        return false;\n      } else if (hasEqualContent(level1, level2)) {\n        return true;\n      } else {\n        return hasEqualCleanedContent(level1, level2);\n      }\n    };\n\n    const isUnlocked = locks => locks.get() === 0;\n\n    const setTyping = (undoManager, typing, locks) => {\n      if (isUnlocked(locks)) {\n        undoManager.typing = typing;\n      }\n    };\n    const endTyping = (undoManager, locks) => {\n      if (undoManager.typing) {\n        setTyping(undoManager, false, locks);\n        undoManager.add();\n      }\n    };\n    const endTypingLevelIgnoreLocks = undoManager => {\n      if (undoManager.typing) {\n        undoManager.typing = false;\n        undoManager.add();\n      }\n    };\n\n    const beforeChange$1 = (editor, locks, beforeBookmark) => {\n      if (isUnlocked(locks)) {\n        beforeBookmark.set(getUndoBookmark(editor.selection));\n      }\n    };\n    const addUndoLevel$1 = (editor, undoManager, index, locks, beforeBookmark, level, event) => {\n      const currentLevel = createFromEditor(editor);\n      const newLevel = Tools.extend(level || {}, currentLevel);\n      if (!isUnlocked(locks) || editor.removed) {\n        return null;\n      }\n      const lastLevel = undoManager.data[index.get()];\n      if (editor.dispatch('BeforeAddUndo', {\n          level: newLevel,\n          lastLevel,\n          originalEvent: event\n        }).isDefaultPrevented()) {\n        return null;\n      }\n      if (lastLevel && isEq$1(lastLevel, newLevel)) {\n        return null;\n      }\n      if (undoManager.data[index.get()]) {\n        beforeBookmark.get().each(bm => {\n          undoManager.data[index.get()].beforeBookmark = bm;\n        });\n      }\n      const customUndoRedoLevels = getCustomUndoRedoLevels(editor);\n      if (customUndoRedoLevels) {\n        if (undoManager.data.length > customUndoRedoLevels) {\n          for (let i = 0; i < undoManager.data.length - 1; i++) {\n            undoManager.data[i] = undoManager.data[i + 1];\n          }\n          undoManager.data.length--;\n          index.set(undoManager.data.length);\n        }\n      }\n      newLevel.bookmark = getUndoBookmark(editor.selection);\n      if (index.get() < undoManager.data.length - 1) {\n        undoManager.data.length = index.get() + 1;\n      }\n      undoManager.data.push(newLevel);\n      index.set(undoManager.data.length - 1);\n      const args = {\n        level: newLevel,\n        lastLevel,\n        originalEvent: event\n      };\n      if (index.get() > 0) {\n        editor.setDirty(true);\n        editor.dispatch('AddUndo', args);\n        editor.dispatch('change', args);\n      } else {\n        editor.dispatch('AddUndo', args);\n      }\n      return newLevel;\n    };\n    const clear$1 = (editor, undoManager, index) => {\n      undoManager.data = [];\n      index.set(0);\n      undoManager.typing = false;\n      editor.dispatch('ClearUndos');\n    };\n    const extra$1 = (editor, undoManager, index, callback1, callback2) => {\n      if (undoManager.transact(callback1)) {\n        const bookmark = undoManager.data[index.get()].bookmark;\n        const lastLevel = undoManager.data[index.get() - 1];\n        applyToEditor(editor, lastLevel, true);\n        if (undoManager.transact(callback2)) {\n          undoManager.data[index.get() - 1].beforeBookmark = bookmark;\n        }\n      }\n    };\n    const redo$1 = (editor, index, data) => {\n      let level;\n      if (index.get() < data.length - 1) {\n        index.set(index.get() + 1);\n        level = data[index.get()];\n        applyToEditor(editor, level, false);\n        editor.setDirty(true);\n        editor.dispatch('Redo', { level });\n      }\n      return level;\n    };\n    const undo$1 = (editor, undoManager, locks, index) => {\n      let level;\n      if (undoManager.typing) {\n        undoManager.add();\n        undoManager.typing = false;\n        setTyping(undoManager, false, locks);\n      }\n      if (index.get() > 0) {\n        index.set(index.get() - 1);\n        level = undoManager.data[index.get()];\n        applyToEditor(editor, level, true);\n        editor.setDirty(true);\n        editor.dispatch('Undo', { level });\n      }\n      return level;\n    };\n    const reset$1 = undoManager => {\n      undoManager.clear();\n      undoManager.add();\n    };\n    const hasUndo$1 = (editor, undoManager, index) => index.get() > 0 || undoManager.typing && undoManager.data[0] && !isEq$1(createFromEditor(editor), undoManager.data[0]);\n    const hasRedo$1 = (undoManager, index) => index.get() < undoManager.data.length - 1 && !undoManager.typing;\n    const transact$1 = (undoManager, locks, callback) => {\n      endTyping(undoManager, locks);\n      undoManager.beforeChange();\n      undoManager.ignore(callback);\n      return undoManager.add();\n    };\n    const ignore$1 = (locks, callback) => {\n      try {\n        locks.set(locks.get() + 1);\n        callback();\n      } finally {\n        locks.set(locks.get() - 1);\n      }\n    };\n\n    const addVisualInternal = (editor, elm) => {\n      const dom = editor.dom;\n      const scope = isNonNullable(elm) ? elm : editor.getBody();\n      each$e(dom.select('table,a', scope), matchedElm => {\n        switch (matchedElm.nodeName) {\n        case 'TABLE':\n          const cls = getVisualAidsTableClass(editor);\n          const value = dom.getAttrib(matchedElm, 'border');\n          if ((!value || value === '0') && editor.hasVisual) {\n            dom.addClass(matchedElm, cls);\n          } else {\n            dom.removeClass(matchedElm, cls);\n          }\n          break;\n        case 'A':\n          if (!dom.getAttrib(matchedElm, 'href')) {\n            const value = dom.getAttrib(matchedElm, 'name') || matchedElm.id;\n            const cls = getVisualAidsAnchorClass(editor);\n            if (value && editor.hasVisual) {\n              dom.addClass(matchedElm, cls);\n            } else {\n              dom.removeClass(matchedElm, cls);\n            }\n          }\n          break;\n        }\n      });\n      editor.dispatch('VisualAid', {\n        element: elm,\n        hasVisual: editor.hasVisual\n      });\n    };\n\n    const makePlainAdaptor = editor => ({\n      init: { bindEvents: noop },\n      undoManager: {\n        beforeChange: (locks, beforeBookmark) => beforeChange$1(editor, locks, beforeBookmark),\n        add: (undoManager, index, locks, beforeBookmark, level, event) => addUndoLevel$1(editor, undoManager, index, locks, beforeBookmark, level, event),\n        undo: (undoManager, locks, index) => undo$1(editor, undoManager, locks, index),\n        redo: (index, data) => redo$1(editor, index, data),\n        clear: (undoManager, index) => clear$1(editor, undoManager, index),\n        reset: undoManager => reset$1(undoManager),\n        hasUndo: (undoManager, index) => hasUndo$1(editor, undoManager, index),\n        hasRedo: (undoManager, index) => hasRedo$1(undoManager, index),\n        transact: (undoManager, locks, callback) => transact$1(undoManager, locks, callback),\n        ignore: (locks, callback) => ignore$1(locks, callback),\n        extra: (undoManager, index, callback1, callback2) => extra$1(editor, undoManager, index, callback1, callback2)\n      },\n      formatter: {\n        match: (name, vars, node, similar) => match$2(editor, name, vars, node, similar),\n        matchAll: (names, vars) => matchAll(editor, names, vars),\n        matchNode: (node, name, vars, similar) => matchNode(editor, node, name, vars, similar),\n        canApply: name => canApply(editor, name),\n        closest: names => closest(editor, names),\n        apply: (name, vars, node) => applyFormat$1(editor, name, vars, node),\n        remove: (name, vars, node, similar) => removeFormat$1(editor, name, vars, node, similar),\n        toggle: (name, vars, node) => toggle(editor, name, vars, node),\n        formatChanged: (registeredFormatListeners, formats, callback, similar, vars) => formatChangedInternal(editor, registeredFormatListeners, formats, callback, similar, vars)\n      },\n      editor: {\n        getContent: args => getContentInternal(editor, args),\n        setContent: (content, args) => setContentInternal(editor, content, args),\n        insertContent: (value, details) => insertHtmlAtCaret(editor, value, details),\n        addVisual: elm => addVisualInternal(editor, elm)\n      },\n      selection: { getContent: (format, args) => getSelectedContentInternal(editor, format, args) },\n      autocompleter: {\n        addDecoration: range => create$9(editor, range),\n        removeDecoration: () => remove$2(editor, SugarElement.fromDom(editor.getBody()))\n      },\n      raw: { getModel: () => Optional.none() }\n    });\n    const makeRtcAdaptor = rtcEditor => {\n      const defaultVars = vars => isObject(vars) ? vars : {};\n      const {init, undoManager, formatter, editor, selection, autocompleter, raw} = rtcEditor;\n      return {\n        init: { bindEvents: init.bindEvents },\n        undoManager: {\n          beforeChange: undoManager.beforeChange,\n          add: undoManager.add,\n          undo: undoManager.undo,\n          redo: undoManager.redo,\n          clear: undoManager.clear,\n          reset: undoManager.reset,\n          hasUndo: undoManager.hasUndo,\n          hasRedo: undoManager.hasRedo,\n          transact: (_undoManager, _locks, fn) => undoManager.transact(fn),\n          ignore: (_locks, callback) => undoManager.ignore(callback),\n          extra: (_undoManager, _index, callback1, callback2) => undoManager.extra(callback1, callback2)\n        },\n        formatter: {\n          match: (name, vars, _node, similar) => formatter.match(name, defaultVars(vars), similar),\n          matchAll: formatter.matchAll,\n          matchNode: formatter.matchNode,\n          canApply: name => formatter.canApply(name),\n          closest: names => formatter.closest(names),\n          apply: (name, vars, _node) => formatter.apply(name, defaultVars(vars)),\n          remove: (name, vars, _node, _similar) => formatter.remove(name, defaultVars(vars)),\n          toggle: (name, vars, _node) => formatter.toggle(name, defaultVars(vars)),\n          formatChanged: (_rfl, formats, callback, similar, vars) => formatter.formatChanged(formats, callback, similar, vars)\n        },\n        editor: {\n          getContent: args => editor.getContent(args),\n          setContent: (content, args) => {\n            return {\n              content: editor.setContent(content, args),\n              html: ''\n            };\n          },\n          insertContent: (content, _details) => {\n            editor.insertContent(content);\n            return '';\n          },\n          addVisual: editor.addVisual\n        },\n        selection: { getContent: (_format, args) => selection.getContent(args) },\n        autocompleter: {\n          addDecoration: autocompleter.addDecoration,\n          removeDecoration: autocompleter.removeDecoration\n        },\n        raw: { getModel: () => Optional.some(raw.getRawModel()) }\n      };\n    };\n    const makeNoopAdaptor = () => {\n      const nul = constant(null);\n      const empty = constant('');\n      return {\n        init: { bindEvents: noop },\n        undoManager: {\n          beforeChange: noop,\n          add: nul,\n          undo: nul,\n          redo: nul,\n          clear: noop,\n          reset: noop,\n          hasUndo: never,\n          hasRedo: never,\n          transact: nul,\n          ignore: noop,\n          extra: noop\n        },\n        formatter: {\n          match: never,\n          matchAll: constant([]),\n          matchNode: constant(undefined),\n          canApply: never,\n          closest: empty,\n          apply: noop,\n          remove: noop,\n          toggle: noop,\n          formatChanged: constant({ unbind: noop })\n        },\n        editor: {\n          getContent: empty,\n          setContent: constant({\n            content: '',\n            html: ''\n          }),\n          insertContent: constant(''),\n          addVisual: noop\n        },\n        selection: { getContent: empty },\n        autocompleter: {\n          addDecoration: noop,\n          removeDecoration: noop\n        },\n        raw: { getModel: constant(Optional.none()) }\n      };\n    };\n    const isRtc = editor => has$2(editor.plugins, 'rtc');\n    const getRtcSetup = editor => get$a(editor.plugins, 'rtc').bind(rtcPlugin => Optional.from(rtcPlugin.setup));\n    const setup$t = editor => {\n      const editorCast = editor;\n      return getRtcSetup(editor).fold(() => {\n        editorCast.rtcInstance = makePlainAdaptor(editor);\n        return Optional.none();\n      }, setup => {\n        editorCast.rtcInstance = makeNoopAdaptor();\n        return Optional.some(() => setup().then(rtcEditor => {\n          editorCast.rtcInstance = makeRtcAdaptor(rtcEditor);\n          return rtcEditor.rtc.isRemote;\n        }));\n      });\n    };\n    const getRtcInstanceWithFallback = editor => editor.rtcInstance ? editor.rtcInstance : makePlainAdaptor(editor);\n    const getRtcInstanceWithError = editor => {\n      const rtcInstance = editor.rtcInstance;\n      if (!rtcInstance) {\n        throw new Error('Failed to get RTC instance not yet initialized.');\n      } else {\n        return rtcInstance;\n      }\n    };\n    const beforeChange = (editor, locks, beforeBookmark) => {\n      getRtcInstanceWithError(editor).undoManager.beforeChange(locks, beforeBookmark);\n    };\n    const addUndoLevel = (editor, undoManager, index, locks, beforeBookmark, level, event) => getRtcInstanceWithError(editor).undoManager.add(undoManager, index, locks, beforeBookmark, level, event);\n    const undo = (editor, undoManager, locks, index) => getRtcInstanceWithError(editor).undoManager.undo(undoManager, locks, index);\n    const redo = (editor, index, data) => getRtcInstanceWithError(editor).undoManager.redo(index, data);\n    const clear = (editor, undoManager, index) => {\n      getRtcInstanceWithError(editor).undoManager.clear(undoManager, index);\n    };\n    const reset = (editor, undoManager) => {\n      getRtcInstanceWithError(editor).undoManager.reset(undoManager);\n    };\n    const hasUndo = (editor, undoManager, index) => getRtcInstanceWithError(editor).undoManager.hasUndo(undoManager, index);\n    const hasRedo = (editor, undoManager, index) => getRtcInstanceWithError(editor).undoManager.hasRedo(undoManager, index);\n    const transact = (editor, undoManager, locks, callback) => getRtcInstanceWithError(editor).undoManager.transact(undoManager, locks, callback);\n    const ignore = (editor, locks, callback) => {\n      getRtcInstanceWithError(editor).undoManager.ignore(locks, callback);\n    };\n    const extra = (editor, undoManager, index, callback1, callback2) => {\n      getRtcInstanceWithError(editor).undoManager.extra(undoManager, index, callback1, callback2);\n    };\n    const matchFormat = (editor, name, vars, node, similar) => getRtcInstanceWithError(editor).formatter.match(name, vars, node, similar);\n    const matchAllFormats = (editor, names, vars) => getRtcInstanceWithError(editor).formatter.matchAll(names, vars);\n    const matchNodeFormat = (editor, node, name, vars, similar) => getRtcInstanceWithError(editor).formatter.matchNode(node, name, vars, similar);\n    const canApplyFormat = (editor, name) => getRtcInstanceWithError(editor).formatter.canApply(name);\n    const closestFormat = (editor, names) => getRtcInstanceWithError(editor).formatter.closest(names);\n    const applyFormat = (editor, name, vars, node) => {\n      getRtcInstanceWithError(editor).formatter.apply(name, vars, node);\n    };\n    const removeFormat = (editor, name, vars, node, similar) => {\n      getRtcInstanceWithError(editor).formatter.remove(name, vars, node, similar);\n    };\n    const toggleFormat = (editor, name, vars, node) => {\n      getRtcInstanceWithError(editor).formatter.toggle(name, vars, node);\n    };\n    const formatChanged = (editor, registeredFormatListeners, formats, callback, similar, vars) => getRtcInstanceWithError(editor).formatter.formatChanged(registeredFormatListeners, formats, callback, similar, vars);\n    const getContent$2 = (editor, args) => getRtcInstanceWithFallback(editor).editor.getContent(args);\n    const setContent$2 = (editor, content, args) => getRtcInstanceWithFallback(editor).editor.setContent(content, args);\n    const insertContent$1 = (editor, value, details) => getRtcInstanceWithFallback(editor).editor.insertContent(value, details);\n    const getSelectedContent = (editor, format, args) => getRtcInstanceWithError(editor).selection.getContent(format, args);\n    const addVisual$1 = (editor, elm) => getRtcInstanceWithError(editor).editor.addVisual(elm);\n    const bindEvents = editor => getRtcInstanceWithError(editor).init.bindEvents();\n    const addAutocompleterDecoration = (editor, range) => getRtcInstanceWithError(editor).autocompleter.addDecoration(range);\n    const removeAutocompleterDecoration = editor => getRtcInstanceWithError(editor).autocompleter.removeDecoration();\n\n    const getContent$1 = (editor, args = {}) => {\n      const format = args.format ? args.format : 'html';\n      return getSelectedContent(editor, format, args);\n    };\n\n    const removeEmpty = text => {\n      if (text.dom.length === 0) {\n        remove$5(text);\n        return Optional.none();\n      } else {\n        return Optional.some(text);\n      }\n    };\n    const walkPastBookmark = (node, start) => node.filter(elm => BookmarkManager.isBookmarkNode(elm.dom)).bind(start ? nextSibling : prevSibling);\n    const merge$1 = (outer, inner, rng, start, schema) => {\n      const outerElm = outer.dom;\n      const innerElm = inner.dom;\n      const oldLength = start ? outerElm.length : innerElm.length;\n      if (start) {\n        mergeTextNodes(outerElm, innerElm, schema, false, !start);\n        rng.setStart(innerElm, oldLength);\n      } else {\n        mergeTextNodes(innerElm, outerElm, schema, false, !start);\n        rng.setEnd(innerElm, oldLength);\n      }\n    };\n    const normalizeTextIfRequired = (inner, start, schema) => {\n      parent(inner).each(root => {\n        const text = inner.dom;\n        if (start && needsToBeNbspLeft(root, CaretPosition(text, 0), schema)) {\n          normalizeWhitespaceAfter(text, 0, schema);\n        } else if (!start && needsToBeNbspRight(root, CaretPosition(text, text.length), schema)) {\n          normalizeWhitespaceBefore(text, text.length, schema);\n        }\n      });\n    };\n    const mergeAndNormalizeText = (outerNode, innerNode, rng, start, schema) => {\n      outerNode.bind(outer => {\n        const normalizer = start ? normalizeWhitespaceBefore : normalizeWhitespaceAfter;\n        normalizer(outer.dom, start ? outer.dom.length : 0, schema);\n        return innerNode.filter(isText$b).map(inner => merge$1(outer, inner, rng, start, schema));\n      }).orThunk(() => {\n        const innerTextNode = walkPastBookmark(innerNode, start).or(innerNode).filter(isText$b);\n        return innerTextNode.map(inner => normalizeTextIfRequired(inner, start, schema));\n      });\n    };\n    const rngSetContent = (rng, fragment, schema) => {\n      const firstChild = Optional.from(fragment.firstChild).map(SugarElement.fromDom);\n      const lastChild = Optional.from(fragment.lastChild).map(SugarElement.fromDom);\n      rng.deleteContents();\n      rng.insertNode(fragment);\n      const prevText = firstChild.bind(prevSibling).filter(isText$b).bind(removeEmpty);\n      const nextText = lastChild.bind(nextSibling).filter(isText$b).bind(removeEmpty);\n      mergeAndNormalizeText(prevText, firstChild, rng, true, schema);\n      mergeAndNormalizeText(nextText, lastChild, rng, false, schema);\n      rng.collapse(false);\n    };\n    const setupArgs$2 = (args, content) => ({\n      format: 'html',\n      ...args,\n      set: true,\n      selection: true,\n      content\n    });\n    const cleanContent = (editor, args) => {\n      if (args.format !== 'raw') {\n        const rng = editor.selection.getRng();\n        const contextBlock = editor.dom.getParent(rng.commonAncestorContainer, editor.dom.isBlock);\n        const contextArgs = contextBlock ? { context: contextBlock.nodeName.toLowerCase() } : {};\n        const node = editor.parser.parse(args.content, {\n          forced_root_block: false,\n          ...contextArgs,\n          ...args\n        });\n        return HtmlSerializer({ validate: false }, editor.schema).serialize(node);\n      } else {\n        return args.content;\n      }\n    };\n    const setContent$1 = (editor, content, args = {}) => {\n      const defaultedArgs = setupArgs$2(args, content);\n      preProcessSetContent(editor, defaultedArgs).each(updatedArgs => {\n        const cleanedContent = cleanContent(editor, updatedArgs);\n        const rng = editor.selection.getRng();\n        rngSetContent(rng, rng.createContextualFragment(cleanedContent), editor.schema);\n        editor.selection.setRng(rng);\n        scrollRangeIntoView(editor, rng);\n        postProcessSetContent(editor, cleanedContent, updatedArgs);\n      });\n    };\n\n    const deleteFromCallbackMap = (callbackMap, selector, callback) => {\n      if (has$2(callbackMap, selector)) {\n        const newCallbacks = filter$5(callbackMap[selector], cb => cb !== callback);\n        if (newCallbacks.length === 0) {\n          delete callbackMap[selector];\n        } else {\n          callbackMap[selector] = newCallbacks;\n        }\n      }\n    };\n    var SelectorChanged = (dom, editor) => {\n      let selectorChangedData;\n      let currentSelectors;\n      const findMatchingNode = (selector, nodes) => find$2(nodes, node => dom.is(node, selector));\n      const getParents = elem => dom.getParents(elem, undefined, dom.getRoot());\n      const setup = () => {\n        selectorChangedData = {};\n        currentSelectors = {};\n        editor.on('NodeChange', e => {\n          const node = e.element;\n          const parents = getParents(node);\n          const matchedSelectors = {};\n          each$d(selectorChangedData, (callbacks, selector) => {\n            findMatchingNode(selector, parents).each(node => {\n              if (!currentSelectors[selector]) {\n                each$e(callbacks, callback => {\n                  callback(true, {\n                    node,\n                    selector,\n                    parents\n                  });\n                });\n                currentSelectors[selector] = callbacks;\n              }\n              matchedSelectors[selector] = callbacks;\n            });\n          });\n          each$d(currentSelectors, (callbacks, selector) => {\n            if (!matchedSelectors[selector]) {\n              delete currentSelectors[selector];\n              each$e(callbacks, callback => {\n                callback(false, {\n                  node,\n                  selector,\n                  parents\n                });\n              });\n            }\n          });\n        });\n      };\n      return {\n        selectorChangedWithUnbind: (selector, callback) => {\n          if (!selectorChangedData) {\n            setup();\n          }\n          if (!selectorChangedData[selector]) {\n            selectorChangedData[selector] = [];\n          }\n          selectorChangedData[selector].push(callback);\n          findMatchingNode(selector, getParents(editor.selection.getStart())).each(() => {\n            currentSelectors[selector] = selectorChangedData[selector];\n          });\n          return {\n            unbind: () => {\n              deleteFromCallbackMap(selectorChangedData, selector, callback);\n              deleteFromCallbackMap(currentSelectors, selector, callback);\n            }\n          };\n        }\n      };\n    };\n\n    const isAttachedToDom = node => {\n      return !!(node && node.ownerDocument) && contains(SugarElement.fromDom(node.ownerDocument), SugarElement.fromDom(node));\n    };\n    const isValidRange = rng => {\n      if (!rng) {\n        return false;\n      } else {\n        return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer);\n      }\n    };\n    const EditorSelection = (dom, win, serializer, editor) => {\n      let selectedRange;\n      let explicitRange;\n      const {selectorChangedWithUnbind} = SelectorChanged(dom, editor);\n      const setCursorLocation = (node, offset) => {\n        const rng = dom.createRng();\n        if (isNonNullable(node) && isNonNullable(offset)) {\n          rng.setStart(node, offset);\n          rng.setEnd(node, offset);\n          setRng(rng);\n          collapse(false);\n        } else {\n          moveEndPoint(dom, rng, editor.getBody(), true);\n          setRng(rng);\n        }\n      };\n      const getContent = args => getContent$1(editor, args);\n      const setContent = (content, args) => setContent$1(editor, content, args);\n      const getStart$1 = real => getStart(editor.getBody(), getRng$1(), real);\n      const getEnd = real => getEnd$1(editor.getBody(), getRng$1(), real);\n      const getBookmark = (type, normalized) => bookmarkManager.getBookmark(type, normalized);\n      const moveToBookmark = bookmark => bookmarkManager.moveToBookmark(bookmark);\n      const select$1 = (node, content) => {\n        select(dom, node, content).each(setRng);\n        return node;\n      };\n      const isCollapsed = () => {\n        const rng = getRng$1(), sel = getSel();\n        if (!rng || rng.item) {\n          return false;\n        }\n        if (rng.compareEndPoints) {\n          return rng.compareEndPoints('StartToEnd', rng) === 0;\n        }\n        return !sel || rng.collapsed;\n      };\n      const isEditable = () => {\n        const rng = getRng$1();\n        const fakeSelectedElements = editor.getBody().querySelectorAll('[data-mce-selected=\"1\"]');\n        if (fakeSelectedElements.length > 0) {\n          return forall(fakeSelectedElements, el => dom.isEditable(el.parentElement));\n        } else {\n          return isEditableRange(dom, rng);\n        }\n      };\n      const collapse = toStart => {\n        const rng = getRng$1();\n        rng.collapse(!!toStart);\n        setRng(rng);\n      };\n      const getSel = () => win.getSelection ? win.getSelection() : win.document.selection;\n      const getRng$1 = () => {\n        let rng;\n        const tryCompareBoundaryPoints = (how, sourceRange, destinationRange) => {\n          try {\n            return sourceRange.compareBoundaryPoints(how, destinationRange);\n          } catch (ex) {\n            return -1;\n          }\n        };\n        const doc = win.document;\n        if (isNonNullable(editor.bookmark) && !hasFocus(editor)) {\n          const bookmark = getRng(editor);\n          if (bookmark.isSome()) {\n            return bookmark.map(r => processRanges(editor, [r])[0]).getOr(doc.createRange());\n          }\n        }\n        try {\n          const selection = getSel();\n          if (selection && !isRestrictedNode(selection.anchorNode)) {\n            if (selection.rangeCount > 0) {\n              rng = selection.getRangeAt(0);\n            } else {\n              rng = doc.createRange();\n            }\n            rng = processRanges(editor, [rng])[0];\n          }\n        } catch (ex) {\n        }\n        if (!rng) {\n          rng = doc.createRange();\n        }\n        if (isDocument$1(rng.startContainer) && rng.collapsed) {\n          const elm = dom.getRoot();\n          rng.setStart(elm, 0);\n          rng.setEnd(elm, 0);\n        }\n        if (selectedRange && explicitRange) {\n          if (tryCompareBoundaryPoints(rng.START_TO_START, rng, selectedRange) === 0 && tryCompareBoundaryPoints(rng.END_TO_END, rng, selectedRange) === 0) {\n            rng = explicitRange;\n          } else {\n            selectedRange = null;\n            explicitRange = null;\n          }\n        }\n        return rng;\n      };\n      const setRng = (rng, forward) => {\n        if (!isValidRange(rng)) {\n          return;\n        }\n        const sel = getSel();\n        const evt = editor.dispatch('SetSelectionRange', {\n          range: rng,\n          forward\n        });\n        rng = evt.range;\n        if (sel) {\n          explicitRange = rng;\n          try {\n            sel.removeAllRanges();\n            sel.addRange(rng);\n          } catch (ex) {\n          }\n          if (forward === false && sel.extend) {\n            sel.collapse(rng.endContainer, rng.endOffset);\n            sel.extend(rng.startContainer, rng.startOffset);\n          }\n          selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null;\n        }\n        if (!rng.collapsed && rng.startContainer === rng.endContainer && (sel === null || sel === void 0 ? void 0 : sel.setBaseAndExtent)) {\n          if (rng.endOffset - rng.startOffset < 2) {\n            if (rng.startContainer.hasChildNodes()) {\n              const node = rng.startContainer.childNodes[rng.startOffset];\n              if (node && node.nodeName === 'IMG') {\n                sel.setBaseAndExtent(rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset);\n                if (sel.anchorNode !== rng.startContainer || sel.focusNode !== rng.endContainer) {\n                  sel.setBaseAndExtent(node, 0, node, 1);\n                }\n              }\n            }\n          }\n        }\n        editor.dispatch('AfterSetSelectionRange', {\n          range: rng,\n          forward\n        });\n      };\n      const setNode = elm => {\n        setContent(dom.getOuterHTML(elm));\n        return elm;\n      };\n      const getNode$1 = () => getNode(editor.getBody(), getRng$1());\n      const getSelectedBlocks$1 = (startElm, endElm) => getSelectedBlocks(dom, getRng$1(), startElm, endElm);\n      const isForward = () => {\n        const sel = getSel();\n        const anchorNode = sel === null || sel === void 0 ? void 0 : sel.anchorNode;\n        const focusNode = sel === null || sel === void 0 ? void 0 : sel.focusNode;\n        if (!sel || !anchorNode || !focusNode || isRestrictedNode(anchorNode) || isRestrictedNode(focusNode)) {\n          return true;\n        }\n        const anchorRange = dom.createRng();\n        const focusRange = dom.createRng();\n        try {\n          anchorRange.setStart(anchorNode, sel.anchorOffset);\n          anchorRange.collapse(true);\n          focusRange.setStart(focusNode, sel.focusOffset);\n          focusRange.collapse(true);\n        } catch (e) {\n          return true;\n        }\n        return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;\n      };\n      const normalize = () => {\n        const rng = getRng$1();\n        const sel = getSel();\n        if (!hasMultipleRanges(sel) && hasAnyRanges(editor)) {\n          const normRng = normalize$2(dom, rng);\n          normRng.each(normRng => {\n            setRng(normRng, isForward());\n          });\n          return normRng.getOr(rng);\n        }\n        return rng;\n      };\n      const selectorChanged = (selector, callback) => {\n        selectorChangedWithUnbind(selector, callback);\n        return exports;\n      };\n      const getScrollContainer = () => {\n        let scrollContainer;\n        let node = dom.getRoot();\n        while (node && node.nodeName !== 'BODY') {\n          if (node.scrollHeight > node.clientHeight) {\n            scrollContainer = node;\n            break;\n          }\n          node = node.parentNode;\n        }\n        return scrollContainer;\n      };\n      const scrollIntoView = (elm, alignToTop) => {\n        if (isNonNullable(elm)) {\n          scrollElementIntoView(editor, elm, alignToTop);\n        } else {\n          scrollRangeIntoView(editor, getRng$1(), alignToTop);\n        }\n      };\n      const placeCaretAt = (clientX, clientY) => setRng(fromPoint(clientX, clientY, editor.getDoc()));\n      const getBoundingClientRect = () => {\n        const rng = getRng$1();\n        return rng.collapsed ? CaretPosition.fromRangeStart(rng).getClientRects()[0] : rng.getBoundingClientRect();\n      };\n      const destroy = () => {\n        win = selectedRange = explicitRange = null;\n        controlSelection.destroy();\n      };\n      const expand = (options = { type: 'word' }) => setRng(RangeUtils(dom).expand(getRng$1(), options));\n      const exports = {\n        dom,\n        win,\n        serializer,\n        editor,\n        expand,\n        collapse,\n        setCursorLocation,\n        getContent,\n        setContent,\n        getBookmark,\n        moveToBookmark,\n        select: select$1,\n        isCollapsed,\n        isEditable,\n        isForward,\n        setNode,\n        getNode: getNode$1,\n        getSel,\n        setRng,\n        getRng: getRng$1,\n        getStart: getStart$1,\n        getEnd,\n        getSelectedBlocks: getSelectedBlocks$1,\n        normalize,\n        selectorChanged,\n        selectorChangedWithUnbind,\n        getScrollContainer,\n        scrollIntoView,\n        placeCaretAt,\n        getBoundingClientRect,\n        destroy\n      };\n      const bookmarkManager = BookmarkManager(exports);\n      const controlSelection = ControlSelection(exports, editor);\n      exports.bookmarkManager = bookmarkManager;\n      exports.controlSelection = controlSelection;\n      return exports;\n    };\n\n    const register$3 = (htmlParser, settings, dom) => {\n      htmlParser.addAttributeFilter('data-mce-tabindex', (nodes, name) => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          node.attr('tabindex', node.attr('data-mce-tabindex'));\n          node.attr(name, null);\n        }\n      });\n      htmlParser.addAttributeFilter('src,href,style', (nodes, name) => {\n        const internalName = 'data-mce-' + name;\n        const urlConverter = settings.url_converter;\n        const urlConverterScope = settings.url_converter_scope;\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          let value = node.attr(internalName);\n          if (value !== undefined) {\n            node.attr(name, value.length > 0 ? value : null);\n            node.attr(internalName, null);\n          } else {\n            value = node.attr(name);\n            if (name === 'style') {\n              value = dom.serializeStyle(dom.parseStyle(value), node.name);\n            } else if (urlConverter) {\n              value = urlConverter.call(urlConverterScope, value, name, node.name);\n            }\n            node.attr(name, value.length > 0 ? value : null);\n          }\n        }\n      });\n      htmlParser.addAttributeFilter('class', nodes => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          let value = node.attr('class');\n          if (value) {\n            value = value.replace(/(?:^|\\s)mce-item-\\w+(?!\\S)/g, '');\n            node.attr('class', value.length > 0 ? value : null);\n          }\n        }\n      });\n      htmlParser.addAttributeFilter('data-mce-type', (nodes, name, args) => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          if (node.attr('data-mce-type') === 'bookmark' && !args.cleanup) {\n            const hasChildren = Optional.from(node.firstChild).exists(firstChild => {\n              var _a;\n              return !isZwsp$1((_a = firstChild.value) !== null && _a !== void 0 ? _a : '');\n            });\n            if (hasChildren) {\n              node.unwrap();\n            } else {\n              node.remove();\n            }\n          }\n        }\n      });\n      htmlParser.addNodeFilter('script,style', (nodes, name) => {\n        var _a;\n        const trim = value => {\n          return value.replace(/(<!--\\[CDATA\\[|\\]\\]-->)/g, '\\n').replace(/^[\\r\\n]*|[\\r\\n]*$/g, '').replace(/^\\s*((<!--)?(\\s*\\/\\/)?\\s*<!\\[CDATA\\[|(<!--\\s*)?\\/\\*\\s*<!\\[CDATA\\[\\s*\\*\\/|(\\/\\/)?\\s*<!--|\\/\\*\\s*<!--\\s*\\*\\/)\\s*[\\r\\n]*/gi, '').replace(/\\s*(\\/\\*\\s*\\]\\]>\\s*\\*\\/(-->)?|\\s*\\/\\/\\s*\\]\\]>(-->)?|\\/\\/\\s*(-->)?|\\]\\]>|\\/\\*\\s*-->\\s*\\*\\/|\\s*-->\\s*)\\s*$/g, '');\n        };\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          const firstChild = node.firstChild;\n          const value = (_a = firstChild === null || firstChild === void 0 ? void 0 : firstChild.value) !== null && _a !== void 0 ? _a : '';\n          if (name === 'script') {\n            const type = node.attr('type');\n            if (type) {\n              node.attr('type', type === 'mce-no/type' ? null : type.replace(/^mce\\-/, ''));\n            }\n            if (settings.element_format === 'xhtml' && firstChild && value.length > 0) {\n              firstChild.value = '// <![CDATA[\\n' + trim(value) + '\\n// ]]>';\n            }\n          } else {\n            if (settings.element_format === 'xhtml' && firstChild && value.length > 0) {\n              firstChild.value = '<!--\\n' + trim(value) + '\\n-->';\n            }\n          }\n        }\n      });\n      htmlParser.addNodeFilter('#comment', nodes => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          const value = node.value;\n          if (settings.preserve_cdata && (value === null || value === void 0 ? void 0 : value.indexOf('[CDATA[')) === 0) {\n            node.name = '#cdata';\n            node.type = 4;\n            node.value = dom.decode(value.replace(/^\\[CDATA\\[|\\]\\]$/g, ''));\n          } else if ((value === null || value === void 0 ? void 0 : value.indexOf('mce:protected ')) === 0) {\n            node.name = '#text';\n            node.type = 3;\n            node.raw = true;\n            node.value = unescape(value).substr(14);\n          }\n        }\n      });\n      htmlParser.addNodeFilter('xml:namespace,input', (nodes, name) => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          if (node.type === 7) {\n            node.remove();\n          } else if (node.type === 1) {\n            if (name === 'input' && !node.attr('type')) {\n              node.attr('type', 'text');\n            }\n          }\n        }\n      });\n      htmlParser.addAttributeFilter('data-mce-type', nodes => {\n        each$e(nodes, node => {\n          if (node.attr('data-mce-type') === 'format-caret') {\n            if (node.isEmpty(htmlParser.schema.getNonEmptyElements())) {\n              node.remove();\n            } else {\n              node.unwrap();\n            }\n          }\n        });\n      });\n      htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style,' + 'data-mce-selected,data-mce-expando,data-mce-block,' + 'data-mce-type,data-mce-resize,data-mce-placeholder', (nodes, name) => {\n        let i = nodes.length;\n        while (i--) {\n          nodes[i].attr(name, null);\n        }\n      });\n      if (settings.remove_trailing_brs) {\n        addNodeFilter(settings, htmlParser, htmlParser.schema);\n      }\n    };\n    const trimTrailingBr = rootNode => {\n      const isBr = node => {\n        return (node === null || node === void 0 ? void 0 : node.name) === 'br';\n      };\n      const brNode1 = rootNode.lastChild;\n      if (isBr(brNode1)) {\n        const brNode2 = brNode1.prev;\n        if (isBr(brNode2)) {\n          brNode1.remove();\n          brNode2.remove();\n        }\n      }\n    };\n\n    const preProcess$1 = (editor, node, args) => {\n      let oldDoc;\n      const dom = editor.dom;\n      let clonedNode = node.cloneNode(true);\n      const impl = document.implementation;\n      if (impl.createHTMLDocument) {\n        const doc = impl.createHTMLDocument('');\n        Tools.each(clonedNode.nodeName === 'BODY' ? clonedNode.childNodes : [clonedNode], node => {\n          doc.body.appendChild(doc.importNode(node, true));\n        });\n        if (clonedNode.nodeName !== 'BODY') {\n          clonedNode = doc.body.firstChild;\n        } else {\n          clonedNode = doc.body;\n        }\n        oldDoc = dom.doc;\n        dom.doc = doc;\n      }\n      firePreProcess(editor, {\n        ...args,\n        node: clonedNode\n      });\n      if (oldDoc) {\n        dom.doc = oldDoc;\n      }\n      return clonedNode;\n    };\n    const shouldFireEvent = (editor, args) => {\n      return isNonNullable(editor) && editor.hasEventListeners('PreProcess') && !args.no_events;\n    };\n    const process$1 = (editor, node, args) => {\n      return shouldFireEvent(editor, args) ? preProcess$1(editor, node, args) : node;\n    };\n\n    const addTempAttr = (htmlParser, tempAttrs, name) => {\n      if (Tools.inArray(tempAttrs, name) === -1) {\n        htmlParser.addAttributeFilter(name, (nodes, name) => {\n          let i = nodes.length;\n          while (i--) {\n            nodes[i].attr(name, null);\n          }\n        });\n        tempAttrs.push(name);\n      }\n    };\n    const postProcess = (editor, args, content) => {\n      if (!args.no_events && editor) {\n        const outArgs = firePostProcess(editor, {\n          ...args,\n          content\n        });\n        return outArgs.content;\n      } else {\n        return content;\n      }\n    };\n    const getHtmlFromNode = (dom, node, args) => {\n      const html = trim$2(args.getInner ? node.innerHTML : dom.getOuterHTML(node));\n      return args.selection || isWsPreserveElement(SugarElement.fromDom(node)) ? html : Tools.trim(html);\n    };\n    const parseHtml = (htmlParser, html, args) => {\n      const parserArgs = args.selection ? {\n        forced_root_block: false,\n        ...args\n      } : args;\n      const rootNode = htmlParser.parse(html, parserArgs);\n      trimTrailingBr(rootNode);\n      return rootNode;\n    };\n    const serializeNode = (settings, schema, node) => {\n      const htmlSerializer = HtmlSerializer(settings, schema);\n      return htmlSerializer.serialize(node);\n    };\n    const toHtml = (editor, settings, schema, rootNode, args) => {\n      const content = serializeNode(settings, schema, rootNode);\n      return postProcess(editor, args, content);\n    };\n    const DomSerializerImpl = (settings, editor) => {\n      const tempAttrs = ['data-mce-selected'];\n      const defaultedSettings = {\n        entity_encoding: 'named',\n        remove_trailing_brs: true,\n        pad_empty_with_br: false,\n        ...settings\n      };\n      const dom = editor && editor.dom ? editor.dom : DOMUtils.DOM;\n      const schema = editor && editor.schema ? editor.schema : Schema(defaultedSettings);\n      const htmlParser = DomParser(defaultedSettings, schema);\n      register$3(htmlParser, defaultedSettings, dom);\n      const serialize = (node, parserArgs = {}) => {\n        const args = {\n          format: 'html',\n          ...parserArgs\n        };\n        const targetNode = process$1(editor, node, args);\n        const html = getHtmlFromNode(dom, targetNode, args);\n        const rootNode = parseHtml(htmlParser, html, args);\n        return args.format === 'tree' ? rootNode : toHtml(editor, defaultedSettings, schema, rootNode, args);\n      };\n      return {\n        schema,\n        addNodeFilter: htmlParser.addNodeFilter,\n        addAttributeFilter: htmlParser.addAttributeFilter,\n        serialize: serialize,\n        addRules: schema.addValidElements,\n        setRules: schema.setValidElements,\n        addTempAttr: curry(addTempAttr, htmlParser, tempAttrs),\n        getTempAttrs: constant(tempAttrs),\n        getNodeFilters: htmlParser.getNodeFilters,\n        getAttributeFilters: htmlParser.getAttributeFilters,\n        removeNodeFilter: htmlParser.removeNodeFilter,\n        removeAttributeFilter: htmlParser.removeAttributeFilter\n      };\n    };\n\n    const DomSerializer = (settings, editor) => {\n      const domSerializer = DomSerializerImpl(settings, editor);\n      return {\n        schema: domSerializer.schema,\n        addNodeFilter: domSerializer.addNodeFilter,\n        addAttributeFilter: domSerializer.addAttributeFilter,\n        serialize: domSerializer.serialize,\n        addRules: domSerializer.addRules,\n        setRules: domSerializer.setRules,\n        addTempAttr: domSerializer.addTempAttr,\n        getTempAttrs: domSerializer.getTempAttrs,\n        getNodeFilters: domSerializer.getNodeFilters,\n        getAttributeFilters: domSerializer.getAttributeFilters,\n        removeNodeFilter: domSerializer.removeNodeFilter,\n        removeAttributeFilter: domSerializer.removeAttributeFilter\n      };\n    };\n\n    const defaultFormat$1 = 'html';\n    const setupArgs$1 = (args, format) => ({\n      ...args,\n      format,\n      get: true,\n      getInner: true\n    });\n    const getContent = (editor, args = {}) => {\n      const format = args.format ? args.format : defaultFormat$1;\n      const defaultedArgs = setupArgs$1(args, format);\n      return preProcessGetContent(editor, defaultedArgs).fold(identity, updatedArgs => {\n        const content = getContent$2(editor, updatedArgs);\n        return postProcessGetContent(editor, content, updatedArgs);\n      });\n    };\n\n    const defaultFormat = 'html';\n    const setupArgs = (args, content) => ({\n      format: defaultFormat,\n      ...args,\n      set: true,\n      content\n    });\n    const setContent = (editor, content, args = {}) => {\n      const defaultedArgs = setupArgs(args, content);\n      return preProcessSetContent(editor, defaultedArgs).map(updatedArgs => {\n        const result = setContent$2(editor, updatedArgs.content, updatedArgs);\n        postProcessSetContent(editor, result.html, updatedArgs);\n        return result.content;\n      }).getOr(content);\n    };\n\n    const removedOptions = ('autoresize_on_init,content_editable_state,padd_empty_with_br,block_elements,' + 'boolean_attributes,editor_deselector,editor_selector,elements,file_browser_callback_types,filepicker_validator_handler,' + 'force_hex_style_colors,force_p_newlines,gecko_spellcheck,images_dataimg_filter,media_scripts,mode,move_caret_before_on_enter_elements,' + 'non_empty_elements,self_closing_elements,short_ended_elements,special,spellchecker_select_languages,spellchecker_whitelist,' + 'tab_focus,tabfocus_elements,table_responsive_width,text_block_elements,text_inline_elements,toolbar_drawer,types,validate,whitespace_elements,' + 'paste_enable_default_filters,paste_filter_drop,paste_word_valid_elements,paste_retain_style_properties,paste_convert_word_fake_lists').split(',');\n    const deprecatedOptions = 'template_cdate_classes,template_mdate_classes,template_selected_content_classes,template_preview_replace_values,template_replace_values,templates,template_cdate_format,template_mdate_format'.split(',');\n    const removedPlugins = 'bbcode,colorpicker,contextmenu,fullpage,legacyoutput,spellchecker,textcolor'.split(',');\n    const deprecatedPlugins = [\n      {\n        name: 'template',\n        replacedWith: 'Advanced Template'\n      },\n      { name: 'rtc' }\n    ];\n    const getMatchingOptions = (options, searchingFor) => {\n      const settingNames = filter$5(searchingFor, setting => has$2(options, setting));\n      return sort(settingNames);\n    };\n    const getRemovedOptions = options => {\n      const settingNames = getMatchingOptions(options, removedOptions);\n      const forcedRootBlock = options.forced_root_block;\n      if (forcedRootBlock === false || forcedRootBlock === '') {\n        settingNames.push('forced_root_block (false only)');\n      }\n      return sort(settingNames);\n    };\n    const getDeprecatedOptions = options => getMatchingOptions(options, deprecatedOptions);\n    const getMatchingPlugins = (options, searchingFor) => {\n      const plugins = Tools.makeMap(options.plugins, ' ');\n      const hasPlugin = plugin => has$2(plugins, plugin);\n      const pluginNames = filter$5(searchingFor, hasPlugin);\n      return sort(pluginNames);\n    };\n    const getRemovedPlugins = options => getMatchingPlugins(options, removedPlugins);\n    const getDeprecatedPlugins = options => getMatchingPlugins(options, deprecatedPlugins.map(entry => entry.name));\n    const logRemovedWarnings = (rawOptions, normalizedOptions) => {\n      const removedOptions = getRemovedOptions(rawOptions);\n      const removedPlugins = getRemovedPlugins(normalizedOptions);\n      const hasRemovedPlugins = removedPlugins.length > 0;\n      const hasRemovedOptions = removedOptions.length > 0;\n      const isLegacyMobileTheme = normalizedOptions.theme === 'mobile';\n      if (hasRemovedPlugins || hasRemovedOptions || isLegacyMobileTheme) {\n        const listJoiner = '\\n- ';\n        const themesMessage = isLegacyMobileTheme ? `\\n\\nThemes:${ listJoiner }mobile` : '';\n        const pluginsMessage = hasRemovedPlugins ? `\\n\\nPlugins:${ listJoiner }${ removedPlugins.join(listJoiner) }` : '';\n        const optionsMessage = hasRemovedOptions ? `\\n\\nOptions:${ listJoiner }${ removedOptions.join(listJoiner) }` : '';\n        console.warn('The following deprecated features are currently enabled and have been removed in TinyMCE 6.0. These features will no longer work and should be removed from the TinyMCE configuration. ' + 'See https://www.tiny.cloud/docs/tinymce/6/migration-from-5x/ for more information.' + themesMessage + pluginsMessage + optionsMessage);\n      }\n    };\n    const getPluginDescription = name => find$2(deprecatedPlugins, entry => entry.name === name).fold(() => name, entry => {\n      if (entry.replacedWith) {\n        return `${ name }, replaced by ${ entry.replacedWith }`;\n      } else {\n        return name;\n      }\n    });\n    const logDeprecatedWarnings = (rawOptions, normalizedOptions) => {\n      const deprecatedOptions = getDeprecatedOptions(rawOptions);\n      const deprecatedPlugins = getDeprecatedPlugins(normalizedOptions);\n      const hasDeprecatedPlugins = deprecatedPlugins.length > 0;\n      const hasDeprecatedOptions = deprecatedOptions.length > 0;\n      if (hasDeprecatedPlugins || hasDeprecatedOptions) {\n        const listJoiner = '\\n- ';\n        const pluginsMessage = hasDeprecatedPlugins ? `\\n\\nPlugins:${ listJoiner }${ deprecatedPlugins.map(getPluginDescription).join(listJoiner) }` : '';\n        const optionsMessage = hasDeprecatedOptions ? `\\n\\nOptions:${ listJoiner }${ deprecatedOptions.join(listJoiner) }` : '';\n        console.warn('The following deprecated features are currently enabled but will be removed soon.' + pluginsMessage + optionsMessage);\n      }\n    };\n    const logWarnings = (rawOptions, normalizedOptions) => {\n      logRemovedWarnings(rawOptions, normalizedOptions);\n      logDeprecatedWarnings(rawOptions, normalizedOptions);\n    };\n\n    const DOM$8 = DOMUtils.DOM;\n    const restoreOriginalStyles = editor => {\n      DOM$8.setStyle(editor.id, 'display', editor.orgDisplay);\n    };\n    const safeDestroy = x => Optional.from(x).each(x => x.destroy());\n    const clearDomReferences = editor => {\n      const ed = editor;\n      ed.contentAreaContainer = ed.formElement = ed.container = ed.editorContainer = null;\n      ed.bodyElement = ed.contentDocument = ed.contentWindow = null;\n      ed.iframeElement = ed.targetElm = null;\n      const selection = editor.selection;\n      if (selection) {\n        const dom = selection.dom;\n        ed.selection = selection.win = selection.dom = dom.doc = null;\n      }\n    };\n    const restoreForm = editor => {\n      const form = editor.formElement;\n      if (form) {\n        if (form._mceOldSubmit) {\n          form.submit = form._mceOldSubmit;\n          delete form._mceOldSubmit;\n        }\n        DOM$8.unbind(form, 'submit reset', editor.formEventDelegate);\n      }\n    };\n    const remove$1 = editor => {\n      if (!editor.removed) {\n        const {_selectionOverrides, editorUpload} = editor;\n        const body = editor.getBody();\n        const element = editor.getElement();\n        if (body) {\n          editor.save({ is_removing: true });\n        }\n        editor.removed = true;\n        editor.unbindAllNativeEvents();\n        if (editor.hasHiddenInput && isNonNullable(element === null || element === void 0 ? void 0 : element.nextSibling)) {\n          DOM$8.remove(element.nextSibling);\n        }\n        fireRemove(editor);\n        editor.editorManager.remove(editor);\n        if (!editor.inline && body) {\n          restoreOriginalStyles(editor);\n        }\n        fireDetach(editor);\n        DOM$8.remove(editor.getContainer());\n        safeDestroy(_selectionOverrides);\n        safeDestroy(editorUpload);\n        editor.destroy();\n      }\n    };\n    const destroy = (editor, automatic) => {\n      const {selection, dom} = editor;\n      if (editor.destroyed) {\n        return;\n      }\n      if (!automatic && !editor.removed) {\n        editor.remove();\n        return;\n      }\n      if (!automatic) {\n        editor.editorManager.off('beforeunload', editor._beforeUnload);\n        if (editor.theme && editor.theme.destroy) {\n          editor.theme.destroy();\n        }\n        safeDestroy(selection);\n        safeDestroy(dom);\n      }\n      restoreForm(editor);\n      clearDomReferences(editor);\n      editor.destroyed = true;\n    };\n\n    const CreateIconManager = () => {\n      const lookup = {};\n      const add = (id, iconPack) => {\n        lookup[id] = iconPack;\n      };\n      const get = id => {\n        if (lookup[id]) {\n          return lookup[id];\n        } else {\n          return { icons: {} };\n        }\n      };\n      const has = id => has$2(lookup, id);\n      return {\n        add,\n        get,\n        has\n      };\n    };\n    const IconManager = CreateIconManager();\n\n    const ModelManager = AddOnManager.ModelManager;\n\n    const getProp = (propName, elm) => {\n      const rawElm = elm.dom;\n      return rawElm[propName];\n    };\n    const getComputedSizeProp = (propName, elm) => parseInt(get$7(elm, propName), 10);\n    const getClientWidth = curry(getProp, 'clientWidth');\n    const getClientHeight = curry(getProp, 'clientHeight');\n    const getMarginTop = curry(getComputedSizeProp, 'margin-top');\n    const getMarginLeft = curry(getComputedSizeProp, 'margin-left');\n    const getBoundingClientRect = elm => elm.dom.getBoundingClientRect();\n    const isInsideElementContentArea = (bodyElm, clientX, clientY) => {\n      const clientWidth = getClientWidth(bodyElm);\n      const clientHeight = getClientHeight(bodyElm);\n      return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight;\n    };\n    const transpose = (inline, elm, clientX, clientY) => {\n      const clientRect = getBoundingClientRect(elm);\n      const deltaX = inline ? clientRect.left + elm.dom.clientLeft + getMarginLeft(elm) : 0;\n      const deltaY = inline ? clientRect.top + elm.dom.clientTop + getMarginTop(elm) : 0;\n      const x = clientX - deltaX;\n      const y = clientY - deltaY;\n      return {\n        x,\n        y\n      };\n    };\n    const isXYInContentArea = (editor, clientX, clientY) => {\n      const bodyElm = SugarElement.fromDom(editor.getBody());\n      const targetElm = editor.inline ? bodyElm : documentElement(bodyElm);\n      const transposedPoint = transpose(editor.inline, targetElm, clientX, clientY);\n      return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y);\n    };\n    const fromDomSafe = node => Optional.from(node).map(SugarElement.fromDom);\n    const isEditorAttachedToDom = editor => {\n      const rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer();\n      return fromDomSafe(rawContainer).map(inBody).getOr(false);\n    };\n\n    var NotificationManagerImpl = () => {\n      const unimplemented = () => {\n        throw new Error('Theme did not provide a NotificationManager implementation.');\n      };\n      return {\n        open: unimplemented,\n        close: unimplemented,\n        getArgs: unimplemented\n      };\n    };\n\n    const NotificationManager = editor => {\n      const notifications = [];\n      const getImplementation = () => {\n        const theme = editor.theme;\n        return theme && theme.getNotificationManagerImpl ? theme.getNotificationManagerImpl() : NotificationManagerImpl();\n      };\n      const getTopNotification = () => {\n        return Optional.from(notifications[0]);\n      };\n      const isEqual = (a, b) => {\n        return a.type === b.type && a.text === b.text && !a.progressBar && !a.timeout && !b.progressBar && !b.timeout;\n      };\n      const reposition = () => {\n        each$e(notifications, notification => {\n          notification.reposition();\n        });\n      };\n      const addNotification = notification => {\n        notifications.push(notification);\n      };\n      const closeNotification = notification => {\n        findIndex$2(notifications, otherNotification => {\n          return otherNotification === notification;\n        }).each(index => {\n          notifications.splice(index, 1);\n        });\n      };\n      const open = (spec, fireEvent = true) => {\n        if (editor.removed || !isEditorAttachedToDom(editor)) {\n          return {};\n        }\n        if (fireEvent) {\n          editor.dispatch('BeforeOpenNotification', { notification: spec });\n        }\n        return find$2(notifications, notification => {\n          return isEqual(getImplementation().getArgs(notification), spec);\n        }).getOrThunk(() => {\n          editor.editorManager.setActive(editor);\n          const notification = getImplementation().open(spec, () => {\n            closeNotification(notification);\n            reposition();\n            if (hasEditorOrUiFocus(editor)) {\n              getTopNotification().fold(() => editor.focus(), top => focus$1(SugarElement.fromDom(top.getEl())));\n            }\n          });\n          addNotification(notification);\n          reposition();\n          editor.dispatch('OpenNotification', { notification: { ...notification } });\n          return notification;\n        });\n      };\n      const close = () => {\n        getTopNotification().each(notification => {\n          getImplementation().close(notification);\n          closeNotification(notification);\n          reposition();\n        });\n      };\n      const getNotifications = constant(notifications);\n      const registerEvents = editor => {\n        editor.on('SkinLoaded', () => {\n          const serviceMessage = getServiceMessage(editor);\n          if (serviceMessage) {\n            open({\n              text: serviceMessage,\n              type: 'warning',\n              timeout: 0\n            }, false);\n          }\n          reposition();\n        });\n        editor.on('show ResizeEditor ResizeWindow NodeChange', () => {\n          requestAnimationFrame(reposition);\n        });\n        editor.on('remove', () => {\n          each$e(notifications.slice(), notification => {\n            getImplementation().close(notification);\n          });\n        });\n      };\n      registerEvents(editor);\n      return {\n        open,\n        close,\n        getNotifications\n      };\n    };\n\n    const PluginManager = AddOnManager.PluginManager;\n\n    const ThemeManager = AddOnManager.ThemeManager;\n\n    var WindowManagerImpl = () => {\n      const unimplemented = () => {\n        throw new Error('Theme did not provide a WindowManager implementation.');\n      };\n      return {\n        open: unimplemented,\n        openUrl: unimplemented,\n        alert: unimplemented,\n        confirm: unimplemented,\n        close: unimplemented\n      };\n    };\n\n    const WindowManager = editor => {\n      let dialogs = [];\n      const getImplementation = () => {\n        const theme = editor.theme;\n        return theme && theme.getWindowManagerImpl ? theme.getWindowManagerImpl() : WindowManagerImpl();\n      };\n      const funcBind = (scope, f) => {\n        return (...args) => {\n          return f ? f.apply(scope, args) : undefined;\n        };\n      };\n      const fireOpenEvent = dialog => {\n        editor.dispatch('OpenWindow', { dialog });\n      };\n      const fireCloseEvent = dialog => {\n        editor.dispatch('CloseWindow', { dialog });\n      };\n      const addDialog = dialog => {\n        dialogs.push(dialog);\n        fireOpenEvent(dialog);\n      };\n      const closeDialog = dialog => {\n        fireCloseEvent(dialog);\n        dialogs = filter$5(dialogs, otherDialog => {\n          return otherDialog !== dialog;\n        });\n        if (dialogs.length === 0) {\n          editor.focus();\n        }\n      };\n      const getTopDialog = () => {\n        return Optional.from(dialogs[dialogs.length - 1]);\n      };\n      const storeSelectionAndOpenDialog = openDialog => {\n        editor.editorManager.setActive(editor);\n        store(editor);\n        editor.ui.show();\n        const dialog = openDialog();\n        addDialog(dialog);\n        return dialog;\n      };\n      const open = (args, params) => {\n        return storeSelectionAndOpenDialog(() => getImplementation().open(args, params, closeDialog));\n      };\n      const openUrl = args => {\n        return storeSelectionAndOpenDialog(() => getImplementation().openUrl(args, closeDialog));\n      };\n      const alert = (message, callback, scope) => {\n        const windowManagerImpl = getImplementation();\n        windowManagerImpl.alert(message, funcBind(scope ? scope : windowManagerImpl, callback));\n      };\n      const confirm = (message, callback, scope) => {\n        const windowManagerImpl = getImplementation();\n        windowManagerImpl.confirm(message, funcBind(scope ? scope : windowManagerImpl, callback));\n      };\n      const close = () => {\n        getTopDialog().each(dialog => {\n          getImplementation().close(dialog);\n          closeDialog(dialog);\n        });\n      };\n      editor.on('remove', () => {\n        each$e(dialogs, dialog => {\n          getImplementation().close(dialog);\n        });\n      });\n      return {\n        open,\n        openUrl,\n        alert,\n        confirm,\n        close\n      };\n    };\n\n    const displayNotification = (editor, message) => {\n      editor.notificationManager.open({\n        type: 'error',\n        text: message\n      });\n    };\n    const displayError = (editor, message) => {\n      if (editor._skinLoaded) {\n        displayNotification(editor, message);\n      } else {\n        editor.on('SkinLoaded', () => {\n          displayNotification(editor, message);\n        });\n      }\n    };\n    const uploadError = (editor, message) => {\n      displayError(editor, I18n.translate([\n        'Failed to upload image: {0}',\n        message\n      ]));\n    };\n    const logError = (editor, errorType, msg) => {\n      fireError(editor, errorType, { message: msg });\n      console.error(msg);\n    };\n    const createLoadError = (type, url, name) => name ? `Failed to load ${ type }: ${ name } from url ${ url }` : `Failed to load ${ type } url: ${ url }`;\n    const pluginLoadError = (editor, url, name) => {\n      logError(editor, 'PluginLoadError', createLoadError('plugin', url, name));\n    };\n    const iconsLoadError = (editor, url, name) => {\n      logError(editor, 'IconsLoadError', createLoadError('icons', url, name));\n    };\n    const languageLoadError = (editor, url, name) => {\n      logError(editor, 'LanguageLoadError', createLoadError('language', url, name));\n    };\n    const themeLoadError = (editor, url, name) => {\n      logError(editor, 'ThemeLoadError', createLoadError('theme', url, name));\n    };\n    const modelLoadError = (editor, url, name) => {\n      logError(editor, 'ModelLoadError', createLoadError('model', url, name));\n    };\n    const pluginInitError = (editor, name, err) => {\n      const message = I18n.translate([\n        'Failed to initialize plugin: {0}',\n        name\n      ]);\n      fireError(editor, 'PluginLoadError', { message });\n      initError(message, err);\n      displayError(editor, message);\n    };\n    const initError = (message, ...x) => {\n      const console = window.console;\n      if (console) {\n        if (console.error) {\n          console.error(message, ...x);\n        } else {\n          console.log(message, ...x);\n        }\n      }\n    };\n\n    const isContentCssSkinName = url => /^[a-z0-9\\-]+$/i.test(url);\n    const toContentSkinResourceName = url => 'content/' + url + '/content.css';\n    const isBundledCssSkinName = url => tinymce.Resource.has(toContentSkinResourceName(url));\n    const getContentCssUrls = editor => {\n      return transformToUrls(editor, getContentCss(editor));\n    };\n    const getFontCssUrls = editor => {\n      return transformToUrls(editor, getFontCss(editor));\n    };\n    const transformToUrls = (editor, cssLinks) => {\n      const skinUrl = editor.editorManager.baseURL + '/skins/content';\n      const suffix = editor.editorManager.suffix;\n      const contentCssFile = `content${ suffix }.css`;\n      return map$3(cssLinks, url => {\n        if (isBundledCssSkinName(url)) {\n          return url;\n        } else if (isContentCssSkinName(url) && !editor.inline) {\n          return `${ skinUrl }/${ url }/${ contentCssFile }`;\n        } else {\n          return editor.documentBaseURI.toAbsolute(url);\n        }\n      });\n    };\n    const appendContentCssFromSettings = editor => {\n      editor.contentCSS = editor.contentCSS.concat(getContentCssUrls(editor), getFontCssUrls(editor));\n    };\n\n    const getAllImages = elm => {\n      return elm ? from(elm.getElementsByTagName('img')) : [];\n    };\n    const ImageScanner = (uploadStatus, blobCache) => {\n      const cachedPromises = {};\n      const findAll = (elm, predicate = always) => {\n        const images = filter$5(getAllImages(elm), img => {\n          const src = img.src;\n          if (img.hasAttribute('data-mce-bogus')) {\n            return false;\n          }\n          if (img.hasAttribute('data-mce-placeholder')) {\n            return false;\n          }\n          if (!src || src === Env.transparentSrc) {\n            return false;\n          }\n          if (startsWith(src, 'blob:')) {\n            return !uploadStatus.isUploaded(src) && predicate(img);\n          }\n          if (startsWith(src, 'data:')) {\n            return predicate(img);\n          }\n          return false;\n        });\n        const promises = map$3(images, img => {\n          const imageSrc = img.src;\n          if (has$2(cachedPromises, imageSrc)) {\n            return cachedPromises[imageSrc].then(imageInfo => {\n              if (isString(imageInfo)) {\n                return imageInfo;\n              } else {\n                return {\n                  image: img,\n                  blobInfo: imageInfo.blobInfo\n                };\n              }\n            });\n          } else {\n            const newPromise = imageToBlobInfo(blobCache, imageSrc).then(blobInfo => {\n              delete cachedPromises[imageSrc];\n              return {\n                image: img,\n                blobInfo\n              };\n            }).catch(error => {\n              delete cachedPromises[imageSrc];\n              return error;\n            });\n            cachedPromises[imageSrc] = newPromise;\n            return newPromise;\n          }\n        });\n        return Promise.all(promises);\n      };\n      return { findAll };\n    };\n\n    const UploadStatus = () => {\n      const PENDING = 1, UPLOADED = 2;\n      let blobUriStatuses = {};\n      const createStatus = (status, resultUri) => {\n        return {\n          status,\n          resultUri\n        };\n      };\n      const hasBlobUri = blobUri => {\n        return blobUri in blobUriStatuses;\n      };\n      const getResultUri = blobUri => {\n        const result = blobUriStatuses[blobUri];\n        return result ? result.resultUri : null;\n      };\n      const isPending = blobUri => {\n        return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === PENDING : false;\n      };\n      const isUploaded = blobUri => {\n        return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === UPLOADED : false;\n      };\n      const markPending = blobUri => {\n        blobUriStatuses[blobUri] = createStatus(PENDING, null);\n      };\n      const markUploaded = (blobUri, resultUri) => {\n        blobUriStatuses[blobUri] = createStatus(UPLOADED, resultUri);\n      };\n      const removeFailed = blobUri => {\n        delete blobUriStatuses[blobUri];\n      };\n      const destroy = () => {\n        blobUriStatuses = {};\n      };\n      return {\n        hasBlobUri,\n        getResultUri,\n        isPending,\n        isUploaded,\n        markPending,\n        markUploaded,\n        removeFailed,\n        destroy\n      };\n    };\n\n    let count = 0;\n    const seed = () => {\n      const rnd = () => {\n        return Math.round(Math.random() * 4294967295).toString(36);\n      };\n      const now = new Date().getTime();\n      return 's' + now.toString(36) + rnd() + rnd() + rnd();\n    };\n    const uuid = prefix => {\n      return prefix + count++ + seed();\n    };\n\n    const BlobCache = () => {\n      let cache = [];\n      const mimeToExt = mime => {\n        const mimes = {\n          'image/jpeg': 'jpg',\n          'image/jpg': 'jpg',\n          'image/gif': 'gif',\n          'image/png': 'png',\n          'image/apng': 'apng',\n          'image/avif': 'avif',\n          'image/svg+xml': 'svg',\n          'image/webp': 'webp',\n          'image/bmp': 'bmp',\n          'image/tiff': 'tiff'\n        };\n        return mimes[mime.toLowerCase()] || 'dat';\n      };\n      const create = (o, blob, base64, name, filename) => {\n        if (isString(o)) {\n          const id = o;\n          return toBlobInfo({\n            id,\n            name,\n            filename,\n            blob: blob,\n            base64: base64\n          });\n        } else if (isObject(o)) {\n          return toBlobInfo(o);\n        } else {\n          throw new Error('Unknown input type');\n        }\n      };\n      const toBlobInfo = o => {\n        if (!o.blob || !o.base64) {\n          throw new Error('blob and base64 representations of the image are required for BlobInfo to be created');\n        }\n        const id = o.id || uuid('blobid');\n        const name = o.name || id;\n        const blob = o.blob;\n        return {\n          id: constant(id),\n          name: constant(name),\n          filename: constant(o.filename || name + '.' + mimeToExt(blob.type)),\n          blob: constant(blob),\n          base64: constant(o.base64),\n          blobUri: constant(o.blobUri || URL.createObjectURL(blob)),\n          uri: constant(o.uri)\n        };\n      };\n      const add = blobInfo => {\n        if (!get(blobInfo.id())) {\n          cache.push(blobInfo);\n        }\n      };\n      const findFirst = predicate => find$2(cache, predicate).getOrUndefined();\n      const get = id => findFirst(cachedBlobInfo => cachedBlobInfo.id() === id);\n      const getByUri = blobUri => findFirst(blobInfo => blobInfo.blobUri() === blobUri);\n      const getByData = (base64, type) => findFirst(blobInfo => blobInfo.base64() === base64 && blobInfo.blob().type === type);\n      const removeByUri = blobUri => {\n        cache = filter$5(cache, blobInfo => {\n          if (blobInfo.blobUri() === blobUri) {\n            URL.revokeObjectURL(blobInfo.blobUri());\n            return false;\n          }\n          return true;\n        });\n      };\n      const destroy = () => {\n        each$e(cache, cachedBlobInfo => {\n          URL.revokeObjectURL(cachedBlobInfo.blobUri());\n        });\n        cache = [];\n      };\n      return {\n        create,\n        add,\n        get,\n        getByUri,\n        getByData,\n        findFirst,\n        removeByUri,\n        destroy\n      };\n    };\n\n    const Uploader = (uploadStatus, settings) => {\n      const pendingPromises = {};\n      const pathJoin = (path1, path2) => {\n        if (path1) {\n          return path1.replace(/\\/$/, '') + '/' + path2.replace(/^\\//, '');\n        }\n        return path2;\n      };\n      const defaultHandler = (blobInfo, progress) => new Promise((success, failure) => {\n        const xhr = new XMLHttpRequest();\n        xhr.open('POST', settings.url);\n        xhr.withCredentials = settings.credentials;\n        xhr.upload.onprogress = e => {\n          progress(e.loaded / e.total * 100);\n        };\n        xhr.onerror = () => {\n          failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);\n        };\n        xhr.onload = () => {\n          if (xhr.status < 200 || xhr.status >= 300) {\n            failure('HTTP Error: ' + xhr.status);\n            return;\n          }\n          const json = JSON.parse(xhr.responseText);\n          if (!json || !isString(json.location)) {\n            failure('Invalid JSON: ' + xhr.responseText);\n            return;\n          }\n          success(pathJoin(settings.basePath, json.location));\n        };\n        const formData = new FormData();\n        formData.append('file', blobInfo.blob(), blobInfo.filename());\n        xhr.send(formData);\n      });\n      const uploadHandler = isFunction(settings.handler) ? settings.handler : defaultHandler;\n      const noUpload = () => new Promise(resolve => {\n        resolve([]);\n      });\n      const handlerSuccess = (blobInfo, url) => ({\n        url,\n        blobInfo,\n        status: true\n      });\n      const handlerFailure = (blobInfo, error) => ({\n        url: '',\n        blobInfo,\n        status: false,\n        error\n      });\n      const resolvePending = (blobUri, result) => {\n        Tools.each(pendingPromises[blobUri], resolve => {\n          resolve(result);\n        });\n        delete pendingPromises[blobUri];\n      };\n      const uploadBlobInfo = (blobInfo, handler, openNotification) => {\n        uploadStatus.markPending(blobInfo.blobUri());\n        return new Promise(resolve => {\n          let notification;\n          let progress;\n          try {\n            const closeNotification = () => {\n              if (notification) {\n                notification.close();\n                progress = noop;\n              }\n            };\n            const success = url => {\n              closeNotification();\n              uploadStatus.markUploaded(blobInfo.blobUri(), url);\n              resolvePending(blobInfo.blobUri(), handlerSuccess(blobInfo, url));\n              resolve(handlerSuccess(blobInfo, url));\n            };\n            const failure = error => {\n              closeNotification();\n              uploadStatus.removeFailed(blobInfo.blobUri());\n              resolvePending(blobInfo.blobUri(), handlerFailure(blobInfo, error));\n              resolve(handlerFailure(blobInfo, error));\n            };\n            progress = percent => {\n              if (percent < 0 || percent > 100) {\n                return;\n              }\n              Optional.from(notification).orThunk(() => Optional.from(openNotification).map(apply$1)).each(n => {\n                notification = n;\n                n.progressBar.value(percent);\n              });\n            };\n            handler(blobInfo, progress).then(success, err => {\n              failure(isString(err) ? { message: err } : err);\n            });\n          } catch (ex) {\n            resolve(handlerFailure(blobInfo, ex));\n          }\n        });\n      };\n      const isDefaultHandler = handler => handler === defaultHandler;\n      const pendingUploadBlobInfo = blobInfo => {\n        const blobUri = blobInfo.blobUri();\n        return new Promise(resolve => {\n          pendingPromises[blobUri] = pendingPromises[blobUri] || [];\n          pendingPromises[blobUri].push(resolve);\n        });\n      };\n      const uploadBlobs = (blobInfos, openNotification) => {\n        blobInfos = Tools.grep(blobInfos, blobInfo => !uploadStatus.isUploaded(blobInfo.blobUri()));\n        return Promise.all(Tools.map(blobInfos, blobInfo => uploadStatus.isPending(blobInfo.blobUri()) ? pendingUploadBlobInfo(blobInfo) : uploadBlobInfo(blobInfo, uploadHandler, openNotification)));\n      };\n      const upload = (blobInfos, openNotification) => !settings.url && isDefaultHandler(uploadHandler) ? noUpload() : uploadBlobs(blobInfos, openNotification);\n      return { upload };\n    };\n\n    const openNotification = editor => () => editor.notificationManager.open({\n      text: editor.translate('Image uploading...'),\n      type: 'info',\n      timeout: -1,\n      progressBar: true\n    });\n    const createUploader = (editor, uploadStatus) => Uploader(uploadStatus, {\n      url: getImageUploadUrl(editor),\n      basePath: getImageUploadBasePath(editor),\n      credentials: getImagesUploadCredentials(editor),\n      handler: getImagesUploadHandler(editor)\n    });\n    const ImageUploader = editor => {\n      const uploadStatus = UploadStatus();\n      const uploader = createUploader(editor, uploadStatus);\n      return { upload: (blobInfos, showNotification = true) => uploader.upload(blobInfos, showNotification ? openNotification(editor) : undefined) };\n    };\n\n    const isEmptyForPadding = (editor, element) => editor.dom.isEmpty(element.dom) && isNonNullable(editor.schema.getTextBlockElements()[name(element)]);\n    const addPaddingToEmpty = editor => element => {\n      if (isEmptyForPadding(editor, element)) {\n        append$1(element, SugarElement.fromHtml('<br data-mce-bogus=\"1\" />'));\n      }\n    };\n    const EditorUpload = editor => {\n      const blobCache = BlobCache();\n      let uploader, imageScanner;\n      const uploadStatus = UploadStatus();\n      const urlFilters = [];\n      const aliveGuard = callback => {\n        return result => {\n          if (editor.selection) {\n            return callback(result);\n          }\n          return [];\n        };\n      };\n      const cacheInvalidator = url => url + (url.indexOf('?') === -1 ? '?' : '&') + new Date().getTime();\n      const replaceString = (content, search, replace) => {\n        let index = 0;\n        do {\n          index = content.indexOf(search, index);\n          if (index !== -1) {\n            content = content.substring(0, index) + replace + content.substr(index + search.length);\n            index += replace.length - search.length + 1;\n          }\n        } while (index !== -1);\n        return content;\n      };\n      const replaceImageUrl = (content, targetUrl, replacementUrl) => {\n        const replacementString = `src=\"${ replacementUrl }\"${ replacementUrl === Env.transparentSrc ? ' data-mce-placeholder=\"1\"' : '' }`;\n        content = replaceString(content, `src=\"${ targetUrl }\"`, replacementString);\n        content = replaceString(content, 'data-mce-src=\"' + targetUrl + '\"', 'data-mce-src=\"' + replacementUrl + '\"');\n        return content;\n      };\n      const replaceUrlInUndoStack = (targetUrl, replacementUrl) => {\n        each$e(editor.undoManager.data, level => {\n          if (level.type === 'fragmented') {\n            level.fragments = map$3(level.fragments, fragment => replaceImageUrl(fragment, targetUrl, replacementUrl));\n          } else {\n            level.content = replaceImageUrl(level.content, targetUrl, replacementUrl);\n          }\n        });\n      };\n      const replaceImageUriInView = (image, resultUri) => {\n        const src = editor.convertURL(resultUri, 'src');\n        replaceUrlInUndoStack(image.src, resultUri);\n        setAll$1(SugarElement.fromDom(image), {\n          'src': shouldReuseFileName(editor) ? cacheInvalidator(resultUri) : resultUri,\n          'data-mce-src': src\n        });\n      };\n      const uploadImages = () => {\n        if (!uploader) {\n          uploader = createUploader(editor, uploadStatus);\n        }\n        return scanForImages().then(aliveGuard(imageInfos => {\n          const blobInfos = map$3(imageInfos, imageInfo => imageInfo.blobInfo);\n          return uploader.upload(blobInfos, openNotification(editor)).then(aliveGuard(result => {\n            const imagesToRemove = [];\n            let shouldDispatchChange = false;\n            const filteredResult = map$3(result, (uploadInfo, index) => {\n              const {blobInfo, image} = imageInfos[index];\n              let removed = false;\n              if (uploadInfo.status && shouldReplaceBlobUris(editor)) {\n                if (uploadInfo.url && !contains$1(image.src, uploadInfo.url)) {\n                  shouldDispatchChange = true;\n                }\n                blobCache.removeByUri(image.src);\n                if (isRtc(editor)) ; else {\n                  replaceImageUriInView(image, uploadInfo.url);\n                }\n              } else if (uploadInfo.error) {\n                if (uploadInfo.error.remove) {\n                  replaceUrlInUndoStack(image.src, Env.transparentSrc);\n                  imagesToRemove.push(image);\n                  removed = true;\n                }\n                uploadError(editor, uploadInfo.error.message);\n              }\n              return {\n                element: image,\n                status: uploadInfo.status,\n                uploadUri: uploadInfo.url,\n                blobInfo,\n                removed\n              };\n            });\n            if (imagesToRemove.length > 0 && !isRtc(editor)) {\n              editor.undoManager.transact(() => {\n                each$e(fromDom$1(imagesToRemove), sugarElement => {\n                  const parentOpt = parent(sugarElement);\n                  remove$5(sugarElement);\n                  parentOpt.each(addPaddingToEmpty(editor));\n                  blobCache.removeByUri(sugarElement.dom.src);\n                });\n              });\n            } else if (shouldDispatchChange) {\n              editor.undoManager.dispatchChange();\n            }\n            return filteredResult;\n          }));\n        }));\n      };\n      const uploadImagesAuto = () => isAutomaticUploadsEnabled(editor) ? uploadImages() : Promise.resolve([]);\n      const isValidDataUriImage = imgElm => forall(urlFilters, filter => filter(imgElm));\n      const addFilter = filter => {\n        urlFilters.push(filter);\n      };\n      const scanForImages = () => {\n        if (!imageScanner) {\n          imageScanner = ImageScanner(uploadStatus, blobCache);\n        }\n        return imageScanner.findAll(editor.getBody(), isValidDataUriImage).then(aliveGuard(result => {\n          const filteredResult = filter$5(result, resultItem => {\n            if (isString(resultItem)) {\n              displayError(editor, resultItem);\n              return false;\n            } else if (resultItem.uriType === 'blob') {\n              return false;\n            } else {\n              return true;\n            }\n          });\n          if (isRtc(editor)) ; else {\n            each$e(filteredResult, resultItem => {\n              replaceUrlInUndoStack(resultItem.image.src, resultItem.blobInfo.blobUri());\n              resultItem.image.src = resultItem.blobInfo.blobUri();\n              resultItem.image.removeAttribute('data-mce-src');\n            });\n          }\n          return filteredResult;\n        }));\n      };\n      const destroy = () => {\n        blobCache.destroy();\n        uploadStatus.destroy();\n        imageScanner = uploader = null;\n      };\n      const replaceBlobUris = content => {\n        return content.replace(/src=\"(blob:[^\"]+)\"/g, (match, blobUri) => {\n          const resultUri = uploadStatus.getResultUri(blobUri);\n          if (resultUri) {\n            return 'src=\"' + resultUri + '\"';\n          }\n          let blobInfo = blobCache.getByUri(blobUri);\n          if (!blobInfo) {\n            blobInfo = foldl(editor.editorManager.get(), (result, editor) => {\n              return result || editor.editorUpload && editor.editorUpload.blobCache.getByUri(blobUri);\n            }, undefined);\n          }\n          if (blobInfo) {\n            const blob = blobInfo.blob();\n            return 'src=\"data:' + blob.type + ';base64,' + blobInfo.base64() + '\"';\n          }\n          return match;\n        });\n      };\n      editor.on('SetContent', () => {\n        if (isAutomaticUploadsEnabled(editor)) {\n          uploadImagesAuto();\n        } else {\n          scanForImages();\n        }\n      });\n      editor.on('RawSaveContent', e => {\n        e.content = replaceBlobUris(e.content);\n      });\n      editor.on('GetContent', e => {\n        if (e.source_view || e.format === 'raw' || e.format === 'tree') {\n          return;\n        }\n        e.content = replaceBlobUris(e.content);\n      });\n      editor.on('PostRender', () => {\n        editor.parser.addNodeFilter('img', images => {\n          each$e(images, img => {\n            const src = img.attr('src');\n            if (!src || blobCache.getByUri(src)) {\n              return;\n            }\n            const resultUri = uploadStatus.getResultUri(src);\n            if (resultUri) {\n              img.attr('src', resultUri);\n            }\n          });\n        });\n      });\n      return {\n        blobCache,\n        addFilter,\n        uploadImages,\n        uploadImagesAuto,\n        scanForImages,\n        destroy\n      };\n    };\n\n    const get$1 = editor => {\n      const dom = editor.dom;\n      const schemaType = editor.schema.type;\n      const formats = {\n        valigntop: [{\n            selector: 'td,th',\n            styles: { verticalAlign: 'top' }\n          }],\n        valignmiddle: [{\n            selector: 'td,th',\n            styles: { verticalAlign: 'middle' }\n          }],\n        valignbottom: [{\n            selector: 'td,th',\n            styles: { verticalAlign: 'bottom' }\n          }],\n        alignleft: [\n          {\n            selector: 'figure.image',\n            collapsed: false,\n            classes: 'align-left',\n            ceFalseOverride: true,\n            preview: 'font-family font-size'\n          },\n          {\n            selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre',\n            styles: { textAlign: 'left' },\n            inherit: false,\n            preview: false\n          },\n          {\n            selector: 'img,audio,video',\n            collapsed: false,\n            styles: { float: 'left' },\n            preview: 'font-family font-size'\n          },\n          {\n            selector: 'table',\n            collapsed: false,\n            styles: {\n              marginLeft: '0px',\n              marginRight: 'auto'\n            },\n            onformat: table => {\n              dom.setStyle(table, 'float', null);\n            },\n            preview: 'font-family font-size'\n          },\n          {\n            selector: '.mce-preview-object,[data-ephox-embed-iri]',\n            ceFalseOverride: true,\n            styles: { float: 'left' }\n          }\n        ],\n        aligncenter: [\n          {\n            selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre',\n            styles: { textAlign: 'center' },\n            inherit: false,\n            preview: 'font-family font-size'\n          },\n          {\n            selector: 'figure.image',\n            collapsed: false,\n            classes: 'align-center',\n            ceFalseOverride: true,\n            preview: 'font-family font-size'\n          },\n          {\n            selector: 'img,audio,video',\n            collapsed: false,\n            styles: {\n              display: 'block',\n              marginLeft: 'auto',\n              marginRight: 'auto'\n            },\n            preview: false\n          },\n          {\n            selector: 'table',\n            collapsed: false,\n            styles: {\n              marginLeft: 'auto',\n              marginRight: 'auto'\n            },\n            preview: 'font-family font-size'\n          },\n          {\n            selector: '.mce-preview-object',\n            ceFalseOverride: true,\n            styles: {\n              display: 'table',\n              marginLeft: 'auto',\n              marginRight: 'auto'\n            },\n            preview: false\n          },\n          {\n            selector: '[data-ephox-embed-iri]',\n            ceFalseOverride: true,\n            styles: {\n              marginLeft: 'auto',\n              marginRight: 'auto'\n            },\n            preview: false\n          }\n        ],\n        alignright: [\n          {\n            selector: 'figure.image',\n            collapsed: false,\n            classes: 'align-right',\n            ceFalseOverride: true,\n            preview: 'font-family font-size'\n          },\n          {\n            selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre',\n            styles: { textAlign: 'right' },\n            inherit: false,\n            preview: 'font-family font-size'\n          },\n          {\n            selector: 'img,audio,video',\n            collapsed: false,\n            styles: { float: 'right' },\n            preview: 'font-family font-size'\n          },\n          {\n            selector: 'table',\n            collapsed: false,\n            styles: {\n              marginRight: '0px',\n              marginLeft: 'auto'\n            },\n            onformat: table => {\n              dom.setStyle(table, 'float', null);\n            },\n            preview: 'font-family font-size'\n          },\n          {\n            selector: '.mce-preview-object,[data-ephox-embed-iri]',\n            ceFalseOverride: true,\n            styles: { float: 'right' },\n            preview: false\n          }\n        ],\n        alignjustify: [{\n            selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre',\n            styles: { textAlign: 'justify' },\n            inherit: false,\n            preview: 'font-family font-size'\n          }],\n        bold: [\n          {\n            inline: 'strong',\n            remove: 'all',\n            preserve_attributes: [\n              'class',\n              'style'\n            ]\n          },\n          {\n            inline: 'span',\n            styles: { fontWeight: 'bold' }\n          },\n          {\n            inline: 'b',\n            remove: 'all',\n            preserve_attributes: [\n              'class',\n              'style'\n            ]\n          }\n        ],\n        italic: [\n          {\n            inline: 'em',\n            remove: 'all',\n            preserve_attributes: [\n              'class',\n              'style'\n            ]\n          },\n          {\n            inline: 'span',\n            styles: { fontStyle: 'italic' }\n          },\n          {\n            inline: 'i',\n            remove: 'all',\n            preserve_attributes: [\n              'class',\n              'style'\n            ]\n          }\n        ],\n        underline: [\n          {\n            inline: 'span',\n            styles: { textDecoration: 'underline' },\n            exact: true\n          },\n          {\n            inline: 'u',\n            remove: 'all',\n            preserve_attributes: [\n              'class',\n              'style'\n            ]\n          }\n        ],\n        strikethrough: (() => {\n          const span = {\n            inline: 'span',\n            styles: { textDecoration: 'line-through' },\n            exact: true\n          };\n          const strike = {\n            inline: 'strike',\n            remove: 'all',\n            preserve_attributes: [\n              'class',\n              'style'\n            ]\n          };\n          const s = {\n            inline: 's',\n            remove: 'all',\n            preserve_attributes: [\n              'class',\n              'style'\n            ]\n          };\n          return schemaType !== 'html4' ? [\n            s,\n            span,\n            strike\n          ] : [\n            span,\n            s,\n            strike\n          ];\n        })(),\n        forecolor: {\n          inline: 'span',\n          styles: { color: '%value' },\n          links: true,\n          remove_similar: true,\n          clear_child_styles: true\n        },\n        hilitecolor: {\n          inline: 'span',\n          styles: { backgroundColor: '%value' },\n          links: true,\n          remove_similar: true,\n          clear_child_styles: true\n        },\n        fontname: {\n          inline: 'span',\n          toggle: false,\n          styles: { fontFamily: '%value' },\n          clear_child_styles: true\n        },\n        fontsize: {\n          inline: 'span',\n          toggle: false,\n          styles: { fontSize: '%value' },\n          clear_child_styles: true\n        },\n        lineheight: {\n          selector: 'h1,h2,h3,h4,h5,h6,p,li,td,th,div',\n          styles: { lineHeight: '%value' }\n        },\n        fontsize_class: {\n          inline: 'span',\n          attributes: { class: '%value' }\n        },\n        blockquote: {\n          block: 'blockquote',\n          wrapper: true,\n          remove: 'all'\n        },\n        subscript: { inline: 'sub' },\n        superscript: { inline: 'sup' },\n        code: { inline: 'code' },\n        link: {\n          inline: 'a',\n          selector: 'a',\n          remove: 'all',\n          split: true,\n          deep: true,\n          onmatch: (node, _fmt, _itemName) => {\n            return isElement$6(node) && node.hasAttribute('href');\n          },\n          onformat: (elm, _fmt, vars) => {\n            Tools.each(vars, (value, key) => {\n              dom.setAttrib(elm, key, value);\n            });\n          }\n        },\n        lang: {\n          inline: 'span',\n          clear_child_styles: true,\n          remove_similar: true,\n          attributes: {\n            'lang': '%value',\n            'data-mce-lang': vars => {\n              var _a;\n              return (_a = vars === null || vars === void 0 ? void 0 : vars.customValue) !== null && _a !== void 0 ? _a : null;\n            }\n          }\n        },\n        removeformat: [\n          {\n            selector: 'b,strong,em,i,font,u,strike,s,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins,small',\n            remove: 'all',\n            split: true,\n            expand: false,\n            block_expand: true,\n            deep: true\n          },\n          {\n            selector: 'span',\n            attributes: [\n              'style',\n              'class'\n            ],\n            remove: 'empty',\n            split: true,\n            expand: false,\n            deep: true\n          },\n          {\n            selector: '*',\n            attributes: [\n              'style',\n              'class'\n            ],\n            split: false,\n            expand: false,\n            deep: true\n          }\n        ]\n      };\n      Tools.each('p h1 h2 h3 h4 h5 h6 div address pre dt dd samp'.split(/\\s/), name => {\n        formats[name] = {\n          block: name,\n          remove: 'all'\n        };\n      });\n      return formats;\n    };\n\n    const genericBase = {\n      remove_similar: true,\n      inherit: false\n    };\n    const cellBase = {\n      selector: 'td,th',\n      ...genericBase\n    };\n    const cellFormats = {\n      tablecellbackgroundcolor: {\n        styles: { backgroundColor: '%value' },\n        ...cellBase\n      },\n      tablecellverticalalign: {\n        styles: { 'vertical-align': '%value' },\n        ...cellBase\n      },\n      tablecellbordercolor: {\n        styles: { borderColor: '%value' },\n        ...cellBase\n      },\n      tablecellclass: {\n        classes: ['%value'],\n        ...cellBase\n      },\n      tableclass: {\n        selector: 'table',\n        classes: ['%value'],\n        ...genericBase\n      },\n      tablecellborderstyle: {\n        styles: { borderStyle: '%value' },\n        ...cellBase\n      },\n      tablecellborderwidth: {\n        styles: { borderWidth: '%value' },\n        ...cellBase\n      }\n    };\n    const get = constant(cellFormats);\n\n    const FormatRegistry = editor => {\n      const formats = {};\n      const get$2 = name => isNonNullable(name) ? formats[name] : formats;\n      const has = name => has$2(formats, name);\n      const register = (name, format) => {\n        if (name) {\n          if (!isString(name)) {\n            each$d(name, (format, name) => {\n              register(name, format);\n            });\n          } else {\n            if (!isArray$1(format)) {\n              format = [format];\n            }\n            each$e(format, format => {\n              if (isUndefined(format.deep)) {\n                format.deep = !isSelectorFormat(format);\n              }\n              if (isUndefined(format.split)) {\n                format.split = !isSelectorFormat(format) || isInlineFormat(format);\n              }\n              if (isUndefined(format.remove) && isSelectorFormat(format) && !isInlineFormat(format)) {\n                format.remove = 'none';\n              }\n              if (isSelectorFormat(format) && isInlineFormat(format)) {\n                format.mixed = true;\n                format.block_expand = true;\n              }\n              if (isString(format.classes)) {\n                format.classes = format.classes.split(/\\s+/);\n              }\n            });\n            formats[name] = format;\n          }\n        }\n      };\n      const unregister = name => {\n        if (name && formats[name]) {\n          delete formats[name];\n        }\n        return formats;\n      };\n      register(get$1(editor));\n      register(get());\n      register(getFormats(editor));\n      return {\n        get: get$2,\n        has,\n        register,\n        unregister\n      };\n    };\n\n    const each$3 = Tools.each;\n    const dom = DOMUtils.DOM;\n    const isPreviewItem = item => isNonNullable(item) && isObject(item);\n    const parsedSelectorToHtml = (ancestry, editor) => {\n      const schema = editor && editor.schema || Schema({});\n      const decorate = (elm, item) => {\n        if (item.classes.length > 0) {\n          dom.addClass(elm, item.classes.join(' '));\n        }\n        dom.setAttribs(elm, item.attrs);\n      };\n      const createElement = sItem => {\n        const item = isString(sItem) ? {\n          name: sItem,\n          classes: [],\n          attrs: {}\n        } : sItem;\n        const elm = dom.create(item.name);\n        decorate(elm, item);\n        return elm;\n      };\n      const getRequiredParent = (elm, candidate) => {\n        const elmRule = schema.getElementRule(elm.nodeName.toLowerCase());\n        const parentsRequired = elmRule === null || elmRule === void 0 ? void 0 : elmRule.parentsRequired;\n        if (parentsRequired && parentsRequired.length) {\n          return candidate && contains$2(parentsRequired, candidate) ? candidate : parentsRequired[0];\n        } else {\n          return false;\n        }\n      };\n      const wrapInHtml = (elm, ancestors, siblings) => {\n        let parentCandidate;\n        const ancestor = ancestors[0];\n        const ancestorName = isPreviewItem(ancestor) ? ancestor.name : undefined;\n        const parentRequired = getRequiredParent(elm, ancestorName);\n        if (parentRequired) {\n          if (ancestorName === parentRequired) {\n            parentCandidate = ancestor;\n            ancestors = ancestors.slice(1);\n          } else {\n            parentCandidate = parentRequired;\n          }\n        } else if (ancestor) {\n          parentCandidate = ancestor;\n          ancestors = ancestors.slice(1);\n        } else if (!siblings) {\n          return elm;\n        }\n        const parent = parentCandidate ? createElement(parentCandidate) : dom.create('div');\n        parent.appendChild(elm);\n        if (siblings) {\n          Tools.each(siblings, sibling => {\n            const siblingElm = createElement(sibling);\n            parent.insertBefore(siblingElm, elm);\n          });\n        }\n        const parentSiblings = isPreviewItem(parentCandidate) ? parentCandidate.siblings : undefined;\n        return wrapInHtml(parent, ancestors, parentSiblings);\n      };\n      const fragment = dom.create('div');\n      if (ancestry.length > 0) {\n        const item = ancestry[0];\n        const elm = createElement(item);\n        const siblings = isPreviewItem(item) ? item.siblings : undefined;\n        fragment.appendChild(wrapInHtml(elm, ancestry.slice(1), siblings));\n      }\n      return fragment;\n    };\n    const parseSelectorItem = item => {\n      item = Tools.trim(item);\n      let tagName = 'div';\n      const obj = {\n        name: tagName,\n        classes: [],\n        attrs: {},\n        selector: item\n      };\n      if (item !== '*') {\n        tagName = item.replace(/(?:([#\\.]|::?)([\\w\\-]+)|(\\[)([^\\]]+)\\]?)/g, ($0, $1, $2, $3, $4) => {\n          switch ($1) {\n          case '#':\n            obj.attrs.id = $2;\n            break;\n          case '.':\n            obj.classes.push($2);\n            break;\n          case ':':\n            if (Tools.inArray('checked disabled enabled read-only required'.split(' '), $2) !== -1) {\n              obj.attrs[$2] = $2;\n            }\n            break;\n          }\n          if ($3 === '[') {\n            const m = $4.match(/([\\w\\-]+)(?:\\=\\\"([^\\\"]+))?/);\n            if (m) {\n              obj.attrs[m[1]] = m[2];\n            }\n          }\n          return '';\n        });\n      }\n      obj.name = tagName || 'div';\n      return obj;\n    };\n    const parseSelector = selector => {\n      if (!isString(selector)) {\n        return [];\n      }\n      selector = selector.split(/\\s*,\\s*/)[0];\n      selector = selector.replace(/\\s*(~\\+|~|\\+|>)\\s*/g, '$1');\n      return Tools.map(selector.split(/(?:>|\\s+(?![^\\[\\]]+\\]))/), item => {\n        const siblings = Tools.map(item.split(/(?:~\\+|~|\\+)/), parseSelectorItem);\n        const obj = siblings.pop();\n        if (siblings.length) {\n          obj.siblings = siblings;\n        }\n        return obj;\n      }).reverse();\n    };\n    const getCssText = (editor, format) => {\n      let previewCss = '';\n      let previewStyles = getPreviewStyles(editor);\n      if (previewStyles === '') {\n        return '';\n      }\n      const removeVars = val => {\n        return isString(val) ? val.replace(/%(\\w+)/g, '') : '';\n      };\n      const getComputedStyle = (name, elm) => {\n        return dom.getStyle(elm !== null && elm !== void 0 ? elm : editor.getBody(), name, true);\n      };\n      if (isString(format)) {\n        const formats = editor.formatter.get(format);\n        if (!formats) {\n          return '';\n        }\n        format = formats[0];\n      }\n      if ('preview' in format) {\n        const preview = format.preview;\n        if (preview === false) {\n          return '';\n        } else {\n          previewStyles = preview || previewStyles;\n        }\n      }\n      let name = format.block || format.inline || 'span';\n      let previewFrag;\n      const items = parseSelector(format.selector);\n      if (items.length > 0) {\n        if (!items[0].name) {\n          items[0].name = name;\n        }\n        name = format.selector;\n        previewFrag = parsedSelectorToHtml(items, editor);\n      } else {\n        previewFrag = parsedSelectorToHtml([name], editor);\n      }\n      const previewElm = dom.select(name, previewFrag)[0] || previewFrag.firstChild;\n      each$3(format.styles, (value, name) => {\n        const newValue = removeVars(value);\n        if (newValue) {\n          dom.setStyle(previewElm, name, newValue);\n        }\n      });\n      each$3(format.attributes, (value, name) => {\n        const newValue = removeVars(value);\n        if (newValue) {\n          dom.setAttrib(previewElm, name, newValue);\n        }\n      });\n      each$3(format.classes, value => {\n        const newValue = removeVars(value);\n        if (!dom.hasClass(previewElm, newValue)) {\n          dom.addClass(previewElm, newValue);\n        }\n      });\n      editor.dispatch('PreviewFormats');\n      dom.setStyles(previewFrag, {\n        position: 'absolute',\n        left: -65535\n      });\n      editor.getBody().appendChild(previewFrag);\n      const rawParentFontSize = getComputedStyle('fontSize');\n      const parentFontSize = /px$/.test(rawParentFontSize) ? parseInt(rawParentFontSize, 10) : 0;\n      each$3(previewStyles.split(' '), name => {\n        let value = getComputedStyle(name, previewElm);\n        if (name === 'background-color' && /transparent|rgba\\s*\\([^)]+,\\s*0\\)/.test(value)) {\n          value = getComputedStyle(name);\n          if (rgbaToHexString(value).toLowerCase() === '#ffffff') {\n            return;\n          }\n        }\n        if (name === 'color') {\n          if (rgbaToHexString(value).toLowerCase() === '#000000') {\n            return;\n          }\n        }\n        if (name === 'font-size') {\n          if (/em|%$/.test(value)) {\n            if (parentFontSize === 0) {\n              return;\n            }\n            const numValue = parseFloat(value) / (/%$/.test(value) ? 100 : 1);\n            value = numValue * parentFontSize + 'px';\n          }\n        }\n        if (name === 'border' && value) {\n          previewCss += 'padding:0 2px;';\n        }\n        previewCss += name + ':' + value + ';';\n      });\n      editor.dispatch('AfterPreviewFormats');\n      dom.remove(previewFrag);\n      return previewCss;\n    };\n\n    const setup$s = editor => {\n      editor.addShortcut('meta+b', '', 'Bold');\n      editor.addShortcut('meta+i', '', 'Italic');\n      editor.addShortcut('meta+u', '', 'Underline');\n      for (let i = 1; i <= 6; i++) {\n        editor.addShortcut('access+' + i, '', [\n          'FormatBlock',\n          false,\n          'h' + i\n        ]);\n      }\n      editor.addShortcut('access+7', '', [\n        'FormatBlock',\n        false,\n        'p'\n      ]);\n      editor.addShortcut('access+8', '', [\n        'FormatBlock',\n        false,\n        'div'\n      ]);\n      editor.addShortcut('access+9', '', [\n        'FormatBlock',\n        false,\n        'address'\n      ]);\n    };\n\n    const Formatter = editor => {\n      const formats = FormatRegistry(editor);\n      const formatChangeState = Cell({});\n      setup$s(editor);\n      setup$v(editor);\n      if (!isRtc(editor)) {\n        setup$u(formatChangeState, editor);\n      }\n      return {\n        get: formats.get,\n        has: formats.has,\n        register: formats.register,\n        unregister: formats.unregister,\n        apply: (name, vars, node) => {\n          applyFormat(editor, name, vars, node);\n        },\n        remove: (name, vars, node, similar) => {\n          removeFormat(editor, name, vars, node, similar);\n        },\n        toggle: (name, vars, node) => {\n          toggleFormat(editor, name, vars, node);\n        },\n        match: (name, vars, node, similar) => matchFormat(editor, name, vars, node, similar),\n        closest: names => closestFormat(editor, names),\n        matchAll: (names, vars) => matchAllFormats(editor, names, vars),\n        matchNode: (node, name, vars, similar) => matchNodeFormat(editor, node, name, vars, similar),\n        canApply: name => canApplyFormat(editor, name),\n        formatChanged: (formats, callback, similar, vars) => formatChanged(editor, formatChangeState, formats, callback, similar, vars),\n        getCssText: curry(getCssText, editor)\n      };\n    };\n\n    const shouldIgnoreCommand = cmd => {\n      switch (cmd.toLowerCase()) {\n      case 'undo':\n      case 'redo':\n      case 'mcefocus':\n        return true;\n      default:\n        return false;\n      }\n    };\n    const registerEvents = (editor, undoManager, locks) => {\n      const isFirstTypedCharacter = Cell(false);\n      const addNonTypingUndoLevel = e => {\n        setTyping(undoManager, false, locks);\n        undoManager.add({}, e);\n      };\n      editor.on('init', () => {\n        undoManager.add();\n      });\n      editor.on('BeforeExecCommand', e => {\n        const cmd = e.command;\n        if (!shouldIgnoreCommand(cmd)) {\n          endTyping(undoManager, locks);\n          undoManager.beforeChange();\n        }\n      });\n      editor.on('ExecCommand', e => {\n        const cmd = e.command;\n        if (!shouldIgnoreCommand(cmd)) {\n          addNonTypingUndoLevel(e);\n        }\n      });\n      editor.on('ObjectResizeStart cut', () => {\n        undoManager.beforeChange();\n      });\n      editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel);\n      editor.on('dragend', addNonTypingUndoLevel);\n      editor.on('keyup', e => {\n        const keyCode = e.keyCode;\n        if (e.isDefaultPrevented()) {\n          return;\n        }\n        const isMeta = Env.os.isMacOS() && e.key === 'Meta';\n        if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45 || e.ctrlKey || isMeta) {\n          addNonTypingUndoLevel();\n          editor.nodeChanged();\n        }\n        if (keyCode === 46 || keyCode === 8) {\n          editor.nodeChanged();\n        }\n        if (isFirstTypedCharacter.get() && undoManager.typing && !isEq$1(createFromEditor(editor), undoManager.data[0])) {\n          if (!editor.isDirty()) {\n            editor.setDirty(true);\n          }\n          editor.dispatch('TypingUndo');\n          isFirstTypedCharacter.set(false);\n          editor.nodeChanged();\n        }\n      });\n      editor.on('keydown', e => {\n        const keyCode = e.keyCode;\n        if (e.isDefaultPrevented()) {\n          return;\n        }\n        if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45) {\n          if (undoManager.typing) {\n            addNonTypingUndoLevel(e);\n          }\n          return;\n        }\n        const modKey = e.ctrlKey && !e.altKey || e.metaKey;\n        if ((keyCode < 16 || keyCode > 20) && keyCode !== 224 && keyCode !== 91 && !undoManager.typing && !modKey) {\n          undoManager.beforeChange();\n          setTyping(undoManager, true, locks);\n          undoManager.add({}, e);\n          isFirstTypedCharacter.set(true);\n          return;\n        }\n        const hasOnlyMetaOrCtrlModifier = Env.os.isMacOS() ? e.metaKey : e.ctrlKey && !e.altKey;\n        if (hasOnlyMetaOrCtrlModifier) {\n          undoManager.beforeChange();\n        }\n      });\n      editor.on('mousedown', e => {\n        if (undoManager.typing) {\n          addNonTypingUndoLevel(e);\n        }\n      });\n      const isInsertReplacementText = event => event.inputType === 'insertReplacementText';\n      const isInsertTextDataNull = event => event.inputType === 'insertText' && event.data === null;\n      const isInsertFromPasteOrDrop = event => event.inputType === 'insertFromPaste' || event.inputType === 'insertFromDrop';\n      editor.on('input', e => {\n        if (e.inputType && (isInsertReplacementText(e) || isInsertTextDataNull(e) || isInsertFromPasteOrDrop(e))) {\n          addNonTypingUndoLevel(e);\n        }\n      });\n      editor.on('AddUndo Undo Redo ClearUndos', e => {\n        if (!e.isDefaultPrevented()) {\n          editor.nodeChanged();\n        }\n      });\n    };\n    const addKeyboardShortcuts = editor => {\n      editor.addShortcut('meta+z', '', 'Undo');\n      editor.addShortcut('meta+y,meta+shift+z', '', 'Redo');\n    };\n\n    const UndoManager = editor => {\n      const beforeBookmark = value$2();\n      const locks = Cell(0);\n      const index = Cell(0);\n      const undoManager = {\n        data: [],\n        typing: false,\n        beforeChange: () => {\n          beforeChange(editor, locks, beforeBookmark);\n        },\n        add: (level, event) => {\n          return addUndoLevel(editor, undoManager, index, locks, beforeBookmark, level, event);\n        },\n        dispatchChange: () => {\n          editor.setDirty(true);\n          const level = createFromEditor(editor);\n          level.bookmark = getUndoBookmark(editor.selection);\n          editor.dispatch('change', {\n            level,\n            lastLevel: get$b(undoManager.data, index.get()).getOrUndefined()\n          });\n        },\n        undo: () => {\n          return undo(editor, undoManager, locks, index);\n        },\n        redo: () => {\n          return redo(editor, index, undoManager.data);\n        },\n        clear: () => {\n          clear(editor, undoManager, index);\n        },\n        reset: () => {\n          reset(editor, undoManager);\n        },\n        hasUndo: () => {\n          return hasUndo(editor, undoManager, index);\n        },\n        hasRedo: () => {\n          return hasRedo(editor, undoManager, index);\n        },\n        transact: callback => {\n          return transact(editor, undoManager, locks, callback);\n        },\n        ignore: callback => {\n          ignore(editor, locks, callback);\n        },\n        extra: (callback1, callback2) => {\n          extra(editor, undoManager, index, callback1, callback2);\n        }\n      };\n      if (!isRtc(editor)) {\n        registerEvents(editor, undoManager, locks);\n      }\n      addKeyboardShortcuts(editor);\n      return undoManager;\n    };\n\n    const nonTypingKeycodes = [\n      9,\n      27,\n      VK.HOME,\n      VK.END,\n      19,\n      20,\n      44,\n      144,\n      145,\n      33,\n      34,\n      45,\n      16,\n      17,\n      18,\n      91,\n      92,\n      93,\n      VK.DOWN,\n      VK.UP,\n      VK.LEFT,\n      VK.RIGHT\n    ].concat(Env.browser.isFirefox() ? [224] : []);\n    const placeholderAttr = 'data-mce-placeholder';\n    const isKeyboardEvent = e => e.type === 'keydown' || e.type === 'keyup';\n    const isDeleteEvent = e => {\n      const keyCode = e.keyCode;\n      return keyCode === VK.BACKSPACE || keyCode === VK.DELETE;\n    };\n    const isNonTypingKeyboardEvent = e => {\n      if (isKeyboardEvent(e)) {\n        const keyCode = e.keyCode;\n        return !isDeleteEvent(e) && (VK.metaKeyPressed(e) || e.altKey || keyCode >= 112 && keyCode <= 123 || contains$2(nonTypingKeycodes, keyCode));\n      } else {\n        return false;\n      }\n    };\n    const isTypingKeyboardEvent = e => isKeyboardEvent(e) && !(isDeleteEvent(e) || e.type === 'keyup' && e.keyCode === 229);\n    const isVisuallyEmpty = (dom, rootElm, forcedRootBlock) => {\n      if (isEmpty$2(SugarElement.fromDom(rootElm), false)) {\n        const firstElement = rootElm.firstElementChild;\n        if (!firstElement) {\n          return true;\n        } else if (dom.getStyle(rootElm.firstElementChild, 'padding-left') || dom.getStyle(rootElm.firstElementChild, 'padding-right')) {\n          return false;\n        } else {\n          return forcedRootBlock === firstElement.nodeName.toLowerCase();\n        }\n      } else {\n        return false;\n      }\n    };\n    const setup$r = editor => {\n      var _a;\n      const dom = editor.dom;\n      const rootBlock = getForcedRootBlock(editor);\n      const placeholder = (_a = getPlaceholder(editor)) !== null && _a !== void 0 ? _a : '';\n      const updatePlaceholder = (e, initial) => {\n        if (isNonTypingKeyboardEvent(e)) {\n          return;\n        }\n        const body = editor.getBody();\n        const showPlaceholder = isTypingKeyboardEvent(e) ? false : isVisuallyEmpty(dom, body, rootBlock);\n        const isPlaceholderShown = dom.getAttrib(body, placeholderAttr) !== '';\n        if (isPlaceholderShown !== showPlaceholder || initial) {\n          dom.setAttrib(body, placeholderAttr, showPlaceholder ? placeholder : null);\n          dom.setAttrib(body, 'aria-placeholder', showPlaceholder ? placeholder : null);\n          firePlaceholderToggle(editor, showPlaceholder);\n          editor.on(showPlaceholder ? 'keydown' : 'keyup', updatePlaceholder);\n          editor.off(showPlaceholder ? 'keyup' : 'keydown', updatePlaceholder);\n        }\n      };\n      if (isNotEmpty(placeholder)) {\n        editor.on('init', e => {\n          updatePlaceholder(e, true);\n          editor.on('change SetContent ExecCommand', updatePlaceholder);\n          editor.on('paste', e => Delay.setEditorTimeout(editor, () => updatePlaceholder(e)));\n        });\n      }\n    };\n\n    const blockPosition = (block, position) => ({\n      block,\n      position\n    });\n    const blockBoundary = (from, to) => ({\n      from,\n      to\n    });\n    const getBlockPosition = (rootNode, pos) => {\n      const rootElm = SugarElement.fromDom(rootNode);\n      const containerElm = SugarElement.fromDom(pos.container());\n      return getParentBlock$2(rootElm, containerElm).map(block => blockPosition(block, pos));\n    };\n    const isDifferentBlocks = blockBoundary => !eq(blockBoundary.from.block, blockBoundary.to.block);\n    const getClosestHost = (root, scope) => {\n      const isRoot = node => eq(node, root);\n      const isHost = node => isTableCell$2(node) || isContentEditableTrue$3(node.dom);\n      return closest$4(scope, isHost, isRoot).filter(isElement$7).getOr(root);\n    };\n    const hasSameHost = (rootNode, blockBoundary) => {\n      const root = SugarElement.fromDom(rootNode);\n      return eq(getClosestHost(root, blockBoundary.from.block), getClosestHost(root, blockBoundary.to.block));\n    };\n    const isEditable$1 = blockBoundary => isContentEditableFalse$b(blockBoundary.from.block.dom) === false && isContentEditableFalse$b(blockBoundary.to.block.dom) === false;\n    const hasValidBlocks = blockBoundary => {\n      const isValidBlock = block => isTextBlock$2(block) || hasBlockAttr(block.dom);\n      return isValidBlock(blockBoundary.from.block) && isValidBlock(blockBoundary.to.block);\n    };\n    const skipLastBr = (rootNode, forward, blockPosition) => {\n      if (isBr$6(blockPosition.position.getNode()) && !isEmpty$2(blockPosition.block)) {\n        return positionIn(false, blockPosition.block.dom).bind(lastPositionInBlock => {\n          if (lastPositionInBlock.isEqual(blockPosition.position)) {\n            return fromPosition(forward, rootNode, lastPositionInBlock).bind(to => getBlockPosition(rootNode, to));\n          } else {\n            return Optional.some(blockPosition);\n          }\n        }).getOr(blockPosition);\n      } else {\n        return blockPosition;\n      }\n    };\n    const readFromRange = (rootNode, forward, rng) => {\n      const fromBlockPos = getBlockPosition(rootNode, CaretPosition.fromRangeStart(rng));\n      const toBlockPos = fromBlockPos.bind(blockPos => fromPosition(forward, rootNode, blockPos.position).bind(to => getBlockPosition(rootNode, to).map(blockPos => skipLastBr(rootNode, forward, blockPos))));\n      return lift2(fromBlockPos, toBlockPos, blockBoundary).filter(blockBoundary => isDifferentBlocks(blockBoundary) && hasSameHost(rootNode, blockBoundary) && isEditable$1(blockBoundary) && hasValidBlocks(blockBoundary));\n    };\n    const read$1 = (rootNode, forward, rng) => rng.collapsed ? readFromRange(rootNode, forward, rng) : Optional.none();\n\n    const getChildrenUntilBlockBoundary = (block, schema) => {\n      const children = children$1(block);\n      return findIndex$2(children, el => schema.isBlock(name(el))).fold(constant(children), index => children.slice(0, index));\n    };\n    const extractChildren = (block, schema) => {\n      const children = getChildrenUntilBlockBoundary(block, schema);\n      each$e(children, remove$5);\n      return children;\n    };\n    const removeEmptyRoot = (rootNode, block) => {\n      const parents = parentsAndSelf(block, rootNode);\n      return find$2(parents.reverse(), element => isEmpty$2(element)).each(remove$5);\n    };\n    const isEmptyBefore = el => filter$5(prevSiblings(el), el => !isEmpty$2(el)).length === 0;\n    const nestedBlockMerge = (rootNode, fromBlock, toBlock, schema, insertionPoint) => {\n      if (isEmpty$2(toBlock)) {\n        fillWithPaddingBr(toBlock);\n        return firstPositionIn(toBlock.dom);\n      }\n      if (isEmptyBefore(insertionPoint) && isEmpty$2(fromBlock)) {\n        before$3(insertionPoint, SugarElement.fromTag('br'));\n      }\n      const position = prevPosition(toBlock.dom, CaretPosition.before(insertionPoint.dom));\n      each$e(extractChildren(fromBlock, schema), child => {\n        before$3(insertionPoint, child);\n      });\n      removeEmptyRoot(rootNode, fromBlock);\n      return position;\n    };\n    const isInline = (schema, node) => schema.isInline(name(node));\n    const sidelongBlockMerge = (rootNode, fromBlock, toBlock, schema) => {\n      if (isEmpty$2(toBlock)) {\n        if (isEmpty$2(fromBlock)) {\n          const getInlineToBlockDescendants = el => {\n            const helper = (node, elements) => firstChild(node).fold(() => elements, child => isInline(schema, child) ? helper(child, elements.concat(shallow$1(child))) : elements);\n            return helper(el, []);\n          };\n          const newFromBlockDescendants = foldr(getInlineToBlockDescendants(toBlock), (element, descendant) => {\n            wrap$2(element, descendant);\n            return descendant;\n          }, createPaddingBr());\n          empty(fromBlock);\n          append$1(fromBlock, newFromBlockDescendants);\n        }\n        remove$5(toBlock);\n        return firstPositionIn(fromBlock.dom);\n      }\n      const position = lastPositionIn(toBlock.dom);\n      each$e(extractChildren(fromBlock, schema), child => {\n        append$1(toBlock, child);\n      });\n      removeEmptyRoot(rootNode, fromBlock);\n      return position;\n    };\n    const findInsertionPoint = (toBlock, block) => {\n      const parentsAndSelf$1 = parentsAndSelf(block, toBlock);\n      return Optional.from(parentsAndSelf$1[parentsAndSelf$1.length - 1]);\n    };\n    const getInsertionPoint = (fromBlock, toBlock) => contains(toBlock, fromBlock) ? findInsertionPoint(toBlock, fromBlock) : Optional.none();\n    const trimBr = (first, block) => {\n      positionIn(first, block.dom).bind(position => Optional.from(position.getNode())).map(SugarElement.fromDom).filter(isBr$5).each(remove$5);\n    };\n    const mergeBlockInto = (rootNode, fromBlock, toBlock, schema) => {\n      trimBr(true, fromBlock);\n      trimBr(false, toBlock);\n      return getInsertionPoint(fromBlock, toBlock).fold(curry(sidelongBlockMerge, rootNode, fromBlock, toBlock, schema), curry(nestedBlockMerge, rootNode, fromBlock, toBlock, schema));\n    };\n    const mergeBlocks = (rootNode, forward, block1, block2, schema) => forward ? mergeBlockInto(rootNode, block2, block1, schema) : mergeBlockInto(rootNode, block1, block2, schema);\n\n    const backspaceDelete$9 = (editor, forward) => {\n      const rootNode = SugarElement.fromDom(editor.getBody());\n      const position = read$1(rootNode.dom, forward, editor.selection.getRng()).map(blockBoundary => () => {\n        mergeBlocks(rootNode, forward, blockBoundary.from.block, blockBoundary.to.block, editor.schema).each(pos => {\n          editor.selection.setRng(pos.toRange());\n        });\n      });\n      return position;\n    };\n\n    const deleteRangeMergeBlocks = (rootNode, selection, schema) => {\n      const rng = selection.getRng();\n      return lift2(getParentBlock$2(rootNode, SugarElement.fromDom(rng.startContainer)), getParentBlock$2(rootNode, SugarElement.fromDom(rng.endContainer)), (block1, block2) => {\n        if (!eq(block1, block2)) {\n          return Optional.some(() => {\n            rng.deleteContents();\n            mergeBlocks(rootNode, true, block1, block2, schema).each(pos => {\n              selection.setRng(pos.toRange());\n            });\n          });\n        } else {\n          return Optional.none();\n        }\n      }).getOr(Optional.none());\n    };\n    const isRawNodeInTable = (root, rawNode) => {\n      const node = SugarElement.fromDom(rawNode);\n      const isRoot = curry(eq, root);\n      return ancestor$4(node, isTableCell$2, isRoot).isSome();\n    };\n    const isSelectionInTable = (root, rng) => isRawNodeInTable(root, rng.startContainer) || isRawNodeInTable(root, rng.endContainer);\n    const isEverythingSelected = (root, rng) => {\n      const noPrevious = prevPosition(root.dom, CaretPosition.fromRangeStart(rng)).isNone();\n      const noNext = nextPosition(root.dom, CaretPosition.fromRangeEnd(rng)).isNone();\n      return !isSelectionInTable(root, rng) && noPrevious && noNext;\n    };\n    const emptyEditor = editor => {\n      return Optional.some(() => {\n        editor.setContent('');\n        editor.selection.setCursorLocation();\n      });\n    };\n    const deleteRange$2 = editor => {\n      const rootNode = SugarElement.fromDom(editor.getBody());\n      const rng = editor.selection.getRng();\n      return isEverythingSelected(rootNode, rng) ? emptyEditor(editor) : deleteRangeMergeBlocks(rootNode, editor.selection, editor.schema);\n    };\n    const backspaceDelete$8 = (editor, _forward) => editor.selection.isCollapsed() ? Optional.none() : deleteRange$2(editor);\n\n    const showCaret = (direction, editor, node, before, scrollIntoView) => Optional.from(editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView));\n    const getNodeRange = node => {\n      const rng = node.ownerDocument.createRange();\n      rng.selectNode(node);\n      return rng;\n    };\n    const selectNode = (editor, node) => {\n      const e = editor.dispatch('BeforeObjectSelected', { target: node });\n      if (e.isDefaultPrevented()) {\n        return Optional.none();\n      }\n      return Optional.some(getNodeRange(node));\n    };\n    const renderCaretAtRange = (editor, range, scrollIntoView) => {\n      const normalizedRange = normalizeRange(1, editor.getBody(), range);\n      const caretPosition = CaretPosition.fromRangeStart(normalizedRange);\n      const caretPositionNode = caretPosition.getNode();\n      if (isInlineFakeCaretTarget(caretPositionNode)) {\n        return showCaret(1, editor, caretPositionNode, !caretPosition.isAtEnd(), false);\n      }\n      const caretPositionBeforeNode = caretPosition.getNode(true);\n      if (isInlineFakeCaretTarget(caretPositionBeforeNode)) {\n        return showCaret(1, editor, caretPositionBeforeNode, false, false);\n      }\n      const ceRoot = getContentEditableRoot$1(editor.dom.getRoot(), caretPosition.getNode());\n      if (isInlineFakeCaretTarget(ceRoot)) {\n        return showCaret(1, editor, ceRoot, false, scrollIntoView);\n      }\n      return Optional.none();\n    };\n    const renderRangeCaret = (editor, range, scrollIntoView) => range.collapsed ? renderCaretAtRange(editor, range, scrollIntoView).getOr(range) : range;\n\n    const isBeforeBoundary = pos => isBeforeContentEditableFalse(pos) || isBeforeMedia(pos);\n    const isAfterBoundary = pos => isAfterContentEditableFalse(pos) || isAfterMedia(pos);\n    const trimEmptyTextNode = (dom, node) => {\n      if (isText$a(node) && node.data.length === 0) {\n        dom.remove(node);\n      }\n    };\n    const deleteContentAndShowCaret = (editor, range, node, direction, forward, peekCaretPosition) => {\n      showCaret(direction, editor, peekCaretPosition.getNode(!forward), forward, true).each(caretRange => {\n        if (range.collapsed) {\n          const deleteRange = range.cloneRange();\n          if (forward) {\n            deleteRange.setEnd(caretRange.startContainer, caretRange.startOffset);\n          } else {\n            deleteRange.setStart(caretRange.endContainer, caretRange.endOffset);\n          }\n          deleteRange.deleteContents();\n        } else {\n          range.deleteContents();\n        }\n        editor.selection.setRng(caretRange);\n      });\n      trimEmptyTextNode(editor.dom, node);\n    };\n    const deleteBoundaryText = (editor, forward) => {\n      const range = editor.selection.getRng();\n      if (!isText$a(range.commonAncestorContainer)) {\n        return Optional.none();\n      }\n      const direction = forward ? HDirection.Forwards : HDirection.Backwards;\n      const caretWalker = CaretWalker(editor.getBody());\n      const getNextPosFn = curry(getVisualCaretPosition, forward ? caretWalker.next : caretWalker.prev);\n      const isBeforeFn = forward ? isBeforeBoundary : isAfterBoundary;\n      const caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\n      const nextCaretPosition = getNextPosFn(caretPosition);\n      const normalizedNextCaretPosition = nextCaretPosition ? normalizePosition(forward, nextCaretPosition) : nextCaretPosition;\n      if (!normalizedNextCaretPosition || !isMoveInsideSameBlock(caretPosition, normalizedNextCaretPosition)) {\n        return Optional.none();\n      } else if (isBeforeFn(normalizedNextCaretPosition)) {\n        return Optional.some(() => deleteContentAndShowCaret(editor, range, caretPosition.getNode(), direction, forward, normalizedNextCaretPosition));\n      }\n      const peekCaretPosition = getNextPosFn(normalizedNextCaretPosition);\n      if (peekCaretPosition && isBeforeFn(peekCaretPosition)) {\n        if (isMoveInsideSameBlock(normalizedNextCaretPosition, peekCaretPosition)) {\n          return Optional.some(() => deleteContentAndShowCaret(editor, range, caretPosition.getNode(), direction, forward, peekCaretPosition));\n        }\n      }\n      return Optional.none();\n    };\n    const backspaceDelete$7 = (editor, forward) => deleteBoundaryText(editor, forward);\n\n    const getEdgeCefPosition = (editor, atStart) => {\n      const root = editor.getBody();\n      return atStart ? firstPositionIn(root).filter(isBeforeContentEditableFalse) : lastPositionIn(root).filter(isAfterContentEditableFalse);\n    };\n    const isCefAtEdgeSelected = editor => {\n      const rng = editor.selection.getRng();\n      return !rng.collapsed && (getEdgeCefPosition(editor, true).exists(pos => pos.isEqual(CaretPosition.fromRangeStart(rng))) || getEdgeCefPosition(editor, false).exists(pos => pos.isEqual(CaretPosition.fromRangeEnd(rng))));\n    };\n\n    const isCompoundElement = node => isNonNullable(node) && (isTableCell$2(SugarElement.fromDom(node)) || isListItem$1(SugarElement.fromDom(node)));\n    const DeleteAction = Adt.generate([\n      { remove: ['element'] },\n      { moveToElement: ['element'] },\n      { moveToPosition: ['position'] }\n    ]);\n    const isAtContentEditableBlockCaret = (forward, from) => {\n      const elm = from.getNode(!forward);\n      const caretLocation = forward ? 'after' : 'before';\n      return isElement$6(elm) && elm.getAttribute('data-mce-caret') === caretLocation;\n    };\n    const isDeleteFromCefDifferentBlocks = (root, forward, from, to, schema) => {\n      const inSameBlock = elm => schema.isInline(elm.nodeName.toLowerCase()) && !isInSameBlock(from, to, root);\n      return getRelativeCefElm(!forward, from).fold(() => getRelativeCefElm(forward, to).fold(never, inSameBlock), inSameBlock);\n    };\n    const deleteEmptyBlockOrMoveToCef = (root, forward, from, to) => {\n      const toCefElm = to.getNode(!forward);\n      return getParentBlock$2(SugarElement.fromDom(root), SugarElement.fromDom(from.getNode())).map(blockElm => isEmpty$2(blockElm) ? DeleteAction.remove(blockElm.dom) : DeleteAction.moveToElement(toCefElm)).orThunk(() => Optional.some(DeleteAction.moveToElement(toCefElm)));\n    };\n    const findCefPosition = (root, forward, from, schema) => fromPosition(forward, root, from).bind(to => {\n      if (isCompoundElement(to.getNode())) {\n        return Optional.none();\n      } else if (isDeleteFromCefDifferentBlocks(root, forward, from, to, schema)) {\n        return Optional.none();\n      } else if (forward && isContentEditableFalse$b(to.getNode())) {\n        return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\n      } else if (!forward && isContentEditableFalse$b(to.getNode(true))) {\n        return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\n      } else if (forward && isAfterContentEditableFalse(from)) {\n        return Optional.some(DeleteAction.moveToPosition(to));\n      } else if (!forward && isBeforeContentEditableFalse(from)) {\n        return Optional.some(DeleteAction.moveToPosition(to));\n      } else {\n        return Optional.none();\n      }\n    });\n    const getContentEditableBlockAction = (forward, elm) => {\n      if (isNullable(elm)) {\n        return Optional.none();\n      } else if (forward && isContentEditableFalse$b(elm.nextSibling)) {\n        return Optional.some(DeleteAction.moveToElement(elm.nextSibling));\n      } else if (!forward && isContentEditableFalse$b(elm.previousSibling)) {\n        return Optional.some(DeleteAction.moveToElement(elm.previousSibling));\n      } else {\n        return Optional.none();\n      }\n    };\n    const skipMoveToActionFromInlineCefToContent = (root, from, deleteAction) => deleteAction.fold(elm => Optional.some(DeleteAction.remove(elm)), elm => Optional.some(DeleteAction.moveToElement(elm)), to => {\n      if (isInSameBlock(from, to, root)) {\n        return Optional.none();\n      } else {\n        return Optional.some(DeleteAction.moveToPosition(to));\n      }\n    });\n    const getContentEditableAction = (root, forward, from, schema) => {\n      if (isAtContentEditableBlockCaret(forward, from)) {\n        return getContentEditableBlockAction(forward, from.getNode(!forward)).orThunk(() => findCefPosition(root, forward, from, schema));\n      } else {\n        return findCefPosition(root, forward, from, schema).bind(deleteAction => skipMoveToActionFromInlineCefToContent(root, from, deleteAction));\n      }\n    };\n    const read = (root, forward, rng, schema) => {\n      const normalizedRange = normalizeRange(forward ? 1 : -1, root, rng);\n      const from = CaretPosition.fromRangeStart(normalizedRange);\n      const rootElement = SugarElement.fromDom(root);\n      if (!forward && isAfterContentEditableFalse(from)) {\n        return Optional.some(DeleteAction.remove(from.getNode(true)));\n      } else if (forward && isBeforeContentEditableFalse(from)) {\n        return Optional.some(DeleteAction.remove(from.getNode()));\n      } else if (!forward && isBeforeContentEditableFalse(from) && isAfterBr(rootElement, from, schema)) {\n        return findPreviousBr(rootElement, from, schema).map(br => DeleteAction.remove(br.getNode()));\n      } else if (forward && isAfterContentEditableFalse(from) && isBeforeBr$1(rootElement, from, schema)) {\n        return findNextBr(rootElement, from, schema).map(br => DeleteAction.remove(br.getNode()));\n      } else {\n        return getContentEditableAction(root, forward, from, schema);\n      }\n    };\n\n    const deleteElement$1 = (editor, forward) => element => {\n      editor._selectionOverrides.hideFakeCaret();\n      deleteElement$2(editor, forward, SugarElement.fromDom(element));\n      return true;\n    };\n    const moveToElement = (editor, forward) => element => {\n      const pos = forward ? CaretPosition.before(element) : CaretPosition.after(element);\n      editor.selection.setRng(pos.toRange());\n      return true;\n    };\n    const moveToPosition = editor => pos => {\n      editor.selection.setRng(pos.toRange());\n      return true;\n    };\n    const getAncestorCe = (editor, node) => Optional.from(getContentEditableRoot$1(editor.getBody(), node));\n    const backspaceDeleteCaret = (editor, forward) => {\n      const selectedNode = editor.selection.getNode();\n      return getAncestorCe(editor, selectedNode).filter(isContentEditableFalse$b).fold(() => read(editor.getBody(), forward, editor.selection.getRng(), editor.schema).map(deleteAction => () => deleteAction.fold(deleteElement$1(editor, forward), moveToElement(editor, forward), moveToPosition(editor))), () => Optional.some(noop));\n    };\n    const deleteOffscreenSelection = rootElement => {\n      each$e(descendants(rootElement, '.mce-offscreen-selection'), remove$5);\n    };\n    const backspaceDeleteRange = (editor, forward) => {\n      const selectedNode = editor.selection.getNode();\n      if (isContentEditableFalse$b(selectedNode) && !isTableCell$3(selectedNode)) {\n        const hasCefAncestor = getAncestorCe(editor, selectedNode.parentNode).filter(isContentEditableFalse$b);\n        return hasCefAncestor.fold(() => Optional.some(() => {\n          deleteOffscreenSelection(SugarElement.fromDom(editor.getBody()));\n          deleteElement$2(editor, forward, SugarElement.fromDom(editor.selection.getNode()));\n          paddEmptyBody(editor);\n        }), () => Optional.some(noop));\n      }\n      if (isCefAtEdgeSelected(editor)) {\n        return Optional.some(() => {\n          deleteRangeContents(editor, editor.selection.getRng(), SugarElement.fromDom(editor.getBody()));\n        });\n      }\n      return Optional.none();\n    };\n    const paddEmptyElement = editor => {\n      const dom = editor.dom, selection = editor.selection;\n      const ceRoot = getContentEditableRoot$1(editor.getBody(), selection.getNode());\n      if (isContentEditableTrue$3(ceRoot) && dom.isBlock(ceRoot) && dom.isEmpty(ceRoot)) {\n        const br = dom.create('br', { 'data-mce-bogus': '1' });\n        dom.setHTML(ceRoot, '');\n        ceRoot.appendChild(br);\n        selection.setRng(CaretPosition.before(br).toRange());\n      }\n      return true;\n    };\n    const backspaceDelete$6 = (editor, forward) => {\n      if (editor.selection.isCollapsed()) {\n        return backspaceDeleteCaret(editor, forward);\n      } else {\n        return backspaceDeleteRange(editor, forward);\n      }\n    };\n\n    const deleteCaret$2 = (editor, forward) => {\n      const fromPos = CaretPosition.fromRangeStart(editor.selection.getRng());\n      return fromPosition(forward, editor.getBody(), fromPos).filter(pos => forward ? isBeforeImageBlock(pos) : isAfterImageBlock(pos)).bind(pos => getChildNodeAtRelativeOffset(forward ? 0 : -1, pos)).map(elm => () => editor.selection.select(elm));\n    };\n    const backspaceDelete$5 = (editor, forward) => editor.selection.isCollapsed() ? deleteCaret$2(editor, forward) : Optional.none();\n\n    const isText$2 = isText$a;\n    const startsWithCaretContainer = node => isText$2(node) && node.data[0] === ZWSP$1;\n    const endsWithCaretContainer = node => isText$2(node) && node.data[node.data.length - 1] === ZWSP$1;\n    const createZwsp = node => {\n      var _a;\n      const doc = (_a = node.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      return doc.createTextNode(ZWSP$1);\n    };\n    const insertBefore$1 = node => {\n      var _a;\n      if (isText$2(node.previousSibling)) {\n        if (endsWithCaretContainer(node.previousSibling)) {\n          return node.previousSibling;\n        } else {\n          node.previousSibling.appendData(ZWSP$1);\n          return node.previousSibling;\n        }\n      } else if (isText$2(node)) {\n        if (startsWithCaretContainer(node)) {\n          return node;\n        } else {\n          node.insertData(0, ZWSP$1);\n          return node;\n        }\n      } else {\n        const newNode = createZwsp(node);\n        (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(newNode, node);\n        return newNode;\n      }\n    };\n    const insertAfter$1 = node => {\n      var _a, _b;\n      if (isText$2(node.nextSibling)) {\n        if (startsWithCaretContainer(node.nextSibling)) {\n          return node.nextSibling;\n        } else {\n          node.nextSibling.insertData(0, ZWSP$1);\n          return node.nextSibling;\n        }\n      } else if (isText$2(node)) {\n        if (endsWithCaretContainer(node)) {\n          return node;\n        } else {\n          node.appendData(ZWSP$1);\n          return node;\n        }\n      } else {\n        const newNode = createZwsp(node);\n        if (node.nextSibling) {\n          (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(newNode, node.nextSibling);\n        } else {\n          (_b = node.parentNode) === null || _b === void 0 ? void 0 : _b.appendChild(newNode);\n        }\n        return newNode;\n      }\n    };\n    const insertInline = (before, node) => before ? insertBefore$1(node) : insertAfter$1(node);\n    const insertInlineBefore = curry(insertInline, true);\n    const insertInlineAfter = curry(insertInline, false);\n\n    const insertInlinePos = (pos, before) => {\n      if (isText$a(pos.container())) {\n        return insertInline(before, pos.container());\n      } else {\n        return insertInline(before, pos.getNode());\n      }\n    };\n    const isPosCaretContainer = (pos, caret) => {\n      const caretNode = caret.get();\n      return caretNode && pos.container() === caretNode && isCaretContainerInline(caretNode);\n    };\n    const renderCaret = (caret, location) => location.fold(element => {\n      remove$3(caret.get());\n      const text = insertInlineBefore(element);\n      caret.set(text);\n      return Optional.some(CaretPosition(text, text.length - 1));\n    }, element => firstPositionIn(element).map(pos => {\n      if (!isPosCaretContainer(pos, caret)) {\n        remove$3(caret.get());\n        const text = insertInlinePos(pos, true);\n        caret.set(text);\n        return CaretPosition(text, 1);\n      } else {\n        const node = caret.get();\n        return CaretPosition(node, 1);\n      }\n    }), element => lastPositionIn(element).map(pos => {\n      if (!isPosCaretContainer(pos, caret)) {\n        remove$3(caret.get());\n        const text = insertInlinePos(pos, false);\n        caret.set(text);\n        return CaretPosition(text, text.length - 1);\n      } else {\n        const node = caret.get();\n        return CaretPosition(node, node.length - 1);\n      }\n    }), element => {\n      remove$3(caret.get());\n      const text = insertInlineAfter(element);\n      caret.set(text);\n      return Optional.some(CaretPosition(text, 1));\n    });\n\n    const evaluateUntil = (fns, args) => {\n      for (let i = 0; i < fns.length; i++) {\n        const result = fns[i].apply(null, args);\n        if (result.isSome()) {\n          return result;\n        }\n      }\n      return Optional.none();\n    };\n\n    const Location = Adt.generate([\n      { before: ['element'] },\n      { start: ['element'] },\n      { end: ['element'] },\n      { after: ['element'] }\n    ]);\n    const rescope$1 = (rootNode, node) => {\n      const parentBlock = getParentBlock$3(node, rootNode);\n      return parentBlock ? parentBlock : rootNode;\n    };\n    const before = (isInlineTarget, rootNode, pos) => {\n      const nPos = normalizeForwards(pos);\n      const scope = rescope$1(rootNode, nPos.container());\n      return findRootInline(isInlineTarget, scope, nPos).fold(() => nextPosition(scope, nPos).bind(curry(findRootInline, isInlineTarget, scope)).map(inline => Location.before(inline)), Optional.none);\n    };\n    const isNotInsideFormatCaretContainer = (rootNode, elm) => getParentCaretContainer(rootNode, elm) === null;\n    const findInsideRootInline = (isInlineTarget, rootNode, pos) => findRootInline(isInlineTarget, rootNode, pos).filter(curry(isNotInsideFormatCaretContainer, rootNode));\n    const start$1 = (isInlineTarget, rootNode, pos) => {\n      const nPos = normalizeBackwards(pos);\n      return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(inline => {\n        const prevPos = prevPosition(inline, nPos);\n        return prevPos.isNone() ? Optional.some(Location.start(inline)) : Optional.none();\n      });\n    };\n    const end = (isInlineTarget, rootNode, pos) => {\n      const nPos = normalizeForwards(pos);\n      return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(inline => {\n        const nextPos = nextPosition(inline, nPos);\n        return nextPos.isNone() ? Optional.some(Location.end(inline)) : Optional.none();\n      });\n    };\n    const after = (isInlineTarget, rootNode, pos) => {\n      const nPos = normalizeBackwards(pos);\n      const scope = rescope$1(rootNode, nPos.container());\n      return findRootInline(isInlineTarget, scope, nPos).fold(() => prevPosition(scope, nPos).bind(curry(findRootInline, isInlineTarget, scope)).map(inline => Location.after(inline)), Optional.none);\n    };\n    const isValidLocation = location => !isRtl(getElement(location));\n    const readLocation = (isInlineTarget, rootNode, pos) => {\n      const location = evaluateUntil([\n        before,\n        start$1,\n        end,\n        after\n      ], [\n        isInlineTarget,\n        rootNode,\n        pos\n      ]);\n      return location.filter(isValidLocation);\n    };\n    const getElement = location => location.fold(identity, identity, identity, identity);\n    const getName = location => location.fold(constant('before'), constant('start'), constant('end'), constant('after'));\n    const outside = location => location.fold(Location.before, Location.before, Location.after, Location.after);\n    const inside = location => location.fold(Location.start, Location.start, Location.end, Location.end);\n    const isEq = (location1, location2) => getName(location1) === getName(location2) && getElement(location1) === getElement(location2);\n    const betweenInlines = (forward, isInlineTarget, rootNode, from, to, location) => lift2(findRootInline(isInlineTarget, rootNode, from), findRootInline(isInlineTarget, rootNode, to), (fromInline, toInline) => {\n      if (fromInline !== toInline && hasSameParentBlock(rootNode, fromInline, toInline)) {\n        return Location.after(forward ? fromInline : toInline);\n      } else {\n        return location;\n      }\n    }).getOr(location);\n    const skipNoMovement = (fromLocation, toLocation) => fromLocation.fold(always, fromLocation => !isEq(fromLocation, toLocation));\n    const findLocationTraverse = (forward, isInlineTarget, rootNode, fromLocation, pos) => {\n      const from = normalizePosition(forward, pos);\n      const to = fromPosition(forward, rootNode, from).map(curry(normalizePosition, forward));\n      const location = to.fold(() => fromLocation.map(outside), to => readLocation(isInlineTarget, rootNode, to).map(curry(betweenInlines, forward, isInlineTarget, rootNode, from, to)).filter(curry(skipNoMovement, fromLocation)));\n      return location.filter(isValidLocation);\n    };\n    const findLocationSimple = (forward, location) => {\n      if (forward) {\n        return location.fold(compose(Optional.some, Location.start), Optional.none, compose(Optional.some, Location.after), Optional.none);\n      } else {\n        return location.fold(Optional.none, compose(Optional.some, Location.before), Optional.none, compose(Optional.some, Location.end));\n      }\n    };\n    const findLocation$1 = (forward, isInlineTarget, rootNode, pos) => {\n      const from = normalizePosition(forward, pos);\n      const fromLocation = readLocation(isInlineTarget, rootNode, from);\n      return readLocation(isInlineTarget, rootNode, from).bind(curry(findLocationSimple, forward)).orThunk(() => findLocationTraverse(forward, isInlineTarget, rootNode, fromLocation, pos));\n    };\n\n    const hasSelectionModifyApi = editor => {\n      return isFunction(editor.selection.getSel().modify);\n    };\n    const moveRel = (forward, selection, pos) => {\n      const delta = forward ? 1 : -1;\n      selection.setRng(CaretPosition(pos.container(), pos.offset() + delta).toRange());\n      selection.getSel().modify('move', forward ? 'forward' : 'backward', 'word');\n      return true;\n    };\n    const moveByWord = (forward, editor) => {\n      const rng = editor.selection.getRng();\n      const pos = forward ? CaretPosition.fromRangeEnd(rng) : CaretPosition.fromRangeStart(rng);\n      if (!hasSelectionModifyApi(editor)) {\n        return false;\n      } else if (forward && isBeforeInline(pos)) {\n        return moveRel(true, editor.selection, pos);\n      } else if (!forward && isAfterInline(pos)) {\n        return moveRel(false, editor.selection, pos);\n      } else {\n        return false;\n      }\n    };\n\n    var BreakType;\n    (function (BreakType) {\n      BreakType[BreakType['Br'] = 0] = 'Br';\n      BreakType[BreakType['Block'] = 1] = 'Block';\n      BreakType[BreakType['Wrap'] = 2] = 'Wrap';\n      BreakType[BreakType['Eol'] = 3] = 'Eol';\n    }(BreakType || (BreakType = {})));\n    const flip = (direction, positions) => direction === HDirection.Backwards ? reverse(positions) : positions;\n    const walk$1 = (direction, caretWalker, pos) => direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos);\n    const getBreakType = (scope, direction, currentPos, nextPos) => {\n      if (isBr$6(nextPos.getNode(direction === HDirection.Forwards))) {\n        return BreakType.Br;\n      } else if (isInSameBlock(currentPos, nextPos) === false) {\n        return BreakType.Block;\n      } else {\n        return BreakType.Wrap;\n      }\n    };\n    const getPositionsUntil = (predicate, direction, scope, start) => {\n      const caretWalker = CaretWalker(scope);\n      let currentPos = start;\n      const positions = [];\n      while (currentPos) {\n        const nextPos = walk$1(direction, caretWalker, currentPos);\n        if (!nextPos) {\n          break;\n        }\n        if (isBr$6(nextPos.getNode(false))) {\n          if (direction === HDirection.Forwards) {\n            return {\n              positions: flip(direction, positions).concat([nextPos]),\n              breakType: BreakType.Br,\n              breakAt: Optional.some(nextPos)\n            };\n          } else {\n            return {\n              positions: flip(direction, positions),\n              breakType: BreakType.Br,\n              breakAt: Optional.some(nextPos)\n            };\n          }\n        }\n        if (!nextPos.isVisible()) {\n          currentPos = nextPos;\n          continue;\n        }\n        if (predicate(currentPos, nextPos)) {\n          const breakType = getBreakType(scope, direction, currentPos, nextPos);\n          return {\n            positions: flip(direction, positions),\n            breakType,\n            breakAt: Optional.some(nextPos)\n          };\n        }\n        positions.push(nextPos);\n        currentPos = nextPos;\n      }\n      return {\n        positions: flip(direction, positions),\n        breakType: BreakType.Eol,\n        breakAt: Optional.none()\n      };\n    };\n    const getAdjacentLinePositions = (direction, getPositionsUntilBreak, scope, start) => getPositionsUntilBreak(scope, start).breakAt.map(pos => {\n      const positions = getPositionsUntilBreak(scope, pos).positions;\n      return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions);\n    }).getOr([]);\n    const findClosestHorizontalPositionFromPoint = (positions, x) => foldl(positions, (acc, newPos) => acc.fold(() => Optional.some(newPos), lastPos => lift2(head(lastPos.getClientRects()), head(newPos.getClientRects()), (lastRect, newRect) => {\n      const lastDist = Math.abs(x - lastRect.left);\n      const newDist = Math.abs(x - newRect.left);\n      return newDist <= lastDist ? newPos : lastPos;\n    }).or(acc)), Optional.none());\n    const findClosestHorizontalPosition = (positions, pos) => head(pos.getClientRects()).bind(targetRect => findClosestHorizontalPositionFromPoint(positions, targetRect.left));\n    const getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1);\n    const getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1);\n    const getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);\n    const getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);\n    const isAtFirstLine = (scope, pos) => getPositionsUntilPreviousLine(scope, pos).breakAt.isNone();\n    const isAtLastLine = (scope, pos) => getPositionsUntilNextLine(scope, pos).breakAt.isNone();\n    const getFirstLinePositions = scope => firstPositionIn(scope).map(pos => [pos].concat(getPositionsUntilNextLine(scope, pos).positions)).getOr([]);\n    const getLastLinePositions = scope => lastPositionIn(scope).map(pos => getPositionsUntilPreviousLine(scope, pos).positions.concat(pos)).getOr([]);\n    const getClosestPositionAbove = (scope, pos) => findClosestHorizontalPosition(getPositionsAbove(scope, pos), pos);\n    const getClosestPositionBelow = (scope, pos) => findClosestHorizontalPosition(getPositionsBelow(scope, pos), pos);\n\n    const isContentEditableFalse$4 = isContentEditableFalse$b;\n    const distanceToRectLeft$1 = (clientRect, clientX) => Math.abs(clientRect.left - clientX);\n    const distanceToRectRight$1 = (clientRect, clientX) => Math.abs(clientRect.right - clientX);\n    const isNodeClientRect = rect => hasNonNullableKey(rect, 'node');\n    const findClosestClientRect = (clientRects, clientX) => reduce(clientRects, (oldClientRect, clientRect) => {\n      const oldDistance = Math.min(distanceToRectLeft$1(oldClientRect, clientX), distanceToRectRight$1(oldClientRect, clientX));\n      const newDistance = Math.min(distanceToRectLeft$1(clientRect, clientX), distanceToRectRight$1(clientRect, clientX));\n      if (newDistance === oldDistance && isNodeClientRect(clientRect) && isContentEditableFalse$4(clientRect.node)) {\n        return clientRect;\n      }\n      if (newDistance < oldDistance) {\n        return clientRect;\n      }\n      return oldClientRect;\n    });\n\n    const getNodeClientRects = node => {\n      const toArrayWithNode = clientRects => {\n        return map$3(clientRects, rect => {\n          const clientRect = clone$1(rect);\n          clientRect.node = node;\n          return clientRect;\n        });\n      };\n      if (isElement$6(node)) {\n        return toArrayWithNode(node.getClientRects());\n      } else if (isText$a(node)) {\n        const rng = node.ownerDocument.createRange();\n        rng.setStart(node, 0);\n        rng.setEnd(node, node.data.length);\n        return toArrayWithNode(rng.getClientRects());\n      } else {\n        return [];\n      }\n    };\n    const getClientRects = nodes => bind$3(nodes, getNodeClientRects);\n\n    var VDirection;\n    (function (VDirection) {\n      VDirection[VDirection['Up'] = -1] = 'Up';\n      VDirection[VDirection['Down'] = 1] = 'Down';\n    }(VDirection || (VDirection = {})));\n    const findUntil = (direction, root, predicateFn, node) => {\n      let currentNode = node;\n      while (currentNode = findNode(currentNode, direction, isEditableCaretCandidate$1, root)) {\n        if (predicateFn(currentNode)) {\n          return;\n        }\n      }\n    };\n    const walkUntil = (direction, isAboveFn, isBeflowFn, root, predicateFn, caretPosition) => {\n      let line = 0;\n      const result = [];\n      const add = node => {\n        let clientRects = getClientRects([node]);\n        if (direction === -1) {\n          clientRects = clientRects.reverse();\n        }\n        for (let i = 0; i < clientRects.length; i++) {\n          const clientRect = clientRects[i];\n          if (isBeflowFn(clientRect, targetClientRect)) {\n            continue;\n          }\n          if (result.length > 0 && isAboveFn(clientRect, last$2(result))) {\n            line++;\n          }\n          clientRect.line = line;\n          if (predicateFn(clientRect)) {\n            return true;\n          }\n          result.push(clientRect);\n        }\n        return false;\n      };\n      const targetClientRect = last$2(caretPosition.getClientRects());\n      if (!targetClientRect) {\n        return result;\n      }\n      const node = caretPosition.getNode();\n      if (node) {\n        add(node);\n        findUntil(direction, root, add, node);\n      }\n      return result;\n    };\n    const aboveLineNumber = (lineNumber, clientRect) => clientRect.line > lineNumber;\n    const isLineNumber = (lineNumber, clientRect) => clientRect.line === lineNumber;\n    const upUntil = curry(walkUntil, VDirection.Up, isAbove$1, isBelow$1);\n    const downUntil = curry(walkUntil, VDirection.Down, isBelow$1, isAbove$1);\n    const getLastClientRect = caretPosition => {\n      return last$2(caretPosition.getClientRects());\n    };\n    const positionsUntil = (direction, root, predicateFn, node) => {\n      const caretWalker = CaretWalker(root);\n      let walkFn;\n      let isBelowFn;\n      let isAboveFn;\n      let caretPosition;\n      const result = [];\n      let line = 0;\n      if (direction === 1) {\n        walkFn = caretWalker.next;\n        isBelowFn = isBelow$1;\n        isAboveFn = isAbove$1;\n        caretPosition = CaretPosition.after(node);\n      } else {\n        walkFn = caretWalker.prev;\n        isBelowFn = isAbove$1;\n        isAboveFn = isBelow$1;\n        caretPosition = CaretPosition.before(node);\n      }\n      const targetClientRect = getLastClientRect(caretPosition);\n      do {\n        if (!caretPosition.isVisible()) {\n          continue;\n        }\n        const rect = getLastClientRect(caretPosition);\n        if (isAboveFn(rect, targetClientRect)) {\n          continue;\n        }\n        if (result.length > 0 && isBelowFn(rect, last$2(result))) {\n          line++;\n        }\n        const clientRect = clone$1(rect);\n        clientRect.position = caretPosition;\n        clientRect.line = line;\n        if (predicateFn(clientRect)) {\n          return result;\n        }\n        result.push(clientRect);\n      } while (caretPosition = walkFn(caretPosition));\n      return result;\n    };\n    const isAboveLine = lineNumber => clientRect => aboveLineNumber(lineNumber, clientRect);\n    const isLine = lineNumber => clientRect => isLineNumber(lineNumber, clientRect);\n\n    const moveToRange = (editor, rng) => {\n      editor.selection.setRng(rng);\n      scrollRangeIntoView(editor, editor.selection.getRng());\n    };\n    const renderRangeCaretOpt = (editor, range, scrollIntoView) => Optional.some(renderRangeCaret(editor, range, scrollIntoView));\n    const moveHorizontally = (editor, direction, range, isBefore, isAfter, isElement) => {\n      const forwards = direction === HDirection.Forwards;\n      const caretWalker = CaretWalker(editor.getBody());\n      const getNextPosFn = curry(getVisualCaretPosition, forwards ? caretWalker.next : caretWalker.prev);\n      const isBeforeFn = forwards ? isBefore : isAfter;\n      if (!range.collapsed) {\n        const node = getSelectedNode(range);\n        if (isElement(node)) {\n          return showCaret(direction, editor, node, direction === HDirection.Backwards, false);\n        } else if (isCefAtEdgeSelected(editor)) {\n          const newRange = range.cloneRange();\n          newRange.collapse(direction === HDirection.Backwards);\n          return Optional.from(newRange);\n        }\n      }\n      const caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\n      if (isBeforeFn(caretPosition)) {\n        return selectNode(editor, caretPosition.getNode(!forwards));\n      }\n      let nextCaretPosition = getNextPosFn(caretPosition);\n      const rangeIsInContainerBlock = isRangeInCaretContainerBlock(range);\n      if (!nextCaretPosition) {\n        return rangeIsInContainerBlock ? Optional.some(range) : Optional.none();\n      } else {\n        nextCaretPosition = normalizePosition(forwards, nextCaretPosition);\n      }\n      if (isBeforeFn(nextCaretPosition)) {\n        return showCaret(direction, editor, nextCaretPosition.getNode(!forwards), forwards, false);\n      }\n      const peekCaretPosition = getNextPosFn(nextCaretPosition);\n      if (peekCaretPosition && isBeforeFn(peekCaretPosition)) {\n        if (isMoveInsideSameBlock(nextCaretPosition, peekCaretPosition)) {\n          return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, false);\n        }\n      }\n      if (rangeIsInContainerBlock) {\n        return renderRangeCaretOpt(editor, nextCaretPosition.toRange(), false);\n      }\n      return Optional.none();\n    };\n    const moveVertically = (editor, direction, range, isBefore, isAfter, isElement) => {\n      const caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\n      const caretClientRect = last$2(caretPosition.getClientRects());\n      const forwards = direction === VDirection.Down;\n      const root = editor.getBody();\n      if (!caretClientRect) {\n        return Optional.none();\n      }\n      if (isCefAtEdgeSelected(editor)) {\n        const caretPosition = forwards ? CaretPosition.fromRangeEnd(range) : CaretPosition.fromRangeStart(range);\n        const getClosestFn = !forwards ? getClosestPositionAbove : getClosestPositionBelow;\n        return getClosestFn(root, caretPosition).orThunk(() => Optional.from(caretPosition)).map(pos => pos.toRange());\n      }\n      const walkerFn = forwards ? downUntil : upUntil;\n      const linePositions = walkerFn(root, isAboveLine(1), caretPosition);\n      const nextLinePositions = filter$5(linePositions, isLine(1));\n      const clientX = caretClientRect.left;\n      const nextLineRect = findClosestClientRect(nextLinePositions, clientX);\n      if (nextLineRect && isElement(nextLineRect.node)) {\n        const dist1 = Math.abs(clientX - nextLineRect.left);\n        const dist2 = Math.abs(clientX - nextLineRect.right);\n        return showCaret(direction, editor, nextLineRect.node, dist1 < dist2, false);\n      }\n      let currentNode;\n      if (isBefore(caretPosition)) {\n        currentNode = caretPosition.getNode();\n      } else if (isAfter(caretPosition)) {\n        currentNode = caretPosition.getNode(true);\n      } else {\n        currentNode = getSelectedNode(range);\n      }\n      if (currentNode) {\n        const caretPositions = positionsUntil(direction, root, isAboveLine(1), currentNode);\n        let closestNextLineRect = findClosestClientRect(filter$5(caretPositions, isLine(1)), clientX);\n        if (closestNextLineRect) {\n          return renderRangeCaretOpt(editor, closestNextLineRect.position.toRange(), false);\n        }\n        closestNextLineRect = last$2(filter$5(caretPositions, isLine(0)));\n        if (closestNextLineRect) {\n          return renderRangeCaretOpt(editor, closestNextLineRect.position.toRange(), false);\n        }\n      }\n      if (nextLinePositions.length === 0) {\n        return getLineEndPoint(editor, forwards).filter(forwards ? isAfter : isBefore).map(pos => renderRangeCaret(editor, pos.toRange(), false));\n      }\n      return Optional.none();\n    };\n    const getLineEndPoint = (editor, forward) => {\n      const rng = editor.selection.getRng();\n      const from = forward ? CaretPosition.fromRangeEnd(rng) : CaretPosition.fromRangeStart(rng);\n      const host = getEditingHost(from.container(), editor.getBody());\n      if (forward) {\n        const lineInfo = getPositionsUntilNextLine(host, from);\n        return last$3(lineInfo.positions);\n      } else {\n        const lineInfo = getPositionsUntilPreviousLine(host, from);\n        return head(lineInfo.positions);\n      }\n    };\n    const moveToLineEndPoint$3 = (editor, forward, isElementPosition) => getLineEndPoint(editor, forward).filter(isElementPosition).exists(pos => {\n      editor.selection.setRng(pos.toRange());\n      return true;\n    });\n\n    const setCaretPosition = (editor, pos) => {\n      const rng = editor.dom.createRng();\n      rng.setStart(pos.container(), pos.offset());\n      rng.setEnd(pos.container(), pos.offset());\n      editor.selection.setRng(rng);\n    };\n    const setSelected = (state, elm) => {\n      if (state) {\n        elm.setAttribute('data-mce-selected', 'inline-boundary');\n      } else {\n        elm.removeAttribute('data-mce-selected');\n      }\n    };\n    const renderCaretLocation = (editor, caret, location) => renderCaret(caret, location).map(pos => {\n      setCaretPosition(editor, pos);\n      return location;\n    });\n    const getPositionFromRange = (range, root, forward) => {\n      const start = CaretPosition.fromRangeStart(range);\n      if (range.collapsed) {\n        return start;\n      } else {\n        const end = CaretPosition.fromRangeEnd(range);\n        return forward ? prevPosition(root, end).getOr(end) : nextPosition(root, start).getOr(start);\n      }\n    };\n    const findLocation = (editor, caret, forward) => {\n      const rootNode = editor.getBody();\n      const from = getPositionFromRange(editor.selection.getRng(), rootNode, forward);\n      const isInlineTarget$1 = curry(isInlineTarget, editor);\n      const location = findLocation$1(forward, isInlineTarget$1, rootNode, from);\n      return location.bind(location => renderCaretLocation(editor, caret, location));\n    };\n    const toggleInlines = (isInlineTarget, dom, elms) => {\n      const inlineBoundaries = map$3(descendants(SugarElement.fromDom(dom.getRoot()), '*[data-mce-selected=\"inline-boundary\"]'), e => e.dom);\n      const selectedInlines = filter$5(inlineBoundaries, isInlineTarget);\n      const targetInlines = filter$5(elms, isInlineTarget);\n      each$e(difference(selectedInlines, targetInlines), curry(setSelected, false));\n      each$e(difference(targetInlines, selectedInlines), curry(setSelected, true));\n    };\n    const safeRemoveCaretContainer = (editor, caret) => {\n      const caretValue = caret.get();\n      if (editor.selection.isCollapsed() && !editor.composing && caretValue) {\n        const pos = CaretPosition.fromRangeStart(editor.selection.getRng());\n        if (CaretPosition.isTextPosition(pos) && !isAtZwsp(pos)) {\n          setCaretPosition(editor, removeAndReposition(caretValue, pos));\n          caret.set(null);\n        }\n      }\n    };\n    const renderInsideInlineCaret = (isInlineTarget, editor, caret, elms) => {\n      if (editor.selection.isCollapsed()) {\n        const inlines = filter$5(elms, isInlineTarget);\n        each$e(inlines, _inline => {\n          const pos = CaretPosition.fromRangeStart(editor.selection.getRng());\n          readLocation(isInlineTarget, editor.getBody(), pos).bind(location => renderCaretLocation(editor, caret, location));\n        });\n      }\n    };\n    const move$3 = (editor, caret, forward) => isInlineBoundariesEnabled(editor) ? findLocation(editor, caret, forward).isSome() : false;\n    const moveWord = (forward, editor, _caret) => isInlineBoundariesEnabled(editor) ? moveByWord(forward, editor) : false;\n    const setupSelectedState = editor => {\n      const caret = Cell(null);\n      const isInlineTarget$1 = curry(isInlineTarget, editor);\n      editor.on('NodeChange', e => {\n        if (isInlineBoundariesEnabled(editor)) {\n          toggleInlines(isInlineTarget$1, editor.dom, e.parents);\n          safeRemoveCaretContainer(editor, caret);\n          renderInsideInlineCaret(isInlineTarget$1, editor, caret, e.parents);\n        }\n      });\n      return caret;\n    };\n    const moveNextWord = curry(moveWord, true);\n    const movePrevWord = curry(moveWord, false);\n    const moveToLineEndPoint$2 = (editor, forward, caret) => {\n      if (isInlineBoundariesEnabled(editor)) {\n        const linePoint = getLineEndPoint(editor, forward).getOrThunk(() => {\n          const rng = editor.selection.getRng();\n          return forward ? CaretPosition.fromRangeEnd(rng) : CaretPosition.fromRangeStart(rng);\n        });\n        return readLocation(curry(isInlineTarget, editor), editor.getBody(), linePoint).exists(loc => {\n          const outsideLoc = outside(loc);\n          return renderCaret(caret, outsideLoc).exists(pos => {\n            setCaretPosition(editor, pos);\n            return true;\n          });\n        });\n      } else {\n        return false;\n      }\n    };\n\n    const rangeFromPositions = (from, to) => {\n      const range = document.createRange();\n      range.setStart(from.container(), from.offset());\n      range.setEnd(to.container(), to.offset());\n      return range;\n    };\n    const hasOnlyTwoOrLessPositionsLeft = elm => lift2(firstPositionIn(elm), lastPositionIn(elm), (firstPos, lastPos) => {\n      const normalizedFirstPos = normalizePosition(true, firstPos);\n      const normalizedLastPos = normalizePosition(false, lastPos);\n      return nextPosition(elm, normalizedFirstPos).forall(pos => pos.isEqual(normalizedLastPos));\n    }).getOr(true);\n    const setCaretLocation = (editor, caret) => location => renderCaret(caret, location).map(pos => () => setCaretPosition(editor, pos));\n    const deleteFromTo = (editor, caret, from, to) => {\n      const rootNode = editor.getBody();\n      const isInlineTarget$1 = curry(isInlineTarget, editor);\n      editor.undoManager.ignore(() => {\n        editor.selection.setRng(rangeFromPositions(from, to));\n        execNativeDeleteCommand(editor);\n        readLocation(isInlineTarget$1, rootNode, CaretPosition.fromRangeStart(editor.selection.getRng())).map(inside).bind(setCaretLocation(editor, caret)).each(call);\n      });\n      editor.nodeChanged();\n    };\n    const rescope = (rootNode, node) => {\n      const parentBlock = getParentBlock$3(node, rootNode);\n      return parentBlock ? parentBlock : rootNode;\n    };\n    const backspaceDeleteCollapsed = (editor, caret, forward, from) => {\n      const rootNode = rescope(editor.getBody(), from.container());\n      const isInlineTarget$1 = curry(isInlineTarget, editor);\n      const fromLocation = readLocation(isInlineTarget$1, rootNode, from);\n      const location = fromLocation.bind(location => {\n        if (forward) {\n          return location.fold(constant(Optional.some(inside(location))), Optional.none, constant(Optional.some(outside(location))), Optional.none);\n        } else {\n          return location.fold(Optional.none, constant(Optional.some(outside(location))), Optional.none, constant(Optional.some(inside(location))));\n        }\n      });\n      return location.map(setCaretLocation(editor, caret)).getOrThunk(() => {\n        const toPosition = navigate(forward, rootNode, from);\n        const toLocation = toPosition.bind(pos => readLocation(isInlineTarget$1, rootNode, pos));\n        return lift2(fromLocation, toLocation, () => findRootInline(isInlineTarget$1, rootNode, from).bind(elm => {\n          if (hasOnlyTwoOrLessPositionsLeft(elm)) {\n            return Optional.some(() => {\n              deleteElement$2(editor, forward, SugarElement.fromDom(elm));\n            });\n          } else {\n            return Optional.none();\n          }\n        })).getOrThunk(() => toLocation.bind(() => toPosition.map(to => {\n          return () => {\n            if (forward) {\n              deleteFromTo(editor, caret, from, to);\n            } else {\n              deleteFromTo(editor, caret, to, from);\n            }\n          };\n        })));\n      });\n    };\n    const backspaceDelete$4 = (editor, caret, forward) => {\n      if (editor.selection.isCollapsed() && isInlineBoundariesEnabled(editor)) {\n        const from = CaretPosition.fromRangeStart(editor.selection.getRng());\n        return backspaceDeleteCollapsed(editor, caret, forward, from);\n      }\n      return Optional.none();\n    };\n\n    const hasMultipleChildren = elm => childNodesCount(elm) > 1;\n    const getParentsUntil = (editor, pred) => {\n      const rootElm = SugarElement.fromDom(editor.getBody());\n      const startElm = SugarElement.fromDom(editor.selection.getStart());\n      const parents = parentsAndSelf(startElm, rootElm);\n      return findIndex$2(parents, pred).fold(constant(parents), index => parents.slice(0, index));\n    };\n    const hasOnlyOneChild = elm => childNodesCount(elm) === 1;\n    const getParentInlinesUntilMultichildInline = editor => getParentsUntil(editor, elm => editor.schema.isBlock(name(elm)) || hasMultipleChildren(elm));\n    const getParentInlines = editor => getParentsUntil(editor, el => editor.schema.isBlock(name(el)));\n    const getFormatNodes = (editor, parentInlines) => {\n      const isFormatElement$1 = curry(isFormatElement, editor);\n      return bind$3(parentInlines, elm => isFormatElement$1(elm) ? [elm.dom] : []);\n    };\n    const getFormatNodesAtStart = editor => {\n      const parentInlines = getParentInlines(editor);\n      return getFormatNodes(editor, parentInlines);\n    };\n    const deleteLastPosition = (forward, editor, target, parentInlines) => {\n      const formatNodes = getFormatNodes(editor, parentInlines);\n      if (formatNodes.length === 0) {\n        deleteElement$2(editor, forward, target);\n      } else {\n        const pos = replaceWithCaretFormat(target.dom, formatNodes);\n        editor.selection.setRng(pos.toRange());\n      }\n    };\n    const deleteCaret$1 = (editor, forward) => {\n      const parentInlines = filter$5(getParentInlinesUntilMultichildInline(editor), hasOnlyOneChild);\n      return last$3(parentInlines).bind(target => {\n        const fromPos = CaretPosition.fromRangeStart(editor.selection.getRng());\n        if (willDeleteLastPositionInElement(forward, fromPos, target.dom) && !isEmptyCaretFormatElement(target)) {\n          return Optional.some(() => deleteLastPosition(forward, editor, target, parentInlines));\n        } else {\n          return Optional.none();\n        }\n      });\n    };\n    const isBrInEmptyElement = (editor, elm) => {\n      const parentElm = elm.parentElement;\n      return isBr$6(elm) && !isNull(parentElm) && editor.dom.isEmpty(parentElm);\n    };\n    const isEmptyCaret = elm => isEmptyCaretFormatElement(SugarElement.fromDom(elm));\n    const createCaretFormatAtStart = (editor, formatNodes) => {\n      const startElm = editor.selection.getStart();\n      const pos = isBrInEmptyElement(editor, startElm) || isEmptyCaret(startElm) ? replaceWithCaretFormat(startElm, formatNodes) : createCaretFormatAtStart$1(editor.selection.getRng(), formatNodes);\n      editor.selection.setRng(pos.toRange());\n    };\n    const updateCaretFormat = (editor, updateFormats) => {\n      const missingFormats = difference(updateFormats, getFormatNodesAtStart(editor));\n      if (missingFormats.length > 0) {\n        createCaretFormatAtStart(editor, missingFormats);\n      }\n    };\n    const rangeStartsAtTextContainer = rng => isText$a(rng.startContainer);\n    const rangeStartsAtStartOfTextContainer = rng => rng.startOffset === 0 && rangeStartsAtTextContainer(rng);\n    const rangeStartParentIsFormatElement = (editor, rng) => {\n      const startParent = rng.startContainer.parentElement;\n      return !isNull(startParent) && isFormatElement(editor, SugarElement.fromDom(startParent));\n    };\n    const rangeStartAndEndHaveSameParent = rng => {\n      const startParent = rng.startContainer.parentNode;\n      const endParent = rng.endContainer.parentNode;\n      return !isNull(startParent) && !isNull(endParent) && startParent.isEqualNode(endParent);\n    };\n    const rangeEndsAtEndOfEndContainer = rng => {\n      const endContainer = rng.endContainer;\n      return rng.endOffset === (isText$a(endContainer) ? endContainer.length : endContainer.childNodes.length);\n    };\n    const rangeEndsAtEndOfStartContainer = rng => rangeStartAndEndHaveSameParent(rng) && rangeEndsAtEndOfEndContainer(rng);\n    const rangeEndsAfterEndOfStartContainer = rng => !rng.endContainer.isEqualNode(rng.commonAncestorContainer);\n    const rangeEndsAtOrAfterEndOfStartContainer = rng => rangeEndsAtEndOfStartContainer(rng) || rangeEndsAfterEndOfStartContainer(rng);\n    const requiresDeleteRangeOverride = editor => {\n      const rng = editor.selection.getRng();\n      return rangeStartsAtStartOfTextContainer(rng) && rangeStartParentIsFormatElement(editor, rng) && rangeEndsAtOrAfterEndOfStartContainer(rng);\n    };\n    const deleteRange$1 = editor => {\n      if (requiresDeleteRangeOverride(editor)) {\n        const formatNodes = getFormatNodesAtStart(editor);\n        return Optional.some(() => {\n          execNativeDeleteCommand(editor);\n          updateCaretFormat(editor, formatNodes);\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const backspaceDelete$3 = (editor, forward) => editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : deleteRange$1(editor);\n    const hasAncestorInlineCaret = (elm, schema) => ancestor$1(elm, node => isCaretNode(node.dom), el => schema.isBlock(name(el)));\n    const hasAncestorInlineCaretAtStart = editor => hasAncestorInlineCaret(SugarElement.fromDom(editor.selection.getStart()), editor.schema);\n    const requiresRefreshCaretOverride = editor => {\n      const rng = editor.selection.getRng();\n      return rng.collapsed && (rangeStartsAtTextContainer(rng) || editor.dom.isEmpty(rng.startContainer)) && !hasAncestorInlineCaretAtStart(editor);\n    };\n    const refreshCaret = editor => {\n      if (requiresRefreshCaretOverride(editor)) {\n        createCaretFormatAtStart(editor, []);\n      }\n      return true;\n    };\n\n    const deleteElement = (editor, forward, element) => {\n      if (isNonNullable(element)) {\n        return Optional.some(() => {\n          editor._selectionOverrides.hideFakeCaret();\n          deleteElement$2(editor, forward, SugarElement.fromDom(element));\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const deleteCaret = (editor, forward) => {\n      const isNearMedia = forward ? isBeforeMedia : isAfterMedia;\n      const direction = forward ? HDirection.Forwards : HDirection.Backwards;\n      const fromPos = getNormalizedRangeEndPoint(direction, editor.getBody(), editor.selection.getRng());\n      if (isNearMedia(fromPos)) {\n        return deleteElement(editor, forward, fromPos.getNode(!forward));\n      } else {\n        return Optional.from(normalizePosition(forward, fromPos)).filter(pos => isNearMedia(pos) && isMoveInsideSameBlock(fromPos, pos)).bind(pos => deleteElement(editor, forward, pos.getNode(!forward)));\n      }\n    };\n    const deleteRange = (editor, forward) => {\n      const selectedNode = editor.selection.getNode();\n      return isMedia$2(selectedNode) ? deleteElement(editor, forward, selectedNode) : Optional.none();\n    };\n    const backspaceDelete$2 = (editor, forward) => editor.selection.isCollapsed() ? deleteCaret(editor, forward) : deleteRange(editor, forward);\n\n    const isEditable = target => closest$4(target, elm => isContentEditableTrue$3(elm.dom) || isContentEditableFalse$b(elm.dom)).exists(elm => isContentEditableTrue$3(elm.dom));\n    const parseIndentValue = value => toInt(value !== null && value !== void 0 ? value : '').getOr(0);\n    const getIndentStyleName = (useMargin, element) => {\n      const indentStyleName = useMargin || isTable$1(element) ? 'margin' : 'padding';\n      const suffix = get$7(element, 'direction') === 'rtl' ? '-right' : '-left';\n      return indentStyleName + suffix;\n    };\n    const indentElement = (dom, command, useMargin, value, unit, element) => {\n      const indentStyleName = getIndentStyleName(useMargin, SugarElement.fromDom(element));\n      const parsedValue = parseIndentValue(dom.getStyle(element, indentStyleName));\n      if (command === 'outdent') {\n        const styleValue = Math.max(0, parsedValue - value);\n        dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : '');\n      } else {\n        const styleValue = parsedValue + value + unit;\n        dom.setStyle(element, indentStyleName, styleValue);\n      }\n    };\n    const validateBlocks = (editor, blocks) => forall(blocks, block => {\n      const indentStyleName = getIndentStyleName(shouldIndentUseMargin(editor), block);\n      const intentValue = getRaw(block, indentStyleName).map(parseIndentValue).getOr(0);\n      const contentEditable = editor.dom.getContentEditable(block.dom);\n      return contentEditable !== 'false' && intentValue > 0;\n    });\n    const canOutdent = editor => {\n      const blocks = getBlocksToIndent(editor);\n      return !editor.mode.isReadOnly() && (blocks.length > 1 || validateBlocks(editor, blocks));\n    };\n    const isListComponent = el => isList(el) || isListItem$1(el);\n    const parentIsListComponent = el => parent(el).exists(isListComponent);\n    const getBlocksToIndent = editor => filter$5(fromDom$1(editor.selection.getSelectedBlocks()), el => !isListComponent(el) && !parentIsListComponent(el) && isEditable(el));\n    const handle = (editor, command) => {\n      var _a, _b;\n      const {dom} = editor;\n      const indentation = getIndentation(editor);\n      const indentUnit = (_b = (_a = /[a-z%]+$/i.exec(indentation)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : 'px';\n      const indentValue = parseIndentValue(indentation);\n      const useMargin = shouldIndentUseMargin(editor);\n      each$e(getBlocksToIndent(editor), block => {\n        indentElement(dom, command, useMargin, indentValue, indentUnit, block.dom);\n      });\n    };\n    const indent = editor => handle(editor, 'indent');\n    const outdent = editor => handle(editor, 'outdent');\n\n    const backspaceDelete$1 = editor => {\n      if (editor.selection.isCollapsed() && canOutdent(editor)) {\n        const dom = editor.dom;\n        const rng = editor.selection.getRng();\n        const pos = CaretPosition.fromRangeStart(rng);\n        const block = dom.getParent(rng.startContainer, dom.isBlock);\n        if (block !== null && isAtStartOfBlock(SugarElement.fromDom(block), pos, editor.schema)) {\n          return Optional.some(() => outdent(editor));\n        }\n      }\n      return Optional.none();\n    };\n\n    const findAction = (editor, caret, forward) => findMap([\n      backspaceDelete$1,\n      backspaceDelete$6,\n      backspaceDelete$7,\n      (editor, forward) => backspaceDelete$4(editor, caret, forward),\n      backspaceDelete$9,\n      backspaceDelete$a,\n      backspaceDelete$5,\n      backspaceDelete$2,\n      backspaceDelete$8,\n      backspaceDelete$3\n    ], item => item(editor, forward)).filter(_ => editor.selection.isEditable());\n    const deleteCommand = (editor, caret) => {\n      const result = findAction(editor, caret, false);\n      result.fold(() => {\n        if (editor.selection.isEditable()) {\n          execNativeDeleteCommand(editor);\n          paddEmptyBody(editor);\n        }\n      }, call);\n    };\n    const forwardDeleteCommand = (editor, caret) => {\n      const result = findAction(editor, caret, true);\n      result.fold(() => {\n        if (editor.selection.isEditable()) {\n          execNativeForwardDeleteCommand(editor);\n        }\n      }, call);\n    };\n    const setup$q = (editor, caret) => {\n      editor.addCommand('delete', () => {\n        deleteCommand(editor, caret);\n      });\n      editor.addCommand('forwardDelete', () => {\n        forwardDeleteCommand(editor, caret);\n      });\n    };\n\n    const SIGNIFICANT_MOVE = 5;\n    const LONGPRESS_DELAY = 400;\n    const getTouch = event => {\n      if (event.touches === undefined || event.touches.length !== 1) {\n        return Optional.none();\n      }\n      return Optional.some(event.touches[0]);\n    };\n    const isFarEnough = (touch, data) => {\n      const distX = Math.abs(touch.clientX - data.x);\n      const distY = Math.abs(touch.clientY - data.y);\n      return distX > SIGNIFICANT_MOVE || distY > SIGNIFICANT_MOVE;\n    };\n    const setup$p = editor => {\n      const startData = value$2();\n      const longpressFired = Cell(false);\n      const debounceLongpress = last$1(e => {\n        editor.dispatch('longpress', {\n          ...e,\n          type: 'longpress'\n        });\n        longpressFired.set(true);\n      }, LONGPRESS_DELAY);\n      editor.on('touchstart', e => {\n        getTouch(e).each(touch => {\n          debounceLongpress.cancel();\n          const data = {\n            x: touch.clientX,\n            y: touch.clientY,\n            target: e.target\n          };\n          debounceLongpress.throttle(e);\n          longpressFired.set(false);\n          startData.set(data);\n        });\n      }, true);\n      editor.on('touchmove', e => {\n        debounceLongpress.cancel();\n        getTouch(e).each(touch => {\n          startData.on(data => {\n            if (isFarEnough(touch, data)) {\n              startData.clear();\n              longpressFired.set(false);\n              editor.dispatch('longpresscancel');\n            }\n          });\n        });\n      }, true);\n      editor.on('touchend touchcancel', e => {\n        debounceLongpress.cancel();\n        if (e.type === 'touchcancel') {\n          return;\n        }\n        startData.get().filter(data => data.target.isEqualNode(e.target)).each(() => {\n          if (longpressFired.get()) {\n            e.preventDefault();\n          } else {\n            editor.dispatch('tap', {\n              ...e,\n              type: 'tap'\n            });\n          }\n        });\n      }, true);\n    };\n\n    const isBlockElement = (blockElements, node) => has$2(blockElements, node.nodeName);\n    const isValidTarget = (schema, node) => {\n      if (isText$a(node)) {\n        return true;\n      } else if (isElement$6(node)) {\n        return !isBlockElement(schema.getBlockElements(), node) && !isBookmarkNode$1(node) && !isTransparentBlock(schema, node) && !isNonHtmlElementRoot(node);\n      } else {\n        return false;\n      }\n    };\n    const hasBlockParent = (blockElements, root, node) => {\n      return exists(parents(SugarElement.fromDom(node), SugarElement.fromDom(root)), elm => {\n        return isBlockElement(blockElements, elm.dom);\n      });\n    };\n    const shouldRemoveTextNode = (blockElements, node) => {\n      if (isText$a(node)) {\n        if (node.data.length === 0) {\n          return true;\n        } else if (/^\\s+$/.test(node.data)) {\n          return !node.nextSibling || isBlockElement(blockElements, node.nextSibling) || isNonHtmlElementRoot(node.nextSibling);\n        }\n      }\n      return false;\n    };\n    const createRootBlock = editor => editor.dom.create(getForcedRootBlock(editor), getForcedRootBlockAttrs(editor));\n    const addRootBlocks = editor => {\n      const dom = editor.dom, selection = editor.selection;\n      const schema = editor.schema;\n      const blockElements = schema.getBlockElements();\n      const startNode = selection.getStart();\n      const rootNode = editor.getBody();\n      let rootBlockNode;\n      let tempNode;\n      let wrapped = false;\n      const forcedRootBlock = getForcedRootBlock(editor);\n      if (!startNode || !isElement$6(startNode)) {\n        return;\n      }\n      const rootNodeName = rootNode.nodeName.toLowerCase();\n      if (!schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase()) || hasBlockParent(blockElements, rootNode, startNode)) {\n        return;\n      }\n      const rng = selection.getRng();\n      const {startContainer, startOffset, endContainer, endOffset} = rng;\n      const restoreSelection = hasFocus(editor);\n      let node = rootNode.firstChild;\n      while (node) {\n        if (isElement$6(node)) {\n          updateElement(schema, node);\n        }\n        if (isValidTarget(schema, node)) {\n          if (shouldRemoveTextNode(blockElements, node)) {\n            tempNode = node;\n            node = node.nextSibling;\n            dom.remove(tempNode);\n            continue;\n          }\n          if (!rootBlockNode) {\n            rootBlockNode = createRootBlock(editor);\n            rootNode.insertBefore(rootBlockNode, node);\n            wrapped = true;\n          }\n          tempNode = node;\n          node = node.nextSibling;\n          rootBlockNode.appendChild(tempNode);\n        } else {\n          rootBlockNode = null;\n          node = node.nextSibling;\n        }\n      }\n      if (wrapped && restoreSelection) {\n        rng.setStart(startContainer, startOffset);\n        rng.setEnd(endContainer, endOffset);\n        selection.setRng(rng);\n        editor.nodeChanged();\n      }\n    };\n    const insertEmptyLine = (editor, root, insertBlock) => {\n      const block = SugarElement.fromDom(createRootBlock(editor));\n      const br = createPaddingBr();\n      append$1(block, br);\n      insertBlock(root, block);\n      const rng = document.createRange();\n      rng.setStartBefore(br.dom);\n      rng.setEndBefore(br.dom);\n      return rng;\n    };\n    const setup$o = editor => {\n      editor.on('NodeChange', curry(addRootBlocks, editor));\n    };\n\n    const hasClass = checkClassName => node => (' ' + node.attr('class') + ' ').indexOf(checkClassName) !== -1;\n    const replaceMatchWithSpan = (editor, content, cls) => {\n      return function (match) {\n        const args = arguments, index = args[args.length - 2];\n        const prevChar = index > 0 ? content.charAt(index - 1) : '';\n        if (prevChar === '\"') {\n          return match;\n        }\n        if (prevChar === '>') {\n          const findStartTagIndex = content.lastIndexOf('<', index);\n          if (findStartTagIndex !== -1) {\n            const tagHtml = content.substring(findStartTagIndex, index);\n            if (tagHtml.indexOf('contenteditable=\"false\"') !== -1) {\n              return match;\n            }\n          }\n        }\n        return '<span class=\"' + cls + '\" data-mce-content=\"' + editor.dom.encode(args[0]) + '\">' + editor.dom.encode(typeof args[1] === 'string' ? args[1] : args[0]) + '</span>';\n      };\n    };\n    const convertRegExpsToNonEditable = (editor, nonEditableRegExps, e) => {\n      let i = nonEditableRegExps.length, content = e.content;\n      if (e.format === 'raw') {\n        return;\n      }\n      while (i--) {\n        content = content.replace(nonEditableRegExps[i], replaceMatchWithSpan(editor, content, getNonEditableClass(editor)));\n      }\n      e.content = content;\n    };\n    const isValidContent = (nonEditableRegExps, content) => {\n      return forall(nonEditableRegExps, re => {\n        const matches = content.match(re);\n        return matches !== null && matches[0].length === content.length;\n      });\n    };\n    const setup$n = editor => {\n      const contentEditableAttrName = 'contenteditable';\n      const editClass = ' ' + Tools.trim(getEditableClass(editor)) + ' ';\n      const nonEditClass = ' ' + Tools.trim(getNonEditableClass(editor)) + ' ';\n      const hasEditClass = hasClass(editClass);\n      const hasNonEditClass = hasClass(nonEditClass);\n      const nonEditableRegExps = getNonEditableRegExps(editor);\n      if (nonEditableRegExps.length > 0) {\n        editor.on('BeforeSetContent', e => {\n          convertRegExpsToNonEditable(editor, nonEditableRegExps, e);\n        });\n      }\n      editor.parser.addAttributeFilter('class', nodes => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          if (hasEditClass(node)) {\n            node.attr(contentEditableAttrName, 'true');\n          } else if (hasNonEditClass(node)) {\n            node.attr(contentEditableAttrName, 'false');\n          }\n        }\n      });\n      editor.serializer.addAttributeFilter(contentEditableAttrName, nodes => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          if (!hasEditClass(node) && !hasNonEditClass(node)) {\n            continue;\n          }\n          const content = node.attr('data-mce-content');\n          if (nonEditableRegExps.length > 0 && content) {\n            if (isValidContent(nonEditableRegExps, content)) {\n              node.name = '#text';\n              node.type = 3;\n              node.raw = true;\n              node.value = content;\n            } else {\n              node.remove();\n            }\n          } else {\n            node.attr(contentEditableAttrName, null);\n          }\n        }\n      });\n    };\n\n    const findBlockCaretContainer = editor => descendant$1(SugarElement.fromDom(editor.getBody()), '*[data-mce-caret]').map(elm => elm.dom).getOrNull();\n    const showBlockCaretContainer = (editor, blockCaretContainer) => {\n      if (blockCaretContainer.hasAttribute('data-mce-caret')) {\n        showCaretContainerBlock(blockCaretContainer);\n        editor.selection.setRng(editor.selection.getRng());\n        editor.selection.scrollIntoView(blockCaretContainer);\n      }\n    };\n    const handleBlockContainer = (editor, e) => {\n      const blockCaretContainer = findBlockCaretContainer(editor);\n      if (!blockCaretContainer) {\n        return;\n      }\n      if (e.type === 'compositionstart') {\n        e.preventDefault();\n        e.stopPropagation();\n        showBlockCaretContainer(editor, blockCaretContainer);\n        return;\n      }\n      if (hasContent(blockCaretContainer)) {\n        showBlockCaretContainer(editor, blockCaretContainer);\n        editor.undoManager.add();\n      }\n    };\n    const setup$m = editor => {\n      editor.on('keyup compositionstart', curry(handleBlockContainer, editor));\n    };\n\n    const isContentEditableFalse$3 = isContentEditableFalse$b;\n    const moveToCeFalseHorizontally = (direction, editor, range) => moveHorizontally(editor, direction, range, isBeforeContentEditableFalse, isAfterContentEditableFalse, isContentEditableFalse$3);\n    const moveToCeFalseVertically = (direction, editor, range) => {\n      const isBefore = caretPosition => isBeforeContentEditableFalse(caretPosition) || isBeforeTable(caretPosition);\n      const isAfter = caretPosition => isAfterContentEditableFalse(caretPosition) || isAfterTable(caretPosition);\n      return moveVertically(editor, direction, range, isBefore, isAfter, isContentEditableFalse$3);\n    };\n    const createTextBlock = editor => {\n      const textBlock = editor.dom.create(getForcedRootBlock(editor));\n      textBlock.innerHTML = '<br data-mce-bogus=\"1\">';\n      return textBlock;\n    };\n    const exitPreBlock = (editor, direction, range) => {\n      const caretWalker = CaretWalker(editor.getBody());\n      const getVisualCaretPosition$1 = curry(getVisualCaretPosition, direction === 1 ? caretWalker.next : caretWalker.prev);\n      if (range.collapsed) {\n        const pre = editor.dom.getParent(range.startContainer, 'PRE');\n        if (!pre) {\n          return;\n        }\n        const caretPos = getVisualCaretPosition$1(CaretPosition.fromRangeStart(range));\n        if (!caretPos) {\n          const newBlock = SugarElement.fromDom(createTextBlock(editor));\n          if (direction === 1) {\n            after$4(SugarElement.fromDom(pre), newBlock);\n          } else {\n            before$3(SugarElement.fromDom(pre), newBlock);\n          }\n          editor.selection.select(newBlock.dom, true);\n          editor.selection.collapse();\n        }\n      }\n    };\n    const getHorizontalRange = (editor, forward) => {\n      const direction = forward ? HDirection.Forwards : HDirection.Backwards;\n      const range = editor.selection.getRng();\n      return moveToCeFalseHorizontally(direction, editor, range).orThunk(() => {\n        exitPreBlock(editor, direction, range);\n        return Optional.none();\n      });\n    };\n    const getVerticalRange = (editor, down) => {\n      const direction = down ? 1 : -1;\n      const range = editor.selection.getRng();\n      return moveToCeFalseVertically(direction, editor, range).orThunk(() => {\n        exitPreBlock(editor, direction, range);\n        return Optional.none();\n      });\n    };\n    const flipDirection = (selection, forward) => {\n      const elm = forward ? selection.getEnd(true) : selection.getStart(true);\n      return isRtl(elm) ? !forward : forward;\n    };\n    const moveH$2 = (editor, forward) => getHorizontalRange(editor, flipDirection(editor.selection, forward)).exists(newRange => {\n      moveToRange(editor, newRange);\n      return true;\n    });\n    const moveV$4 = (editor, down) => getVerticalRange(editor, down).exists(newRange => {\n      moveToRange(editor, newRange);\n      return true;\n    });\n    const moveToLineEndPoint$1 = (editor, forward) => {\n      const isCefPosition = forward ? isAfterContentEditableFalse : isBeforeContentEditableFalse;\n      return moveToLineEndPoint$3(editor, forward, isCefPosition);\n    };\n    const selectToEndPoint = (editor, forward) => getEdgeCefPosition(editor, !forward).map(pos => {\n      const rng = pos.toRange();\n      const curRng = editor.selection.getRng();\n      if (forward) {\n        rng.setStart(curRng.startContainer, curRng.startOffset);\n      } else {\n        rng.setEnd(curRng.endContainer, curRng.endOffset);\n      }\n      return rng;\n    }).exists(rng => {\n      moveToRange(editor, rng);\n      return true;\n    });\n\n    const isTarget = node => contains$2(['figcaption'], name(node));\n    const getClosestTargetBlock = (pos, root, schema) => {\n      const isRoot = curry(eq, root);\n      return closest$4(SugarElement.fromDom(pos.container()), el => schema.isBlock(name(el)), isRoot).filter(isTarget);\n    };\n    const isAtFirstOrLastLine = (root, forward, pos) => forward ? isAtLastLine(root.dom, pos) : isAtFirstLine(root.dom, pos);\n    const moveCaretToNewEmptyLine = (editor, forward) => {\n      const root = SugarElement.fromDom(editor.getBody());\n      const pos = CaretPosition.fromRangeStart(editor.selection.getRng());\n      return getClosestTargetBlock(pos, root, editor.schema).exists(() => {\n        if (isAtFirstOrLastLine(root, forward, pos)) {\n          const insertFn = forward ? append$1 : prepend;\n          const rng = insertEmptyLine(editor, root, insertFn);\n          editor.selection.setRng(rng);\n          return true;\n        } else {\n          return false;\n        }\n      });\n    };\n    const moveV$3 = (editor, forward) => {\n      if (editor.selection.isCollapsed()) {\n        return moveCaretToNewEmptyLine(editor, forward);\n      } else {\n        return false;\n      }\n    };\n\n    const moveUp = (editor, details, summary) => {\n      const rng = editor.selection.getRng();\n      const pos = CaretPosition.fromRangeStart(rng);\n      const root = editor.getBody();\n      if (root.firstChild === details && isAtFirstLine(summary, pos)) {\n        editor.execCommand('InsertNewBlockBefore');\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const moveDown = (editor, details) => {\n      const rng = editor.selection.getRng();\n      const pos = CaretPosition.fromRangeStart(rng);\n      const root = editor.getBody();\n      if (root.lastChild === details && isAtLastLine(details, pos)) {\n        editor.execCommand('InsertNewBlockAfter');\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const move$2 = (editor, forward) => {\n      if (forward) {\n        return Optional.from(editor.dom.getParent(editor.selection.getNode(), 'details')).map(details => moveDown(editor, details)).getOr(false);\n      } else {\n        return Optional.from(editor.dom.getParent(editor.selection.getNode(), 'summary')).bind(summary => Optional.from(editor.dom.getParent(summary, 'details')).map(details => moveUp(editor, details, summary))).getOr(false);\n      }\n    };\n    const moveV$2 = (editor, forward) => move$2(editor, forward);\n\n    const baseKeyPattern = {\n      shiftKey: false,\n      altKey: false,\n      ctrlKey: false,\n      metaKey: false,\n      keyCode: 0\n    };\n    const defaultPatterns = patterns => map$3(patterns, pattern => ({\n      ...baseKeyPattern,\n      ...pattern\n    }));\n    const defaultDelayedPatterns = patterns => map$3(patterns, pattern => ({\n      ...baseKeyPattern,\n      ...pattern\n    }));\n    const matchesEvent = (pattern, evt) => evt.keyCode === pattern.keyCode && evt.shiftKey === pattern.shiftKey && evt.altKey === pattern.altKey && evt.ctrlKey === pattern.ctrlKey && evt.metaKey === pattern.metaKey;\n    const match$1 = (patterns, evt) => bind$3(defaultPatterns(patterns), pattern => matchesEvent(pattern, evt) ? [pattern] : []);\n    const matchDelayed = (patterns, evt) => bind$3(defaultDelayedPatterns(patterns), pattern => matchesEvent(pattern, evt) ? [pattern] : []);\n    const action = (f, ...x) => () => f.apply(null, x);\n    const execute = (patterns, evt) => find$2(match$1(patterns, evt), pattern => pattern.action());\n    const executeWithDelayedAction = (patterns, evt) => findMap(matchDelayed(patterns, evt), pattern => pattern.action());\n\n    const moveH$1 = (editor, forward) => {\n      const direction = forward ? HDirection.Forwards : HDirection.Backwards;\n      const range = editor.selection.getRng();\n      return moveHorizontally(editor, direction, range, isBeforeMedia, isAfterMedia, isMedia$2).exists(newRange => {\n        moveToRange(editor, newRange);\n        return true;\n      });\n    };\n    const moveV$1 = (editor, down) => {\n      const direction = down ? 1 : -1;\n      const range = editor.selection.getRng();\n      return moveVertically(editor, direction, range, isBeforeMedia, isAfterMedia, isMedia$2).exists(newRange => {\n        moveToRange(editor, newRange);\n        return true;\n      });\n    };\n    const moveToLineEndPoint = (editor, forward) => {\n      const isNearMedia = forward ? isAfterMedia : isBeforeMedia;\n      return moveToLineEndPoint$3(editor, forward, isNearMedia);\n    };\n\n    const adt = Adt.generate([\n      { none: ['current'] },\n      { first: ['current'] },\n      {\n        middle: [\n          'current',\n          'target'\n        ]\n      },\n      { last: ['current'] }\n    ]);\n    const none = current => adt.none(current);\n    const CellLocation = {\n      ...adt,\n      none\n    };\n\n    const firstLayer = (scope, selector) => {\n      return filterFirstLayer(scope, selector, always);\n    };\n    const filterFirstLayer = (scope, selector, predicate) => {\n      return bind$3(children$1(scope), x => {\n        if (is$1(x, selector)) {\n          return predicate(x) ? [x] : [];\n        } else {\n          return filterFirstLayer(x, selector, predicate);\n        }\n      });\n    };\n\n    const lookup$1 = (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$1(elm, 'table') || isRoot(elm);\n      return ancestor$3(element, tags.join(','), isRootOrUpperTable);\n    };\n    const cell = (element, isRoot) => lookup$1([\n      'td',\n      'th'\n    ], element, isRoot);\n    const cells = ancestor => firstLayer(ancestor, 'th,td');\n    const table = (element, isRoot) => closest$3(element, 'table', isRoot);\n\n    const walk = (all, current, index, direction, isEligible = always) => {\n      const forwards = direction === 1;\n      if (!forwards && index <= 0) {\n        return CellLocation.first(all[0]);\n      } else if (forwards && index >= all.length - 1) {\n        return CellLocation.last(all[all.length - 1]);\n      } else {\n        const newIndex = index + direction;\n        const elem = all[newIndex];\n        return isEligible(elem) ? CellLocation.middle(current, elem) : walk(all, current, newIndex, direction, isEligible);\n      }\n    };\n    const detect = (current, isRoot) => {\n      return table(current, isRoot).bind(table => {\n        const all = cells(table);\n        const index = findIndex$2(all, x => eq(current, x));\n        return index.map(index => ({\n          index,\n          all\n        }));\n      });\n    };\n    const next = (current, isEligible, isRoot) => {\n      const detection = detect(current, isRoot);\n      return detection.fold(() => {\n        return CellLocation.none(current);\n      }, info => {\n        return walk(info.all, current, info.index, 1, isEligible);\n      });\n    };\n    const prev = (current, isEligible, isRoot) => {\n      const detection = detect(current, isRoot);\n      return detection.fold(() => {\n        return CellLocation.none();\n      }, info => {\n        return walk(info.all, current, info.index, -1, isEligible);\n      });\n    };\n\n    const deflate = (rect, delta) => ({\n      left: rect.left - delta,\n      top: rect.top - delta,\n      right: rect.right + delta * 2,\n      bottom: rect.bottom + delta * 2,\n      width: rect.width + delta,\n      height: rect.height + delta\n    });\n    const getCorners = (getYAxisValue, tds) => bind$3(tds, td => {\n      const rect = deflate(clone$1(td.getBoundingClientRect()), -1);\n      return [\n        {\n          x: rect.left,\n          y: getYAxisValue(rect),\n          cell: td\n        },\n        {\n          x: rect.right,\n          y: getYAxisValue(rect),\n          cell: td\n        }\n      ];\n    });\n    const findClosestCorner = (corners, x, y) => foldl(corners, (acc, newCorner) => acc.fold(() => Optional.some(newCorner), oldCorner => {\n      const oldDist = Math.sqrt(Math.abs(oldCorner.x - x) + Math.abs(oldCorner.y - y));\n      const newDist = Math.sqrt(Math.abs(newCorner.x - x) + Math.abs(newCorner.y - y));\n      return Optional.some(newDist < oldDist ? newCorner : oldCorner);\n    }), Optional.none());\n    const getClosestCell = (getYAxisValue, isTargetCorner, table, x, y) => {\n      const cells = descendants(SugarElement.fromDom(table), 'td,th,caption').map(e => e.dom);\n      const corners = filter$5(getCorners(getYAxisValue, cells), corner => isTargetCorner(corner, y));\n      return findClosestCorner(corners, x, y).map(corner => corner.cell);\n    };\n    const getBottomValue = rect => rect.bottom;\n    const getTopValue = rect => rect.top;\n    const isAbove = (corner, y) => corner.y < y;\n    const isBelow = (corner, y) => corner.y > y;\n    const getClosestCellAbove = curry(getClosestCell, getBottomValue, isAbove);\n    const getClosestCellBelow = curry(getClosestCell, getTopValue, isBelow);\n    const findClosestPositionInAboveCell = (table, pos) => head(pos.getClientRects()).bind(rect => getClosestCellAbove(table, rect.left, rect.top)).bind(cell => findClosestHorizontalPosition(getLastLinePositions(cell), pos));\n    const findClosestPositionInBelowCell = (table, pos) => last$3(pos.getClientRects()).bind(rect => getClosestCellBelow(table, rect.left, rect.top)).bind(cell => findClosestHorizontalPosition(getFirstLinePositions(cell), pos));\n\n    const hasNextBreak = (getPositionsUntil, scope, lineInfo) => lineInfo.breakAt.exists(breakPos => getPositionsUntil(scope, breakPos).breakAt.isSome());\n    const startsWithWrapBreak = lineInfo => lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0;\n    const startsWithBrBreak = lineInfo => lineInfo.breakType === BreakType.Br && lineInfo.positions.length === 1;\n    const isAtTableCellLine = (getPositionsUntil, scope, pos) => {\n      const lineInfo = getPositionsUntil(scope, pos);\n      if (startsWithWrapBreak(lineInfo) || !isBr$6(pos.getNode()) && startsWithBrBreak(lineInfo)) {\n        return !hasNextBreak(getPositionsUntil, scope, lineInfo);\n      } else {\n        return lineInfo.breakAt.isNone();\n      }\n    };\n    const isAtFirstTableCellLine = curry(isAtTableCellLine, getPositionsUntilPreviousLine);\n    const isAtLastTableCellLine = curry(isAtTableCellLine, getPositionsUntilNextLine);\n    const isCaretAtStartOrEndOfTable = (forward, rng, table) => {\n      const caretPos = CaretPosition.fromRangeStart(rng);\n      return positionIn(!forward, table).exists(pos => pos.isEqual(caretPos));\n    };\n    const navigateHorizontally = (editor, forward, table, _td) => {\n      const rng = editor.selection.getRng();\n      const direction = forward ? 1 : -1;\n      if (isFakeCaretTableBrowser() && isCaretAtStartOrEndOfTable(forward, rng, table)) {\n        showCaret(direction, editor, table, !forward, false).each(newRng => {\n          moveToRange(editor, newRng);\n        });\n        return true;\n      }\n      return false;\n    };\n    const getClosestAbovePosition = (root, table, start) => findClosestPositionInAboveCell(table, start).orThunk(() => head(start.getClientRects()).bind(rect => findClosestHorizontalPositionFromPoint(getPositionsAbove(root, CaretPosition.before(table)), rect.left))).getOr(CaretPosition.before(table));\n    const getClosestBelowPosition = (root, table, start) => findClosestPositionInBelowCell(table, start).orThunk(() => head(start.getClientRects()).bind(rect => findClosestHorizontalPositionFromPoint(getPositionsBelow(root, CaretPosition.after(table)), rect.left))).getOr(CaretPosition.after(table));\n    const getTable = (previous, pos) => {\n      const node = pos.getNode(previous);\n      return isTable$2(node) ? Optional.some(node) : Optional.none();\n    };\n    const renderBlock = (down, editor, table) => {\n      editor.undoManager.transact(() => {\n        const insertFn = down ? after$4 : before$3;\n        const rng = insertEmptyLine(editor, SugarElement.fromDom(table), insertFn);\n        moveToRange(editor, rng);\n      });\n    };\n    const moveCaret = (editor, down, pos) => {\n      const table = down ? getTable(true, pos) : getTable(false, pos);\n      const last = down === false;\n      table.fold(() => moveToRange(editor, pos.toRange()), table => positionIn(last, editor.getBody()).filter(lastPos => lastPos.isEqual(pos)).fold(() => moveToRange(editor, pos.toRange()), _ => renderBlock(down, editor, table)));\n    };\n    const navigateVertically = (editor, down, table, td) => {\n      const rng = editor.selection.getRng();\n      const pos = CaretPosition.fromRangeStart(rng);\n      const root = editor.getBody();\n      if (!down && isAtFirstTableCellLine(td, pos)) {\n        const newPos = getClosestAbovePosition(root, table, pos);\n        moveCaret(editor, down, newPos);\n        return true;\n      } else if (down && isAtLastTableCellLine(td, pos)) {\n        const newPos = getClosestBelowPosition(root, table, pos);\n        moveCaret(editor, down, newPos);\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const move$1 = (editor, forward, mover) => Optional.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(td => Optional.from(editor.dom.getParent(td, 'table')).map(table => mover(editor, forward, table, td))).getOr(false);\n    const moveH = (editor, forward) => move$1(editor, forward, navigateHorizontally);\n    const moveV = (editor, forward) => move$1(editor, forward, navigateVertically);\n    const getCellFirstCursorPosition = cell => {\n      const selection = SimSelection.exact(cell, 0, cell, 0);\n      return toNative(selection);\n    };\n    const tabGo = (editor, isRoot, cell) => {\n      return cell.fold(Optional.none, Optional.none, (_current, next) => {\n        return first(next).map(cell => {\n          return getCellFirstCursorPosition(cell);\n        });\n      }, current => {\n        editor.execCommand('mceTableInsertRowAfter');\n        return tabForward(editor, isRoot, current);\n      });\n    };\n    const tabForward = (editor, isRoot, cell) => tabGo(editor, isRoot, next(cell, isEditable$2));\n    const tabBackward = (editor, isRoot, cell) => tabGo(editor, isRoot, prev(cell, isEditable$2));\n    const handleTab = (editor, forward) => {\n      const rootElements = [\n        'table',\n        'li',\n        'dl'\n      ];\n      const body = SugarElement.fromDom(editor.getBody());\n      const isRoot = element => {\n        const name$1 = name(element);\n        return eq(element, body) || contains$2(rootElements, name$1);\n      };\n      const rng = editor.selection.getRng();\n      const container = SugarElement.fromDom(!forward ? rng.startContainer : rng.endContainer);\n      return cell(container, isRoot).map(cell => {\n        table(cell, isRoot).each(table => {\n          editor.model.table.clearSelectedCells(table.dom);\n        });\n        editor.selection.collapse(!forward);\n        const navigation = !forward ? tabBackward : tabForward;\n        const rng = navigation(editor, isRoot, cell);\n        rng.each(range => {\n          editor.selection.setRng(range);\n        });\n        return true;\n      }).getOr(false);\n    };\n\n    const executeKeydownOverride$4 = (editor, caret, evt) => {\n      const isMac = Env.os.isMacOS() || Env.os.isiOS();\n      execute([\n        {\n          keyCode: VK.RIGHT,\n          action: action(moveH$2, editor, true)\n        },\n        {\n          keyCode: VK.LEFT,\n          action: action(moveH$2, editor, false)\n        },\n        {\n          keyCode: VK.UP,\n          action: action(moveV$4, editor, false)\n        },\n        {\n          keyCode: VK.DOWN,\n          action: action(moveV$4, editor, true)\n        },\n        ...isMac ? [\n          {\n            keyCode: VK.UP,\n            action: action(selectToEndPoint, editor, false),\n            metaKey: true,\n            shiftKey: true\n          },\n          {\n            keyCode: VK.DOWN,\n            action: action(selectToEndPoint, editor, true),\n            metaKey: true,\n            shiftKey: true\n          }\n        ] : [],\n        {\n          keyCode: VK.RIGHT,\n          action: action(moveH, editor, true)\n        },\n        {\n          keyCode: VK.LEFT,\n          action: action(moveH, editor, false)\n        },\n        {\n          keyCode: VK.UP,\n          action: action(moveV, editor, false)\n        },\n        {\n          keyCode: VK.DOWN,\n          action: action(moveV, editor, true)\n        },\n        {\n          keyCode: VK.UP,\n          action: action(moveV, editor, false)\n        },\n        {\n          keyCode: VK.UP,\n          action: action(moveV$2, editor, false)\n        },\n        {\n          keyCode: VK.DOWN,\n          action: action(moveV$2, editor, true)\n        },\n        {\n          keyCode: VK.RIGHT,\n          action: action(moveH$1, editor, true)\n        },\n        {\n          keyCode: VK.LEFT,\n          action: action(moveH$1, editor, false)\n        },\n        {\n          keyCode: VK.UP,\n          action: action(moveV$1, editor, false)\n        },\n        {\n          keyCode: VK.DOWN,\n          action: action(moveV$1, editor, true)\n        },\n        {\n          keyCode: VK.RIGHT,\n          action: action(move$3, editor, caret, true)\n        },\n        {\n          keyCode: VK.LEFT,\n          action: action(move$3, editor, caret, false)\n        },\n        {\n          keyCode: VK.RIGHT,\n          ctrlKey: !isMac,\n          altKey: isMac,\n          action: action(moveNextWord, editor, caret)\n        },\n        {\n          keyCode: VK.LEFT,\n          ctrlKey: !isMac,\n          altKey: isMac,\n          action: action(movePrevWord, editor, caret)\n        },\n        {\n          keyCode: VK.UP,\n          action: action(moveV$3, editor, false)\n        },\n        {\n          keyCode: VK.DOWN,\n          action: action(moveV$3, editor, true)\n        }\n      ], evt).each(_ => {\n        evt.preventDefault();\n      });\n    };\n    const setup$l = (editor, caret) => {\n      editor.on('keydown', evt => {\n        if (!evt.isDefaultPrevented()) {\n          executeKeydownOverride$4(editor, caret, evt);\n        }\n      });\n    };\n\n    const point = (container, offset) => ({\n      container,\n      offset\n    });\n\n    const DOM$7 = DOMUtils.DOM;\n    const alwaysNext = startNode => node => startNode === node ? -1 : 0;\n    const isBoundary = dom => node => dom.isBlock(node) || contains$2([\n      'BR',\n      'IMG',\n      'HR',\n      'INPUT'\n    ], node.nodeName) || dom.getContentEditable(node) === 'false';\n    const textBefore = (node, offset, rootNode) => {\n      if (isText$a(node) && offset >= 0) {\n        return Optional.some(point(node, offset));\n      } else {\n        const textSeeker = TextSeeker(DOM$7);\n        return Optional.from(textSeeker.backwards(node, offset, alwaysNext(node), rootNode)).map(prev => point(prev.container, prev.container.data.length));\n      }\n    };\n    const textAfter = (node, offset, rootNode) => {\n      if (isText$a(node) && offset >= node.length) {\n        return Optional.some(point(node, offset));\n      } else {\n        const textSeeker = TextSeeker(DOM$7);\n        return Optional.from(textSeeker.forwards(node, offset, alwaysNext(node), rootNode)).map(prev => point(prev.container, 0));\n      }\n    };\n    const scanLeft = (node, offset, rootNode) => {\n      if (!isText$a(node)) {\n        return Optional.none();\n      }\n      const text = node.data;\n      if (offset >= 0 && offset <= text.length) {\n        return Optional.some(point(node, offset));\n      } else {\n        const textSeeker = TextSeeker(DOM$7);\n        return Optional.from(textSeeker.backwards(node, offset, alwaysNext(node), rootNode)).bind(prev => {\n          const prevText = prev.container.data;\n          return scanLeft(prev.container, offset + prevText.length, rootNode);\n        });\n      }\n    };\n    const scanRight = (node, offset, rootNode) => {\n      if (!isText$a(node)) {\n        return Optional.none();\n      }\n      const text = node.data;\n      if (offset <= text.length) {\n        return Optional.some(point(node, offset));\n      } else {\n        const textSeeker = TextSeeker(DOM$7);\n        return Optional.from(textSeeker.forwards(node, offset, alwaysNext(node), rootNode)).bind(next => scanRight(next.container, offset - text.length, rootNode));\n      }\n    };\n    const repeatLeft = (dom, node, offset, process, rootNode) => {\n      const search = TextSeeker(dom, isBoundary(dom));\n      return Optional.from(search.backwards(node, offset, process, rootNode));\n    };\n\n    const isValidTextRange = rng => rng.collapsed && isText$a(rng.startContainer);\n    const getText = rng => trim$2(rng.toString().replace(/\\u00A0/g, ' '));\n    const isWhitespace = chr => chr !== '' && ' \\xA0\\f\\n\\r\\t\\x0B'.indexOf(chr) !== -1;\n\n    const stripTrigger = (text, trigger) => text.substring(trigger.length);\n    const findTrigger = (text, index, trigger) => {\n      let i;\n      const firstChar = trigger.charAt(0);\n      for (i = index - 1; i >= 0; i--) {\n        const char = text.charAt(i);\n        if (isWhitespace(char)) {\n          return Optional.none();\n        }\n        if (firstChar === char && contains$1(text, trigger, i, index)) {\n          break;\n        }\n      }\n      return Optional.some(i);\n    };\n    const findStart = (dom, initRange, trigger, minChars = 0) => {\n      if (!isValidTextRange(initRange)) {\n        return Optional.none();\n      }\n      const buffer = {\n        text: '',\n        offset: 0\n      };\n      const findTriggerIndex = (element, offset, text) => {\n        buffer.text = text + buffer.text;\n        buffer.offset += offset;\n        return findTrigger(buffer.text, buffer.offset, trigger).getOr(offset);\n      };\n      const root = dom.getParent(initRange.startContainer, dom.isBlock) || dom.getRoot();\n      return repeatLeft(dom, initRange.startContainer, initRange.startOffset, findTriggerIndex, root).bind(spot => {\n        const range = initRange.cloneRange();\n        range.setStart(spot.container, spot.offset);\n        range.setEnd(initRange.endContainer, initRange.endOffset);\n        if (range.collapsed) {\n          return Optional.none();\n        }\n        const text = getText(range);\n        const triggerIndex = text.lastIndexOf(trigger);\n        if (triggerIndex !== 0 || stripTrigger(text, trigger).length < minChars) {\n          return Optional.none();\n        } else {\n          return Optional.some({\n            text: stripTrigger(text, trigger),\n            range,\n            trigger\n          });\n        }\n      });\n    };\n    const getContext = (dom, initRange, trigger, minChars = 0) => detect$1(SugarElement.fromDom(initRange.startContainer)).fold(() => findStart(dom, initRange, trigger, minChars), elm => {\n      const range = dom.createRng();\n      range.selectNode(elm.dom);\n      const text = getText(range);\n      return Optional.some({\n        range,\n        text: stripTrigger(text, trigger),\n        trigger\n      });\n    });\n\n    const isText$1 = node => node.nodeType === TEXT;\n    const isElement = node => node.nodeType === ELEMENT;\n    const toLast = node => {\n      if (isText$1(node)) {\n        return point(node, node.data.length);\n      } else {\n        const children = node.childNodes;\n        return children.length > 0 ? toLast(children[children.length - 1]) : point(node, children.length);\n      }\n    };\n    const toLeaf = (node, offset) => {\n      const children = node.childNodes;\n      if (children.length > 0 && offset < children.length) {\n        return toLeaf(children[offset], 0);\n      } else if (children.length > 0 && isElement(node) && children.length === offset) {\n        return toLast(children[children.length - 1]);\n      } else {\n        return point(node, offset);\n      }\n    };\n\n    const isPreviousCharContent = (dom, leaf) => {\n      var _a;\n      const root = (_a = dom.getParent(leaf.container, dom.isBlock)) !== null && _a !== void 0 ? _a : dom.getRoot();\n      return repeatLeft(dom, leaf.container, leaf.offset, (_element, offset) => offset === 0 ? -1 : offset, root).filter(spot => {\n        const char = spot.container.data.charAt(spot.offset - 1);\n        return !isWhitespace(char);\n      }).isSome();\n    };\n    const isStartOfWord = dom => rng => {\n      const leaf = toLeaf(rng.startContainer, rng.startOffset);\n      return !isPreviousCharContent(dom, leaf);\n    };\n    const getTriggerContext = (dom, initRange, database) => findMap(database.triggers, trigger => getContext(dom, initRange, trigger));\n    const lookup = (editor, getDatabase) => {\n      const database = getDatabase();\n      const rng = editor.selection.getRng();\n      return getTriggerContext(editor.dom, rng, database).bind(context => lookupWithContext(editor, getDatabase, context));\n    };\n    const lookupWithContext = (editor, getDatabase, context, fetchOptions = {}) => {\n      var _a;\n      const database = getDatabase();\n      const rng = editor.selection.getRng();\n      const startText = (_a = rng.startContainer.nodeValue) !== null && _a !== void 0 ? _a : '';\n      const autocompleters = filter$5(database.lookupByTrigger(context.trigger), autocompleter => context.text.length >= autocompleter.minChars && autocompleter.matches.getOrThunk(() => isStartOfWord(editor.dom))(context.range, startText, context.text));\n      if (autocompleters.length === 0) {\n        return Optional.none();\n      }\n      const lookupData = Promise.all(map$3(autocompleters, ac => {\n        const fetchResult = ac.fetch(context.text, ac.maxResults, fetchOptions);\n        return fetchResult.then(results => ({\n          matchText: context.text,\n          items: results,\n          columns: ac.columns,\n          onAction: ac.onAction,\n          highlightOn: ac.highlightOn\n        }));\n      }));\n      return Optional.some({\n        lookupData,\n        context\n      });\n    };\n\n    var SimpleResultType;\n    (function (SimpleResultType) {\n      SimpleResultType[SimpleResultType['Error'] = 0] = 'Error';\n      SimpleResultType[SimpleResultType['Value'] = 1] = 'Value';\n    }(SimpleResultType || (SimpleResultType = {})));\n    const fold$1 = (res, onError, onValue) => res.stype === SimpleResultType.Error ? onError(res.serror) : onValue(res.svalue);\n    const partition = results => {\n      const values = [];\n      const errors = [];\n      each$e(results, obj => {\n        fold$1(obj, err => errors.push(err), val => values.push(val));\n      });\n      return {\n        values,\n        errors\n      };\n    };\n    const mapError = (res, f) => {\n      if (res.stype === SimpleResultType.Error) {\n        return {\n          stype: SimpleResultType.Error,\n          serror: f(res.serror)\n        };\n      } else {\n        return res;\n      }\n    };\n    const map = (res, f) => {\n      if (res.stype === SimpleResultType.Value) {\n        return {\n          stype: SimpleResultType.Value,\n          svalue: f(res.svalue)\n        };\n      } else {\n        return res;\n      }\n    };\n    const bind$1 = (res, f) => {\n      if (res.stype === SimpleResultType.Value) {\n        return f(res.svalue);\n      } else {\n        return res;\n      }\n    };\n    const bindError = (res, f) => {\n      if (res.stype === SimpleResultType.Error) {\n        return f(res.serror);\n      } else {\n        return res;\n      }\n    };\n    const svalue = v => ({\n      stype: SimpleResultType.Value,\n      svalue: v\n    });\n    const serror = e => ({\n      stype: SimpleResultType.Error,\n      serror: e\n    });\n    const toResult = res => fold$1(res, Result.error, Result.value);\n    const fromResult = res => res.fold(serror, svalue);\n    const SimpleResult = {\n      fromResult,\n      toResult,\n      svalue,\n      partition,\n      serror,\n      bind: bind$1,\n      bindError,\n      map,\n      mapError,\n      fold: fold$1\n    };\n\n    const formatObj = input => {\n      return isObject(input) && keys(input).length > 100 ? ' removed due to size' : JSON.stringify(input, null, 2);\n    };\n    const formatErrors = errors => {\n      const es = errors.length > 10 ? errors.slice(0, 10).concat([{\n          path: [],\n          getErrorInfo: constant('... (only showing first ten failures)')\n        }]) : errors;\n      return map$3(es, e => {\n        return 'Failed path: (' + e.path.join(' > ') + ')\\n' + e.getErrorInfo();\n      });\n    };\n\n    const nu = (path, getErrorInfo) => {\n      return SimpleResult.serror([{\n          path,\n          getErrorInfo\n        }]);\n    };\n    const missingRequired = (path, key, obj) => nu(path, () => 'Could not find valid *required* value for \"' + key + '\" in ' + formatObj(obj));\n    const missingKey = (path, key) => nu(path, () => 'Choice schema did not contain choice key: \"' + key + '\"');\n    const missingBranch = (path, branches, branch) => nu(path, () => 'The chosen schema: \"' + branch + '\" did not exist in branches: ' + formatObj(branches));\n    const custom = (path, err) => nu(path, constant(err));\n\n    const chooseFrom = (path, input, branches, ch) => {\n      const fields = get$a(branches, ch);\n      return fields.fold(() => missingBranch(path, branches, ch), vp => vp.extract(path.concat(['branch: ' + ch]), input));\n    };\n    const choose$1 = (key, branches) => {\n      const extract = (path, input) => {\n        const choice = get$a(input, key);\n        return choice.fold(() => missingKey(path, key), chosen => chooseFrom(path, input, branches, chosen));\n      };\n      const toString = () => 'chooseOn(' + key + '). Possible values: ' + keys(branches);\n      return {\n        extract,\n        toString\n      };\n    };\n\n    const shallow = (old, nu) => {\n      return nu;\n    };\n    const deep = (old, nu) => {\n      const bothObjects = isPlainObject(old) && isPlainObject(nu);\n      return bothObjects ? deepMerge(old, nu) : nu;\n    };\n    const baseMerge = merger => {\n      return (...objects) => {\n        if (objects.length === 0) {\n          throw new Error(`Can't merge zero objects`);\n        }\n        const ret = {};\n        for (let j = 0; j < objects.length; j++) {\n          const curObject = objects[j];\n          for (const key in curObject) {\n            if (has$2(curObject, key)) {\n              ret[key] = merger(ret[key], curObject[key]);\n            }\n          }\n        }\n        return ret;\n      };\n    };\n    const deepMerge = baseMerge(deep);\n    const merge = baseMerge(shallow);\n\n    const required = () => ({\n      tag: 'required',\n      process: {}\n    });\n    const defaultedThunk = fallbackThunk => ({\n      tag: 'defaultedThunk',\n      process: fallbackThunk\n    });\n    const defaulted$1 = fallback => defaultedThunk(constant(fallback));\n    const asOption = () => ({\n      tag: 'option',\n      process: {}\n    });\n\n    const mergeValues = (values, base) => values.length > 0 ? SimpleResult.svalue(deepMerge(base, merge.apply(undefined, values))) : SimpleResult.svalue(base);\n    const mergeErrors = errors => compose(SimpleResult.serror, flatten)(errors);\n    const consolidateObj = (objects, base) => {\n      const partition = SimpleResult.partition(objects);\n      return partition.errors.length > 0 ? mergeErrors(partition.errors) : mergeValues(partition.values, base);\n    };\n    const consolidateArr = objects => {\n      const partitions = SimpleResult.partition(objects);\n      return partitions.errors.length > 0 ? mergeErrors(partitions.errors) : SimpleResult.svalue(partitions.values);\n    };\n    const ResultCombine = {\n      consolidateObj,\n      consolidateArr\n    };\n\n    const field$1 = (key, newKey, presence, prop) => ({\n      tag: 'field',\n      key,\n      newKey,\n      presence,\n      prop\n    });\n    const customField$1 = (newKey, instantiator) => ({\n      tag: 'custom',\n      newKey,\n      instantiator\n    });\n    const fold = (value, ifField, ifCustom) => {\n      switch (value.tag) {\n      case 'field':\n        return ifField(value.key, value.newKey, value.presence, value.prop);\n      case 'custom':\n        return ifCustom(value.newKey, value.instantiator);\n      }\n    };\n\n    const value = validator => {\n      const extract = (path, val) => {\n        return SimpleResult.bindError(validator(val), err => custom(path, err));\n      };\n      const toString = constant('val');\n      return {\n        extract,\n        toString\n      };\n    };\n    const anyValue$1 = value(SimpleResult.svalue);\n\n    const requiredAccess = (path, obj, key, bundle) => get$a(obj, key).fold(() => missingRequired(path, key, obj), bundle);\n    const fallbackAccess = (obj, key, fallback, bundle) => {\n      const v = get$a(obj, key).getOrThunk(() => fallback(obj));\n      return bundle(v);\n    };\n    const optionAccess = (obj, key, bundle) => bundle(get$a(obj, key));\n    const optionDefaultedAccess = (obj, key, fallback, bundle) => {\n      const opt = get$a(obj, key).map(val => val === true ? fallback(obj) : val);\n      return bundle(opt);\n    };\n    const extractField = (field, path, obj, key, prop) => {\n      const bundle = av => prop.extract(path.concat([key]), av);\n      const bundleAsOption = optValue => optValue.fold(() => SimpleResult.svalue(Optional.none()), ov => {\n        const result = prop.extract(path.concat([key]), ov);\n        return SimpleResult.map(result, Optional.some);\n      });\n      switch (field.tag) {\n      case 'required':\n        return requiredAccess(path, obj, key, bundle);\n      case 'defaultedThunk':\n        return fallbackAccess(obj, key, field.process, bundle);\n      case 'option':\n        return optionAccess(obj, key, bundleAsOption);\n      case 'defaultedOptionThunk':\n        return optionDefaultedAccess(obj, key, field.process, bundleAsOption);\n      case 'mergeWithThunk': {\n          return fallbackAccess(obj, key, constant({}), v => {\n            const result = deepMerge(field.process(obj), v);\n            return bundle(result);\n          });\n        }\n      }\n    };\n    const extractFields = (path, obj, fields) => {\n      const success = {};\n      const errors = [];\n      for (const field of fields) {\n        fold(field, (key, newKey, presence, prop) => {\n          const result = extractField(presence, path, obj, key, prop);\n          SimpleResult.fold(result, err => {\n            errors.push(...err);\n          }, res => {\n            success[newKey] = res;\n          });\n        }, (newKey, instantiator) => {\n          success[newKey] = instantiator(obj);\n        });\n      }\n      return errors.length > 0 ? SimpleResult.serror(errors) : SimpleResult.svalue(success);\n    };\n    const objOf = values => {\n      const extract = (path, o) => extractFields(path, o, values);\n      const toString = () => {\n        const fieldStrings = map$3(values, value => fold(value, (key, _okey, _presence, prop) => key + ' -> ' + prop.toString(), (newKey, _instantiator) => 'state(' + newKey + ')'));\n        return 'obj{\\n' + fieldStrings.join('\\n') + '}';\n      };\n      return {\n        extract,\n        toString\n      };\n    };\n    const arrOf = prop => {\n      const extract = (path, array) => {\n        const results = map$3(array, (a, i) => prop.extract(path.concat(['[' + i + ']']), a));\n        return ResultCombine.consolidateArr(results);\n      };\n      const toString = () => 'array(' + prop.toString() + ')';\n      return {\n        extract,\n        toString\n      };\n    };\n\n    const valueOf = validator => value(v => validator(v).fold(SimpleResult.serror, SimpleResult.svalue));\n    const extractValue = (label, prop, obj) => {\n      const res = prop.extract([label], obj);\n      return SimpleResult.mapError(res, errs => ({\n        input: obj,\n        errors: errs\n      }));\n    };\n    const asRaw = (label, prop, obj) => SimpleResult.toResult(extractValue(label, prop, obj));\n    const formatError = errInfo => {\n      return 'Errors: \\n' + formatErrors(errInfo.errors).join('\\n') + '\\n\\nInput object: ' + formatObj(errInfo.input);\n    };\n    const choose = (key, branches) => choose$1(key, map$2(branches, objOf));\n\n    const anyValue = constant(anyValue$1);\n    const typedValue = (validator, expectedType) => value(a => {\n      const actualType = typeof a;\n      return validator(a) ? SimpleResult.svalue(a) : SimpleResult.serror(`Expected type: ${ expectedType } but got: ${ actualType }`);\n    });\n    const number = typedValue(isNumber, 'number');\n    const string = typedValue(isString, 'string');\n    const boolean = typedValue(isBoolean, 'boolean');\n    const functionProcessor = typedValue(isFunction, 'function');\n\n    const field = field$1;\n    const customField = customField$1;\n    const validateEnum = values => valueOf(value => contains$2(values, value) ? Result.value(value) : Result.error(`Unsupported value: \"${ value }\", choose one of \"${ values.join(', ') }\".`));\n    const requiredOf = (key, schema) => field(key, key, required(), schema);\n    const requiredString = key => requiredOf(key, string);\n    const requiredFunction = key => requiredOf(key, functionProcessor);\n    const requiredArrayOf = (key, schema) => field(key, key, required(), arrOf(schema));\n    const optionOf = (key, schema) => field(key, key, asOption(), schema);\n    const optionString = key => optionOf(key, string);\n    const optionFunction = key => optionOf(key, functionProcessor);\n    const defaulted = (key, fallback) => field(key, key, defaulted$1(fallback), anyValue());\n    const defaultedOf = (key, fallback, schema) => field(key, key, defaulted$1(fallback), schema);\n    const defaultedNumber = (key, fallback) => defaultedOf(key, fallback, number);\n    const defaultedString = (key, fallback) => defaultedOf(key, fallback, string);\n    const defaultedStringEnum = (key, fallback, values) => defaultedOf(key, fallback, validateEnum(values));\n    const defaultedBoolean = (key, fallback) => defaultedOf(key, fallback, boolean);\n    const defaultedFunction = (key, fallback) => defaultedOf(key, fallback, functionProcessor);\n    const defaultedArrayOf = (key, fallback, schema) => defaultedOf(key, fallback, arrOf(schema));\n\n    const type = requiredString('type');\n    const fetch$1 = requiredFunction('fetch');\n    const onAction = requiredFunction('onAction');\n    const onSetup = defaultedFunction('onSetup', () => noop);\n    const optionalText = optionString('text');\n    const optionalIcon = optionString('icon');\n    const optionalTooltip = optionString('tooltip');\n    const optionalLabel = optionString('label');\n    const active = defaultedBoolean('active', false);\n    const enabled = defaultedBoolean('enabled', true);\n    const primary = defaultedBoolean('primary', false);\n    const defaultedColumns = num => defaulted('columns', num);\n    const defaultedType = type => defaultedString('type', type);\n\n    const autocompleterSchema = objOf([\n      type,\n      requiredString('trigger'),\n      defaultedNumber('minChars', 1),\n      defaultedColumns(1),\n      defaultedNumber('maxResults', 10),\n      optionFunction('matches'),\n      fetch$1,\n      onAction,\n      defaultedArrayOf('highlightOn', [], string)\n    ]);\n    const createAutocompleter = spec => asRaw('Autocompleter', autocompleterSchema, {\n      trigger: spec.ch,\n      ...spec\n    });\n\n    const baseToolbarButtonFields = [\n      enabled,\n      optionalTooltip,\n      optionalIcon,\n      optionalText,\n      onSetup\n    ];\n\n    const baseToolbarToggleButtonFields = [active].concat(baseToolbarButtonFields);\n\n    const contextBarFields = [\n      defaultedFunction('predicate', never),\n      defaultedStringEnum('scope', 'node', [\n        'node',\n        'editor'\n      ]),\n      defaultedStringEnum('position', 'selection', [\n        'node',\n        'selection',\n        'line'\n      ])\n    ];\n\n    const contextButtonFields = baseToolbarButtonFields.concat([\n      defaultedType('contextformbutton'),\n      primary,\n      onAction,\n      customField('original', identity)\n    ]);\n    const contextToggleButtonFields = baseToolbarToggleButtonFields.concat([\n      defaultedType('contextformbutton'),\n      primary,\n      onAction,\n      customField('original', identity)\n    ]);\n    const launchButtonFields = baseToolbarButtonFields.concat([defaultedType('contextformbutton')]);\n    const launchToggleButtonFields = baseToolbarToggleButtonFields.concat([defaultedType('contextformtogglebutton')]);\n    const toggleOrNormal = choose('type', {\n      contextformbutton: contextButtonFields,\n      contextformtogglebutton: contextToggleButtonFields\n    });\n    objOf([\n      defaultedType('contextform'),\n      defaultedFunction('initValue', constant('')),\n      optionalLabel,\n      requiredArrayOf('commands', toggleOrNormal),\n      optionOf('launch', choose('type', {\n        contextformbutton: launchButtonFields,\n        contextformtogglebutton: launchToggleButtonFields\n      }))\n    ].concat(contextBarFields));\n\n    const register$2 = editor => {\n      const popups = editor.ui.registry.getAll().popups;\n      const dataset = map$2(popups, popup => createAutocompleter(popup).fold(err => {\n        throw new Error(formatError(err));\n      }, identity));\n      const triggers = stringArray(mapToArray(dataset, v => v.trigger));\n      const datasetValues = values(dataset);\n      const lookupByTrigger = trigger => filter$5(datasetValues, dv => dv.trigger === trigger);\n      return {\n        dataset,\n        triggers,\n        lookupByTrigger\n      };\n    };\n\n    const setupEditorInput = (editor, api) => {\n      const update = last$1(api.load, 50);\n      editor.on('keypress compositionend', e => {\n        if (e.which === 27) {\n          return;\n        }\n        update.throttle();\n      });\n      editor.on('keydown', e => {\n        const keyCode = e.which;\n        if (keyCode === 8) {\n          update.throttle();\n        } else if (keyCode === 27) {\n          api.cancelIfNecessary();\n        }\n      });\n      editor.on('remove', update.cancel);\n    };\n    const setup$k = editor => {\n      const activeAutocompleter = value$2();\n      const uiActive = Cell(false);\n      const isActive = activeAutocompleter.isSet;\n      const cancelIfNecessary = () => {\n        if (isActive()) {\n          removeAutocompleterDecoration(editor);\n          fireAutocompleterEnd(editor);\n          uiActive.set(false);\n          activeAutocompleter.clear();\n        }\n      };\n      const commenceIfNecessary = context => {\n        if (!isActive()) {\n          addAutocompleterDecoration(editor, context.range);\n          activeAutocompleter.set({\n            trigger: context.trigger,\n            matchLength: context.text.length\n          });\n        }\n      };\n      const getAutocompleters = cached(() => register$2(editor));\n      const doLookup = fetchOptions => activeAutocompleter.get().map(ac => getContext(editor.dom, editor.selection.getRng(), ac.trigger).bind(newContext => lookupWithContext(editor, getAutocompleters, newContext, fetchOptions))).getOrThunk(() => lookup(editor, getAutocompleters));\n      const load = fetchOptions => {\n        doLookup(fetchOptions).fold(cancelIfNecessary, lookupInfo => {\n          commenceIfNecessary(lookupInfo.context);\n          lookupInfo.lookupData.then(lookupData => {\n            activeAutocompleter.get().map(ac => {\n              const context = lookupInfo.context;\n              if (ac.trigger === context.trigger) {\n                if (context.text.length - ac.matchLength >= 10) {\n                  cancelIfNecessary();\n                } else {\n                  activeAutocompleter.set({\n                    ...ac,\n                    matchLength: context.text.length\n                  });\n                  if (uiActive.get()) {\n                    fireAutocompleterUpdate(editor, { lookupData });\n                  } else {\n                    uiActive.set(true);\n                    fireAutocompleterStart(editor, { lookupData });\n                  }\n                }\n              }\n            });\n          });\n        });\n      };\n      editor.addCommand('mceAutocompleterReload', (_ui, value) => {\n        const fetchOptions = isObject(value) ? value.fetchOptions : {};\n        load(fetchOptions);\n      });\n      editor.addCommand('mceAutocompleterClose', cancelIfNecessary);\n      setupEditorInput(editor, {\n        cancelIfNecessary,\n        load\n      });\n    };\n\n    const browser$1 = detect$2().browser;\n    const isSafari = browser$1.isSafari();\n    const emptyNodeContents = node => fillWithPaddingBr(SugarElement.fromDom(node));\n    const isEntireNodeSelected = (rng, node) => {\n      var _a;\n      return rng.startOffset === 0 && rng.endOffset === ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.length);\n    };\n    const getParentDetailsElementAtPos = (dom, pos) => Optional.from(dom.getParent(pos.container(), 'details'));\n    const isInDetailsElement = (dom, pos) => getParentDetailsElementAtPos(dom, pos).isSome();\n    const getDetailsElements = (dom, rng) => {\n      const startDetails = Optional.from(dom.getParent(rng.startContainer, 'details'));\n      const endDetails = Optional.from(dom.getParent(rng.endContainer, 'details'));\n      if (startDetails.isSome() || endDetails.isSome()) {\n        const startSummary = startDetails.bind(details => Optional.from(dom.select('summary', details)[0]));\n        return Optional.some({\n          startSummary,\n          startDetails,\n          endDetails\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const isCaretInTheBeginningOf = (caretPos, element) => firstPositionIn(element).exists(pos => pos.isEqual(caretPos));\n    const isCaretInTheEndOf = (caretPos, element) => {\n      return lastPositionIn(element).exists(pos => {\n        if (isBr$6(pos.getNode())) {\n          return prevPosition(element, pos).exists(pos2 => pos2.isEqual(caretPos)) || pos.isEqual(caretPos);\n        } else {\n          return pos.isEqual(caretPos);\n        }\n      });\n    };\n    const isCaretAtStartOfSummary = (caretPos, detailsElements) => detailsElements.startSummary.exists(summary => isCaretInTheBeginningOf(caretPos, summary));\n    const isCaretAtEndOfSummary = (caretPos, detailsElements) => detailsElements.startSummary.exists(summary => isCaretInTheEndOf(caretPos, summary));\n    const isCaretInFirstPositionInBody = (caretPos, detailsElements) => detailsElements.startDetails.exists(details => prevPosition(details, caretPos).forall(pos => detailsElements.startSummary.exists(summary => !summary.contains(caretPos.container()) && summary.contains(pos.container()))));\n    const isCaretInLastPositionInBody = (root, caretPos, detailsElements) => detailsElements.startDetails.exists(details => nextPosition(root, caretPos).forall(pos => !details.contains(pos.container())));\n    const setCaretToPosition = (editor, position) => {\n      const node = position.getNode();\n      if (!isUndefined(node)) {\n        editor.selection.setCursorLocation(node, position.offset());\n      }\n    };\n    const moveCaretToDetailsPos = (editor, pos, forward) => {\n      const details = editor.dom.getParent(pos.container(), 'details');\n      if (details && !details.open) {\n        const summary = editor.dom.select('summary', details)[0];\n        if (summary) {\n          const newPos = forward ? firstPositionIn(summary) : lastPositionIn(summary);\n          newPos.each(pos => setCaretToPosition(editor, pos));\n        }\n      } else {\n        setCaretToPosition(editor, pos);\n      }\n    };\n    const isPartialDelete = (rng, detailsElements) => {\n      const containsStart = element => element.contains(rng.startContainer);\n      const containsEnd = element => element.contains(rng.endContainer);\n      const startInSummary = detailsElements.startSummary.exists(containsStart);\n      const endInSummary = detailsElements.startSummary.exists(containsEnd);\n      const isPartiallySelectedDetailsElements = detailsElements.startDetails.forall(startDetails => detailsElements.endDetails.forall(endDetails => startDetails !== endDetails));\n      const isInPartiallySelectedSummary = (startInSummary || endInSummary) && !(startInSummary && endInSummary);\n      return isInPartiallySelectedSummary || isPartiallySelectedDetailsElements;\n    };\n    const shouldPreventDeleteIntoDetails = (editor, forward, granularity) => {\n      const {dom, selection} = editor;\n      const root = editor.getBody();\n      if (granularity === 'character') {\n        const caretPos = CaretPosition.fromRangeStart(selection.getRng());\n        const parentBlock = dom.getParent(caretPos.container(), dom.isBlock);\n        const parentDetailsAtCaret = getParentDetailsElementAtPos(dom, caretPos);\n        const inEmptyParentBlock = parentBlock && dom.isEmpty(parentBlock);\n        const isFirstBlock = isNull(parentBlock === null || parentBlock === void 0 ? void 0 : parentBlock.previousSibling);\n        const isLastBlock = isNull(parentBlock === null || parentBlock === void 0 ? void 0 : parentBlock.nextSibling);\n        if (inEmptyParentBlock) {\n          const firstOrLast = forward ? isLastBlock : isFirstBlock;\n          if (firstOrLast) {\n            const isBeforeAfterDetails = navigate(!forward, root, caretPos).exists(pos => {\n              return isInDetailsElement(dom, pos) && !equals(parentDetailsAtCaret, getParentDetailsElementAtPos(dom, pos));\n            });\n            if (isBeforeAfterDetails) {\n              return true;\n            }\n          }\n        }\n        return navigate(forward, root, caretPos).fold(never, pos => {\n          const parentDetailsAtNewPos = getParentDetailsElementAtPos(dom, pos);\n          if (isInDetailsElement(dom, pos) && !equals(parentDetailsAtCaret, parentDetailsAtNewPos)) {\n            if (!forward) {\n              moveCaretToDetailsPos(editor, pos, false);\n            }\n            if (parentBlock && inEmptyParentBlock) {\n              if (forward && isFirstBlock) {\n                return true;\n              } else if (!forward && isLastBlock) {\n                return true;\n              }\n              moveCaretToDetailsPos(editor, pos, forward);\n              editor.dom.remove(parentBlock);\n            }\n            return true;\n          } else {\n            return false;\n          }\n        });\n      } else {\n        return false;\n      }\n    };\n    const shouldPreventDeleteSummaryAction = (editor, detailElements, forward, granularity) => {\n      const selection = editor.selection;\n      const rng = selection.getRng();\n      const caretPos = CaretPosition.fromRangeStart(rng);\n      const root = editor.getBody();\n      if (granularity === 'selection') {\n        return isPartialDelete(rng, detailElements);\n      } else if (forward) {\n        return isCaretAtEndOfSummary(caretPos, detailElements) || isCaretInLastPositionInBody(root, caretPos, detailElements);\n      } else {\n        return isCaretAtStartOfSummary(caretPos, detailElements) || isCaretInFirstPositionInBody(caretPos, detailElements);\n      }\n    };\n    const shouldPreventDeleteAction = (editor, forward, granularity) => getDetailsElements(editor.dom, editor.selection.getRng()).fold(() => shouldPreventDeleteIntoDetails(editor, forward, granularity), detailsElements => shouldPreventDeleteSummaryAction(editor, detailsElements, forward, granularity) || shouldPreventDeleteIntoDetails(editor, forward, granularity));\n    const handleDeleteActionSafari = (editor, forward, granularity) => {\n      const selection = editor.selection;\n      const node = selection.getNode();\n      const rng = selection.getRng();\n      const caretPos = CaretPosition.fromRangeStart(rng);\n      if (isSummary$1(node)) {\n        if (granularity === 'selection' && isEntireNodeSelected(rng, node) || willDeleteLastPositionInElement(forward, caretPos, node)) {\n          emptyNodeContents(node);\n        } else {\n          editor.undoManager.transact(() => {\n            const sel = selection.getSel();\n            let {anchorNode, anchorOffset, focusNode, focusOffset} = sel !== null && sel !== void 0 ? sel : {};\n            const applySelection = () => {\n              if (isNonNullable(anchorNode) && isNonNullable(anchorOffset) && isNonNullable(focusNode) && isNonNullable(focusOffset)) {\n                sel === null || sel === void 0 ? void 0 : sel.setBaseAndExtent(anchorNode, anchorOffset, focusNode, focusOffset);\n              }\n            };\n            const updateSelection = () => {\n              anchorNode = sel === null || sel === void 0 ? void 0 : sel.anchorNode;\n              anchorOffset = sel === null || sel === void 0 ? void 0 : sel.anchorOffset;\n              focusNode = sel === null || sel === void 0 ? void 0 : sel.focusNode;\n              focusOffset = sel === null || sel === void 0 ? void 0 : sel.focusOffset;\n            };\n            const appendAllChildNodes = (from, to) => {\n              each$e(from.childNodes, child => {\n                if (isNode(child)) {\n                  to.appendChild(child);\n                }\n              });\n            };\n            const container = editor.dom.create('span', { 'data-mce-bogus': '1' });\n            appendAllChildNodes(node, container);\n            node.appendChild(container);\n            applySelection();\n            if (granularity === 'word' || granularity === 'line') {\n              sel === null || sel === void 0 ? void 0 : sel.modify('extend', forward ? 'right' : 'left', granularity);\n            }\n            if (!selection.isCollapsed() && isEntireNodeSelected(selection.getRng(), container)) {\n              emptyNodeContents(node);\n            } else {\n              editor.execCommand(forward ? 'ForwardDelete' : 'Delete');\n              updateSelection();\n              appendAllChildNodes(container, node);\n              applySelection();\n            }\n            editor.dom.remove(container);\n          });\n        }\n        return true;\n      } else {\n        return false;\n      }\n    };\n    const backspaceDelete = (editor, forward, granularity) => shouldPreventDeleteAction(editor, forward, granularity) || isSafari && handleDeleteActionSafari(editor, forward, granularity) ? Optional.some(noop) : Optional.none();\n\n    const createAndFireInputEvent = eventType => (editor, inputType, specifics = {}) => {\n      const target = editor.getBody();\n      const overrides = {\n        bubbles: true,\n        composed: true,\n        data: null,\n        isComposing: false,\n        detail: 0,\n        view: null,\n        target,\n        currentTarget: target,\n        eventPhase: Event.AT_TARGET,\n        originalTarget: target,\n        explicitOriginalTarget: target,\n        isTrusted: false,\n        srcElement: target,\n        cancelable: false,\n        preventDefault: noop,\n        inputType\n      };\n      const input = clone$3(new InputEvent(eventType));\n      return editor.dispatch(eventType, {\n        ...input,\n        ...overrides,\n        ...specifics\n      });\n    };\n    const fireInputEvent = createAndFireInputEvent('input');\n    const fireBeforeInputEvent = createAndFireInputEvent('beforeinput');\n\n    const platform$2 = detect$2();\n    const os = platform$2.os;\n    const isMacOSOriOS = os.isMacOS() || os.isiOS();\n    const browser = platform$2.browser;\n    const isFirefox = browser.isFirefox();\n    const executeKeydownOverride$3 = (editor, caret, evt) => {\n      const inputType = evt.keyCode === VK.BACKSPACE ? 'deleteContentBackward' : 'deleteContentForward';\n      const isCollapsed = editor.selection.isCollapsed();\n      const unmodifiedGranularity = isCollapsed ? 'character' : 'selection';\n      const getModifiedGranularity = isWord => {\n        if (isCollapsed) {\n          return isWord ? 'word' : 'line';\n        } else {\n          return 'selection';\n        }\n      };\n      executeWithDelayedAction([\n        {\n          keyCode: VK.BACKSPACE,\n          action: action(backspaceDelete$1, editor)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: action(backspaceDelete$6, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: action(backspaceDelete$6, editor, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: action(backspaceDelete$7, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: action(backspaceDelete$7, editor, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: action(backspaceDelete$4, editor, caret, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: action(backspaceDelete$4, editor, caret, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: action(backspaceDelete$a, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: action(backspaceDelete$a, editor, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: action(backspaceDelete, editor, false, unmodifiedGranularity)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: action(backspaceDelete, editor, true, unmodifiedGranularity)\n        },\n        ...isMacOSOriOS ? [\n          {\n            keyCode: VK.BACKSPACE,\n            altKey: true,\n            action: action(backspaceDelete, editor, false, getModifiedGranularity(true))\n          },\n          {\n            keyCode: VK.DELETE,\n            altKey: true,\n            action: action(backspaceDelete, editor, true, getModifiedGranularity(true))\n          },\n          {\n            keyCode: VK.BACKSPACE,\n            metaKey: true,\n            action: action(backspaceDelete, editor, false, getModifiedGranularity(false))\n          }\n        ] : [\n          {\n            keyCode: VK.BACKSPACE,\n            ctrlKey: true,\n            action: action(backspaceDelete, editor, false, getModifiedGranularity(true))\n          },\n          {\n            keyCode: VK.DELETE,\n            ctrlKey: true,\n            action: action(backspaceDelete, editor, true, getModifiedGranularity(true))\n          }\n        ],\n        {\n          keyCode: VK.BACKSPACE,\n          action: action(backspaceDelete$5, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: action(backspaceDelete$5, editor, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: action(backspaceDelete$2, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: action(backspaceDelete$2, editor, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: action(backspaceDelete$8, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: action(backspaceDelete$8, editor, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: action(backspaceDelete$9, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: action(backspaceDelete$9, editor, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: action(backspaceDelete$3, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: action(backspaceDelete$3, editor, true)\n        }\n      ], evt).filter(_ => editor.selection.isEditable()).each(applyAction => {\n        evt.preventDefault();\n        const beforeInput = fireBeforeInputEvent(editor, inputType);\n        if (!beforeInput.isDefaultPrevented()) {\n          applyAction();\n          fireInputEvent(editor, inputType);\n        }\n      });\n    };\n    const executeKeyupOverride = (editor, evt, isBackspaceKeydown) => execute([\n      {\n        keyCode: VK.BACKSPACE,\n        action: action(paddEmptyElement, editor)\n      },\n      {\n        keyCode: VK.DELETE,\n        action: action(paddEmptyElement, editor)\n      },\n      ...isMacOSOriOS ? [\n        {\n          keyCode: VK.BACKSPACE,\n          altKey: true,\n          action: action(refreshCaret, editor)\n        },\n        {\n          keyCode: VK.DELETE,\n          altKey: true,\n          action: action(refreshCaret, editor)\n        },\n        ...isBackspaceKeydown ? [{\n            keyCode: isFirefox ? 224 : 91,\n            action: action(refreshCaret, editor)\n          }] : []\n      ] : [\n        {\n          keyCode: VK.BACKSPACE,\n          ctrlKey: true,\n          action: action(refreshCaret, editor)\n        },\n        {\n          keyCode: VK.DELETE,\n          ctrlKey: true,\n          action: action(refreshCaret, editor)\n        }\n      ]\n    ], evt);\n    const setup$j = (editor, caret) => {\n      let isBackspaceKeydown = false;\n      editor.on('keydown', evt => {\n        isBackspaceKeydown = evt.keyCode === VK.BACKSPACE;\n        if (!evt.isDefaultPrevented()) {\n          executeKeydownOverride$3(editor, caret, evt);\n        }\n      });\n      editor.on('keyup', evt => {\n        if (!evt.isDefaultPrevented()) {\n          executeKeyupOverride(editor, evt, isBackspaceKeydown);\n        }\n        isBackspaceKeydown = false;\n      });\n    };\n\n    const firstNonWhiteSpaceNodeSibling = node => {\n      while (node) {\n        if (isElement$6(node) || isText$a(node) && node.data && /[\\r\\n\\s]/.test(node.data)) {\n          return node;\n        }\n        node = node.nextSibling;\n      }\n      return null;\n    };\n    const moveToCaretPosition = (editor, root) => {\n      const dom = editor.dom;\n      const moveCaretBeforeOnEnterElementsMap = editor.schema.getMoveCaretBeforeOnEnterElements();\n      if (!root) {\n        return;\n      }\n      if (/^(LI|DT|DD)$/.test(root.nodeName)) {\n        const firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild);\n        if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) {\n          root.insertBefore(dom.doc.createTextNode(nbsp), root.firstChild);\n        }\n      }\n      const rng = dom.createRng();\n      root.normalize();\n      if (root.hasChildNodes()) {\n        const walker = new DomTreeWalker(root, root);\n        let lastNode = root;\n        let node;\n        while (node = walker.current()) {\n          if (isText$a(node)) {\n            rng.setStart(node, 0);\n            rng.setEnd(node, 0);\n            break;\n          }\n          if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) {\n            rng.setStartBefore(node);\n            rng.setEndBefore(node);\n            break;\n          }\n          lastNode = node;\n          node = walker.next();\n        }\n        if (!node) {\n          rng.setStart(lastNode, 0);\n          rng.setEnd(lastNode, 0);\n        }\n      } else {\n        if (isBr$6(root)) {\n          if (root.nextSibling && dom.isBlock(root.nextSibling)) {\n            rng.setStartBefore(root);\n            rng.setEndBefore(root);\n          } else {\n            rng.setStartAfter(root);\n            rng.setEndAfter(root);\n          }\n        } else {\n          rng.setStart(root, 0);\n          rng.setEnd(root, 0);\n        }\n      }\n      editor.selection.setRng(rng);\n      scrollRangeIntoView(editor, rng);\n    };\n    const getEditableRoot = (dom, node) => {\n      const root = dom.getRoot();\n      let editableRoot;\n      let parent = node;\n      while (parent !== root && parent && dom.getContentEditable(parent) !== 'false') {\n        if (dom.getContentEditable(parent) === 'true') {\n          editableRoot = parent;\n          break;\n        }\n        parent = parent.parentNode;\n      }\n      return parent !== root ? editableRoot : root;\n    };\n    const getParentBlock$1 = editor => {\n      return Optional.from(editor.dom.getParent(editor.selection.getStart(true), editor.dom.isBlock));\n    };\n    const getParentBlockName = editor => {\n      return getParentBlock$1(editor).fold(constant(''), parentBlock => {\n        return parentBlock.nodeName.toUpperCase();\n      });\n    };\n    const isListItemParentBlock = editor => {\n      return getParentBlock$1(editor).filter(elm => {\n        return isListItem$1(SugarElement.fromDom(elm));\n      }).isSome();\n    };\n    const emptyBlock = elm => {\n      elm.innerHTML = '<br data-mce-bogus=\"1\">';\n    };\n    const applyAttributes = (editor, node, forcedRootBlockAttrs) => {\n      const dom = editor.dom;\n      Optional.from(forcedRootBlockAttrs.style).map(dom.parseStyle).each(attrStyles => {\n        const currentStyles = getAllRaw(SugarElement.fromDom(node));\n        const newStyles = {\n          ...currentStyles,\n          ...attrStyles\n        };\n        dom.setStyles(node, newStyles);\n      });\n      const attrClassesOpt = Optional.from(forcedRootBlockAttrs.class).map(attrClasses => attrClasses.split(/\\s+/));\n      const currentClassesOpt = Optional.from(node.className).map(currentClasses => filter$5(currentClasses.split(/\\s+/), clazz => clazz !== ''));\n      lift2(attrClassesOpt, currentClassesOpt, (attrClasses, currentClasses) => {\n        const filteredClasses = filter$5(currentClasses, clazz => !contains$2(attrClasses, clazz));\n        const newClasses = [\n          ...attrClasses,\n          ...filteredClasses\n        ];\n        dom.setAttrib(node, 'class', newClasses.join(' '));\n      });\n      const appliedAttrs = [\n        'style',\n        'class'\n      ];\n      const remainingAttrs = filter$4(forcedRootBlockAttrs, (_, attrs) => !contains$2(appliedAttrs, attrs));\n      dom.setAttribs(node, remainingAttrs);\n    };\n    const setForcedBlockAttrs = (editor, node) => {\n      const forcedRootBlockName = getForcedRootBlock(editor);\n      if (forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) {\n        const forcedRootBlockAttrs = getForcedRootBlockAttrs(editor);\n        applyAttributes(editor, node, forcedRootBlockAttrs);\n      }\n    };\n    const createNewBlock = (editor, container, parentBlock, editableRoot, keepStyles = true, name, styles) => {\n      const dom = editor.dom;\n      const schema = editor.schema;\n      const newBlockName = getForcedRootBlock(editor);\n      const parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : '';\n      let node = container;\n      const textInlineElements = schema.getTextInlineElements();\n      let block;\n      if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') {\n        block = dom.create(name || newBlockName, styles || {});\n      } else {\n        block = parentBlock.cloneNode(false);\n      }\n      let caretNode = block;\n      if (!keepStyles) {\n        dom.setAttrib(block, 'style', null);\n        dom.setAttrib(block, 'class', null);\n      } else {\n        do {\n          if (textInlineElements[node.nodeName]) {\n            if (isCaretNode(node) || isBookmarkNode$1(node)) {\n              continue;\n            }\n            const clonedNode = node.cloneNode(false);\n            dom.setAttrib(clonedNode, 'id', '');\n            if (block.hasChildNodes()) {\n              clonedNode.appendChild(block.firstChild);\n              block.appendChild(clonedNode);\n            } else {\n              caretNode = clonedNode;\n              block.appendChild(clonedNode);\n            }\n          }\n        } while ((node = node.parentNode) && node !== editableRoot);\n      }\n      setForcedBlockAttrs(editor, block);\n      emptyBlock(caretNode);\n      return block;\n    };\n\n    const getDetailsRoot = (editor, element) => editor.dom.getParent(element, isDetails);\n    const isAtDetailsEdge = (root, element, isTextBlock) => {\n      let node = element;\n      while (node && node !== root && isNull(node.nextSibling)) {\n        const parent = node.parentElement;\n        if (!parent || !isTextBlock(parent)) {\n          return isDetails(parent);\n        }\n        node = parent;\n      }\n      return false;\n    };\n    const isLastEmptyBlockInDetails = (editor, shiftKey, element) => !shiftKey && element.nodeName.toLowerCase() === getForcedRootBlock(editor) && editor.dom.isEmpty(element) && isAtDetailsEdge(editor.getBody(), element, el => has$2(editor.schema.getTextBlockElements(), el.nodeName.toLowerCase()));\n    const insertNewLine = (editor, createNewBlock, parentBlock) => {\n      var _a, _b, _c;\n      const newBlock = createNewBlock(getForcedRootBlock(editor));\n      const root = getDetailsRoot(editor, parentBlock);\n      if (!root) {\n        return;\n      }\n      editor.dom.insertAfter(newBlock, root);\n      moveToCaretPosition(editor, newBlock);\n      if (((_c = (_b = (_a = parentBlock.parentElement) === null || _a === void 0 ? void 0 : _a.childNodes) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 1) {\n        editor.dom.remove(parentBlock);\n      }\n    };\n\n    const hasFirstChild = (elm, name) => {\n      return elm.firstChild && elm.firstChild.nodeName === name;\n    };\n    const isFirstChild = elm => {\n      var _a;\n      return ((_a = elm.parentNode) === null || _a === void 0 ? void 0 : _a.firstChild) === elm;\n    };\n    const hasParent = (elm, parentName) => {\n      const parentNode = elm === null || elm === void 0 ? void 0 : elm.parentNode;\n      return isNonNullable(parentNode) && parentNode.nodeName === parentName;\n    };\n    const isListBlock = elm => {\n      return isNonNullable(elm) && /^(OL|UL|LI)$/.test(elm.nodeName);\n    };\n    const isListItem = elm => {\n      return isNonNullable(elm) && /^(LI|DT|DD)$/.test(elm.nodeName);\n    };\n    const isNestedList = elm => {\n      return isListBlock(elm) && isListBlock(elm.parentNode);\n    };\n    const getContainerBlock = containerBlock => {\n      const containerBlockParent = containerBlock.parentNode;\n      return isListItem(containerBlockParent) ? containerBlockParent : containerBlock;\n    };\n    const isFirstOrLastLi = (containerBlock, parentBlock, first) => {\n      let node = containerBlock[first ? 'firstChild' : 'lastChild'];\n      while (node) {\n        if (isElement$6(node)) {\n          break;\n        }\n        node = node[first ? 'nextSibling' : 'previousSibling'];\n      }\n      return node === parentBlock;\n    };\n    const getStyles = elm => foldl(mapToArray(getAllRaw(SugarElement.fromDom(elm)), (style, styleName) => `${ styleName }: ${ style };`), (acc, s) => acc + s, '');\n    const insert$4 = (editor, createNewBlock, containerBlock, parentBlock, newBlockName) => {\n      const dom = editor.dom;\n      const rng = editor.selection.getRng();\n      const containerParent = containerBlock.parentNode;\n      if (containerBlock === editor.getBody() || !containerParent) {\n        return;\n      }\n      if (isNestedList(containerBlock)) {\n        newBlockName = 'LI';\n      }\n      const parentBlockStyles = isListItem(parentBlock) ? getStyles(parentBlock) : undefined;\n      let newBlock = isListItem(parentBlock) && parentBlockStyles ? createNewBlock(newBlockName, { style: getStyles(parentBlock) }) : createNewBlock(newBlockName);\n      if (isFirstOrLastLi(containerBlock, parentBlock, true) && isFirstOrLastLi(containerBlock, parentBlock, false)) {\n        if (hasParent(containerBlock, 'LI')) {\n          const containerBlockParent = getContainerBlock(containerBlock);\n          dom.insertAfter(newBlock, containerBlockParent);\n          if (isFirstChild(containerBlock)) {\n            dom.remove(containerBlockParent);\n          } else {\n            dom.remove(containerBlock);\n          }\n        } else {\n          dom.replace(newBlock, containerBlock);\n        }\n      } else if (isFirstOrLastLi(containerBlock, parentBlock, true)) {\n        if (hasParent(containerBlock, 'LI')) {\n          dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n          newBlock.appendChild(dom.doc.createTextNode(' '));\n          newBlock.appendChild(containerBlock);\n        } else {\n          containerParent.insertBefore(newBlock, containerBlock);\n        }\n        dom.remove(parentBlock);\n      } else if (isFirstOrLastLi(containerBlock, parentBlock, false)) {\n        dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n        dom.remove(parentBlock);\n      } else {\n        containerBlock = getContainerBlock(containerBlock);\n        const tmpRng = rng.cloneRange();\n        tmpRng.setStartAfter(parentBlock);\n        tmpRng.setEndAfter(containerBlock);\n        const fragment = tmpRng.extractContents();\n        if (newBlockName === 'LI' && hasFirstChild(fragment, 'LI')) {\n          const previousChildren = filter$5(map$3(newBlock.children, SugarElement.fromDom), not(isTag('br')));\n          newBlock = fragment.firstChild;\n          dom.insertAfter(fragment, containerBlock);\n          each$e(previousChildren, child => prepend(SugarElement.fromDom(newBlock), child));\n          if (parentBlockStyles) {\n            newBlock.setAttribute('style', parentBlockStyles);\n          }\n        } else {\n          dom.insertAfter(fragment, containerBlock);\n          dom.insertAfter(newBlock, containerBlock);\n        }\n        dom.remove(parentBlock);\n      }\n      moveToCaretPosition(editor, newBlock);\n    };\n\n    const trimZwsp = fragment => {\n      each$e(descendants$1(SugarElement.fromDom(fragment), isText$b), text => {\n        const rawNode = text.dom;\n        rawNode.nodeValue = trim$2(rawNode.data);\n      });\n    };\n    const isWithinNonEditableList = (editor, node) => {\n      const parentList = editor.dom.getParent(node, 'ol,ul,dl');\n      return parentList !== null && editor.dom.getContentEditableParent(parentList) === 'false';\n    };\n    const isEmptyAnchor = (dom, elm) => {\n      return elm && elm.nodeName === 'A' && dom.isEmpty(elm);\n    };\n    const containerAndSiblingName = (container, nodeName) => {\n      return container.nodeName === nodeName || container.previousSibling && container.previousSibling.nodeName === nodeName;\n    };\n    const canSplitBlock = (dom, node) => {\n      return isNonNullable(node) && dom.isBlock(node) && !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position) && dom.isEditable(node.parentNode) && dom.getContentEditable(node) !== 'false';\n    };\n    const trimInlineElementsOnLeftSideOfBlock = (dom, nonEmptyElementsMap, block) => {\n      var _a;\n      const firstChilds = [];\n      if (!block) {\n        return;\n      }\n      let currentNode = block;\n      while (currentNode = currentNode.firstChild) {\n        if (dom.isBlock(currentNode)) {\n          return;\n        }\n        if (isElement$6(currentNode) && !nonEmptyElementsMap[currentNode.nodeName.toLowerCase()]) {\n          firstChilds.push(currentNode);\n        }\n      }\n      let i = firstChilds.length;\n      while (i--) {\n        currentNode = firstChilds[i];\n        if (!currentNode.hasChildNodes() || currentNode.firstChild === currentNode.lastChild && ((_a = currentNode.firstChild) === null || _a === void 0 ? void 0 : _a.nodeValue) === '') {\n          dom.remove(currentNode);\n        } else {\n          if (isEmptyAnchor(dom, currentNode)) {\n            dom.remove(currentNode);\n          }\n        }\n      }\n    };\n    const normalizeZwspOffset = (start, container, offset) => {\n      if (!isText$a(container)) {\n        return offset;\n      } else if (start) {\n        return offset === 1 && container.data.charAt(offset - 1) === ZWSP$1 ? 0 : offset;\n      } else {\n        return offset === container.data.length - 1 && container.data.charAt(offset) === ZWSP$1 ? container.data.length : offset;\n      }\n    };\n    const includeZwspInRange = rng => {\n      const newRng = rng.cloneRange();\n      newRng.setStart(rng.startContainer, normalizeZwspOffset(true, rng.startContainer, rng.startOffset));\n      newRng.setEnd(rng.endContainer, normalizeZwspOffset(false, rng.endContainer, rng.endOffset));\n      return newRng;\n    };\n    const trimLeadingLineBreaks = node => {\n      let currentNode = node;\n      do {\n        if (isText$a(currentNode)) {\n          currentNode.data = currentNode.data.replace(/^[\\r\\n]+/, '');\n        }\n        currentNode = currentNode.firstChild;\n      } while (currentNode);\n    };\n    const wrapSelfAndSiblingsInDefaultBlock = (editor, newBlockName, rng, container, offset) => {\n      var _a, _b;\n      const dom = editor.dom;\n      const editableRoot = (_a = getEditableRoot(dom, container)) !== null && _a !== void 0 ? _a : dom.getRoot();\n      let parentBlock = dom.getParent(container, dom.isBlock);\n      if (!parentBlock || !canSplitBlock(dom, parentBlock)) {\n        parentBlock = parentBlock || editableRoot;\n        if (!parentBlock.hasChildNodes()) {\n          const newBlock = dom.create(newBlockName);\n          setForcedBlockAttrs(editor, newBlock);\n          parentBlock.appendChild(newBlock);\n          rng.setStart(newBlock, 0);\n          rng.setEnd(newBlock, 0);\n          return newBlock;\n        }\n        let node = container;\n        while (node && node.parentNode !== parentBlock) {\n          node = node.parentNode;\n        }\n        let startNode;\n        while (node && !dom.isBlock(node)) {\n          startNode = node;\n          node = node.previousSibling;\n        }\n        const startNodeName = (_b = startNode === null || startNode === void 0 ? void 0 : startNode.parentElement) === null || _b === void 0 ? void 0 : _b.nodeName;\n        if (startNode && startNodeName && editor.schema.isValidChild(startNodeName, newBlockName.toLowerCase())) {\n          const startNodeParent = startNode.parentNode;\n          const newBlock = dom.create(newBlockName);\n          setForcedBlockAttrs(editor, newBlock);\n          startNodeParent.insertBefore(newBlock, startNode);\n          node = startNode;\n          while (node && !dom.isBlock(node)) {\n            const next = node.nextSibling;\n            newBlock.appendChild(node);\n            node = next;\n          }\n          rng.setStart(container, offset);\n          rng.setEnd(container, offset);\n        }\n      }\n      return container;\n    };\n    const addBrToBlockIfNeeded = (dom, block) => {\n      block.normalize();\n      const lastChild = block.lastChild;\n      if (!lastChild || isElement$6(lastChild) && /^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true))) {\n        dom.add(block, 'br');\n      }\n    };\n    const shouldEndContainer = (editor, container) => {\n      const optionValue = shouldEndContainerOnEmptyBlock(editor);\n      if (isNullable(container)) {\n        return false;\n      } else if (isString(optionValue)) {\n        return contains$2(Tools.explode(optionValue), container.nodeName.toLowerCase());\n      } else {\n        return optionValue;\n      }\n    };\n    const insert$3 = (editor, evt) => {\n      let container;\n      let offset;\n      let parentBlockName;\n      let containerBlock;\n      let isAfterLastNodeInContainer = false;\n      const dom = editor.dom;\n      const schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements();\n      const rng = editor.selection.getRng();\n      const newBlockName = getForcedRootBlock(editor);\n      const start = SugarElement.fromDom(rng.startContainer);\n      const child = child$1(start, rng.startOffset);\n      const isCef = child.exists(element => isHTMLElement$1(element) && !isEditable$2(element));\n      const collapsedAndCef = rng.collapsed && isCef;\n      const createNewBlock$1 = (name, styles) => {\n        return createNewBlock(editor, container, parentBlock, editableRoot, shouldKeepStyles(editor), name, styles);\n      };\n      const isCaretAtStartOrEndOfBlock = start => {\n        const normalizedOffset = normalizeZwspOffset(start, container, offset);\n        if (isText$a(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.data.length)) {\n          return false;\n        }\n        if (container.parentNode === parentBlock && isAfterLastNodeInContainer && !start) {\n          return true;\n        }\n        if (start && isElement$6(container) && container === parentBlock.firstChild) {\n          return true;\n        }\n        if (containerAndSiblingName(container, 'TABLE') || containerAndSiblingName(container, 'HR')) {\n          return isAfterLastNodeInContainer && !start || !isAfterLastNodeInContainer && start;\n        }\n        const walker = new DomTreeWalker(container, parentBlock);\n        if (isText$a(container)) {\n          if (start && normalizedOffset === 0) {\n            walker.prev();\n          } else if (!start && normalizedOffset === container.data.length) {\n            walker.next();\n          }\n        }\n        let node;\n        while (node = walker.current()) {\n          if (isElement$6(node)) {\n            if (!node.getAttribute('data-mce-bogus')) {\n              const name = node.nodeName.toLowerCase();\n              if (nonEmptyElementsMap[name] && name !== 'br') {\n                return false;\n              }\n            }\n          } else if (isText$a(node) && !isWhitespaceText(node.data)) {\n            return false;\n          }\n          if (start) {\n            walker.prev();\n          } else {\n            walker.next();\n          }\n        }\n        return true;\n      };\n      const insertNewBlockAfter = () => {\n        let block;\n        if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName !== 'HGROUP') {\n          block = createNewBlock$1(newBlockName);\n        } else {\n          block = createNewBlock$1();\n        }\n        if (shouldEndContainer(editor, containerBlock) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock, undefined, { includeZwsp: true })) {\n          block = dom.split(containerBlock, parentBlock);\n        } else {\n          dom.insertAfter(block, parentBlock);\n        }\n        moveToCaretPosition(editor, block);\n        return block;\n      };\n      normalize$2(dom, rng).each(normRng => {\n        rng.setStart(normRng.startContainer, normRng.startOffset);\n        rng.setEnd(normRng.endContainer, normRng.endOffset);\n      });\n      container = rng.startContainer;\n      offset = rng.startOffset;\n      const shiftKey = !!(evt && evt.shiftKey);\n      const ctrlKey = !!(evt && evt.ctrlKey);\n      if (isElement$6(container) && container.hasChildNodes() && !collapsedAndCef) {\n        isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\n        container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n        if (isAfterLastNodeInContainer && isText$a(container)) {\n          offset = container.data.length;\n        } else {\n          offset = 0;\n        }\n      }\n      const editableRoot = getEditableRoot(dom, container);\n      if (!editableRoot || isWithinNonEditableList(editor, container)) {\n        return;\n      }\n      if (!shiftKey) {\n        container = wrapSelfAndSiblingsInDefaultBlock(editor, newBlockName, rng, container, offset);\n      }\n      let parentBlock = dom.getParent(container, dom.isBlock) || dom.getRoot();\n      containerBlock = isNonNullable(parentBlock === null || parentBlock === void 0 ? void 0 : parentBlock.parentNode) ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\n      parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : '';\n      const containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\n      if (containerBlockName === 'LI' && !ctrlKey) {\n        const liBlock = containerBlock;\n        parentBlock = liBlock;\n        containerBlock = liBlock.parentNode;\n        parentBlockName = containerBlockName;\n      }\n      if (isElement$6(containerBlock) && isLastEmptyBlockInDetails(editor, shiftKey, parentBlock)) {\n        return insertNewLine(editor, createNewBlock$1, parentBlock);\n      }\n      if (/^(LI|DT|DD)$/.test(parentBlockName) && isElement$6(containerBlock)) {\n        if (dom.isEmpty(parentBlock)) {\n          insert$4(editor, createNewBlock$1, containerBlock, parentBlock, newBlockName);\n          return;\n        }\n      }\n      if (!collapsedAndCef && (parentBlock === editor.getBody() || !canSplitBlock(dom, parentBlock))) {\n        return;\n      }\n      const parentBlockParent = parentBlock.parentNode;\n      let newBlock;\n      if (collapsedAndCef) {\n        newBlock = createNewBlock$1(newBlockName);\n        child.fold(() => {\n          append$1(start, SugarElement.fromDom(newBlock));\n        }, child => {\n          before$3(child, SugarElement.fromDom(newBlock));\n        });\n        editor.selection.setCursorLocation(newBlock, 0);\n      } else if (isCaretContainerBlock$1(parentBlock)) {\n        newBlock = showCaretContainerBlock(parentBlock);\n        if (dom.isEmpty(parentBlock)) {\n          emptyBlock(parentBlock);\n        }\n        setForcedBlockAttrs(editor, newBlock);\n        moveToCaretPosition(editor, newBlock);\n      } else if (isCaretAtStartOrEndOfBlock(false)) {\n        newBlock = insertNewBlockAfter();\n      } else if (isCaretAtStartOrEndOfBlock(true) && parentBlockParent) {\n        newBlock = parentBlockParent.insertBefore(createNewBlock$1(), parentBlock);\n        const isNearChildren = hasChildNodes(SugarElement.fromDom(rng.startContainer)) && rng.collapsed;\n        moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') || isNearChildren ? newBlock : parentBlock);\n      } else {\n        const tmpRng = includeZwspInRange(rng).cloneRange();\n        tmpRng.setEndAfter(parentBlock);\n        const fragment = tmpRng.extractContents();\n        trimZwsp(fragment);\n        trimLeadingLineBreaks(fragment);\n        newBlock = fragment.firstChild;\n        dom.insertAfter(fragment, parentBlock);\n        trimInlineElementsOnLeftSideOfBlock(dom, nonEmptyElementsMap, newBlock);\n        addBrToBlockIfNeeded(dom, parentBlock);\n        if (dom.isEmpty(parentBlock)) {\n          emptyBlock(parentBlock);\n        }\n        newBlock.normalize();\n        if (dom.isEmpty(newBlock)) {\n          dom.remove(newBlock);\n          insertNewBlockAfter();\n        } else {\n          setForcedBlockAttrs(editor, newBlock);\n          moveToCaretPosition(editor, newBlock);\n        }\n      }\n      dom.setAttrib(newBlock, 'id', '');\n      editor.dispatch('NewBlock', { newBlock });\n    };\n    const fakeEventName$1 = 'insertParagraph';\n    const blockbreak = {\n      insert: insert$3,\n      fakeEventName: fakeEventName$1\n    };\n\n    const hasRightSideContent = (schema, container, parentBlock) => {\n      const walker = new DomTreeWalker(container, parentBlock);\n      let node;\n      const nonEmptyElementsMap = schema.getNonEmptyElements();\n      while (node = walker.next()) {\n        if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || isText$a(node) && node.length > 0) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const moveSelectionToBr = (editor, brElm, extraBr) => {\n      const rng = editor.dom.createRng();\n      if (!extraBr) {\n        rng.setStartAfter(brElm);\n        rng.setEndAfter(brElm);\n      } else {\n        rng.setStartBefore(brElm);\n        rng.setEndBefore(brElm);\n      }\n      editor.selection.setRng(rng);\n      scrollRangeIntoView(editor, rng);\n    };\n    const insertBrAtCaret = (editor, evt) => {\n      const selection = editor.selection;\n      const dom = editor.dom;\n      const rng = selection.getRng();\n      let brElm;\n      let extraBr = false;\n      normalize$2(dom, rng).each(normRng => {\n        rng.setStart(normRng.startContainer, normRng.startOffset);\n        rng.setEnd(normRng.endContainer, normRng.endOffset);\n      });\n      let offset = rng.startOffset;\n      let container = rng.startContainer;\n      if (isElement$6(container) && container.hasChildNodes()) {\n        const isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\n        container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n        if (isAfterLastNodeInContainer && isText$a(container)) {\n          offset = container.data.length;\n        } else {\n          offset = 0;\n        }\n      }\n      let parentBlock = dom.getParent(container, dom.isBlock);\n      const containerBlock = parentBlock && parentBlock.parentNode ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\n      const containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\n      const isControlKey = !!(evt && evt.ctrlKey);\n      if (containerBlockName === 'LI' && !isControlKey) {\n        parentBlock = containerBlock;\n      }\n      if (isText$a(container) && offset >= container.data.length) {\n        if (!hasRightSideContent(editor.schema, container, parentBlock || dom.getRoot())) {\n          brElm = dom.create('br');\n          rng.insertNode(brElm);\n          rng.setStartAfter(brElm);\n          rng.setEndAfter(brElm);\n          extraBr = true;\n        }\n      }\n      brElm = dom.create('br');\n      rangeInsertNode(dom, rng, brElm);\n      moveSelectionToBr(editor, brElm, extraBr);\n      editor.undoManager.add();\n    };\n    const insertBrBefore = (editor, inline) => {\n      const br = SugarElement.fromTag('br');\n      before$3(SugarElement.fromDom(inline), br);\n      editor.undoManager.add();\n    };\n    const insertBrAfter = (editor, inline) => {\n      if (!hasBrAfter(editor.getBody(), inline)) {\n        after$4(SugarElement.fromDom(inline), SugarElement.fromTag('br'));\n      }\n      const br = SugarElement.fromTag('br');\n      after$4(SugarElement.fromDom(inline), br);\n      moveSelectionToBr(editor, br.dom, false);\n      editor.undoManager.add();\n    };\n    const isBeforeBr = pos => {\n      return isBr$6(pos.getNode());\n    };\n    const hasBrAfter = (rootNode, startNode) => {\n      if (isBeforeBr(CaretPosition.after(startNode))) {\n        return true;\n      } else {\n        return nextPosition(rootNode, CaretPosition.after(startNode)).map(pos => {\n          return isBr$6(pos.getNode());\n        }).getOr(false);\n      }\n    };\n    const isAnchorLink = elm => {\n      return elm && elm.nodeName === 'A' && 'href' in elm;\n    };\n    const isInsideAnchor = location => {\n      return location.fold(never, isAnchorLink, isAnchorLink, never);\n    };\n    const readInlineAnchorLocation = editor => {\n      const isInlineTarget$1 = curry(isInlineTarget, editor);\n      const position = CaretPosition.fromRangeStart(editor.selection.getRng());\n      return readLocation(isInlineTarget$1, editor.getBody(), position).filter(isInsideAnchor);\n    };\n    const insertBrOutsideAnchor = (editor, location) => {\n      location.fold(noop, curry(insertBrBefore, editor), curry(insertBrAfter, editor), noop);\n    };\n    const insert$2 = (editor, evt) => {\n      const anchorLocation = readInlineAnchorLocation(editor);\n      if (anchorLocation.isSome()) {\n        anchorLocation.each(curry(insertBrOutsideAnchor, editor));\n      } else {\n        insertBrAtCaret(editor, evt);\n      }\n    };\n    const fakeEventName = 'insertLineBreak';\n    const linebreak = {\n      insert: insert$2,\n      fakeEventName\n    };\n\n    const matchesSelector = (editor, selector) => {\n      return getParentBlock$1(editor).filter(parentBlock => {\n        return selector.length > 0 && is$1(SugarElement.fromDom(parentBlock), selector);\n      }).isSome();\n    };\n    const shouldInsertBr = editor => {\n      return matchesSelector(editor, getBrNewLineSelector(editor));\n    };\n    const shouldBlockNewLine$1 = editor => {\n      return matchesSelector(editor, getNoNewLineSelector(editor));\n    };\n\n    const newLineAction = Adt.generate([\n      { br: [] },\n      { block: [] },\n      { none: [] }\n    ]);\n    const shouldBlockNewLine = (editor, _shiftKey) => {\n      return shouldBlockNewLine$1(editor);\n    };\n    const inListBlock = requiredState => {\n      return (editor, _shiftKey) => {\n        return isListItemParentBlock(editor) === requiredState;\n      };\n    };\n    const inBlock = (blockName, requiredState) => (editor, _shiftKey) => {\n      const state = getParentBlockName(editor) === blockName.toUpperCase();\n      return state === requiredState;\n    };\n    const inCefBlock = editor => {\n      const editableRoot = getEditableRoot(editor.dom, editor.selection.getStart());\n      return isNullable(editableRoot);\n    };\n    const inPreBlock = requiredState => inBlock('pre', requiredState);\n    const inSummaryBlock = () => inBlock('summary', true);\n    const shouldPutBrInPre = requiredState => {\n      return (editor, _shiftKey) => {\n        return shouldPutBrInPre$1(editor) === requiredState;\n      };\n    };\n    const inBrContext = (editor, _shiftKey) => {\n      return shouldInsertBr(editor);\n    };\n    const hasShiftKey = (_editor, shiftKey) => {\n      return shiftKey;\n    };\n    const canInsertIntoEditableRoot = editor => {\n      const forcedRootBlock = getForcedRootBlock(editor);\n      const rootEditable = getEditableRoot(editor.dom, editor.selection.getStart());\n      return isNonNullable(rootEditable) && editor.schema.isValidChild(rootEditable.nodeName, forcedRootBlock);\n    };\n    const isInRootWithEmptyOrCEF = editor => {\n      const rng = editor.selection.getRng();\n      const start = SugarElement.fromDom(rng.startContainer);\n      const child = child$1(start, rng.startOffset);\n      const isCefOpt = child.map(element => isHTMLElement$1(element) && !isEditable$2(element));\n      return rng.collapsed && isCefOpt.getOr(true);\n    };\n    const match = (predicates, action) => {\n      return (editor, shiftKey) => {\n        const isMatch = foldl(predicates, (res, p) => {\n          return res && p(editor, shiftKey);\n        }, true);\n        return isMatch ? Optional.some(action) : Optional.none();\n      };\n    };\n    const getAction = (editor, evt) => {\n      return evaluateUntil([\n        match([shouldBlockNewLine], newLineAction.none()),\n        match([\n          inPreBlock(true),\n          inCefBlock\n        ], newLineAction.none()),\n        match([inSummaryBlock()], newLineAction.br()),\n        match([\n          inPreBlock(true),\n          shouldPutBrInPre(false),\n          hasShiftKey\n        ], newLineAction.br()),\n        match([\n          inPreBlock(true),\n          shouldPutBrInPre(false)\n        ], newLineAction.block()),\n        match([\n          inPreBlock(true),\n          shouldPutBrInPre(true),\n          hasShiftKey\n        ], newLineAction.block()),\n        match([\n          inPreBlock(true),\n          shouldPutBrInPre(true)\n        ], newLineAction.br()),\n        match([\n          inListBlock(true),\n          hasShiftKey\n        ], newLineAction.br()),\n        match([inListBlock(true)], newLineAction.block()),\n        match([inBrContext], newLineAction.br()),\n        match([hasShiftKey], newLineAction.br()),\n        match([canInsertIntoEditableRoot], newLineAction.block()),\n        match([isInRootWithEmptyOrCEF], newLineAction.block())\n      ], [\n        editor,\n        !!(evt && evt.shiftKey)\n      ]).getOr(newLineAction.none());\n    };\n\n    const insertBreak = (breakType, editor, evt) => {\n      if (!editor.selection.isCollapsed()) {\n        execEditorDeleteCommand(editor);\n      }\n      if (isNonNullable(evt)) {\n        const event = fireBeforeInputEvent(editor, breakType.fakeEventName);\n        if (event.isDefaultPrevented()) {\n          return;\n        }\n      }\n      breakType.insert(editor, evt);\n      if (isNonNullable(evt)) {\n        fireInputEvent(editor, breakType.fakeEventName);\n      }\n    };\n    const insert$1 = (editor, evt) => {\n      const br = () => insertBreak(linebreak, editor, evt);\n      const block = () => insertBreak(blockbreak, editor, evt);\n      const logicalAction = getAction(editor, evt);\n      switch (getNewlineBehavior(editor)) {\n      case 'linebreak':\n        logicalAction.fold(br, br, noop);\n        break;\n      case 'block':\n        logicalAction.fold(block, block, noop);\n        break;\n      case 'invert':\n        logicalAction.fold(block, br, noop);\n        break;\n      default:\n        logicalAction.fold(br, block, noop);\n        break;\n      }\n    };\n\n    const platform$1 = detect$2();\n    const isIOSSafari = platform$1.os.isiOS() && platform$1.browser.isSafari();\n    const handleEnterKeyEvent = (editor, event) => {\n      if (event.isDefaultPrevented()) {\n        return;\n      }\n      event.preventDefault();\n      endTypingLevelIgnoreLocks(editor.undoManager);\n      editor.undoManager.transact(() => {\n        insert$1(editor, event);\n      });\n    };\n    const isCaretAfterKoreanCharacter = rng => {\n      if (!rng.collapsed) {\n        return false;\n      }\n      const startContainer = rng.startContainer;\n      if (isText$a(startContainer)) {\n        const koreanCharRegex = /^[\\uAC00-\\uD7AF\\u1100-\\u11FF\\u3130-\\u318F\\uA960-\\uA97F\\uD7B0-\\uD7FF]$/;\n        const char = startContainer.data.charAt(rng.startOffset - 1);\n        return koreanCharRegex.test(char);\n      } else {\n        return false;\n      }\n    };\n    const setup$i = editor => {\n      let iOSSafariKeydownBookmark = Optional.none();\n      const iOSSafariKeydownOverride = editor => {\n        iOSSafariKeydownBookmark = Optional.some(editor.selection.getBookmark());\n        editor.undoManager.add();\n      };\n      const iOSSafariKeyupOverride = (editor, event) => {\n        editor.undoManager.undo();\n        iOSSafariKeydownBookmark.fold(noop, b => editor.selection.moveToBookmark(b));\n        handleEnterKeyEvent(editor, event);\n        iOSSafariKeydownBookmark = Optional.none();\n      };\n      editor.on('keydown', event => {\n        if (event.keyCode === VK.ENTER) {\n          if (isIOSSafari && isCaretAfterKoreanCharacter(editor.selection.getRng())) {\n            iOSSafariKeydownOverride(editor);\n          } else {\n            handleEnterKeyEvent(editor, event);\n          }\n        }\n      });\n      editor.on('keyup', event => {\n        if (event.keyCode === VK.ENTER) {\n          iOSSafariKeydownBookmark.each(() => iOSSafariKeyupOverride(editor, event));\n        }\n      });\n    };\n\n    const executeKeydownOverride$2 = (editor, caret, evt) => {\n      const isMac = Env.os.isMacOS() || Env.os.isiOS();\n      execute([\n        {\n          keyCode: VK.END,\n          action: action(moveToLineEndPoint$1, editor, true)\n        },\n        {\n          keyCode: VK.HOME,\n          action: action(moveToLineEndPoint$1, editor, false)\n        },\n        ...!isMac ? [\n          {\n            keyCode: VK.HOME,\n            action: action(selectToEndPoint, editor, false),\n            ctrlKey: true,\n            shiftKey: true\n          },\n          {\n            keyCode: VK.END,\n            action: action(selectToEndPoint, editor, true),\n            ctrlKey: true,\n            shiftKey: true\n          }\n        ] : [],\n        {\n          keyCode: VK.END,\n          action: action(moveToLineEndPoint, editor, true)\n        },\n        {\n          keyCode: VK.HOME,\n          action: action(moveToLineEndPoint, editor, false)\n        },\n        {\n          keyCode: VK.END,\n          action: action(moveToLineEndPoint$2, editor, true, caret)\n        },\n        {\n          keyCode: VK.HOME,\n          action: action(moveToLineEndPoint$2, editor, false, caret)\n        }\n      ], evt).each(_ => {\n        evt.preventDefault();\n      });\n    };\n    const setup$h = (editor, caret) => {\n      editor.on('keydown', evt => {\n        if (!evt.isDefaultPrevented()) {\n          executeKeydownOverride$2(editor, caret, evt);\n        }\n      });\n    };\n\n    const setup$g = editor => {\n      editor.on('input', e => {\n        if (!e.isComposing) {\n          normalizeNbspsInEditor(editor);\n        }\n      });\n    };\n\n    const platform = detect$2();\n    const executeKeyupAction = (editor, caret, evt) => {\n      execute([\n        {\n          keyCode: VK.PAGE_UP,\n          action: action(moveToLineEndPoint$2, editor, false, caret)\n        },\n        {\n          keyCode: VK.PAGE_DOWN,\n          action: action(moveToLineEndPoint$2, editor, true, caret)\n        }\n      ], evt);\n    };\n    const stopImmediatePropagation = e => e.stopImmediatePropagation();\n    const isPageUpDown = evt => evt.keyCode === VK.PAGE_UP || evt.keyCode === VK.PAGE_DOWN;\n    const setNodeChangeBlocker = (blocked, editor, block) => {\n      if (block && !blocked.get()) {\n        editor.on('NodeChange', stopImmediatePropagation, true);\n      } else if (!block && blocked.get()) {\n        editor.off('NodeChange', stopImmediatePropagation);\n      }\n      blocked.set(block);\n    };\n    const setup$f = (editor, caret) => {\n      if (platform.os.isMacOS()) {\n        return;\n      }\n      const blocked = Cell(false);\n      editor.on('keydown', evt => {\n        if (isPageUpDown(evt)) {\n          setNodeChangeBlocker(blocked, editor, true);\n        }\n      });\n      editor.on('keyup', evt => {\n        if (!evt.isDefaultPrevented()) {\n          executeKeyupAction(editor, caret, evt);\n        }\n        if (isPageUpDown(evt) && blocked.get()) {\n          setNodeChangeBlocker(blocked, editor, false);\n          editor.nodeChanged();\n        }\n      });\n    };\n\n    const setup$e = editor => {\n      editor.on('beforeinput', e => {\n        if (!editor.selection.isEditable() || exists(e.getTargetRanges(), rng => !isEditableRange(editor.dom, rng))) {\n          e.preventDefault();\n        }\n      });\n    };\n\n    const insertTextAtPosition = (text, pos) => {\n      const container = pos.container();\n      const offset = pos.offset();\n      if (isText$a(container)) {\n        container.insertData(offset, text);\n        return Optional.some(CaretPosition(container, offset + text.length));\n      } else {\n        return getElementFromPosition(pos).map(elm => {\n          const textNode = SugarElement.fromText(text);\n          if (pos.isAtEnd()) {\n            after$4(elm, textNode);\n          } else {\n            before$3(elm, textNode);\n          }\n          return CaretPosition(textNode.dom, text.length);\n        });\n      }\n    };\n    const insertNbspAtPosition = curry(insertTextAtPosition, nbsp);\n    const insertSpaceAtPosition = curry(insertTextAtPosition, ' ');\n\n    const insertSpaceOrNbspAtPosition = (root, pos, schema) => needsToHaveNbsp(root, pos, schema) ? insertNbspAtPosition(pos) : insertSpaceAtPosition(pos);\n    const locationToCaretPosition = root => location => location.fold(element => prevPosition(root.dom, CaretPosition.before(element)), element => firstPositionIn(element), element => lastPositionIn(element), element => nextPosition(root.dom, CaretPosition.after(element)));\n    const insertInlineBoundarySpaceOrNbsp = (root, pos, schema) => checkPos => needsToHaveNbsp(root, checkPos, schema) ? insertNbspAtPosition(pos) : insertSpaceAtPosition(pos);\n    const setSelection = editor => pos => {\n      editor.selection.setRng(pos.toRange());\n      editor.nodeChanged();\n    };\n    const isInsideSummary = (domUtils, node) => domUtils.isEditable(domUtils.getParent(node, 'summary'));\n    const insertSpaceOrNbspAtSelection = editor => {\n      const pos = CaretPosition.fromRangeStart(editor.selection.getRng());\n      const root = SugarElement.fromDom(editor.getBody());\n      if (editor.selection.isCollapsed()) {\n        const isInlineTarget$1 = curry(isInlineTarget, editor);\n        const caretPosition = CaretPosition.fromRangeStart(editor.selection.getRng());\n        return readLocation(isInlineTarget$1, editor.getBody(), caretPosition).bind(locationToCaretPosition(root)).map(checkPos => () => insertInlineBoundarySpaceOrNbsp(root, pos, editor.schema)(checkPos).each(setSelection(editor)));\n      } else {\n        return Optional.none();\n      }\n    };\n    const insertSpaceInSummaryAtSelectionOnFirefox = editor => {\n      const insertSpaceThunk = () => {\n        const root = SugarElement.fromDom(editor.getBody());\n        if (!editor.selection.isCollapsed()) {\n          editor.getDoc().execCommand('Delete');\n        }\n        const pos = CaretPosition.fromRangeStart(editor.selection.getRng());\n        insertSpaceOrNbspAtPosition(root, pos, editor.schema).each(setSelection(editor));\n      };\n      return someIf(Env.browser.isFirefox() && editor.selection.isEditable() && isInsideSummary(editor.dom, editor.selection.getRng().startContainer), insertSpaceThunk);\n    };\n\n    const executeKeydownOverride$1 = (editor, evt) => {\n      executeWithDelayedAction([\n        {\n          keyCode: VK.SPACEBAR,\n          action: action(insertSpaceOrNbspAtSelection, editor)\n        },\n        {\n          keyCode: VK.SPACEBAR,\n          action: action(insertSpaceInSummaryAtSelectionOnFirefox, editor)\n        }\n      ], evt).each(applyAction => {\n        evt.preventDefault();\n        const event = fireBeforeInputEvent(editor, 'insertText', { data: ' ' });\n        if (!event.isDefaultPrevented()) {\n          applyAction();\n          fireInputEvent(editor, 'insertText', { data: ' ' });\n        }\n      });\n    };\n    const setup$d = editor => {\n      editor.on('keydown', evt => {\n        if (!evt.isDefaultPrevented()) {\n          executeKeydownOverride$1(editor, evt);\n        }\n      });\n    };\n\n    const tableTabNavigation = editor => {\n      if (hasTableTabNavigation(editor)) {\n        return [\n          {\n            keyCode: VK.TAB,\n            action: action(handleTab, editor, true)\n          },\n          {\n            keyCode: VK.TAB,\n            shiftKey: true,\n            action: action(handleTab, editor, false)\n          }\n        ];\n      } else {\n        return [];\n      }\n    };\n    const executeKeydownOverride = (editor, evt) => {\n      execute([...tableTabNavigation(editor)], evt).each(_ => {\n        evt.preventDefault();\n      });\n    };\n    const setup$c = editor => {\n      editor.on('keydown', evt => {\n        if (!evt.isDefaultPrevented()) {\n          executeKeydownOverride(editor, evt);\n        }\n      });\n    };\n\n    const setup$b = editor => {\n      editor.addShortcut('Meta+P', '', 'mcePrint');\n      setup$k(editor);\n      if (isRtc(editor)) {\n        return Cell(null);\n      } else {\n        const caret = setupSelectedState(editor);\n        setup$e(editor);\n        setup$m(editor);\n        setup$l(editor, caret);\n        setup$j(editor, caret);\n        setup$i(editor);\n        setup$d(editor);\n        setup$g(editor);\n        setup$c(editor);\n        setup$h(editor, caret);\n        setup$f(editor, caret);\n        return caret;\n      }\n    };\n\n    class NodeChange {\n      constructor(editor) {\n        this.lastPath = [];\n        this.editor = editor;\n        let lastRng;\n        const self = this;\n        if (!('onselectionchange' in editor.getDoc())) {\n          editor.on('NodeChange click mouseup keyup focus', e => {\n            const nativeRng = editor.selection.getRng();\n            const fakeRng = {\n              startContainer: nativeRng.startContainer,\n              startOffset: nativeRng.startOffset,\n              endContainer: nativeRng.endContainer,\n              endOffset: nativeRng.endOffset\n            };\n            if (e.type === 'nodechange' || !isEq$4(fakeRng, lastRng)) {\n              editor.dispatch('SelectionChange');\n            }\n            lastRng = fakeRng;\n          });\n        }\n        editor.on('contextmenu', () => {\n          editor.dispatch('SelectionChange');\n        });\n        editor.on('SelectionChange', () => {\n          const startElm = editor.selection.getStart(true);\n          if (!startElm) {\n            return;\n          }\n          if (hasAnyRanges(editor) && !self.isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {\n            editor.nodeChanged({ selectionChange: true });\n          }\n        });\n        editor.on('mouseup', e => {\n          if (!e.isDefaultPrevented() && hasAnyRanges(editor)) {\n            if (editor.selection.getNode().nodeName === 'IMG') {\n              Delay.setEditorTimeout(editor, () => {\n                editor.nodeChanged();\n              });\n            } else {\n              editor.nodeChanged();\n            }\n          }\n        });\n      }\n      nodeChanged(args = {}) {\n        const selection = this.editor.selection;\n        let node;\n        if (this.editor.initialized && selection && !shouldDisableNodeChange(this.editor) && !this.editor.mode.isReadOnly()) {\n          const root = this.editor.getBody();\n          node = selection.getStart(true) || root;\n          if (node.ownerDocument !== this.editor.getDoc() || !this.editor.dom.isChildOf(node, root)) {\n            node = root;\n          }\n          const parents = [];\n          this.editor.dom.getParent(node, node => {\n            if (node === root) {\n              return true;\n            } else {\n              parents.push(node);\n              return false;\n            }\n          });\n          this.editor.dispatch('NodeChange', {\n            ...args,\n            element: node,\n            parents\n          });\n        }\n      }\n      isSameElementPath(startElm) {\n        let i;\n        const editor = this.editor;\n        const currentPath = reverse(editor.dom.getParents(startElm, always, editor.getBody()));\n        if (currentPath.length === this.lastPath.length) {\n          for (i = currentPath.length; i >= 0; i--) {\n            if (currentPath[i] !== this.lastPath[i]) {\n              break;\n            }\n          }\n          if (i === -1) {\n            this.lastPath = currentPath;\n            return true;\n          }\n        }\n        this.lastPath = currentPath;\n        return false;\n      }\n    }\n\n    const imageId = generate$1('image');\n    const getDragImage = transfer => {\n      const dt = transfer;\n      return Optional.from(dt[imageId]);\n    };\n    const setDragImage = (transfer, imageData) => {\n      const dt = transfer;\n      dt[imageId] = imageData;\n    };\n\n    const eventId = generate$1('event');\n    const getEvent = transfer => {\n      const dt = transfer;\n      return Optional.from(dt[eventId]);\n    };\n    const mkSetEventFn = type => transfer => {\n      const dt = transfer;\n      dt[eventId] = type;\n    };\n    const setEvent = (transfer, type) => mkSetEventFn(type)(transfer);\n    const setDragstartEvent = mkSetEventFn(0);\n    const setDropEvent = mkSetEventFn(2);\n    const setDragendEvent = mkSetEventFn(1);\n    const checkEvent = expectedType => transfer => {\n      const dt = transfer;\n      return Optional.from(dt[eventId]).exists(type => type === expectedType);\n    };\n    const isInDragStartEvent = checkEvent(0);\n\n    const createEmptyFileList = () => Object.freeze({\n      length: 0,\n      item: _ => null\n    });\n\n    const modeId = generate$1('mode');\n    const getMode = transfer => {\n      const dt = transfer;\n      return Optional.from(dt[modeId]);\n    };\n    const mkSetModeFn = mode => transfer => {\n      const dt = transfer;\n      dt[modeId] = mode;\n    };\n    const setMode$1 = (transfer, mode) => mkSetModeFn(mode)(transfer);\n    const setReadWriteMode = mkSetModeFn(0);\n    const setReadOnlyMode = mkSetModeFn(2);\n    const setProtectedMode = mkSetModeFn(1);\n    const checkMode = expectedMode => transfer => {\n      const dt = transfer;\n      return Optional.from(dt[modeId]).exists(mode => mode === expectedMode);\n    };\n    const isInReadWriteMode = checkMode(0);\n    const isInProtectedMode = checkMode(1);\n\n    const normalizeItems = (dataTransfer, itemsImpl) => ({\n      ...itemsImpl,\n      get length() {\n        return itemsImpl.length;\n      },\n      add: (data, type) => {\n        if (isInReadWriteMode(dataTransfer)) {\n          if (isString(data)) {\n            if (!isUndefined(type)) {\n              return itemsImpl.add(data, type);\n            }\n          } else {\n            return itemsImpl.add(data);\n          }\n        }\n        return null;\n      },\n      remove: idx => {\n        if (isInReadWriteMode(dataTransfer)) {\n          itemsImpl.remove(idx);\n        }\n      },\n      clear: () => {\n        if (isInReadWriteMode(dataTransfer)) {\n          itemsImpl.clear();\n        }\n      }\n    });\n\n    const validDropEffects = [\n      'none',\n      'copy',\n      'link',\n      'move'\n    ];\n    const validEffectAlloweds = [\n      'none',\n      'copy',\n      'copyLink',\n      'copyMove',\n      'link',\n      'linkMove',\n      'move',\n      'all',\n      'uninitialized'\n    ];\n    const createDataTransfer = () => {\n      const dataTransferImpl = new window.DataTransfer();\n      let dropEffect = 'move';\n      let effectAllowed = 'all';\n      const dataTransfer = {\n        get dropEffect() {\n          return dropEffect;\n        },\n        set dropEffect(effect) {\n          if (contains$2(validDropEffects, effect)) {\n            dropEffect = effect;\n          }\n        },\n        get effectAllowed() {\n          return effectAllowed;\n        },\n        set effectAllowed(allowed) {\n          if (isInDragStartEvent(dataTransfer) && contains$2(validEffectAlloweds, allowed)) {\n            effectAllowed = allowed;\n          }\n        },\n        get items() {\n          return normalizeItems(dataTransfer, dataTransferImpl.items);\n        },\n        get files() {\n          if (isInProtectedMode(dataTransfer)) {\n            return createEmptyFileList();\n          } else {\n            return dataTransferImpl.files;\n          }\n        },\n        get types() {\n          return dataTransferImpl.types;\n        },\n        setDragImage: (image, x, y) => {\n          if (isInReadWriteMode(dataTransfer)) {\n            setDragImage(dataTransfer, {\n              image,\n              x,\n              y\n            });\n            dataTransferImpl.setDragImage(image, x, y);\n          }\n        },\n        getData: format => {\n          if (isInProtectedMode(dataTransfer)) {\n            return '';\n          } else {\n            return dataTransferImpl.getData(format);\n          }\n        },\n        setData: (format, data) => {\n          if (isInReadWriteMode(dataTransfer)) {\n            dataTransferImpl.setData(format, data);\n          }\n        },\n        clearData: format => {\n          if (isInReadWriteMode(dataTransfer)) {\n            dataTransferImpl.clearData(format);\n          }\n        }\n      };\n      setReadWriteMode(dataTransfer);\n      return dataTransfer;\n    };\n    const cloneDataTransfer = original => {\n      const clone = createDataTransfer();\n      const originalMode = getMode(original);\n      setReadOnlyMode(original);\n      setDragstartEvent(clone);\n      clone.dropEffect = original.dropEffect;\n      clone.effectAllowed = original.effectAllowed;\n      getDragImage(original).each(imageData => clone.setDragImage(imageData.image, imageData.x, imageData.y));\n      each$e(original.types, type => {\n        if (type !== 'Files') {\n          clone.setData(type, original.getData(type));\n        }\n      });\n      each$e(original.files, file => clone.items.add(file));\n      getEvent(original).each(type => {\n        setEvent(clone, type);\n      });\n      originalMode.each(mode => {\n        setMode$1(original, mode);\n        setMode$1(clone, mode);\n      });\n      return clone;\n    };\n\n    const getHtmlData = dataTransfer => {\n      const html = dataTransfer.getData('text/html');\n      return html === '' ? Optional.none() : Optional.some(html);\n    };\n    const setHtmlData = (dataTransfer, html) => dataTransfer.setData('text/html', html);\n\n    const internalMimeType = 'x-tinymce/html';\n    const internalHtmlMime = constant(internalMimeType);\n    const internalMark = '<!-- ' + internalMimeType + ' -->';\n    const mark = html => internalMark + html;\n    const unmark = html => html.replace(internalMark, '');\n    const isMarked = html => html.indexOf(internalMark) !== -1;\n\n    const isPlainText = text => {\n      return !/<(?:\\/?(?!(?:div|p|br|span)>)\\w+|(?:(?!(?:span style=\"white-space:\\s?pre;?\">)|br\\s?\\/>))\\w+\\s[^>]+)>/i.test(text);\n    };\n    const openContainer = (rootTag, rootAttrs) => {\n      let tag = '<' + rootTag;\n      const attrs = mapToArray(rootAttrs, (value, key) => key + '=\"' + Entities.encodeAllRaw(value) + '\"');\n      if (attrs.length) {\n        tag += ' ' + attrs.join(' ');\n      }\n      return tag + '>';\n    };\n    const toBlockElements = (text, rootTag, rootAttrs) => {\n      const blocks = text.split(/\\n\\n/);\n      const tagOpen = openContainer(rootTag, rootAttrs);\n      const tagClose = '</' + rootTag + '>';\n      const paragraphs = map$3(blocks, p => {\n        return p.split(/\\n/).join('<br />');\n      });\n      const stitch = p => {\n        return tagOpen + p + tagClose;\n      };\n      return paragraphs.length === 1 ? paragraphs[0] : map$3(paragraphs, stitch).join('');\n    };\n\n    const pasteBinDefaultContent = '%MCEPASTEBIN%';\n    const create$6 = (editor, lastRngCell) => {\n      const {dom, selection} = editor;\n      const body = editor.getBody();\n      lastRngCell.set(selection.getRng());\n      const pasteBinElm = dom.add(editor.getBody(), 'div', {\n        'id': 'mcepastebin',\n        'class': 'mce-pastebin',\n        'contentEditable': true,\n        'data-mce-bogus': 'all',\n        'style': 'position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0'\n      }, pasteBinDefaultContent);\n      if (Env.browser.isFirefox()) {\n        dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) === 'rtl' ? 65535 : -65535);\n      }\n      dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', e => {\n        e.stopPropagation();\n      });\n      pasteBinElm.focus();\n      selection.select(pasteBinElm, true);\n    };\n    const remove = (editor, lastRngCell) => {\n      const dom = editor.dom;\n      if (getEl(editor)) {\n        let pasteBinClone;\n        const lastRng = lastRngCell.get();\n        while (pasteBinClone = getEl(editor)) {\n          dom.remove(pasteBinClone);\n          dom.unbind(pasteBinClone);\n        }\n        if (lastRng) {\n          editor.selection.setRng(lastRng);\n        }\n      }\n      lastRngCell.set(null);\n    };\n    const getEl = editor => editor.dom.get('mcepastebin');\n    const isPasteBin = elm => isNonNullable(elm) && elm.id === 'mcepastebin';\n    const getHtml = editor => {\n      const dom = editor.dom;\n      const copyAndRemove = (toElm, fromElm) => {\n        toElm.appendChild(fromElm);\n        dom.remove(fromElm, true);\n      };\n      const [pasteBinElm, ...pasteBinClones] = filter$5(editor.getBody().childNodes, isPasteBin);\n      each$e(pasteBinClones, pasteBinClone => {\n        copyAndRemove(pasteBinElm, pasteBinClone);\n      });\n      const dirtyWrappers = dom.select('div[id=mcepastebin]', pasteBinElm);\n      for (let i = dirtyWrappers.length - 1; i >= 0; i--) {\n        const cleanWrapper = dom.create('div');\n        pasteBinElm.insertBefore(cleanWrapper, dirtyWrappers[i]);\n        copyAndRemove(cleanWrapper, dirtyWrappers[i]);\n      }\n      return pasteBinElm ? pasteBinElm.innerHTML : '';\n    };\n    const isDefaultPasteBinContent = content => content === pasteBinDefaultContent;\n    const PasteBin = editor => {\n      const lastRng = Cell(null);\n      return {\n        create: () => create$6(editor, lastRng),\n        remove: () => remove(editor, lastRng),\n        getEl: () => getEl(editor),\n        getHtml: () => getHtml(editor),\n        getLastRng: lastRng.get\n      };\n    };\n\n    const filter$1 = (content, items) => {\n      Tools.each(items, v => {\n        if (is$4(v, RegExp)) {\n          content = content.replace(v, '');\n        } else {\n          content = content.replace(v[0], v[1]);\n        }\n      });\n      return content;\n    };\n    const innerText = html => {\n      const schema = Schema();\n      const domParser = DomParser({}, schema);\n      let text = '';\n      const voidElements = schema.getVoidElements();\n      const ignoreElements = Tools.makeMap('script noscript style textarea video audio iframe object', ' ');\n      const blockElements = schema.getBlockElements();\n      const walk = node => {\n        const name = node.name, currentNode = node;\n        if (name === 'br') {\n          text += '\\n';\n          return;\n        }\n        if (name === 'wbr') {\n          return;\n        }\n        if (voidElements[name]) {\n          text += ' ';\n        }\n        if (ignoreElements[name]) {\n          text += ' ';\n          return;\n        }\n        if (node.type === 3) {\n          text += node.value;\n        }\n        if (!(node.name in schema.getVoidElements())) {\n          let currentNode = node.firstChild;\n          if (currentNode) {\n            do {\n              walk(currentNode);\n            } while (currentNode = currentNode.next);\n          }\n        }\n        if (blockElements[name] && currentNode.next) {\n          text += '\\n';\n          if (name === 'p') {\n            text += '\\n';\n          }\n        }\n      };\n      html = filter$1(html, [/<!\\[[^\\]]+\\]>/g]);\n      walk(domParser.parse(html));\n      return text;\n    };\n    const trimHtml = html => {\n      const trimSpaces = (all, s1, s2) => {\n        if (!s1 && !s2) {\n          return ' ';\n        }\n        return nbsp;\n      };\n      html = filter$1(html, [\n        /^[\\s\\S]*<body[^>]*>\\s*|\\s*<\\/body[^>]*>[\\s\\S]*$/ig,\n        /<!--StartFragment-->|<!--EndFragment-->/g,\n        [\n          /( ?)<span class=\"Apple-converted-space\">\\u00a0<\\/span>( ?)/g,\n          trimSpaces\n        ],\n        /<br class=\"Apple-interchange-newline\">/g,\n        /<br>$/i\n      ]);\n      return html;\n    };\n    const createIdGenerator = prefix => {\n      let count = 0;\n      return () => {\n        return prefix + count++;\n      };\n    };\n    const getImageMimeType = ext => {\n      const lowerExt = ext.toLowerCase();\n      const mimeOverrides = {\n        jpg: 'jpeg',\n        jpe: 'jpeg',\n        jfi: 'jpeg',\n        jif: 'jpeg',\n        jfif: 'jpeg',\n        pjpeg: 'jpeg',\n        pjp: 'jpeg',\n        svg: 'svg+xml'\n      };\n      return Tools.hasOwn(mimeOverrides, lowerExt) ? 'image/' + mimeOverrides[lowerExt] : 'image/' + lowerExt;\n    };\n\n    const preProcess = (editor, html) => {\n      const parser = DomParser({\n        sanitize: shouldSanitizeXss(editor),\n        sandbox_iframes: shouldSandboxIframes(editor)\n      }, editor.schema);\n      parser.addNodeFilter('meta', nodes => {\n        Tools.each(nodes, node => {\n          node.remove();\n        });\n      });\n      const fragment = parser.parse(html, {\n        forced_root_block: false,\n        isRootContent: true\n      });\n      return HtmlSerializer({ validate: true }, editor.schema).serialize(fragment);\n    };\n    const processResult = (content, cancelled) => ({\n      content,\n      cancelled\n    });\n    const postProcessFilter = (editor, html, internal) => {\n      const tempBody = editor.dom.create('div', { style: 'display:none' }, html);\n      const postProcessArgs = firePastePostProcess(editor, tempBody, internal);\n      return processResult(postProcessArgs.node.innerHTML, postProcessArgs.isDefaultPrevented());\n    };\n    const filterContent = (editor, content, internal) => {\n      const preProcessArgs = firePastePreProcess(editor, content, internal);\n      const filteredContent = preProcess(editor, preProcessArgs.content);\n      if (editor.hasEventListeners('PastePostProcess') && !preProcessArgs.isDefaultPrevented()) {\n        return postProcessFilter(editor, filteredContent, internal);\n      } else {\n        return processResult(filteredContent, preProcessArgs.isDefaultPrevented());\n      }\n    };\n    const process = (editor, html, internal) => {\n      return filterContent(editor, html, internal);\n    };\n\n    const pasteHtml$1 = (editor, html) => {\n      editor.insertContent(html, {\n        merge: shouldPasteMergeFormats(editor),\n        paste: true\n      });\n      return true;\n    };\n    const isAbsoluteUrl = url => /^https?:\\/\\/[\\w\\-\\/+=.,!;:&%@^~(){}?#]+$/i.test(url);\n    const isImageUrl = (editor, url) => {\n      return isAbsoluteUrl(url) && exists(getAllowedImageFileTypes(editor), type => endsWith(url.toLowerCase(), `.${ type.toLowerCase() }`));\n    };\n    const createImage = (editor, url, pasteHtmlFn) => {\n      editor.undoManager.extra(() => {\n        pasteHtmlFn(editor, url);\n      }, () => {\n        editor.insertContent('<img src=\"' + url + '\">');\n      });\n      return true;\n    };\n    const createLink = (editor, url, pasteHtmlFn) => {\n      editor.undoManager.extra(() => {\n        pasteHtmlFn(editor, url);\n      }, () => {\n        editor.execCommand('mceInsertLink', false, url);\n      });\n      return true;\n    };\n    const linkSelection = (editor, html, pasteHtmlFn) => !editor.selection.isCollapsed() && isAbsoluteUrl(html) ? createLink(editor, html, pasteHtmlFn) : false;\n    const insertImage = (editor, html, pasteHtmlFn) => isImageUrl(editor, html) ? createImage(editor, html, pasteHtmlFn) : false;\n    const smartInsertContent = (editor, html) => {\n      Tools.each([\n        linkSelection,\n        insertImage,\n        pasteHtml$1\n      ], action => {\n        return !action(editor, html, pasteHtml$1);\n      });\n    };\n    const insertContent = (editor, html, pasteAsText) => {\n      if (pasteAsText || !isSmartPasteEnabled(editor)) {\n        pasteHtml$1(editor, html);\n      } else {\n        smartInsertContent(editor, html);\n      }\n    };\n\n    const uniqueId = createIdGenerator('mceclip');\n    const createPasteDataTransfer = html => {\n      const dataTransfer = createDataTransfer();\n      setHtmlData(dataTransfer, html);\n      setReadOnlyMode(dataTransfer);\n      return dataTransfer;\n    };\n    const doPaste = (editor, content, internal, pasteAsText, shouldSimulateInputEvent) => {\n      const res = process(editor, content, internal);\n      if (!res.cancelled) {\n        const content = res.content;\n        const doPasteAction = () => insertContent(editor, content, pasteAsText);\n        if (shouldSimulateInputEvent) {\n          const args = fireBeforeInputEvent(editor, 'insertFromPaste', { dataTransfer: createPasteDataTransfer(content) });\n          if (!args.isDefaultPrevented()) {\n            doPasteAction();\n            fireInputEvent(editor, 'insertFromPaste');\n          }\n        } else {\n          doPasteAction();\n        }\n      }\n    };\n    const pasteHtml = (editor, html, internalFlag, shouldSimulateInputEvent) => {\n      const internal = internalFlag ? internalFlag : isMarked(html);\n      doPaste(editor, unmark(html), internal, false, shouldSimulateInputEvent);\n    };\n    const pasteText = (editor, text, shouldSimulateInputEvent) => {\n      const encodedText = editor.dom.encode(text).replace(/\\r\\n/g, '\\n');\n      const normalizedText = normalize$4(encodedText, getPasteTabSpaces(editor));\n      const html = toBlockElements(normalizedText, getForcedRootBlock(editor), getForcedRootBlockAttrs(editor));\n      doPaste(editor, html, false, true, shouldSimulateInputEvent);\n    };\n    const getDataTransferItems = dataTransfer => {\n      const items = {};\n      if (dataTransfer && dataTransfer.types) {\n        for (let i = 0; i < dataTransfer.types.length; i++) {\n          const contentType = dataTransfer.types[i];\n          try {\n            items[contentType] = dataTransfer.getData(contentType);\n          } catch (ex) {\n            items[contentType] = '';\n          }\n        }\n      }\n      return items;\n    };\n    const hasContentType = (clipboardContent, mimeType) => mimeType in clipboardContent && clipboardContent[mimeType].length > 0;\n    const hasHtmlOrText = content => hasContentType(content, 'text/html') || hasContentType(content, 'text/plain');\n    const extractFilename = (editor, str) => {\n      const m = str.match(/([\\s\\S]+?)(?:\\.[a-z0-9.]+)$/i);\n      return isNonNullable(m) ? editor.dom.encode(m[1]) : undefined;\n    };\n    const createBlobInfo = (editor, blobCache, file, base64) => {\n      const id = uniqueId();\n      const useFileName = shouldReuseFileName(editor) && isNonNullable(file.name);\n      const name = useFileName ? extractFilename(editor, file.name) : id;\n      const filename = useFileName ? file.name : undefined;\n      const blobInfo = blobCache.create(id, file, base64, name, filename);\n      blobCache.add(blobInfo);\n      return blobInfo;\n    };\n    const pasteImage = (editor, imageItem) => {\n      parseDataUri(imageItem.uri).each(({data, type, base64Encoded}) => {\n        const base64 = base64Encoded ? data : btoa(data);\n        const file = imageItem.file;\n        const blobCache = editor.editorUpload.blobCache;\n        const existingBlobInfo = blobCache.getByData(base64, type);\n        const blobInfo = existingBlobInfo !== null && existingBlobInfo !== void 0 ? existingBlobInfo : createBlobInfo(editor, blobCache, file, base64);\n        pasteHtml(editor, `<img src=\"${ blobInfo.blobUri() }\">`, false, true);\n      });\n    };\n    const isClipboardEvent = event => event.type === 'paste';\n    const readFilesAsDataUris = items => Promise.all(map$3(items, file => {\n      return blobToDataUri(file).then(uri => ({\n        file,\n        uri\n      }));\n    }));\n    const isImage = editor => {\n      const allowedExtensions = getAllowedImageFileTypes(editor);\n      return file => startsWith(file.type, 'image/') && exists(allowedExtensions, extension => {\n        return getImageMimeType(extension) === file.type;\n      });\n    };\n    const getImagesFromDataTransfer = (editor, dataTransfer) => {\n      const items = dataTransfer.items ? bind$3(from(dataTransfer.items), item => {\n        return item.kind === 'file' ? [item.getAsFile()] : [];\n      }) : [];\n      const files = dataTransfer.files ? from(dataTransfer.files) : [];\n      return filter$5(items.length > 0 ? items : files, isImage(editor));\n    };\n    const pasteImageData = (editor, e, rng) => {\n      const dataTransfer = isClipboardEvent(e) ? e.clipboardData : e.dataTransfer;\n      if (shouldPasteDataImages(editor) && dataTransfer) {\n        const images = getImagesFromDataTransfer(editor, dataTransfer);\n        if (images.length > 0) {\n          e.preventDefault();\n          readFilesAsDataUris(images).then(fileResults => {\n            if (rng) {\n              editor.selection.setRng(rng);\n            }\n            each$e(fileResults, result => {\n              pasteImage(editor, result);\n            });\n          });\n          return true;\n        }\n      }\n      return false;\n    };\n    const isBrokenAndroidClipboardEvent = e => {\n      var _a, _b;\n      return Env.os.isAndroid() && ((_b = (_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.length) === 0;\n    };\n    const isKeyboardPasteEvent = e => VK.metaKeyPressed(e) && e.keyCode === 86 || e.shiftKey && e.keyCode === 45;\n    const insertClipboardContent = (editor, clipboardContent, html, plainTextMode, shouldSimulateInputEvent) => {\n      let content = trimHtml(html);\n      const isInternal = hasContentType(clipboardContent, internalHtmlMime()) || isMarked(html);\n      const isPlainTextHtml = !isInternal && isPlainText(content);\n      const isAbsoluteUrl$1 = isAbsoluteUrl(content);\n      if (isDefaultPasteBinContent(content) || !content.length || isPlainTextHtml && !isAbsoluteUrl$1) {\n        plainTextMode = true;\n      }\n      if (plainTextMode || isAbsoluteUrl$1) {\n        if (hasContentType(clipboardContent, 'text/plain') && isPlainTextHtml) {\n          content = clipboardContent['text/plain'];\n        } else {\n          content = innerText(content);\n        }\n      }\n      if (isDefaultPasteBinContent(content)) {\n        return;\n      }\n      if (plainTextMode) {\n        pasteText(editor, content, shouldSimulateInputEvent);\n      } else {\n        pasteHtml(editor, content, isInternal, shouldSimulateInputEvent);\n      }\n    };\n    const registerEventHandlers = (editor, pasteBin, pasteFormat) => {\n      let keyboardPastePlainTextState;\n      const getLastRng = () => pasteBin.getLastRng() || editor.selection.getRng();\n      editor.on('keydown', e => {\n        if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {\n          keyboardPastePlainTextState = e.shiftKey && e.keyCode === 86;\n        }\n      });\n      editor.on('paste', e => {\n        if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) {\n          return;\n        }\n        const plainTextMode = pasteFormat.get() === 'text' || keyboardPastePlainTextState;\n        keyboardPastePlainTextState = false;\n        const clipboardContent = getDataTransferItems(e.clipboardData);\n        if (!hasHtmlOrText(clipboardContent) && pasteImageData(editor, e, getLastRng())) {\n          return;\n        }\n        if (hasContentType(clipboardContent, 'text/html')) {\n          e.preventDefault();\n          insertClipboardContent(editor, clipboardContent, clipboardContent['text/html'], plainTextMode, true);\n        } else if (hasContentType(clipboardContent, 'text/plain') && hasContentType(clipboardContent, 'text/uri-list')) {\n          e.preventDefault();\n          insertClipboardContent(editor, clipboardContent, clipboardContent['text/plain'], plainTextMode, true);\n        } else {\n          pasteBin.create();\n          Delay.setEditorTimeout(editor, () => {\n            const html = pasteBin.getHtml();\n            pasteBin.remove();\n            insertClipboardContent(editor, clipboardContent, html, plainTextMode, false);\n          }, 0);\n        }\n      });\n    };\n    const registerDataImageFilter = editor => {\n      const isWebKitFakeUrl = src => startsWith(src, 'webkit-fake-url');\n      const isDataUri = src => startsWith(src, 'data:');\n      const isPasteInsert = args => {\n        var _a;\n        return ((_a = args.data) === null || _a === void 0 ? void 0 : _a.paste) === true;\n      };\n      editor.parser.addNodeFilter('img', (nodes, name, args) => {\n        if (!shouldPasteDataImages(editor) && isPasteInsert(args)) {\n          for (const node of nodes) {\n            const src = node.attr('src');\n            if (isString(src) && !node.attr('data-mce-object') && src !== Env.transparentSrc) {\n              if (isWebKitFakeUrl(src)) {\n                node.remove();\n              } else if (!shouldAllowHtmlDataUrls(editor) && isDataUri(src)) {\n                node.remove();\n              }\n            }\n          }\n        }\n      });\n    };\n    const registerEventsAndFilters = (editor, pasteBin, pasteFormat) => {\n      registerEventHandlers(editor, pasteBin, pasteFormat);\n      registerDataImageFilter(editor);\n    };\n\n    const togglePlainTextPaste = (editor, pasteFormat) => {\n      if (pasteFormat.get() === 'text') {\n        pasteFormat.set('html');\n        firePastePlainTextToggle(editor, false);\n      } else {\n        pasteFormat.set('text');\n        firePastePlainTextToggle(editor, true);\n      }\n      editor.focus();\n    };\n    const register$1 = (editor, pasteFormat) => {\n      editor.addCommand('mceTogglePlainTextPaste', () => {\n        togglePlainTextPaste(editor, pasteFormat);\n      });\n      editor.addCommand('mceInsertClipboardContent', (ui, value) => {\n        if (value.html) {\n          pasteHtml(editor, value.html, value.internal, false);\n        }\n        if (value.text) {\n          pasteText(editor, value.text, false);\n        }\n      });\n    };\n\n    const setHtml5Clipboard = (clipboardData, html, text) => {\n      if (clipboardData) {\n        try {\n          clipboardData.clearData();\n          clipboardData.setData('text/html', html);\n          clipboardData.setData('text/plain', text);\n          clipboardData.setData(internalHtmlMime(), html);\n          return true;\n        } catch (e) {\n          return false;\n        }\n      } else {\n        return false;\n      }\n    };\n    const setClipboardData = (evt, data, fallback, done) => {\n      if (setHtml5Clipboard(evt.clipboardData, data.html, data.text)) {\n        evt.preventDefault();\n        done();\n      } else {\n        fallback(data.html, done);\n      }\n    };\n    const fallback = editor => (html, done) => {\n      const {dom, selection} = editor;\n      const outer = dom.create('div', {\n        'contenteditable': 'false',\n        'data-mce-bogus': 'all'\n      });\n      const inner = dom.create('div', { contenteditable: 'true' }, html);\n      dom.setStyles(outer, {\n        position: 'fixed',\n        top: '0',\n        left: '-3000px',\n        width: '1000px',\n        overflow: 'hidden'\n      });\n      outer.appendChild(inner);\n      dom.add(editor.getBody(), outer);\n      const range = selection.getRng();\n      inner.focus();\n      const offscreenRange = dom.createRng();\n      offscreenRange.selectNodeContents(inner);\n      selection.setRng(offscreenRange);\n      Delay.setEditorTimeout(editor, () => {\n        selection.setRng(range);\n        dom.remove(outer);\n        done();\n      }, 0);\n    };\n    const getData = editor => ({\n      html: mark(editor.selection.getContent({ contextual: true })),\n      text: editor.selection.getContent({ format: 'text' })\n    });\n    const isTableSelection = editor => !!editor.dom.getParent(editor.selection.getStart(), 'td[data-mce-selected],th[data-mce-selected]', editor.getBody());\n    const hasSelectedContent = editor => !editor.selection.isCollapsed() || isTableSelection(editor);\n    const cut = editor => evt => {\n      if (!evt.isDefaultPrevented() && hasSelectedContent(editor) && editor.selection.isEditable()) {\n        setClipboardData(evt, getData(editor), fallback(editor), () => {\n          if (Env.browser.isChromium() || Env.browser.isFirefox()) {\n            const rng = editor.selection.getRng();\n            Delay.setEditorTimeout(editor, () => {\n              editor.selection.setRng(rng);\n              editor.execCommand('Delete');\n            }, 0);\n          } else {\n            editor.execCommand('Delete');\n          }\n        });\n      }\n    };\n    const copy = editor => evt => {\n      if (!evt.isDefaultPrevented() && hasSelectedContent(editor)) {\n        setClipboardData(evt, getData(editor), fallback(editor), noop);\n      }\n    };\n    const register = editor => {\n      editor.on('cut', cut(editor));\n      editor.on('copy', copy(editor));\n    };\n\n    const getCaretRangeFromEvent = (editor, e) => {\n      var _a, _b;\n      return RangeUtils.getCaretRangeFromPoint((_a = e.clientX) !== null && _a !== void 0 ? _a : 0, (_b = e.clientY) !== null && _b !== void 0 ? _b : 0, editor.getDoc());\n    };\n    const isPlainTextFileUrl = content => {\n      const plainTextContent = content['text/plain'];\n      return plainTextContent ? plainTextContent.indexOf('file://') === 0 : false;\n    };\n    const setFocusedRange = (editor, rng) => {\n      editor.focus();\n      if (rng) {\n        editor.selection.setRng(rng);\n      }\n    };\n    const hasImage = dataTransfer => exists(dataTransfer.files, file => /^image\\//.test(file.type));\n    const needsCustomInternalDrop = (dom, schema, target, dropContent) => {\n      const parentTransparent = dom.getParent(target, node => isTransparentBlock(schema, node));\n      const inSummary = !isNull(dom.getParent(target, 'summary'));\n      if (inSummary) {\n        return true;\n      } else if (parentTransparent && has$2(dropContent, 'text/html')) {\n        const fragment = new DOMParser().parseFromString(dropContent['text/html'], 'text/html').body;\n        return !isNull(fragment.querySelector(parentTransparent.nodeName.toLowerCase()));\n      } else {\n        return false;\n      }\n    };\n    const setupSummaryDeleteByDragFix = editor => {\n      editor.on('input', e => {\n        const hasNoSummary = el => isNull(el.querySelector('summary'));\n        if (e.inputType === 'deleteByDrag') {\n          const brokenDetailElements = filter$5(editor.dom.select('details'), hasNoSummary);\n          each$e(brokenDetailElements, details => {\n            if (isBr$6(details.firstChild)) {\n              details.firstChild.remove();\n            }\n            const summary = editor.dom.create('summary');\n            summary.appendChild(createPaddingBr().dom);\n            details.prepend(summary);\n          });\n        }\n      });\n    };\n    const setup$a = (editor, draggingInternallyState) => {\n      if (shouldPasteBlockDrop(editor)) {\n        editor.on('dragend dragover draggesture dragdrop drop drag', e => {\n          e.preventDefault();\n          e.stopPropagation();\n        });\n      }\n      if (!shouldPasteDataImages(editor)) {\n        editor.on('drop', e => {\n          const dataTransfer = e.dataTransfer;\n          if (dataTransfer && hasImage(dataTransfer)) {\n            e.preventDefault();\n          }\n        });\n      }\n      editor.on('drop', e => {\n        if (e.isDefaultPrevented()) {\n          return;\n        }\n        const rng = getCaretRangeFromEvent(editor, e);\n        if (isNullable(rng)) {\n          return;\n        }\n        const dropContent = getDataTransferItems(e.dataTransfer);\n        const internal = hasContentType(dropContent, internalHtmlMime());\n        if ((!hasHtmlOrText(dropContent) || isPlainTextFileUrl(dropContent)) && pasteImageData(editor, e, rng)) {\n          return;\n        }\n        const internalContent = dropContent[internalHtmlMime()];\n        const content = internalContent || dropContent['text/html'] || dropContent['text/plain'];\n        const needsInternalDrop = needsCustomInternalDrop(editor.dom, editor.schema, rng.startContainer, dropContent);\n        const isInternalDrop = draggingInternallyState.get();\n        if (isInternalDrop && !needsInternalDrop) {\n          return;\n        }\n        if (content) {\n          e.preventDefault();\n          Delay.setEditorTimeout(editor, () => {\n            editor.undoManager.transact(() => {\n              if (internalContent || isInternalDrop && needsInternalDrop) {\n                editor.execCommand('Delete');\n              }\n              setFocusedRange(editor, rng);\n              const trimmedContent = trimHtml(content);\n              if (dropContent['text/html']) {\n                pasteHtml(editor, trimmedContent, internal, true);\n              } else {\n                pasteText(editor, trimmedContent, true);\n              }\n            });\n          });\n        }\n      });\n      editor.on('dragstart', _e => {\n        draggingInternallyState.set(true);\n      });\n      editor.on('dragover dragend', e => {\n        if (shouldPasteDataImages(editor) && !draggingInternallyState.get()) {\n          e.preventDefault();\n          setFocusedRange(editor, getCaretRangeFromEvent(editor, e));\n        }\n        if (e.type === 'dragend') {\n          draggingInternallyState.set(false);\n        }\n      });\n      setupSummaryDeleteByDragFix(editor);\n    };\n\n    const setup$9 = editor => {\n      const processEvent = f => e => {\n        f(editor, e);\n      };\n      const preProcess = getPastePreProcess(editor);\n      if (isFunction(preProcess)) {\n        editor.on('PastePreProcess', processEvent(preProcess));\n      }\n      const postProcess = getPastePostProcess(editor);\n      if (isFunction(postProcess)) {\n        editor.on('PastePostProcess', processEvent(postProcess));\n      }\n    };\n\n    const addPreProcessFilter = (editor, filterFunc) => {\n      editor.on('PastePreProcess', e => {\n        e.content = filterFunc(editor, e.content, e.internal);\n      });\n    };\n    const rgbRegExp = /rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/gi;\n    const rgbToHex = value => Tools.trim(value).replace(rgbRegExp, rgbaToHexString).toLowerCase();\n    const removeWebKitStyles = (editor, content, internal) => {\n      const webKitStylesOption = getPasteWebkitStyles(editor);\n      if (internal || webKitStylesOption === 'all' || !shouldPasteRemoveWebKitStyles(editor)) {\n        return content;\n      }\n      const webKitStyles = webKitStylesOption ? webKitStylesOption.split(/[, ]/) : [];\n      if (webKitStyles && webKitStylesOption !== 'none') {\n        const dom = editor.dom, node = editor.selection.getNode();\n        content = content.replace(/(<[^>]+) style=\"([^\"]*)\"([^>]*>)/gi, (all, before, value, after) => {\n          const inputStyles = dom.parseStyle(dom.decode(value));\n          const outputStyles = {};\n          for (let i = 0; i < webKitStyles.length; i++) {\n            const inputValue = inputStyles[webKitStyles[i]];\n            let compareInput = inputValue;\n            let currentValue = dom.getStyle(node, webKitStyles[i], true);\n            if (/color/.test(webKitStyles[i])) {\n              compareInput = rgbToHex(compareInput);\n              currentValue = rgbToHex(currentValue);\n            }\n            if (currentValue !== compareInput) {\n              outputStyles[webKitStyles[i]] = inputValue;\n            }\n          }\n          const outputStyle = dom.serializeStyle(outputStyles, 'span');\n          if (outputStyle) {\n            return before + ' style=\"' + outputStyle + '\"' + after;\n          }\n          return before + after;\n        });\n      } else {\n        content = content.replace(/(<[^>]+) style=\"([^\"]*)\"([^>]*>)/gi, '$1$3');\n      }\n      content = content.replace(/(<[^>]+) data-mce-style=\"([^\"]+)\"([^>]*>)/gi, (all, before, value, after) => {\n        return before + ' style=\"' + value + '\"' + after;\n      });\n      return content;\n    };\n    const setup$8 = editor => {\n      if (Env.browser.isChromium() || Env.browser.isSafari()) {\n        addPreProcessFilter(editor, removeWebKitStyles);\n      }\n    };\n\n    const setup$7 = editor => {\n      const draggingInternallyState = Cell(false);\n      const pasteFormat = Cell(isPasteAsTextEnabled(editor) ? 'text' : 'html');\n      const pasteBin = PasteBin(editor);\n      setup$8(editor);\n      register$1(editor, pasteFormat);\n      setup$9(editor);\n      editor.on('PreInit', () => {\n        register(editor);\n        setup$a(editor, draggingInternallyState);\n        registerEventsAndFilters(editor, pasteBin, pasteFormat);\n      });\n    };\n\n    const preventSummaryToggle = editor => {\n      editor.on('click', e => {\n        if (editor.dom.getParent(e.target, 'details')) {\n          e.preventDefault();\n        }\n      });\n    };\n    const filterDetails = editor => {\n      editor.parser.addNodeFilter('details', elms => {\n        const initialStateOption = getDetailsInitialState(editor);\n        each$e(elms, details => {\n          if (initialStateOption === 'expanded') {\n            details.attr('open', 'open');\n          } else if (initialStateOption === 'collapsed') {\n            details.attr('open', null);\n          }\n        });\n      });\n      editor.serializer.addNodeFilter('details', elms => {\n        const serializedStateOption = getDetailsSerializedState(editor);\n        each$e(elms, details => {\n          if (serializedStateOption === 'expanded') {\n            details.attr('open', 'open');\n          } else if (serializedStateOption === 'collapsed') {\n            details.attr('open', null);\n          }\n        });\n      });\n    };\n    const setup$6 = editor => {\n      preventSummaryToggle(editor);\n      filterDetails(editor);\n    };\n\n    const isBr = isBr$6;\n    const isText = isText$a;\n    const isContentEditableFalse$2 = elm => isContentEditableFalse$b(elm.dom);\n    const isContentEditableTrue = elm => isContentEditableTrue$3(elm.dom);\n    const isRoot = rootNode => elm => eq(SugarElement.fromDom(rootNode), elm);\n    const getClosestScope = (node, rootNode, schema) => closest$4(SugarElement.fromDom(node), elm => isContentEditableTrue(elm) || schema.isBlock(name(elm)), isRoot(rootNode)).getOr(SugarElement.fromDom(rootNode)).dom;\n    const getClosestCef = (node, rootNode) => closest$4(SugarElement.fromDom(node), isContentEditableFalse$2, isRoot(rootNode));\n    const findEdgeCaretCandidate = (startNode, scope, forward) => {\n      const walker = new DomTreeWalker(startNode, scope);\n      const next = forward ? walker.next.bind(walker) : walker.prev.bind(walker);\n      let result = startNode;\n      for (let current = forward ? startNode : next(); current && !isBr(current); current = next()) {\n        if (isCaretCandidate$3(current)) {\n          result = current;\n        }\n      }\n      return result;\n    };\n    const findClosestBlockRange = (startRng, rootNode, schema) => {\n      const startPos = CaretPosition.fromRangeStart(startRng);\n      const clickNode = startPos.getNode();\n      const scope = getClosestScope(clickNode, rootNode, schema);\n      const startNode = findEdgeCaretCandidate(clickNode, scope, false);\n      const endNode = findEdgeCaretCandidate(clickNode, scope, true);\n      const rng = document.createRange();\n      getClosestCef(startNode, scope).fold(() => {\n        if (isText(startNode)) {\n          rng.setStart(startNode, 0);\n        } else {\n          rng.setStartBefore(startNode);\n        }\n      }, cef => rng.setStartBefore(cef.dom));\n      getClosestCef(endNode, scope).fold(() => {\n        if (isText(endNode)) {\n          rng.setEnd(endNode, endNode.data.length);\n        } else {\n          rng.setEndAfter(endNode);\n        }\n      }, cef => rng.setEndAfter(cef.dom));\n      return rng;\n    };\n    const onTripleClickSelect = editor => {\n      const rng = findClosestBlockRange(editor.selection.getRng(), editor.getBody(), editor.schema);\n      editor.selection.setRng(normalize(rng));\n    };\n    const setup$5 = editor => {\n      editor.on('mousedown', e => {\n        if (e.detail >= 3) {\n          e.preventDefault();\n          onTripleClickSelect(editor);\n        }\n      });\n    };\n\n    var FakeCaretPosition;\n    (function (FakeCaretPosition) {\n      FakeCaretPosition['Before'] = 'before';\n      FakeCaretPosition['After'] = 'after';\n    }(FakeCaretPosition || (FakeCaretPosition = {})));\n    const distanceToRectLeft = (clientRect, clientX) => Math.abs(clientRect.left - clientX);\n    const distanceToRectRight = (clientRect, clientX) => Math.abs(clientRect.right - clientX);\n    const isInsideY = (clientY, clientRect) => clientY >= clientRect.top && clientY <= clientRect.bottom;\n    const collidesY = (r1, r2) => r1.top < r2.bottom && r1.bottom > r2.top;\n    const isOverlapping = (r1, r2) => {\n      const overlap = overlapY(r1, r2) / Math.min(r1.height, r2.height);\n      return collidesY(r1, r2) && overlap > 0.5;\n    };\n    const splitRectsPerAxis = (rects, y) => {\n      const intersectingRects = filter$5(rects, rect => isInsideY(y, rect));\n      return boundingClientRectFromRects(intersectingRects).fold(() => [\n        [],\n        rects\n      ], boundingRect => {\n        const {\n          pass: horizontal,\n          fail: vertical\n        } = partition$2(rects, rect => isOverlapping(rect, boundingRect));\n        return [\n          horizontal,\n          vertical\n        ];\n      });\n    };\n    const clientInfo = (rect, clientX) => {\n      return {\n        node: rect.node,\n        position: distanceToRectLeft(rect, clientX) < distanceToRectRight(rect, clientX) ? FakeCaretPosition.Before : FakeCaretPosition.After\n      };\n    };\n    const horizontalDistance = (rect, x, _y) => x > rect.left && x < rect.right ? 0 : Math.min(Math.abs(rect.left - x), Math.abs(rect.right - x));\n    const closestChildCaretCandidateNodeRect = (children, clientX, clientY, findCloserTextNode) => {\n      const caretCandidateRect = rect => {\n        if (isCaretCandidate$3(rect.node)) {\n          return Optional.some(rect);\n        } else if (isElement$6(rect.node)) {\n          return closestChildCaretCandidateNodeRect(from(rect.node.childNodes), clientX, clientY, false);\n        } else {\n          return Optional.none();\n        }\n      };\n      const tryFindSecondBestTextNode = (closest, sndClosest, distance) => {\n        return caretCandidateRect(sndClosest).filter(rect => {\n          const deltaDistance = Math.abs(distance(closest, clientX, clientY) - distance(rect, clientX, clientY));\n          return deltaDistance < 2 && isText$a(rect.node);\n        });\n      };\n      const findClosestCaretCandidateNodeRect = (rects, distance) => {\n        const sortedRects = sort(rects, (r1, r2) => distance(r1, clientX, clientY) - distance(r2, clientX, clientY));\n        return findMap(sortedRects, caretCandidateRect).map(closest => {\n          if (findCloserTextNode && !isText$a(closest.node) && sortedRects.length > 1) {\n            return tryFindSecondBestTextNode(closest, sortedRects[1], distance).getOr(closest);\n          } else {\n            return closest;\n          }\n        });\n      };\n      const [horizontalRects, verticalRects] = splitRectsPerAxis(getClientRects(children), clientY);\n      const {\n        pass: above,\n        fail: below\n      } = partition$2(verticalRects, rect => rect.top < clientY);\n      return findClosestCaretCandidateNodeRect(horizontalRects, horizontalDistance).orThunk(() => findClosestCaretCandidateNodeRect(below, distanceToRectEdgeFromXY)).orThunk(() => findClosestCaretCandidateNodeRect(above, distanceToRectEdgeFromXY));\n    };\n    const traverseUp = (rootElm, scope, clientX, clientY) => {\n      const helper = (scope, prevScope) => {\n        const isDragGhostContainer = node => isElement$6(node) && node.classList.contains('mce-drag-container');\n        const childNodesWithoutGhost = filter$5(scope.dom.childNodes, not(isDragGhostContainer));\n        return prevScope.fold(() => closestChildCaretCandidateNodeRect(childNodesWithoutGhost, clientX, clientY, true), prevScope => {\n          const uncheckedChildren = filter$5(childNodesWithoutGhost, node => node !== prevScope.dom);\n          return closestChildCaretCandidateNodeRect(uncheckedChildren, clientX, clientY, true);\n        }).orThunk(() => {\n          const parent = eq(scope, rootElm) ? Optional.none() : parentElement(scope);\n          return parent.bind(newScope => helper(newScope, Optional.some(scope)));\n        });\n      };\n      return helper(scope, Optional.none());\n    };\n    const closestCaretCandidateNodeRect = (root, clientX, clientY) => {\n      const rootElm = SugarElement.fromDom(root);\n      const ownerDoc = documentOrOwner(rootElm);\n      const elementAtPoint = SugarElement.fromPoint(ownerDoc, clientX, clientY).filter(elm => contains(rootElm, elm));\n      const element = elementAtPoint.getOr(rootElm);\n      return traverseUp(rootElm, element, clientX, clientY);\n    };\n    const closestFakeCaretCandidate = (root, clientX, clientY) => closestCaretCandidateNodeRect(root, clientX, clientY).filter(rect => isFakeCaretTarget(rect.node)).map(rect => clientInfo(rect, clientX));\n\n    const getAbsolutePosition = elm => {\n      var _a, _b;\n      const clientRect = elm.getBoundingClientRect();\n      const doc = elm.ownerDocument;\n      const docElem = doc.documentElement;\n      const win = doc.defaultView;\n      return {\n        top: clientRect.top + ((_a = win === null || win === void 0 ? void 0 : win.scrollY) !== null && _a !== void 0 ? _a : 0) - docElem.clientTop,\n        left: clientRect.left + ((_b = win === null || win === void 0 ? void 0 : win.scrollX) !== null && _b !== void 0 ? _b : 0) - docElem.clientLeft\n      };\n    };\n    const getBodyPosition = editor => editor.inline ? getAbsolutePosition(editor.getBody()) : {\n      left: 0,\n      top: 0\n    };\n    const getScrollPosition = editor => {\n      const body = editor.getBody();\n      return editor.inline ? {\n        left: body.scrollLeft,\n        top: body.scrollTop\n      } : {\n        left: 0,\n        top: 0\n      };\n    };\n    const getBodyScroll = editor => {\n      const body = editor.getBody(), docElm = editor.getDoc().documentElement;\n      const inlineScroll = {\n        left: body.scrollLeft,\n        top: body.scrollTop\n      };\n      const iframeScroll = {\n        left: body.scrollLeft || docElm.scrollLeft,\n        top: body.scrollTop || docElm.scrollTop\n      };\n      return editor.inline ? inlineScroll : iframeScroll;\n    };\n    const getMousePosition = (editor, event) => {\n      if (event.target.ownerDocument !== editor.getDoc()) {\n        const iframePosition = getAbsolutePosition(editor.getContentAreaContainer());\n        const scrollPosition = getBodyScroll(editor);\n        return {\n          left: event.pageX - iframePosition.left + scrollPosition.left,\n          top: event.pageY - iframePosition.top + scrollPosition.top\n        };\n      }\n      return {\n        left: event.pageX,\n        top: event.pageY\n      };\n    };\n    const calculatePosition = (bodyPosition, scrollPosition, mousePosition) => ({\n      pageX: mousePosition.left - bodyPosition.left + scrollPosition.left,\n      pageY: mousePosition.top - bodyPosition.top + scrollPosition.top\n    });\n    const calc = (editor, event) => calculatePosition(getBodyPosition(editor), getScrollPosition(editor), getMousePosition(editor, event));\n\n    const getTargetProps = target => ({\n      target,\n      srcElement: target\n    });\n    const makeDndEventFromMouseEvent = (type, mouseEvent, target, dataTransfer) => ({\n      ...mouseEvent,\n      dataTransfer,\n      type,\n      ...getTargetProps(target)\n    });\n    const makeDndEvent = (type, target, dataTransfer) => {\n      const fail = die('Function not supported on simulated event.');\n      const event = {\n        bubbles: true,\n        cancelBubble: false,\n        cancelable: true,\n        composed: false,\n        currentTarget: null,\n        defaultPrevented: false,\n        eventPhase: 0,\n        isTrusted: true,\n        returnValue: false,\n        timeStamp: 0,\n        type,\n        composedPath: fail,\n        initEvent: fail,\n        preventDefault: noop,\n        stopImmediatePropagation: noop,\n        stopPropagation: noop,\n        AT_TARGET: window.Event.AT_TARGET,\n        BUBBLING_PHASE: window.Event.BUBBLING_PHASE,\n        CAPTURING_PHASE: window.Event.CAPTURING_PHASE,\n        NONE: window.Event.NONE,\n        altKey: false,\n        button: 0,\n        buttons: 0,\n        clientX: 0,\n        clientY: 0,\n        ctrlKey: false,\n        metaKey: false,\n        movementX: 0,\n        movementY: 0,\n        offsetX: 0,\n        offsetY: 0,\n        pageX: 0,\n        pageY: 0,\n        relatedTarget: null,\n        screenX: 0,\n        screenY: 0,\n        shiftKey: false,\n        x: 0,\n        y: 0,\n        detail: 0,\n        view: null,\n        which: 0,\n        initUIEvent: fail,\n        initMouseEvent: fail,\n        getModifierState: fail,\n        dataTransfer,\n        ...getTargetProps(target)\n      };\n      return event;\n    };\n    const makeDataTransferCopyForDragEvent = (dataTransfer, eventType) => {\n      const copy = cloneDataTransfer(dataTransfer);\n      if (eventType === 'dragstart') {\n        setDragstartEvent(copy);\n        setReadWriteMode(copy);\n      } else if (eventType === 'drop') {\n        setDropEvent(copy);\n        setReadOnlyMode(copy);\n      } else {\n        setDragendEvent(copy);\n        setProtectedMode(copy);\n      }\n      return copy;\n    };\n    const makeDragEvent = (type, target, dataTransfer, mouseEvent) => {\n      const dataTransferForDispatch = makeDataTransferCopyForDragEvent(dataTransfer, type);\n      return isUndefined(mouseEvent) ? makeDndEvent(type, target, dataTransferForDispatch) : makeDndEventFromMouseEvent(type, mouseEvent, target, dataTransferForDispatch);\n    };\n\n    const scrollPixelsPerInterval = 32;\n    const scrollIntervalValue = 100;\n    const mouseRangeToTriggerScrollInsideEditor = 8;\n    const mouseRangeToTriggerScrollOutsideEditor = 16;\n    const isContentEditableFalse$1 = isContentEditableFalse$b;\n    const isContentEditable = or(isContentEditableFalse$1, isContentEditableTrue$3);\n    const isDraggable = (dom, rootElm, elm) => isContentEditableFalse$1(elm) && elm !== rootElm && dom.isEditable(elm.parentElement);\n    const isValidDropTarget = (editor, targetElement, dragElement) => {\n      if (isNullable(targetElement)) {\n        return false;\n      } else if (targetElement === dragElement || editor.dom.isChildOf(targetElement, dragElement)) {\n        return false;\n      } else {\n        return editor.dom.isEditable(targetElement);\n      }\n    };\n    const createGhost = (editor, elm, width, height) => {\n      const dom = editor.dom;\n      const clonedElm = elm.cloneNode(true);\n      dom.setStyles(clonedElm, {\n        width,\n        height\n      });\n      dom.setAttrib(clonedElm, 'data-mce-selected', null);\n      const ghostElm = dom.create('div', {\n        'class': 'mce-drag-container',\n        'data-mce-bogus': 'all',\n        'unselectable': 'on',\n        'contenteditable': 'false'\n      });\n      dom.setStyles(ghostElm, {\n        position: 'absolute',\n        opacity: 0.5,\n        overflow: 'hidden',\n        border: 0,\n        padding: 0,\n        margin: 0,\n        width,\n        height\n      });\n      dom.setStyles(clonedElm, {\n        margin: 0,\n        boxSizing: 'border-box'\n      });\n      ghostElm.appendChild(clonedElm);\n      return ghostElm;\n    };\n    const appendGhostToBody = (ghostElm, bodyElm) => {\n      if (ghostElm.parentNode !== bodyElm) {\n        bodyElm.appendChild(ghostElm);\n      }\n    };\n    const scrollEditor = (direction, amount) => win => () => {\n      const current = direction === 'left' ? win.scrollX : win.scrollY;\n      win.scroll({\n        [direction]: current + amount,\n        behavior: 'smooth'\n      });\n    };\n    const scrollLeft = scrollEditor('left', -scrollPixelsPerInterval);\n    const scrollRight = scrollEditor('left', scrollPixelsPerInterval);\n    const scrollUp = scrollEditor('top', -scrollPixelsPerInterval);\n    const scrollDown = scrollEditor('top', scrollPixelsPerInterval);\n    const moveGhost = (ghostElm, position, width, height, maxX, maxY, mouseY, mouseX, contentAreaContainer, win, state, mouseEventOriginatedFromWithinTheEditor) => {\n      let overflowX = 0, overflowY = 0;\n      ghostElm.style.left = position.pageX + 'px';\n      ghostElm.style.top = position.pageY + 'px';\n      if (position.pageX + width > maxX) {\n        overflowX = position.pageX + width - maxX;\n      }\n      if (position.pageY + height > maxY) {\n        overflowY = position.pageY + height - maxY;\n      }\n      ghostElm.style.width = width - overflowX + 'px';\n      ghostElm.style.height = height - overflowY + 'px';\n      const clientHeight = contentAreaContainer.clientHeight;\n      const clientWidth = contentAreaContainer.clientWidth;\n      const outerMouseY = mouseY + contentAreaContainer.getBoundingClientRect().top;\n      const outerMouseX = mouseX + contentAreaContainer.getBoundingClientRect().left;\n      state.on(state => {\n        state.intervalId.clear();\n        if (state.dragging && mouseEventOriginatedFromWithinTheEditor) {\n          if (mouseY + mouseRangeToTriggerScrollInsideEditor >= clientHeight) {\n            state.intervalId.set(scrollDown(win));\n          } else if (mouseY - mouseRangeToTriggerScrollInsideEditor <= 0) {\n            state.intervalId.set(scrollUp(win));\n          } else if (mouseX + mouseRangeToTriggerScrollInsideEditor >= clientWidth) {\n            state.intervalId.set(scrollRight(win));\n          } else if (mouseX - mouseRangeToTriggerScrollInsideEditor <= 0) {\n            state.intervalId.set(scrollLeft(win));\n          } else if (outerMouseY + mouseRangeToTriggerScrollOutsideEditor >= window.innerHeight) {\n            state.intervalId.set(scrollDown(window));\n          } else if (outerMouseY - mouseRangeToTriggerScrollOutsideEditor <= 0) {\n            state.intervalId.set(scrollUp(window));\n          } else if (outerMouseX + mouseRangeToTriggerScrollOutsideEditor >= window.innerWidth) {\n            state.intervalId.set(scrollRight(window));\n          } else if (outerMouseX - mouseRangeToTriggerScrollOutsideEditor <= 0) {\n            state.intervalId.set(scrollLeft(window));\n          }\n        }\n      });\n    };\n    const removeElement = elm => {\n      if (elm && elm.parentNode) {\n        elm.parentNode.removeChild(elm);\n      }\n    };\n    const removeElementWithPadding = (dom, elm) => {\n      const parentBlock = dom.getParent(elm.parentNode, dom.isBlock);\n      removeElement(elm);\n      if (parentBlock && parentBlock !== dom.getRoot() && dom.isEmpty(parentBlock)) {\n        fillWithPaddingBr(SugarElement.fromDom(parentBlock));\n      }\n    };\n    const isLeftMouseButtonPressed = e => e.button === 0;\n    const applyRelPos = (state, position) => ({\n      pageX: position.pageX - state.relX,\n      pageY: position.pageY + 5\n    });\n    const start = (state, editor) => e => {\n      if (isLeftMouseButtonPressed(e)) {\n        const ceElm = find$2(editor.dom.getParents(e.target), isContentEditable).getOr(null);\n        if (isNonNullable(ceElm) && isDraggable(editor.dom, editor.getBody(), ceElm)) {\n          const elmPos = editor.dom.getPos(ceElm);\n          const bodyElm = editor.getBody();\n          const docElm = editor.getDoc().documentElement;\n          state.set({\n            element: ceElm,\n            dataTransfer: createDataTransfer(),\n            dragging: false,\n            screenX: e.screenX,\n            screenY: e.screenY,\n            maxX: (editor.inline ? bodyElm.scrollWidth : docElm.offsetWidth) - 2,\n            maxY: (editor.inline ? bodyElm.scrollHeight : docElm.offsetHeight) - 2,\n            relX: e.pageX - elmPos.x,\n            relY: e.pageY - elmPos.y,\n            width: ceElm.offsetWidth,\n            height: ceElm.offsetHeight,\n            ghost: createGhost(editor, ceElm, ceElm.offsetWidth, ceElm.offsetHeight),\n            intervalId: repeatable(scrollIntervalValue)\n          });\n        }\n      }\n    };\n    const placeCaretAt = (editor, clientX, clientY) => {\n      editor._selectionOverrides.hideFakeCaret();\n      closestFakeCaretCandidate(editor.getBody(), clientX, clientY).fold(() => editor.selection.placeCaretAt(clientX, clientY), caretInfo => {\n        const range = editor._selectionOverrides.showCaret(1, caretInfo.node, caretInfo.position === FakeCaretPosition.Before, false);\n        if (range) {\n          editor.selection.setRng(range);\n        } else {\n          editor.selection.placeCaretAt(clientX, clientY);\n        }\n      });\n    };\n    const dispatchDragEvent = (editor, type, target, dataTransfer, mouseEvent) => {\n      if (type === 'dragstart') {\n        setHtmlData(dataTransfer, editor.dom.getOuterHTML(target));\n      }\n      const event = makeDragEvent(type, target, dataTransfer, mouseEvent);\n      const args = editor.dispatch(type, event);\n      return args;\n    };\n    const move = (state, editor) => {\n      const throttledPlaceCaretAt = first$1((clientX, clientY) => placeCaretAt(editor, clientX, clientY), 0);\n      editor.on('remove', throttledPlaceCaretAt.cancel);\n      const state_ = state;\n      return e => state.on(state => {\n        const movement = Math.max(Math.abs(e.screenX - state.screenX), Math.abs(e.screenY - state.screenY));\n        if (!state.dragging && movement > 10) {\n          const args = dispatchDragEvent(editor, 'dragstart', state.element, state.dataTransfer, e);\n          if (isNonNullable(args.dataTransfer)) {\n            state.dataTransfer = args.dataTransfer;\n          }\n          if (args.isDefaultPrevented()) {\n            return;\n          }\n          state.dragging = true;\n          editor.focus();\n        }\n        if (state.dragging) {\n          const mouseEventOriginatedFromWithinTheEditor = e.currentTarget === editor.getDoc().documentElement;\n          const targetPos = applyRelPos(state, calc(editor, e));\n          appendGhostToBody(state.ghost, editor.getBody());\n          moveGhost(state.ghost, targetPos, state.width, state.height, state.maxX, state.maxY, e.clientY, e.clientX, editor.getContentAreaContainer(), editor.getWin(), state_, mouseEventOriginatedFromWithinTheEditor);\n          throttledPlaceCaretAt.throttle(e.clientX, e.clientY);\n        }\n      });\n    };\n    const getRawTarget = selection => {\n      const sel = selection.getSel();\n      if (isNonNullable(sel)) {\n        const rng = sel.getRangeAt(0);\n        const startContainer = rng.startContainer;\n        return isText$a(startContainer) ? startContainer.parentNode : startContainer;\n      } else {\n        return null;\n      }\n    };\n    const drop = (state, editor) => e => {\n      state.on(state => {\n        var _a;\n        state.intervalId.clear();\n        if (state.dragging) {\n          if (isValidDropTarget(editor, getRawTarget(editor.selection), state.element)) {\n            const dropTarget = (_a = editor.getDoc().elementFromPoint(e.clientX, e.clientY)) !== null && _a !== void 0 ? _a : editor.getBody();\n            const args = dispatchDragEvent(editor, 'drop', dropTarget, state.dataTransfer, e);\n            if (!args.isDefaultPrevented()) {\n              editor.undoManager.transact(() => {\n                removeElementWithPadding(editor.dom, state.element);\n                getHtmlData(state.dataTransfer).each(content => editor.insertContent(content));\n                editor._selectionOverrides.hideFakeCaret();\n              });\n            }\n          }\n          dispatchDragEvent(editor, 'dragend', editor.getBody(), state.dataTransfer, e);\n        }\n      });\n      removeDragState(state);\n    };\n    const stopDragging = (state, editor, e) => {\n      state.on(state => {\n        state.intervalId.clear();\n        if (state.dragging) {\n          e.fold(() => dispatchDragEvent(editor, 'dragend', state.element, state.dataTransfer), mouseEvent => dispatchDragEvent(editor, 'dragend', state.element, state.dataTransfer, mouseEvent));\n        }\n      });\n      removeDragState(state);\n    };\n    const stop = (state, editor) => e => stopDragging(state, editor, Optional.some(e));\n    const removeDragState = state => {\n      state.on(state => {\n        state.intervalId.clear();\n        removeElement(state.ghost);\n      });\n      state.clear();\n    };\n    const bindFakeDragEvents = editor => {\n      const state = value$2();\n      const pageDom = DOMUtils.DOM;\n      const rootDocument = document;\n      const dragStartHandler = start(state, editor);\n      const dragHandler = move(state, editor);\n      const dropHandler = drop(state, editor);\n      const dragEndHandler = stop(state, editor);\n      editor.on('mousedown', dragStartHandler);\n      editor.on('mousemove', dragHandler);\n      editor.on('mouseup', dropHandler);\n      pageDom.bind(rootDocument, 'mousemove', dragHandler);\n      pageDom.bind(rootDocument, 'mouseup', dragEndHandler);\n      editor.on('remove', () => {\n        pageDom.unbind(rootDocument, 'mousemove', dragHandler);\n        pageDom.unbind(rootDocument, 'mouseup', dragEndHandler);\n      });\n      editor.on('keydown', e => {\n        if (e.keyCode === VK.ESC) {\n          stopDragging(state, editor, Optional.none());\n        }\n      });\n    };\n    const blockUnsupportedFileDrop = editor => {\n      const preventFileDrop = e => {\n        if (!e.isDefaultPrevented()) {\n          const dataTransfer = e.dataTransfer;\n          if (dataTransfer && (contains$2(dataTransfer.types, 'Files') || dataTransfer.files.length > 0)) {\n            e.preventDefault();\n            if (e.type === 'drop') {\n              displayError(editor, 'Dropped file type is not supported');\n            }\n          }\n        }\n      };\n      const preventFileDropIfUIElement = e => {\n        if (isUIElement(editor, e.target)) {\n          preventFileDrop(e);\n        }\n      };\n      const setup = () => {\n        const pageDom = DOMUtils.DOM;\n        const dom = editor.dom;\n        const doc = document;\n        const editorRoot = editor.inline ? editor.getBody() : editor.getDoc();\n        const eventNames = [\n          'drop',\n          'dragover'\n        ];\n        each$e(eventNames, name => {\n          pageDom.bind(doc, name, preventFileDropIfUIElement);\n          dom.bind(editorRoot, name, preventFileDrop);\n        });\n        editor.on('remove', () => {\n          each$e(eventNames, name => {\n            pageDom.unbind(doc, name, preventFileDropIfUIElement);\n            dom.unbind(editorRoot, name, preventFileDrop);\n          });\n        });\n      };\n      editor.on('init', () => {\n        Delay.setEditorTimeout(editor, setup, 0);\n      });\n    };\n    const init$2 = editor => {\n      bindFakeDragEvents(editor);\n      if (shouldBlockUnsupportedDrop(editor)) {\n        blockUnsupportedFileDrop(editor);\n      }\n    };\n\n    const setup$4 = editor => {\n      const renderFocusCaret = first$1(() => {\n        if (!editor.removed && editor.getBody().contains(document.activeElement)) {\n          const rng = editor.selection.getRng();\n          if (rng.collapsed) {\n            const caretRange = renderRangeCaret(editor, rng, false);\n            editor.selection.setRng(caretRange);\n          }\n        }\n      }, 0);\n      editor.on('focus', () => {\n        renderFocusCaret.throttle();\n      });\n      editor.on('blur', () => {\n        renderFocusCaret.cancel();\n      });\n    };\n\n    const setup$3 = editor => {\n      editor.on('init', () => {\n        editor.on('focusin', e => {\n          const target = e.target;\n          if (isMedia$2(target)) {\n            const ceRoot = getContentEditableRoot$1(editor.getBody(), target);\n            const node = isContentEditableFalse$b(ceRoot) ? ceRoot : target;\n            if (editor.selection.getNode() !== node) {\n              selectNode(editor, node).each(rng => editor.selection.setRng(rng));\n            }\n          }\n        });\n      });\n    };\n\n    const isContentEditableFalse = isContentEditableFalse$b;\n    const getContentEditableRoot = (editor, node) => getContentEditableRoot$1(editor.getBody(), node);\n    const SelectionOverrides = editor => {\n      const selection = editor.selection, dom = editor.dom;\n      const rootNode = editor.getBody();\n      const fakeCaret = FakeCaret(editor, rootNode, dom.isBlock, () => hasFocus(editor));\n      const realSelectionId = 'sel-' + dom.uniqueId();\n      const elementSelectionAttr = 'data-mce-selected';\n      let selectedElement;\n      const isFakeSelectionElement = node => isNonNullable(node) && dom.hasClass(node, 'mce-offscreen-selection');\n      const isFakeSelectionTargetElement = node => node !== rootNode && (isContentEditableFalse(node) || isMedia$2(node)) && dom.isChildOf(node, rootNode) && dom.isEditable(node.parentNode);\n      const setRange = range => {\n        if (range) {\n          selection.setRng(range);\n        }\n      };\n      const showCaret = (direction, node, before, scrollIntoView = true) => {\n        const e = editor.dispatch('ShowCaret', {\n          target: node,\n          direction,\n          before\n        });\n        if (e.isDefaultPrevented()) {\n          return null;\n        }\n        if (scrollIntoView) {\n          selection.scrollIntoView(node, direction === -1);\n        }\n        return fakeCaret.show(before, node);\n      };\n      const showBlockCaretContainer = blockCaretContainer => {\n        if (blockCaretContainer.hasAttribute('data-mce-caret')) {\n          showCaretContainerBlock(blockCaretContainer);\n          selection.scrollIntoView(blockCaretContainer);\n        }\n      };\n      const registerEvents = () => {\n        editor.on('click', e => {\n          if (!dom.isEditable(e.target)) {\n            e.preventDefault();\n            editor.focus();\n          }\n        });\n        editor.on('blur NewBlock', removeElementSelection);\n        editor.on('ResizeWindow FullscreenStateChanged', fakeCaret.reposition);\n        editor.on('tap', e => {\n          const targetElm = e.target;\n          const contentEditableRoot = getContentEditableRoot(editor, targetElm);\n          if (isContentEditableFalse(contentEditableRoot)) {\n            e.preventDefault();\n            selectNode(editor, contentEditableRoot).each(setElementSelection);\n          } else if (isFakeSelectionTargetElement(targetElm)) {\n            selectNode(editor, targetElm).each(setElementSelection);\n          }\n        }, true);\n        editor.on('mousedown', e => {\n          const targetElm = e.target;\n          if (targetElm !== rootNode && targetElm.nodeName !== 'HTML' && !dom.isChildOf(targetElm, rootNode)) {\n            return;\n          }\n          if (!isXYInContentArea(editor, e.clientX, e.clientY)) {\n            return;\n          }\n          removeElementSelection();\n          hideFakeCaret();\n          const closestContentEditable = getContentEditableRoot(editor, targetElm);\n          if (isContentEditableFalse(closestContentEditable)) {\n            e.preventDefault();\n            selectNode(editor, closestContentEditable).each(setElementSelection);\n          } else {\n            closestFakeCaretCandidate(rootNode, e.clientX, e.clientY).each(caretInfo => {\n              e.preventDefault();\n              const range = showCaret(1, caretInfo.node, caretInfo.position === FakeCaretPosition.Before, false);\n              setRange(range);\n              if (isHTMLElement(closestContentEditable)) {\n                closestContentEditable.focus();\n              } else {\n                editor.getBody().focus();\n              }\n            });\n          }\n        });\n        editor.on('keypress', e => {\n          if (VK.modifierPressed(e)) {\n            return;\n          }\n          if (isContentEditableFalse(selection.getNode())) {\n            e.preventDefault();\n          }\n        });\n        editor.on('GetSelectionRange', e => {\n          let rng = e.range;\n          if (selectedElement) {\n            if (!selectedElement.parentNode) {\n              selectedElement = null;\n              return;\n            }\n            rng = rng.cloneRange();\n            rng.selectNode(selectedElement);\n            e.range = rng;\n          }\n        });\n        editor.on('SetSelectionRange', e => {\n          e.range = normalizeVoidElementSelection(e.range);\n          const rng = setElementSelection(e.range, e.forward);\n          if (rng) {\n            e.range = rng;\n          }\n        });\n        const isPasteBin = node => isElement$6(node) && node.id === 'mcepastebin';\n        editor.on('AfterSetSelectionRange', e => {\n          const rng = e.range;\n          const parent = rng.startContainer.parentElement;\n          if (!isRangeInCaretContainer(rng) && !isPasteBin(parent)) {\n            hideFakeCaret();\n          }\n          if (!isFakeSelectionElement(parent)) {\n            removeElementSelection();\n          }\n        });\n        init$2(editor);\n        setup$4(editor);\n        setup$3(editor);\n      };\n      const isWithinCaretContainer = node => isCaretContainer$2(node) || startsWithCaretContainer$1(node) || endsWithCaretContainer$1(node);\n      const isRangeInCaretContainer = rng => isWithinCaretContainer(rng.startContainer) || isWithinCaretContainer(rng.endContainer);\n      const normalizeVoidElementSelection = rng => {\n        const voidElements = editor.schema.getVoidElements();\n        const newRng = dom.createRng();\n        const startContainer = rng.startContainer;\n        const startOffset = rng.startOffset;\n        const endContainer = rng.endContainer;\n        const endOffset = rng.endOffset;\n        if (has$2(voidElements, startContainer.nodeName.toLowerCase())) {\n          if (startOffset === 0) {\n            newRng.setStartBefore(startContainer);\n          } else {\n            newRng.setStartAfter(startContainer);\n          }\n        } else {\n          newRng.setStart(startContainer, startOffset);\n        }\n        if (has$2(voidElements, endContainer.nodeName.toLowerCase())) {\n          if (endOffset === 0) {\n            newRng.setEndBefore(endContainer);\n          } else {\n            newRng.setEndAfter(endContainer);\n          }\n        } else {\n          newRng.setEnd(endContainer, endOffset);\n        }\n        return newRng;\n      };\n      const setupOffscreenSelection = (node, targetClone) => {\n        const body = SugarElement.fromDom(editor.getBody());\n        const doc = editor.getDoc();\n        const realSelectionContainer = descendant$1(body, '#' + realSelectionId).getOrThunk(() => {\n          const newContainer = SugarElement.fromHtml('<div data-mce-bogus=\"all\" class=\"mce-offscreen-selection\"></div>', doc);\n          set$3(newContainer, 'id', realSelectionId);\n          append$1(body, newContainer);\n          return newContainer;\n        });\n        const newRange = dom.createRng();\n        empty(realSelectionContainer);\n        append(realSelectionContainer, [\n          SugarElement.fromText(nbsp, doc),\n          SugarElement.fromDom(targetClone),\n          SugarElement.fromText(nbsp, doc)\n        ]);\n        newRange.setStart(realSelectionContainer.dom.firstChild, 1);\n        newRange.setEnd(realSelectionContainer.dom.lastChild, 0);\n        setAll(realSelectionContainer, { top: dom.getPos(node, editor.getBody()).y + 'px' });\n        focus$1(realSelectionContainer);\n        const sel = selection.getSel();\n        if (sel) {\n          sel.removeAllRanges();\n          sel.addRange(newRange);\n        }\n        return newRange;\n      };\n      const selectElement = elm => {\n        const targetClone = elm.cloneNode(true);\n        const e = editor.dispatch('ObjectSelected', {\n          target: elm,\n          targetClone\n        });\n        if (e.isDefaultPrevented()) {\n          return null;\n        }\n        const range = setupOffscreenSelection(elm, e.targetClone);\n        const nodeElm = SugarElement.fromDom(elm);\n        each$e(descendants(SugarElement.fromDom(editor.getBody()), `*[${ elementSelectionAttr }]`), elm => {\n          if (!eq(nodeElm, elm)) {\n            remove$a(elm, elementSelectionAttr);\n          }\n        });\n        if (!dom.getAttrib(elm, elementSelectionAttr)) {\n          elm.setAttribute(elementSelectionAttr, '1');\n        }\n        selectedElement = elm;\n        hideFakeCaret();\n        return range;\n      };\n      const setElementSelection = (range, forward) => {\n        if (!range) {\n          return null;\n        }\n        if (range.collapsed) {\n          if (!isRangeInCaretContainer(range)) {\n            const dir = forward ? 1 : -1;\n            const caretPosition = getNormalizedRangeEndPoint(dir, rootNode, range);\n            const beforeNode = caretPosition.getNode(!forward);\n            if (isNonNullable(beforeNode)) {\n              if (isFakeCaretTarget(beforeNode)) {\n                return showCaret(dir, beforeNode, forward ? !caretPosition.isAtEnd() : false, false);\n              }\n              if (isCaretContainerInline(beforeNode) && isContentEditableFalse$b(beforeNode.nextSibling)) {\n                const rng = dom.createRng();\n                rng.setStart(beforeNode, 0);\n                rng.setEnd(beforeNode, 0);\n                return rng;\n              }\n            }\n            const afterNode = caretPosition.getNode(forward);\n            if (isNonNullable(afterNode)) {\n              if (isFakeCaretTarget(afterNode)) {\n                return showCaret(dir, afterNode, forward ? false : !caretPosition.isAtEnd(), false);\n              }\n              if (isCaretContainerInline(afterNode) && isContentEditableFalse$b(afterNode.previousSibling)) {\n                const rng = dom.createRng();\n                rng.setStart(afterNode, 1);\n                rng.setEnd(afterNode, 1);\n                return rng;\n              }\n            }\n          }\n          return null;\n        }\n        let startContainer = range.startContainer;\n        let startOffset = range.startOffset;\n        const endOffset = range.endOffset;\n        if (isText$a(startContainer) && startOffset === 0 && isContentEditableFalse(startContainer.parentNode)) {\n          startContainer = startContainer.parentNode;\n          startOffset = dom.nodeIndex(startContainer);\n          startContainer = startContainer.parentNode;\n        }\n        if (!isElement$6(startContainer)) {\n          return null;\n        }\n        if (endOffset === startOffset + 1 && startContainer === range.endContainer) {\n          const node = startContainer.childNodes[startOffset];\n          if (isFakeSelectionTargetElement(node)) {\n            return selectElement(node);\n          }\n        }\n        return null;\n      };\n      const removeElementSelection = () => {\n        if (selectedElement) {\n          selectedElement.removeAttribute(elementSelectionAttr);\n        }\n        descendant$1(SugarElement.fromDom(editor.getBody()), '#' + realSelectionId).each(remove$5);\n        selectedElement = null;\n      };\n      const destroy = () => {\n        fakeCaret.destroy();\n        selectedElement = null;\n      };\n      const hideFakeCaret = () => {\n        fakeCaret.hide();\n      };\n      if (!isRtc(editor)) {\n        registerEvents();\n      }\n      return {\n        showCaret,\n        showBlockCaretContainer,\n        hideFakeCaret,\n        destroy\n      };\n    };\n\n    const getNormalizedTextOffset = (container, offset) => {\n      let normalizedOffset = offset;\n      for (let node = container.previousSibling; isText$a(node); node = node.previousSibling) {\n        normalizedOffset += node.data.length;\n      }\n      return normalizedOffset;\n    };\n    const generatePath = (dom, root, node, offset, normalized) => {\n      if (isText$a(node) && (offset < 0 || offset > node.data.length)) {\n        return [];\n      }\n      const p = normalized && isText$a(node) ? [getNormalizedTextOffset(node, offset)] : [offset];\n      let current = node;\n      while (current !== root && current.parentNode) {\n        p.push(dom.nodeIndex(current, normalized));\n        current = current.parentNode;\n      }\n      return current === root ? p.reverse() : [];\n    };\n    const generatePathRange = (dom, root, startNode, startOffset, endNode, endOffset, normalized = false) => {\n      const start = generatePath(dom, root, startNode, startOffset, normalized);\n      const end = generatePath(dom, root, endNode, endOffset, normalized);\n      return {\n        start,\n        end\n      };\n    };\n    const resolvePath = (root, path) => {\n      const nodePath = path.slice();\n      const offset = nodePath.pop();\n      if (!isNumber(offset)) {\n        return Optional.none();\n      } else {\n        const resolvedNode = foldl(nodePath, (optNode, index) => optNode.bind(node => Optional.from(node.childNodes[index])), Optional.some(root));\n        return resolvedNode.bind(node => {\n          if (isText$a(node) && (offset < 0 || offset > node.data.length)) {\n            return Optional.none();\n          } else {\n            return Optional.some({\n              node,\n              offset\n            });\n          }\n        });\n      }\n    };\n    const resolvePathRange = (root, range) => resolvePath(root, range.start).bind(({\n      node: startNode,\n      offset: startOffset\n    }) => resolvePath(root, range.end).map(({\n      node: endNode,\n      offset: endOffset\n    }) => {\n      const rng = document.createRange();\n      rng.setStart(startNode, startOffset);\n      rng.setEnd(endNode, endOffset);\n      return rng;\n    }));\n    const generatePathRangeFromRange = (dom, root, range, normalized = false) => generatePathRange(dom, root, range.startContainer, range.startOffset, range.endContainer, range.endOffset, normalized);\n\n    const cleanEmptyNodes = (dom, node, isRoot) => {\n      if (node && dom.isEmpty(node) && !isRoot(node)) {\n        const parent = node.parentNode;\n        dom.remove(node, isText$a(node.firstChild) && isWhitespaceText(node.firstChild.data));\n        cleanEmptyNodes(dom, parent, isRoot);\n      }\n    };\n    const deleteRng = (dom, rng, isRoot, clean = true) => {\n      const startParent = rng.startContainer.parentNode;\n      const endParent = rng.endContainer.parentNode;\n      rng.deleteContents();\n      if (clean && !isRoot(rng.startContainer)) {\n        if (isText$a(rng.startContainer) && rng.startContainer.data.length === 0) {\n          dom.remove(rng.startContainer);\n        }\n        if (isText$a(rng.endContainer) && rng.endContainer.data.length === 0) {\n          dom.remove(rng.endContainer);\n        }\n        cleanEmptyNodes(dom, startParent, isRoot);\n        if (startParent !== endParent) {\n          cleanEmptyNodes(dom, endParent, isRoot);\n        }\n      }\n    };\n    const getParentBlock = (editor, rng) => Optional.from(editor.dom.getParent(rng.startContainer, editor.dom.isBlock));\n    const resolveFromDynamicPatterns = (patternSet, block, beforeText) => {\n      const dynamicPatterns = patternSet.dynamicPatternsLookup({\n        text: beforeText,\n        block\n      });\n      return {\n        ...patternSet,\n        blockPatterns: getBlockPatterns(dynamicPatterns).concat(patternSet.blockPatterns),\n        inlinePatterns: getInlinePatterns(dynamicPatterns).concat(patternSet.inlinePatterns)\n      };\n    };\n    const getBeforeText = (dom, block, node, offset) => {\n      const rng = dom.createRng();\n      rng.setStart(block, 0);\n      rng.setEnd(node, offset);\n      return rng.toString();\n    };\n\n    const startsWithSingleSpace = s => /^\\s[^\\s]/.test(s);\n    const stripPattern = (dom, block, pattern) => {\n      const firstTextNode = textAfter(block, 0, block);\n      firstTextNode.each(spot => {\n        const node = spot.container;\n        scanRight(node, pattern.start.length, block).each(end => {\n          const rng = dom.createRng();\n          rng.setStart(node, 0);\n          rng.setEnd(end.container, end.offset);\n          deleteRng(dom, rng, e => e === block);\n        });\n        const text = SugarElement.fromDom(node);\n        const textContent = get$3(text);\n        if (startsWithSingleSpace(textContent)) {\n          set(text, textContent.slice(1));\n        }\n      });\n    };\n    const applyPattern$1 = (editor, match) => {\n      const dom = editor.dom;\n      const pattern = match.pattern;\n      const rng = resolvePathRange(dom.getRoot(), match.range).getOrDie('Unable to resolve path range');\n      const isBlockFormatName = (name, formatter) => {\n        const formatSet = formatter.get(name);\n        return isArray$1(formatSet) && head(formatSet).exists(format => has$2(format, 'block'));\n      };\n      getParentBlock(editor, rng).each(block => {\n        if (pattern.type === 'block-format') {\n          if (isBlockFormatName(pattern.format, editor.formatter)) {\n            editor.undoManager.transact(() => {\n              stripPattern(editor.dom, block, pattern);\n              editor.formatter.apply(pattern.format);\n            });\n          }\n        } else if (pattern.type === 'block-command') {\n          editor.undoManager.transact(() => {\n            stripPattern(editor.dom, block, pattern);\n            editor.execCommand(pattern.cmd, false, pattern.value);\n          });\n        }\n      });\n      return true;\n    };\n    const sortPatterns$1 = patterns => sort(patterns, (a, b) => b.start.length - a.start.length);\n    const findPattern$1 = (patterns, text) => {\n      const sortedPatterns = sortPatterns$1(patterns);\n      const nuText = text.replace(nbsp, ' ');\n      return find$2(sortedPatterns, pattern => text.indexOf(pattern.start) === 0 || nuText.indexOf(pattern.start) === 0);\n    };\n    const findPatterns$1 = (editor, block, patternSet, normalizedMatches) => {\n      var _a;\n      const dom = editor.dom;\n      const forcedRootBlock = getForcedRootBlock(editor);\n      if (!dom.is(block, forcedRootBlock)) {\n        return [];\n      }\n      const blockText = (_a = block.textContent) !== null && _a !== void 0 ? _a : '';\n      return findPattern$1(patternSet.blockPatterns, blockText).map(pattern => {\n        if (Tools.trim(blockText).length === pattern.start.length) {\n          return [];\n        }\n        return [{\n            pattern,\n            range: generatePathRange(dom, dom.getRoot(), block, 0, block, 0, normalizedMatches)\n          }];\n      }).getOr([]);\n    };\n    const applyMatches$1 = (editor, matches) => {\n      if (matches.length === 0) {\n        return;\n      }\n      const bookmark = editor.selection.getBookmark();\n      each$e(matches, match => applyPattern$1(editor, match));\n      editor.selection.moveToBookmark(bookmark);\n    };\n\n    const newMarker = (dom, id) => dom.create('span', {\n      'data-mce-type': 'bookmark',\n      id\n    });\n    const rangeFromMarker = (dom, marker) => {\n      const rng = dom.createRng();\n      rng.setStartAfter(marker.start);\n      rng.setEndBefore(marker.end);\n      return rng;\n    };\n    const createMarker = (dom, markerPrefix, pathRange) => {\n      const rng = resolvePathRange(dom.getRoot(), pathRange).getOrDie('Unable to resolve path range');\n      const startNode = rng.startContainer;\n      const endNode = rng.endContainer;\n      const textEnd = rng.endOffset === 0 ? endNode : endNode.splitText(rng.endOffset);\n      const textStart = rng.startOffset === 0 ? startNode : startNode.splitText(rng.startOffset);\n      const startParentNode = textStart.parentNode;\n      const endParentNode = textEnd.parentNode;\n      return {\n        prefix: markerPrefix,\n        end: endParentNode.insertBefore(newMarker(dom, markerPrefix + '-end'), textEnd),\n        start: startParentNode.insertBefore(newMarker(dom, markerPrefix + '-start'), textStart)\n      };\n    };\n    const removeMarker = (dom, marker, isRoot) => {\n      cleanEmptyNodes(dom, dom.get(marker.prefix + '-end'), isRoot);\n      cleanEmptyNodes(dom, dom.get(marker.prefix + '-start'), isRoot);\n    };\n\n    const isReplacementPattern = pattern => pattern.start.length === 0;\n    const matchesPattern = patternContent => (element, offset) => {\n      const text = element.data;\n      const searchText = text.substring(0, offset);\n      const startEndIndex = searchText.lastIndexOf(patternContent.charAt(patternContent.length - 1));\n      const startIndex = searchText.lastIndexOf(patternContent);\n      if (startIndex !== -1) {\n        return startIndex + patternContent.length;\n      } else if (startEndIndex !== -1) {\n        return startEndIndex + 1;\n      } else {\n        return -1;\n      }\n    };\n    const findPatternStartFromSpot = (dom, pattern, block, spot) => {\n      const startPattern = pattern.start;\n      const startSpot = repeatLeft(dom, spot.container, spot.offset, matchesPattern(startPattern), block);\n      return startSpot.bind(spot => {\n        var _a, _b;\n        const startPatternIndex = (_b = (_a = block.textContent) === null || _a === void 0 ? void 0 : _a.indexOf(startPattern)) !== null && _b !== void 0 ? _b : -1;\n        const isCompleteMatch = startPatternIndex !== -1 && spot.offset >= startPatternIndex + startPattern.length;\n        if (isCompleteMatch) {\n          const rng = dom.createRng();\n          rng.setStart(spot.container, spot.offset - startPattern.length);\n          rng.setEnd(spot.container, spot.offset);\n          return Optional.some(rng);\n        } else {\n          const offset = spot.offset - startPattern.length;\n          return scanLeft(spot.container, offset, block).map(nextSpot => {\n            const rng = dom.createRng();\n            rng.setStart(nextSpot.container, nextSpot.offset);\n            rng.setEnd(spot.container, spot.offset);\n            return rng;\n          }).filter(rng => rng.toString() === startPattern).orThunk(() => findPatternStartFromSpot(dom, pattern, block, point(spot.container, 0)));\n        }\n      });\n    };\n    const findPatternStart = (dom, pattern, node, offset, block, requireGap = false) => {\n      if (pattern.start.length === 0 && !requireGap) {\n        const rng = dom.createRng();\n        rng.setStart(node, offset);\n        rng.setEnd(node, offset);\n        return Optional.some(rng);\n      }\n      return textBefore(node, offset, block).bind(spot => {\n        const start = findPatternStartFromSpot(dom, pattern, block, spot);\n        return start.bind(startRange => {\n          var _a;\n          if (requireGap) {\n            if (startRange.endContainer === spot.container && startRange.endOffset === spot.offset) {\n              return Optional.none();\n            } else if (spot.offset === 0 && ((_a = startRange.endContainer.textContent) === null || _a === void 0 ? void 0 : _a.length) === startRange.endOffset) {\n              return Optional.none();\n            }\n          }\n          return Optional.some(startRange);\n        });\n      });\n    };\n    const findPattern = (editor, block, details, normalizedMatches) => {\n      const dom = editor.dom;\n      const root = dom.getRoot();\n      const pattern = details.pattern;\n      const endNode = details.position.container;\n      const endOffset = details.position.offset;\n      return scanLeft(endNode, endOffset - details.pattern.end.length, block).bind(spot => {\n        const endPathRng = generatePathRange(dom, root, spot.container, spot.offset, endNode, endOffset, normalizedMatches);\n        if (isReplacementPattern(pattern)) {\n          return Optional.some({\n            matches: [{\n                pattern,\n                startRng: endPathRng,\n                endRng: endPathRng\n              }],\n            position: spot\n          });\n        } else {\n          const resultsOpt = findPatternsRec(editor, details.remainingPatterns, spot.container, spot.offset, block, normalizedMatches);\n          const results = resultsOpt.getOr({\n            matches: [],\n            position: spot\n          });\n          const pos = results.position;\n          const start = findPatternStart(dom, pattern, pos.container, pos.offset, block, resultsOpt.isNone());\n          return start.map(startRng => {\n            const startPathRng = generatePathRangeFromRange(dom, root, startRng, normalizedMatches);\n            return {\n              matches: results.matches.concat([{\n                  pattern,\n                  startRng: startPathRng,\n                  endRng: endPathRng\n                }]),\n              position: point(startRng.startContainer, startRng.startOffset)\n            };\n          });\n        }\n      });\n    };\n    const findPatternsRec = (editor, patterns, node, offset, block, normalizedMatches) => {\n      const dom = editor.dom;\n      return textBefore(node, offset, dom.getRoot()).bind(endSpot => {\n        const text = getBeforeText(dom, block, node, offset);\n        for (let i = 0; i < patterns.length; i++) {\n          const pattern = patterns[i];\n          if (!endsWith(text, pattern.end)) {\n            continue;\n          }\n          const patternsWithoutCurrent = patterns.slice();\n          patternsWithoutCurrent.splice(i, 1);\n          const result = findPattern(editor, block, {\n            pattern,\n            remainingPatterns: patternsWithoutCurrent,\n            position: endSpot\n          }, normalizedMatches);\n          if (result.isNone() && offset > 0) {\n            return findPatternsRec(editor, patterns, node, offset - 1, block, normalizedMatches);\n          }\n          if (result.isSome()) {\n            return result;\n          }\n        }\n        return Optional.none();\n      });\n    };\n    const applyPattern = (editor, pattern, patternRange) => {\n      editor.selection.setRng(patternRange);\n      if (pattern.type === 'inline-format') {\n        each$e(pattern.format, format => {\n          editor.formatter.apply(format);\n        });\n      } else {\n        editor.execCommand(pattern.cmd, false, pattern.value);\n      }\n    };\n    const applyReplacementPattern = (editor, pattern, marker, isRoot) => {\n      const markerRange = rangeFromMarker(editor.dom, marker);\n      deleteRng(editor.dom, markerRange, isRoot);\n      applyPattern(editor, pattern, markerRange);\n    };\n    const applyPatternWithContent = (editor, pattern, startMarker, endMarker, isRoot) => {\n      const dom = editor.dom;\n      const markerEndRange = rangeFromMarker(dom, endMarker);\n      const markerStartRange = rangeFromMarker(dom, startMarker);\n      deleteRng(dom, markerStartRange, isRoot);\n      deleteRng(dom, markerEndRange, isRoot);\n      const patternMarker = {\n        prefix: startMarker.prefix,\n        start: startMarker.end,\n        end: endMarker.start\n      };\n      const patternRange = rangeFromMarker(dom, patternMarker);\n      applyPattern(editor, pattern, patternRange);\n    };\n    const addMarkers = (dom, matches) => {\n      const markerPrefix = generate$1('mce_textpattern');\n      const matchesWithEnds = foldr(matches, (acc, match) => {\n        const endMarker = createMarker(dom, markerPrefix + `_end${ acc.length }`, match.endRng);\n        return acc.concat([{\n            ...match,\n            endMarker\n          }]);\n      }, []);\n      return foldr(matchesWithEnds, (acc, match) => {\n        const idx = matchesWithEnds.length - acc.length - 1;\n        const startMarker = isReplacementPattern(match.pattern) ? match.endMarker : createMarker(dom, markerPrefix + `_start${ idx }`, match.startRng);\n        return acc.concat([{\n            ...match,\n            startMarker\n          }]);\n      }, []);\n    };\n    const sortPatterns = patterns => sort(patterns, (a, b) => b.end.length - a.end.length);\n    const getBestMatches = (matches, matchesWithSortedPatterns) => {\n      const hasSameMatches = forall(matches, match => exists(matchesWithSortedPatterns, sortedMatch => match.pattern.start === sortedMatch.pattern.start && match.pattern.end === sortedMatch.pattern.end));\n      if (matches.length === matchesWithSortedPatterns.length) {\n        if (hasSameMatches) {\n          return matches;\n        } else {\n          return matchesWithSortedPatterns;\n        }\n      }\n      return matches.length > matchesWithSortedPatterns.length ? matches : matchesWithSortedPatterns;\n    };\n    const findPatterns = (editor, block, node, offset, patternSet, normalizedMatches) => {\n      const matches = findPatternsRec(editor, patternSet.inlinePatterns, node, offset, block, normalizedMatches).fold(() => [], result => result.matches);\n      const matchesWithSortedPatterns = findPatternsRec(editor, sortPatterns(patternSet.inlinePatterns), node, offset, block, normalizedMatches).fold(() => [], result => result.matches);\n      return getBestMatches(matches, matchesWithSortedPatterns);\n    };\n    const applyMatches = (editor, matches) => {\n      if (matches.length === 0) {\n        return;\n      }\n      const dom = editor.dom;\n      const bookmark = editor.selection.getBookmark();\n      const matchesWithMarkers = addMarkers(dom, matches);\n      each$e(matchesWithMarkers, match => {\n        const block = dom.getParent(match.startMarker.start, dom.isBlock);\n        const isRoot = node => node === block;\n        if (isReplacementPattern(match.pattern)) {\n          applyReplacementPattern(editor, match.pattern, match.endMarker, isRoot);\n        } else {\n          applyPatternWithContent(editor, match.pattern, match.startMarker, match.endMarker, isRoot);\n        }\n        removeMarker(dom, match.endMarker, isRoot);\n        removeMarker(dom, match.startMarker, isRoot);\n      });\n      editor.selection.moveToBookmark(bookmark);\n    };\n\n    const handleEnter = (editor, patternSet) => {\n      const rng = editor.selection.getRng();\n      return getParentBlock(editor, rng).map(block => {\n        var _a;\n        const offset = Math.max(0, rng.startOffset);\n        const dynamicPatternSet = resolveFromDynamicPatterns(patternSet, block, (_a = block.textContent) !== null && _a !== void 0 ? _a : '');\n        const inlineMatches = findPatterns(editor, block, rng.startContainer, offset, dynamicPatternSet, true);\n        const blockMatches = findPatterns$1(editor, block, dynamicPatternSet, true);\n        if (blockMatches.length > 0 || inlineMatches.length > 0) {\n          editor.undoManager.add();\n          editor.undoManager.extra(() => {\n            editor.execCommand('mceInsertNewLine');\n          }, () => {\n            insert$5(editor);\n            applyMatches(editor, inlineMatches);\n            applyMatches$1(editor, blockMatches);\n            const range = editor.selection.getRng();\n            const spot = textBefore(range.startContainer, range.startOffset, editor.dom.getRoot());\n            editor.execCommand('mceInsertNewLine');\n            spot.each(s => {\n              const node = s.container;\n              if (node.data.charAt(s.offset - 1) === zeroWidth) {\n                node.deleteData(s.offset - 1, 1);\n                cleanEmptyNodes(editor.dom, node.parentNode, e => e === editor.dom.getRoot());\n              }\n            });\n          });\n          return true;\n        }\n        return false;\n      }).getOr(false);\n    };\n    const handleInlineKey = (editor, patternSet) => {\n      const rng = editor.selection.getRng();\n      getParentBlock(editor, rng).map(block => {\n        const offset = Math.max(0, rng.startOffset - 1);\n        const beforeText = getBeforeText(editor.dom, block, rng.startContainer, offset);\n        const dynamicPatternSet = resolveFromDynamicPatterns(patternSet, block, beforeText);\n        const inlineMatches = findPatterns(editor, block, rng.startContainer, offset, dynamicPatternSet, false);\n        if (inlineMatches.length > 0) {\n          editor.undoManager.transact(() => {\n            applyMatches(editor, inlineMatches);\n          });\n        }\n      });\n    };\n    const checkKeyEvent = (codes, event, predicate) => {\n      for (let i = 0; i < codes.length; i++) {\n        if (predicate(codes[i], event)) {\n          return true;\n        }\n      }\n      return false;\n    };\n    const checkKeyCode = (codes, event) => checkKeyEvent(codes, event, (code, event) => {\n      return code === event.keyCode && !VK.modifierPressed(event);\n    });\n    const checkCharCode = (chars, event) => checkKeyEvent(chars, event, (chr, event) => {\n      return chr.charCodeAt(0) === event.charCode;\n    });\n\n    const setup$2 = editor => {\n      const charCodes = [\n        ',',\n        '.',\n        ';',\n        ':',\n        '!',\n        '?'\n      ];\n      const keyCodes = [32];\n      const getPatternSet = () => createPatternSet(getTextPatterns(editor), getTextPatternsLookup(editor));\n      const hasDynamicPatterns = () => hasTextPatternsLookup(editor);\n      editor.on('keydown', e => {\n        if (e.keyCode === 13 && !VK.modifierPressed(e) && editor.selection.isCollapsed()) {\n          const patternSet = getPatternSet();\n          const hasPatterns = patternSet.inlinePatterns.length > 0 || patternSet.blockPatterns.length > 0 || hasDynamicPatterns();\n          if (hasPatterns && handleEnter(editor, patternSet)) {\n            e.preventDefault();\n          }\n        }\n      }, true);\n      const handleInlineTrigger = () => {\n        if (editor.selection.isCollapsed()) {\n          const patternSet = getPatternSet();\n          const hasPatterns = patternSet.inlinePatterns.length > 0 || hasDynamicPatterns();\n          if (hasPatterns) {\n            handleInlineKey(editor, patternSet);\n          }\n        }\n      };\n      editor.on('keyup', e => {\n        if (checkKeyCode(keyCodes, e)) {\n          handleInlineTrigger();\n        }\n      });\n      editor.on('keypress', e => {\n        if (checkCharCode(charCodes, e)) {\n          Delay.setEditorTimeout(editor, handleInlineTrigger);\n        }\n      });\n    };\n\n    const setup$1 = editor => {\n      setup$2(editor);\n    };\n\n    const Quirks = editor => {\n      const each = Tools.each;\n      const BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection, parser = editor.parser;\n      const browser = Env.browser;\n      const isGecko = browser.isFirefox();\n      const isWebKit = browser.isChromium() || browser.isSafari();\n      const isiOS = Env.deviceType.isiPhone() || Env.deviceType.isiPad();\n      const isMac = Env.os.isMacOS() || Env.os.isiOS();\n      const setEditorCommandState = (cmd, state) => {\n        try {\n          editor.getDoc().execCommand(cmd, false, String(state));\n        } catch (ex) {\n        }\n      };\n      const isDefaultPrevented = e => {\n        return e.isDefaultPrevented();\n      };\n      const emptyEditorWhenDeleting = () => {\n        const serializeRng = rng => {\n          const body = dom.create('body');\n          const contents = rng.cloneContents();\n          body.appendChild(contents);\n          return selection.serializer.serialize(body, { format: 'html' });\n        };\n        const allContentsSelected = rng => {\n          const selection = serializeRng(rng);\n          const allRng = dom.createRng();\n          allRng.selectNode(editor.getBody());\n          const allSelection = serializeRng(allRng);\n          return selection === allSelection;\n        };\n        editor.on('keydown', e => {\n          const keyCode = e.keyCode;\n          if (!isDefaultPrevented(e) && (keyCode === DELETE || keyCode === BACKSPACE) && editor.selection.isEditable()) {\n            const isCollapsed = editor.selection.isCollapsed();\n            const body = editor.getBody();\n            if (isCollapsed && !isEmpty$2(SugarElement.fromDom(body))) {\n              return;\n            }\n            if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {\n              return;\n            }\n            e.preventDefault();\n            editor.setContent('');\n            if (body.firstChild && dom.isBlock(body.firstChild)) {\n              editor.selection.setCursorLocation(body.firstChild, 0);\n            } else {\n              editor.selection.setCursorLocation(body, 0);\n            }\n            editor.nodeChanged();\n          }\n        });\n      };\n      const selectAll = () => {\n        editor.shortcuts.add('meta+a', null, 'SelectAll');\n      };\n      const documentElementEditingFocus = () => {\n        if (!editor.inline) {\n          dom.bind(editor.getDoc(), 'mousedown mouseup', e => {\n            let rng;\n            if (e.target === editor.getDoc().documentElement) {\n              rng = selection.getRng();\n              editor.getBody().focus();\n              if (e.type === 'mousedown') {\n                if (isCaretContainer$2(rng.startContainer)) {\n                  return;\n                }\n                selection.placeCaretAt(e.clientX, e.clientY);\n              } else {\n                selection.setRng(rng);\n              }\n            }\n          });\n        }\n      };\n      const removeHrOnBackspace = () => {\n        editor.on('keydown', e => {\n          if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\n            if (!editor.getBody().getElementsByTagName('hr').length) {\n              return;\n            }\n            if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\n              const node = selection.getNode();\n              const previousSibling = node.previousSibling;\n              if (node.nodeName === 'HR') {\n                dom.remove(node);\n                e.preventDefault();\n                return;\n              }\n              if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'hr') {\n                dom.remove(previousSibling);\n                e.preventDefault();\n              }\n            }\n          }\n        });\n      };\n      const focusBody = () => {\n        if (!Range.prototype.getClientRects) {\n          editor.on('mousedown', e => {\n            if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') {\n              const body = editor.getBody();\n              body.blur();\n              Delay.setEditorTimeout(editor, () => {\n                body.focus();\n              });\n            }\n          });\n        }\n      };\n      const selectControlElements = () => {\n        const visualAidsAnchorClass = getVisualAidsAnchorClass(editor);\n        editor.on('click', e => {\n          const target = e.target;\n          if (/^(IMG|HR)$/.test(target.nodeName) && dom.isEditable(target)) {\n            e.preventDefault();\n            editor.selection.select(target);\n            editor.nodeChanged();\n          }\n          if (target.nodeName === 'A' && dom.hasClass(target, visualAidsAnchorClass) && target.childNodes.length === 0 && dom.isEditable(target.parentNode)) {\n            e.preventDefault();\n            selection.select(target);\n          }\n        });\n      };\n      const removeStylesWhenDeletingAcrossBlockElements = () => {\n        const getAttributeApplyFunction = () => {\n          const template = dom.getAttribs(selection.getStart().cloneNode(false));\n          return () => {\n            const target = selection.getStart();\n            if (target !== editor.getBody()) {\n              dom.setAttrib(target, 'style', null);\n              each(template, attr => {\n                target.setAttributeNode(attr.cloneNode(true));\n              });\n            }\n          };\n        };\n        const isSelectionAcrossElements = () => {\n          return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) !== dom.getParent(selection.getEnd(), dom.isBlock);\n        };\n        editor.on('keypress', e => {\n          let applyAttributes;\n          if (!isDefaultPrevented(e) && (e.keyCode === 8 || e.keyCode === 46) && isSelectionAcrossElements()) {\n            applyAttributes = getAttributeApplyFunction();\n            editor.getDoc().execCommand('delete', false);\n            applyAttributes();\n            e.preventDefault();\n            return false;\n          } else {\n            return true;\n          }\n        });\n        dom.bind(editor.getDoc(), 'cut', e => {\n          if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {\n            const applyAttributes = getAttributeApplyFunction();\n            Delay.setEditorTimeout(editor, () => {\n              applyAttributes();\n            });\n          }\n        });\n      };\n      const disableBackspaceIntoATable = () => {\n        editor.on('keydown', e => {\n          if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\n            if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\n              const previousSibling = selection.getNode().previousSibling;\n              if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'table') {\n                e.preventDefault();\n                return false;\n              }\n            }\n          }\n          return true;\n        });\n      };\n      const removeBlockQuoteOnBackSpace = () => {\n        editor.on('keydown', e => {\n          if (isDefaultPrevented(e) || e.keyCode !== VK.BACKSPACE) {\n            return;\n          }\n          let rng = selection.getRng();\n          const container = rng.startContainer;\n          const offset = rng.startOffset;\n          const root = dom.getRoot();\n          let parent = container;\n          if (!rng.collapsed || offset !== 0) {\n            return;\n          }\n          while (parent.parentNode && parent.parentNode.firstChild === parent && parent.parentNode !== root) {\n            parent = parent.parentNode;\n          }\n          if (parent.nodeName === 'BLOCKQUOTE') {\n            editor.formatter.toggle('blockquote', undefined, parent);\n            rng = dom.createRng();\n            rng.setStart(container, 0);\n            rng.setEnd(container, 0);\n            selection.setRng(rng);\n          }\n        });\n      };\n      const setGeckoEditingOptions = () => {\n        const setOpts = () => {\n          setEditorCommandState('StyleWithCSS', false);\n          setEditorCommandState('enableInlineTableEditing', false);\n          if (!getObjectResizing(editor)) {\n            setEditorCommandState('enableObjectResizing', false);\n          }\n        };\n        if (!isReadOnly$1(editor)) {\n          editor.on('BeforeExecCommand mousedown', setOpts);\n        }\n      };\n      const addBrAfterLastLinks = () => {\n        const fixLinks = () => {\n          each(dom.select('a:not([data-mce-block])'), node => {\n            var _a;\n            let parentNode = node.parentNode;\n            const root = dom.getRoot();\n            if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.lastChild) === node) {\n              while (parentNode && !dom.isBlock(parentNode)) {\n                if (((_a = parentNode.parentNode) === null || _a === void 0 ? void 0 : _a.lastChild) !== parentNode || parentNode === root) {\n                  return;\n                }\n                parentNode = parentNode.parentNode;\n              }\n              dom.add(parentNode, 'br', { 'data-mce-bogus': 1 });\n            }\n          });\n        };\n        editor.on('SetContent ExecCommand', e => {\n          if (e.type === 'setcontent' || e.command === 'mceInsertLink') {\n            fixLinks();\n          }\n        });\n      };\n      const setDefaultBlockType = () => {\n        editor.on('init', () => {\n          setEditorCommandState('DefaultParagraphSeparator', getForcedRootBlock(editor));\n        });\n      };\n      const isAllContentSelected = editor => {\n        const body = editor.getBody();\n        const rng = editor.selection.getRng();\n        return rng.startContainer === rng.endContainer && rng.startContainer === body && rng.startOffset === 0 && rng.endOffset === body.childNodes.length;\n      };\n      const normalizeSelection = () => {\n        editor.on('keyup focusin mouseup', e => {\n          if (!VK.modifierPressed(e) && !isAllContentSelected(editor)) {\n            selection.normalize();\n          }\n        }, true);\n      };\n      const showBrokenImageIcon = () => {\n        editor.contentStyles.push('img:-moz-broken {' + '-moz-force-broken-image-icon:1;' + 'min-width:24px;' + 'min-height:24px' + '}');\n      };\n      const restoreFocusOnKeyDown = () => {\n        if (!editor.inline) {\n          editor.on('keydown', () => {\n            if (document.activeElement === document.body) {\n              editor.getWin().focus();\n            }\n          });\n        }\n      };\n      const bodyHeight = () => {\n        if (!editor.inline) {\n          editor.contentStyles.push('body {min-height: 150px}');\n          editor.on('click', e => {\n            let rng;\n            if (e.target.nodeName === 'HTML') {\n              rng = editor.selection.getRng();\n              editor.getBody().focus();\n              editor.selection.setRng(rng);\n              editor.selection.normalize();\n              editor.nodeChanged();\n            }\n          });\n        }\n      };\n      const blockCmdArrowNavigation = () => {\n        if (isMac) {\n          editor.on('keydown', e => {\n            if (VK.metaKeyPressed(e) && !e.shiftKey && (e.keyCode === 37 || e.keyCode === 39)) {\n              e.preventDefault();\n              const selection = editor.selection.getSel();\n              selection.modify('move', e.keyCode === 37 ? 'backward' : 'forward', 'lineboundary');\n            }\n          });\n        }\n      };\n      const tapLinksAndImages = () => {\n        editor.on('click', e => {\n          let elm = e.target;\n          do {\n            if (elm.tagName === 'A') {\n              e.preventDefault();\n              return;\n            }\n          } while (elm = elm.parentNode);\n        });\n        editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}');\n      };\n      const blockFormSubmitInsideEditor = () => {\n        editor.on('init', () => {\n          editor.dom.bind(editor.getBody(), 'submit', e => {\n            e.preventDefault();\n          });\n        });\n      };\n      const removeAppleInterchangeBrs = () => {\n        parser.addNodeFilter('br', nodes => {\n          let i = nodes.length;\n          while (i--) {\n            if (nodes[i].attr('class') === 'Apple-interchange-newline') {\n              nodes[i].remove();\n            }\n          }\n        });\n      };\n      const refreshContentEditable = noop;\n      const isHidden = () => {\n        if (!isGecko || editor.removed) {\n          return false;\n        }\n        const sel = editor.selection.getSel();\n        return !sel || !sel.rangeCount || sel.rangeCount === 0;\n      };\n      const setupRtc = () => {\n        if (isWebKit) {\n          documentElementEditingFocus();\n          selectControlElements();\n          blockFormSubmitInsideEditor();\n          selectAll();\n          if (isiOS) {\n            restoreFocusOnKeyDown();\n            bodyHeight();\n            tapLinksAndImages();\n          }\n        }\n        if (isGecko) {\n          focusBody();\n          setGeckoEditingOptions();\n          showBrokenImageIcon();\n          blockCmdArrowNavigation();\n        }\n      };\n      const dropDragEndEvent = () => {\n        editor.on('drop', event => {\n          var _a;\n          const data = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData('text/html');\n          if (isString(data) && /^<img[^>]*>$/.test(data)) {\n            editor.dispatch('dragend', new window.DragEvent('dragend', event));\n          }\n        });\n      };\n      const setup = () => {\n        removeBlockQuoteOnBackSpace();\n        emptyEditorWhenDeleting();\n        if (!Env.windowsPhone) {\n          normalizeSelection();\n        }\n        if (isWebKit) {\n          documentElementEditingFocus();\n          selectControlElements();\n          setDefaultBlockType();\n          blockFormSubmitInsideEditor();\n          disableBackspaceIntoATable();\n          removeAppleInterchangeBrs();\n          if (isiOS) {\n            restoreFocusOnKeyDown();\n            bodyHeight();\n            tapLinksAndImages();\n          } else {\n            selectAll();\n          }\n        }\n        if (isGecko) {\n          removeHrOnBackspace();\n          focusBody();\n          removeStylesWhenDeletingAcrossBlockElements();\n          setGeckoEditingOptions();\n          addBrAfterLastLinks();\n          showBrokenImageIcon();\n          blockCmdArrowNavigation();\n          disableBackspaceIntoATable();\n          dropDragEndEvent();\n        }\n      };\n      if (isRtc(editor)) {\n        setupRtc();\n      } else {\n        setup();\n      }\n      return {\n        refreshContentEditable,\n        isHidden\n      };\n    };\n\n    const DOM$6 = DOMUtils.DOM;\n    const appendStyle = (editor, text) => {\n      const body = SugarElement.fromDom(editor.getBody());\n      const container = getStyleContainer(getRootNode(body));\n      const style = SugarElement.fromTag('style');\n      set$3(style, 'type', 'text/css');\n      append$1(style, SugarElement.fromText(text));\n      append$1(container, style);\n      editor.on('remove', () => {\n        remove$5(style);\n      });\n    };\n    const getRootName = editor => editor.inline ? editor.getElement().nodeName.toLowerCase() : undefined;\n    const removeUndefined = obj => filter$4(obj, v => isUndefined(v) === false);\n    const mkParserSettings = editor => {\n      const getOption = editor.options.get;\n      const blobCache = editor.editorUpload.blobCache;\n      return removeUndefined({\n        allow_conditional_comments: getOption('allow_conditional_comments'),\n        allow_html_data_urls: getOption('allow_html_data_urls'),\n        allow_svg_data_urls: getOption('allow_svg_data_urls'),\n        allow_html_in_named_anchor: getOption('allow_html_in_named_anchor'),\n        allow_script_urls: getOption('allow_script_urls'),\n        allow_unsafe_link_target: getOption('allow_unsafe_link_target'),\n        convert_unsafe_embeds: getOption('convert_unsafe_embeds'),\n        convert_fonts_to_spans: getOption('convert_fonts_to_spans'),\n        fix_list_elements: getOption('fix_list_elements'),\n        font_size_legacy_values: getOption('font_size_legacy_values'),\n        forced_root_block: getOption('forced_root_block'),\n        forced_root_block_attrs: getOption('forced_root_block_attrs'),\n        preserve_cdata: getOption('preserve_cdata'),\n        inline_styles: getOption('inline_styles'),\n        root_name: getRootName(editor),\n        sandbox_iframes: getOption('sandbox_iframes'),\n        sanitize: getOption('xss_sanitization'),\n        validate: true,\n        blob_cache: blobCache,\n        document: editor.getDoc()\n      });\n    };\n    const mkSchemaSettings = editor => {\n      const getOption = editor.options.get;\n      return removeUndefined({\n        custom_elements: getOption('custom_elements'),\n        extended_valid_elements: getOption('extended_valid_elements'),\n        invalid_elements: getOption('invalid_elements'),\n        invalid_styles: getOption('invalid_styles'),\n        schema: getOption('schema'),\n        valid_children: getOption('valid_children'),\n        valid_classes: getOption('valid_classes'),\n        valid_elements: getOption('valid_elements'),\n        valid_styles: getOption('valid_styles'),\n        verify_html: getOption('verify_html'),\n        padd_empty_block_inline_children: getOption('format_empty_lines')\n      });\n    };\n    const mkSerializerSettings = editor => {\n      const getOption = editor.options.get;\n      return {\n        ...mkParserSettings(editor),\n        ...mkSchemaSettings(editor),\n        ...removeUndefined({\n          remove_trailing_brs: getOption('remove_trailing_brs'),\n          pad_empty_with_br: getOption('pad_empty_with_br'),\n          url_converter: getOption('url_converter'),\n          url_converter_scope: getOption('url_converter_scope'),\n          element_format: getOption('element_format'),\n          entities: getOption('entities'),\n          entity_encoding: getOption('entity_encoding'),\n          indent: getOption('indent'),\n          indent_after: getOption('indent_after'),\n          indent_before: getOption('indent_before')\n        })\n      };\n    };\n    const createParser = editor => {\n      const parser = DomParser(mkParserSettings(editor), editor.schema);\n      parser.addAttributeFilter('src,href,style,tabindex', (nodes, name) => {\n        const dom = editor.dom;\n        const internalName = 'data-mce-' + name;\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          let value = node.attr(name);\n          if (value && !node.attr(internalName)) {\n            if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) {\n              continue;\n            }\n            if (name === 'style') {\n              value = dom.serializeStyle(dom.parseStyle(value), node.name);\n              if (!value.length) {\n                value = null;\n              }\n              node.attr(internalName, value);\n              node.attr(name, value);\n            } else if (name === 'tabindex') {\n              node.attr(internalName, value);\n              node.attr(name, null);\n            } else {\n              node.attr(internalName, editor.convertURL(value, name, node.name));\n            }\n          }\n        }\n      });\n      parser.addNodeFilter('script', nodes => {\n        let i = nodes.length;\n        while (i--) {\n          const node = nodes[i];\n          const type = node.attr('type') || 'no/type';\n          if (type.indexOf('mce-') !== 0) {\n            node.attr('type', 'mce-' + type);\n          }\n        }\n      });\n      if (shouldPreserveCData(editor)) {\n        parser.addNodeFilter('#cdata', nodes => {\n          var _a;\n          let i = nodes.length;\n          while (i--) {\n            const node = nodes[i];\n            node.type = 8;\n            node.name = '#comment';\n            node.value = '[CDATA[' + editor.dom.encode((_a = node.value) !== null && _a !== void 0 ? _a : '') + ']]';\n          }\n        });\n      }\n      parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', nodes => {\n        let i = nodes.length;\n        const nonEmptyElements = editor.schema.getNonEmptyElements();\n        while (i--) {\n          const node = nodes[i];\n          if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) {\n            node.append(new AstNode('br', 1));\n          }\n        }\n      });\n      return parser;\n    };\n    const autoFocus = editor => {\n      const autoFocus = getAutoFocus(editor);\n      if (autoFocus) {\n        Delay.setEditorTimeout(editor, () => {\n          let focusEditor;\n          if (autoFocus === true) {\n            focusEditor = editor;\n          } else {\n            focusEditor = editor.editorManager.get(autoFocus);\n          }\n          if (focusEditor && !focusEditor.destroyed) {\n            focusEditor.focus();\n            focusEditor.selection.scrollIntoView();\n          }\n        }, 100);\n      }\n    };\n    const moveSelectionToFirstCaretPosition = editor => {\n      const root = editor.dom.getRoot();\n      if (!editor.inline && (!hasAnyRanges(editor) || editor.selection.getStart(true) === root)) {\n        firstPositionIn(root).each(pos => {\n          const node = pos.getNode();\n          const caretPos = isTable$2(node) ? firstPositionIn(node).getOr(pos) : pos;\n          editor.selection.setRng(caretPos.toRange());\n        });\n      }\n    };\n    const initEditor = editor => {\n      editor.bindPendingEventDelegates();\n      editor.initialized = true;\n      fireInit(editor);\n      editor.focus(true);\n      moveSelectionToFirstCaretPosition(editor);\n      editor.nodeChanged({ initial: true });\n      const initInstanceCallback = getInitInstanceCallback(editor);\n      if (isFunction(initInstanceCallback)) {\n        initInstanceCallback.call(editor, editor);\n      }\n      autoFocus(editor);\n    };\n    const getStyleSheetLoader$1 = editor => editor.inline ? editor.ui.styleSheetLoader : editor.dom.styleSheetLoader;\n    const makeStylesheetLoadingPromises = (editor, css, framedFonts) => {\n      const {\n        pass: bundledCss,\n        fail: normalCss\n      } = partition$2(css, name => tinymce.Resource.has(toContentSkinResourceName(name)));\n      const bundledPromises = bundledCss.map(url => {\n        const css = tinymce.Resource.get(toContentSkinResourceName(url));\n        if (isString(css)) {\n          return Promise.resolve(getStyleSheetLoader$1(editor).loadRawCss(url, css));\n        }\n        return Promise.resolve();\n      });\n      const promises = [\n        ...bundledPromises,\n        getStyleSheetLoader$1(editor).loadAll(normalCss)\n      ];\n      if (editor.inline) {\n        return promises;\n      } else {\n        return promises.concat([editor.ui.styleSheetLoader.loadAll(framedFonts)]);\n      }\n    };\n    const loadContentCss = editor => {\n      const styleSheetLoader = getStyleSheetLoader$1(editor);\n      const fontCss = getFontCss(editor);\n      const css = editor.contentCSS;\n      const removeCss = () => {\n        styleSheetLoader.unloadAll(css);\n        if (!editor.inline) {\n          editor.ui.styleSheetLoader.unloadAll(fontCss);\n        }\n      };\n      const loaded = () => {\n        if (editor.removed) {\n          removeCss();\n        } else {\n          editor.on('remove', removeCss);\n        }\n      };\n      if (editor.contentStyles.length > 0) {\n        let contentCssText = '';\n        Tools.each(editor.contentStyles, style => {\n          contentCssText += style + '\\r\\n';\n        });\n        editor.dom.addStyle(contentCssText);\n      }\n      const allStylesheets = Promise.all(makeStylesheetLoadingPromises(editor, css, fontCss)).then(loaded).catch(loaded);\n      const contentStyle = getContentStyle(editor);\n      if (contentStyle) {\n        appendStyle(editor, contentStyle);\n      }\n      return allStylesheets;\n    };\n    const preInit = editor => {\n      const doc = editor.getDoc(), body = editor.getBody();\n      firePreInit(editor);\n      if (!shouldBrowserSpellcheck(editor)) {\n        doc.body.spellcheck = false;\n        DOM$6.setAttrib(body, 'spellcheck', 'false');\n      }\n      editor.quirks = Quirks(editor);\n      firePostRender(editor);\n      const directionality = getDirectionality(editor);\n      if (directionality !== undefined) {\n        body.dir = directionality;\n      }\n      const protect = getProtect(editor);\n      if (protect) {\n        editor.on('BeforeSetContent', e => {\n          Tools.each(protect, pattern => {\n            e.content = e.content.replace(pattern, str => {\n              return '<!--mce:protected ' + escape(str) + '-->';\n            });\n          });\n        });\n      }\n      editor.on('SetContent', () => {\n        editor.addVisual(editor.getBody());\n      });\n      editor.on('compositionstart compositionend', e => {\n        editor.composing = e.type === 'compositionstart';\n      });\n    };\n    const loadInitialContent = editor => {\n      if (!isRtc(editor)) {\n        editor.load({\n          initial: true,\n          format: 'html'\n        });\n      }\n      editor.startContent = editor.getContent({ format: 'raw' });\n    };\n    const initEditorWithInitialContent = editor => {\n      if (editor.removed !== true) {\n        loadInitialContent(editor);\n        initEditor(editor);\n      }\n    };\n    const startProgress = editor => {\n      let canceled = false;\n      const progressTimeout = setTimeout(() => {\n        if (!canceled) {\n          editor.setProgressState(true);\n        }\n      }, 500);\n      return () => {\n        clearTimeout(progressTimeout);\n        canceled = true;\n        editor.setProgressState(false);\n      };\n    };\n    const contentBodyLoaded = editor => {\n      const targetElm = editor.getElement();\n      let doc = editor.getDoc();\n      if (editor.inline) {\n        DOM$6.addClass(targetElm, 'mce-content-body');\n        editor.contentDocument = doc = document;\n        editor.contentWindow = window;\n        editor.bodyElement = targetElm;\n        editor.contentAreaContainer = targetElm;\n      }\n      const body = editor.getBody();\n      body.disabled = true;\n      editor.readonly = isReadOnly$1(editor);\n      editor._editableRoot = hasEditableRoot$1(editor);\n      if (!editor.readonly && editor.hasEditableRoot()) {\n        if (editor.inline && DOM$6.getStyle(body, 'position', true) === 'static') {\n          body.style.position = 'relative';\n        }\n        body.contentEditable = 'true';\n      }\n      body.disabled = false;\n      editor.editorUpload = EditorUpload(editor);\n      editor.schema = Schema(mkSchemaSettings(editor));\n      editor.dom = DOMUtils(doc, {\n        keep_values: true,\n        url_converter: editor.convertURL,\n        url_converter_scope: editor,\n        update_styles: true,\n        root_element: editor.inline ? editor.getBody() : null,\n        collect: editor.inline,\n        schema: editor.schema,\n        contentCssCors: shouldUseContentCssCors(editor),\n        referrerPolicy: getReferrerPolicy(editor),\n        onSetAttrib: e => {\n          editor.dispatch('SetAttrib', e);\n        },\n        force_hex_color: shouldForceHexColor(editor)\n      });\n      editor.parser = createParser(editor);\n      editor.serializer = DomSerializer(mkSerializerSettings(editor), editor);\n      editor.selection = EditorSelection(editor.dom, editor.getWin(), editor.serializer, editor);\n      editor.annotator = Annotator(editor);\n      editor.formatter = Formatter(editor);\n      editor.undoManager = UndoManager(editor);\n      editor._nodeChangeDispatcher = new NodeChange(editor);\n      editor._selectionOverrides = SelectionOverrides(editor);\n      setup$p(editor);\n      setup$6(editor);\n      setup$n(editor);\n      if (!isRtc(editor)) {\n        setup$5(editor);\n        setup$1(editor);\n      }\n      const caret = setup$b(editor);\n      setup$q(editor, caret);\n      setup$o(editor);\n      setup$r(editor);\n      setup$7(editor);\n      const setupRtcThunk = setup$t(editor);\n      preInit(editor);\n      setupRtcThunk.fold(() => {\n        const cancelProgress = startProgress(editor);\n        loadContentCss(editor).then(() => {\n          initEditorWithInitialContent(editor);\n          cancelProgress();\n        });\n      }, setupRtc => {\n        editor.setProgressState(true);\n        loadContentCss(editor).then(() => {\n          setupRtc().then(_rtcMode => {\n            editor.setProgressState(false);\n            initEditorWithInitialContent(editor);\n            bindEvents(editor);\n          }, err => {\n            editor.notificationManager.open({\n              type: 'error',\n              text: String(err)\n            });\n            initEditorWithInitialContent(editor);\n            bindEvents(editor);\n          });\n        });\n      });\n    };\n\n    const filter = always;\n    const bind = (element, event, handler) => bind$2(element, event, filter, handler);\n\n    const DOM$5 = DOMUtils.DOM;\n    const createIframeElement = (id, title, customAttrs, tabindex) => {\n      const iframe = SugarElement.fromTag('iframe');\n      tabindex.each(t => set$3(iframe, 'tabindex', t));\n      setAll$1(iframe, customAttrs);\n      setAll$1(iframe, {\n        id: id + '_ifr',\n        frameBorder: '0',\n        allowTransparency: 'true',\n        title\n      });\n      add$2(iframe, 'tox-edit-area__iframe');\n      return iframe;\n    };\n    const getIframeHtml = editor => {\n      let iframeHTML = getDocType(editor) + '<html><head>';\n      if (getDocumentBaseUrl(editor) !== editor.documentBaseUrl) {\n        iframeHTML += '<base href=\"' + editor.documentBaseURI.getURI() + '\" />';\n      }\n      iframeHTML += '<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />';\n      const bodyId = getBodyId(editor);\n      const bodyClass = getBodyClass(editor);\n      const translatedAriaText = editor.translate(getIframeAriaText(editor));\n      if (getContentSecurityPolicy(editor)) {\n        iframeHTML += '<meta http-equiv=\"Content-Security-Policy\" content=\"' + getContentSecurityPolicy(editor) + '\" />';\n      }\n      iframeHTML += '</head>' + `<body id=\"${ bodyId }\" class=\"mce-content-body ${ bodyClass }\" data-id=\"${ editor.id }\" aria-label=\"${ translatedAriaText }\">` + '<br>' + '</body></html>';\n      return iframeHTML;\n    };\n    const createIframe = (editor, boxInfo) => {\n      const iframeTitle = editor.translate('Rich Text Area');\n      const tabindex = getOpt(SugarElement.fromDom(editor.getElement()), 'tabindex').bind(toInt);\n      const ifr = createIframeElement(editor.id, iframeTitle, getIframeAttrs(editor), tabindex).dom;\n      ifr.onload = () => {\n        ifr.onload = null;\n        editor.dispatch('load');\n      };\n      editor.contentAreaContainer = boxInfo.iframeContainer;\n      editor.iframeElement = ifr;\n      editor.iframeHTML = getIframeHtml(editor);\n      DOM$5.add(boxInfo.iframeContainer, ifr);\n    };\n    const setupIframeBody = editor => {\n      const iframe = editor.iframeElement;\n      const ready = () => {\n        editor.contentDocument = iframe.contentDocument;\n        contentBodyLoaded(editor);\n      };\n      if (shouldUseDocumentWrite(editor) || Env.browser.isFirefox()) {\n        const doc = editor.getDoc();\n        doc.open();\n        doc.write(editor.iframeHTML);\n        doc.close();\n        ready();\n      } else {\n        const binder = bind(SugarElement.fromDom(iframe), 'load', () => {\n          binder.unbind();\n          ready();\n        });\n        iframe.srcdoc = editor.iframeHTML;\n      }\n    };\n    const init$1 = (editor, boxInfo) => {\n      createIframe(editor, boxInfo);\n      if (boxInfo.editorContainer) {\n        boxInfo.editorContainer.style.display = editor.orgDisplay;\n        editor.hidden = DOM$5.isHidden(boxInfo.editorContainer);\n      }\n      editor.getElement().style.display = 'none';\n      DOM$5.setAttrib(editor.id, 'aria-hidden', 'true');\n      editor.getElement().style.visibility = editor.orgVisibility;\n      setupIframeBody(editor);\n    };\n\n    const DOM$4 = DOMUtils.DOM;\n    const initPlugin = (editor, initializedPlugins, plugin) => {\n      const Plugin = PluginManager.get(plugin);\n      const pluginUrl = PluginManager.urls[plugin] || editor.documentBaseUrl.replace(/\\/$/, '');\n      plugin = Tools.trim(plugin);\n      if (Plugin && Tools.inArray(initializedPlugins, plugin) === -1) {\n        if (editor.plugins[plugin]) {\n          return;\n        }\n        try {\n          const pluginInstance = Plugin(editor, pluginUrl) || {};\n          editor.plugins[plugin] = pluginInstance;\n          if (isFunction(pluginInstance.init)) {\n            pluginInstance.init(editor, pluginUrl);\n            initializedPlugins.push(plugin);\n          }\n        } catch (e) {\n          pluginInitError(editor, plugin, e);\n        }\n      }\n    };\n    const trimLegacyPrefix = name => {\n      return name.replace(/^\\-/, '');\n    };\n    const initPlugins = editor => {\n      const initializedPlugins = [];\n      each$e(getPlugins(editor), name => {\n        initPlugin(editor, initializedPlugins, trimLegacyPrefix(name));\n      });\n    };\n    const initIcons = editor => {\n      const iconPackName = Tools.trim(getIconPackName(editor));\n      const currentIcons = editor.ui.registry.getAll().icons;\n      const loadIcons = {\n        ...IconManager.get('default').icons,\n        ...IconManager.get(iconPackName).icons\n      };\n      each$d(loadIcons, (svgData, icon) => {\n        if (!has$2(currentIcons, icon)) {\n          editor.ui.registry.addIcon(icon, svgData);\n        }\n      });\n    };\n    const initTheme = editor => {\n      const theme = getTheme(editor);\n      if (isString(theme)) {\n        const Theme = ThemeManager.get(theme);\n        editor.theme = Theme(editor, ThemeManager.urls[theme]) || {};\n        if (isFunction(editor.theme.init)) {\n          editor.theme.init(editor, ThemeManager.urls[theme] || editor.documentBaseUrl.replace(/\\/$/, ''));\n        }\n      } else {\n        editor.theme = {};\n      }\n    };\n    const initModel = editor => {\n      const model = getModel(editor);\n      const Model = ModelManager.get(model);\n      editor.model = Model(editor, ModelManager.urls[model]);\n    };\n    const renderFromLoadedTheme = editor => {\n      const render = editor.theme.renderUI;\n      return render ? render() : renderThemeFalse(editor);\n    };\n    const renderFromThemeFunc = editor => {\n      const elm = editor.getElement();\n      const theme = getTheme(editor);\n      const info = theme(editor, elm);\n      if (info.editorContainer.nodeType) {\n        info.editorContainer.id = info.editorContainer.id || editor.id + '_parent';\n      }\n      if (info.iframeContainer && info.iframeContainer.nodeType) {\n        info.iframeContainer.id = info.iframeContainer.id || editor.id + '_iframecontainer';\n      }\n      info.height = info.iframeHeight ? info.iframeHeight : elm.offsetHeight;\n      return info;\n    };\n    const createThemeFalseResult = (element, iframe) => {\n      return {\n        editorContainer: element,\n        iframeContainer: iframe,\n        api: {}\n      };\n    };\n    const renderThemeFalseIframe = targetElement => {\n      const iframeContainer = DOM$4.create('div');\n      DOM$4.insertAfter(iframeContainer, targetElement);\n      return createThemeFalseResult(iframeContainer, iframeContainer);\n    };\n    const renderThemeFalse = editor => {\n      const targetElement = editor.getElement();\n      return editor.inline ? createThemeFalseResult(null) : renderThemeFalseIframe(targetElement);\n    };\n    const renderThemeUi = editor => {\n      const elm = editor.getElement();\n      editor.orgDisplay = elm.style.display;\n      if (isString(getTheme(editor))) {\n        return renderFromLoadedTheme(editor);\n      } else if (isFunction(getTheme(editor))) {\n        return renderFromThemeFunc(editor);\n      } else {\n        return renderThemeFalse(editor);\n      }\n    };\n    const augmentEditorUiApi = (editor, api) => {\n      const uiApiFacade = {\n        show: Optional.from(api.show).getOr(noop),\n        hide: Optional.from(api.hide).getOr(noop),\n        isEnabled: Optional.from(api.isEnabled).getOr(always),\n        setEnabled: state => {\n          if (!editor.mode.isReadOnly()) {\n            Optional.from(api.setEnabled).each(f => f(state));\n          }\n        }\n      };\n      editor.ui = {\n        ...editor.ui,\n        ...uiApiFacade\n      };\n    };\n    const init = async editor => {\n      editor.dispatch('ScriptsLoaded');\n      initIcons(editor);\n      initTheme(editor);\n      initModel(editor);\n      initPlugins(editor);\n      const renderInfo = await renderThemeUi(editor);\n      augmentEditorUiApi(editor, Optional.from(renderInfo.api).getOr({}));\n      editor.editorContainer = renderInfo.editorContainer;\n      appendContentCssFromSettings(editor);\n      if (editor.inline) {\n        contentBodyLoaded(editor);\n      } else {\n        init$1(editor, {\n          editorContainer: renderInfo.editorContainer,\n          iframeContainer: renderInfo.iframeContainer\n        });\n      }\n    };\n\n    const DOM$3 = DOMUtils.DOM;\n    const hasSkipLoadPrefix = name => name.charAt(0) === '-';\n    const loadLanguage = (scriptLoader, editor) => {\n      const languageCode = getLanguageCode(editor);\n      const languageUrl = getLanguageUrl(editor);\n      if (!I18n.hasCode(languageCode) && languageCode !== 'en') {\n        const url = isNotEmpty(languageUrl) ? languageUrl : `${ editor.editorManager.baseURL }/langs/${ languageCode }.js`;\n        scriptLoader.add(url).catch(() => {\n          languageLoadError(editor, url, languageCode);\n        });\n      }\n    };\n    const loadTheme = (editor, suffix) => {\n      const theme = getTheme(editor);\n      if (isString(theme) && !hasSkipLoadPrefix(theme) && !has$2(ThemeManager.urls, theme)) {\n        const themeUrl = getThemeUrl(editor);\n        const url = themeUrl ? editor.documentBaseURI.toAbsolute(themeUrl) : `themes/${ theme }/theme${ suffix }.js`;\n        ThemeManager.load(theme, url).catch(() => {\n          themeLoadError(editor, url, theme);\n        });\n      }\n    };\n    const loadModel = (editor, suffix) => {\n      const model = getModel(editor);\n      if (model !== 'plugin' && !has$2(ModelManager.urls, model)) {\n        const modelUrl = getModelUrl(editor);\n        const url = isString(modelUrl) ? editor.documentBaseURI.toAbsolute(modelUrl) : `models/${ model }/model${ suffix }.js`;\n        ModelManager.load(model, url).catch(() => {\n          modelLoadError(editor, url, model);\n        });\n      }\n    };\n    const getIconsUrlMetaFromUrl = editor => Optional.from(getIconsUrl(editor)).filter(isNotEmpty).map(url => ({\n      url,\n      name: Optional.none()\n    }));\n    const getIconsUrlMetaFromName = (editor, name, suffix) => Optional.from(name).filter(name => isNotEmpty(name) && !IconManager.has(name)).map(name => ({\n      url: `${ editor.editorManager.baseURL }/icons/${ name }/icons${ suffix }.js`,\n      name: Optional.some(name)\n    }));\n    const loadIcons = (scriptLoader, editor, suffix) => {\n      const defaultIconsUrl = getIconsUrlMetaFromName(editor, 'default', suffix);\n      const customIconsUrl = getIconsUrlMetaFromUrl(editor).orThunk(() => getIconsUrlMetaFromName(editor, getIconPackName(editor), ''));\n      each$e(cat([\n        defaultIconsUrl,\n        customIconsUrl\n      ]), urlMeta => {\n        scriptLoader.add(urlMeta.url).catch(() => {\n          iconsLoadError(editor, urlMeta.url, urlMeta.name.getOrUndefined());\n        });\n      });\n    };\n    const loadPlugins = (editor, suffix) => {\n      const loadPlugin = (name, url) => {\n        PluginManager.load(name, url).catch(() => {\n          pluginLoadError(editor, url, name);\n        });\n      };\n      each$d(getExternalPlugins$1(editor), (url, name) => {\n        loadPlugin(name, url);\n        editor.options.set('plugins', getPlugins(editor).concat(name));\n      });\n      each$e(getPlugins(editor), plugin => {\n        plugin = Tools.trim(plugin);\n        if (plugin && !PluginManager.urls[plugin] && !hasSkipLoadPrefix(plugin)) {\n          loadPlugin(plugin, `plugins/${ plugin }/plugin${ suffix }.js`);\n        }\n      });\n    };\n    const isThemeLoaded = editor => {\n      const theme = getTheme(editor);\n      return !isString(theme) || isNonNullable(ThemeManager.get(theme));\n    };\n    const isModelLoaded = editor => {\n      const model = getModel(editor);\n      return isNonNullable(ModelManager.get(model));\n    };\n    const loadScripts = (editor, suffix) => {\n      const scriptLoader = ScriptLoader.ScriptLoader;\n      const initEditor = () => {\n        if (!editor.removed && isThemeLoaded(editor) && isModelLoaded(editor)) {\n          init(editor);\n        }\n      };\n      loadTheme(editor, suffix);\n      loadModel(editor, suffix);\n      loadLanguage(scriptLoader, editor);\n      loadIcons(scriptLoader, editor, suffix);\n      loadPlugins(editor, suffix);\n      scriptLoader.loadQueue().then(initEditor, initEditor);\n    };\n    const getStyleSheetLoader = (element, editor) => instance.forElement(element, {\n      contentCssCors: hasContentCssCors(editor),\n      referrerPolicy: getReferrerPolicy(editor)\n    });\n    const render = editor => {\n      const id = editor.id;\n      I18n.setCode(getLanguageCode(editor));\n      const readyHandler = () => {\n        DOM$3.unbind(window, 'ready', readyHandler);\n        editor.render();\n      };\n      if (!EventUtils.Event.domLoaded) {\n        DOM$3.bind(window, 'ready', readyHandler);\n        return;\n      }\n      if (!editor.getElement()) {\n        return;\n      }\n      const element = SugarElement.fromDom(editor.getElement());\n      const snapshot = clone$4(element);\n      editor.on('remove', () => {\n        eachr(element.dom.attributes, attr => remove$a(element, attr.name));\n        setAll$1(element, snapshot);\n      });\n      editor.ui.styleSheetLoader = getStyleSheetLoader(element, editor);\n      if (!isInline$1(editor)) {\n        editor.orgVisibility = editor.getElement().style.visibility;\n        editor.getElement().style.visibility = 'hidden';\n      } else {\n        editor.inline = true;\n      }\n      const form = editor.getElement().form || DOM$3.getParent(id, 'form');\n      if (form) {\n        editor.formElement = form;\n        if (hasHiddenInput(editor) && !isTextareaOrInput(editor.getElement())) {\n          DOM$3.insertAfter(DOM$3.create('input', {\n            type: 'hidden',\n            name: id\n          }), id);\n          editor.hasHiddenInput = true;\n        }\n        editor.formEventDelegate = e => {\n          editor.dispatch(e.type, e);\n        };\n        DOM$3.bind(form, 'submit reset', editor.formEventDelegate);\n        editor.on('reset', () => {\n          editor.resetContent();\n        });\n        if (shouldPatchSubmit(editor) && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) {\n          form._mceOldSubmit = form.submit;\n          form.submit = () => {\n            editor.editorManager.triggerSave();\n            editor.setDirty(false);\n            return form._mceOldSubmit(form);\n          };\n        }\n      }\n      editor.windowManager = WindowManager(editor);\n      editor.notificationManager = NotificationManager(editor);\n      if (isEncodingXml(editor)) {\n        editor.on('GetContent', e => {\n          if (e.save) {\n            e.content = DOM$3.encode(e.content);\n          }\n        });\n      }\n      if (shouldAddFormSubmitTrigger(editor)) {\n        editor.on('submit', () => {\n          if (editor.initialized) {\n            editor.save();\n          }\n        });\n      }\n      if (shouldAddUnloadTrigger(editor)) {\n        editor._beforeUnload = () => {\n          if (editor.initialized && !editor.destroyed && !editor.isHidden()) {\n            editor.save({\n              format: 'raw',\n              no_events: true,\n              set_dirty: false\n            });\n          }\n        };\n        editor.editorManager.on('BeforeUnload', editor._beforeUnload);\n      }\n      editor.editorManager.add(editor);\n      loadScripts(editor, editor.suffix);\n    };\n\n    const setEditableRoot = (editor, state) => {\n      if (editor._editableRoot !== state) {\n        editor._editableRoot = state;\n        if (!editor.readonly) {\n          editor.getBody().contentEditable = String(editor.hasEditableRoot());\n          editor.nodeChanged();\n        }\n        fireEditableRootStateChange(editor, state);\n      }\n    };\n    const hasEditableRoot = editor => editor._editableRoot;\n\n    const sectionResult = (sections, settings) => ({\n      sections: constant(sections),\n      options: constant(settings)\n    });\n    const deviceDetection = detect$2().deviceType;\n    const isPhone = deviceDetection.isPhone();\n    const isTablet = deviceDetection.isTablet();\n    const normalizePlugins = plugins => {\n      if (isNullable(plugins)) {\n        return [];\n      } else {\n        const pluginNames = isArray$1(plugins) ? plugins : plugins.split(/[ ,]/);\n        const trimmedPlugins = map$3(pluginNames, trim$4);\n        return filter$5(trimmedPlugins, isNotEmpty);\n      }\n    };\n    const extractSections = (keys, options) => {\n      const result = bifilter(options, (value, key) => {\n        return contains$2(keys, key);\n      });\n      return sectionResult(result.t, result.f);\n    };\n    const getSection = (sectionResult, name, defaults = {}) => {\n      const sections = sectionResult.sections();\n      const sectionOptions = get$a(sections, name).getOr({});\n      return Tools.extend({}, defaults, sectionOptions);\n    };\n    const hasSection = (sectionResult, name) => {\n      return has$2(sectionResult.sections(), name);\n    };\n    const getSectionConfig = (sectionResult, name) => {\n      return hasSection(sectionResult, name) ? sectionResult.sections()[name] : {};\n    };\n    const getMobileOverrideOptions = (mobileOptions, isPhone) => {\n      const defaultMobileOptions = {\n        table_grid: false,\n        object_resizing: false,\n        resize: false,\n        toolbar_mode: get$a(mobileOptions, 'toolbar_mode').getOr('scrolling'),\n        toolbar_sticky: false\n      };\n      const defaultPhoneOptions = { menubar: false };\n      return {\n        ...defaultMobileOptions,\n        ...isPhone ? defaultPhoneOptions : {}\n      };\n    };\n    const getExternalPlugins = (overrideOptions, options) => {\n      var _a;\n      const userDefinedExternalPlugins = (_a = options.external_plugins) !== null && _a !== void 0 ? _a : {};\n      if (overrideOptions && overrideOptions.external_plugins) {\n        return Tools.extend({}, overrideOptions.external_plugins, userDefinedExternalPlugins);\n      } else {\n        return userDefinedExternalPlugins;\n      }\n    };\n    const combinePlugins = (forcedPlugins, plugins) => [\n      ...normalizePlugins(forcedPlugins),\n      ...normalizePlugins(plugins)\n    ];\n    const getPlatformPlugins = (isMobileDevice, sectionResult, desktopPlugins, mobilePlugins) => {\n      if (isMobileDevice && hasSection(sectionResult, 'mobile')) {\n        return mobilePlugins;\n      } else {\n        return desktopPlugins;\n      }\n    };\n    const processPlugins = (isMobileDevice, sectionResult, defaultOverrideOptions, options) => {\n      const forcedPlugins = normalizePlugins(defaultOverrideOptions.forced_plugins);\n      const desktopPlugins = normalizePlugins(options.plugins);\n      const mobileConfig = getSectionConfig(sectionResult, 'mobile');\n      const mobilePlugins = mobileConfig.plugins ? normalizePlugins(mobileConfig.plugins) : desktopPlugins;\n      const platformPlugins = getPlatformPlugins(isMobileDevice, sectionResult, desktopPlugins, mobilePlugins);\n      const combinedPlugins = combinePlugins(forcedPlugins, platformPlugins);\n      return Tools.extend(options, {\n        forced_plugins: forcedPlugins,\n        plugins: combinedPlugins\n      });\n    };\n    const isOnMobile = (isMobileDevice, sectionResult) => {\n      return isMobileDevice && hasSection(sectionResult, 'mobile');\n    };\n    const combineOptions = (isMobileDevice, isPhone, defaultOptions, defaultOverrideOptions, options) => {\n      var _a;\n      const deviceOverrideOptions = isMobileDevice ? { mobile: getMobileOverrideOptions((_a = options.mobile) !== null && _a !== void 0 ? _a : {}, isPhone) } : {};\n      const sectionResult = extractSections(['mobile'], deepMerge(deviceOverrideOptions, options));\n      const extendedOptions = Tools.extend(defaultOptions, defaultOverrideOptions, sectionResult.options(), isOnMobile(isMobileDevice, sectionResult) ? getSection(sectionResult, 'mobile') : {}, { external_plugins: getExternalPlugins(defaultOverrideOptions, sectionResult.options()) });\n      return processPlugins(isMobileDevice, sectionResult, defaultOverrideOptions, extendedOptions);\n    };\n    const normalizeOptions = (defaultOverrideOptions, options) => combineOptions(isPhone || isTablet, isPhone, options, defaultOverrideOptions, options);\n\n    const addVisual = (editor, elm) => addVisual$1(editor, elm);\n\n    const registerExecCommands$3 = editor => {\n      const toggleFormat = (name, value) => {\n        editor.formatter.toggle(name, value);\n        editor.nodeChanged();\n      };\n      const toggleAlign = align => () => {\n        each$e('left,center,right,justify'.split(','), name => {\n          if (align !== name) {\n            editor.formatter.remove('align' + name);\n          }\n        });\n        if (align !== 'none') {\n          toggleFormat('align' + align);\n        }\n      };\n      editor.editorCommands.addCommands({\n        JustifyLeft: toggleAlign('left'),\n        JustifyCenter: toggleAlign('center'),\n        JustifyRight: toggleAlign('right'),\n        JustifyFull: toggleAlign('justify'),\n        JustifyNone: toggleAlign('none')\n      });\n    };\n    const registerQueryStateCommands$1 = editor => {\n      const alignStates = name => () => {\n        const selection = editor.selection;\n        const nodes = selection.isCollapsed() ? [editor.dom.getParent(selection.getNode(), editor.dom.isBlock)] : selection.getSelectedBlocks();\n        return exists(nodes, node => isNonNullable(editor.formatter.matchNode(node, name)));\n      };\n      editor.editorCommands.addCommands({\n        JustifyLeft: alignStates('alignleft'),\n        JustifyCenter: alignStates('aligncenter'),\n        JustifyRight: alignStates('alignright'),\n        JustifyFull: alignStates('alignjustify')\n      }, 'state');\n    };\n    const registerCommands$b = editor => {\n      registerExecCommands$3(editor);\n      registerQueryStateCommands$1(editor);\n    };\n\n    const registerCommands$a = editor => {\n      editor.editorCommands.addCommands({\n        'Cut,Copy,Paste': command => {\n          const doc = editor.getDoc();\n          let failed;\n          try {\n            doc.execCommand(command);\n          } catch (ex) {\n            failed = true;\n          }\n          if (command === 'paste' && !doc.queryCommandEnabled(command)) {\n            failed = true;\n          }\n          if (failed || !doc.queryCommandSupported(command)) {\n            let msg = editor.translate(`Your browser doesn't support direct access to the clipboard. ` + 'Please use the Ctrl+X/C/V keyboard shortcuts instead.');\n            if (Env.os.isMacOS() || Env.os.isiOS()) {\n              msg = msg.replace(/Ctrl\\+/g, '\\u2318+');\n            }\n            editor.notificationManager.open({\n              text: msg,\n              type: 'error'\n            });\n          }\n        }\n      });\n    };\n\n    const trimOrPadLeftRight = (dom, rng, html, schema) => {\n      const root = SugarElement.fromDom(dom.getRoot());\n      if (needsToBeNbspLeft(root, CaretPosition.fromRangeStart(rng), schema)) {\n        html = html.replace(/^ /, '&nbsp;');\n      } else {\n        html = html.replace(/^&nbsp;/, ' ');\n      }\n      if (needsToBeNbspRight(root, CaretPosition.fromRangeEnd(rng), schema)) {\n        html = html.replace(/(&nbsp;| )(<br( \\/)>)?$/, '&nbsp;');\n      } else {\n        html = html.replace(/&nbsp;(<br( \\/)?>)?$/, ' ');\n      }\n      return html;\n    };\n\n    const processValue$1 = value => {\n      if (typeof value !== 'string') {\n        const details = Tools.extend({\n          paste: value.paste,\n          data: { paste: value.paste }\n        }, value);\n        return {\n          content: value.content,\n          details\n        };\n      }\n      return {\n        content: value,\n        details: {}\n      };\n    };\n    const trimOrPad = (editor, value) => {\n      const selection = editor.selection;\n      const dom = editor.dom;\n      if (/^ | $/.test(value)) {\n        return trimOrPadLeftRight(dom, selection.getRng(), value, editor.schema);\n      } else {\n        return value;\n      }\n    };\n    const insertAtCaret = (editor, value) => {\n      if (editor.selection.isEditable()) {\n        const {content, details} = processValue$1(value);\n        preProcessSetContent(editor, {\n          ...details,\n          content: trimOrPad(editor, content),\n          format: 'html',\n          set: false,\n          selection: true\n        }).each(args => {\n          const insertedContent = insertContent$1(editor, args.content, details);\n          postProcessSetContent(editor, insertedContent, args);\n          editor.addVisual();\n        });\n      }\n    };\n\n    const registerCommands$9 = editor => {\n      editor.editorCommands.addCommands({\n        mceCleanup: () => {\n          const bm = editor.selection.getBookmark();\n          editor.setContent(editor.getContent());\n          editor.selection.moveToBookmark(bm);\n        },\n        insertImage: (_command, _ui, value) => {\n          insertAtCaret(editor, editor.dom.createHTML('img', { src: value }));\n        },\n        insertHorizontalRule: () => {\n          editor.execCommand('mceInsertContent', false, '<hr>');\n        },\n        insertText: (_command, _ui, value) => {\n          insertAtCaret(editor, editor.dom.encode(value));\n        },\n        insertHTML: (_command, _ui, value) => {\n          insertAtCaret(editor, value);\n        },\n        mceInsertContent: (_command, _ui, value) => {\n          insertAtCaret(editor, value);\n        },\n        mceSetContent: (_command, _ui, value) => {\n          editor.setContent(value);\n        },\n        mceReplaceContent: (_command, _ui, value) => {\n          editor.execCommand('mceInsertContent', false, value.replace(/\\{\\$selection\\}/g, editor.selection.getContent({ format: 'text' })));\n        },\n        mceNewDocument: () => {\n          editor.setContent(getNewDocumentContent(editor));\n        }\n      });\n    };\n\n    const legacyPropNames = {\n      'font-size': 'size',\n      'font-family': 'face'\n    };\n    const isFont = isTag('font');\n    const getSpecifiedFontProp = (propName, rootElm, elm) => {\n      const getProperty = elm => getRaw(elm, propName).orThunk(() => {\n        if (isFont(elm)) {\n          return get$a(legacyPropNames, propName).bind(legacyPropName => getOpt(elm, legacyPropName));\n        } else {\n          return Optional.none();\n        }\n      });\n      const isRoot = elm => eq(SugarElement.fromDom(rootElm), elm);\n      return closest$1(SugarElement.fromDom(elm), elm => getProperty(elm), isRoot);\n    };\n    const normalizeFontFamily = fontFamily => fontFamily.replace(/[\\'\\\"\\\\]/g, '').replace(/,\\s+/g, ',');\n    const getComputedFontProp = (propName, elm) => Optional.from(DOMUtils.DOM.getStyle(elm, propName, true));\n    const getFontProp = propName => (rootElm, elm) => Optional.from(elm).map(SugarElement.fromDom).filter(isElement$7).bind(element => getSpecifiedFontProp(propName, rootElm, element.dom).or(getComputedFontProp(propName, element.dom))).getOr('');\n    const getFontSize = getFontProp('font-size');\n    const getFontFamily = compose(normalizeFontFamily, getFontProp('font-family'));\n\n    const findFirstCaretElement = editor => firstPositionIn(editor.getBody()).bind(caret => {\n      const container = caret.container();\n      return Optional.from(isText$a(container) ? container.parentNode : container);\n    });\n    const getCaretElement = editor => Optional.from(editor.selection.getRng()).bind(rng => {\n      const root = editor.getBody();\n      const atStartOfNode = rng.startContainer === root && rng.startOffset === 0;\n      return atStartOfNode ? Optional.none() : Optional.from(editor.selection.getStart(true));\n    });\n    const bindRange = (editor, binder) => getCaretElement(editor).orThunk(curry(findFirstCaretElement, editor)).map(SugarElement.fromDom).filter(isElement$7).bind(binder);\n    const mapRange = (editor, mapper) => bindRange(editor, compose1(Optional.some, mapper));\n\n    const fromFontSizeNumber = (editor, value) => {\n      if (/^[0-9.]+$/.test(value)) {\n        const fontSizeNumber = parseInt(value, 10);\n        if (fontSizeNumber >= 1 && fontSizeNumber <= 7) {\n          const fontSizes = getFontStyleValues(editor);\n          const fontClasses = getFontSizeClasses(editor);\n          if (fontClasses.length > 0) {\n            return fontClasses[fontSizeNumber - 1] || value;\n          } else {\n            return fontSizes[fontSizeNumber - 1] || value;\n          }\n        } else {\n          return value;\n        }\n      } else {\n        return value;\n      }\n    };\n    const normalizeFontNames = font => {\n      const fonts = font.split(/\\s*,\\s*/);\n      return map$3(fonts, font => {\n        if (font.indexOf(' ') !== -1 && !(startsWith(font, '\"') || startsWith(font, `'`))) {\n          return `'${ font }'`;\n        } else {\n          return font;\n        }\n      }).join(',');\n    };\n    const fontNameAction = (editor, value) => {\n      const font = fromFontSizeNumber(editor, value);\n      editor.formatter.toggle('fontname', { value: normalizeFontNames(font) });\n      editor.nodeChanged();\n    };\n    const fontNameQuery = editor => mapRange(editor, elm => getFontFamily(editor.getBody(), elm.dom)).getOr('');\n    const fontSizeAction = (editor, value) => {\n      editor.formatter.toggle('fontsize', { value: fromFontSizeNumber(editor, value) });\n      editor.nodeChanged();\n    };\n    const fontSizeQuery = editor => mapRange(editor, elm => getFontSize(editor.getBody(), elm.dom)).getOr('');\n\n    const lineHeightQuery = editor => mapRange(editor, elm => {\n      const root = SugarElement.fromDom(editor.getBody());\n      const specifiedStyle = closest$1(elm, elm => getRaw(elm, 'line-height'), curry(eq, root));\n      const computedStyle = () => {\n        const lineHeight = parseFloat(get$7(elm, 'line-height'));\n        const fontSize = parseFloat(get$7(elm, 'font-size'));\n        return String(lineHeight / fontSize);\n      };\n      return specifiedStyle.getOrThunk(computedStyle);\n    }).getOr('');\n    const lineHeightAction = (editor, lineHeight) => {\n      editor.formatter.toggle('lineheight', { value: String(lineHeight) });\n      editor.nodeChanged();\n    };\n\n    const registerExecCommands$2 = editor => {\n      const toggleFormat = (name, value) => {\n        editor.formatter.toggle(name, value);\n        editor.nodeChanged();\n      };\n      editor.editorCommands.addCommands({\n        'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': command => {\n          toggleFormat(command);\n        },\n        'ForeColor,HiliteColor': (command, _ui, value) => {\n          toggleFormat(command, { value });\n        },\n        'BackColor': (_command, _ui, value) => {\n          toggleFormat('hilitecolor', { value });\n        },\n        'FontName': (_command, _ui, value) => {\n          fontNameAction(editor, value);\n        },\n        'FontSize': (_command, _ui, value) => {\n          fontSizeAction(editor, value);\n        },\n        'LineHeight': (_command, _ui, value) => {\n          lineHeightAction(editor, value);\n        },\n        'Lang': (command, _ui, lang) => {\n          var _a;\n          toggleFormat(command, {\n            value: lang.code,\n            customValue: (_a = lang.customCode) !== null && _a !== void 0 ? _a : null\n          });\n        },\n        'RemoveFormat': command => {\n          editor.formatter.remove(command);\n        },\n        'mceBlockQuote': () => {\n          toggleFormat('blockquote');\n        },\n        'FormatBlock': (_command, _ui, value) => {\n          toggleFormat(isString(value) ? value : 'p');\n        },\n        'mceToggleFormat': (_command, _ui, value) => {\n          toggleFormat(value);\n        }\n      });\n    };\n    const registerQueryValueCommands = editor => {\n      const isFormatMatch = name => editor.formatter.match(name);\n      editor.editorCommands.addCommands({\n        'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': command => isFormatMatch(command),\n        'mceBlockQuote': () => isFormatMatch('blockquote')\n      }, 'state');\n      editor.editorCommands.addQueryValueHandler('FontName', () => fontNameQuery(editor));\n      editor.editorCommands.addQueryValueHandler('FontSize', () => fontSizeQuery(editor));\n      editor.editorCommands.addQueryValueHandler('LineHeight', () => lineHeightQuery(editor));\n    };\n    const registerCommands$8 = editor => {\n      registerExecCommands$2(editor);\n      registerQueryValueCommands(editor);\n    };\n\n    const registerCommands$7 = editor => {\n      editor.editorCommands.addCommands({\n        mceAddUndoLevel: () => {\n          editor.undoManager.add();\n        },\n        mceEndUndoLevel: () => {\n          editor.undoManager.add();\n        },\n        Undo: () => {\n          editor.undoManager.undo();\n        },\n        Redo: () => {\n          editor.undoManager.redo();\n        }\n      });\n    };\n\n    const registerCommands$6 = editor => {\n      editor.editorCommands.addCommands({\n        Indent: () => {\n          indent(editor);\n        },\n        Outdent: () => {\n          outdent(editor);\n        }\n      });\n      editor.editorCommands.addCommands({ Outdent: () => canOutdent(editor) }, 'state');\n    };\n\n    const registerCommands$5 = editor => {\n      const applyLinkToSelection = (_command, _ui, value) => {\n        const linkDetails = isString(value) ? { href: value } : value;\n        const anchor = editor.dom.getParent(editor.selection.getNode(), 'a');\n        if (isObject(linkDetails) && isString(linkDetails.href)) {\n          linkDetails.href = linkDetails.href.replace(/ /g, '%20');\n          if (!anchor || !linkDetails.href) {\n            editor.formatter.remove('link');\n          }\n          if (linkDetails.href) {\n            editor.formatter.apply('link', linkDetails, anchor);\n          }\n        }\n      };\n      editor.editorCommands.addCommands({\n        unlink: () => {\n          if (editor.selection.isEditable()) {\n            if (editor.selection.isCollapsed()) {\n              const elm = editor.dom.getParent(editor.selection.getStart(), 'a');\n              if (elm) {\n                editor.dom.remove(elm, true);\n              }\n              return;\n            }\n            editor.formatter.remove('link');\n          }\n        },\n        mceInsertLink: applyLinkToSelection,\n        createLink: applyLinkToSelection\n      });\n    };\n\n    const registerExecCommands$1 = editor => {\n      editor.editorCommands.addCommands({\n        'InsertUnorderedList,InsertOrderedList': command => {\n          editor.getDoc().execCommand(command);\n          const listElm = editor.dom.getParent(editor.selection.getNode(), 'ol,ul');\n          if (listElm) {\n            const listParent = listElm.parentNode;\n            if (listParent && /^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {\n              const bm = editor.selection.getBookmark();\n              editor.dom.split(listParent, listElm);\n              editor.selection.moveToBookmark(bm);\n            }\n          }\n        }\n      });\n    };\n    const registerQueryStateCommands = editor => {\n      editor.editorCommands.addCommands({\n        'InsertUnorderedList,InsertOrderedList': command => {\n          const list = editor.dom.getParent(editor.selection.getNode(), 'ul,ol');\n          return list && (command === 'insertunorderedlist' && list.tagName === 'UL' || command === 'insertorderedlist' && list.tagName === 'OL');\n        }\n      }, 'state');\n    };\n    const registerCommands$4 = editor => {\n      registerExecCommands$1(editor);\n      registerQueryStateCommands(editor);\n    };\n\n    const getTopParentBlock = (editor, node, root, container) => {\n      const dom = editor.dom;\n      const selector = node => dom.isBlock(node) && node.parentElement === root;\n      const topParentBlock = selector(node) ? node : dom.getParent(container, selector, root);\n      return Optional.from(topParentBlock).map(SugarElement.fromDom);\n    };\n    const insert = (editor, before) => {\n      const dom = editor.dom;\n      const rng = editor.selection.getRng();\n      const node = before ? editor.selection.getStart() : editor.selection.getEnd();\n      const container = before ? rng.startContainer : rng.endContainer;\n      const root = getEditableRoot(dom, container);\n      if (!root || !root.isContentEditable) {\n        return;\n      }\n      const insertFn = before ? before$3 : after$4;\n      const newBlockName = getForcedRootBlock(editor);\n      getTopParentBlock(editor, node, root, container).each(parentBlock => {\n        const newBlock = createNewBlock(editor, container, parentBlock.dom, root, false, newBlockName);\n        insertFn(parentBlock, SugarElement.fromDom(newBlock));\n        editor.selection.setCursorLocation(newBlock, 0);\n        editor.dispatch('NewBlock', { newBlock });\n        fireInputEvent(editor, 'insertParagraph');\n      });\n    };\n    const insertBefore = editor => insert(editor, true);\n    const insertAfter = editor => insert(editor, false);\n\n    const registerCommands$3 = editor => {\n      editor.editorCommands.addCommands({\n        InsertNewBlockBefore: () => {\n          insertBefore(editor);\n        },\n        InsertNewBlockAfter: () => {\n          insertAfter(editor);\n        }\n      });\n    };\n\n    const registerCommands$2 = editor => {\n      editor.editorCommands.addCommands({\n        insertParagraph: () => {\n          insertBreak(blockbreak, editor);\n        },\n        mceInsertNewLine: (_command, _ui, value) => {\n          insert$1(editor, value);\n        },\n        InsertLineBreak: (_command, _ui, _value) => {\n          insertBreak(linebreak, editor);\n        }\n      });\n    };\n\n    const registerCommands$1 = editor => {\n      editor.editorCommands.addCommands({\n        mceSelectNodeDepth: (_command, _ui, value) => {\n          let counter = 0;\n          editor.dom.getParent(editor.selection.getNode(), node => {\n            if (isElement$6(node) && counter++ === value) {\n              editor.selection.select(node);\n              return false;\n            } else {\n              return true;\n            }\n          }, editor.getBody());\n        },\n        mceSelectNode: (_command, _ui, value) => {\n          editor.selection.select(value);\n        },\n        selectAll: () => {\n          const editingHost = editor.dom.getParent(editor.selection.getStart(), isContentEditableTrue$3);\n          if (editingHost) {\n            const rng = editor.dom.createRng();\n            rng.selectNodeContents(editingHost);\n            editor.selection.setRng(rng);\n          }\n        }\n      });\n    };\n\n    const registerExecCommands = editor => {\n      editor.editorCommands.addCommands({\n        mceRemoveNode: (_command, _ui, value) => {\n          const node = value !== null && value !== void 0 ? value : editor.selection.getNode();\n          if (node !== editor.getBody()) {\n            const bm = editor.selection.getBookmark();\n            editor.dom.remove(node, true);\n            editor.selection.moveToBookmark(bm);\n          }\n        },\n        mcePrint: () => {\n          editor.getWin().print();\n        },\n        mceFocus: (_command, _ui, value) => {\n          focus(editor, value === true);\n        },\n        mceToggleVisualAid: () => {\n          editor.hasVisual = !editor.hasVisual;\n          editor.addVisual();\n        }\n      });\n    };\n    const registerCommands = editor => {\n      registerCommands$b(editor);\n      registerCommands$a(editor);\n      registerCommands$7(editor);\n      registerCommands$1(editor);\n      registerCommands$9(editor);\n      registerCommands$5(editor);\n      registerCommands$6(editor);\n      registerCommands$3(editor);\n      registerCommands$2(editor);\n      registerCommands$4(editor);\n      registerCommands$8(editor);\n      registerExecCommands(editor);\n    };\n\n    const selectionSafeCommands = ['toggleview'];\n    const isSelectionSafeCommand = command => contains$2(selectionSafeCommands, command.toLowerCase());\n    class EditorCommands {\n      constructor(editor) {\n        this.commands = {\n          state: {},\n          exec: {},\n          value: {}\n        };\n        this.editor = editor;\n      }\n      execCommand(command, ui = false, value, args) {\n        const editor = this.editor;\n        const lowerCaseCommand = command.toLowerCase();\n        const skipFocus = args === null || args === void 0 ? void 0 : args.skip_focus;\n        if (editor.removed) {\n          return false;\n        }\n        if (lowerCaseCommand !== 'mcefocus') {\n          if (!/^(mceAddUndoLevel|mceEndUndoLevel)$/i.test(lowerCaseCommand) && !skipFocus) {\n            editor.focus();\n          } else {\n            restore(editor);\n          }\n        }\n        const eventArgs = editor.dispatch('BeforeExecCommand', {\n          command,\n          ui,\n          value\n        });\n        if (eventArgs.isDefaultPrevented()) {\n          return false;\n        }\n        const func = this.commands.exec[lowerCaseCommand];\n        if (isFunction(func)) {\n          func(lowerCaseCommand, ui, value);\n          editor.dispatch('ExecCommand', {\n            command,\n            ui,\n            value\n          });\n          return true;\n        }\n        return false;\n      }\n      queryCommandState(command) {\n        if (!isSelectionSafeCommand(command) && this.editor.quirks.isHidden() || this.editor.removed) {\n          return false;\n        }\n        const lowerCaseCommand = command.toLowerCase();\n        const func = this.commands.state[lowerCaseCommand];\n        if (isFunction(func)) {\n          return func(lowerCaseCommand);\n        }\n        return false;\n      }\n      queryCommandValue(command) {\n        if (!isSelectionSafeCommand(command) && this.editor.quirks.isHidden() || this.editor.removed) {\n          return '';\n        }\n        const lowerCaseCommand = command.toLowerCase();\n        const func = this.commands.value[lowerCaseCommand];\n        if (isFunction(func)) {\n          return func(lowerCaseCommand);\n        }\n        return '';\n      }\n      addCommands(commandList, type = 'exec') {\n        const commands = this.commands;\n        each$d(commandList, (callback, command) => {\n          each$e(command.toLowerCase().split(','), command => {\n            commands[type][command] = callback;\n          });\n        });\n      }\n      addCommand(command, callback, scope) {\n        const lowerCaseCommand = command.toLowerCase();\n        this.commands.exec[lowerCaseCommand] = (_command, ui, value) => callback.call(scope !== null && scope !== void 0 ? scope : this.editor, ui, value);\n      }\n      queryCommandSupported(command) {\n        const lowerCaseCommand = command.toLowerCase();\n        if (this.commands.exec[lowerCaseCommand]) {\n          return true;\n        } else {\n          return false;\n        }\n      }\n      addQueryStateHandler(command, callback, scope) {\n        this.commands.state[command.toLowerCase()] = () => callback.call(scope !== null && scope !== void 0 ? scope : this.editor);\n      }\n      addQueryValueHandler(command, callback, scope) {\n        this.commands.value[command.toLowerCase()] = () => callback.call(scope !== null && scope !== void 0 ? scope : this.editor);\n      }\n    }\n\n    const internalContentEditableAttr = 'data-mce-contenteditable';\n    const toggleClass = (elm, cls, state) => {\n      if (has(elm, cls) && !state) {\n        remove$7(elm, cls);\n      } else if (state) {\n        add$2(elm, cls);\n      }\n    };\n    const setEditorCommandState = (editor, cmd, state) => {\n      try {\n        editor.getDoc().execCommand(cmd, false, String(state));\n      } catch (ex) {\n      }\n    };\n    const setContentEditable = (elm, state) => {\n      elm.dom.contentEditable = state ? 'true' : 'false';\n    };\n    const switchOffContentEditableTrue = elm => {\n      each$e(descendants(elm, '*[contenteditable=\"true\"]'), elm => {\n        set$3(elm, internalContentEditableAttr, 'true');\n        setContentEditable(elm, false);\n      });\n    };\n    const switchOnContentEditableTrue = elm => {\n      each$e(descendants(elm, `*[${ internalContentEditableAttr }=\"true\"]`), elm => {\n        remove$a(elm, internalContentEditableAttr);\n        setContentEditable(elm, true);\n      });\n    };\n    const removeFakeSelection = editor => {\n      Optional.from(editor.selection.getNode()).each(elm => {\n        elm.removeAttribute('data-mce-selected');\n      });\n    };\n    const restoreFakeSelection = editor => {\n      editor.selection.setRng(editor.selection.getRng());\n    };\n    const toggleReadOnly = (editor, state) => {\n      const body = SugarElement.fromDom(editor.getBody());\n      toggleClass(body, 'mce-content-readonly', state);\n      if (state) {\n        editor.selection.controlSelection.hideResizeRect();\n        editor._selectionOverrides.hideFakeCaret();\n        removeFakeSelection(editor);\n        editor.readonly = true;\n        setContentEditable(body, false);\n        switchOffContentEditableTrue(body);\n      } else {\n        editor.readonly = false;\n        if (editor.hasEditableRoot()) {\n          setContentEditable(body, true);\n        }\n        switchOnContentEditableTrue(body);\n        setEditorCommandState(editor, 'StyleWithCSS', false);\n        setEditorCommandState(editor, 'enableInlineTableEditing', false);\n        setEditorCommandState(editor, 'enableObjectResizing', false);\n        if (hasEditorOrUiFocus(editor)) {\n          editor.focus();\n        }\n        restoreFakeSelection(editor);\n        editor.nodeChanged();\n      }\n    };\n    const isReadOnly = editor => editor.readonly;\n    const registerFilters = editor => {\n      editor.parser.addAttributeFilter('contenteditable', nodes => {\n        if (isReadOnly(editor)) {\n          each$e(nodes, node => {\n            node.attr(internalContentEditableAttr, node.attr('contenteditable'));\n            node.attr('contenteditable', 'false');\n          });\n        }\n      });\n      editor.serializer.addAttributeFilter(internalContentEditableAttr, nodes => {\n        if (isReadOnly(editor)) {\n          each$e(nodes, node => {\n            node.attr('contenteditable', node.attr(internalContentEditableAttr));\n          });\n        }\n      });\n      editor.serializer.addTempAttr(internalContentEditableAttr);\n    };\n    const registerReadOnlyContentFilters = editor => {\n      if (editor.serializer) {\n        registerFilters(editor);\n      } else {\n        editor.on('PreInit', () => {\n          registerFilters(editor);\n        });\n      }\n    };\n    const isClickEvent = e => e.type === 'click';\n    const allowedEvents = ['copy'];\n    const isReadOnlyAllowedEvent = e => contains$2(allowedEvents, e.type);\n    const getAnchorHrefOpt = (editor, elm) => {\n      const isRoot = elm => eq(elm, SugarElement.fromDom(editor.getBody()));\n      return closest$3(elm, 'a', isRoot).bind(a => getOpt(a, 'href'));\n    };\n    const processReadonlyEvents = (editor, e) => {\n      if (isClickEvent(e) && !VK.metaKeyPressed(e)) {\n        const elm = SugarElement.fromDom(e.target);\n        getAnchorHrefOpt(editor, elm).each(href => {\n          e.preventDefault();\n          if (/^#/.test(href)) {\n            const targetEl = editor.dom.select(`${ href },[name=\"${ removeLeading(href, '#') }\"]`);\n            if (targetEl.length) {\n              editor.selection.scrollIntoView(targetEl[0], true);\n            }\n          } else {\n            window.open(href, '_blank', 'rel=noopener noreferrer,menubar=yes,toolbar=yes,location=yes,status=yes,resizable=yes,scrollbars=yes');\n          }\n        });\n      } else if (isReadOnlyAllowedEvent(e)) {\n        editor.dispatch(e.type, e);\n      }\n    };\n    const registerReadOnlySelectionBlockers = editor => {\n      editor.on('ShowCaret', e => {\n        if (isReadOnly(editor)) {\n          e.preventDefault();\n        }\n      });\n      editor.on('ObjectSelected', e => {\n        if (isReadOnly(editor)) {\n          e.preventDefault();\n        }\n      });\n    };\n\n    const nativeEvents = Tools.makeMap('focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange ' + 'mouseout mouseenter mouseleave wheel keydown keypress keyup input beforeinput contextmenu dragstart dragend dragover ' + 'draggesture dragdrop drop drag submit ' + 'compositionstart compositionend compositionupdate touchstart touchmove touchend touchcancel', ' ');\n    class EventDispatcher {\n      static isNative(name) {\n        return !!nativeEvents[name.toLowerCase()];\n      }\n      constructor(settings) {\n        this.bindings = {};\n        this.settings = settings || {};\n        this.scope = this.settings.scope || this;\n        this.toggleEvent = this.settings.toggleEvent || never;\n      }\n      fire(name, args) {\n        return this.dispatch(name, args);\n      }\n      dispatch(name, args) {\n        const lcName = name.toLowerCase();\n        const event = normalize$3(lcName, args !== null && args !== void 0 ? args : {}, this.scope);\n        if (this.settings.beforeFire) {\n          this.settings.beforeFire(event);\n        }\n        const handlers = this.bindings[lcName];\n        if (handlers) {\n          for (let i = 0, l = handlers.length; i < l; i++) {\n            const callback = handlers[i];\n            if (callback.removed) {\n              continue;\n            }\n            if (callback.once) {\n              this.off(lcName, callback.func);\n            }\n            if (event.isImmediatePropagationStopped()) {\n              return event;\n            }\n            if (callback.func.call(this.scope, event) === false) {\n              event.preventDefault();\n              return event;\n            }\n          }\n        }\n        return event;\n      }\n      on(name, callback, prepend, extra) {\n        if (callback === false) {\n          callback = never;\n        }\n        if (callback) {\n          const wrappedCallback = {\n            func: callback,\n            removed: false\n          };\n          if (extra) {\n            Tools.extend(wrappedCallback, extra);\n          }\n          const names = name.toLowerCase().split(' ');\n          let i = names.length;\n          while (i--) {\n            const currentName = names[i];\n            let handlers = this.bindings[currentName];\n            if (!handlers) {\n              handlers = [];\n              this.toggleEvent(currentName, true);\n            }\n            if (prepend) {\n              handlers = [\n                wrappedCallback,\n                ...handlers\n              ];\n            } else {\n              handlers = [\n                ...handlers,\n                wrappedCallback\n              ];\n            }\n            this.bindings[currentName] = handlers;\n          }\n        }\n        return this;\n      }\n      off(name, callback) {\n        if (name) {\n          const names = name.toLowerCase().split(' ');\n          let i = names.length;\n          while (i--) {\n            const currentName = names[i];\n            let handlers = this.bindings[currentName];\n            if (!currentName) {\n              each$d(this.bindings, (_value, bindingName) => {\n                this.toggleEvent(bindingName, false);\n                delete this.bindings[bindingName];\n              });\n              return this;\n            }\n            if (handlers) {\n              if (!callback) {\n                handlers.length = 0;\n              } else {\n                const filteredHandlers = partition$2(handlers, handler => handler.func === callback);\n                handlers = filteredHandlers.fail;\n                this.bindings[currentName] = handlers;\n                each$e(filteredHandlers.pass, handler => {\n                  handler.removed = true;\n                });\n              }\n              if (!handlers.length) {\n                this.toggleEvent(name, false);\n                delete this.bindings[currentName];\n              }\n            }\n          }\n        } else {\n          each$d(this.bindings, (_value, name) => {\n            this.toggleEvent(name, false);\n          });\n          this.bindings = {};\n        }\n        return this;\n      }\n      once(name, callback, prepend) {\n        return this.on(name, callback, prepend, { once: true });\n      }\n      has(name) {\n        name = name.toLowerCase();\n        const binding = this.bindings[name];\n        return !(!binding || binding.length === 0);\n      }\n    }\n\n    const getEventDispatcher = obj => {\n      if (!obj._eventDispatcher) {\n        obj._eventDispatcher = new EventDispatcher({\n          scope: obj,\n          toggleEvent: (name, state) => {\n            if (EventDispatcher.isNative(name) && obj.toggleNativeEvent) {\n              obj.toggleNativeEvent(name, state);\n            }\n          }\n        });\n      }\n      return obj._eventDispatcher;\n    };\n    const Observable = {\n      fire(name, args, bubble) {\n        return this.dispatch(name, args, bubble);\n      },\n      dispatch(name, args, bubble) {\n        const self = this;\n        if (self.removed && name !== 'remove' && name !== 'detach') {\n          return normalize$3(name.toLowerCase(), args !== null && args !== void 0 ? args : {}, self);\n        }\n        const dispatcherArgs = getEventDispatcher(self).dispatch(name, args);\n        if (bubble !== false && self.parent) {\n          let parent = self.parent();\n          while (parent && !dispatcherArgs.isPropagationStopped()) {\n            parent.dispatch(name, dispatcherArgs, false);\n            parent = parent.parent ? parent.parent() : undefined;\n          }\n        }\n        return dispatcherArgs;\n      },\n      on(name, callback, prepend) {\n        return getEventDispatcher(this).on(name, callback, prepend);\n      },\n      off(name, callback) {\n        return getEventDispatcher(this).off(name, callback);\n      },\n      once(name, callback) {\n        return getEventDispatcher(this).once(name, callback);\n      },\n      hasEventListeners(name) {\n        return getEventDispatcher(this).has(name);\n      }\n    };\n\n    const DOM$2 = DOMUtils.DOM;\n    let customEventRootDelegates;\n    const getEventTarget = (editor, eventName) => {\n      if (eventName === 'selectionchange') {\n        return editor.getDoc();\n      }\n      if (!editor.inline && /^(?:mouse|touch|click|contextmenu|drop|dragover|dragend)/.test(eventName)) {\n        return editor.getDoc().documentElement;\n      }\n      const eventRoot = getEventRoot(editor);\n      if (eventRoot) {\n        if (!editor.eventRoot) {\n          editor.eventRoot = DOM$2.select(eventRoot)[0];\n        }\n        return editor.eventRoot;\n      }\n      return editor.getBody();\n    };\n    const isListening = editor => !editor.hidden && !isReadOnly(editor);\n    const fireEvent = (editor, eventName, e) => {\n      if (isListening(editor)) {\n        editor.dispatch(eventName, e);\n      } else if (isReadOnly(editor)) {\n        processReadonlyEvents(editor, e);\n      }\n    };\n    const bindEventDelegate = (editor, eventName) => {\n      if (!editor.delegates) {\n        editor.delegates = {};\n      }\n      if (editor.delegates[eventName] || editor.removed) {\n        return;\n      }\n      const eventRootElm = getEventTarget(editor, eventName);\n      if (getEventRoot(editor)) {\n        if (!customEventRootDelegates) {\n          customEventRootDelegates = {};\n          editor.editorManager.on('removeEditor', () => {\n            if (!editor.editorManager.activeEditor) {\n              if (customEventRootDelegates) {\n                each$d(customEventRootDelegates, (_value, name) => {\n                  editor.dom.unbind(getEventTarget(editor, name));\n                });\n                customEventRootDelegates = null;\n              }\n            }\n          });\n        }\n        if (customEventRootDelegates[eventName]) {\n          return;\n        }\n        const delegate = e => {\n          const target = e.target;\n          const editors = editor.editorManager.get();\n          let i = editors.length;\n          while (i--) {\n            const body = editors[i].getBody();\n            if (body === target || DOM$2.isChildOf(target, body)) {\n              fireEvent(editors[i], eventName, e);\n            }\n          }\n        };\n        customEventRootDelegates[eventName] = delegate;\n        DOM$2.bind(eventRootElm, eventName, delegate);\n      } else {\n        const delegate = e => {\n          fireEvent(editor, eventName, e);\n        };\n        DOM$2.bind(eventRootElm, eventName, delegate);\n        editor.delegates[eventName] = delegate;\n      }\n    };\n    const EditorObservable = {\n      ...Observable,\n      bindPendingEventDelegates() {\n        const self = this;\n        Tools.each(self._pendingNativeEvents, name => {\n          bindEventDelegate(self, name);\n        });\n      },\n      toggleNativeEvent(name, state) {\n        const self = this;\n        if (name === 'focus' || name === 'blur') {\n          return;\n        }\n        if (self.removed) {\n          return;\n        }\n        if (state) {\n          if (self.initialized) {\n            bindEventDelegate(self, name);\n          } else {\n            if (!self._pendingNativeEvents) {\n              self._pendingNativeEvents = [name];\n            } else {\n              self._pendingNativeEvents.push(name);\n            }\n          }\n        } else if (self.initialized && self.delegates) {\n          self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);\n          delete self.delegates[name];\n        }\n      },\n      unbindAllNativeEvents() {\n        const self = this;\n        const body = self.getBody();\n        const dom = self.dom;\n        if (self.delegates) {\n          each$d(self.delegates, (value, name) => {\n            self.dom.unbind(getEventTarget(self, name), name, value);\n          });\n          delete self.delegates;\n        }\n        if (!self.inline && body && dom) {\n          body.onload = null;\n          dom.unbind(self.getWin());\n          dom.unbind(self.getDoc());\n        }\n        if (dom) {\n          dom.unbind(body);\n          dom.unbind(self.getContainer());\n        }\n      }\n    };\n\n    const stringListProcessor = value => {\n      if (isString(value)) {\n        return {\n          value: value.split(/[ ,]/),\n          valid: true\n        };\n      } else if (isArrayOf(value, isString)) {\n        return {\n          value,\n          valid: true\n        };\n      } else {\n        return {\n          valid: false,\n          message: `The value must be a string[] or a comma/space separated string.`\n        };\n      }\n    };\n    const getBuiltInProcessor = type => {\n      const validator = (() => {\n        switch (type) {\n        case 'array':\n          return isArray$1;\n        case 'boolean':\n          return isBoolean;\n        case 'function':\n          return isFunction;\n        case 'number':\n          return isNumber;\n        case 'object':\n          return isObject;\n        case 'string':\n          return isString;\n        case 'string[]':\n          return stringListProcessor;\n        case 'object[]':\n          return val => isArrayOf(val, isObject);\n        case 'regexp':\n          return val => is$4(val, RegExp);\n        default:\n          return always;\n        }\n      })();\n      return value => processValue(value, validator, `The value must be a ${ type }.`);\n    };\n    const isBuiltInSpec = spec => isString(spec.processor);\n    const getErrorMessage = (message, result) => {\n      const additionalText = isEmpty$3(result.message) ? '' : `. ${ result.message }`;\n      return message + additionalText;\n    };\n    const isValidResult = result => result.valid;\n    const processValue = (value, processor, message = '') => {\n      const result = processor(value);\n      if (isBoolean(result)) {\n        return result ? {\n          value: value,\n          valid: true\n        } : {\n          valid: false,\n          message\n        };\n      } else {\n        return result;\n      }\n    };\n    const processDefaultValue = (name, defaultValue, processor) => {\n      if (!isUndefined(defaultValue)) {\n        const result = processValue(defaultValue, processor);\n        if (isValidResult(result)) {\n          return result.value;\n        } else {\n          console.error(getErrorMessage(`Invalid default value passed for the \"${ name }\" option`, result));\n        }\n      }\n      return undefined;\n    };\n    const create$5 = (editor, initialOptions) => {\n      const registry = {};\n      const values = {};\n      const setValue = (name, value, processor) => {\n        const result = processValue(value, processor);\n        if (isValidResult(result)) {\n          values[name] = result.value;\n          return true;\n        } else {\n          console.warn(getErrorMessage(`Invalid value passed for the ${ name } option`, result));\n          return false;\n        }\n      };\n      const register = (name, spec) => {\n        const processor = isBuiltInSpec(spec) ? getBuiltInProcessor(spec.processor) : spec.processor;\n        const defaultValue = processDefaultValue(name, spec.default, processor);\n        registry[name] = {\n          ...spec,\n          default: defaultValue,\n          processor\n        };\n        const initValue = get$a(values, name).orThunk(() => get$a(initialOptions, name));\n        initValue.each(value => setValue(name, value, processor));\n      };\n      const isRegistered = name => has$2(registry, name);\n      const get = name => get$a(values, name).orThunk(() => get$a(registry, name).map(spec => spec.default)).getOrUndefined();\n      const set = (name, value) => {\n        if (!isRegistered(name)) {\n          console.warn(`\"${ name }\" is not a registered option. Ensure the option has been registered before setting a value.`);\n          return false;\n        } else {\n          const spec = registry[name];\n          if (spec.immutable) {\n            console.error(`\"${ name }\" is an immutable option and cannot be updated`);\n            return false;\n          } else {\n            return setValue(name, value, spec.processor);\n          }\n        }\n      };\n      const unset = name => {\n        const registered = isRegistered(name);\n        if (registered) {\n          delete values[name];\n        }\n        return registered;\n      };\n      const isSet = name => has$2(values, name);\n      return {\n        register,\n        isRegistered,\n        get,\n        set,\n        unset,\n        isSet\n      };\n    };\n\n    const defaultModes = [\n      'design',\n      'readonly'\n    ];\n    const switchToMode = (editor, activeMode, availableModes, mode) => {\n      const oldMode = availableModes[activeMode.get()];\n      const newMode = availableModes[mode];\n      try {\n        newMode.activate();\n      } catch (e) {\n        console.error(`problem while activating editor mode ${ mode }:`, e);\n        return;\n      }\n      oldMode.deactivate();\n      if (oldMode.editorReadOnly !== newMode.editorReadOnly) {\n        toggleReadOnly(editor, newMode.editorReadOnly);\n      }\n      activeMode.set(mode);\n      fireSwitchMode(editor, mode);\n    };\n    const setMode = (editor, availableModes, activeMode, mode) => {\n      if (mode === activeMode.get()) {\n        return;\n      } else if (!has$2(availableModes, mode)) {\n        throw new Error(`Editor mode '${ mode }' is invalid`);\n      }\n      if (editor.initialized) {\n        switchToMode(editor, activeMode, availableModes, mode);\n      } else {\n        editor.on('init', () => switchToMode(editor, activeMode, availableModes, mode));\n      }\n    };\n    const registerMode = (availableModes, mode, api) => {\n      if (contains$2(defaultModes, mode)) {\n        throw new Error(`Cannot override default mode ${ mode }`);\n      }\n      return {\n        ...availableModes,\n        [mode]: {\n          ...api,\n          deactivate: () => {\n            try {\n              api.deactivate();\n            } catch (e) {\n              console.error(`problem while deactivating editor mode ${ mode }:`, e);\n            }\n          }\n        }\n      };\n    };\n\n    const create$4 = editor => {\n      const activeMode = Cell('design');\n      const availableModes = Cell({\n        design: {\n          activate: noop,\n          deactivate: noop,\n          editorReadOnly: false\n        },\n        readonly: {\n          activate: noop,\n          deactivate: noop,\n          editorReadOnly: true\n        }\n      });\n      registerReadOnlyContentFilters(editor);\n      registerReadOnlySelectionBlockers(editor);\n      return {\n        isReadOnly: () => isReadOnly(editor),\n        set: mode => setMode(editor, availableModes.get(), activeMode, mode),\n        get: () => activeMode.get(),\n        register: (mode, api) => {\n          availableModes.set(registerMode(availableModes.get(), mode, api));\n        }\n      };\n    };\n\n    const each$2 = Tools.each, explode = Tools.explode;\n    const keyCodeLookup = {\n      f1: 112,\n      f2: 113,\n      f3: 114,\n      f4: 115,\n      f5: 116,\n      f6: 117,\n      f7: 118,\n      f8: 119,\n      f9: 120,\n      f10: 121,\n      f11: 122,\n      f12: 123\n    };\n    const modifierNames = Tools.makeMap('alt,ctrl,shift,meta,access');\n    const isModifier = key => key in modifierNames;\n    const parseShortcut = pattern => {\n      const shortcut = {};\n      const isMac = Env.os.isMacOS() || Env.os.isiOS();\n      each$2(explode(pattern.toLowerCase(), '+'), value => {\n        if (isModifier(value)) {\n          shortcut[value] = true;\n        } else {\n          if (/^[0-9]{2,}$/.test(value)) {\n            shortcut.keyCode = parseInt(value, 10);\n          } else {\n            shortcut.charCode = value.charCodeAt(0);\n            shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0);\n          }\n        }\n      });\n      const id = [shortcut.keyCode];\n      let key;\n      for (key in modifierNames) {\n        if (shortcut[key]) {\n          id.push(key);\n        } else {\n          shortcut[key] = false;\n        }\n      }\n      shortcut.id = id.join(',');\n      if (shortcut.access) {\n        shortcut.alt = true;\n        if (isMac) {\n          shortcut.ctrl = true;\n        } else {\n          shortcut.shift = true;\n        }\n      }\n      if (shortcut.meta) {\n        if (isMac) {\n          shortcut.meta = true;\n        } else {\n          shortcut.ctrl = true;\n          shortcut.meta = false;\n        }\n      }\n      return shortcut;\n    };\n    class Shortcuts {\n      constructor(editor) {\n        this.shortcuts = {};\n        this.pendingPatterns = [];\n        this.editor = editor;\n        const self = this;\n        editor.on('keyup keypress keydown', e => {\n          if ((self.hasModifier(e) || self.isFunctionKey(e)) && !e.isDefaultPrevented()) {\n            each$2(self.shortcuts, shortcut => {\n              if (self.matchShortcut(e, shortcut)) {\n                self.pendingPatterns = shortcut.subpatterns.slice(0);\n                if (e.type === 'keydown') {\n                  self.executeShortcutAction(shortcut);\n                }\n              }\n            });\n            if (self.matchShortcut(e, self.pendingPatterns[0])) {\n              if (self.pendingPatterns.length === 1) {\n                if (e.type === 'keydown') {\n                  self.executeShortcutAction(self.pendingPatterns[0]);\n                }\n              }\n              self.pendingPatterns.shift();\n            }\n          }\n        });\n      }\n      add(pattern, desc, cmdFunc, scope) {\n        const self = this;\n        const func = self.normalizeCommandFunc(cmdFunc);\n        each$2(explode(Tools.trim(pattern)), pattern => {\n          const shortcut = self.createShortcut(pattern, desc, func, scope);\n          self.shortcuts[shortcut.id] = shortcut;\n        });\n        return true;\n      }\n      remove(pattern) {\n        const shortcut = this.createShortcut(pattern);\n        if (this.shortcuts[shortcut.id]) {\n          delete this.shortcuts[shortcut.id];\n          return true;\n        }\n        return false;\n      }\n      normalizeCommandFunc(cmdFunc) {\n        const self = this;\n        const cmd = cmdFunc;\n        if (typeof cmd === 'string') {\n          return () => {\n            self.editor.execCommand(cmd, false, null);\n          };\n        } else if (Tools.isArray(cmd)) {\n          return () => {\n            self.editor.execCommand(cmd[0], cmd[1], cmd[2]);\n          };\n        } else {\n          return cmd;\n        }\n      }\n      createShortcut(pattern, desc, cmdFunc, scope) {\n        const shortcuts = Tools.map(explode(pattern, '>'), parseShortcut);\n        shortcuts[shortcuts.length - 1] = Tools.extend(shortcuts[shortcuts.length - 1], {\n          func: cmdFunc,\n          scope: scope || this.editor\n        });\n        return Tools.extend(shortcuts[0], {\n          desc: this.editor.translate(desc),\n          subpatterns: shortcuts.slice(1)\n        });\n      }\n      hasModifier(e) {\n        return e.altKey || e.ctrlKey || e.metaKey;\n      }\n      isFunctionKey(e) {\n        return e.type === 'keydown' && e.keyCode >= 112 && e.keyCode <= 123;\n      }\n      matchShortcut(e, shortcut) {\n        if (!shortcut) {\n          return false;\n        }\n        if (shortcut.ctrl !== e.ctrlKey || shortcut.meta !== e.metaKey) {\n          return false;\n        }\n        if (shortcut.alt !== e.altKey || shortcut.shift !== e.shiftKey) {\n          return false;\n        }\n        if (e.keyCode === shortcut.keyCode || e.charCode && e.charCode === shortcut.charCode) {\n          e.preventDefault();\n          return true;\n        }\n        return false;\n      }\n      executeShortcutAction(shortcut) {\n        return shortcut.func ? shortcut.func.call(shortcut.scope) : null;\n      }\n    }\n\n    const create$3 = () => {\n      const buttons = {};\n      const menuItems = {};\n      const popups = {};\n      const icons = {};\n      const contextMenus = {};\n      const contextToolbars = {};\n      const sidebars = {};\n      const views = {};\n      const add = (collection, type) => (name, spec) => {\n        collection[name.toLowerCase()] = {\n          ...spec,\n          type\n        };\n      };\n      const addIcon = (name, svgData) => icons[name.toLowerCase()] = svgData;\n      return {\n        addButton: add(buttons, 'button'),\n        addGroupToolbarButton: add(buttons, 'grouptoolbarbutton'),\n        addToggleButton: add(buttons, 'togglebutton'),\n        addMenuButton: add(buttons, 'menubutton'),\n        addSplitButton: add(buttons, 'splitbutton'),\n        addMenuItem: add(menuItems, 'menuitem'),\n        addNestedMenuItem: add(menuItems, 'nestedmenuitem'),\n        addToggleMenuItem: add(menuItems, 'togglemenuitem'),\n        addAutocompleter: add(popups, 'autocompleter'),\n        addContextMenu: add(contextMenus, 'contextmenu'),\n        addContextToolbar: add(contextToolbars, 'contexttoolbar'),\n        addContextForm: add(contextToolbars, 'contextform'),\n        addSidebar: add(sidebars, 'sidebar'),\n        addView: add(views, 'views'),\n        addIcon,\n        getAll: () => ({\n          buttons,\n          menuItems,\n          icons,\n          popups,\n          contextMenus,\n          contextToolbars,\n          sidebars,\n          views\n        })\n      };\n    };\n\n    const registry = () => {\n      const bridge = create$3();\n      return {\n        addAutocompleter: bridge.addAutocompleter,\n        addButton: bridge.addButton,\n        addContextForm: bridge.addContextForm,\n        addContextMenu: bridge.addContextMenu,\n        addContextToolbar: bridge.addContextToolbar,\n        addIcon: bridge.addIcon,\n        addMenuButton: bridge.addMenuButton,\n        addMenuItem: bridge.addMenuItem,\n        addNestedMenuItem: bridge.addNestedMenuItem,\n        addSidebar: bridge.addSidebar,\n        addSplitButton: bridge.addSplitButton,\n        addToggleButton: bridge.addToggleButton,\n        addGroupToolbarButton: bridge.addGroupToolbarButton,\n        addToggleMenuItem: bridge.addToggleMenuItem,\n        addView: bridge.addView,\n        getAll: bridge.getAll\n      };\n    };\n\n    const DOM$1 = DOMUtils.DOM;\n    const extend = Tools.extend, each$1 = Tools.each;\n    class Editor {\n      constructor(id, options, editorManager) {\n        this.plugins = {};\n        this.contentCSS = [];\n        this.contentStyles = [];\n        this.loadedCSS = {};\n        this.isNotDirty = false;\n        this.composing = false;\n        this.destroyed = false;\n        this.hasHiddenInput = false;\n        this.iframeElement = null;\n        this.initialized = false;\n        this.readonly = false;\n        this.removed = false;\n        this.startContent = '';\n        this._pendingNativeEvents = [];\n        this._skinLoaded = false;\n        this._editableRoot = true;\n        this.editorManager = editorManager;\n        this.documentBaseUrl = editorManager.documentBaseURL;\n        extend(this, EditorObservable);\n        const self = this;\n        this.id = id;\n        this.hidden = false;\n        const normalizedOptions = normalizeOptions(editorManager.defaultOptions, options);\n        this.options = create$5(self, normalizedOptions);\n        register$7(self);\n        const getOption = this.options.get;\n        if (getOption('deprecation_warnings')) {\n          logWarnings(options, normalizedOptions);\n        }\n        const suffix = getOption('suffix');\n        if (suffix) {\n          editorManager.suffix = suffix;\n        }\n        this.suffix = editorManager.suffix;\n        const baseUrl = getOption('base_url');\n        if (baseUrl) {\n          editorManager._setBaseUrl(baseUrl);\n        }\n        this.baseUri = editorManager.baseURI;\n        const referrerPolicy = getReferrerPolicy(self);\n        if (referrerPolicy) {\n          ScriptLoader.ScriptLoader._setReferrerPolicy(referrerPolicy);\n          DOMUtils.DOM.styleSheetLoader._setReferrerPolicy(referrerPolicy);\n        }\n        const contentCssCors = hasContentCssCors(self);\n        if (isNonNullable(contentCssCors)) {\n          DOMUtils.DOM.styleSheetLoader._setContentCssCors(contentCssCors);\n        }\n        AddOnManager.languageLoad = getOption('language_load');\n        AddOnManager.baseURL = editorManager.baseURL;\n        this.setDirty(false);\n        this.documentBaseURI = new URI(getDocumentBaseUrl(self), { base_uri: this.baseUri });\n        this.baseURI = this.baseUri;\n        this.inline = isInline$1(self);\n        this.hasVisual = isVisualAidsEnabled(self);\n        this.shortcuts = new Shortcuts(this);\n        this.editorCommands = new EditorCommands(this);\n        registerCommands(this);\n        const cacheSuffix = getOption('cache_suffix');\n        if (cacheSuffix) {\n          Env.cacheSuffix = cacheSuffix.replace(/^[\\?\\&]+/, '');\n        }\n        this.ui = {\n          registry: registry(),\n          styleSheetLoader: undefined,\n          show: noop,\n          hide: noop,\n          setEnabled: noop,\n          isEnabled: always\n        };\n        this.mode = create$4(self);\n        editorManager.dispatch('SetupEditor', { editor: this });\n        const setupCallback = getSetupCallback(self);\n        if (isFunction(setupCallback)) {\n          setupCallback.call(self, self);\n        }\n      }\n      render() {\n        render(this);\n      }\n      focus(skipFocus) {\n        this.execCommand('mceFocus', false, skipFocus);\n      }\n      hasFocus() {\n        return hasFocus(this);\n      }\n      translate(text) {\n        return I18n.translate(text);\n      }\n      getParam(name, defaultVal, type) {\n        const options = this.options;\n        if (!options.isRegistered(name)) {\n          if (isNonNullable(type)) {\n            options.register(name, {\n              processor: type,\n              default: defaultVal\n            });\n          } else {\n            options.register(name, {\n              processor: always,\n              default: defaultVal\n            });\n          }\n        }\n        return !options.isSet(name) && !isUndefined(defaultVal) ? defaultVal : options.get(name);\n      }\n      hasPlugin(name, loaded) {\n        const hasPlugin = contains$2(getPlugins(this), name);\n        if (hasPlugin) {\n          return loaded ? PluginManager.get(name) !== undefined : true;\n        } else {\n          return false;\n        }\n      }\n      nodeChanged(args) {\n        this._nodeChangeDispatcher.nodeChanged(args);\n      }\n      addCommand(name, callback, scope) {\n        this.editorCommands.addCommand(name, callback, scope);\n      }\n      addQueryStateHandler(name, callback, scope) {\n        this.editorCommands.addQueryStateHandler(name, callback, scope);\n      }\n      addQueryValueHandler(name, callback, scope) {\n        this.editorCommands.addQueryValueHandler(name, callback, scope);\n      }\n      addShortcut(pattern, desc, cmdFunc, scope) {\n        this.shortcuts.add(pattern, desc, cmdFunc, scope);\n      }\n      execCommand(cmd, ui, value, args) {\n        return this.editorCommands.execCommand(cmd, ui, value, args);\n      }\n      queryCommandState(cmd) {\n        return this.editorCommands.queryCommandState(cmd);\n      }\n      queryCommandValue(cmd) {\n        return this.editorCommands.queryCommandValue(cmd);\n      }\n      queryCommandSupported(cmd) {\n        return this.editorCommands.queryCommandSupported(cmd);\n      }\n      show() {\n        const self = this;\n        if (self.hidden) {\n          self.hidden = false;\n          if (self.inline) {\n            self.getBody().contentEditable = 'true';\n          } else {\n            DOM$1.show(self.getContainer());\n            DOM$1.hide(self.id);\n          }\n          self.load();\n          self.dispatch('show');\n        }\n      }\n      hide() {\n        const self = this;\n        if (!self.hidden) {\n          self.save();\n          if (self.inline) {\n            self.getBody().contentEditable = 'false';\n            if (self === self.editorManager.focusedEditor) {\n              self.editorManager.focusedEditor = null;\n            }\n          } else {\n            DOM$1.hide(self.getContainer());\n            DOM$1.setStyle(self.id, 'display', self.orgDisplay);\n          }\n          self.hidden = true;\n          self.dispatch('hide');\n        }\n      }\n      isHidden() {\n        return this.hidden;\n      }\n      setProgressState(state, time) {\n        this.dispatch('ProgressState', {\n          state,\n          time\n        });\n      }\n      load(args = {}) {\n        const self = this;\n        const elm = self.getElement();\n        if (self.removed) {\n          return '';\n        }\n        if (elm) {\n          const loadArgs = {\n            ...args,\n            load: true\n          };\n          const value = isTextareaOrInput(elm) ? elm.value : elm.innerHTML;\n          const html = self.setContent(value, loadArgs);\n          if (!loadArgs.no_events) {\n            self.dispatch('LoadContent', {\n              ...loadArgs,\n              element: elm\n            });\n          }\n          return html;\n        } else {\n          return '';\n        }\n      }\n      save(args = {}) {\n        const self = this;\n        let elm = self.getElement();\n        if (!elm || !self.initialized || self.removed) {\n          return '';\n        }\n        const getArgs = {\n          ...args,\n          save: true,\n          element: elm\n        };\n        let html = self.getContent(getArgs);\n        const saveArgs = {\n          ...getArgs,\n          content: html\n        };\n        if (!saveArgs.no_events) {\n          self.dispatch('SaveContent', saveArgs);\n        }\n        if (saveArgs.format === 'raw') {\n          self.dispatch('RawSaveContent', saveArgs);\n        }\n        html = saveArgs.content;\n        if (!isTextareaOrInput(elm)) {\n          if (args.is_removing || !self.inline) {\n            elm.innerHTML = html;\n          }\n          const form = DOM$1.getParent(self.id, 'form');\n          if (form) {\n            each$1(form.elements, elm => {\n              if (elm.name === self.id) {\n                elm.value = html;\n                return false;\n              } else {\n                return true;\n              }\n            });\n          }\n        } else {\n          elm.value = html;\n        }\n        saveArgs.element = getArgs.element = elm = null;\n        if (saveArgs.set_dirty !== false) {\n          self.setDirty(false);\n        }\n        return html;\n      }\n      setContent(content, args) {\n        return setContent(this, content, args);\n      }\n      getContent(args) {\n        return getContent(this, args);\n      }\n      insertContent(content, args) {\n        if (args) {\n          content = extend({ content }, args);\n        }\n        this.execCommand('mceInsertContent', false, content);\n      }\n      resetContent(initialContent) {\n        if (initialContent === undefined) {\n          setContent(this, this.startContent, { format: 'raw' });\n        } else {\n          setContent(this, initialContent);\n        }\n        this.undoManager.reset();\n        this.setDirty(false);\n        this.nodeChanged();\n      }\n      isDirty() {\n        return !this.isNotDirty;\n      }\n      setDirty(state) {\n        const oldState = !this.isNotDirty;\n        this.isNotDirty = !state;\n        if (state && state !== oldState) {\n          this.dispatch('dirty');\n        }\n      }\n      getContainer() {\n        const self = this;\n        if (!self.container) {\n          self.container = self.editorContainer || DOM$1.get(self.id + '_parent');\n        }\n        return self.container;\n      }\n      getContentAreaContainer() {\n        return this.contentAreaContainer;\n      }\n      getElement() {\n        if (!this.targetElm) {\n          this.targetElm = DOM$1.get(this.id);\n        }\n        return this.targetElm;\n      }\n      getWin() {\n        const self = this;\n        if (!self.contentWindow) {\n          const elm = self.iframeElement;\n          if (elm) {\n            self.contentWindow = elm.contentWindow;\n          }\n        }\n        return self.contentWindow;\n      }\n      getDoc() {\n        const self = this;\n        if (!self.contentDocument) {\n          const win = self.getWin();\n          if (win) {\n            self.contentDocument = win.document;\n          }\n        }\n        return self.contentDocument;\n      }\n      getBody() {\n        var _a, _b;\n        const doc = this.getDoc();\n        return (_b = (_a = this.bodyElement) !== null && _a !== void 0 ? _a : doc === null || doc === void 0 ? void 0 : doc.body) !== null && _b !== void 0 ? _b : null;\n      }\n      convertURL(url, name, elm) {\n        const self = this, getOption = self.options.get;\n        const urlConverterCallback = getUrlConverterCallback(self);\n        if (isFunction(urlConverterCallback)) {\n          return urlConverterCallback.call(self, url, elm, true, name);\n        }\n        if (!getOption('convert_urls') || elm === 'link' || isObject(elm) && elm.nodeName === 'LINK' || url.indexOf('file:') === 0 || url.length === 0) {\n          return url;\n        }\n        const urlObject = new URI(url);\n        if (urlObject.protocol !== 'http' && urlObject.protocol !== 'https' && urlObject.protocol !== '') {\n          return url;\n        }\n        if (getOption('relative_urls')) {\n          return self.documentBaseURI.toRelative(url);\n        }\n        url = self.documentBaseURI.toAbsolute(url, getOption('remove_script_host'));\n        return url;\n      }\n      addVisual(elm) {\n        addVisual(this, elm);\n      }\n      setEditableRoot(state) {\n        setEditableRoot(this, state);\n      }\n      hasEditableRoot() {\n        return hasEditableRoot(this);\n      }\n      remove() {\n        remove$1(this);\n      }\n      destroy(automatic) {\n        destroy(this, automatic);\n      }\n      uploadImages() {\n        return this.editorUpload.uploadImages();\n      }\n      _scanForImages() {\n        return this.editorUpload.scanForImages();\n      }\n    }\n\n    const DOM = DOMUtils.DOM;\n    const each = Tools.each;\n    let boundGlobalEvents = false;\n    let beforeUnloadDelegate;\n    let editors = [];\n    const globalEventDelegate = e => {\n      const type = e.type;\n      each(EditorManager.get(), editor => {\n        switch (type) {\n        case 'scroll':\n          editor.dispatch('ScrollWindow', e);\n          break;\n        case 'resize':\n          editor.dispatch('ResizeWindow', e);\n          break;\n        }\n      });\n    };\n    const toggleGlobalEvents = state => {\n      if (state !== boundGlobalEvents) {\n        const DOM = DOMUtils.DOM;\n        if (state) {\n          DOM.bind(window, 'resize', globalEventDelegate);\n          DOM.bind(window, 'scroll', globalEventDelegate);\n        } else {\n          DOM.unbind(window, 'resize', globalEventDelegate);\n          DOM.unbind(window, 'scroll', globalEventDelegate);\n        }\n        boundGlobalEvents = state;\n      }\n    };\n    const removeEditorFromList = targetEditor => {\n      const oldEditors = editors;\n      editors = filter$5(editors, editor => {\n        return targetEditor !== editor;\n      });\n      if (EditorManager.activeEditor === targetEditor) {\n        EditorManager.activeEditor = editors.length > 0 ? editors[0] : null;\n      }\n      if (EditorManager.focusedEditor === targetEditor) {\n        EditorManager.focusedEditor = null;\n      }\n      return oldEditors.length !== editors.length;\n    };\n    const purgeDestroyedEditor = editor => {\n      if (editor && editor.initialized && !(editor.getContainer() || editor.getBody()).parentNode) {\n        removeEditorFromList(editor);\n        editor.unbindAllNativeEvents();\n        editor.destroy(true);\n        editor.removed = true;\n      }\n    };\n    const isQuirksMode = document.compatMode !== 'CSS1Compat';\n    const EditorManager = {\n      ...Observable,\n      baseURI: null,\n      baseURL: null,\n      defaultOptions: {},\n      documentBaseURL: null,\n      suffix: null,\n      majorVersion: '6',\n      minorVersion: '8.6',\n      releaseDate: 'TBD',\n      i18n: I18n,\n      activeEditor: null,\n      focusedEditor: null,\n      setup() {\n        const self = this;\n        let baseURL = '';\n        let suffix = '';\n        let documentBaseURL = URI.getDocumentBaseUrl(document.location);\n        if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(documentBaseURL)) {\n          documentBaseURL = documentBaseURL.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\n          if (!/[\\/\\\\]$/.test(documentBaseURL)) {\n            documentBaseURL += '/';\n          }\n        }\n        const preInit = window.tinymce || window.tinyMCEPreInit;\n        if (preInit) {\n          baseURL = preInit.base || preInit.baseURL;\n          suffix = preInit.suffix;\n        } else {\n          const scripts = document.getElementsByTagName('script');\n          for (let i = 0; i < scripts.length; i++) {\n            const src = scripts[i].src || '';\n            if (src === '') {\n              continue;\n            }\n            const srcScript = src.substring(src.lastIndexOf('/'));\n            if (/tinymce(\\.full|\\.jquery|)(\\.min|\\.dev|)\\.js/.test(src)) {\n              if (srcScript.indexOf('.min') !== -1) {\n                suffix = '.min';\n              }\n              baseURL = src.substring(0, src.lastIndexOf('/'));\n              break;\n            }\n          }\n          if (!baseURL && document.currentScript) {\n            const src = document.currentScript.src;\n            if (src.indexOf('.min') !== -1) {\n              suffix = '.min';\n            }\n            baseURL = src.substring(0, src.lastIndexOf('/'));\n          }\n        }\n        self.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);\n        self.documentBaseURL = documentBaseURL;\n        self.baseURI = new URI(self.baseURL);\n        self.suffix = suffix;\n        setup$w(self);\n      },\n      overrideDefaults(defaultOptions) {\n        const baseUrl = defaultOptions.base_url;\n        if (baseUrl) {\n          this._setBaseUrl(baseUrl);\n        }\n        const suffix = defaultOptions.suffix;\n        if (suffix) {\n          this.suffix = suffix;\n        }\n        this.defaultOptions = defaultOptions;\n        const pluginBaseUrls = defaultOptions.plugin_base_urls;\n        if (pluginBaseUrls !== undefined) {\n          each$d(pluginBaseUrls, (pluginBaseUrl, pluginName) => {\n            AddOnManager.PluginManager.urls[pluginName] = pluginBaseUrl;\n          });\n        }\n      },\n      init(options) {\n        const self = this;\n        let result;\n        const invalidInlineTargets = Tools.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option table tbody tfoot thead tr th td script noscript style textarea video audio iframe object menu', ' ');\n        const isInvalidInlineTarget = (options, elm) => options.inline && elm.tagName.toLowerCase() in invalidInlineTargets;\n        const createId = elm => {\n          let id = elm.id;\n          if (!id) {\n            id = get$a(elm, 'name').filter(name => !DOM.get(name)).getOrThunk(DOM.uniqueId);\n            elm.setAttribute('id', id);\n          }\n          return id;\n        };\n        const execCallback = name => {\n          const callback = options[name];\n          if (!callback) {\n            return;\n          }\n          return callback.apply(self, []);\n        };\n        const findTargets = options => {\n          if (Env.browser.isIE() || Env.browser.isEdge()) {\n            initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tiny.cloud/docs/tinymce/6/support/#supportedwebbrowsers');\n            return [];\n          } else if (isQuirksMode) {\n            initError('Failed to initialize the editor as the document is not in standards mode. ' + 'TinyMCE requires standards mode.');\n            return [];\n          } else if (isString(options.selector)) {\n            return DOM.select(options.selector);\n          } else if (isNonNullable(options.target)) {\n            return [options.target];\n          } else {\n            return [];\n          }\n        };\n        let provideResults = editors => {\n          result = editors;\n        };\n        const initEditors = () => {\n          let initCount = 0;\n          const editors = [];\n          let targets;\n          const createEditor = (id, options, targetElm) => {\n            const editor = new Editor(id, options, self);\n            editors.push(editor);\n            editor.on('init', () => {\n              if (++initCount === targets.length) {\n                provideResults(editors);\n              }\n            });\n            editor.targetElm = editor.targetElm || targetElm;\n            editor.render();\n          };\n          DOM.unbind(window, 'ready', initEditors);\n          execCallback('onpageload');\n          targets = unique$1(findTargets(options));\n          Tools.each(targets, elm => {\n            purgeDestroyedEditor(self.get(elm.id));\n          });\n          targets = Tools.grep(targets, elm => {\n            return !self.get(elm.id);\n          });\n          if (targets.length === 0) {\n            provideResults([]);\n          } else {\n            each(targets, elm => {\n              if (isInvalidInlineTarget(options, elm)) {\n                initError('Could not initialize inline editor on invalid inline target element', elm);\n              } else {\n                createEditor(createId(elm), options, elm);\n              }\n            });\n          }\n        };\n        DOM.bind(window, 'ready', initEditors);\n        return new Promise(resolve => {\n          if (result) {\n            resolve(result);\n          } else {\n            provideResults = editors => {\n              resolve(editors);\n            };\n          }\n        });\n      },\n      get(id) {\n        if (arguments.length === 0) {\n          return editors.slice(0);\n        } else if (isString(id)) {\n          return find$2(editors, editor => {\n            return editor.id === id;\n          }).getOr(null);\n        } else if (isNumber(id)) {\n          return editors[id] ? editors[id] : null;\n        } else {\n          return null;\n        }\n      },\n      add(editor) {\n        const self = this;\n        const existingEditor = self.get(editor.id);\n        if (existingEditor === editor) {\n          return editor;\n        }\n        if (existingEditor === null) {\n          editors.push(editor);\n        }\n        toggleGlobalEvents(true);\n        self.activeEditor = editor;\n        self.dispatch('AddEditor', { editor });\n        if (!beforeUnloadDelegate) {\n          beforeUnloadDelegate = e => {\n            const event = self.dispatch('BeforeUnload');\n            if (event.returnValue) {\n              e.preventDefault();\n              e.returnValue = event.returnValue;\n              return event.returnValue;\n            }\n          };\n          window.addEventListener('beforeunload', beforeUnloadDelegate);\n        }\n        return editor;\n      },\n      createEditor(id, options) {\n        return this.add(new Editor(id, options, this));\n      },\n      remove(selector) {\n        const self = this;\n        let editor;\n        if (!selector) {\n          for (let i = editors.length - 1; i >= 0; i--) {\n            self.remove(editors[i]);\n          }\n          return;\n        }\n        if (isString(selector)) {\n          each(DOM.select(selector), elm => {\n            editor = self.get(elm.id);\n            if (editor) {\n              self.remove(editor);\n            }\n          });\n          return;\n        }\n        editor = selector;\n        if (isNull(self.get(editor.id))) {\n          return null;\n        }\n        if (removeEditorFromList(editor)) {\n          self.dispatch('RemoveEditor', { editor });\n        }\n        if (editors.length === 0) {\n          window.removeEventListener('beforeunload', beforeUnloadDelegate);\n        }\n        editor.remove();\n        toggleGlobalEvents(editors.length > 0);\n        return editor;\n      },\n      execCommand(cmd, ui, value) {\n        var _a;\n        const self = this;\n        const editorId = isObject(value) ? (_a = value.id) !== null && _a !== void 0 ? _a : value.index : value;\n        switch (cmd) {\n        case 'mceAddEditor': {\n            if (!self.get(editorId)) {\n              const editorOptions = value.options;\n              new Editor(editorId, editorOptions, self).render();\n            }\n            return true;\n          }\n        case 'mceRemoveEditor': {\n            const editor = self.get(editorId);\n            if (editor) {\n              editor.remove();\n            }\n            return true;\n          }\n        case 'mceToggleEditor': {\n            const editor = self.get(editorId);\n            if (!editor) {\n              self.execCommand('mceAddEditor', false, value);\n              return true;\n            }\n            if (editor.isHidden()) {\n              editor.show();\n            } else {\n              editor.hide();\n            }\n            return true;\n          }\n        }\n        if (self.activeEditor) {\n          return self.activeEditor.execCommand(cmd, ui, value);\n        }\n        return false;\n      },\n      triggerSave: () => {\n        each(editors, editor => {\n          editor.save();\n        });\n      },\n      addI18n: (code, items) => {\n        I18n.add(code, items);\n      },\n      translate: text => {\n        return I18n.translate(text);\n      },\n      setActive(editor) {\n        const activeEditor = this.activeEditor;\n        if (this.activeEditor !== editor) {\n          if (activeEditor) {\n            activeEditor.dispatch('deactivate', { relatedTarget: editor });\n          }\n          editor.dispatch('activate', { relatedTarget: activeEditor });\n        }\n        this.activeEditor = editor;\n      },\n      _setBaseUrl(baseUrl) {\n        this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\\/+$/, ''));\n        this.baseURI = new URI(this.baseURL);\n      }\n    };\n    EditorManager.setup();\n\n    const setup = () => {\n      const dataValue = value$2();\n      const FakeClipboardItem = items => ({\n        items,\n        types: keys(items),\n        getType: type => get$a(items, type).getOrUndefined()\n      });\n      const write = data => {\n        dataValue.set(data);\n      };\n      const read = () => dataValue.get().getOrUndefined();\n      const clear = dataValue.clear;\n      return {\n        FakeClipboardItem,\n        write,\n        read,\n        clear\n      };\n    };\n    const FakeClipboard = setup();\n\n    const min = Math.min, max = Math.max, round = Math.round;\n    const relativePosition = (rect, targetRect, rel) => {\n      let x = targetRect.x;\n      let y = targetRect.y;\n      const w = rect.w;\n      const h = rect.h;\n      const targetW = targetRect.w;\n      const targetH = targetRect.h;\n      const relChars = (rel || '').split('');\n      if (relChars[0] === 'b') {\n        y += targetH;\n      }\n      if (relChars[1] === 'r') {\n        x += targetW;\n      }\n      if (relChars[0] === 'c') {\n        y += round(targetH / 2);\n      }\n      if (relChars[1] === 'c') {\n        x += round(targetW / 2);\n      }\n      if (relChars[3] === 'b') {\n        y -= h;\n      }\n      if (relChars[4] === 'r') {\n        x -= w;\n      }\n      if (relChars[3] === 'c') {\n        y -= round(h / 2);\n      }\n      if (relChars[4] === 'c') {\n        x -= round(w / 2);\n      }\n      return create$2(x, y, w, h);\n    };\n    const findBestRelativePosition = (rect, targetRect, constrainRect, rels) => {\n      for (let i = 0; i < rels.length; i++) {\n        const pos = relativePosition(rect, targetRect, rels[i]);\n        if (pos.x >= constrainRect.x && pos.x + pos.w <= constrainRect.w + constrainRect.x && pos.y >= constrainRect.y && pos.y + pos.h <= constrainRect.h + constrainRect.y) {\n          return rels[i];\n        }\n      }\n      return null;\n    };\n    const inflate = (rect, w, h) => {\n      return create$2(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2);\n    };\n    const intersect = (rect, cropRect) => {\n      const x1 = max(rect.x, cropRect.x);\n      const y1 = max(rect.y, cropRect.y);\n      const x2 = min(rect.x + rect.w, cropRect.x + cropRect.w);\n      const y2 = min(rect.y + rect.h, cropRect.y + cropRect.h);\n      if (x2 - x1 < 0 || y2 - y1 < 0) {\n        return null;\n      }\n      return create$2(x1, y1, x2 - x1, y2 - y1);\n    };\n    const clamp = (rect, clampRect, fixedSize) => {\n      let x1 = rect.x;\n      let y1 = rect.y;\n      let x2 = rect.x + rect.w;\n      let y2 = rect.y + rect.h;\n      const cx2 = clampRect.x + clampRect.w;\n      const cy2 = clampRect.y + clampRect.h;\n      const underflowX1 = max(0, clampRect.x - x1);\n      const underflowY1 = max(0, clampRect.y - y1);\n      const overflowX2 = max(0, x2 - cx2);\n      const overflowY2 = max(0, y2 - cy2);\n      x1 += underflowX1;\n      y1 += underflowY1;\n      if (fixedSize) {\n        x2 += underflowX1;\n        y2 += underflowY1;\n        x1 -= overflowX2;\n        y1 -= overflowY2;\n      }\n      x2 -= overflowX2;\n      y2 -= overflowY2;\n      return create$2(x1, y1, x2 - x1, y2 - y1);\n    };\n    const create$2 = (x, y, w, h) => {\n      return {\n        x,\n        y,\n        w,\n        h\n      };\n    };\n    const fromClientRect = clientRect => {\n      return create$2(clientRect.left, clientRect.top, clientRect.width, clientRect.height);\n    };\n    const Rect = {\n      inflate,\n      relativePosition,\n      findBestRelativePosition,\n      intersect,\n      clamp,\n      create: create$2,\n      fromClientRect\n    };\n\n    const awaiter = (resolveCb, rejectCb, timeout = 1000) => {\n      let done = false;\n      let timer = null;\n      const complete = completer => (...args) => {\n        if (!done) {\n          done = true;\n          if (timer !== null) {\n            clearTimeout(timer);\n            timer = null;\n          }\n          completer.apply(null, args);\n        }\n      };\n      const resolve = complete(resolveCb);\n      const reject = complete(rejectCb);\n      const start = (...args) => {\n        if (!done && timer === null) {\n          timer = setTimeout(() => reject.apply(null, args), timeout);\n        }\n      };\n      return {\n        start,\n        resolve,\n        reject\n      };\n    };\n    const create$1 = () => {\n      const tasks = {};\n      const resultFns = {};\n      const resources = {};\n      const load = (id, url) => {\n        const loadErrMsg = `Script at URL \"${ url }\" failed to load`;\n        const runErrMsg = `Script at URL \"${ url }\" did not call \\`tinymce.Resource.add('${ id }', data)\\` within 1 second`;\n        if (tasks[id] !== undefined) {\n          return tasks[id];\n        } else {\n          const task = new Promise((resolve, reject) => {\n            const waiter = awaiter(resolve, reject);\n            resultFns[id] = waiter.resolve;\n            ScriptLoader.ScriptLoader.loadScript(url).then(() => waiter.start(runErrMsg), () => waiter.reject(loadErrMsg));\n          });\n          tasks[id] = task;\n          return task;\n        }\n      };\n      const add = (id, data) => {\n        if (resultFns[id] !== undefined) {\n          resultFns[id](data);\n          delete resultFns[id];\n        }\n        tasks[id] = Promise.resolve(data);\n        resources[id] = data;\n      };\n      const has = id => {\n        return id in resources;\n      };\n      const unload = id => {\n        delete tasks[id];\n      };\n      const get = id => resources[id];\n      return {\n        load,\n        add,\n        has,\n        get,\n        unload\n      };\n    };\n    const Resource = create$1();\n\n    const create = () => (() => {\n      let data = {};\n      let keys = [];\n      const storage = {\n        getItem: key => {\n          const item = data[key];\n          return item ? item : null;\n        },\n        setItem: (key, value) => {\n          keys.push(key);\n          data[key] = String(value);\n        },\n        key: index => {\n          return keys[index];\n        },\n        removeItem: key => {\n          keys = keys.filter(k => k === key);\n          delete data[key];\n        },\n        clear: () => {\n          keys = [];\n          data = {};\n        },\n        length: 0\n      };\n      Object.defineProperty(storage, 'length', {\n        get: () => keys.length,\n        configurable: false,\n        enumerable: false\n      });\n      return storage;\n    })();\n\n    let localStorage;\n    try {\n      const test = '__storage_test__';\n      localStorage = window.localStorage;\n      localStorage.setItem(test, test);\n      localStorage.removeItem(test);\n    } catch (e) {\n      localStorage = create();\n    }\n    var LocalStorage = localStorage;\n\n    const publicApi = {\n      geom: { Rect },\n      util: {\n        Delay,\n        Tools,\n        VK,\n        URI,\n        EventDispatcher,\n        Observable,\n        I18n,\n        LocalStorage,\n        ImageUploader\n      },\n      dom: {\n        EventUtils,\n        TreeWalker: DomTreeWalker,\n        TextSeeker,\n        DOMUtils,\n        ScriptLoader,\n        RangeUtils,\n        Serializer: DomSerializer,\n        StyleSheetLoader,\n        ControlSelection,\n        BookmarkManager,\n        Selection: EditorSelection,\n        Event: EventUtils.Event\n      },\n      html: {\n        Styles,\n        Entities,\n        Node: AstNode,\n        Schema,\n        DomParser,\n        Writer,\n        Serializer: HtmlSerializer\n      },\n      Env,\n      AddOnManager,\n      Annotator,\n      Formatter,\n      UndoManager,\n      EditorCommands,\n      WindowManager,\n      NotificationManager,\n      EditorObservable,\n      Shortcuts,\n      Editor,\n      FocusManager,\n      EditorManager,\n      DOM: DOMUtils.DOM,\n      ScriptLoader: ScriptLoader.ScriptLoader,\n      PluginManager,\n      ThemeManager,\n      ModelManager,\n      IconManager,\n      Resource,\n      FakeClipboard,\n      trim: Tools.trim,\n      isArray: Tools.isArray,\n      is: Tools.is,\n      toArray: Tools.toArray,\n      makeMap: Tools.makeMap,\n      each: Tools.each,\n      map: Tools.map,\n      grep: Tools.grep,\n      inArray: Tools.inArray,\n      extend: Tools.extend,\n      walk: Tools.walk,\n      resolve: Tools.resolve,\n      explode: Tools.explode,\n      _addCacheSuffix: Tools._addCacheSuffix\n    };\n    const tinymce$1 = Tools.extend(EditorManager, publicApi);\n\n    const exportToModuleLoaders = tinymce => {\n      if (typeof module === 'object') {\n        try {\n          module.exports = tinymce;\n        } catch (_) {\n        }\n      }\n    };\n    const exportToWindowGlobal = tinymce => {\n      window.tinymce = tinymce;\n      window.tinyMCE = tinymce;\n    };\n    exportToWindowGlobal(tinymce$1);\n    exportToModuleLoaders(tinymce$1);\n\n})();\n", "/**\n * TinyMCE version 6.8.6 (TBD)\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 isUndefined = eq$2(undefined);\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n\n    const noop = () => {\n    };\n    const 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      each$1(obj, (x, i) => {\n        (pred(x, i) ? onTrue : onFalse)(x, i);\n      });\n    };\n    const filter$1 = (obj, pred) => {\n      const t = {};\n      internalFilter(obj, pred, objAcc(t), noop);\n      return t;\n    };\n    const mapToArray = (obj, f) => {\n      const r = [];\n      each$1(obj, (value, name) => {\n        r.push(f(value, name));\n      });\n      return r;\n    };\n    const values = obj => {\n      return mapToArray(obj, identity);\n    };\n    const 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    const Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const path = (parts, scope) => {\n      let o = scope !== undefined && scope !== null ? scope : Global;\n      for (let i = 0; i < parts.length && o !== undefined && o !== null; ++i) {\n        o = o[parts[i]];\n      }\n      return o;\n    };\n    const resolve$2 = (p, scope) => {\n      const parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    const unsafe = (name, scope) => {\n      return resolve$2(name, scope);\n    };\n    const getOrDie = (name, scope) => {\n      const actual = unsafe(name, scope);\n      if (actual === undefined || actual === null) {\n        throw new Error(name + ' not available on this browser');\n      }\n      return actual;\n    };\n\n    const getPrototypeOf = Object.getPrototypeOf;\n    const sandHTMLElement = scope => {\n      return getOrDie('HTMLElement', scope);\n    };\n    const isPrototypeOf = x => {\n      const scope = resolve$2('ownerDocument.defaultView', x);\n      return isObject(x) && (sandHTMLElement(scope).prototype.isPrototypeOf(x) || /^HTML\\w*Element$/.test(getPrototypeOf(x).constructor.name));\n    };\n\n    const COMMENT = 8;\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const 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 isHTMLElement = element => isElement(element) && isPrototypeOf(element.dom);\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, start = 0, end) => {\n      const idx = str.indexOf(substr, start);\n      if (idx !== -1) {\n        return isUndefined(end) ? true : idx + substr.length <= end;\n      } else {\n        return false;\n      }\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 isContentEditableFalse = elem => isHTMLElement(elem) && get$b(elem, 'contenteditable') === 'false';\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)) || isContentEditableFalse(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          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 option = name => editor => editor.options.get(name);\n    const defaultWidth = '100%';\n    const getPixelForcedWidth = editor => {\n      var _a;\n      const dom = editor.dom;\n      const parentBlock = (_a = dom.getParent(editor.selection.getStart(), dom.isBlock)) !== null && _a !== void 0 ? _a : editor.getBody();\n      return getInner(SugarElement.fromDom(parentBlock)) + 'px';\n    };\n    const determineDefaultTableStyles = (editor, defaultStyles) => {\n      if (isTableResponsiveForced(editor) || !shouldStyleWithCss(editor)) {\n        return defaultStyles;\n      } else if (isTablePixelsForced(editor)) {\n        return {\n          ...defaultStyles,\n          width: getPixelForcedWidth(editor)\n        };\n      } else {\n        return {\n          ...defaultStyles,\n          width: defaultWidth\n        };\n      }\n    };\n    const determineDefaultTableAttributes = (editor, defaultAttributes) => {\n      if (isTableResponsiveForced(editor) || shouldStyleWithCss(editor)) {\n        return defaultAttributes;\n      } else if (isTablePixelsForced(editor)) {\n        return {\n          ...defaultAttributes,\n          width: getPixelForcedWidth(editor)\n        };\n      } else {\n        return {\n          ...defaultAttributes,\n          width: defaultWidth\n        };\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: { 'border-collapse': 'collapse' }\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      registerOption('table_style_by_css', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('table_merge_content_on_paste', {\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 shouldStyleWithCss = option('table_style_by_css');\n    const shouldMergeContentOnPaste = option('table_merge_content_on_paste');\n    const getTableDefaultAttributes = editor => {\n      const options = editor.options;\n      const defaultAttributes = options.get('table_default_attributes');\n      return options.isSet('table_default_attributes') ? defaultAttributes : determineDefaultTableAttributes(editor, defaultAttributes);\n    };\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 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 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    const isInEditableContext$1 = cell => closest$2(cell, isTag('table')).exists(isEditable$1);\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 (shouldMergeContentOnPaste(editor) && 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 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          let offset = 0;\n          const substitute = substitution();\n          while (row.cells.length > index + offset && comparator(prevCell.element, row.cells[index + offset].element)) {\n            mutateCell(row, index + offset, elementnew(substitute, true, row.cells[index + offset].isLocked));\n            offset++;\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 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) || getGridSize(table).rows > 1;\n      const lastColumnGuard = table => !isTableBody(editor) || 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 isColInRange = (minColRange, maxColRange) => cell => {\n      const endCol = cell.column + cell.colspan - 1;\n      const startCol = cell.column;\n      return endCol >= minColRange && startCol < maxColRange;\n    };\n    const generateColGroup = (house, minColRange, maxColRange) => {\n      if (Warehouse.hasColumns(house)) {\n        const colsToCopy = filter$2(Warehouse.justColumns(house), isColInRange(minColRange, 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, isColInRange(minColRange, 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      }).getOrNull();\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)).filter(isInEditableContext$1);\n    const getSelectionStartCell = editor => getSelectionCell(getSelectionStart(editor), getIsRoot(editor)).filter(isInEditableContext$1);\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 = filter$2(getCellsFromSelection(editor), isInEditableContext$1);\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 isInEditableContext = cell => parentElement(cell).exists(isEditable$1);\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).filter(isInEditableContext).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 isEditableNode = node => closest$2(node, isHTMLElement).exists(isEditable$1);\n    const isEditableSelection = (start, finish) => isEditableNode(start) || isEditableNode(finish);\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 (isNavigation(keycode) && shiftKey && !isEditableSelection(start, finish)) {\n            return Optional.none;\n          } else 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 (isNavigation(keycode) && shiftKey && !isEditableSelection(start, finish)) {\n            return Optional.none;\n          } else 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) && isEditableSelection(start, finish)) {\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');\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 isActive = () => active;\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        isActive,\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          if (resizing.isActive()) {\n            hoverTable = Optional.some(table);\n            refresh(wire, table);\n          }\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.nodeName === '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('dragstart dragend', e => {\n        tableResize.on(resize => {\n          if (e.type === 'dragstart') {\n            resize.hideBars();\n            resize.off();\n          } else {\n            resize.on();\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", "tinymce.IconManager.add('default', {\n  icons: {\n    'accessibility-check': '<svg width=\"24\" height=\"24\"><path d=\"M12 2a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2c0-1.1.9-2 2-2Zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5c0-.6-.4-1-1-1a1 1 0 0 0-1 1v5c0 .6-.4 1-1 1a1 1 0 0 1-1-1V9H4a1 1 0 1 1 0-2h16c.6 0 1 .4 1 1s-.4 1-1 1Z\" fill-rule=\"nonzero\"/></svg>',\n    'accordion-toggle': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 15c0-.6.4-1 1-1h6c.6 0 1 .4 1 1s-.4 1-1 1h-6a1 1 0 0 1-1-1Z\"/><path opacity=\".2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 15c0-.6.4-1 1-1h6c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1-1-1Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 19c0-.6.4-1 1-1h6c.6 0 1 .4 1 1s-.4 1-1 1h-6a1 1 0 0 1-1-1Z\"/><path opacity=\".2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 19c0-.6.4-1 1-1h6c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1-1-1Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.3 7.3a1 1 0 0 1 1.4 0L16 9.6l2.3-2.3a1 1 0 1 1 1.4 1.4L16 12.4l-3.7-3.7a1 1 0 0 1 0-1.4ZM4.3 11.7a1 1 0 0 1 0-1.4L6.6 8 4.3 5.7a1 1 0 0 1 1.4-1.4L9.4 8l-3.7 3.7a1 1 0 0 1-1.4 0Z\"/></svg>',\n    'accordion': '<svg width=\"24\" height=\"24\"><rect x=\"12\" y=\"7\" width=\"10\" height=\"2\" rx=\"1\"/><rect x=\"12\" y=\"11\" width=\"10\" height=\"2\" rx=\"1\"/><rect x=\"12\" y=\"15\" width=\"6\" height=\"2\" rx=\"1\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.3 7.3a1 1 0 0 1 1.4 0L6 9.6l2.3-2.3a1 1 0 0 1 1.4 1.4L6 12.4 2.3 8.7a1 1 0 0 1 0-1.4Z\"/></svg>',\n    'action-next': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M5.7 7.3a1 1 0 0 0-1.4 1.4l7.7 7.7 7.7-7.7a1 1 0 1 0-1.4-1.4L12 13.6 5.7 7.3Z\"/></svg>',\n    'action-prev': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M18.3 15.7a1 1 0 0 0 1.4-1.4L12 6.6l-7.7 7.7a1 1 0 0 0 1.4 1.4L12 9.4l6.3 6.3Z\"/></svg>',\n    'addtag': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15 5a2 2 0 0 1 1.6.8L21 12l-4.4 6.2a2 2 0 0 1-1.6.8h-3v-2h3l3.5-5L15 7H5v3H3V7c0-1.1.9-2 2-2h10Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6 12a1 1 0 0 0-1 1v2H3a1 1 0 1 0 0 2h2v2a1 1 0 1 0 2 0v-2h2a1 1 0 1 0 0-2H7v-2c0-.6-.4-1-1-1Z\"/></svg>',\n    'ai-prompt': '<svg width=\"24\" height=\"24\"><g clip-path=\"url(#a)\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15 6.7a1 1 0 0 0-1.4 0l-9.9 10a1 1 0 0 0 0 1.3l2.1 2.1c.4.4 1 .4 1.4 0l10-9.9c.3-.3.3-1 0-1.4l-2.2-2Zm1.4 2.8-2-2-3 2.7 2.2 2.2 2.8-2.9Z\"/><path d=\"m18.5 7.3-.7-1.5-1.5-.8 1.5-.7.7-1.5.7 1.5 1.5.7-1.5.8-.7 1.5ZM18.5 16.5l-.7-1.6-1.5-.7 1.5-.7.7-1.6.7 1.6 1.5.7-1.5.7-.7 1.6ZM9.7 7.3 9 5.8 7.5 5 9 4.3l.7-1.5.7 1.5L12 5l-1.5.8-.7 1.5Z\"/></g><defs><clipPath id=\"a\"><path d=\"M0 0h24v24H0z\"/></clipPath></defs></svg>',\n    'ai': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3H5Zm6.8 11.5.5 1.2a68.3 68.3 0 0 0 .7 1.1l.4.1c.3 0 .5 0 .7-.3.2-.1.3-.3.3-.6l-.3-1-2.6-6.2a20.4 20.4 0 0 0-.5-1.3l-.5-.4-.7-.2c-.2 0-.5 0-.6.2-.2 0-.4.2-.5.4l-.3.6-.3.7L5.7 15l-.2.6-.1.4c0 .3 0 .5.3.7l.6.2c.3 0 .5 0 .7-.2l.4-1 .5-1.2h3.9ZM9.8 9l1.5 4h-3l1.5-4Zm5.6-.9v7.6c0 .4 0 .7.2 1l.7.2c.3 0 .6 0 .8-.3l.2-.9V8.1c0-.4 0-.7-.2-.9a1 1 0 0 0-.8-.3c-.2 0-.5.1-.7.3l-.2 1Z\"/></svg>',\n    'align-center': '<svg width=\"24\" height=\"24\"><path d=\"M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2Zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 1 1 0-2Zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2Zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'align-justify': '<svg width=\"24\" height=\"24\"><path d=\"M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2Zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2Zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2Zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'align-left': '<svg width=\"24\" height=\"24\"><path d=\"M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2Zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2Zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2Zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'align-none': '<svg width=\"24\" height=\"24\"><path d=\"M14.2 5 13 7H5a1 1 0 1 1 0-2h9.2Zm4 0h.8a1 1 0 0 1 0 2h-2l1.2-2Zm-6.4 4-1.2 2H5a1 1 0 0 1 0-2h6.8Zm4 0H19a1 1 0 0 1 0 2h-4.4l1.2-2Zm-6.4 4-1.2 2H5a1 1 0 0 1 0-2h4.4Zm4 0H19a1 1 0 0 1 0 2h-6.8l1.2-2ZM7 17l-1.2 2H5a1 1 0 0 1 0-2h2Zm4 0h8a1 1 0 0 1 0 2H9.8l1.2-2Zm5.2-13.5 1.3.7-9.7 16.3-1.3-.7 9.7-16.3Z\" fill-rule=\"evenodd\"/></svg>',\n    'align-right': '<svg width=\"24\" height=\"24\"><path d=\"M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2Zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'arrow-left': '<svg width=\"24\" height=\"24\"><path d=\"m5.6 13 12 6a1 1 0 0 0 1.4-1V6a1 1 0 0 0-1.4-.9l-12 6a1 1 0 0 0 0 1.8Z\" fill-rule=\"evenodd\"/></svg>',\n    'arrow-right': '<svg width=\"24\" height=\"24\"><path d=\"m18.5 13-12 6A1 1 0 0 1 5 18V6a1 1 0 0 1 1.4-.9l12 6a1 1 0 0 1 0 1.8Z\" fill-rule=\"evenodd\"/></svg>',\n    'bold': '<svg width=\"24\" height=\"24\"><path d=\"M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 0 1-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8Zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4Zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4Z\" fill-rule=\"evenodd\"/></svg>',\n    'bookmark': '<svg width=\"24\" height=\"24\"><path d=\"M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 0 0-1 1Z\" fill-rule=\"nonzero\"/></svg>',\n    'border-style': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><rect width=\"18\" height=\"2\" x=\"3\" y=\"6\" rx=\"1\"/><rect width=\"2.8\" height=\"2\" x=\"3\" y=\"16\" rx=\"1\"/><rect width=\"2.8\" height=\"2\" x=\"6.8\" y=\"16\" rx=\"1\"/><rect width=\"2.8\" height=\"2\" x=\"10.6\" y=\"16\" rx=\"1\"/><rect width=\"2.8\" height=\"2\" x=\"14.4\" y=\"16\" rx=\"1\"/><rect width=\"2.8\" height=\"2\" x=\"18.2\" y=\"16\" rx=\"1\"/><rect width=\"8\" height=\"2\" x=\"3\" y=\"11\" rx=\"1\"/><rect width=\"8\" height=\"2\" x=\"13\" y=\"11\" rx=\"1\"/></g></svg>',\n    'border-width': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><rect width=\"18\" height=\"5\" x=\"3\" y=\"5\" rx=\"1\"/><rect width=\"18\" height=\"3.5\" x=\"3\" y=\"11.5\" rx=\"1\"/><rect width=\"18\" height=\"2\" x=\"3\" y=\"17\" rx=\"1\"/></g></svg>',\n    'brightness': '<svg width=\"24\" height=\"24\"><path d=\"M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3Zm0-10a1 1 0 0 1-.7-.3A1 1 0 0 1 11 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3Zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-1a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1ZM7 12c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H5a1 1 0 0 1-.7-.3A1 1 0 0 1 4 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7Zm10 3.5.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 0 1-.8.3 1 1 0 0 1-.6-.3l-.8-.7a1 1 0 0 1-.3-.8c0-.2.1-.5.3-.7a1 1 0 0 1 1.4 0Zm-10-7-.7-.8a1 1 0 0 1-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.8-.3Zm10 0a1 1 0 0 1-.8.3 1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7Zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 0 1 0 1.4l-.8.8a1 1 0 0 1-.6.3 1 1 0 0 1-.8-.3 1 1 0 0 1-.3-.8c0-.2.1-.5.3-.6l.7-.8ZM12 8a4 4 0 0 1 3.7 2.4 4 4 0 0 1 0 3.2A4 4 0 0 1 12 16a4 4 0 0 1-3.7-2.4 4 4 0 0 1 0-3.2A4 4 0 0 1 12 8Zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7Z\" fill-rule=\"evenodd\"/></svg>',\n    'browse': '<svg width=\"24\" height=\"24\"><path d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 9.4-2.3 2.3a1 1 0 1 1-1.4-1.4l4-4a1 1 0 0 1 1.4 0l4 4a1 1 0 0 1-1.4 1.4L13 13.4V20a1 1 0 0 1-2 0v-6.6Z\" fill-rule=\"nonzero\"/></svg>',\n    'cancel': '<svg width=\"24\" height=\"24\"><path d=\"M12 4.6a7.4 7.4 0 1 1 0 14.8 7.4 7.4 0 0 1 0-14.8ZM12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18Zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7Z\" fill-rule=\"nonzero\"/></svg>',\n    'cell-background-color': '<svg width=\"24\" height=\"24\"><path d=\"m15.7 2 1.6 1.6-2.7 2.6 5.9 5.8c.7.7.7 1.7 0 2.4l-6.3 6.1a1.7 1.7 0 0 1-2.4 0l-6.3-6.1c-.7-.7-.7-1.7 0-2.4L15.7 2ZM18 12l-4.5-4L9 12h9ZM4 16s2 2.4 2 3.8C6 21 5.1 22 4 22s-2-1-2-2.2C2 18.4 4 16 4 16Z\"/></svg>',\n    'cell-border-color': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path fill-rule=\"nonzero\" d=\"M5 13v5h2v2H5a2 2 0 0 1-2-2v-5h2zm8-7V4h6a2 2 0 0 1 2 2h-8z\" opacity=\".2\"/><path fill-rule=\"nonzero\" d=\"M13 4v2H5v7H3V6c0-1.1.9-2 2-2h8zm-2.6 14.1.1-.1.1.1.2.3.2.2.2.2c.4.6.8 1.2.8 1.7 0 .8-.7 1.5-1.5 1.5S9 21.3 9 20.5c0-.5.4-1.1.8-1.7l.2-.2.2-.2.2-.3z\"/><path d=\"m13 11-2 2H5v-2h6V6h2z\"/><path fill-rule=\"nonzero\" d=\"m18.4 8 1 1-1.8 1.9 4 4c.5.4.5 1.1 0 1.6l-4.3 4.2a1.2 1.2 0 0 1-1.6 0l-4.4-4.2c-.4-.5-.4-1.2 0-1.7l7-6.8Zm1.6 7-3-3-3 3h6Z\"/></g></svg>',\n    'change-case': '<svg width=\"24\" height=\"24\"><path d=\"M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 0 1-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 0 1-1 .7h-.2a.7.7 0 0 1-.7-1l4-12a1 1 0 0 1 2 0l4 12a.7.7 0 0 1-.8 1h-.2a1 1 0 0 1-1-.7l-.8-2.6zm-.3-1.5-2-6.5-1.9 6.5h3.9z\" fill-rule=\"evenodd\"/></svg>',\n    'character-count': '<svg width=\"24\" height=\"24\"><path d=\"M4 11.5h16v1H4v-1Zm4.8-6.8V10H7.7V5.8h-1v-1h2ZM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1Zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1ZM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2V18.7l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 0 1-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 0 0-.5-.1 1 1 0 0 0-.4 0l-.3.4h-1Zm2.3.8h-.2l-.2.1-.4.1a1 1 0 0 0-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6Zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4Zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 0 0 1.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 0 0-.6-.3l-.6.3-.2.8Zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 0 0-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 0 1-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 0 1-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1Z\" fill-rule=\"evenodd\"/></svg>',\n    'checklist-rtl': '<svg width=\"24\" height=\"24\"><path d=\"M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z\" fill-rule=\"evenodd\"/></svg>',\n    'checklist': '<svg width=\"24\" height=\"24\"><path d=\"M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0-6h8a1 1 0 0 1 0 2h-8a1 1 0 0 1 0-2ZM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8Zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8Zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8Z\" fill-rule=\"evenodd\"/></svg>',\n    'checkmark': '<svg width=\"24\" height=\"24\"><path d=\"M18.2 5.4a1 1 0 0 1 1.6 1.2l-8 12a1 1 0 0 1-1.5.1l-5-5a1 1 0 1 1 1.4-1.4l4.1 4.1 7.4-11Z\" fill-rule=\"nonzero\"/></svg>',\n    'chevron-down': '<svg width=\"10\" height=\"10\"><path d=\"M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 0 1 0-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8Z\" fill-rule=\"nonzero\"/></svg>',\n    'chevron-left': '<svg width=\"10\" height=\"10\"><path d=\"M7.8 1.3 4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 0 1 0-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1Z\" fill-rule=\"nonzero\"/></svg>',\n    'chevron-right': '<svg width=\"10\" height=\"10\"><path d=\"M2.2 1.3a.8.8 0 0 1 0-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 0 1 0-1.1L6 5 2.2 1.3Z\" fill-rule=\"nonzero\"/></svg>',\n    'chevron-up': '<svg width=\"10\" height=\"10\"><path d=\"M8.7 7.8 5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 0 1 0-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0Z\" fill-rule=\"nonzero\"/></svg>',\n    'close': '<svg width=\"24\" height=\"24\"><path d=\"M17.3 8.2 13.4 12l3.9 3.8a1 1 0 0 1-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 0 1-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 0 1 1.5-1.5l3.8 3.9 3.8-3.9a1 1 0 0 1 1.5 1.5Z\" fill-rule=\"evenodd\"/></svg>',\n    'code-sample': '<svg width=\"24\" height=\"26\"><path d=\"M7.1 11a2.8 2.8 0 0 1-.8 2 2.8 2.8 0 0 1 .8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 0 1-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11Zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 0 1-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 0 1-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 0 1 .8-2 2.8 2.8 0 0 1-.8-2Zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2ZM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 0 1-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 0 1-.5-.5V17a3 3 0 0 0 1-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5Z\" fill-rule=\"evenodd\"/></svg>',\n    'color-levels': '<svg width=\"24\" height=\"24\"><path d=\"M17.5 11.4A9 9 0 0 1 18 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 0 1-3.7 3 5.7 5.7 0 0 1-3.2 0A5.9 5.9 0 0 1 7.6 18a6.2 6.2 0 0 1-1.4-2.6 6.7 6.7 0 0 1 0-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 0 1 2.3-4A20 20 0 0 1 12 4a26.4 26.4 0 0 1 3.2 3.4 18.2 18.2 0 0 1 2.3 4Zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 0 0-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 0 1-1.3 3 5.3 5.3 0 0 1-2.3 1.5 4.9 4.9 0 0 1-2 .1 4.3 4.3 0 0 0 2.4.8 4 4 0 0 0 2-.6 4 4 0 0 0 1.5-1.5Z\" fill-rule=\"evenodd\"/></svg>',\n    'color-picker': '<svg width=\"24\" height=\"24\"><path d=\"M12 3a9 9 0 0 0 0 18 1.5 1.5 0 0 0 1.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 0 0 5-5c0-4.4-4-8-9-8Zm-5.5 9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Zm3-4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Zm3 4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Z\" fill-rule=\"nonzero\"/></svg>',\n    'color-swatch-remove-color': '<svg width=\"24\" height=\"24\"><path stroke=\"#000\" stroke-width=\"2\" d=\"M21 3 3 21\" fill-rule=\"evenodd\"/></svg>',\n    'color-swatch': '<svg width=\"24\" height=\"24\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"1\" fill-rule=\"evenodd\"/></svg>',\n    'comment-add': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"m9 19 3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 0 0-1 1v10c0 .6.4 1 1 1h4v2Zm-2 4v-4H5a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-6.4L7 23Z\"/><path d=\"M13 10h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 0v-2H9a1 1 0 0 1 0-2h2V8a1 1 0 0 1 2 0v2Z\"/></g></svg>',\n    'comment': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"m9 19 3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 0 0-1 1v10c0 .6.4 1 1 1h4v2Zm-2 4v-4H5a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-6.4L7 23Z\"/></svg>',\n    'contrast': '<svg width=\"24\" height=\"24\"><path d=\"M12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4Zm-6 8a6 6 0 0 0 6 6V6a6 6 0 0 0-6 6Z\" fill-rule=\"evenodd\"/></svg>',\n    'copy': '<svg width=\"24\" height=\"24\"><path d=\"M16 3H6a2 2 0 0 0-2 2v11h2V5h10V3Zm1 4a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V9c0-1.2.9-2 2-2h7Zm0 12V9h-7v10h7Z\" fill-rule=\"nonzero\"/></svg>',\n    'crop': '<svg width=\"24\" height=\"24\"><path d=\"M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-2H7V9H5a1 1 0 1 1 0-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3ZM9 9v5l5-5H9Zm1 6h5v-5l-5 5Z\" fill-rule=\"evenodd\"/></svg>',\n    'cut-column': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M7.2 4.5c.9 0 1.6.4 2.2 1A3.7 3.7 0 0 1 10.5 8v.5l1 1 4-4 1-.5a3.3 3.3 0 0 1 2 0c.4 0 .7.3 1 .5L17 8h4v13h-6V10l-1.5 1.5.5.5v4l-2.5-2.5-1 1v.5c0 .4 0 .8-.3 1.2-.2.5-.4.9-.8 1.2-.6.7-1.3 1-2.2 1-.8.2-1.5 0-2-.6l-.5-.8-.2-1c0-.4 0-.8.3-1.2A3.9 3.9 0 0 1 7 12.7c.5-.2 1-.3 1.5-.2l1-1-1-1c-.5 0-1 0-1.5-.2-.5-.1-1-.4-1.4-.9-.4-.3-.6-.7-.8-1.2L4.5 7c0-.4 0-.7.2-1 0-.3.3-.6.5-.8.5-.5 1.2-.8 2-.7Zm12.3 5h-3v10h3v-10ZM8 13.8h-.3l-.4.2a2.8 2.8 0 0 0-.7.4v.1a2.8 2.8 0 0 0-.6.8l-.1.4v.7l.2.5.5.2h.7a2.6 2.6 0 0 0 .8-.3 2.4 2.4 0 0 0 .7-.7 2.5 2.5 0 0 0 .3-.8 1.5 1.5 0 0 0 0-.8 1 1 0 0 0-.2-.4 1 1 0 0 0-.5-.2H8Zm3.5-3.7c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4ZM7 5.8h-.4a1 1 0 0 0-.5.3 1 1 0 0 0-.2.5v.7a2.5 2.5 0 0 0 .3.8l.2.3h.1l.4.4.4.2.4.1h.7L9 9l.2-.4a1.6 1.6 0 0 0 0-.8 2.6 2.6 0 0 0-.3-.8A2.5 2.5 0 0 0 7.7 6l-.4-.1H7Z\"/></svg>',\n    'cut-row': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M22 3v5H9l3 3 2-2h4l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8.7.6 1 1.3 1 2.2.2.8 0 1.5-.6 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 0 1-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 0 1 8.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 0 1 0-2c0-.4.3-.7.5-1l2 2V3h14ZM8.5 15.3h-.3a2.6 2.6 0 0 0-.8.4 2.5 2.5 0 0 0-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 0 0 .8-.3L9 18V18l.4-.4.2-.4.1-.4v-.7a1 1 0 0 0-.2-.5 1 1 0 0 0-.4-.2h-.5Zm7 0H15a1 1 0 0 0-.4.3 1 1 0 0 0-.2.5 1.5 1.5 0 0 0 0 .7v.4a2.8 2.8 0 0 0 .5.7h.1a2.8 2.8 0 0 0 .8.6l.4.1h.7l.5-.2.2-.5v-.7a2.6 2.6 0 0 0-.3-.8 2.4 2.4 0 0 0-.7-.7 2.5 2.5 0 0 0-.8-.3h-.3ZM12 11.6c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4Zm8.5-7.1h-11v2h11v-2Z\"/></svg>',\n    'cut': '<svg width=\"24\" height=\"24\"><path d=\"M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 0 1-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 0 1 8.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 0 1 0-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 0 1 0 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8Zm-8.5 2.2.1-.4v-.7a1 1 0 0 0-.2-.5 1 1 0 0 0-.4-.2 1.6 1.6 0 0 0-.8 0 2.6 2.6 0 0 0-.8.3 2.5 2.5 0 0 0-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 0 0 .8-.3 2.8 2.8 0 0 0 1-1Zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4Zm5.4 4 .2-.5v-.7a2.6 2.6 0 0 0-.3-.8 2.4 2.4 0 0 0-.7-.7 2.5 2.5 0 0 0-.8-.3 1.5 1.5 0 0 0-.8 0 1 1 0 0 0-.4.2 1 1 0 0 0-.2.5 1.5 1.5 0 0 0 0 .7v.4l.3.4.3.4a2.8 2.8 0 0 0 .8.5l.4.1h.7l.5-.2Z\" fill-rule=\"evenodd\"/></svg>',\n    'document-properties': '<svg width=\"24\" height=\"24\"><path d=\"M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3ZM17 19H7V5h6v4h4v10Z\" fill-rule=\"nonzero\"/></svg>',\n    'drag': '<svg width=\"24\" height=\"24\"><path d=\"M13 5h2v2h-2V5Zm0 4h2v2h-2V9ZM9 9h2v2H9V9Zm4 4h2v2h-2v-2Zm-4 0h2v2H9v-2Zm0 4h2v2H9v-2Zm4 0h2v2h-2v-2ZM9 5h2v2H9V5Z\" fill-rule=\"evenodd\"/></svg>',\n    'duplicate-column': '<svg width=\"24\" height=\"24\"><path d=\"M17 6v16h-7V6h7Zm-2 2h-3v12h3V8Zm-2-6v2H8v15H6V2h7Z\"/></svg>',\n    'duplicate-row': '<svg width=\"24\" height=\"24\"><path d=\"M22 11v7H6v-7h16Zm-2 2H8v3h12v-3Zm-1-6v2H4v5H2V7h17Z\"/></svg>',\n    'duplicate': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10Zm3 8h-2V9h-7v10h9a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V9c0-1.2.9-2 2-2h7a2 2 0 0 1 2 2v2Z\"/><path d=\"M17 14h1a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0v-1h-1a1 1 0 0 1 0-2h1v-1a1 1 0 0 1 2 0v1Z\"/></g></svg>',\n    'edit-block': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"m19.8 8.8-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5Zm-2-.2 1-.9v-.3l-2.2-2.2a.3.3 0 0 0-.3 0l-1 1L18 8.5Zm-1 1-2.5-2.4-6 6 2.5 2.5 6-6Zm-7 7.1-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5Z\"/></svg>',\n    'edit-image': '<svg width=\"24\" height=\"24\"><path d=\"M18 16h2V7a2 2 0 0 0-2-2H7v2h11v9ZM6 17h15a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0v-1H6a2 2 0 0 1-2-2V7H3a1 1 0 1 1 0-2h1V4a1 1 0 1 1 2 0v13Zm3-5.3 1.3 2 3-4.7 3.7 6H7l2-3.3Z\" fill-rule=\"nonzero\"/></svg>',\n    'embed-page': '<svg width=\"24\" height=\"24\"><path d=\"M19 6V5H5v14h2A13 13 0 0 1 19 6Zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4Zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6Zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3Zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 0 0 8 19h3ZM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1Zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 0 0-4 4.5h2.2Zm-3.4 0a12 12 0 0 1 2.8-4 12 12 0 0 0-5 4h2.2Z\" fill-rule=\"nonzero\"/></svg>',\n    'embed': '<svg width=\"24\" height=\"24\"><path d=\"M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1Zm1 2v14h14V5H5Zm4.8 2.6 5.6 4a.5.5 0 0 1 0 .8l-5.6 4A.5.5 0 0 1 9 16V8a.5.5 0 0 1 .8-.4Z\" fill-rule=\"nonzero\"/></svg>',\n    'emoji': '<svg width=\"24\" height=\"24\"><path d=\"M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 0 0-1 1c0 .6.4 1 1 1Zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 0 0-1 1c0 .6.4 1 1 1Zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm0 14.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13Z\" fill-rule=\"nonzero\"/></svg>',\n    'export': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"M14.4 3 18 7v1h-5V5H7v14h9a1 1 0 0 1 2 0c0 1-.8 2-1.9 2H7c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h7.5Z\"/><path d=\"M18.1 12c.5 0 .9.4.9 1 0 .5-.3 1-.8 1h-7.3c-.5 0-.9-.4-.9-1 0-.5.3-1 .8-1h7.3Z\"/><path d=\"M16.4 9.2a1 1 0 0 1 1.4.2l2.4 3.6-2.4 3.6a1 1 0 0 1-1.7-1v-.2l1.7-2.4-1.6-2.4a1 1 0 0 1 .2-1.4Z\"/></g></svg>',\n    'fill': '<svg width=\"24\" height=\"26\"><path d=\"m16.6 12-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 0 0 2.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2ZM5.2 13 10 8.2l4.8 4.8H5.2ZM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.3-2-3.5-2-3.5Z\" fill-rule=\"nonzero\"/></svg>',\n    'flip-horizontally': '<svg width=\"24\" height=\"24\"><path d=\"M14 19h2v-2h-2v2Zm4-8h2V9h-2v2ZM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 0 0-2 2Zm14-2v2h2a2 2 0 0 0-2-2Zm-7 16h2V3h-2v18Zm7-6h2v-2h-2v2Zm-4-8h2V5h-2v2Zm4 12a2 2 0 0 0 2-2h-2v2Z\" fill-rule=\"nonzero\"/></svg>',\n    'flip-vertically': '<svg width=\"24\" height=\"24\"><path d=\"M5 14v2h2v-2H5Zm8 4v2h2v-2h-2Zm4-14H7a2 2 0 0 0-2 2v3h2V6h10v3h2V6a2 2 0 0 0-2-2Zm2 14h-2v2a2 2 0 0 0 2-2ZM3 11v2h18v-2H3Zm6 7v2h2v-2H9Zm8-4v2h2v-2h-2ZM5 18c0 1.1.9 2 2 2v-2H5Z\" fill-rule=\"nonzero\"/></svg>',\n    'footnote': '<svg width=\"24\" height=\"24\"><path d=\"M19 13c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2h14Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19 4v6h-1V5h-1.5V4h2.6Z\"/><path d=\"M12 18c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2h7ZM14 8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2h9Z\"/></svg>',\n    'format-painter': '<svg width=\"24\" height=\"24\"><path d=\"M18 5V4c0-.5-.4-1-1-1H5a1 1 0 0 0-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3Z\" fill-rule=\"nonzero\"/></svg>',\n    'format': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M17 5a1 1 0 0 1 0 2h-4v11a1 1 0 0 1-2 0V7H7a1 1 0 1 1 0-2h10Z\"/></svg>',\n    'fullscreen': '<svg width=\"24\" height=\"24\"><path d=\"m15.3 10-1.2-1.3 2.9-3h-2.3a.9.9 0 1 1 0-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 1 1-1.8 0V7l-2.9 3Zm0 4 3 3v-2.3a.9.9 0 1 1 1.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 1 1 0-1.8H17l-3-2.9 1.3-1.2ZM10 15.4l-2.9 3h2.3a.9.9 0 1 1 0 1.7H5a.9.9 0 0 1-.9-.9v-4.4a.9.9 0 1 1 1.8 0V17l2.9-3 1.2 1.3ZM8.7 10 5.7 7v2.3a.9.9 0 0 1-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 0 1 0 1.8H7l3 2.9-1.3 1.2Z\" fill-rule=\"nonzero\"/></svg>',\n    'gallery': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"m5 15.7 2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7ZM5 18V19h3l1.8-1.9-2-2L5 17.9Zm14-3-2.5-2.4-6.4 6.5H19v-4ZM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V7c0-.6.4-1 1-1Zm6 7a2 2 0 1 1 0-4 2 2 0 0 1 0 4ZM4.5 4h15a.5.5 0 1 1 0 1h-15a.5.5 0 0 1 0-1Zm2-2h11a.5.5 0 1 1 0 1h-11a.5.5 0 0 1 0-1Z\"/></svg>',\n    'gamma': '<svg width=\"24\" height=\"24\"><path d=\"M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1Zm1 2v14h14V5H5Zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 0 0-.4-.8l-.1-.2H8v-1l.3-.1.3-.1h.7a1 1 0 0 1 .6.5l.1.3a8.5 8.5 0 0 1 .3.6l1.9 4.6 2-5.2a1 1 0 0 1 1-.6.5.5 0 0 1 .5.6L13 14v2.8a.7.7 0 0 1-1.4 0Z\" fill-rule=\"nonzero\"/></svg>',\n    'help': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path d=\"M12 5.5a6.5 6.5 0 0 0-6 9 6.3 6.3 0 0 0 1.4 2l1 1a6.3 6.3 0 0 0 3.6 1 6.5 6.5 0 0 0 6-9 6.3 6.3 0 0 0-1.4-2l-1-1a6.3 6.3 0 0 0-3.6-1ZM12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4Z\"/><path d=\"M9.6 9.7a.7.7 0 0 1-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 0 0-.8.8.8.8 0 0 1-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8Z\" fill-rule=\"nonzero\"/><circle cx=\"12\" cy=\"16\" r=\"1\"/></g></svg>',\n    'highlight-bg-color': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path class=\"tox-icon-highlight-bg-color__color\" d=\"M3 18h18v3H3z\"/><path fill-rule=\"nonzero\" d=\"M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 0 1 2.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6\"/></g></svg>',\n    'home': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"/></svg>',\n    'horizontal-rule': '<svg width=\"24\" height=\"24\"><path d=\"M4 11h16v2H4z\" fill-rule=\"evenodd\"/></svg>',\n    'image-options': '<svg width=\"24\" height=\"24\"><path d=\"M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Z\" fill-rule=\"nonzero\"/></svg>',\n    'image': '<svg width=\"24\" height=\"24\"><path d=\"m5 15.7 3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7ZM5 18V19h3l2.8-2.9-2-2L5 17.9Zm14-3-2.5-2.4-6.4 6.5H19v-4ZM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1Zm6 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\" fill-rule=\"nonzero\"/></svg>',\n    'indent': '<svg width=\"24\" height=\"24\"><path d=\"M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2Zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2Zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2Zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2Zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6Z\" fill-rule=\"evenodd\"/></svg>',\n    'info': '<svg width=\"24\" height=\"24\"><path d=\"M12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4Zm-1 3v2h2V7h-2Zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4Z\" fill-rule=\"evenodd\"/></svg>',\n    'insert-character': '<svg width=\"24\" height=\"24\"><path d=\"M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 0 0 1.8-2.9 6.3 6.3 0 0 0-.1-4.1 5.8 5.8 0 0 0-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 0 0-3.9 1.8 6.3 6.3 0 0 0-1.3 6 6.2 6.2 0 0 0 1.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 0 1 4 11c0-1 .2-1.9.6-2.7A7 7 0 0 1 6.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 0 1 5.7 2 7 7 0 0 1 1.7 2.3 6 6 0 0 1 .2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 0 1-3.6 2.5v.5Z\" fill-rule=\"evenodd\"/></svg>',\n    'insert-time': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"M12 19a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm0 2a9 9 0 1 1 0-18 9 9 0 0 1 0 18Z\"/><path d=\"M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 0 0-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1Z\"/></g></svg>',\n    'invert': '<svg width=\"24\" height=\"24\"><path d=\"M18 19.3 16.5 18a5.8 5.8 0 0 1-3.1 1.9 6.1 6.1 0 0 1-5.5-1.6A5.8 5.8 0 0 1 6 14v-.3l.1-1.2A13.9 13.9 0 0 1 7.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6Zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 0 0 .2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 0 0-3-4.2L12 6a26.1 26.1 0 0 0-2.2 2.5l-1-1a20.9 20.9 0 0 1 2.9-3.3L12 4l1 .8a22.2 22.2 0 0 1 4 5.4c.6 1.2 1 2.4 1 3.6Z\" fill-rule=\"evenodd\"/></svg>',\n    'italic': '<svg width=\"24\" height=\"24\"><path d=\"m16.7 4.7-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8Z\" fill-rule=\"evenodd\"/></svg>',\n    'language': '<svg width=\"24\" height=\"24\"><path d=\"M12 3a9 9 0 1 1 0 18 9 9 0 0 1 0-18Zm4.3 13.3c-.5 1-1.2 2-2 2.9a7.5 7.5 0 0 0 3.2-2.1l-.2-.2a6 6 0 0 0-1-.6Zm-8.6 0c-.5.2-.9.5-1.2.8.9 1 2 1.7 3.2 2a10 10 0 0 1-2-2.8Zm3.6-.8c-.8 0-1.6.1-2.2.3.5 1 1.2 1.9 2.1 2.7Zm1.5 0v3c.9-.8 1.6-1.7 2.1-2.7-.6-.2-1.4-.3-2.1-.3Zm-6-2.7H4.5c.2 1 .5 2.1 1 3h.3l1.3-1a10 10 0 0 1-.3-2Zm12.7 0h-2.3c0 .7-.1 1.4-.3 2l1.6 1.1c.5-1 .9-2 1-3.1Zm-3.8 0h-3V14c1 0 2 .1 2.7.4.2-.5.3-1 .3-1.6Zm-4.4 0h-3l.3 1.6c.8-.3 1.7-.4 2.7-.4v-1.3Zm-5.5-5c-.7 1-1.1 2.2-1.3 3.5h2.3c0-1 .2-1.8.5-2.6l-1.5-1Zm2.9 1.4v.1c-.2.6-.4 1.3-.4 2h3V9.4c-1 0-1.8-.1-2.6-.3Zm6.6 0h-.1l-2.4.3v1.8h3l-.5-2.1Zm3-1.4-.3.1-1.3.8c.3.8.5 1.6.5 2.6h2.3a7.5 7.5 0 0 0-1.3-3.5Zm-9 0 2 .2V5.5a9 9 0 0 0-2 2.2Zm3.5-2.3V8c.6 0 1.3 0 1.9-.2a9 9 0 0 0-2-2.3Zm-3-.7h-.1c-1.1.4-2.1 1-3 1.8l1.2.7a10 10 0 0 1 1.9-2.5Zm4.4 0 .1.1a10 10 0 0 1 1.8 2.4l1.1-.7a7.5 7.5 0 0 0-3-1.8Z\"/></svg>',\n    'line-height': '<svg width=\"24\" height=\"24\"><path d=\"M21 5a1 1 0 0 1 .1 2H13a1 1 0 0 1-.1-2H21zm0 4a1 1 0 0 1 .1 2H13a1 1 0 0 1-.1-2H21zm0 4a1 1 0 0 1 .1 2H13a1 1 0 0 1-.1-2H21zm0 4a1 1 0 0 1 .1 2H13a1 1 0 0 1-.1-2H21zM7 3.6l3.7 3.7a1 1 0 0 1-1.3 1.5h-.1L8 7.3v9.2l1.3-1.3a1 1 0 0 1 1.3 0h.1c.4.4.4 1 0 1.3v.1L7 20.4l-3.7-3.7a1 1 0 0 1 1.3-1.5h.1L6 16.7V7.4L4.7 8.7a1 1 0 0 1-1.3 0h-.1a1 1 0 0 1 0-1.3v-.1L7 3.6z\"/></svg>',\n    'line': '<svg width=\"24\" height=\"24\"><path d=\"m15 9-8 8H4v-3l8-8 3 3Zm1-1-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1ZM4 18h16v2H4v-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'link': '<svg width=\"24\" height=\"24\"><path d=\"M6.2 12.3a1 1 0 0 1 1.4 1.4l-2 2a2 2 0 1 0 2.6 2.8l4.8-4.8a1 1 0 0 0 0-1.4 1 1 0 1 1 1.4-1.3 2.9 2.9 0 0 1 0 4L9.6 20a3.9 3.9 0 0 1-5.5-5.5l2-2Zm11.6-.6a1 1 0 0 1-1.4-1.4l2-2a2 2 0 1 0-2.6-2.8L11 10.3a1 1 0 0 0 0 1.4A1 1 0 1 1 9.6 13a2.9 2.9 0 0 1 0-4L14.4 4a3.9 3.9 0 0 1 5.5 5.5l-2 2Z\" fill-rule=\"nonzero\"/></svg>',\n    'list-bull-circle': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path d=\"M11 16a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM11 26a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM11 36a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6Z\" fill-rule=\"nonzero\"/><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/></g></svg>',\n    'list-bull-default': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><circle cx=\"11\" cy=\"14\" r=\"3\"/><circle cx=\"11\" cy=\"24\" r=\"3\"/><circle cx=\"11\" cy=\"34\" r=\"3\"/><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/></g></svg>',\n    'list-bull-square': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path d=\"M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z\"/><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/></g></svg>',\n    'list-num-default-rtl': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z\"/><path d=\"M37.4 17v-4.8h-.1l-1.5 1v-1.1l1.6-1.1h1.2v6zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z\"/></g></svg>',\n    'list-num-default': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/><path d=\"M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2Zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7Zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5Zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7ZM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7Zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7Z\"/></g></svg>',\n    'list-num-lower-alpha-rtl': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z\"/><path d=\"M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7Zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6ZM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7ZM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4Zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3ZM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z\"/></g></svg>',\n    'list-num-lower-alpha': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/><path d=\"M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6Zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7Zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4Zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3Zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7Zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Z\"/></g></svg>',\n    'list-num-lower-greek-rtl': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z\"/><path d=\"M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8Zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4ZM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7ZM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22Zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3ZM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7ZM37.1 34.6 34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2Zm.7 1a2 2 0 0 0-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1ZM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Z\"/></g></svg>',\n    'list-num-lower-greek': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/><path d=\"M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4Zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8Zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7Zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3ZM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22Zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7Zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2Zm.7 1a2 2 0 0 0-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1Zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Z\"/></g></svg>',\n    'list-num-lower-roman-rtl': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z\"/><path d=\"M32.9 16v-1.2h-1.3V16H33Zm0 10v-1.2h-1.3V26H33Zm0 10v-1.2h-1.3V36H33Z\"/><path fill-rule=\"nonzero\" d=\"M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z\"/></g></svg>',\n    'list-num-lower-roman': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/><path d=\"M15.1 16v-1.2h1.3V16H15Zm0 10v-1.2h1.3V26H15Zm0 10v-1.2h1.3V36H15Z\"/><path fill-rule=\"nonzero\" d=\"M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z\"/></g></svg>',\n    'list-num-upper-alpha-rtl': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z\"/><path d=\"m39.3 17-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3Zm-1.6-4.7-.7 2.3h1.6l-.8-2.3ZM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7Zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7Zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1Zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26ZM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2Zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Z\"/></g></svg>',\n    'list-num-upper-alpha': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/><path d=\"m12.6 17-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3ZM11 12.3l-.7 2.3h1.6l-.8-2.3Zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7ZM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7ZM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1Zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26Zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2Zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7Z\"/></g></svg>',\n    'list-num-upper-roman-rtl': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z\"/><path d=\"M31.6 17v-1.2H33V17h-1.3Zm0 10v-1.2H33V27h-1.3Zm0 10v-1.2H33V37h-1.3Z\"/><path fill-rule=\"nonzero\" d=\"M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z\"/></g></svg>',\n    'list-num-upper-roman': '<svg width=\"48\" height=\"48\"><g fill-rule=\"evenodd\"><path opacity=\".2\" d=\"M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z\"/><path d=\"M15.1 17v-1.2h1.3V17H15Zm0 10v-1.2h1.3V27H15Zm0 10v-1.2h1.3V37H15Z\"/><path fill-rule=\"nonzero\" d=\"M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z\"/></g></svg>',\n    'lock': '<svg width=\"24\" height=\"24\"><path d=\"M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3ZM10 8v3h4V8a1 1 0 0 0-.3-.7A1 1 0 0 0 13 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7Z\" fill-rule=\"evenodd\"/></svg>',\n    'ltr': '<svg width=\"24\" height=\"24\"><path d=\"M11 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 7.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L11 5ZM4.4 16.2 6.2 15l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6Z\" fill-rule=\"evenodd\"/></svg>',\n    'minus': '<svg width=\"24\" height=\"24\"><path d=\"M19 11a1 1 0 0 1 .1 2H5a1 1 0 0 1-.1-2H19Z\"/></svg>',\n    'more-drawer': '<svg width=\"24\" height=\"24\"><path d=\"M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Z\" fill-rule=\"nonzero\"/></svg>',\n    'new-document': '<svg width=\"24\" height=\"24\"><path d=\"M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3ZM17 19H7V5h6v4h4v10Z\" fill-rule=\"nonzero\"/></svg>',\n    'new-tab': '<svg width=\"24\" height=\"24\"><path d=\"m15 13 2-2v8H5V7h8l-2 2H7v8h8v-4Zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19Z\" fill-rule=\"evenodd\"/></svg>',\n    'non-breaking': '<svg width=\"24\" height=\"24\"><path d=\"M11 11H8a1 1 0 1 1 0-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-3Zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1Z\" fill-rule=\"evenodd\"/></svg>',\n    'notice': '<svg width=\"24\" height=\"24\"><path d=\"M15.5 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7ZM13 17v-2h-2v2h2Zm0-4V7h-2v6h2Z\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"/></svg>',\n    'ordered-list-rtl': '<svg width=\"24\" height=\"24\"><path d=\"M6 17h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2Zm0-6h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2Zm0-6h8a1 1 0 0 1 0 2H6a1 1 0 1 1 0-2Zm13-1v3.5a.5.5 0 1 1-1 0V5h-.5a.5.5 0 1 1 0-1H19Zm-1 8.8.2.2h1.3a.5.5 0 1 1 0 1h-1.6a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2h-1.3a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3Zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 0 1 0-1h1.2a.3.3 0 1 0 0-.6h-1.3a.4.4 0 1 1 0-.8h1.3a.3.3 0 0 0 0-.6h-1.2a.5.5 0 1 1 0-1H19c.6 0 1 .4 1 1Z\" fill-rule=\"evenodd\"/></svg>',\n    'ordered-list': '<svg width=\"24\" height=\"24\"><path d=\"M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 1 1 0-2ZM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 0 1-.5-.5V5h-.5a.5.5 0 0 1 0-1H6Zm-1 8.8.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2H4.5a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3ZM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 0 1 0-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 1 1 0-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 1 1 0-1H6c.6 0 1 .4 1 1Z\" fill-rule=\"evenodd\"/></svg>',\n    'orientation': '<svg width=\"24\" height=\"24\"><path d=\"M7.3 6.4 1 13l6.4 6.5 6.5-6.5-6.5-6.5ZM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7ZM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 0 1 0-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 1 1-4.3 16.9l1.5-1.5A7 7 0 1 0 13 6h-1Z\" fill-rule=\"nonzero\"/></svg>',\n    'outdent': '<svg width=\"24\" height=\"24\"><path d=\"M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2Zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2Zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2Zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2Zm1.6-3.8a1 1 0 0 1-1.2 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 0 1 1.2 1.6L6.8 12l1.8 1.2Z\" fill-rule=\"evenodd\"/></svg>',\n    'page-break': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path d=\"M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2Zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2Zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2Zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 0 1 0-2Zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2ZM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1ZM6 22a1 1 0 0 1-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5H7v5c0 .6-.4 1-1 1Z\"/></g></svg>',\n    'paragraph': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M10 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 6.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L10 5Z\"/></svg>',\n    'paste-column-after': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h7v2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0 1 12 1Zm8 7v12h-6V8h6Zm-1.5 1.5h-3v9h3v-9ZM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z\"/></svg>',\n    'paste-column-before': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V18c0 1-.8 2-1.9 2H11v-2h7V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v2H4V5c0-1 .8-2 1.9-2H9.2A3 3 0 0 1 12 1Zm-2 7v12H4V8h6ZM8.5 9.5h-3v9h3v-9ZM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z\"/></svg>',\n    'paste-row-after': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V11h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h14c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0 1 12 1Zm10 11v5H8v-5h14Zm-1.5 1.5h-11v2h11v-2ZM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z\"/></svg>',\n    'paste-row-before': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" d=\"M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h12v-4h2v4c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0 1 12 1Zm10 7v5H8V8h14Zm-1.5 1.5h-11v2h11v-2ZM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z\"/></svg>',\n    'paste-text': '<svg width=\"24\" height=\"24\"><path d=\"M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h3V9h9ZM9 20H6a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0 1 12 1a3 3 0 0 1 2.8 2H18a2 2 0 0 1 2 2v4h1v12H9v-1Zm1.5-9.5v9h9v-9h-9ZM12 3a1 1 0 0 0-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1Zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2Z\" fill-rule=\"nonzero\"/></svg>',\n    'paste': '<svg width=\"24\" height=\"24\"><path d=\"M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h3V9h9ZM9 20H6a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0 1 12 1a3 3 0 0 1 2.8 2H18a2 2 0 0 1 2 2v4h1v12H9v-1Zm1.5-9.5v9h9v-9h-9ZM12 3a1 1 0 0 0-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1Z\" fill-rule=\"nonzero\"/></svg>',\n    'permanent-pen': '<svg width=\"24\" height=\"24\"><path d=\"M10.5 17.5 8 20H3v-3l3.5-3.5a2 2 0 0 1 0-3L14 3l1 1-7.3 7.3a1 1 0 0 0 0 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 0 1-2.8 0l-.1-.1Z\" fill-rule=\"nonzero\"/></svg>',\n    'plus': '<svg width=\"24\" height=\"24\"><path d=\"M12 4c.5 0 1 .4 1 .9V11h6a1 1 0 0 1 .1 2H13v6a1 1 0 0 1-2 .1V13H5a1 1 0 0 1-.1-2H11V5c0-.6.4-1 1-1Z\"/></svg>',\n    'preferences': '<svg width=\"24\" height=\"24\"><path d=\"m20.1 13.5-1.9.2a5.8 5.8 0 0 1-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 0 1-1.4 0l-1.5-1.2a6.2 6.2 0 0 1-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 0 1-1-.9l-.2-1.9a5.8 5.8 0 0 1-1.5-.6l-1.5 1.2a1 1 0 0 1-1.4 0l-.7-.7a1 1 0 0 1 0-1.4l1.2-1.5a6.2 6.2 0 0 1-.6-1.5l-1.9-.2a1 1 0 0 1-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 0 1 .6-1.5L5.2 7.3a1 1 0 0 1 0-1.4l.7-.7a1 1 0 0 1 1.4 0l1.5 1.2a6.2 6.2 0 0 1 1.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 0 1 1.5.6l1.5-1.2a1 1 0 0 1 1.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 0 1 .6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1ZM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\" fill-rule=\"evenodd\"/></svg>',\n    'preview': '<svg width=\"24\" height=\"24\"><path d=\"M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 0 0 2.1-2.8 15.7 15.7 0 0 0-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 0 0-6.7 3.2A16.2 16.2 0 0 0 3.2 12c0 .2.2.3.3.5Zm-2.4-1 .7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 0 1 2.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 0 1-2.8-3.7 1 1 0 0 1 0-1Zm12-3.3a2 2 0 1 0 2.7 2.6 4 4 0 1 1-2.6-2.6Z\" fill-rule=\"nonzero\"/></svg>',\n    'print': '<svg width=\"24\" height=\"24\"><path d=\"M18 8H6a3 3 0 0 0-3 3v6h2v3h14v-3h2v-6a3 3 0 0 0-3-3Zm-1 10H7v-4h10v4Zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5Zm.5-8H6v2h12V5Z\" fill-rule=\"nonzero\"/></svg>',\n    'quote': '<svg width=\"24\" height=\"24\"><path d=\"M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 0 0-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 0 0 .8 1.3Zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 0 0-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 0 0 .8 1.3Z\" fill-rule=\"nonzero\"/></svg>',\n    'redo': '<svg width=\"24\" height=\"24\"><path d=\"M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 1 1-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 1 1 1.4-1.4l5 5a1 1 0 0 1 0 1.4l-5 5a1 1 0 0 1-1.4-1.4l3.3-3.3Z\" fill-rule=\"nonzero\"/></svg>',\n    'reload': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"m5 22.1-1.2-4.7v-.2a1 1 0 0 1 1-1l5 .4a1 1 0 1 1-.2 2l-2.2-.2a7.8 7.8 0 0 0 8.4.2 7.5 7.5 0 0 0 3.5-6.4 1 1 0 1 1 2 0 9.5 9.5 0 0 1-4.5 8 9.9 9.9 0 0 1-10.2 0l.4 1.4a1 1 0 1 1-2 .5ZM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 0 0-9.5-1 7.5 7.5 0 0 0-3.6 7 1 1 0 0 1-2 0 9.5 9.5 0 0 1 4.5-8.6 10 10 0 0 1 10.9.3l-.3-1a1 1 0 0 1 2-.5l1.1 4.8a1 1 0 0 1-1 1.2l-5-.4a1 1 0 0 1-.9-1Z\"/></g></svg>',\n    'remove-formatting': '<svg width=\"24\" height=\"24\"><path d=\"M13.2 6a1 1 0 0 1 0 .2l-2.6 10a1 1 0 0 1-1 .8h-.2a.8.8 0 0 1-.8-1l2.6-10H8a1 1 0 1 1 0-2h9a1 1 0 0 1 0 2h-3.8ZM5 18h7a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2Zm13 1.5L16.5 18 15 19.5a.7.7 0 0 1-1-1l1.5-1.5-1.5-1.5a.7.7 0 0 1 1-1l1.5 1.5 1.5-1.5a.7.7 0 0 1 1 1L17.5 17l1.5 1.5a.7.7 0 0 1-1 1Z\" fill-rule=\"evenodd\"/></svg>',\n    'remove': '<svg width=\"24\" height=\"24\"><path d=\"M16 7h3a1 1 0 0 1 0 2h-1v9a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V9H5a1 1 0 1 1 0-2h3V6a3 3 0 0 1 3-3h2a3 3 0 0 1 3 3v1Zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 0 0-1 1v1h4Zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9Zm-7 3a1 1 0 0 1 2 0v4a1 1 0 0 1-2 0v-4Zm4 0a1 1 0 0 1 2 0v4a1 1 0 0 1-2 0v-4Z\" fill-rule=\"nonzero\"/></svg>',\n    'resize-handle': '<svg width=\"10\" height=\"10\"><g fill-rule=\"nonzero\"><path d=\"M8.1 1.1A.5.5 0 1 1 9 2l-7 7A.5.5 0 1 1 1 8l7-7ZM8.1 5.1A.5.5 0 1 1 9 6l-3 3A.5.5 0 1 1 5 8l3-3Z\"/></g></svg>',\n    'resize': '<svg width=\"24\" height=\"24\"><path d=\"M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-6a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3A1 1 0 0 1 4 11V5Z\" fill-rule=\"evenodd\"/></svg>',\n    'restore-draft': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path d=\"M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1Z\"/><path d=\"M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10Z\" fill-rule=\"nonzero\"/></g></svg>',\n    'rotate-left': '<svg width=\"24\" height=\"24\"><path d=\"M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10Z\" fill-rule=\"nonzero\"/></svg>',\n    'rotate-right': '<svg width=\"24\" height=\"24\"><path d=\"M20 8V5a1 1 0 0 1 2 0v6c0 .6-.4 1-1 1h-6a1 1 0 0 1 0-2h4.3L16 7A7.2 7.2 0 0 0 7.7 6a7 7 0 0 0 3 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 0 1 1.4 1.5A9.2 9.2 0 0 1 2.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8Z\" fill-rule=\"nonzero\"/></svg>',\n    'rtl': '<svg width=\"24\" height=\"24\"><path d=\"M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 4.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L8 5Zm12 11.2a1 1 0 1 1-1 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 1 1 1 1.6L18.4 15l1.8 1.2Z\" fill-rule=\"evenodd\"/></svg>',\n    'save': '<svg width=\"24\" height=\"24\"><path d=\"M5 16h14a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2c0-1.1.9-2 2-2Zm0 2v2h14v-2H5Zm10 0h2v2h-2v-2Zm-4-6.4L8.7 9.3a1 1 0 1 0-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 1 0-1.4-1.4L13 11.6V4a1 1 0 0 0-2 0v7.6Z\" fill-rule=\"nonzero\"/></svg>',\n    'search': '<svg width=\"24\" height=\"24\"><path d=\"M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3Zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12Z\" fill-rule=\"nonzero\"/></svg>',\n    'select-all': '<svg width=\"24\" height=\"24\"><path d=\"M3 5h2V3a2 2 0 0 0-2 2Zm0 8h2v-2H3v2Zm4 8h2v-2H7v2ZM3 9h2V7H3v2Zm10-6h-2v2h2V3Zm6 0v2h2a2 2 0 0 0-2-2ZM5 21v-2H3c0 1.1.9 2 2 2Zm-2-4h2v-2H3v2ZM9 3H7v2h2V3Zm2 18h2v-2h-2v2Zm8-8h2v-2h-2v2Zm0 8a2 2 0 0 0 2-2h-2v2Zm0-12h2V7h-2v2Zm0 8h2v-2h-2v2Zm-4 4h2v-2h-2v2Zm0-16h2V3h-2v2ZM7 17h10V7H7v10Zm2-8h6v6H9V9Z\" fill-rule=\"nonzero\"/></svg>',\n    'selected': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2Zm3.6 10.9L7 12.3a.7.7 0 0 0-1 1L9.6 17 18 8.6a.7.7 0 0 0 0-1 .7.7 0 0 0-1 0l-7.4 7.3Z\"/></svg>',\n    'send': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"m13.3 22 7-18.3-18.3 7L9 15l4.3 7ZM18 6.8l-.7-.7L9.4 14l.7.7L18 6.8Z\"/></svg>',\n    'settings': '<svg width=\"24\" height=\"24\"><path d=\"M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V8H5a1 1 0 1 1 0-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6ZM8 8h2V6H8v2Zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V13H5a1 1 0 0 1 0-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6ZM14 13h2v-2h-2v2Zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V18H5a1 1 0 0 1 0-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6ZM8 18h2v-2H8v2Z\" fill-rule=\"evenodd\"/></svg>',\n    'sharpen': '<svg width=\"24\" height=\"24\"><path d=\"m16 6 4 4-8 9-8-9 4-4h8Zm-4 10.2 5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2Z\" fill-rule=\"evenodd\"/></svg>',\n    'sourcecode': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 0 1 0-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7ZM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 0 0-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7Z\"/></g></svg>',\n    'spell-check': '<svg width=\"24\" height=\"24\"><path d=\"M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6Zm0-3v2h2V5H6Zm13 0h-3v5h3v1h-3a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1Zm-5 1.5-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5ZM13 10V8h-2v2h2Zm0-3V5h-2v2h2Zm3 5 1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12Z\" fill-rule=\"evenodd\"/></svg>',\n    'strike-through': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path d=\"M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 0 1 7 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1Z\"/><path d=\"M5 11h14a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2Z\" fill-rule=\"nonzero\"/></g></svg>',\n    'subscript': '<svg width=\"24\" height=\"24\"><path d=\"m10.4 10 4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10ZM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 0 0-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 0 1-1.3 1.3l-.6.6h2.6V19Z\" fill-rule=\"nonzero\"/></svg>',\n    'superscript': '<svg width=\"24\" height=\"24\"><path d=\"M15 9.4 10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4Zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11Z\" fill-rule=\"nonzero\"/></svg>',\n    'table-caption': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><rect width=\"12\" height=\"2\" x=\"3\" y=\"4\" rx=\"1\"/><path d=\"M19 8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-8c0-1.1.9-2 2-2h14ZM5 15v3h6v-3H5Zm14 0h-6v3h6v-3Zm0-5h-6v3h6v-3ZM5 13h6v-3H5v3Z\"/></g></svg>',\n    'table-cell-classes': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path fill-rule=\"nonzero\" d=\"M13 4v9H3V6c0-1.1.9-2 2-2h8Zm-2 2H5v5h6V6Z\"/><path fill-rule=\"nonzero\" d=\"M13 4h6a2 2 0 0 1 2 2v7h-8v-2h6V6h-6V4Z\" opacity=\".2\"/><path d=\"m18 20-2.6 1.6.7-3-2.4-2 3.1-.2 1.2-2.9 1.2 2.9 3.1.2-2.4 2 .7 3z\"/><path fill-rule=\"nonzero\" d=\"M3 13v5c0 1.1.9 2 2 2h8v-7h-2v5H5v-5H3Z\" opacity=\".2\"/></g></svg>',\n    'table-cell-properties': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 9H5v5h6v-5Zm8 0h-6v5h6v-5Zm-8-7H5v5h6V6Z\"/></svg>',\n    'table-cell-select-all': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm0 2H5v12h14V6Z\"/><path d=\"M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2Z\" opacity=\".2\"/></g></svg>',\n    'table-cell-select-inner': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm0 2H5v12h14V6Z\" opacity=\".2\"/><path d=\"M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2Z\"/></g></svg>',\n    'table-classes': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v7h-8v7H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 9H5v5h6v-5Zm8-7h-6v5h6V6Zm-8 0H5v5h6V6Z\"/><path d=\"m18 20-2.6 1.6.7-3-2.4-2 3.1-.2 1.2-2.9 1.2 2.9 3.1.2-2.4 2 .7 3z\"/></g></svg>',\n    'table-delete-column': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2Zm.3.5 1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5Z\"/></svg>',\n    'table-delete-row': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6Zm-4.7 1.8 1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3Z\"/></svg>',\n    'table-delete-table': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><path d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM5 6v12h14V6H5Z\"/><path d=\"m14.4 8.6 1.1 1-2.4 2.4 2.4 2.4-1.1 1.1-2.4-2.4-2.4 2.4-1-1.1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z\"/></g></svg>',\n    'table-insert-column-after': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M20 4c.6 0 1 .4 1 1v2a1 1 0 0 1-2 0V6h-8v12h8v-1a1 1 0 0 1 2 0v2c0 .5-.4 1-.9 1H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h15ZM9 13H5v5h4v-5Zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 0 1 .1 2H17v2a1 1 0 0 1-2 .1V13h-2a1 1 0 0 1-.1-2H15V9c0-.6.4-1 1-1ZM9 6H5v5h4V6Z\"/></svg>',\n    'table-insert-column-before': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a1 1 0 0 1-1-1v-2a1 1 0 0 1 2 0v1h8V6H5v1a1 1 0 1 1-2 0V5c0-.6.4-1 1-1h15Zm0 9h-4v5h4v-5ZM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 0 1 .1 2H9v2a1 1 0 0 1-2 .1V13H5a1 1 0 0 1-.1-2H7V9c0-.6.4-1 1-1Zm11-2h-4v5h4V6Z\"/></svg>',\n    'table-insert-row-above': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M6 4a1 1 0 1 1 0 2H5v6h14V6h-1a1 1 0 0 1 0-2h2c.6 0 1 .4 1 1v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5c0-.6.4-1 1-1h2Zm5 10H5v4h6v-4Zm8 0h-6v4h6v-4ZM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 .1V8H9a1 1 0 0 1 0-2h2V4c0-.6.4-1 1-1Z\"/></svg>',\n    'table-insert-row-after': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 0 1 .1 2H13v2a1 1 0 0 1-2 .1V18H9a1 1 0 0 1-.1-2H11v-2c0-.6.4-1 1-1Zm6 7a1 1 0 0 1 0-2h1v-6H5v6h1a1 1 0 0 1 0 2H4a1 1 0 0 1-1-1V6c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v13c0 .5-.4 1-.9 1H18ZM11 6H5v4h6V6Zm8 0h-6v4h6V6Z\"/></svg>',\n    'table-left-header': '<svg width=\"24\" height=\"24\"><path d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm0 9h-4v5h4v-5Zm-6 0H9v5h4v-5Zm0-7H9v5h4V6Zm6 0h-4v5h4V6Z\"/></svg>',\n    'table-merge-cells': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM5 15.5V18h3v-2.5H5Zm14-5h-9V18h9v-7.5ZM19 6h-4v2.5h4V6ZM8 6H5v2.5h3V6Zm5 0h-3v2.5h3V6Zm-8 7.5h3v-3H5v3Z\"/></svg>',\n    'table-row-numbering-rtl': '<svg width=\"24\" height=\"24\"><path d=\"M6 4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H6Zm0 12h8v3H6v-3Zm11 0c.6 0 1 .4 1 1v1a1 1 0 0 1-2 0v-1c0-.6.4-1 1-1ZM6 11h8v3H6v-3Zm11 0c.6 0 1 .4 1 1v1a1 1 0 0 1-2 0v-1c0-.6.4-1 1-1ZM6 6h8v3H6V6Zm11 0c.6 0 1 .4 1 1v1a1 1 0 1 1-2 0V7c0-.6.4-1 1-1Z\"/></svg>',\n    'table-row-numbering': '<svg width=\"24\" height=\"24\"><path d=\"M18 4a2 2 0 0 1 2 2v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h12Zm0 12h-8v3h8v-3ZM7 16a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1c0-.6-.4-1-1-1Zm11-5h-8v3h8v-3ZM7 11a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1c0-.6-.4-1-1-1Zm11-5h-8v3h8V6ZM7 6a1 1 0 0 0-1 1v1a1 1 0 1 0 2 0V7c0-.6-.4-1-1-1Z\"/></svg>',\n    'table-row-properties': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM5 15v3h6v-3H5Zm14 0h-6v3h6v-3Zm0-9h-6v3h6V6ZM5 9h6V6H5v3Z\"/></svg>',\n    'table-split-cells': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM8 15.5H5V18h3v-2.5Zm11-5h-9V18h9v-7.5Zm-2.5 1 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2Zm-8.5-1H5v3h3v-3ZM19 6h-4v2.5h4V6ZM8 6H5v2.5h3V6Zm5 0h-3v2.5h3V6Z\"/></svg>',\n    'table-top-header': '<svg width=\"24\" height=\"24\"><path d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 11H5v3h6v-3Zm8 0h-6v3h6v-3Zm0-5h-6v3h6v-3ZM5 13h6v-3H5v3Z\"/></svg>',\n    'table': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM5 14v4h6v-4H5Zm14 0h-6v4h6v-4Zm0-6h-6v4h6V8ZM5 12h6V8H5v4Z\"/></svg>',\n    'template-add': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9 12v4H5a2 2 0 0 0-2 2v3h9.3a6 6 0 0 1-.3-2H5v-1h7a6 6 0 0 1 .8-2H11v-5l-.8-.6a3 3 0 1 1 3.6 0l-.8.6v4.7a6 6 0 0 1 2-1.9V12a5 5 0 1 0-6 0Z\"/><path d=\"M18 15c.5 0 1 .4 1 .9V18h2a1 1 0 0 1 .1 2H19v2a1 1 0 0 1-2 .1V20h-2a1 1 0 0 1-.1-2H17v-2c0-.6.4-1 1-1Z\"/></svg>',\n    'template': '<svg width=\"24\" height=\"24\"><path d=\"M19 19v-1H5v1h14ZM9 16v-4a5 5 0 1 1 6 0v4h4a2 2 0 0 1 2 2v3H3v-3c0-1.1.9-2 2-2h4Zm4 0v-5l.8-.6a3 3 0 1 0-3.6 0l.8.6v5h2Z\" fill-rule=\"nonzero\"/></svg>',\n    'temporary-placeholder': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path d=\"M9 7.6V6h2.5V4.5a.5.5 0 1 1 1 0V6H15v1.6a8 8 0 1 1-6 0Zm-2.6 5.3a.5.5 0 0 0 .3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 0 1 3.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 0 0-4.1 3.7Z\"/><circle cx=\"14\" cy=\"4\" r=\"1\"/><circle cx=\"12\" cy=\"2\" r=\"1\"/><circle cx=\"10\" cy=\"4\" r=\"1\"/></g></svg>',\n    'text-color': '<svg width=\"24\" height=\"24\"><g fill-rule=\"evenodd\"><path class=\"tox-icon-text-color__color\" d=\"M3 18h18v3H3z\"/><path d=\"M8.7 16h-.8a.5.5 0 0 1-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 0 1-.5.6h-.8a.5.5 0 0 1-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4Zm2.6-7.6-.6 2a.5.5 0 0 0 .5.6h1.6a.5.5 0 0 0 .5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4Z\"/></g></svg>',\n    'text-size-decrease': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14 5a1 1 0 1 1 0 2h-4v11a1 1 0 1 1-2 0V7H4a1 1 0 0 1 0-2h10ZM14 12a1 1 0 1 0 0 2h6a1 1 0 1 0 0-2h-6Z\"/></svg>',\n    'text-size-increase': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14 5a1 1 0 1 1 0 2h-4v11a1 1 0 1 1-2 0V7H4a1 1 0 0 1 0-2h10ZM17 9a1 1 0 0 0-1 1v2h-2a1 1 0 1 0 0 2h2v2a1 1 0 1 0 2 0v-2h2a1 1 0 1 0 0-2h-2v-2c0-.6-.4-1-1-1Z\"/></svg>',\n    'toc': '<svg width=\"24\" height=\"24\"><path d=\"M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 1 1 0-2Zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 1 1 0-2Zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2Zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2Zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 1 1 0-2Zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2Zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'translate': '<svg width=\"24\" height=\"24\"><path d=\"m12.7 14.3-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 0 1 0-1l3.1-3A12.4 12.4 0 0 1 6.7 9H8a10.1 10.1 0 0 0 1.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 1 1 0-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 0 1-1 2.4 13.5 13.5 0 0 1-1.7 2.3l1.9 1.8Zm4.3-3 2.7 7.3a.5.5 0 0 1-.4.7 1 1 0 0 1-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 0 1-1 .7.5.5 0 0 1-.4-.7l2.7-7.4a1 1 0 0 1 2 0Zm-2.2 4.4h2.4L16 12.5l-1.2 3.2Z\" fill-rule=\"evenodd\"/></svg>',\n    'typography': '<svg width=\"24\" height=\"24\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M17 5a1 1 0 1 1 0 2h-4v11a1 1 0 1 1-2 0V7H7a1 1 0 0 1 0-2h10Z\"/><path d=\"m17.5 14 .8-1.7 1.7-.8-1.7-.8-.8-1.7-.8 1.7-1.7.8 1.7.8.8 1.7ZM7 14l1 2 2 1-2 1-1 2-1-2-2-1 2-1 1-2Z\"/></svg>',\n    'underline': '<svg width=\"24\" height=\"24\"><path d=\"M16 5c.6 0 1 .4 1 1v5.5a4 4 0 0 1-.4 1.8l-1 1.4a5.3 5.3 0 0 1-5.5 1 5 5 0 0 1-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 0 1-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 0 0 2.2.8 3.4 3.4 0 0 0 2.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1ZM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2Z\" fill-rule=\"evenodd\"/></svg>',\n    'undo': '<svg width=\"24\" height=\"24\"><path d=\"M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 0 1-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 1 1-1.4 1.4l-5-5a1 1 0 0 1 0-1.4l5-5a1 1 0 0 1 1.4 1.4L6.4 8Z\" fill-rule=\"nonzero\"/></svg>',\n    'unlink': '<svg width=\"24\" height=\"24\"><path d=\"M6.2 12.3a1 1 0 0 1 1.4 1.4l-2 2a2 2 0 1 0 2.6 2.8l4.8-4.8a1 1 0 0 0 0-1.4 1 1 0 1 1 1.4-1.3 2.9 2.9 0 0 1 0 4L9.6 20a3.9 3.9 0 0 1-5.5-5.5l2-2Zm11.6-.6a1 1 0 0 1-1.4-1.4l2.1-2a2 2 0 1 0-2.7-2.8L11 10.3a1 1 0 0 0 0 1.4A1 1 0 1 1 9.6 13a2.9 2.9 0 0 1 0-4L14.4 4a3.9 3.9 0 0 1 5.5 5.5l-2 2ZM7.6 6.3a.8.8 0 0 1-1 1.1L3.3 4.2a.7.7 0 1 1 1-1l3.2 3.1ZM5.1 8.6a.8.8 0 0 1 0 1.5H3a.8.8 0 0 1 0-1.5H5Zm5-3.5a.8.8 0 0 1-1.5 0V3a.8.8 0 0 1 1.5 0V5Zm6 11.8a.8.8 0 0 1 1-1l3.2 3.2a.8.8 0 0 1-1 1L16 17Zm-2.2 2a.8.8 0 0 1 1.5 0V21a.8.8 0 0 1-1.5 0V19Zm5-3.5a.7.7 0 1 1 0-1.5H21a.8.8 0 0 1 0 1.5H19Z\" fill-rule=\"nonzero\"/></svg>',\n    'unlock': '<svg width=\"24\" height=\"24\"><path d=\"M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 0 0-.3-.7A1 1 0 0 0 16 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2Z\" fill-rule=\"evenodd\"/></svg>',\n    'unordered-list': '<svg width=\"24\" height=\"24\"><path d=\"M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2ZM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1Zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1Zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1Z\" fill-rule=\"evenodd\"/></svg>',\n    'unselected': '<svg width=\"24\" height=\"24\"><path fill-rule=\"nonzero\" d=\"M6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2Zm0 1a1 1 0 0 0-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6Z\"/></svg>',\n    'upload': '<svg width=\"24\" height=\"24\"><path d=\"M18 19v-2a1 1 0 0 1 2 0v3c0 .6-.4 1-1 1H5a1 1 0 0 1-1-1v-3a1 1 0 0 1 2 0v2h12ZM11 6.4 8.7 8.7a1 1 0 0 1-1.4-1.4l4-4a1 1 0 0 1 1.4 0l4 4a1 1 0 1 1-1.4 1.4L13 6.4V16a1 1 0 0 1-2 0V6.4Z\" fill-rule=\"nonzero\"/></svg>',\n    'user': '<svg width=\"24\" height=\"24\"><path d=\"M12 24a12 12 0 1 1 0-24 12 12 0 0 1 0 24Zm-8.7-5.3a11 11 0 0 0 17.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7ZM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13Z\" fill-rule=\"nonzero\"/></svg>',\n    'vertical-align': '<svg width=\"24\" height=\"24\"><g fill-rule=\"nonzero\"><rect width=\"18\" height=\"2\" x=\"3\" y=\"11\" rx=\"1\"/><path d=\"M12 2c.6 0 1 .4 1 1v4l2-1.3a1 1 0 0 1 1.2 1.5l-.1.1-4.1 3-4-3a1 1 0 0 1 1-1.7l2 1.5V3c0-.6.4-1 1-1zm0 11.8 4 2.9a1 1 0 0 1-1 1.7l-2-1.5V21c0 .5-.4 1-.9 1H12a1 1 0 0 1-1-1v-4l-2 1.3a1 1 0 0 1-1.2-.1l-.1-.1a1 1 0 0 1 .1-1.3l.1-.1 4.1-3z\"/></g></svg>',\n    'visualblocks': '<svg width=\"24\" height=\"24\"><path d=\"M9 19v2H7v-2h2Zm-4 0v2a2 2 0 0 1-2-2h2Zm8 0v2h-2v-2h2Zm8 0a2 2 0 0 1-2 2v-2h2Zm-4 0v2h-2v-2h2ZM15 7a1 1 0 0 1 0 2v7a1 1 0 0 1-2 0V9h-1v7a1 1 0 0 1-2 0v-4a2.5 2.5 0 0 1-.2-5H15ZM5 15v2H3v-2h2Zm16 0v2h-2v-2h2ZM5 11v2H3v-2h2Zm16 0v2h-2v-2h2ZM5 7v2H3V7h2Zm16 0v2h-2V7h2ZM5 3v2H3c0-1.1.9-2 2-2Zm8 0v2h-2V3h2Zm6 0a2 2 0 0 1 2 2h-2V3ZM9 3v2H7V3h2Zm8 0v2h-2V3h2Z\" fill-rule=\"evenodd\"/></svg>',\n    'visualchars': '<svg width=\"24\" height=\"24\"><path d=\"M10 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 6.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L10 5Z\" fill-rule=\"evenodd\"/></svg>',\n    'warning': '<svg width=\"24\" height=\"24\"><path d=\"M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6ZM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 0 0-.3-.7 1 1 0 0 0-.7-.3 1 1 0 0 0-.7.3 1 1 0 0 0-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3Zm.7-3 .3-4a1 1 0 0 0-.3-.7 1 1 0 0 0-.7-.3 1 1 0 0 0-.7.3 1 1 0 0 0-.3.7l.3 4h1.4Z\" fill-rule=\"evenodd\"/></svg>',\n    'zoom-in': '<svg width=\"24\" height=\"24\"><path d=\"M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3Zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12Zm-1-9a1 1 0 0 1 2 0v6a1 1 0 0 1-2 0V8Zm-2 4a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2H8Z\" fill-rule=\"nonzero\"/></svg>',\n    'zoom-out': '<svg width=\"24\" height=\"24\"><path d=\"M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3Zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12Zm-3-5a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2H8Z\" fill-rule=\"nonzero\"/></svg>',\n  }\n});", "/**\n * TinyMCE version 6.8.6 (TBD)\n */\n\n(function () {\n    'use strict';\n\n    const getPrototypeOf$2 = Object.getPrototypeOf;\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const eq$1 = t => a => t === a;\n    const is$2 = (value, constructor) => isObject(value) && hasProto(value, constructor, (o, proto) => getPrototypeOf$2(o) === proto);\n    const isString = isType$1('string');\n    const isObject = isType$1('object');\n    const isPlainObject = value => is$2(value, Object);\n    const isArray = isType$1('array');\n    const isNull = eq$1(null);\n    const isBoolean = isSimpleType('boolean');\n    const isUndefined = eq$1(undefined);\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isFunction = isSimpleType('function');\n    const isNumber = isSimpleType('number');\n    const isArrayOf = (value, pred) => {\n      if (isArray(value)) {\n        for (let i = 0, len = value.length; i < len; ++i) {\n          if (!pred(value[i])) {\n            return false;\n          }\n        }\n        return true;\n      }\n      return false;\n    };\n\n    const noop = () => {\n    };\n    const noarg = f => () => f();\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$1 = 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$1 = f => {\n      return f();\n    };\n    const never = constant$1(false);\n    const always = constant$1(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 indexOf = (xs, x) => {\n      const r = rawIndexOf(xs, x);\n      return r === -1 ? Optional.none() : Optional.some(r);\n    };\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$2 = (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 chunk$1 = (array, size) => {\n      const r = [];\n      for (let i = 0; i < array.length; i += size) {\n        const s = nativeSlice.call(array, i, i + size);\n        r.push(s);\n      }\n      return r;\n    };\n    const map$2 = (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$1 = (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$3 = (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$1(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$5 = (xs, pred) => {\n      return findUntil(xs, pred, never);\n    };\n    const findIndex$1 = (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$3 = (xs, f) => flatten(map$2(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 difference = (a1, a2) => filter$2(a1, x => !contains$2(a2, x));\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 pure$2 = x => [x];\n    const sort = (xs, comparator) => {\n      const copy = nativeSlice.call(xs, 0);\n      copy.sort(comparator);\n      return copy;\n    };\n    const get$h = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();\n    const head = xs => get$h(xs, 0);\n    const last$1 = xs => get$h(xs, xs.length - 1);\n    const from = isFunction(Array.from) ? Array.from : x => nativeSlice.call(x);\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 = (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$1 = (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(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      each(obj, (x, i) => {\n        (pred(x, i) ? onTrue : onFalse)(x, i);\n      });\n    };\n    const bifilter = (obj, pred) => {\n      const t = {};\n      const f = {};\n      internalFilter(obj, pred, objAcc(t), objAcc(f));\n      return {\n        t,\n        f\n      };\n    };\n    const filter$1 = (obj, pred) => {\n      const t = {};\n      internalFilter(obj, pred, objAcc(t), noop);\n      return t;\n    };\n    const mapToArray = (obj, f) => {\n      const r = [];\n      each(obj, (value, name) => {\n        r.push(f(value, name));\n      });\n      return r;\n    };\n    const find$4 = (obj, pred) => {\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        if (pred(x, i, obj)) {\n          return Optional.some(x);\n        }\n      }\n      return Optional.none();\n    };\n    const values = obj => {\n      return mapToArray(obj, identity);\n    };\n    const get$g = (obj, key) => {\n      return has$2(obj, key) ? Optional.from(obj[key]) : Optional.none();\n    };\n    const has$2 = (obj, key) => hasOwnProperty.call(obj, key);\n    const hasNonNullableKey = (obj, key) => has$2(obj, key) && obj[key] !== undefined && obj[key] !== null;\n\n    const is$1 = (lhs, rhs, comparator = tripleEquals) => lhs.exists(left => comparator(left, rhs));\n    const equals = (lhs, rhs, comparator = tripleEquals) => lift2(lhs, rhs, comparator).getOr(lhs.isNone() && rhs.isNone());\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 sequence = arr => {\n      const r = [];\n      for (let i = 0; i < arr.length; i++) {\n        const x = arr[i];\n        if (x.isSome()) {\n          r.push(x.getOrDie());\n        } else {\n          return Optional.none();\n        }\n      }\n      return Optional.some(r);\n    };\n    const lift2 = (oa, ob, f) => oa.isSome() && ob.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie())) : Optional.none();\n    const lift3 = (oa, ob, oc, f) => oa.isSome() && ob.isSome() && oc.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie(), oc.getOrDie())) : Optional.none();\n    const mapFrom = (a, f) => a !== undefined && a !== null ? Optional.some(f(a)) : Optional.none();\n    const someIf = (b, a) => b ? Optional.some(a) : Optional.none();\n\n    const addToEnd = (str, suffix) => {\n      return str + suffix;\n    };\n    const removeFromStart = (str, numChars) => {\n      return str.substring(numChars);\n    };\n\n    const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;\n    const removeLeading = (str, prefix) => {\n      return startsWith(str, prefix) ? removeFromStart(str, prefix.length) : str;\n    };\n    const ensureTrailing = (str, suffix) => {\n      return endsWith(str, suffix) ? str : addToEnd(str, suffix);\n    };\n    const contains$1 = (str, substr, start = 0, end) => {\n      const idx = str.indexOf(substr, start);\n      if (idx !== -1) {\n        return isUndefined(end) ? true : idx + substr.length <= end;\n      } else {\n        return false;\n      }\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$1 = blank(/^\\s+|\\s+$/g);\n    const isNotEmpty = s => s.length > 0;\n    const isEmpty = s => !isNotEmpty(s);\n\n    const isSupported$1 = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);\n\n    const fromHtml$2 = (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(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    const fromDom = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return { dom: node };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);\n    const SugarElement = {\n      fromHtml: fromHtml$2,\n      fromTag,\n      fromText,\n      fromDom,\n      fromPoint\n    };\n\n    const Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const path$1 = (parts, scope) => {\n      let o = scope !== undefined && scope !== null ? scope : Global;\n      for (let i = 0; i < parts.length && o !== undefined && o !== null; ++i) {\n        o = o[parts[i]];\n      }\n      return o;\n    };\n    const resolve = (p, scope) => {\n      const parts = p.split('.');\n      return path$1(parts, scope);\n    };\n\n    const unsafe = (name, scope) => {\n      return resolve(name, scope);\n    };\n    const getOrDie$1 = (name, scope) => {\n      const actual = unsafe(name, scope);\n      if (actual === undefined || actual === null) {\n        throw new Error(name + ' not available on this browser');\n      }\n      return actual;\n    };\n\n    const getPrototypeOf$1 = Object.getPrototypeOf;\n    const sandHTMLElement = scope => {\n      return getOrDie$1('HTMLElement', scope);\n    };\n    const isPrototypeOf = x => {\n      const scope = resolve('ownerDocument.defaultView', x);\n      return isObject(x) && (sandHTMLElement(scope).prototype.isPrototypeOf(x) || /^HTML\\w*Element$/.test(getPrototypeOf$1(x).constructor.name));\n    };\n\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const name$3 = element => {\n      const r = element.dom.nodeName;\n      return r.toLowerCase();\n    };\n    const type$1 = element => element.dom.nodeType;\n    const isType = t => element => type$1(element) === t;\n    const isHTMLElement = element => isElement$1(element) && isPrototypeOf(element.dom);\n    const isElement$1 = isType(ELEMENT);\n    const isText = isType(TEXT);\n    const isDocument = isType(DOCUMENT);\n    const isDocumentFragment = isType(DOCUMENT_FRAGMENT);\n    const isTag = tag => e => isElement$1(e) && name$3(e) === tag;\n\n    const is = (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$3 = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? [] : map$2(base.querySelectorAll(selector), SugarElement.fromDom);\n    };\n    const one = (selector, scope) => {\n      const base = scope === undefined ? document : scope.dom;\n      return bypassSelector(base) ? Optional.none() : Optional.from(base.querySelector(selector)).map(SugarElement.fromDom);\n    };\n\n    const eq = (e1, e2) => e1.dom === e2.dom;\n    const contains = (e1, e2) => {\n      const d1 = e1.dom;\n      const d2 = e2.dom;\n      return d1 === d2 ? false : d1.contains(d2);\n    };\n\n    const owner$4 = element => SugarElement.fromDom(element.dom.ownerDocument);\n    const documentOrOwner = dos => isDocument(dos) ? dos : owner$4(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 parentNode = element => parent(element);\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 offsetParent = element => Optional.from(element.dom.offsetParent).map(SugarElement.fromDom);\n    const nextSibling = element => Optional.from(element.dom.nextSibling).map(SugarElement.fromDom);\n    const children = element => map$2(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    const spot = (element, offset) => ({\n      element,\n      offset\n    });\n    const leaf = (element, offset) => {\n      const cs = children(element);\n      return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset);\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 = constant$1(supported);\n    const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;\n    const getContentContainer = dos => isShadowRoot(dos) ? dos : SugarElement.fromDom(documentOrOwner(dos).dom.body);\n    const isInShadowRoot = e => getShadowRoot(e).isSome();\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() && isNonNullable(event.target)) {\n        const el = SugarElement.fromDom(event.target);\n        if (isElement$1(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 = () => getBody(SugarElement.fromDom(document));\n    const getBody = 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 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$9 = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const setAll$1 = (element, attrs) => {\n      const dom = element.dom;\n      each(attrs, (v, k) => {\n        rawSet(dom, k, v);\n      });\n    };\n    const get$f = (element, key) => {\n      const v = element.dom.getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    const getOpt = (element, key) => Optional.from(get$f(element, key));\n    const has$1 = (element, key) => {\n      const dom = element.dom;\n      return dom && dom.hasAttribute ? dom.hasAttribute(key) : false;\n    };\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 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$1(dom)) {\n        dom.style.setProperty(property, value);\n      }\n    };\n    const internalRemove = (dom, property) => {\n      if (isSupported$1(dom)) {\n        dom.style.removeProperty(property);\n      }\n    };\n    const set$8 = (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(css, (v, k) => {\n        internalSet(dom, k, v);\n      });\n    };\n    const setOptions = (element, css) => {\n      const dom = element.dom;\n      each(css, (v, k) => {\n        v.fold(() => {\n          internalRemove(dom, k);\n        }, value => {\n          internalSet(dom, k, value);\n        });\n      });\n    };\n    const get$e = (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$1(dom) ? dom.style.getPropertyValue(property) : '';\n    const getRaw = (element, property) => {\n      const dom = element.dom;\n      const raw = getUnsafeProperty(dom, property);\n      return Optional.from(raw).filter(r => r.length > 0);\n    };\n    const getAllRaw = element => {\n      const css = {};\n      const dom = element.dom;\n      if (isSupported$1(dom)) {\n        for (let i = 0; i < dom.style.length; i++) {\n          const ruleName = dom.style.item(i);\n          css[ruleName] = dom.style[ruleName];\n        }\n      }\n      return css;\n    };\n    const isValidValue$1 = (tag, property, value) => {\n      const element = SugarElement.fromTag(tag);\n      set$8(element, property, value);\n      const style = getRaw(element, property);\n      return style.isSome();\n    };\n    const remove$6 = (element, property) => {\n      const dom = element.dom;\n      internalRemove(dom, property);\n      if (is$1(getOpt(element, 'style').map(trim$1), '')) {\n        remove$7(element, 'style');\n      }\n    };\n    const reflow = e => e.dom.offsetWidth;\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$1(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$e(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$e(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 api$2 = Dimension('height', element => {\n      const dom = element.dom;\n      return inBody(element) ? dom.getBoundingClientRect().height : dom.offsetHeight;\n    });\n    const get$d = element => api$2.get(element);\n    const getOuter$2 = element => api$2.getOuter(element);\n    const setMax$1 = (element, value) => {\n      const inclusions = [\n        'margin-top',\n        'border-top-width',\n        'padding-top',\n        'padding-bottom',\n        'border-bottom-width',\n        'margin-bottom'\n      ];\n      const absMax = api$2.max(element, value, inclusions);\n      set$8(element, 'max-height', absMax + 'px');\n    };\n\n    const r$1 = (left, top) => {\n      const translate = (x, y) => r$1(left + x, top + y);\n      return {\n        left,\n        top,\n        translate\n      };\n    };\n    const SugarPosition = r$1;\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$3 = 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$1(element).translate(scrollLeft - clientLeft, scrollTop - clientTop);\n    };\n    const viewport$1 = 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 api$1 = Dimension('width', element => element.dom.offsetWidth);\n    const set$7 = (element, h) => api$1.set(element, h);\n    const get$c = element => api$1.get(element);\n    const getOuter$1 = element => api$1.getOuter(element);\n    const setMax = (element, value) => {\n      const inclusions = [\n        'margin-left',\n        'border-left-width',\n        'padding-left',\n        'padding-right',\n        'border-right-width',\n        'margin-right'\n      ];\n      const absMax = api$1.max(element, value, inclusions);\n      set$8(element, 'max-width', absMax + 'px');\n    };\n\n    const cached = f => {\n      let called = false;\n      let r;\n      return (...args) => {\n        if (!called) {\n          called = true;\n          r = f.apply(null, args);\n        }\n        return r;\n      };\n    };\n\n    const 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$1(isiPad),\n        isiPhone: constant$1(isiPhone),\n        isTablet: constant$1(isTablet),\n        isPhone: constant$1(isPhone),\n        isTouch: constant$1(isTouch),\n        isAndroid: os.isAndroid,\n        isiOS: os.isiOS,\n        isWebView: constant$1(iOSwebview),\n        isDesktop: constant$1(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$3 = (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$d(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$3();\n      }\n      return find$3(versionRegexes, cleanedAgent);\n    };\n    const unknown$3 = () => {\n      return nu$d(0, 0);\n    };\n    const nu$d = (major, minor) => {\n      return {\n        major,\n        minor\n      };\n    };\n    const Version = {\n      nu: nu$d,\n      detect: detect$5,\n      unknown: unknown$3\n    };\n\n    const detectBrowser$1 = (browsers, userAgentData) => {\n      return findMap(userAgentData.brands, uaBrand => {\n        const lcBrand = uaBrand.brand.toLowerCase();\n        return find$5(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$5(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$1(uastring, target);\n      };\n    };\n    const browsers = [\n      {\n        name: 'Edge',\n        versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n        search: uastring => {\n          return contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(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$1(uastring, 'chrome') && !contains$1(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$1(uastring, 'msie') || contains$1(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$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(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$1(uastring, 'iphone') || contains$1(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$1(browsers),\n      oses: constant$1(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$2 = () => {\n      return nu$c({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    const nu$c = 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$2,\n      nu: nu$c,\n      edge: constant$1(edge),\n      chromium: constant$1(chromium),\n      ie: constant$1(ie),\n      opera: constant$1(opera),\n      firefox: constant$1(firefox),\n      safari: constant$1(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$1 = () => {\n      return nu$b({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    const nu$b = 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: unknown$1,\n      nu: nu$b,\n      windows: constant$1(windows),\n      ios: constant$1(ios),\n      android: constant$1(android),\n      linux: constant$1(linux),\n      macos: constant$1(macos),\n      solaris: constant$1(solaris),\n      freebsd: constant$1(freebsd),\n      chromeos: constant$1(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 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$2 = (element, event, filter, handler) => binder(element, event, filter, handler, false);\n    const capture$1 = (element, event, filter, handler) => binder(element, event, filter, handler, true);\n    const unbind = (element, event, handler, useCapture) => {\n      element.dom.removeEventListener(event, handler, useCapture);\n    };\n\n    const before$1 = (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$2 = (marker, element) => {\n      const sibling = nextSibling(marker);\n      sibling.fold(() => {\n        const parent$1 = parent(marker);\n        parent$1.each(v => {\n          append$2(v, element);\n        });\n      }, v => {\n        before$1(v, element);\n      });\n    };\n    const prepend$1 = (parent, element) => {\n      const firstChild$1 = firstChild(parent);\n      firstChild$1.fold(() => {\n        append$2(parent, element);\n      }, v => {\n        parent.dom.insertBefore(element.dom, v.dom);\n      });\n    };\n    const append$2 = (parent, element) => {\n      parent.dom.appendChild(element.dom);\n    };\n    const appendAt = (parent, element, index) => {\n      child$2(parent, index).fold(() => {\n        append$2(parent, element);\n      }, v => {\n        before$1(v, element);\n      });\n    };\n\n    const append$1 = (parent, elements) => {\n      each$1(elements, x => {\n        append$2(parent, x);\n      });\n    };\n\n    const empty = element => {\n      element.dom.textContent = '';\n      each$1(children(element), rogue => {\n        remove$5(rogue);\n      });\n    };\n    const remove$5 = element => {\n      const dom = element.dom;\n      if (dom.parentNode !== null) {\n        dom.parentNode.removeChild(dom);\n      }\n    };\n\n    const get$b = _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 to = (x, y, _DOC) => {\n      const doc = _DOC !== undefined ? _DOC.dom : document;\n      const win = doc.defaultView;\n      if (win) {\n        win.scrollTo(x, y);\n      }\n    };\n\n    const get$a = _win => {\n      const win = _win === undefined ? window : _win;\n      if (detect$2().browser.isFirefox()) {\n        return Optional.none();\n      } else {\n        return Optional.from(win.visualViewport);\n      }\n    };\n    const bounds$1 = (x, y, width, height) => ({\n      x,\n      y,\n      width,\n      height,\n      right: x + width,\n      bottom: y + height\n    });\n    const getBounds$3 = _win => {\n      const win = _win === undefined ? window : _win;\n      const doc = win.document;\n      const scroll = get$b(SugarElement.fromDom(doc));\n      return get$a(win).fold(() => {\n        const html = win.document.documentElement;\n        const width = html.clientWidth;\n        const height = html.clientHeight;\n        return bounds$1(scroll.left, scroll.top, width, height);\n      }, visualViewport => bounds$1(Math.max(visualViewport.pageLeft, scroll.left), Math.max(visualViewport.pageTop, scroll.top), visualViewport.width, visualViewport.height));\n    };\n\n    const getDocument = () => SugarElement.fromDom(document);\n\n    const walkUp = (navigation, doc) => {\n      const frame = navigation.view(doc);\n      return frame.fold(constant$1([]), f => {\n        const parent = navigation.owner(f);\n        const rest = walkUp(navigation, parent);\n        return [f].concat(rest);\n      });\n    };\n    const pathTo = (element, navigation) => {\n      const d = navigation.owner(element);\n      const paths = walkUp(navigation, d);\n      return Optional.some(paths);\n    };\n\n    const view = doc => {\n      var _a;\n      const element = doc.dom === document ? Optional.none() : Optional.from((_a = doc.dom.defaultView) === null || _a === void 0 ? void 0 : _a.frameElement);\n      return element.map(SugarElement.fromDom);\n    };\n    const owner$3 = element => owner$4(element);\n\n    var Navigation = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        view: view,\n        owner: owner$3\n    });\n\n    const find$2 = element => {\n      const doc = getDocument();\n      const scroll = get$b(doc);\n      const path = pathTo(element, Navigation);\n      return path.fold(curry(absolute$3, element), frames => {\n        const offset = viewport$1(element);\n        const r = foldr(frames, (b, a) => {\n          const loc = viewport$1(a);\n          return {\n            left: b.left + loc.left,\n            top: b.top + loc.top\n          };\n        }, {\n          left: 0,\n          top: 0\n        });\n        return SugarPosition(r.left + offset.left + scroll.left, r.top + offset.top + scroll.top);\n      });\n    };\n\n    const pointed = (point, width, height) => ({\n      point,\n      width,\n      height\n    });\n    const rect = (x, y, width, height) => ({\n      x,\n      y,\n      width,\n      height\n    });\n    const bounds = (x, y, width, height) => ({\n      x,\n      y,\n      width,\n      height,\n      right: x + width,\n      bottom: y + height\n    });\n    const box$1 = element => {\n      const xy = absolute$3(element);\n      const w = getOuter$1(element);\n      const h = getOuter$2(element);\n      return bounds(xy.left, xy.top, w, h);\n    };\n    const absolute$2 = element => {\n      const position = find$2(element);\n      const width = getOuter$1(element);\n      const height = getOuter$2(element);\n      return bounds(position.left, position.top, width, height);\n    };\n    const constrain = (original, constraint) => {\n      const left = Math.max(original.x, constraint.x);\n      const top = Math.max(original.y, constraint.y);\n      const right = Math.min(original.right, constraint.right);\n      const bottom = Math.min(original.bottom, constraint.bottom);\n      const width = right - left;\n      const height = bottom - top;\n      return bounds(left, top, width, height);\n    };\n    const constrainByMany = (original, constraints) => {\n      return foldl(constraints, (acc, c) => constrain(acc, c), original);\n    };\n    const win = () => getBounds$3(window);\n\n    var global$a = tinymce.util.Tools.resolve('tinymce.ThemeManager');\n\n    const value$4 = value => {\n      const applyHelper = fn => fn(value);\n      const constHelper = constant$1(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$1 = 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$1,\n        orThunk: apply$1,\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$1(err), value$4);\n    const Result = {\n      value: value$4,\n      error: error$1,\n      fromOption\n    };\n\n    var SimpleResultType;\n    (function (SimpleResultType) {\n      SimpleResultType[SimpleResultType['Error'] = 0] = 'Error';\n      SimpleResultType[SimpleResultType['Value'] = 1] = 'Value';\n    }(SimpleResultType || (SimpleResultType = {})));\n    const fold$1 = (res, onError, onValue) => res.stype === SimpleResultType.Error ? onError(res.serror) : onValue(res.svalue);\n    const partition$2 = results => {\n      const values = [];\n      const errors = [];\n      each$1(results, obj => {\n        fold$1(obj, err => errors.push(err), val => values.push(val));\n      });\n      return {\n        values,\n        errors\n      };\n    };\n    const mapError = (res, f) => {\n      if (res.stype === SimpleResultType.Error) {\n        return {\n          stype: SimpleResultType.Error,\n          serror: f(res.serror)\n        };\n      } else {\n        return res;\n      }\n    };\n    const map = (res, f) => {\n      if (res.stype === SimpleResultType.Value) {\n        return {\n          stype: SimpleResultType.Value,\n          svalue: f(res.svalue)\n        };\n      } else {\n        return res;\n      }\n    };\n    const bind$1 = (res, f) => {\n      if (res.stype === SimpleResultType.Value) {\n        return f(res.svalue);\n      } else {\n        return res;\n      }\n    };\n    const bindError = (res, f) => {\n      if (res.stype === SimpleResultType.Error) {\n        return f(res.serror);\n      } else {\n        return res;\n      }\n    };\n    const svalue = v => ({\n      stype: SimpleResultType.Value,\n      svalue: v\n    });\n    const serror = e => ({\n      stype: SimpleResultType.Error,\n      serror: e\n    });\n    const toResult$1 = res => fold$1(res, Result.error, Result.value);\n    const fromResult$1 = res => res.fold(serror, svalue);\n    const SimpleResult = {\n      fromResult: fromResult$1,\n      toResult: toResult$1,\n      svalue,\n      partition: partition$2,\n      serror,\n      bind: bind$1,\n      bindError,\n      map,\n      mapError,\n      fold: fold$1\n    };\n\n    const field$2 = (key, newKey, presence, prop) => ({\n      tag: 'field',\n      key,\n      newKey,\n      presence,\n      prop\n    });\n    const customField$1 = (newKey, instantiator) => ({\n      tag: 'custom',\n      newKey,\n      instantiator\n    });\n    const fold = (value, ifField, ifCustom) => {\n      switch (value.tag) {\n      case 'field':\n        return ifField(value.key, value.newKey, value.presence, value.prop);\n      case 'custom':\n        return ifCustom(value.newKey, value.instantiator);\n      }\n    };\n\n    const shallow$1 = (old, nu) => {\n      return nu;\n    };\n    const deep$1 = (old, nu) => {\n      const bothObjects = isPlainObject(old) && isPlainObject(nu);\n      return bothObjects ? deepMerge(old, nu) : nu;\n    };\n    const baseMerge = merger => {\n      return (...objects) => {\n        if (objects.length === 0) {\n          throw new Error(`Can't merge zero objects`);\n        }\n        const ret = {};\n        for (let j = 0; j < objects.length; j++) {\n          const curObject = objects[j];\n          for (const key in curObject) {\n            if (has$2(curObject, key)) {\n              ret[key] = merger(ret[key], curObject[key]);\n            }\n          }\n        }\n        return ret;\n      };\n    };\n    const deepMerge = baseMerge(deep$1);\n    const merge$1 = baseMerge(shallow$1);\n\n    const required$2 = () => ({\n      tag: 'required',\n      process: {}\n    });\n    const defaultedThunk = fallbackThunk => ({\n      tag: 'defaultedThunk',\n      process: fallbackThunk\n    });\n    const defaulted$1 = fallback => defaultedThunk(constant$1(fallback));\n    const asOption = () => ({\n      tag: 'option',\n      process: {}\n    });\n    const mergeWithThunk = baseThunk => ({\n      tag: 'mergeWithThunk',\n      process: baseThunk\n    });\n    const mergeWith = base => mergeWithThunk(constant$1(base));\n\n    const mergeValues$1 = (values, base) => values.length > 0 ? SimpleResult.svalue(deepMerge(base, merge$1.apply(undefined, values))) : SimpleResult.svalue(base);\n    const mergeErrors$1 = errors => compose(SimpleResult.serror, flatten)(errors);\n    const consolidateObj = (objects, base) => {\n      const partition = SimpleResult.partition(objects);\n      return partition.errors.length > 0 ? mergeErrors$1(partition.errors) : mergeValues$1(partition.values, base);\n    };\n    const consolidateArr = objects => {\n      const partitions = SimpleResult.partition(objects);\n      return partitions.errors.length > 0 ? mergeErrors$1(partitions.errors) : SimpleResult.svalue(partitions.values);\n    };\n    const ResultCombine = {\n      consolidateObj,\n      consolidateArr\n    };\n\n    const formatObj = input => {\n      return isObject(input) && keys(input).length > 100 ? ' removed due to size' : JSON.stringify(input, null, 2);\n    };\n    const formatErrors = errors => {\n      const es = errors.length > 10 ? errors.slice(0, 10).concat([{\n          path: [],\n          getErrorInfo: constant$1('... (only showing first ten failures)')\n        }]) : errors;\n      return map$2(es, e => {\n        return 'Failed path: (' + e.path.join(' > ') + ')\\n' + e.getErrorInfo();\n      });\n    };\n\n    const nu$a = (path, getErrorInfo) => {\n      return SimpleResult.serror([{\n          path,\n          getErrorInfo\n        }]);\n    };\n    const missingRequired = (path, key, obj) => nu$a(path, () => 'Could not find valid *required* value for \"' + key + '\" in ' + formatObj(obj));\n    const missingKey = (path, key) => nu$a(path, () => 'Choice schema did not contain choice key: \"' + key + '\"');\n    const missingBranch = (path, branches, branch) => nu$a(path, () => 'The chosen schema: \"' + branch + '\" did not exist in branches: ' + formatObj(branches));\n    const unsupportedFields = (path, unsupported) => nu$a(path, () => 'There are unsupported fields: [' + unsupported.join(', ') + '] specified');\n    const custom = (path, err) => nu$a(path, constant$1(err));\n\n    const value$3 = validator => {\n      const extract = (path, val) => {\n        return SimpleResult.bindError(validator(val), err => custom(path, err));\n      };\n      const toString = constant$1('val');\n      return {\n        extract,\n        toString\n      };\n    };\n    const anyValue$1 = value$3(SimpleResult.svalue);\n\n    const requiredAccess = (path, obj, key, bundle) => get$g(obj, key).fold(() => missingRequired(path, key, obj), bundle);\n    const fallbackAccess = (obj, key, fallback, bundle) => {\n      const v = get$g(obj, key).getOrThunk(() => fallback(obj));\n      return bundle(v);\n    };\n    const optionAccess = (obj, key, bundle) => bundle(get$g(obj, key));\n    const optionDefaultedAccess = (obj, key, fallback, bundle) => {\n      const opt = get$g(obj, key).map(val => val === true ? fallback(obj) : val);\n      return bundle(opt);\n    };\n    const extractField = (field, path, obj, key, prop) => {\n      const bundle = av => prop.extract(path.concat([key]), av);\n      const bundleAsOption = optValue => optValue.fold(() => SimpleResult.svalue(Optional.none()), ov => {\n        const result = prop.extract(path.concat([key]), ov);\n        return SimpleResult.map(result, Optional.some);\n      });\n      switch (field.tag) {\n      case 'required':\n        return requiredAccess(path, obj, key, bundle);\n      case 'defaultedThunk':\n        return fallbackAccess(obj, key, field.process, bundle);\n      case 'option':\n        return optionAccess(obj, key, bundleAsOption);\n      case 'defaultedOptionThunk':\n        return optionDefaultedAccess(obj, key, field.process, bundleAsOption);\n      case 'mergeWithThunk': {\n          return fallbackAccess(obj, key, constant$1({}), v => {\n            const result = deepMerge(field.process(obj), v);\n            return bundle(result);\n          });\n        }\n      }\n    };\n    const extractFields = (path, obj, fields) => {\n      const success = {};\n      const errors = [];\n      for (const field of fields) {\n        fold(field, (key, newKey, presence, prop) => {\n          const result = extractField(presence, path, obj, key, prop);\n          SimpleResult.fold(result, err => {\n            errors.push(...err);\n          }, res => {\n            success[newKey] = res;\n          });\n        }, (newKey, instantiator) => {\n          success[newKey] = instantiator(obj);\n        });\n      }\n      return errors.length > 0 ? SimpleResult.serror(errors) : SimpleResult.svalue(success);\n    };\n    const valueThunk = getDelegate => {\n      const extract = (path, val) => getDelegate().extract(path, val);\n      const toString = () => getDelegate().toString();\n      return {\n        extract,\n        toString\n      };\n    };\n    const getSetKeys = obj => keys(filter$1(obj, isNonNullable));\n    const objOfOnly = fields => {\n      const delegate = objOf(fields);\n      const fieldNames = foldr(fields, (acc, value) => {\n        return fold(value, key => deepMerge(acc, { [key]: true }), constant$1(acc));\n      }, {});\n      const extract = (path, o) => {\n        const keys = isBoolean(o) ? [] : getSetKeys(o);\n        const extra = filter$2(keys, k => !hasNonNullableKey(fieldNames, k));\n        return extra.length === 0 ? delegate.extract(path, o) : unsupportedFields(path, extra);\n      };\n      return {\n        extract,\n        toString: delegate.toString\n      };\n    };\n    const objOf = values => {\n      const extract = (path, o) => extractFields(path, o, values);\n      const toString = () => {\n        const fieldStrings = map$2(values, value => fold(value, (key, _okey, _presence, prop) => key + ' -> ' + prop.toString(), (newKey, _instantiator) => 'state(' + newKey + ')'));\n        return 'obj{\\n' + fieldStrings.join('\\n') + '}';\n      };\n      return {\n        extract,\n        toString\n      };\n    };\n    const arrOf = prop => {\n      const extract = (path, array) => {\n        const results = map$2(array, (a, i) => prop.extract(path.concat(['[' + i + ']']), a));\n        return ResultCombine.consolidateArr(results);\n      };\n      const toString = () => 'array(' + prop.toString() + ')';\n      return {\n        extract,\n        toString\n      };\n    };\n    const oneOf = (props, rawF) => {\n      const f = rawF !== undefined ? rawF : identity;\n      const extract = (path, val) => {\n        const errors = [];\n        for (const prop of props) {\n          const res = prop.extract(path, val);\n          if (res.stype === SimpleResultType.Value) {\n            return {\n              stype: SimpleResultType.Value,\n              svalue: f(res.svalue)\n            };\n          }\n          errors.push(res);\n        }\n        return ResultCombine.consolidateArr(errors);\n      };\n      const toString = () => 'oneOf(' + map$2(props, prop => prop.toString()).join(', ') + ')';\n      return {\n        extract,\n        toString\n      };\n    };\n    const setOf$1 = (validator, prop) => {\n      const validateKeys = (path, keys) => arrOf(value$3(validator)).extract(path, keys);\n      const extract = (path, o) => {\n        const keys$1 = keys(o);\n        const validatedKeys = validateKeys(path, keys$1);\n        return SimpleResult.bind(validatedKeys, validKeys => {\n          const schema = map$2(validKeys, vk => {\n            return field$2(vk, vk, required$2(), prop);\n          });\n          return objOf(schema).extract(path, o);\n        });\n      };\n      const toString = () => 'setOf(' + prop.toString() + ')';\n      return {\n        extract,\n        toString\n      };\n    };\n    const thunk = (_desc, processor) => {\n      const getP = cached(processor);\n      const extract = (path, val) => getP().extract(path, val);\n      const toString = () => getP().toString();\n      return {\n        extract,\n        toString\n      };\n    };\n    const arrOfObj = compose(arrOf, objOf);\n\n    const anyValue = constant$1(anyValue$1);\n    const typedValue = (validator, expectedType) => value$3(a => {\n      const actualType = typeof a;\n      return validator(a) ? SimpleResult.svalue(a) : SimpleResult.serror(`Expected type: ${ expectedType } but got: ${ actualType }`);\n    });\n    const number = typedValue(isNumber, 'number');\n    const string = typedValue(isString, 'string');\n    const boolean = typedValue(isBoolean, 'boolean');\n    const functionProcessor = typedValue(isFunction, 'function');\n    const isPostMessageable = val => {\n      if (Object(val) !== val) {\n        return true;\n      }\n      switch ({}.toString.call(val).slice(8, -1)) {\n      case 'Boolean':\n      case 'Number':\n      case 'String':\n      case 'Date':\n      case 'RegExp':\n      case 'Blob':\n      case 'FileList':\n      case 'ImageData':\n      case 'ImageBitmap':\n      case 'ArrayBuffer':\n        return true;\n      case 'Array':\n      case 'Object':\n        return Object.keys(val).every(prop => isPostMessageable(val[prop]));\n      default:\n        return false;\n      }\n    };\n    const postMessageable = value$3(a => {\n      if (isPostMessageable(a)) {\n        return SimpleResult.svalue(a);\n      } else {\n        return SimpleResult.serror('Expected value to be acceptable for sending via postMessage');\n      }\n    });\n\n    const chooseFrom = (path, input, branches, ch) => {\n      const fields = get$g(branches, ch);\n      return fields.fold(() => missingBranch(path, branches, ch), vp => vp.extract(path.concat(['branch: ' + ch]), input));\n    };\n    const choose$2 = (key, branches) => {\n      const extract = (path, input) => {\n        const choice = get$g(input, key);\n        return choice.fold(() => missingKey(path, key), chosen => chooseFrom(path, input, branches, chosen));\n      };\n      const toString = () => 'chooseOn(' + key + '). Possible values: ' + keys(branches);\n      return {\n        extract,\n        toString\n      };\n    };\n\n    const arrOfVal = () => arrOf(anyValue$1);\n    const valueOf = validator => value$3(v => validator(v).fold(SimpleResult.serror, SimpleResult.svalue));\n    const setOf = (validator, prop) => setOf$1(v => SimpleResult.fromResult(validator(v)), prop);\n    const extractValue = (label, prop, obj) => {\n      const res = prop.extract([label], obj);\n      return SimpleResult.mapError(res, errs => ({\n        input: obj,\n        errors: errs\n      }));\n    };\n    const asRaw = (label, prop, obj) => SimpleResult.toResult(extractValue(label, prop, obj));\n    const getOrDie = extraction => {\n      return extraction.fold(errInfo => {\n        throw new Error(formatError(errInfo));\n      }, identity);\n    };\n    const asRawOrDie$1 = (label, prop, obj) => getOrDie(asRaw(label, prop, obj));\n    const formatError = errInfo => {\n      return 'Errors: \\n' + formatErrors(errInfo.errors).join('\\n') + '\\n\\nInput object: ' + formatObj(errInfo.input);\n    };\n    const choose$1 = (key, branches) => choose$2(key, map$1(branches, objOf));\n    const thunkOf = (desc, schema) => thunk(desc, schema);\n\n    const field$1 = field$2;\n    const customField = customField$1;\n    const validateEnum = values => valueOf(value => contains$2(values, value) ? Result.value(value) : Result.error(`Unsupported value: \"${ value }\", choose one of \"${ values.join(', ') }\".`));\n    const required$1 = key => field$1(key, key, required$2(), anyValue());\n    const requiredOf = (key, schema) => field$1(key, key, required$2(), schema);\n    const requiredNumber = key => requiredOf(key, number);\n    const requiredString = key => requiredOf(key, string);\n    const requiredStringEnum = (key, values) => field$1(key, key, required$2(), validateEnum(values));\n    const requiredBoolean = key => requiredOf(key, boolean);\n    const requiredFunction = key => requiredOf(key, functionProcessor);\n    const forbid = (key, message) => field$1(key, key, asOption(), value$3(_v => SimpleResult.serror('The field: ' + key + ' is forbidden. ' + message)));\n    const requiredObjOf = (key, objSchema) => field$1(key, key, required$2(), objOf(objSchema));\n    const requiredArrayOfObj = (key, objFields) => field$1(key, key, required$2(), arrOfObj(objFields));\n    const requiredArrayOf = (key, schema) => field$1(key, key, required$2(), arrOf(schema));\n    const option$3 = key => field$1(key, key, asOption(), anyValue());\n    const optionOf = (key, schema) => field$1(key, key, asOption(), schema);\n    const optionNumber = key => optionOf(key, number);\n    const optionString = key => optionOf(key, string);\n    const optionStringEnum = (key, values) => optionOf(key, validateEnum(values));\n    const optionFunction = key => optionOf(key, functionProcessor);\n    const optionArrayOf = (key, schema) => optionOf(key, arrOf(schema));\n    const optionObjOf = (key, objSchema) => optionOf(key, objOf(objSchema));\n    const optionObjOfOnly = (key, objSchema) => optionOf(key, objOfOnly(objSchema));\n    const defaulted = (key, fallback) => field$1(key, key, defaulted$1(fallback), anyValue());\n    const defaultedOf = (key, fallback, schema) => field$1(key, key, defaulted$1(fallback), schema);\n    const defaultedNumber = (key, fallback) => defaultedOf(key, fallback, number);\n    const defaultedString = (key, fallback) => defaultedOf(key, fallback, string);\n    const defaultedStringEnum = (key, fallback, values) => defaultedOf(key, fallback, validateEnum(values));\n    const defaultedBoolean = (key, fallback) => defaultedOf(key, fallback, boolean);\n    const defaultedFunction = (key, fallback) => defaultedOf(key, fallback, functionProcessor);\n    const defaultedPostMsg = (key, fallback) => defaultedOf(key, fallback, postMessageable);\n    const defaultedArrayOf = (key, fallback, schema) => defaultedOf(key, fallback, arrOf(schema));\n    const defaultedObjOf = (key, fallback, objSchema) => defaultedOf(key, fallback, objOf(objSchema));\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 generate$7 = 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$1(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: generate$7 };\n\n    Adt.generate([\n      {\n        bothErrors: [\n          'error1',\n          'error2'\n        ]\n      },\n      {\n        firstError: [\n          'error1',\n          'value2'\n        ]\n      },\n      {\n        secondError: [\n          'value1',\n          'error2'\n        ]\n      },\n      {\n        bothValues: [\n          'value1',\n          'value2'\n        ]\n      }\n    ]);\n    const partition$1 = results => {\n      const errors = [];\n      const values = [];\n      each$1(results, result => {\n        result.fold(err => {\n          errors.push(err);\n        }, value => {\n          values.push(value);\n        });\n      });\n      return {\n        errors,\n        values\n      };\n    };\n\n    const exclude$1 = (obj, fields) => {\n      const r = {};\n      each(obj, (v, k) => {\n        if (!contains$2(fields, k)) {\n          r[k] = v;\n        }\n      });\n      return r;\n    };\n\n    const wrap$2 = (key, value) => ({ [key]: value });\n    const wrapAll$1 = keyvalues => {\n      const r = {};\n      each$1(keyvalues, kv => {\n        r[kv.key] = kv.value;\n      });\n      return r;\n    };\n\n    const exclude = (obj, fields) => exclude$1(obj, fields);\n    const wrap$1 = (key, value) => wrap$2(key, value);\n    const wrapAll = keyvalues => wrapAll$1(keyvalues);\n    const mergeValues = (values, base) => {\n      return values.length === 0 ? Result.value(base) : Result.value(deepMerge(base, merge$1.apply(undefined, values)));\n    };\n    const mergeErrors = errors => Result.error(flatten(errors));\n    const consolidate = (objs, base) => {\n      const partitions = partition$1(objs);\n      return partitions.errors.length > 0 ? mergeErrors(partitions.errors) : mergeValues(partitions.values, base);\n    };\n\n    const ensureIsRoot = isRoot => isFunction(isRoot) ? isRoot : never;\n    const ancestor$2 = (scope, transform, isRoot) => {\n      let element = scope.dom;\n      const stop = ensureIsRoot(isRoot);\n      while (element.parentNode) {\n        element = element.parentNode;\n        const el = SugarElement.fromDom(element);\n        const transformed = transform(el);\n        if (transformed.isSome()) {\n          return transformed;\n        } else if (stop(el)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const closest$4 = (scope, transform, isRoot) => {\n      const current = transform(scope);\n      const stop = ensureIsRoot(isRoot);\n      return current.orThunk(() => stop(scope) ? Optional.none() : ancestor$2(scope, transform, stop));\n    };\n\n    const isSource = (component, simulatedEvent) => eq(component.element, simulatedEvent.event.target);\n\n    const defaultEventHandler = {\n      can: always,\n      abort: never,\n      run: noop\n    };\n    const nu$9 = parts => {\n      if (!hasNonNullableKey(parts, 'can') && !hasNonNullableKey(parts, 'abort') && !hasNonNullableKey(parts, 'run')) {\n        throw new Error('EventHandler defined by: ' + JSON.stringify(parts, null, 2) + ' does not have can, abort, or run!');\n      }\n      return {\n        ...defaultEventHandler,\n        ...parts\n      };\n    };\n    const all$2 = (handlers, f) => (...args) => foldl(handlers, (acc, handler) => acc && f(handler).apply(undefined, args), true);\n    const any = (handlers, f) => (...args) => foldl(handlers, (acc, handler) => acc || f(handler).apply(undefined, args), false);\n    const read$2 = handler => isFunction(handler) ? {\n      can: always,\n      abort: never,\n      run: handler\n    } : handler;\n    const fuse$1 = handlers => {\n      const can = all$2(handlers, handler => handler.can);\n      const abort = any(handlers, handler => handler.abort);\n      const run = (...args) => {\n        each$1(handlers, handler => {\n          handler.run.apply(undefined, args);\n        });\n      };\n      return {\n        can,\n        abort,\n        run\n      };\n    };\n\n    const constant = constant$1;\n    const touchstart = constant('touchstart');\n    const touchmove = constant('touchmove');\n    const touchend = constant('touchend');\n    const touchcancel = constant('touchcancel');\n    const mousedown = constant('mousedown');\n    const mousemove = constant('mousemove');\n    const mouseout = constant('mouseout');\n    const mouseup = constant('mouseup');\n    const mouseover = constant('mouseover');\n    const focusin = constant('focusin');\n    const focusout = constant('focusout');\n    const keydown = constant('keydown');\n    const keyup = constant('keyup');\n    const input = constant('input');\n    const change = constant('change');\n    const click = constant('click');\n    const transitioncancel = constant('transitioncancel');\n    const transitionend = constant('transitionend');\n    const transitionstart = constant('transitionstart');\n    const selectstart = constant('selectstart');\n\n    const prefixName = name => constant$1('alloy.' + name);\n    const alloy = { tap: prefixName('tap') };\n    const focus$4 = prefixName('focus');\n    const postBlur = prefixName('blur.post');\n    const postPaste = prefixName('paste.post');\n    const receive = prefixName('receive');\n    const execute$5 = prefixName('execute');\n    const focusItem = prefixName('focus.item');\n    const tap = alloy.tap;\n    const longpress = prefixName('longpress');\n    const sandboxClose = prefixName('sandbox.close');\n    const typeaheadCancel = prefixName('typeahead.cancel');\n    const systemInit = prefixName('system.init');\n    const documentTouchmove = prefixName('system.touchmove');\n    const documentTouchend = prefixName('system.touchend');\n    const windowScroll = prefixName('system.scroll');\n    const windowResize = prefixName('system.resize');\n    const attachedToDom = prefixName('system.attached');\n    const detachedFromDom = prefixName('system.detached');\n    const dismissRequested = prefixName('system.dismissRequested');\n    const repositionRequested = prefixName('system.repositionRequested');\n    const focusShifted = prefixName('focusmanager.shifted');\n    const slotVisibility = prefixName('slotcontainer.visibility');\n    const externalElementScroll = prefixName('system.external.element.scroll');\n    const changeTab = prefixName('change.tab');\n    const dismissTab = prefixName('dismiss.tab');\n    const highlight$1 = prefixName('highlight');\n    const dehighlight$1 = prefixName('dehighlight');\n\n    const emit = (component, event) => {\n      dispatchWith(component, component.element, event, {});\n    };\n    const emitWith = (component, event, properties) => {\n      dispatchWith(component, component.element, event, properties);\n    };\n    const emitExecute = component => {\n      emit(component, execute$5());\n    };\n    const dispatch = (component, target, event) => {\n      dispatchWith(component, target, event, {});\n    };\n    const dispatchWith = (component, target, event, properties) => {\n      const data = {\n        target,\n        ...properties\n      };\n      component.getSystem().triggerEvent(event, target, data);\n    };\n    const retargetAndDispatchWith = (component, target, eventName, properties) => {\n      const data = {\n        ...properties,\n        target\n      };\n      component.getSystem().triggerEvent(eventName, target, data);\n    };\n    const dispatchEvent = (component, target, event, simulatedEvent) => {\n      component.getSystem().triggerEvent(event, target, simulatedEvent.event);\n    };\n\n    const derive$2 = configs => wrapAll(configs);\n    const abort = (name, predicate) => {\n      return {\n        key: name,\n        value: nu$9({ abort: predicate })\n      };\n    };\n    const can = (name, predicate) => {\n      return {\n        key: name,\n        value: nu$9({ can: predicate })\n      };\n    };\n    const preventDefault = name => {\n      return {\n        key: name,\n        value: nu$9({\n          run: (component, simulatedEvent) => {\n            simulatedEvent.event.prevent();\n          }\n        })\n      };\n    };\n    const run$1 = (name, handler) => {\n      return {\n        key: name,\n        value: nu$9({ run: handler })\n      };\n    };\n    const runActionExtra = (name, action, extra) => {\n      return {\n        key: name,\n        value: nu$9({\n          run: (component, simulatedEvent) => {\n            action.apply(undefined, [\n              component,\n              simulatedEvent\n            ].concat(extra));\n          }\n        })\n      };\n    };\n    const runOnName = name => {\n      return handler => run$1(name, handler);\n    };\n    const runOnSourceName = name => {\n      return handler => ({\n        key: name,\n        value: nu$9({\n          run: (component, simulatedEvent) => {\n            if (isSource(component, simulatedEvent)) {\n              handler(component, simulatedEvent);\n            }\n          }\n        })\n      });\n    };\n    const redirectToUid = (name, uid) => {\n      return run$1(name, (component, simulatedEvent) => {\n        component.getSystem().getByUid(uid).each(redirectee => {\n          dispatchEvent(redirectee, redirectee.element, name, simulatedEvent);\n        });\n      });\n    };\n    const redirectToPart = (name, detail, partName) => {\n      const uid = detail.partUids[partName];\n      return redirectToUid(name, uid);\n    };\n    const runWithTarget = (name, f) => {\n      return run$1(name, (component, simulatedEvent) => {\n        const ev = simulatedEvent.event;\n        const target = component.getSystem().getByDom(ev.target).getOrThunk(() => {\n          const closest = closest$4(ev.target, el => component.getSystem().getByDom(el).toOptional(), never);\n          return closest.getOr(component);\n        });\n        f(component, target, simulatedEvent);\n      });\n    };\n    const cutter = name => {\n      return run$1(name, (component, simulatedEvent) => {\n        simulatedEvent.cut();\n      });\n    };\n    const stopper = name => {\n      return run$1(name, (component, simulatedEvent) => {\n        simulatedEvent.stop();\n      });\n    };\n    const runOnSource = (name, f) => {\n      return runOnSourceName(name)(f);\n    };\n    const runOnAttached = runOnSourceName(attachedToDom());\n    const runOnDetached = runOnSourceName(detachedFromDom());\n    const runOnInit = runOnSourceName(systemInit());\n    const runOnExecute$1 = runOnName(execute$5());\n\n    const fromHtml$1 = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      return children(SugarElement.fromDom(div));\n    };\n\n    const get$9 = element => element.dom.innerHTML;\n    const set$6 = (element, content) => {\n      const owner = owner$4(element);\n      const docDom = owner.dom;\n      const fragment = SugarElement.fromDom(docDom.createDocumentFragment());\n      const contentElements = fromHtml$1(content, docDom);\n      append$1(fragment, contentElements);\n      empty(element);\n      append$2(element, fragment);\n    };\n    const getOuter = element => {\n      const container = SugarElement.fromTag('div');\n      const clone = SugarElement.fromDom(element.dom.cloneNode(true));\n      append$2(container, clone);\n      return get$9(container);\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\n    const getHtml = element => {\n      if (isShadowRoot(element)) {\n        return '#shadow-root';\n      } else {\n        const clone = shallow(element);\n        return getOuter(clone);\n      }\n    };\n\n    const element = elem => getHtml(elem);\n\n    const isRecursive = (component, originator, target) => eq(originator, component.element) && !eq(originator, target);\n    const events$i = derive$2([can(focus$4(), (component, simulatedEvent) => {\n        const event = simulatedEvent.event;\n        const originator = event.originator;\n        const target = event.target;\n        if (isRecursive(component, originator, target)) {\n          console.warn(focus$4() + ' did not get interpreted by the desired target. ' + '\\nOriginator: ' + element(originator) + '\\nTarget: ' + element(target) + '\\nCheck the ' + focus$4() + ' event handlers');\n          return false;\n        } else {\n          return true;\n        }\n      })]);\n\n    var DefaultEvents = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        events: events$i\n    });\n\n    let unique = 0;\n    const generate$6 = prefix => {\n      const date = new Date();\n      const time = date.getTime();\n      const random = Math.floor(Math.random() * 1000000000);\n      unique++;\n      return prefix + '_' + random + unique + String(time);\n    };\n\n    const prefix$1 = constant$1('alloy-id-');\n    const idAttr$1 = constant$1('data-alloy-id');\n\n    const prefix = prefix$1();\n    const idAttr = idAttr$1();\n    const write = (label, elem) => {\n      const id = generate$6(prefix + label);\n      writeOnly(elem, id);\n      return id;\n    };\n    const writeOnly = (elem, uid) => {\n      Object.defineProperty(elem.dom, idAttr, {\n        value: uid,\n        writable: true\n      });\n    };\n    const read$1 = elem => {\n      const id = isElement$1(elem) ? elem.dom[idAttr] : null;\n      return Optional.from(id);\n    };\n    const generate$5 = prefix => generate$6(prefix);\n\n    const make$8 = identity;\n\n    const NoContextApi = getComp => {\n      const getMessage = event => `The component must be in a context to execute: ${ event }` + (getComp ? '\\n' + element(getComp().element) + ' is not in context.' : '');\n      const fail = event => () => {\n        throw new Error(getMessage(event));\n      };\n      const warn = event => () => {\n        console.warn(getMessage(event));\n      };\n      return {\n        debugInfo: constant$1('fake'),\n        triggerEvent: warn('triggerEvent'),\n        triggerFocus: warn('triggerFocus'),\n        triggerEscape: warn('triggerEscape'),\n        broadcast: warn('broadcast'),\n        broadcastOn: warn('broadcastOn'),\n        broadcastEvent: warn('broadcastEvent'),\n        build: fail('build'),\n        buildOrPatch: fail('buildOrPatch'),\n        addToWorld: fail('addToWorld'),\n        removeFromWorld: fail('removeFromWorld'),\n        addToGui: fail('addToGui'),\n        removeFromGui: fail('removeFromGui'),\n        getByUid: fail('getByUid'),\n        getByDom: fail('getByDom'),\n        isConnected: never\n      };\n    };\n    const singleton$1 = NoContextApi();\n\n    const markAsBehaviourApi = (f, apiName, apiFunction) => {\n      const delegate = apiFunction.toString();\n      const endIndex = delegate.indexOf(')') + 1;\n      const openBracketIndex = delegate.indexOf('(');\n      const parameters = delegate.substring(openBracketIndex + 1, endIndex - 1).split(/,\\s*/);\n      f.toFunctionAnnotation = () => ({\n        name: apiName,\n        parameters: cleanParameters(parameters.slice(0, 1).concat(parameters.slice(3)))\n      });\n      return f;\n    };\n    const cleanParameters = parameters => map$2(parameters, p => endsWith(p, '/*') ? p.substring(0, p.length - '/*'.length) : p);\n    const markAsExtraApi = (f, extraName) => {\n      const delegate = f.toString();\n      const endIndex = delegate.indexOf(')') + 1;\n      const openBracketIndex = delegate.indexOf('(');\n      const parameters = delegate.substring(openBracketIndex + 1, endIndex - 1).split(/,\\s*/);\n      f.toFunctionAnnotation = () => ({\n        name: extraName,\n        parameters: cleanParameters(parameters)\n      });\n      return f;\n    };\n    const markAsSketchApi = (f, apiFunction) => {\n      const delegate = apiFunction.toString();\n      const endIndex = delegate.indexOf(')') + 1;\n      const openBracketIndex = delegate.indexOf('(');\n      const parameters = delegate.substring(openBracketIndex + 1, endIndex - 1).split(/,\\s*/);\n      f.toFunctionAnnotation = () => ({\n        name: 'OVERRIDE',\n        parameters: cleanParameters(parameters.slice(1))\n      });\n      return f;\n    };\n\n    const premadeTag = generate$6('alloy-premade');\n    const premade$1 = comp => {\n      Object.defineProperty(comp.element.dom, premadeTag, {\n        value: comp.uid,\n        writable: true\n      });\n      return wrap$1(premadeTag, comp);\n    };\n    const isPremade = element => has$2(element.dom, premadeTag);\n    const getPremade = spec => get$g(spec, premadeTag);\n    const makeApi = f => markAsSketchApi((component, ...rest) => f(component.getApis(), component, ...rest), f);\n\n    const NoState = { init: () => nu$8({ readState: constant$1('No State required') }) };\n    const nu$8 = spec => spec;\n\n    const generateFrom$1 = (spec, all) => {\n      const schema = map$2(all, a => optionObjOf(a.name(), [\n        required$1('config'),\n        defaulted('state', NoState)\n      ]));\n      const validated = asRaw('component.behaviours', objOf(schema), spec.behaviours).fold(errInfo => {\n        throw new Error(formatError(errInfo) + '\\nComplete spec:\\n' + JSON.stringify(spec, null, 2));\n      }, identity);\n      return {\n        list: all,\n        data: map$1(validated, optBlobThunk => {\n          const output = optBlobThunk.map(blob => ({\n            config: blob.config,\n            state: blob.state.init(blob.config)\n          }));\n          return constant$1(output);\n        })\n      };\n    };\n    const getBehaviours$3 = bData => bData.list;\n    const getData$2 = bData => bData.data;\n\n    const byInnerKey = (data, tuple) => {\n      const r = {};\n      each(data, (detail, key) => {\n        each(detail, (value, indexKey) => {\n          const chain = get$g(r, indexKey).getOr([]);\n          r[indexKey] = chain.concat([tuple(key, value)]);\n        });\n      });\n      return r;\n    };\n\n    const nu$7 = s => ({\n      classes: isUndefined(s.classes) ? [] : s.classes,\n      attributes: isUndefined(s.attributes) ? {} : s.attributes,\n      styles: isUndefined(s.styles) ? {} : s.styles\n    });\n    const merge = (defnA, mod) => ({\n      ...defnA,\n      attributes: {\n        ...defnA.attributes,\n        ...mod.attributes\n      },\n      styles: {\n        ...defnA.styles,\n        ...mod.styles\n      },\n      classes: defnA.classes.concat(mod.classes)\n    });\n\n    const combine$2 = (info, baseMod, behaviours, base) => {\n      const modsByBehaviour = { ...baseMod };\n      each$1(behaviours, behaviour => {\n        modsByBehaviour[behaviour.name()] = behaviour.exhibit(info, base);\n      });\n      const byAspect = byInnerKey(modsByBehaviour, (name, modification) => ({\n        name,\n        modification\n      }));\n      const combineObjects = objects => foldr(objects, (b, a) => ({\n        ...a.modification,\n        ...b\n      }), {});\n      const combinedClasses = foldr(byAspect.classes, (b, a) => a.modification.concat(b), []);\n      const combinedAttributes = combineObjects(byAspect.attributes);\n      const combinedStyles = combineObjects(byAspect.styles);\n      return nu$7({\n        classes: combinedClasses,\n        attributes: combinedAttributes,\n        styles: combinedStyles\n      });\n    };\n\n    const sortKeys = (label, keyName, array, order) => {\n      try {\n        const sorted = sort(array, (a, b) => {\n          const aKey = a[keyName];\n          const bKey = b[keyName];\n          const aIndex = order.indexOf(aKey);\n          const bIndex = order.indexOf(bKey);\n          if (aIndex === -1) {\n            throw new Error('The ordering for ' + label + ' does not have an entry for ' + aKey + '.\\nOrder specified: ' + JSON.stringify(order, null, 2));\n          }\n          if (bIndex === -1) {\n            throw new Error('The ordering for ' + label + ' does not have an entry for ' + bKey + '.\\nOrder specified: ' + JSON.stringify(order, null, 2));\n          }\n          if (aIndex < bIndex) {\n            return -1;\n          } else if (bIndex < aIndex) {\n            return 1;\n          } else {\n            return 0;\n          }\n        });\n        return Result.value(sorted);\n      } catch (err) {\n        return Result.error([err]);\n      }\n    };\n\n    const uncurried = (handler, purpose) => ({\n      handler,\n      purpose\n    });\n    const curried = (handler, purpose) => ({\n      cHandler: handler,\n      purpose\n    });\n    const curryArgs = (descHandler, extraArgs) => curried(curry.apply(undefined, [descHandler.handler].concat(extraArgs)), descHandler.purpose);\n    const getCurried = descHandler => descHandler.cHandler;\n\n    const behaviourTuple = (name, handler) => ({\n      name,\n      handler\n    });\n    const nameToHandlers = (behaviours, info) => {\n      const r = {};\n      each$1(behaviours, behaviour => {\n        r[behaviour.name()] = behaviour.handlers(info);\n      });\n      return r;\n    };\n    const groupByEvents = (info, behaviours, base) => {\n      const behaviourEvents = {\n        ...base,\n        ...nameToHandlers(behaviours, info)\n      };\n      return byInnerKey(behaviourEvents, behaviourTuple);\n    };\n    const combine$1 = (info, eventOrder, behaviours, base) => {\n      const byEventName = groupByEvents(info, behaviours, base);\n      return combineGroups(byEventName, eventOrder);\n    };\n    const assemble = rawHandler => {\n      const handler = read$2(rawHandler);\n      return (component, simulatedEvent, ...rest) => {\n        const args = [\n          component,\n          simulatedEvent\n        ].concat(rest);\n        if (handler.abort.apply(undefined, args)) {\n          simulatedEvent.stop();\n        } else if (handler.can.apply(undefined, args)) {\n          handler.run.apply(undefined, args);\n        }\n      };\n    };\n    const missingOrderError = (eventName, tuples) => Result.error(['The event (' + eventName + ') has more than one behaviour that listens to it.\\nWhen this occurs, you must ' + 'specify an event ordering for the behaviours in your spec (e.g. [ \"listing\", \"toggling\" ]).\\nThe behaviours that ' + 'can trigger it are: ' + JSON.stringify(map$2(tuples, c => c.name), null, 2)]);\n    const fuse = (tuples, eventOrder, eventName) => {\n      const order = eventOrder[eventName];\n      if (!order) {\n        return missingOrderError(eventName, tuples);\n      } else {\n        return sortKeys('Event: ' + eventName, 'name', tuples, order).map(sortedTuples => {\n          const handlers = map$2(sortedTuples, tuple => tuple.handler);\n          return fuse$1(handlers);\n        });\n      }\n    };\n    const combineGroups = (byEventName, eventOrder) => {\n      const r = mapToArray(byEventName, (tuples, eventName) => {\n        const combined = tuples.length === 1 ? Result.value(tuples[0].handler) : fuse(tuples, eventOrder, eventName);\n        return combined.map(handler => {\n          const assembled = assemble(handler);\n          const purpose = tuples.length > 1 ? filter$2(eventOrder[eventName], o => exists(tuples, t => t.name === o)).join(' > ') : tuples[0].name;\n          return wrap$1(eventName, uncurried(assembled, purpose));\n        });\n      });\n      return consolidate(r, {});\n    };\n\n    const baseBehaviour = 'alloy.base.behaviour';\n    const schema$z = objOf([\n      field$1('dom', 'dom', required$2(), objOf([\n        required$1('tag'),\n        defaulted('styles', {}),\n        defaulted('classes', []),\n        defaulted('attributes', {}),\n        option$3('value'),\n        option$3('innerHtml')\n      ])),\n      required$1('components'),\n      required$1('uid'),\n      defaulted('events', {}),\n      defaulted('apis', {}),\n      field$1('eventOrder', 'eventOrder', mergeWith({\n        [execute$5()]: [\n          'disabling',\n          baseBehaviour,\n          'toggling',\n          'typeaheadevents'\n        ],\n        [focus$4()]: [\n          baseBehaviour,\n          'focusing',\n          'keying'\n        ],\n        [systemInit()]: [\n          baseBehaviour,\n          'disabling',\n          'toggling',\n          'representing'\n        ],\n        [input()]: [\n          baseBehaviour,\n          'representing',\n          'streaming',\n          'invalidating'\n        ],\n        [detachedFromDom()]: [\n          baseBehaviour,\n          'representing',\n          'item-events',\n          'tooltipping'\n        ],\n        [mousedown()]: [\n          'focusing',\n          baseBehaviour,\n          'item-type-events'\n        ],\n        [touchstart()]: [\n          'focusing',\n          baseBehaviour,\n          'item-type-events'\n        ],\n        [mouseover()]: [\n          'item-type-events',\n          'tooltipping'\n        ],\n        [receive()]: [\n          'receiving',\n          'reflecting',\n          'tooltipping'\n        ]\n      }), anyValue()),\n      option$3('domModification')\n    ]);\n    const toInfo = spec => asRaw('custom.definition', schema$z, spec);\n    const toDefinition = detail => ({\n      ...detail.dom,\n      uid: detail.uid,\n      domChildren: map$2(detail.components, comp => comp.element)\n    });\n    const toModification = detail => detail.domModification.fold(() => nu$7({}), nu$7);\n    const toEvents = info => info.events;\n\n    const read = (element, attr) => {\n      const value = get$f(element, attr);\n      return value === undefined || value === '' ? [] : value.split(' ');\n    };\n    const add$4 = (element, attr, id) => {\n      const old = read(element, attr);\n      const nu = old.concat([id]);\n      set$9(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$9(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$8 = element => read(element, 'class');\n    const add$3 = (element, clazz) => add$4(element, 'class', clazz);\n    const remove$3 = (element, clazz) => remove$4(element, 'class', clazz);\n    const toggle$5 = (element, clazz) => {\n      if (contains$2(get$8(element), clazz)) {\n        return remove$3(element, clazz);\n      } else {\n        return add$3(element, clazz);\n      }\n    };\n\n    const add$2 = (element, clazz) => {\n      if (supports(element)) {\n        element.dom.classList.add(clazz);\n      } else {\n        add$3(element, clazz);\n      }\n    };\n    const cleanClass = element => {\n      const classList = supports(element) ? element.dom.classList : get$8(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 toggle$4 = (element, clazz) => {\n      const result = supports(element) ? element.dom.classList.toggle(clazz) : toggle$5(element, clazz);\n      cleanClass(element);\n      return result;\n    };\n    const has = (element, clazz) => supports(element) && element.dom.classList.contains(clazz);\n\n    const add$1 = (element, classes) => {\n      each$1(classes, x => {\n        add$2(element, x);\n      });\n    };\n    const remove$1 = (element, classes) => {\n      each$1(classes, x => {\n        remove$2(element, x);\n      });\n    };\n    const toggle$3 = (element, classes) => {\n      each$1(classes, x => {\n        toggle$4(element, x);\n      });\n    };\n    const hasAll = (element, classes) => forall(classes, clazz => has(element, clazz));\n    const getNative = element => {\n      const classList = element.dom.classList;\n      const r = new Array(classList.length);\n      for (let i = 0; i < classList.length; i++) {\n        const item = classList.item(i);\n        if (item !== null) {\n          r[i] = item;\n        }\n      }\n      return r;\n    };\n    const get$7 = element => supports(element) ? getNative(element) : get$8(element);\n\n    const get$6 = element => element.dom.value;\n    const set$5 = (element, value) => {\n      if (value === undefined) {\n        throw new Error('Value.set was undefined');\n      }\n      element.dom.value = value;\n    };\n\n    const determineObsoleted = (parent, index, oldObsoleted) => {\n      const newObsoleted = child$2(parent, index);\n      return newObsoleted.map(newObs => {\n        const elemChanged = oldObsoleted.exists(o => !eq(o, newObs));\n        if (elemChanged) {\n          const oldTag = oldObsoleted.map(name$3).getOr('span');\n          const marker = SugarElement.fromTag(oldTag);\n          before$1(newObs, marker);\n          return marker;\n        } else {\n          return newObs;\n        }\n      });\n    };\n    const ensureInDom = (parent, child, obsoleted) => {\n      obsoleted.fold(() => append$2(parent, child), obs => {\n        if (!eq(obs, child)) {\n          before$1(obs, child);\n          remove$5(obs);\n        }\n      });\n    };\n    const patchChildrenWith = (parent, nu, f) => {\n      const builtChildren = map$2(nu, f);\n      const currentChildren = children(parent);\n      each$1(currentChildren.slice(builtChildren.length), remove$5);\n      return builtChildren;\n    };\n    const patchSpecChild = (parent, index, spec, build) => {\n      const oldObsoleted = child$2(parent, index);\n      const childComp = build(spec, oldObsoleted);\n      const obsoleted = determineObsoleted(parent, index, oldObsoleted);\n      ensureInDom(parent, childComp.element, obsoleted);\n      return childComp;\n    };\n    const patchSpecChildren = (parent, specs, build) => patchChildrenWith(parent, specs, (spec, index) => patchSpecChild(parent, index, spec, build));\n    const patchDomChildren = (parent, nodes) => patchChildrenWith(parent, nodes, (node, index) => {\n      const optObsoleted = child$2(parent, index);\n      ensureInDom(parent, node, optObsoleted);\n      return node;\n    });\n\n    const diffKeyValueSet = (newObj, oldObj) => {\n      const newKeys = keys(newObj);\n      const oldKeys = keys(oldObj);\n      const toRemove = difference(oldKeys, newKeys);\n      const toSet = bifilter(newObj, (v, k) => {\n        return !has$2(oldObj, k) || v !== oldObj[k];\n      }).t;\n      return {\n        toRemove,\n        toSet\n      };\n    };\n    const reconcileToDom = (definition, obsoleted) => {\n      const {\n        class: clazz,\n        style,\n        ...existingAttributes\n      } = clone$2(obsoleted);\n      const {\n        toSet: attrsToSet,\n        toRemove: attrsToRemove\n      } = diffKeyValueSet(definition.attributes, existingAttributes);\n      const updateAttrs = () => {\n        each$1(attrsToRemove, a => remove$7(obsoleted, a));\n        setAll$1(obsoleted, attrsToSet);\n      };\n      const existingStyles = getAllRaw(obsoleted);\n      const {\n        toSet: stylesToSet,\n        toRemove: stylesToRemove\n      } = diffKeyValueSet(definition.styles, existingStyles);\n      const updateStyles = () => {\n        each$1(stylesToRemove, s => remove$6(obsoleted, s));\n        setAll(obsoleted, stylesToSet);\n      };\n      const existingClasses = get$7(obsoleted);\n      const classesToRemove = difference(existingClasses, definition.classes);\n      const classesToAdd = difference(definition.classes, existingClasses);\n      const updateClasses = () => {\n        add$1(obsoleted, classesToAdd);\n        remove$1(obsoleted, classesToRemove);\n      };\n      const updateHtml = html => {\n        set$6(obsoleted, html);\n      };\n      const updateChildren = () => {\n        const children = definition.domChildren;\n        patchDomChildren(obsoleted, children);\n      };\n      const updateValue = () => {\n        const valueElement = obsoleted;\n        const value = definition.value.getOrUndefined();\n        if (value !== get$6(valueElement)) {\n          set$5(valueElement, value !== null && value !== void 0 ? value : '');\n        }\n      };\n      updateAttrs();\n      updateClasses();\n      updateStyles();\n      definition.innerHtml.fold(updateChildren, updateHtml);\n      updateValue();\n      return obsoleted;\n    };\n\n    const introduceToDom = definition => {\n      const subject = SugarElement.fromTag(definition.tag);\n      setAll$1(subject, definition.attributes);\n      add$1(subject, definition.classes);\n      setAll(subject, definition.styles);\n      definition.innerHtml.each(html => set$6(subject, html));\n      const children = definition.domChildren;\n      append$1(subject, children);\n      definition.value.each(value => {\n        set$5(subject, value);\n      });\n      return subject;\n    };\n    const attemptPatch = (definition, obsoleted) => {\n      try {\n        const e = reconcileToDom(definition, obsoleted);\n        return Optional.some(e);\n      } catch (err) {\n        return Optional.none();\n      }\n    };\n    const hasMixedChildren = definition => definition.innerHtml.isSome() && definition.domChildren.length > 0;\n    const renderToDom = (definition, optObsoleted) => {\n      const canBePatched = candidate => name$3(candidate) === definition.tag && !hasMixedChildren(definition) && !isPremade(candidate);\n      const elem = optObsoleted.filter(canBePatched).bind(obsoleted => attemptPatch(definition, obsoleted)).getOrThunk(() => introduceToDom(definition));\n      writeOnly(elem, definition.uid);\n      return elem;\n    };\n\n    const getBehaviours$2 = spec => {\n      const behaviours = get$g(spec, 'behaviours').getOr({});\n      return bind$3(keys(behaviours), name => {\n        const behaviour = behaviours[name];\n        return isNonNullable(behaviour) ? [behaviour.me] : [];\n      });\n    };\n    const generateFrom = (spec, all) => generateFrom$1(spec, all);\n    const generate$4 = spec => {\n      const all = getBehaviours$2(spec);\n      return generateFrom(spec, all);\n    };\n\n    const getDomDefinition = (info, bList, bData) => {\n      const definition = toDefinition(info);\n      const infoModification = toModification(info);\n      const baseModification = { 'alloy.base.modification': infoModification };\n      const modification = bList.length > 0 ? combine$2(bData, baseModification, bList, definition) : infoModification;\n      return merge(definition, modification);\n    };\n    const getEvents = (info, bList, bData) => {\n      const baseEvents = { 'alloy.base.behaviour': toEvents(info) };\n      return combine$1(bData, info.eventOrder, bList, baseEvents).getOrDie();\n    };\n    const build$2 = (spec, obsoleted) => {\n      const getMe = () => me;\n      const systemApi = Cell(singleton$1);\n      const info = getOrDie(toInfo(spec));\n      const bBlob = generate$4(spec);\n      const bList = getBehaviours$3(bBlob);\n      const bData = getData$2(bBlob);\n      const modDefinition = getDomDefinition(info, bList, bData);\n      const item = renderToDom(modDefinition, obsoleted);\n      const events = getEvents(info, bList, bData);\n      const subcomponents = Cell(info.components);\n      const connect = newApi => {\n        systemApi.set(newApi);\n      };\n      const disconnect = () => {\n        systemApi.set(NoContextApi(getMe));\n      };\n      const syncComponents = () => {\n        const children$1 = children(item);\n        const subs = bind$3(children$1, child => systemApi.get().getByDom(child).fold(() => [], pure$2));\n        subcomponents.set(subs);\n      };\n      const config = behaviour => {\n        const b = bData;\n        const f = isFunction(b[behaviour.name()]) ? b[behaviour.name()] : () => {\n          throw new Error('Could not find ' + behaviour.name() + ' in ' + JSON.stringify(spec, null, 2));\n        };\n        return f();\n      };\n      const hasConfigured = behaviour => isFunction(bData[behaviour.name()]);\n      const getApis = () => info.apis;\n      const readState = behaviourName => bData[behaviourName]().map(b => b.state.readState()).getOr('not enabled');\n      const me = {\n        uid: spec.uid,\n        getSystem: systemApi.get,\n        config,\n        hasConfigured,\n        spec,\n        readState,\n        getApis,\n        connect,\n        disconnect,\n        element: item,\n        syncComponents,\n        components: subcomponents.get,\n        events\n      };\n      return me;\n    };\n\n    const buildSubcomponents = (spec, obsoleted) => {\n      const components = get$g(spec, 'components').getOr([]);\n      return obsoleted.fold(() => map$2(components, build$1), obs => map$2(components, (c, i) => {\n        return buildOrPatch(c, child$2(obs, i));\n      }));\n    };\n    const buildFromSpec = (userSpec, obsoleted) => {\n      const {\n        events: specEvents,\n        ...spec\n      } = make$8(userSpec);\n      const components = buildSubcomponents(spec, obsoleted);\n      const completeSpec = {\n        ...spec,\n        events: {\n          ...DefaultEvents,\n          ...specEvents\n        },\n        components\n      };\n      return Result.value(build$2(completeSpec, obsoleted));\n    };\n    const text$2 = textContent => {\n      const element = SugarElement.fromText(textContent);\n      return external$1({ element });\n    };\n    const external$1 = spec => {\n      const extSpec = asRawOrDie$1('external.component', objOfOnly([\n        required$1('element'),\n        option$3('uid')\n      ]), spec);\n      const systemApi = Cell(NoContextApi());\n      const connect = newApi => {\n        systemApi.set(newApi);\n      };\n      const disconnect = () => {\n        systemApi.set(NoContextApi(() => me));\n      };\n      const uid = extSpec.uid.getOrThunk(() => generate$5('external'));\n      writeOnly(extSpec.element, uid);\n      const me = {\n        uid,\n        getSystem: systemApi.get,\n        config: Optional.none,\n        hasConfigured: never,\n        connect,\n        disconnect,\n        getApis: () => ({}),\n        element: extSpec.element,\n        spec,\n        readState: constant$1('No state'),\n        syncComponents: noop,\n        components: constant$1([]),\n        events: {}\n      };\n      return premade$1(me);\n    };\n    const uids = generate$5;\n    const isSketchSpec$1 = spec => has$2(spec, 'uid');\n    const buildOrPatch = (spec, obsoleted) => getPremade(spec).getOrThunk(() => {\n      const userSpecWithUid = isSketchSpec$1(spec) ? spec : {\n        uid: uids(''),\n        ...spec\n      };\n      return buildFromSpec(userSpecWithUid, obsoleted).getOrDie();\n    });\n    const build$1 = spec => buildOrPatch(spec, Optional.none());\n    const premade = premade$1;\n\n    var ClosestOrAncestor = (is, ancestor, scope, a, isRoot) => {\n      if (is(scope, a)) {\n        return Optional.some(scope);\n      } else if (isFunction(isRoot) && isRoot(scope)) {\n        return Optional.none();\n      } else {\n        return ancestor(scope, a, isRoot);\n      }\n    };\n\n    const ancestor$1 = (scope, predicate, isRoot) => {\n      let element = scope.dom;\n      const stop = isFunction(isRoot) ? isRoot : never;\n      while (element.parentNode) {\n        element = element.parentNode;\n        const el = SugarElement.fromDom(element);\n        if (predicate(el)) {\n          return Optional.some(el);\n        } else if (stop(el)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const closest$3 = (scope, predicate, isRoot) => {\n      const is = (s, test) => test(s);\n      return ClosestOrAncestor(is, ancestor$1, scope, predicate, isRoot);\n    };\n    const child$1 = (scope, predicate) => {\n      const pred = node => predicate(SugarElement.fromDom(node));\n      const result = find$5(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 closest$2 = (scope, predicate, isRoot) => closest$3(scope, predicate, isRoot).isSome();\n\n    const ancestor = (scope, selector, isRoot) => ancestor$1(scope, e => is(e, selector), isRoot);\n    const child = (scope, selector) => child$1(scope, e => is(e, selector));\n    const descendant = (scope, selector) => one(selector, scope);\n    const closest$1 = (scope, selector, isRoot) => {\n      const is$1 = (element, selector) => is(element, selector);\n      return ClosestOrAncestor(is$1, ancestor, scope, selector, isRoot);\n    };\n\n    const attribute = 'aria-controls';\n    const find$1 = queryElem => {\n      const dependent = closest$3(queryElem, elem => {\n        if (!isElement$1(elem)) {\n          return false;\n        }\n        const id = get$f(elem, 'id');\n        return id !== undefined && id.indexOf(attribute) > -1;\n      });\n      return dependent.bind(dep => {\n        const id = get$f(dep, 'id');\n        const dos = getRootNode(dep);\n        return descendant(dos, `[${ attribute }=\"${ id }\"]`);\n      });\n    };\n    const manager = () => {\n      const ariaId = generate$6(attribute);\n      const link = elem => {\n        set$9(elem, attribute, ariaId);\n      };\n      const unlink = elem => {\n        remove$7(elem, attribute);\n      };\n      return {\n        id: ariaId,\n        link,\n        unlink\n      };\n    };\n\n    const isAriaPartOf = (component, queryElem) => find$1(queryElem).exists(owner => isPartOf$1(component, owner));\n    const isPartOf$1 = (component, queryElem) => closest$2(queryElem, el => eq(el, component.element), never) || isAriaPartOf(component, queryElem);\n\n    const unknown = 'unknown';\n    var EventConfiguration;\n    (function (EventConfiguration) {\n      EventConfiguration[EventConfiguration['STOP'] = 0] = 'STOP';\n      EventConfiguration[EventConfiguration['NORMAL'] = 1] = 'NORMAL';\n      EventConfiguration[EventConfiguration['LOGGING'] = 2] = 'LOGGING';\n    }(EventConfiguration || (EventConfiguration = {})));\n    const eventConfig = Cell({});\n    const makeEventLogger = (eventName, initialTarget) => {\n      const sequence = [];\n      const startTime = new Date().getTime();\n      return {\n        logEventCut: (_name, target, purpose) => {\n          sequence.push({\n            outcome: 'cut',\n            target,\n            purpose\n          });\n        },\n        logEventStopped: (_name, target, purpose) => {\n          sequence.push({\n            outcome: 'stopped',\n            target,\n            purpose\n          });\n        },\n        logNoParent: (_name, target, purpose) => {\n          sequence.push({\n            outcome: 'no-parent',\n            target,\n            purpose\n          });\n        },\n        logEventNoHandlers: (_name, target) => {\n          sequence.push({\n            outcome: 'no-handlers-left',\n            target\n          });\n        },\n        logEventResponse: (_name, target, purpose) => {\n          sequence.push({\n            outcome: 'response',\n            purpose,\n            target\n          });\n        },\n        write: () => {\n          const finishTime = new Date().getTime();\n          if (contains$2([\n              'mousemove',\n              'mouseover',\n              'mouseout',\n              systemInit()\n            ], eventName)) {\n            return;\n          }\n          console.log(eventName, {\n            event: eventName,\n            time: finishTime - startTime,\n            target: initialTarget.dom,\n            sequence: map$2(sequence, s => {\n              if (!contains$2([\n                  'cut',\n                  'stopped',\n                  'response'\n                ], s.outcome)) {\n                return s.outcome;\n              } else {\n                return '{' + s.purpose + '} ' + s.outcome + ' at (' + element(s.target) + ')';\n              }\n            })\n          });\n        }\n      };\n    };\n    const processEvent = (eventName, initialTarget, f) => {\n      const status = get$g(eventConfig.get(), eventName).orThunk(() => {\n        const patterns = keys(eventConfig.get());\n        return findMap(patterns, p => eventName.indexOf(p) > -1 ? Optional.some(eventConfig.get()[p]) : Optional.none());\n      }).getOr(EventConfiguration.NORMAL);\n      switch (status) {\n      case EventConfiguration.NORMAL:\n        return f(noLogger());\n      case EventConfiguration.LOGGING: {\n          const logger = makeEventLogger(eventName, initialTarget);\n          const output = f(logger);\n          logger.write();\n          return output;\n        }\n      case EventConfiguration.STOP:\n        return true;\n      }\n    };\n    const path = [\n      'alloy/data/Fields',\n      'alloy/debugging/Debugging'\n    ];\n    const getTrace = () => {\n      const err = new Error();\n      if (err.stack !== undefined) {\n        const lines = err.stack.split('\\n');\n        return find$5(lines, line => line.indexOf('alloy') > 0 && !exists(path, p => line.indexOf(p) > -1)).getOr(unknown);\n      } else {\n        return unknown;\n      }\n    };\n    const ignoreEvent = {\n      logEventCut: noop,\n      logEventStopped: noop,\n      logNoParent: noop,\n      logEventNoHandlers: noop,\n      logEventResponse: noop,\n      write: noop\n    };\n    const monitorEvent = (eventName, initialTarget, f) => processEvent(eventName, initialTarget, f);\n    const noLogger = constant$1(ignoreEvent);\n\n    const menuFields = constant$1([\n      required$1('menu'),\n      required$1('selectedMenu')\n    ]);\n    const itemFields = constant$1([\n      required$1('item'),\n      required$1('selectedItem')\n    ]);\n    constant$1(objOf(itemFields().concat(menuFields())));\n    const itemSchema$3 = constant$1(objOf(itemFields()));\n\n    const _initSize = requiredObjOf('initSize', [\n      required$1('numColumns'),\n      required$1('numRows')\n    ]);\n    const itemMarkers = () => requiredOf('markers', itemSchema$3());\n    const tieredMenuMarkers = () => requiredObjOf('markers', [required$1('backgroundMenu')].concat(menuFields()).concat(itemFields()));\n    const markers$1 = required => requiredObjOf('markers', map$2(required, required$1));\n    const onPresenceHandler = (label, fieldName, presence) => {\n      getTrace();\n      return field$1(fieldName, fieldName, presence, valueOf(f => Result.value((...args) => {\n        return f.apply(undefined, args);\n      })));\n    };\n    const onHandler = fieldName => onPresenceHandler('onHandler', fieldName, defaulted$1(noop));\n    const onKeyboardHandler = fieldName => onPresenceHandler('onKeyboardHandler', fieldName, defaulted$1(Optional.none));\n    const onStrictHandler = fieldName => onPresenceHandler('onHandler', fieldName, required$2());\n    const onStrictKeyboardHandler = fieldName => onPresenceHandler('onKeyboardHandler', fieldName, required$2());\n    const output$1 = (name, value) => customField(name, constant$1(value));\n    const snapshot = name => customField(name, identity);\n    const initSize = constant$1(_initSize);\n\n    const nu$6 = (x, y, bubble, direction, placement, boundsRestriction, labelPrefix, alwaysFit = false) => ({\n      x,\n      y,\n      bubble,\n      direction,\n      placement,\n      restriction: boundsRestriction,\n      label: `${ labelPrefix }-${ placement }`,\n      alwaysFit\n    });\n\n    const adt$a = Adt.generate([\n      { southeast: [] },\n      { southwest: [] },\n      { northeast: [] },\n      { northwest: [] },\n      { south: [] },\n      { north: [] },\n      { east: [] },\n      { west: [] }\n    ]);\n    const cata$2 = (subject, southeast, southwest, northeast, northwest, south, north, east, west) => subject.fold(southeast, southwest, northeast, northwest, south, north, east, west);\n    const cataVertical = (subject, south, middle, north) => subject.fold(south, south, north, north, south, north, middle, middle);\n    const cataHorizontal = (subject, east, middle, west) => subject.fold(east, west, east, west, middle, middle, east, west);\n    const southeast$3 = adt$a.southeast;\n    const southwest$3 = adt$a.southwest;\n    const northeast$3 = adt$a.northeast;\n    const northwest$3 = adt$a.northwest;\n    const south$3 = adt$a.south;\n    const north$3 = adt$a.north;\n    const east$3 = adt$a.east;\n    const west$3 = adt$a.west;\n\n    const cycleBy = (value, delta, min, max) => {\n      const r = value + delta;\n      if (r > max) {\n        return min;\n      } else if (r < min) {\n        return max;\n      } else {\n        return r;\n      }\n    };\n    const clamp = (value, min, max) => Math.min(Math.max(value, min), max);\n\n    const getRestriction = (anchor, restriction) => {\n      switch (restriction) {\n      case 1:\n        return anchor.x;\n      case 0:\n        return anchor.x + anchor.width;\n      case 2:\n        return anchor.y;\n      case 3:\n        return anchor.y + anchor.height;\n      }\n    };\n    const boundsRestriction = (anchor, restrictions) => mapToObject([\n      'left',\n      'right',\n      'top',\n      'bottom'\n    ], dir => get$g(restrictions, dir).map(restriction => getRestriction(anchor, restriction)));\n    const adjustBounds = (bounds$1, restriction, bubbleOffset) => {\n      const applyRestriction = (dir, current) => restriction[dir].map(pos => {\n        const isVerticalAxis = dir === 'top' || dir === 'bottom';\n        const offset = isVerticalAxis ? bubbleOffset.top : bubbleOffset.left;\n        const comparator = dir === 'left' || dir === 'top' ? Math.max : Math.min;\n        const newPos = comparator(pos, current) + offset;\n        return isVerticalAxis ? clamp(newPos, bounds$1.y, bounds$1.bottom) : clamp(newPos, bounds$1.x, bounds$1.right);\n      }).getOr(current);\n      const adjustedLeft = applyRestriction('left', bounds$1.x);\n      const adjustedTop = applyRestriction('top', bounds$1.y);\n      const adjustedRight = applyRestriction('right', bounds$1.right);\n      const adjustedBottom = applyRestriction('bottom', bounds$1.bottom);\n      return bounds(adjustedLeft, adjustedTop, adjustedRight - adjustedLeft, adjustedBottom - adjustedTop);\n    };\n\n    const labelPrefix$2 = 'layout';\n    const eastX$1 = anchor => anchor.x;\n    const middleX$1 = (anchor, element) => anchor.x + anchor.width / 2 - element.width / 2;\n    const westX$1 = (anchor, element) => anchor.x + anchor.width - element.width;\n    const northY$2 = (anchor, element) => anchor.y - element.height;\n    const southY$2 = anchor => anchor.y + anchor.height;\n    const centreY$1 = (anchor, element) => anchor.y + anchor.height / 2 - element.height / 2;\n    const eastEdgeX$1 = anchor => anchor.x + anchor.width;\n    const westEdgeX$1 = (anchor, element) => anchor.x - element.width;\n    const southeast$2 = (anchor, element, bubbles) => nu$6(eastX$1(anchor), southY$2(anchor), bubbles.southeast(), southeast$3(), 'southeast', boundsRestriction(anchor, {\n      left: 1,\n      top: 3\n    }), labelPrefix$2);\n    const southwest$2 = (anchor, element, bubbles) => nu$6(westX$1(anchor, element), southY$2(anchor), bubbles.southwest(), southwest$3(), 'southwest', boundsRestriction(anchor, {\n      right: 0,\n      top: 3\n    }), labelPrefix$2);\n    const northeast$2 = (anchor, element, bubbles) => nu$6(eastX$1(anchor), northY$2(anchor, element), bubbles.northeast(), northeast$3(), 'northeast', boundsRestriction(anchor, {\n      left: 1,\n      bottom: 2\n    }), labelPrefix$2);\n    const northwest$2 = (anchor, element, bubbles) => nu$6(westX$1(anchor, element), northY$2(anchor, element), bubbles.northwest(), northwest$3(), 'northwest', boundsRestriction(anchor, {\n      right: 0,\n      bottom: 2\n    }), labelPrefix$2);\n    const north$2 = (anchor, element, bubbles) => nu$6(middleX$1(anchor, element), northY$2(anchor, element), bubbles.north(), north$3(), 'north', boundsRestriction(anchor, { bottom: 2 }), labelPrefix$2);\n    const south$2 = (anchor, element, bubbles) => nu$6(middleX$1(anchor, element), southY$2(anchor), bubbles.south(), south$3(), 'south', boundsRestriction(anchor, { top: 3 }), labelPrefix$2);\n    const east$2 = (anchor, element, bubbles) => nu$6(eastEdgeX$1(anchor), centreY$1(anchor, element), bubbles.east(), east$3(), 'east', boundsRestriction(anchor, { left: 0 }), labelPrefix$2);\n    const west$2 = (anchor, element, bubbles) => nu$6(westEdgeX$1(anchor, element), centreY$1(anchor, element), bubbles.west(), west$3(), 'west', boundsRestriction(anchor, { right: 1 }), labelPrefix$2);\n    const all$1 = () => [\n      southeast$2,\n      southwest$2,\n      northeast$2,\n      northwest$2,\n      south$2,\n      north$2,\n      east$2,\n      west$2\n    ];\n    const allRtl$1 = () => [\n      southwest$2,\n      southeast$2,\n      northwest$2,\n      northeast$2,\n      south$2,\n      north$2,\n      east$2,\n      west$2\n    ];\n    const aboveOrBelow = () => [\n      northeast$2,\n      northwest$2,\n      southeast$2,\n      southwest$2,\n      north$2,\n      south$2\n    ];\n    const aboveOrBelowRtl = () => [\n      northwest$2,\n      northeast$2,\n      southwest$2,\n      southeast$2,\n      north$2,\n      south$2\n    ];\n    const belowOrAbove = () => [\n      southeast$2,\n      southwest$2,\n      northeast$2,\n      northwest$2,\n      south$2,\n      north$2\n    ];\n    const belowOrAboveRtl = () => [\n      southwest$2,\n      southeast$2,\n      northwest$2,\n      northeast$2,\n      south$2,\n      north$2\n    ];\n\n    const chooseChannels = (channels, message) => message.universal ? channels : filter$2(channels, ch => contains$2(message.channels, ch));\n    const events$h = receiveConfig => derive$2([run$1(receive(), (component, message) => {\n        const channelMap = receiveConfig.channels;\n        const channels = keys(channelMap);\n        const receivingData = message;\n        const targetChannels = chooseChannels(channels, receivingData);\n        each$1(targetChannels, ch => {\n          const channelInfo = channelMap[ch];\n          const channelSchema = channelInfo.schema;\n          const data = asRawOrDie$1('channel[' + ch + '] data\\nReceiver: ' + element(component.element), channelSchema, receivingData.data);\n          channelInfo.onReceive(component, data);\n        });\n      })]);\n\n    var ActiveReceiving = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        events: events$h\n    });\n\n    var ReceivingSchema = [requiredOf('channels', setOf(Result.value, objOfOnly([\n        onStrictHandler('onReceive'),\n        defaulted('schema', anyValue())\n      ])))];\n\n    const executeEvent = (bConfig, bState, executor) => runOnExecute$1(component => {\n      executor(component, bConfig, bState);\n    });\n    const loadEvent = (bConfig, bState, f) => runOnInit((component, _simulatedEvent) => {\n      f(component, bConfig, bState);\n    });\n    const create$5 = (schema, name, active, apis, extra, state) => {\n      const configSchema = objOfOnly(schema);\n      const schemaSchema = optionObjOf(name, [optionObjOfOnly('config', schema)]);\n      return doCreate(configSchema, schemaSchema, name, active, apis, extra, state);\n    };\n    const createModes$1 = (modes, name, active, apis, extra, state) => {\n      const configSchema = modes;\n      const schemaSchema = optionObjOf(name, [optionOf('config', modes)]);\n      return doCreate(configSchema, schemaSchema, name, active, apis, extra, state);\n    };\n    const wrapApi = (bName, apiFunction, apiName) => {\n      const f = (component, ...rest) => {\n        const args = [component].concat(rest);\n        return component.config({ name: constant$1(bName) }).fold(() => {\n          throw new Error('We could not find any behaviour configuration for: ' + bName + '. Using API: ' + apiName);\n        }, info => {\n          const rest = Array.prototype.slice.call(args, 1);\n          return apiFunction.apply(undefined, [\n            component,\n            info.config,\n            info.state\n          ].concat(rest));\n        });\n      };\n      return markAsBehaviourApi(f, apiName, apiFunction);\n    };\n    const revokeBehaviour = name => ({\n      key: name,\n      value: undefined\n    });\n    const doCreate = (configSchema, schemaSchema, name, active, apis, extra, state) => {\n      const getConfig = info => hasNonNullableKey(info, name) ? info[name]() : Optional.none();\n      const wrappedApis = map$1(apis, (apiF, apiName) => wrapApi(name, apiF, apiName));\n      const wrappedExtra = map$1(extra, (extraF, extraName) => markAsExtraApi(extraF, extraName));\n      const me = {\n        ...wrappedExtra,\n        ...wrappedApis,\n        revoke: curry(revokeBehaviour, name),\n        config: spec => {\n          const prepared = asRawOrDie$1(name + '-config', configSchema, spec);\n          return {\n            key: name,\n            value: {\n              config: prepared,\n              me,\n              configAsRaw: cached(() => asRawOrDie$1(name + '-config', configSchema, spec)),\n              initialConfig: spec,\n              state\n            }\n          };\n        },\n        schema: constant$1(schemaSchema),\n        exhibit: (info, base) => {\n          return lift2(getConfig(info), get$g(active, 'exhibit'), (behaviourInfo, exhibitor) => {\n            return exhibitor(base, behaviourInfo.config, behaviourInfo.state);\n          }).getOrThunk(() => nu$7({}));\n        },\n        name: constant$1(name),\n        handlers: info => {\n          return getConfig(info).map(behaviourInfo => {\n            const getEvents = get$g(active, 'events').getOr(() => ({}));\n            return getEvents(behaviourInfo.config, behaviourInfo.state);\n          }).getOr({});\n        }\n      };\n      return me;\n    };\n\n    const derive$1 = capabilities => wrapAll(capabilities);\n    const simpleSchema = objOfOnly([\n      required$1('fields'),\n      required$1('name'),\n      defaulted('active', {}),\n      defaulted('apis', {}),\n      defaulted('state', NoState),\n      defaulted('extra', {})\n    ]);\n    const create$4 = data => {\n      const value = asRawOrDie$1('Creating behaviour: ' + data.name, simpleSchema, data);\n      return create$5(value.fields, value.name, value.active, value.apis, value.extra, value.state);\n    };\n    const modeSchema = objOfOnly([\n      required$1('branchKey'),\n      required$1('branches'),\n      required$1('name'),\n      defaulted('active', {}),\n      defaulted('apis', {}),\n      defaulted('state', NoState),\n      defaulted('extra', {})\n    ]);\n    const createModes = data => {\n      const value = asRawOrDie$1('Creating behaviour: ' + data.name, modeSchema, data);\n      return createModes$1(choose$1(value.branchKey, value.branches), value.name, value.active, value.apis, value.extra, value.state);\n    };\n    const revoke = constant$1(undefined);\n\n    const Receiving = create$4({\n      fields: ReceivingSchema,\n      name: 'receiving',\n      active: ActiveReceiving\n    });\n\n    const exhibit$6 = (base, posConfig) => nu$7({\n      classes: [],\n      styles: posConfig.useFixed() ? {} : { position: 'relative' }\n    });\n\n    var ActivePosition = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        exhibit: exhibit$6\n    });\n\n    const focus$3 = (element, preventScroll = false) => element.dom.focus({ preventScroll });\n    const blur$1 = element => element.dom.blur();\n    const hasFocus = element => {\n      const root = getRootNode(element).dom;\n      return element.dom === root.activeElement;\n    };\n    const active$1 = (root = getDocument()) => Optional.from(root.dom.activeElement).map(SugarElement.fromDom);\n    const search = element => active$1(getRootNode(element)).filter(e => element.dom.contains(e.dom));\n\n    const preserve$1 = (f, container) => {\n      const dos = getRootNode(container);\n      const refocus = active$1(dos).bind(focused => {\n        const hasFocus = elem => eq(focused, elem);\n        return hasFocus(container) ? Optional.some(container) : descendant$1(container, hasFocus);\n      });\n      const result = f(container);\n      refocus.each(oldFocus => {\n        active$1(dos).filter(newFocus => eq(newFocus, oldFocus)).fold(() => {\n          focus$3(oldFocus);\n        }, noop);\n      });\n      return result;\n    };\n\n    const NuPositionCss = (position, left, top, right, bottom) => {\n      const toPx = num => num + 'px';\n      return {\n        position,\n        left: left.map(toPx),\n        top: top.map(toPx),\n        right: right.map(toPx),\n        bottom: bottom.map(toPx)\n      };\n    };\n    const toOptions = position => ({\n      ...position,\n      position: Optional.some(position.position)\n    });\n    const applyPositionCss = (element, position) => {\n      setOptions(element, toOptions(position));\n    };\n\n    const adt$9 = Adt.generate([\n      { none: [] },\n      {\n        relative: [\n          'x',\n          'y',\n          'width',\n          'height'\n        ]\n      },\n      {\n        fixed: [\n          'x',\n          'y',\n          'width',\n          'height'\n        ]\n      }\n    ]);\n    const positionWithDirection = (posName, decision, x, y, width, height) => {\n      const decisionRect = decision.rect;\n      const decisionX = decisionRect.x - x;\n      const decisionY = decisionRect.y - y;\n      const decisionWidth = decisionRect.width;\n      const decisionHeight = decisionRect.height;\n      const decisionRight = width - (decisionX + decisionWidth);\n      const decisionBottom = height - (decisionY + decisionHeight);\n      const left = Optional.some(decisionX);\n      const top = Optional.some(decisionY);\n      const right = Optional.some(decisionRight);\n      const bottom = Optional.some(decisionBottom);\n      const none = Optional.none();\n      return cata$2(decision.direction, () => NuPositionCss(posName, left, top, none, none), () => NuPositionCss(posName, none, top, right, none), () => NuPositionCss(posName, left, none, none, bottom), () => NuPositionCss(posName, none, none, right, bottom), () => NuPositionCss(posName, left, top, none, none), () => NuPositionCss(posName, left, none, none, bottom), () => NuPositionCss(posName, left, top, none, none), () => NuPositionCss(posName, none, top, right, none));\n    };\n    const reposition = (origin, decision) => origin.fold(() => {\n      const decisionRect = decision.rect;\n      return NuPositionCss('absolute', Optional.some(decisionRect.x), Optional.some(decisionRect.y), Optional.none(), Optional.none());\n    }, (x, y, width, height) => {\n      return positionWithDirection('absolute', decision, x, y, width, height);\n    }, (x, y, width, height) => {\n      return positionWithDirection('fixed', decision, x, y, width, height);\n    });\n    const toBox = (origin, element) => {\n      const rel = curry(find$2, element);\n      const position = origin.fold(rel, rel, () => {\n        const scroll = get$b();\n        return find$2(element).translate(-scroll.left, -scroll.top);\n      });\n      const width = getOuter$1(element);\n      const height = getOuter$2(element);\n      return bounds(position.left, position.top, width, height);\n    };\n    const viewport = (origin, optBounds) => optBounds.fold(() => origin.fold(win, win, bounds), bounds$1 => origin.fold(constant$1(bounds$1), constant$1(bounds$1), () => {\n      const pos = translate$2(origin, bounds$1.x, bounds$1.y);\n      return bounds(pos.left, pos.top, bounds$1.width, bounds$1.height);\n    }));\n    const translate$2 = (origin, x, y) => {\n      const pos = SugarPosition(x, y);\n      const removeScroll = () => {\n        const outerScroll = get$b();\n        return pos.translate(-outerScroll.left, -outerScroll.top);\n      };\n      return origin.fold(constant$1(pos), constant$1(pos), removeScroll);\n    };\n    const cata$1 = (subject, onNone, onRelative, onFixed) => subject.fold(onNone, onRelative, onFixed);\n    adt$9.none;\n    const relative$1 = adt$9.relative;\n    const fixed$1 = adt$9.fixed;\n\n    const anchor = (anchorBox, origin) => ({\n      anchorBox,\n      origin\n    });\n    const box = (anchorBox, origin) => anchor(anchorBox, origin);\n\n    const placementAttribute = 'data-alloy-placement';\n    const setPlacement$1 = (element, placement) => {\n      set$9(element, placementAttribute, placement);\n    };\n    const getPlacement = element => getOpt(element, placementAttribute);\n    const reset$2 = element => remove$7(element, placementAttribute);\n\n    const adt$8 = Adt.generate([\n      { fit: ['reposition'] },\n      {\n        nofit: [\n          'reposition',\n          'visibleW',\n          'visibleH',\n          'isVisible'\n        ]\n      }\n    ]);\n    const determinePosition = (box, bounds) => {\n      const {\n        x: boundsX,\n        y: boundsY,\n        right: boundsRight,\n        bottom: boundsBottom\n      } = bounds;\n      const {x, y, right, bottom, width, height} = box;\n      const xInBounds = x >= boundsX && x <= boundsRight;\n      const yInBounds = y >= boundsY && y <= boundsBottom;\n      const originInBounds = xInBounds && yInBounds;\n      const rightInBounds = right <= boundsRight && right >= boundsX;\n      const bottomInBounds = bottom <= boundsBottom && bottom >= boundsY;\n      const sizeInBounds = rightInBounds && bottomInBounds;\n      const visibleW = Math.min(width, x >= boundsX ? boundsRight - x : right - boundsX);\n      const visibleH = Math.min(height, y >= boundsY ? boundsBottom - y : bottom - boundsY);\n      return {\n        originInBounds,\n        sizeInBounds,\n        visibleW,\n        visibleH\n      };\n    };\n    const calcReposition = (box, bounds$1) => {\n      const {\n        x: boundsX,\n        y: boundsY,\n        right: boundsRight,\n        bottom: boundsBottom\n      } = bounds$1;\n      const {x, y, width, height} = box;\n      const maxX = Math.max(boundsX, boundsRight - width);\n      const maxY = Math.max(boundsY, boundsBottom - height);\n      const restrictedX = clamp(x, boundsX, maxX);\n      const restrictedY = clamp(y, boundsY, maxY);\n      const restrictedWidth = Math.min(restrictedX + width, boundsRight) - restrictedX;\n      const restrictedHeight = Math.min(restrictedY + height, boundsBottom) - restrictedY;\n      return bounds(restrictedX, restrictedY, restrictedWidth, restrictedHeight);\n    };\n    const calcMaxSizes = (direction, box, bounds) => {\n      const upAvailable = constant$1(box.bottom - bounds.y);\n      const downAvailable = constant$1(bounds.bottom - box.y);\n      const maxHeight = cataVertical(direction, downAvailable, downAvailable, upAvailable);\n      const westAvailable = constant$1(box.right - bounds.x);\n      const eastAvailable = constant$1(bounds.right - box.x);\n      const maxWidth = cataHorizontal(direction, eastAvailable, eastAvailable, westAvailable);\n      return {\n        maxWidth,\n        maxHeight\n      };\n    };\n    const attempt = (candidate, width, height, bounds$1) => {\n      const bubble = candidate.bubble;\n      const bubbleOffset = bubble.offset;\n      const adjustedBounds = adjustBounds(bounds$1, candidate.restriction, bubbleOffset);\n      const newX = candidate.x + bubbleOffset.left;\n      const newY = candidate.y + bubbleOffset.top;\n      const box = bounds(newX, newY, width, height);\n      const {originInBounds, sizeInBounds, visibleW, visibleH} = determinePosition(box, adjustedBounds);\n      const fits = originInBounds && sizeInBounds;\n      const fittedBox = fits ? box : calcReposition(box, adjustedBounds);\n      const isPartlyVisible = fittedBox.width > 0 && fittedBox.height > 0;\n      const {maxWidth, maxHeight} = calcMaxSizes(candidate.direction, fittedBox, bounds$1);\n      const reposition = {\n        rect: fittedBox,\n        maxHeight,\n        maxWidth,\n        direction: candidate.direction,\n        placement: candidate.placement,\n        classes: {\n          on: bubble.classesOn,\n          off: bubble.classesOff\n        },\n        layout: candidate.label,\n        testY: newY\n      };\n      return fits || candidate.alwaysFit ? adt$8.fit(reposition) : adt$8.nofit(reposition, visibleW, visibleH, isPartlyVisible);\n    };\n    const attempts = (element, candidates, anchorBox, elementBox, bubbles, bounds) => {\n      const panelWidth = elementBox.width;\n      const panelHeight = elementBox.height;\n      const attemptBestFit = (layout, reposition, visibleW, visibleH, isVisible) => {\n        const next = layout(anchorBox, elementBox, bubbles, element, bounds);\n        const attemptLayout = attempt(next, panelWidth, panelHeight, bounds);\n        return attemptLayout.fold(constant$1(attemptLayout), (newReposition, newVisibleW, newVisibleH, newIsVisible) => {\n          const improved = isVisible === newIsVisible ? newVisibleH > visibleH || newVisibleW > visibleW : !isVisible && newIsVisible;\n          return improved ? attemptLayout : adt$8.nofit(reposition, visibleW, visibleH, isVisible);\n        });\n      };\n      const abc = foldl(candidates, (b, a) => {\n        const bestNext = curry(attemptBestFit, a);\n        return b.fold(constant$1(b), bestNext);\n      }, adt$8.nofit({\n        rect: anchorBox,\n        maxHeight: elementBox.height,\n        maxWidth: elementBox.width,\n        direction: southeast$3(),\n        placement: 'southeast',\n        classes: {\n          on: [],\n          off: []\n        },\n        layout: 'none',\n        testY: anchorBox.y\n      }, -1, -1, false));\n      return abc.fold(identity, identity);\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 destroyable = () => singleton(s => s.destroy());\n    const unbindable = () => singleton(s => s.unbind());\n    const value$2 = () => {\n      const subject = singleton(noop);\n      const on = f => subject.get().each(f);\n      return {\n        ...subject,\n        on\n      };\n    };\n\n    const filter = always;\n    const bind = (element, event, handler) => bind$2(element, event, filter, handler);\n    const capture = (element, event, handler) => capture$1(element, event, filter, handler);\n    const fromRawEvent = fromRawEvent$1;\n\n    const properties = [\n      'top',\n      'bottom',\n      'right',\n      'left'\n    ];\n    const timerAttr = 'data-alloy-transition-timer';\n    const isTransitioning$1 = (element, transition) => hasAll(element, transition.classes);\n    const shouldApplyTransitionCss = (transition, decision, lastPlacement) => {\n      return lastPlacement.exists(placer => {\n        const mode = transition.mode;\n        return mode === 'all' ? true : placer[mode] !== decision[mode];\n      });\n    };\n    const hasChanges = (position, intermediate) => {\n      const round = value => parseFloat(value).toFixed(3);\n      return find$4(intermediate, (value, key) => {\n        const newValue = position[key].map(round);\n        const val = value.map(round);\n        return !equals(newValue, val);\n      }).isSome();\n    };\n    const getTransitionDuration = element => {\n      const get = name => {\n        const style = get$e(element, name);\n        const times = style.split(/\\s*,\\s*/);\n        return filter$2(times, isNotEmpty);\n      };\n      const parse = value => {\n        if (isString(value) && /^[\\d.]+/.test(value)) {\n          const num = parseFloat(value);\n          return endsWith(value, 'ms') ? num : num * 1000;\n        } else {\n          return 0;\n        }\n      };\n      const delay = get('transition-delay');\n      const duration = get('transition-duration');\n      return foldl(duration, (acc, dur, i) => {\n        const time = parse(delay[i]) + parse(dur);\n        return Math.max(acc, time);\n      }, 0);\n    };\n    const setupTransitionListeners = (element, transition) => {\n      const transitionEnd = unbindable();\n      const transitionCancel = unbindable();\n      let timer;\n      const isSourceTransition = e => {\n        var _a;\n        const pseudoElement = (_a = e.raw.pseudoElement) !== null && _a !== void 0 ? _a : '';\n        return eq(e.target, element) && isEmpty(pseudoElement) && contains$2(properties, e.raw.propertyName);\n      };\n      const transitionDone = e => {\n        if (isNullable(e) || isSourceTransition(e)) {\n          transitionEnd.clear();\n          transitionCancel.clear();\n          const type = e === null || e === void 0 ? void 0 : e.raw.type;\n          if (isNullable(type) || type === transitionend()) {\n            clearTimeout(timer);\n            remove$7(element, timerAttr);\n            remove$1(element, transition.classes);\n          }\n        }\n      };\n      const transitionStart = bind(element, transitionstart(), e => {\n        if (isSourceTransition(e)) {\n          transitionStart.unbind();\n          transitionEnd.set(bind(element, transitionend(), transitionDone));\n          transitionCancel.set(bind(element, transitioncancel(), transitionDone));\n        }\n      });\n      const duration = getTransitionDuration(element);\n      requestAnimationFrame(() => {\n        timer = setTimeout(transitionDone, duration + 17);\n        set$9(element, timerAttr, timer);\n      });\n    };\n    const startTransitioning = (element, transition) => {\n      add$1(element, transition.classes);\n      getOpt(element, timerAttr).each(timerId => {\n        clearTimeout(parseInt(timerId, 10));\n        remove$7(element, timerAttr);\n      });\n      setupTransitionListeners(element, transition);\n    };\n    const applyTransitionCss = (element, origin, position, transition, decision, lastPlacement) => {\n      const shouldTransition = shouldApplyTransitionCss(transition, decision, lastPlacement);\n      if (shouldTransition || isTransitioning$1(element, transition)) {\n        set$8(element, 'position', position.position);\n        const rect = toBox(origin, element);\n        const intermediatePosition = reposition(origin, {\n          ...decision,\n          rect\n        });\n        const intermediateCssOptions = mapToObject(properties, prop => intermediatePosition[prop]);\n        if (hasChanges(position, intermediateCssOptions)) {\n          setOptions(element, intermediateCssOptions);\n          if (shouldTransition) {\n            startTransitioning(element, transition);\n          }\n          reflow(element);\n        }\n      } else {\n        remove$1(element, transition.classes);\n      }\n    };\n\n    const elementSize = p => ({\n      width: getOuter$1(p),\n      height: getOuter$2(p)\n    });\n    const layout = (anchorBox, element, bubbles, options) => {\n      remove$6(element, 'max-height');\n      remove$6(element, 'max-width');\n      const elementBox = elementSize(element);\n      return attempts(element, options.preference, anchorBox, elementBox, bubbles, options.bounds);\n    };\n    const setClasses = (element, decision) => {\n      const classInfo = decision.classes;\n      remove$1(element, classInfo.off);\n      add$1(element, classInfo.on);\n    };\n    const setHeight = (element, decision, options) => {\n      const maxHeightFunction = options.maxHeightFunction;\n      maxHeightFunction(element, decision.maxHeight);\n    };\n    const setWidth = (element, decision, options) => {\n      const maxWidthFunction = options.maxWidthFunction;\n      maxWidthFunction(element, decision.maxWidth);\n    };\n    const position$2 = (element, decision, options) => {\n      const positionCss = reposition(options.origin, decision);\n      options.transition.each(transition => {\n        applyTransitionCss(element, options.origin, positionCss, transition, decision, options.lastPlacement);\n      });\n      applyPositionCss(element, positionCss);\n    };\n    const setPlacement = (element, decision) => {\n      setPlacement$1(element, decision.placement);\n    };\n\n    const setMaxHeight = (element, maxHeight) => {\n      setMax$1(element, Math.floor(maxHeight));\n    };\n    const anchored = constant$1((element, available) => {\n      setMaxHeight(element, available);\n      setAll(element, {\n        'overflow-x': 'hidden',\n        'overflow-y': 'auto'\n      });\n    });\n    const expandable$1 = constant$1((element, available) => {\n      setMaxHeight(element, available);\n    });\n\n    const defaultOr = (options, key, dephault) => options[key] === undefined ? dephault : options[key];\n    const simple = (anchor, element, bubble, layouts, lastPlacement, optBounds, overrideOptions, transition) => {\n      const maxHeightFunction = defaultOr(overrideOptions, 'maxHeightFunction', anchored());\n      const maxWidthFunction = defaultOr(overrideOptions, 'maxWidthFunction', noop);\n      const anchorBox = anchor.anchorBox;\n      const origin = anchor.origin;\n      const options = {\n        bounds: viewport(origin, optBounds),\n        origin,\n        preference: layouts,\n        maxHeightFunction,\n        maxWidthFunction,\n        lastPlacement,\n        transition\n      };\n      return go(anchorBox, element, bubble, options);\n    };\n    const go = (anchorBox, element, bubble, options) => {\n      const decision = layout(anchorBox, element, bubble, options);\n      position$2(element, decision, options);\n      setPlacement(element, decision);\n      setClasses(element, decision);\n      setHeight(element, decision, options);\n      setWidth(element, decision, options);\n      return {\n        layout: decision.layout,\n        placement: decision.placement\n      };\n    };\n\n    const allAlignments = [\n      'valignCentre',\n      'alignLeft',\n      'alignRight',\n      'alignCentre',\n      'top',\n      'bottom',\n      'left',\n      'right',\n      'inset'\n    ];\n    const nu$5 = (xOffset, yOffset, classes, insetModifier = 1) => {\n      const insetXOffset = xOffset * insetModifier;\n      const insetYOffset = yOffset * insetModifier;\n      const getClasses = prop => get$g(classes, prop).getOr([]);\n      const make = (xDelta, yDelta, alignmentsOn) => {\n        const alignmentsOff = difference(allAlignments, alignmentsOn);\n        return {\n          offset: SugarPosition(xDelta, yDelta),\n          classesOn: bind$3(alignmentsOn, getClasses),\n          classesOff: bind$3(alignmentsOff, getClasses)\n        };\n      };\n      return {\n        southeast: () => make(-xOffset, yOffset, [\n          'top',\n          'alignLeft'\n        ]),\n        southwest: () => make(xOffset, yOffset, [\n          'top',\n          'alignRight'\n        ]),\n        south: () => make(-xOffset / 2, yOffset, [\n          'top',\n          'alignCentre'\n        ]),\n        northeast: () => make(-xOffset, -yOffset, [\n          'bottom',\n          'alignLeft'\n        ]),\n        northwest: () => make(xOffset, -yOffset, [\n          'bottom',\n          'alignRight'\n        ]),\n        north: () => make(-xOffset / 2, -yOffset, [\n          'bottom',\n          'alignCentre'\n        ]),\n        east: () => make(xOffset, -yOffset / 2, [\n          'valignCentre',\n          'left'\n        ]),\n        west: () => make(-xOffset, -yOffset / 2, [\n          'valignCentre',\n          'right'\n        ]),\n        insetNortheast: () => make(insetXOffset, insetYOffset, [\n          'top',\n          'alignLeft',\n          'inset'\n        ]),\n        insetNorthwest: () => make(-insetXOffset, insetYOffset, [\n          'top',\n          'alignRight',\n          'inset'\n        ]),\n        insetNorth: () => make(-insetXOffset / 2, insetYOffset, [\n          'top',\n          'alignCentre',\n          'inset'\n        ]),\n        insetSoutheast: () => make(insetXOffset, -insetYOffset, [\n          'bottom',\n          'alignLeft',\n          'inset'\n        ]),\n        insetSouthwest: () => make(-insetXOffset, -insetYOffset, [\n          'bottom',\n          'alignRight',\n          'inset'\n        ]),\n        insetSouth: () => make(-insetXOffset / 2, -insetYOffset, [\n          'bottom',\n          'alignCentre',\n          'inset'\n        ]),\n        insetEast: () => make(-insetXOffset, -insetYOffset / 2, [\n          'valignCentre',\n          'right',\n          'inset'\n        ]),\n        insetWest: () => make(insetXOffset, -insetYOffset / 2, [\n          'valignCentre',\n          'left',\n          'inset'\n        ])\n      };\n    };\n    const fallback = () => nu$5(0, 0, {});\n\n    const nu$4 = identity;\n\n    const onDirection = (isLtr, isRtl) => element => getDirection(element) === 'rtl' ? isRtl : isLtr;\n    const getDirection = element => get$e(element, 'direction') === 'rtl' ? 'rtl' : 'ltr';\n\n    var AttributeValue;\n    (function (AttributeValue) {\n      AttributeValue['TopToBottom'] = 'toptobottom';\n      AttributeValue['BottomToTop'] = 'bottomtotop';\n    }(AttributeValue || (AttributeValue = {})));\n    const Attribute = 'data-alloy-vertical-dir';\n    const isBottomToTopDir = el => closest$2(el, current => isElement$1(current) && get$f(current, 'data-alloy-vertical-dir') === AttributeValue.BottomToTop);\n\n    const schema$y = () => optionObjOf('layouts', [\n      required$1('onLtr'),\n      required$1('onRtl'),\n      option$3('onBottomLtr'),\n      option$3('onBottomRtl')\n    ]);\n    const get$5 = (elem, info, defaultLtr, defaultRtl, defaultBottomLtr, defaultBottomRtl, dirElement) => {\n      const isBottomToTop = dirElement.map(isBottomToTopDir).getOr(false);\n      const customLtr = info.layouts.map(ls => ls.onLtr(elem));\n      const customRtl = info.layouts.map(ls => ls.onRtl(elem));\n      const ltr = isBottomToTop ? info.layouts.bind(ls => ls.onBottomLtr.map(f => f(elem))).or(customLtr).getOr(defaultBottomLtr) : customLtr.getOr(defaultLtr);\n      const rtl = isBottomToTop ? info.layouts.bind(ls => ls.onBottomRtl.map(f => f(elem))).or(customRtl).getOr(defaultBottomRtl) : customRtl.getOr(defaultRtl);\n      const f = onDirection(ltr, rtl);\n      return f(elem);\n    };\n\n    const placement$4 = (component, anchorInfo, origin) => {\n      const hotspot = anchorInfo.hotspot;\n      const anchorBox = toBox(origin, hotspot.element);\n      const layouts = get$5(component.element, anchorInfo, belowOrAbove(), belowOrAboveRtl(), aboveOrBelow(), aboveOrBelowRtl(), Optional.some(anchorInfo.hotspot.element));\n      return Optional.some(nu$4({\n        anchorBox,\n        bubble: anchorInfo.bubble.getOr(fallback()),\n        overrides: anchorInfo.overrides,\n        layouts\n      }));\n    };\n    var HotspotAnchor = [\n      required$1('hotspot'),\n      option$3('bubble'),\n      defaulted('overrides', {}),\n      schema$y(),\n      output$1('placement', placement$4)\n    ];\n\n    const placement$3 = (component, anchorInfo, origin) => {\n      const pos = translate$2(origin, anchorInfo.x, anchorInfo.y);\n      const anchorBox = bounds(pos.left, pos.top, anchorInfo.width, anchorInfo.height);\n      const layouts = get$5(component.element, anchorInfo, all$1(), allRtl$1(), all$1(), allRtl$1(), Optional.none());\n      return Optional.some(nu$4({\n        anchorBox,\n        bubble: anchorInfo.bubble,\n        overrides: anchorInfo.overrides,\n        layouts\n      }));\n    };\n    var MakeshiftAnchor = [\n      required$1('x'),\n      required$1('y'),\n      defaulted('height', 0),\n      defaulted('width', 0),\n      defaulted('bubble', fallback()),\n      defaulted('overrides', {}),\n      schema$y(),\n      output$1('placement', placement$3)\n    ];\n\n    const adt$7 = Adt.generate([\n      { screen: ['point'] },\n      {\n        absolute: [\n          'point',\n          'scrollLeft',\n          'scrollTop'\n        ]\n      }\n    ]);\n    const toFixed = pos => pos.fold(identity, (point, scrollLeft, scrollTop) => point.translate(-scrollLeft, -scrollTop));\n    const toAbsolute = pos => pos.fold(identity, identity);\n    const sum = points => foldl(points, (b, a) => b.translate(a.left, a.top), SugarPosition(0, 0));\n    const sumAsFixed = positions => {\n      const points = map$2(positions, toFixed);\n      return sum(points);\n    };\n    const sumAsAbsolute = positions => {\n      const points = map$2(positions, toAbsolute);\n      return sum(points);\n    };\n    const screen = adt$7.screen;\n    const absolute$1 = adt$7.absolute;\n\n    const getOffset = (component, origin, anchorInfo) => {\n      const win = defaultView(anchorInfo.root).dom;\n      const hasSameOwner = frame => {\n        const frameOwner = owner$4(frame);\n        const compOwner = owner$4(component.element);\n        return eq(frameOwner, compOwner);\n      };\n      return Optional.from(win.frameElement).map(SugarElement.fromDom).filter(hasSameOwner).map(absolute$3);\n    };\n    const getRootPoint = (component, origin, anchorInfo) => {\n      const doc = owner$4(component.element);\n      const outerScroll = get$b(doc);\n      const offset = getOffset(component, origin, anchorInfo).getOr(outerScroll);\n      return absolute$1(offset, outerScroll.left, outerScroll.top);\n    };\n\n    const getBox = (left, top, width, height) => {\n      const point = screen(SugarPosition(left, top));\n      return Optional.some(pointed(point, width, height));\n    };\n    const calcNewAnchor = (optBox, rootPoint, anchorInfo, origin, elem) => optBox.map(box => {\n      const points = [\n        rootPoint,\n        box.point\n      ];\n      const topLeft = cata$1(origin, () => sumAsAbsolute(points), () => sumAsAbsolute(points), () => sumAsFixed(points));\n      const anchorBox = rect(topLeft.left, topLeft.top, box.width, box.height);\n      const layoutsLtr = anchorInfo.showAbove ? aboveOrBelow() : belowOrAbove();\n      const layoutsRtl = anchorInfo.showAbove ? aboveOrBelowRtl() : belowOrAboveRtl();\n      const layouts = get$5(elem, anchorInfo, layoutsLtr, layoutsRtl, layoutsLtr, layoutsRtl, Optional.none());\n      return nu$4({\n        anchorBox,\n        bubble: anchorInfo.bubble.getOr(fallback()),\n        overrides: anchorInfo.overrides,\n        layouts\n      });\n    });\n\n    const placement$2 = (component, anchorInfo, origin) => {\n      const rootPoint = getRootPoint(component, origin, anchorInfo);\n      return anchorInfo.node.filter(inBody).bind(target => {\n        const rect = target.dom.getBoundingClientRect();\n        const nodeBox = getBox(rect.left, rect.top, rect.width, rect.height);\n        const elem = anchorInfo.node.getOr(component.element);\n        return calcNewAnchor(nodeBox, rootPoint, anchorInfo, origin, elem);\n      });\n    };\n    var NodeAnchor = [\n      required$1('node'),\n      required$1('root'),\n      option$3('bubble'),\n      schema$y(),\n      defaulted('overrides', {}),\n      defaulted('showAbove', false),\n      output$1('placement', placement$2)\n    ];\n\n    const zeroWidth = '\\uFEFF';\n    const nbsp = '\\xA0';\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 adt$6 = Adt.generate([\n      { before: ['element'] },\n      {\n        on: [\n          'element',\n          'offset'\n        ]\n      },\n      { after: ['element'] }\n    ]);\n    const cata = (subject, onBefore, onOn, onAfter) => subject.fold(onBefore, onOn, onAfter);\n    const getStart$1 = situ => situ.fold(identity, identity, identity);\n    const before = adt$6.before;\n    const on$1 = adt$6.on;\n    const after$1 = adt$6.after;\n    const Situ = {\n      before,\n      on: on$1,\n      after: after$1,\n      cata,\n      getStart: getStart$1\n    };\n\n    const adt$5 = 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$5.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$5.domRange;\n    const relative = adt$5.relative;\n    const exact = adt$5.exact;\n    const getWin = selection => {\n      const start = getStart(selection);\n      return defaultView(start);\n    };\n    const range$1 = SimRange.create;\n    const SimSelection = {\n      domRange,\n      relative,\n      exact,\n      exactFromRange,\n      getWin,\n      range: range$1\n    };\n\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    const getBounds$2 = rng => {\n      const rect = rng.getBoundingClientRect();\n      return rect.width > 0 || rect.height > 0 ? Optional.some(rect).map(toRect) : Optional.none();\n    };\n\n    const adt$4 = 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$1(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$4.rtl(SugarElement.fromDom(rev.endContainer), rev.endOffset, SugarElement.fromDom(rev.startContainer), rev.startOffset)).getOrThunk(() => fromRange(win, adt$4.ltr, rng));\n      } else {\n        return fromRange(win, adt$4.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$4.ltr;\n    adt$4.rtl;\n\n    const ancestors = (scope, predicate, isRoot) => filter$2(parents(scope, isRoot), predicate);\n\n    const descendants = (scope, selector) => all$3(selector, scope);\n\n    const makeRange = (start, soffset, finish, foffset) => {\n      const doc = owner$4(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(start, finish) && soffset === foffset;\n      return r.collapsed && !same;\n    };\n\n    const getNativeSelection = win => Optional.from(win.getSelection());\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 getExact = win => getNativeSelection(win).filter(sel => sel.rangeCount > 0).bind(doGetExact);\n    const getFirstRect = (win, selection) => {\n      const rng = asLtrRange(win, selection);\n      return getFirstRect$1(rng);\n    };\n    const getBounds$1 = (win, selection) => {\n      const rng = asLtrRange(win, selection);\n      return getBounds$2(rng);\n    };\n\n    const NodeValue = (is, name) => {\n      const get = element => {\n        if (!is(element)) {\n          throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\n        }\n        return getOption(element).getOr('');\n      };\n      const getOption = element => is(element) ? Optional.from(element.dom.nodeValue) : Optional.none();\n      const set = (element, value) => {\n        if (!is(element)) {\n          throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\n        }\n        element.dom.nodeValue = value;\n      };\n      return {\n        get,\n        getOption,\n        set\n      };\n    };\n\n    const api = NodeValue(isText, 'text');\n    const get$4 = element => api.get(element);\n\n    const point = (element, offset) => ({\n      element,\n      offset\n    });\n    const descendOnce$1 = (element, offset) => {\n      const children$1 = children(element);\n      if (children$1.length === 0) {\n        return point(element, offset);\n      } else if (offset < children$1.length) {\n        return point(children$1[offset], 0);\n      } else {\n        const last = children$1[children$1.length - 1];\n        const len = isText(last) ? get$4(last).length : children(last).length;\n        return point(last, len);\n      }\n    };\n\n    const descendOnce = (element, offset) => isText(element) ? point(element, offset) : descendOnce$1(element, offset);\n    const isSimRange = detail => detail.foffset !== undefined;\n    const getAnchorSelection = (win, anchorInfo) => {\n      const getSelection = anchorInfo.getSelection.getOrThunk(() => () => getExact(win));\n      return getSelection().map(sel => {\n        if (isSimRange(sel)) {\n          const modStart = descendOnce(sel.start, sel.soffset);\n          const modFinish = descendOnce(sel.finish, sel.foffset);\n          return SimSelection.range(modStart.element, modStart.offset, modFinish.element, modFinish.offset);\n        } else {\n          return sel;\n        }\n      });\n    };\n    const placement$1 = (component, anchorInfo, origin) => {\n      const win = defaultView(anchorInfo.root).dom;\n      const rootPoint = getRootPoint(component, origin, anchorInfo);\n      const selectionBox = getAnchorSelection(win, anchorInfo).bind(sel => {\n        if (isSimRange(sel)) {\n          const optRect = getBounds$1(win, SimSelection.exactFromRange(sel)).orThunk(() => {\n            const zeroWidth$1 = SugarElement.fromText(zeroWidth);\n            before$1(sel.start, zeroWidth$1);\n            const rect = getFirstRect(win, SimSelection.exact(zeroWidth$1, 0, zeroWidth$1, 1));\n            remove$5(zeroWidth$1);\n            return rect;\n          });\n          return optRect.bind(rawRect => {\n            return getBox(rawRect.left, rawRect.top, rawRect.width, rawRect.height);\n          });\n        } else {\n          const selectionRect = map$1(sel, cell => cell.dom.getBoundingClientRect());\n          const bounds = {\n            left: Math.min(selectionRect.firstCell.left, selectionRect.lastCell.left),\n            right: Math.max(selectionRect.firstCell.right, selectionRect.lastCell.right),\n            top: Math.min(selectionRect.firstCell.top, selectionRect.lastCell.top),\n            bottom: Math.max(selectionRect.firstCell.bottom, selectionRect.lastCell.bottom)\n          };\n          return getBox(bounds.left, bounds.top, bounds.right - bounds.left, bounds.bottom - bounds.top);\n        }\n      });\n      const targetElement = getAnchorSelection(win, anchorInfo).bind(sel => {\n        if (isSimRange(sel)) {\n          return isElement$1(sel.start) ? Optional.some(sel.start) : parentElement(sel.start);\n        } else {\n          return Optional.some(sel.firstCell);\n        }\n      });\n      const elem = targetElement.getOr(component.element);\n      return calcNewAnchor(selectionBox, rootPoint, anchorInfo, origin, elem);\n    };\n    var SelectionAnchor = [\n      option$3('getSelection'),\n      required$1('root'),\n      option$3('bubble'),\n      schema$y(),\n      defaulted('overrides', {}),\n      defaulted('showAbove', false),\n      output$1('placement', placement$1)\n    ];\n\n    const labelPrefix$1 = 'link-layout';\n    const eastX = anchor => anchor.x + anchor.width;\n    const westX = (anchor, element) => anchor.x - element.width;\n    const northY$1 = (anchor, element) => anchor.y - element.height + anchor.height;\n    const southY$1 = anchor => anchor.y;\n    const southeast$1 = (anchor, element, bubbles) => nu$6(eastX(anchor), southY$1(anchor), bubbles.southeast(), southeast$3(), 'southeast', boundsRestriction(anchor, {\n      left: 0,\n      top: 2\n    }), labelPrefix$1);\n    const southwest$1 = (anchor, element, bubbles) => nu$6(westX(anchor, element), southY$1(anchor), bubbles.southwest(), southwest$3(), 'southwest', boundsRestriction(anchor, {\n      right: 1,\n      top: 2\n    }), labelPrefix$1);\n    const northeast$1 = (anchor, element, bubbles) => nu$6(eastX(anchor), northY$1(anchor, element), bubbles.northeast(), northeast$3(), 'northeast', boundsRestriction(anchor, {\n      left: 0,\n      bottom: 3\n    }), labelPrefix$1);\n    const northwest$1 = (anchor, element, bubbles) => nu$6(westX(anchor, element), northY$1(anchor, element), bubbles.northwest(), northwest$3(), 'northwest', boundsRestriction(anchor, {\n      right: 1,\n      bottom: 3\n    }), labelPrefix$1);\n    const all = () => [\n      southeast$1,\n      southwest$1,\n      northeast$1,\n      northwest$1\n    ];\n    const allRtl = () => [\n      southwest$1,\n      southeast$1,\n      northwest$1,\n      northeast$1\n    ];\n\n    const placement = (component, submenuInfo, origin) => {\n      const anchorBox = toBox(origin, submenuInfo.item.element);\n      const layouts = get$5(component.element, submenuInfo, all(), allRtl(), all(), allRtl(), Optional.none());\n      return Optional.some(nu$4({\n        anchorBox,\n        bubble: fallback(),\n        overrides: submenuInfo.overrides,\n        layouts\n      }));\n    };\n    var SubmenuAnchor = [\n      required$1('item'),\n      schema$y(),\n      defaulted('overrides', {}),\n      output$1('placement', placement)\n    ];\n\n    var AnchorSchema = choose$1('type', {\n      selection: SelectionAnchor,\n      node: NodeAnchor,\n      hotspot: HotspotAnchor,\n      submenu: SubmenuAnchor,\n      makeshift: MakeshiftAnchor\n    });\n\n    const TransitionSchema = [\n      requiredArrayOf('classes', string),\n      defaultedStringEnum('mode', 'all', [\n        'all',\n        'layout',\n        'placement'\n      ])\n    ];\n    const PositionSchema = [\n      defaulted('useFixed', never),\n      option$3('getBounds')\n    ];\n    const PlacementSchema = [\n      requiredOf('anchor', AnchorSchema),\n      optionObjOf('transition', TransitionSchema)\n    ];\n\n    const getFixedOrigin = () => {\n      const html = document.documentElement;\n      return fixed$1(0, 0, html.clientWidth, html.clientHeight);\n    };\n    const getRelativeOrigin = component => {\n      const position = absolute$3(component.element);\n      const bounds = component.element.dom.getBoundingClientRect();\n      return relative$1(position.left, position.top, bounds.width, bounds.height);\n    };\n    const place = (origin, anchoring, optBounds, placee, lastPlace, transition) => {\n      const anchor = box(anchoring.anchorBox, origin);\n      return simple(anchor, placee.element, anchoring.bubble, anchoring.layouts, lastPlace, optBounds, anchoring.overrides, transition);\n    };\n    const position$1 = (component, posConfig, posState, placee, placementSpec) => {\n      const optWithinBounds = Optional.none();\n      positionWithinBounds(component, posConfig, posState, placee, placementSpec, optWithinBounds);\n    };\n    const positionWithinBounds = (component, posConfig, posState, placee, placementSpec, optWithinBounds) => {\n      const placeeDetail = asRawOrDie$1('placement.info', objOf(PlacementSchema), placementSpec);\n      const anchorage = placeeDetail.anchor;\n      const element = placee.element;\n      const placeeState = posState.get(placee.uid);\n      preserve$1(() => {\n        set$8(element, 'position', 'fixed');\n        const oldVisibility = getRaw(element, 'visibility');\n        set$8(element, 'visibility', 'hidden');\n        const origin = posConfig.useFixed() ? getFixedOrigin() : getRelativeOrigin(component);\n        anchorage.placement(component, anchorage, origin).each(anchoring => {\n          const optBounds = optWithinBounds.orThunk(() => posConfig.getBounds.map(apply$1));\n          const newState = place(origin, anchoring, optBounds, placee, placeeState, placeeDetail.transition);\n          posState.set(placee.uid, newState);\n        });\n        oldVisibility.fold(() => {\n          remove$6(element, 'visibility');\n        }, vis => {\n          set$8(element, 'visibility', vis);\n        });\n        if (getRaw(element, 'left').isNone() && getRaw(element, 'top').isNone() && getRaw(element, 'right').isNone() && getRaw(element, 'bottom').isNone() && is$1(getRaw(element, 'position'), 'fixed')) {\n          remove$6(element, 'position');\n        }\n      }, element);\n    };\n    const getMode = (component, pConfig, _pState) => pConfig.useFixed() ? 'fixed' : 'absolute';\n    const reset$1 = (component, pConfig, posState, placee) => {\n      const element = placee.element;\n      each$1([\n        'position',\n        'left',\n        'right',\n        'top',\n        'bottom'\n      ], prop => remove$6(element, prop));\n      reset$2(element);\n      posState.clear(placee.uid);\n    };\n\n    var PositionApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        position: position$1,\n        positionWithinBounds: positionWithinBounds,\n        getMode: getMode,\n        reset: reset$1\n    });\n\n    const init$g = () => {\n      let state = {};\n      const set = (id, data) => {\n        state[id] = data;\n      };\n      const get = id => get$g(state, id);\n      const clear = id => {\n        if (isNonNullable(id)) {\n          delete state[id];\n        } else {\n          state = {};\n        }\n      };\n      return nu$8({\n        readState: () => state,\n        clear,\n        set,\n        get\n      });\n    };\n\n    var PositioningState = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        init: init$g\n    });\n\n    const Positioning = create$4({\n      fields: PositionSchema,\n      name: 'positioning',\n      active: ActivePosition,\n      apis: PositionApis,\n      state: PositioningState\n    });\n\n    const isConnected = comp => comp.getSystem().isConnected();\n    const fireDetaching = component => {\n      emit(component, detachedFromDom());\n      const children = component.components();\n      each$1(children, fireDetaching);\n    };\n    const fireAttaching = component => {\n      const children = component.components();\n      each$1(children, fireAttaching);\n      emit(component, attachedToDom());\n    };\n    const virtualAttach = (parent, child) => {\n      parent.getSystem().addToWorld(child);\n      if (inBody(parent.element)) {\n        fireAttaching(child);\n      }\n    };\n    const virtualDetach = comp => {\n      fireDetaching(comp);\n      comp.getSystem().removeFromWorld(comp);\n    };\n    const attach$1 = (parent, child) => {\n      append$2(parent.element, child.element);\n    };\n    const detachChildren$1 = component => {\n      each$1(component.components(), childComp => remove$5(childComp.element));\n      empty(component.element);\n      component.syncComponents();\n    };\n    const replaceChildren = (component, newSpecs, buildNewChildren) => {\n      const subs = component.components();\n      detachChildren$1(component);\n      const newChildren = buildNewChildren(newSpecs);\n      const deleted = difference(subs, newChildren);\n      each$1(deleted, comp => {\n        fireDetaching(comp);\n        component.getSystem().removeFromWorld(comp);\n      });\n      each$1(newChildren, childComp => {\n        if (!isConnected(childComp)) {\n          component.getSystem().addToWorld(childComp);\n          attach$1(component, childComp);\n          if (inBody(component.element)) {\n            fireAttaching(childComp);\n          }\n        } else {\n          attach$1(component, childComp);\n        }\n      });\n      component.syncComponents();\n    };\n    const virtualReplaceChildren = (component, newSpecs, buildNewChildren) => {\n      const subs = component.components();\n      const existingComps = bind$3(newSpecs, spec => getPremade(spec).toArray());\n      each$1(subs, childComp => {\n        if (!contains$2(existingComps, childComp)) {\n          virtualDetach(childComp);\n        }\n      });\n      const newChildren = buildNewChildren(newSpecs);\n      const deleted = difference(subs, newChildren);\n      each$1(deleted, deletedComp => {\n        if (isConnected(deletedComp)) {\n          virtualDetach(deletedComp);\n        }\n      });\n      each$1(newChildren, childComp => {\n        if (!isConnected(childComp)) {\n          virtualAttach(component, childComp);\n        }\n      });\n      component.syncComponents();\n    };\n\n    const attach = (parent, child) => {\n      attachWith(parent, child, append$2);\n    };\n    const attachWith = (parent, child, insertion) => {\n      parent.getSystem().addToWorld(child);\n      insertion(parent.element, child.element);\n      if (inBody(parent.element)) {\n        fireAttaching(child);\n      }\n      parent.syncComponents();\n    };\n    const doDetach = component => {\n      fireDetaching(component);\n      remove$5(component.element);\n      component.getSystem().removeFromWorld(component);\n    };\n    const detach = component => {\n      const parent$1 = parent(component.element).bind(p => component.getSystem().getByDom(p).toOptional());\n      doDetach(component);\n      parent$1.each(p => {\n        p.syncComponents();\n      });\n    };\n    const detachChildren = component => {\n      const subs = component.components();\n      each$1(subs, doDetach);\n      empty(component.element);\n      component.syncComponents();\n    };\n    const attachSystem = (element, guiSystem) => {\n      attachSystemWith(element, guiSystem, append$2);\n    };\n    const attachSystemAfter = (element, guiSystem) => {\n      attachSystemWith(element, guiSystem, after$2);\n    };\n    const attachSystemWith = (element, guiSystem, inserter) => {\n      inserter(element, guiSystem.element);\n      const children$1 = children(guiSystem.element);\n      each$1(children$1, child => {\n        guiSystem.getByDom(child).each(fireAttaching);\n      });\n    };\n    const detachSystem = guiSystem => {\n      const children$1 = children(guiSystem.element);\n      each$1(children$1, child => {\n        guiSystem.getByDom(child).each(fireDetaching);\n      });\n      remove$5(guiSystem.element);\n    };\n\n    const rebuild = (sandbox, sConfig, sState, data) => {\n      sState.get().each(_data => {\n        detachChildren(sandbox);\n      });\n      const point = sConfig.getAttachPoint(sandbox);\n      attach(point, sandbox);\n      const built = sandbox.getSystem().build(data);\n      attach(sandbox, built);\n      sState.set(built);\n      return built;\n    };\n    const open$1 = (sandbox, sConfig, sState, data) => {\n      const newState = rebuild(sandbox, sConfig, sState, data);\n      sConfig.onOpen(sandbox, newState);\n      return newState;\n    };\n    const setContent = (sandbox, sConfig, sState, data) => sState.get().map(() => rebuild(sandbox, sConfig, sState, data));\n    const openWhileCloaked = (sandbox, sConfig, sState, data, transaction) => {\n      cloak(sandbox, sConfig);\n      open$1(sandbox, sConfig, sState, data);\n      transaction();\n      decloak(sandbox, sConfig);\n    };\n    const close$1 = (sandbox, sConfig, sState) => {\n      sState.get().each(data => {\n        detachChildren(sandbox);\n        detach(sandbox);\n        sConfig.onClose(sandbox, data);\n        sState.clear();\n      });\n    };\n    const isOpen$1 = (_sandbox, _sConfig, sState) => sState.isOpen();\n    const isPartOf = (sandbox, sConfig, sState, queryElem) => isOpen$1(sandbox, sConfig, sState) && sState.get().exists(data => sConfig.isPartOf(sandbox, data, queryElem));\n    const getState$2 = (_sandbox, _sConfig, sState) => sState.get();\n    const store = (sandbox, cssKey, attr, newValue) => {\n      getRaw(sandbox.element, cssKey).fold(() => {\n        remove$7(sandbox.element, attr);\n      }, v => {\n        set$9(sandbox.element, attr, v);\n      });\n      set$8(sandbox.element, cssKey, newValue);\n    };\n    const restore = (sandbox, cssKey, attr) => {\n      getOpt(sandbox.element, attr).fold(() => remove$6(sandbox.element, cssKey), oldValue => set$8(sandbox.element, cssKey, oldValue));\n    };\n    const cloak = (sandbox, sConfig, _sState) => {\n      const sink = sConfig.getAttachPoint(sandbox);\n      set$8(sandbox.element, 'position', Positioning.getMode(sink));\n      store(sandbox, 'visibility', sConfig.cloakVisibilityAttr, 'hidden');\n    };\n    const hasPosition = element => exists([\n      'top',\n      'left',\n      'right',\n      'bottom'\n    ], pos => getRaw(element, pos).isSome());\n    const decloak = (sandbox, sConfig, _sState) => {\n      if (!hasPosition(sandbox.element)) {\n        remove$6(sandbox.element, 'position');\n      }\n      restore(sandbox, 'visibility', sConfig.cloakVisibilityAttr);\n    };\n\n    var SandboxApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        cloak: cloak,\n        decloak: decloak,\n        open: open$1,\n        openWhileCloaked: openWhileCloaked,\n        close: close$1,\n        isOpen: isOpen$1,\n        isPartOf: isPartOf,\n        getState: getState$2,\n        setContent: setContent\n    });\n\n    const events$g = (sandboxConfig, sandboxState) => derive$2([run$1(sandboxClose(), (sandbox, _simulatedEvent) => {\n        close$1(sandbox, sandboxConfig, sandboxState);\n      })]);\n\n    var ActiveSandbox = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        events: events$g\n    });\n\n    var SandboxSchema = [\n      onHandler('onOpen'),\n      onHandler('onClose'),\n      required$1('isPartOf'),\n      required$1('getAttachPoint'),\n      defaulted('cloakVisibilityAttr', 'data-precloak-visibility')\n    ];\n\n    const init$f = () => {\n      const contents = value$2();\n      const readState = constant$1('not-implemented');\n      return nu$8({\n        readState,\n        isOpen: contents.isSet,\n        clear: contents.clear,\n        set: contents.set,\n        get: contents.get\n      });\n    };\n\n    var SandboxState = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        init: init$f\n    });\n\n    const Sandboxing = create$4({\n      fields: SandboxSchema,\n      name: 'sandboxing',\n      active: ActiveSandbox,\n      apis: SandboxApis,\n      state: SandboxState\n    });\n\n    const dismissPopups = constant$1('dismiss.popups');\n    const repositionPopups = constant$1('reposition.popups');\n    const mouseReleased = constant$1('mouse.released');\n\n    const schema$x = objOfOnly([\n      defaulted('isExtraPart', never),\n      optionObjOf('fireEventInstead', [defaulted('event', dismissRequested())])\n    ]);\n    const receivingChannel$1 = rawSpec => {\n      const detail = asRawOrDie$1('Dismissal', schema$x, rawSpec);\n      return {\n        [dismissPopups()]: {\n          schema: objOfOnly([required$1('target')]),\n          onReceive: (sandbox, data) => {\n            if (Sandboxing.isOpen(sandbox)) {\n              const isPart = Sandboxing.isPartOf(sandbox, data.target) || detail.isExtraPart(sandbox, data.target);\n              if (!isPart) {\n                detail.fireEventInstead.fold(() => Sandboxing.close(sandbox), fe => emit(sandbox, fe.event));\n              }\n            }\n          }\n        }\n      };\n    };\n\n    const schema$w = objOfOnly([\n      optionObjOf('fireEventInstead', [defaulted('event', repositionRequested())]),\n      requiredFunction('doReposition')\n    ]);\n    const receivingChannel = rawSpec => {\n      const detail = asRawOrDie$1('Reposition', schema$w, rawSpec);\n      return {\n        [repositionPopups()]: {\n          onReceive: sandbox => {\n            if (Sandboxing.isOpen(sandbox)) {\n              detail.fireEventInstead.fold(() => detail.doReposition(sandbox), fe => emit(sandbox, fe.event));\n            }\n          }\n        }\n      };\n    };\n\n    const onLoad$5 = (component, repConfig, repState) => {\n      repConfig.store.manager.onLoad(component, repConfig, repState);\n    };\n    const onUnload$2 = (component, repConfig, repState) => {\n      repConfig.store.manager.onUnload(component, repConfig, repState);\n    };\n    const setValue$3 = (component, repConfig, repState, data) => {\n      repConfig.store.manager.setValue(component, repConfig, repState, data);\n    };\n    const getValue$3 = (component, repConfig, repState) => repConfig.store.manager.getValue(component, repConfig, repState);\n    const getState$1 = (component, repConfig, repState) => repState;\n\n    var RepresentApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        onLoad: onLoad$5,\n        onUnload: onUnload$2,\n        setValue: setValue$3,\n        getValue: getValue$3,\n        getState: getState$1\n    });\n\n    const events$f = (repConfig, repState) => {\n      const es = repConfig.resetOnDom ? [\n        runOnAttached((comp, _se) => {\n          onLoad$5(comp, repConfig, repState);\n        }),\n        runOnDetached((comp, _se) => {\n          onUnload$2(comp, repConfig, repState);\n        })\n      ] : [loadEvent(repConfig, repState, onLoad$5)];\n      return derive$2(es);\n    };\n\n    var ActiveRepresenting = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        events: events$f\n    });\n\n    const memory$1 = () => {\n      const data = Cell(null);\n      const readState = () => ({\n        mode: 'memory',\n        value: data.get()\n      });\n      const isNotSet = () => data.get() === null;\n      const clear = () => {\n        data.set(null);\n      };\n      return nu$8({\n        set: data.set,\n        get: data.get,\n        isNotSet,\n        clear,\n        readState\n      });\n    };\n    const manual = () => {\n      const readState = noop;\n      return nu$8({ readState });\n    };\n    const dataset = () => {\n      const dataByValue = Cell({});\n      const dataByText = Cell({});\n      const readState = () => ({\n        mode: 'dataset',\n        dataByValue: dataByValue.get(),\n        dataByText: dataByText.get()\n      });\n      const clear = () => {\n        dataByValue.set({});\n        dataByText.set({});\n      };\n      const lookup = itemString => get$g(dataByValue.get(), itemString).orThunk(() => get$g(dataByText.get(), itemString));\n      const update = items => {\n        const currentDataByValue = dataByValue.get();\n        const currentDataByText = dataByText.get();\n        const newDataByValue = {};\n        const newDataByText = {};\n        each$1(items, item => {\n          newDataByValue[item.value] = item;\n          get$g(item, 'meta').each(meta => {\n            get$g(meta, 'text').each(text => {\n              newDataByText[text] = item;\n            });\n          });\n        });\n        dataByValue.set({\n          ...currentDataByValue,\n          ...newDataByValue\n        });\n        dataByText.set({\n          ...currentDataByText,\n          ...newDataByText\n        });\n      };\n      return nu$8({\n        readState,\n        lookup,\n        update,\n        clear\n      });\n    };\n    const init$e = spec => spec.store.manager.state(spec);\n\n    var RepresentState = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        memory: memory$1,\n        dataset: dataset,\n        manual: manual,\n        init: init$e\n    });\n\n    const setValue$2 = (component, repConfig, repState, data) => {\n      const store = repConfig.store;\n      repState.update([data]);\n      store.setValue(component, data);\n      repConfig.onSetValue(component, data);\n    };\n    const getValue$2 = (component, repConfig, repState) => {\n      const store = repConfig.store;\n      const key = store.getDataKey(component);\n      return repState.lookup(key).getOrThunk(() => store.getFallbackEntry(key));\n    };\n    const onLoad$4 = (component, repConfig, repState) => {\n      const store = repConfig.store;\n      store.initialValue.each(data => {\n        setValue$2(component, repConfig, repState, data);\n      });\n    };\n    const onUnload$1 = (component, repConfig, repState) => {\n      repState.clear();\n    };\n    var DatasetStore = [\n      option$3('initialValue'),\n      required$1('getFallbackEntry'),\n      required$1('getDataKey'),\n      required$1('setValue'),\n      output$1('manager', {\n        setValue: setValue$2,\n        getValue: getValue$2,\n        onLoad: onLoad$4,\n        onUnload: onUnload$1,\n        state: dataset\n      })\n    ];\n\n    const getValue$1 = (component, repConfig, _repState) => repConfig.store.getValue(component);\n    const setValue$1 = (component, repConfig, _repState, data) => {\n      repConfig.store.setValue(component, data);\n      repConfig.onSetValue(component, data);\n    };\n    const onLoad$3 = (component, repConfig, _repState) => {\n      repConfig.store.initialValue.each(data => {\n        repConfig.store.setValue(component, data);\n      });\n    };\n    var ManualStore = [\n      required$1('getValue'),\n      defaulted('setValue', noop),\n      option$3('initialValue'),\n      output$1('manager', {\n        setValue: setValue$1,\n        getValue: getValue$1,\n        onLoad: onLoad$3,\n        onUnload: noop,\n        state: NoState.init\n      })\n    ];\n\n    const setValue = (component, repConfig, repState, data) => {\n      repState.set(data);\n      repConfig.onSetValue(component, data);\n    };\n    const getValue = (component, repConfig, repState) => repState.get();\n    const onLoad$2 = (component, repConfig, repState) => {\n      repConfig.store.initialValue.each(initVal => {\n        if (repState.isNotSet()) {\n          repState.set(initVal);\n        }\n      });\n    };\n    const onUnload = (component, repConfig, repState) => {\n      repState.clear();\n    };\n    var MemoryStore = [\n      option$3('initialValue'),\n      output$1('manager', {\n        setValue,\n        getValue,\n        onLoad: onLoad$2,\n        onUnload,\n        state: memory$1\n      })\n    ];\n\n    var RepresentSchema = [\n      defaultedOf('store', { mode: 'memory' }, choose$1('mode', {\n        memory: MemoryStore,\n        manual: ManualStore,\n        dataset: DatasetStore\n      })),\n      onHandler('onSetValue'),\n      defaulted('resetOnDom', false)\n    ];\n\n    const Representing = create$4({\n      fields: RepresentSchema,\n      name: 'representing',\n      active: ActiveRepresenting,\n      apis: RepresentApis,\n      extra: {\n        setValueFrom: (component, source) => {\n          const value = Representing.getValue(source);\n          Representing.setValue(component, value);\n        }\n      },\n      state: RepresentState\n    });\n\n    const field = (name, forbidden) => defaultedObjOf(name, {}, map$2(forbidden, f => forbid(f.name(), 'Cannot configure ' + f.name() + ' for ' + name)).concat([customField('dump', identity)]));\n    const get$3 = data => data.dump;\n    const augment = (data, original) => ({\n      ...derive$1(original),\n      ...data.dump\n    });\n    const SketchBehaviours = {\n      field,\n      augment,\n      get: get$3\n    };\n\n    const _placeholder = 'placeholder';\n    const adt$3 = Adt.generate([\n      {\n        single: [\n          'required',\n          'valueThunk'\n        ]\n      },\n      {\n        multiple: [\n          'required',\n          'valueThunks'\n        ]\n      }\n    ]);\n    const isSubstituted = spec => has$2(spec, 'uiType');\n    const subPlaceholder = (owner, detail, compSpec, placeholders) => {\n      if (owner.exists(o => o !== compSpec.owner)) {\n        return adt$3.single(true, constant$1(compSpec));\n      }\n      return get$g(placeholders, compSpec.name).fold(() => {\n        throw new Error('Unknown placeholder component: ' + compSpec.name + '\\nKnown: [' + keys(placeholders) + ']\\nNamespace: ' + owner.getOr('none') + '\\nSpec: ' + JSON.stringify(compSpec, null, 2));\n      }, newSpec => newSpec.replace());\n    };\n    const scan = (owner, detail, compSpec, placeholders) => {\n      if (isSubstituted(compSpec) && compSpec.uiType === _placeholder) {\n        return subPlaceholder(owner, detail, compSpec, placeholders);\n      } else {\n        return adt$3.single(false, constant$1(compSpec));\n      }\n    };\n    const substitute = (owner, detail, compSpec, placeholders) => {\n      const base = scan(owner, detail, compSpec, placeholders);\n      return base.fold((req, valueThunk) => {\n        const value = isSubstituted(compSpec) ? valueThunk(detail, compSpec.config, compSpec.validated) : valueThunk(detail);\n        const childSpecs = get$g(value, 'components').getOr([]);\n        const substituted = bind$3(childSpecs, c => substitute(owner, detail, c, placeholders));\n        return [{\n            ...value,\n            components: substituted\n          }];\n      }, (req, valuesThunk) => {\n        if (isSubstituted(compSpec)) {\n          const values = valuesThunk(detail, compSpec.config, compSpec.validated);\n          const preprocessor = compSpec.validated.preprocess.getOr(identity);\n          return preprocessor(values);\n        } else {\n          return valuesThunk(detail);\n        }\n      });\n    };\n    const substituteAll = (owner, detail, components, placeholders) => bind$3(components, c => substitute(owner, detail, c, placeholders));\n    const oneReplace = (label, replacements) => {\n      let called = false;\n      const used = () => called;\n      const replace = () => {\n        if (called) {\n          throw new Error('Trying to use the same placeholder more than once: ' + label);\n        }\n        called = true;\n        return replacements;\n      };\n      const required = () => replacements.fold((req, _) => req, (req, _) => req);\n      return {\n        name: constant$1(label),\n        required,\n        used,\n        replace\n      };\n    };\n    const substitutePlaces = (owner, detail, components, placeholders) => {\n      const ps = map$1(placeholders, (ph, name) => oneReplace(name, ph));\n      const outcome = substituteAll(owner, detail, components, ps);\n      each(ps, p => {\n        if (p.used() === false && p.required()) {\n          throw new Error('Placeholder: ' + p.name() + ' was not found in components list\\nNamespace: ' + owner.getOr('none') + '\\nComponents: ' + JSON.stringify(detail.components, null, 2));\n        }\n      });\n      return outcome;\n    };\n    const single$2 = adt$3.single;\n    const multiple = adt$3.multiple;\n    const placeholder = constant$1(_placeholder);\n\n    const adt$2 = Adt.generate([\n      { required: ['data'] },\n      { external: ['data'] },\n      { optional: ['data'] },\n      { group: ['data'] }\n    ]);\n    const fFactory = defaulted('factory', { sketch: identity });\n    const fSchema = defaulted('schema', []);\n    const fName = required$1('name');\n    const fPname = field$1('pname', 'pname', defaultedThunk(typeSpec => '<alloy.' + generate$6(typeSpec.name) + '>'), anyValue());\n    const fGroupSchema = customField('schema', () => [option$3('preprocess')]);\n    const fDefaults = defaulted('defaults', constant$1({}));\n    const fOverrides = defaulted('overrides', constant$1({}));\n    const requiredSpec = objOf([\n      fFactory,\n      fSchema,\n      fName,\n      fPname,\n      fDefaults,\n      fOverrides\n    ]);\n    const externalSpec = objOf([\n      fFactory,\n      fSchema,\n      fName,\n      fDefaults,\n      fOverrides\n    ]);\n    const optionalSpec = objOf([\n      fFactory,\n      fSchema,\n      fName,\n      fPname,\n      fDefaults,\n      fOverrides\n    ]);\n    const groupSpec = objOf([\n      fFactory,\n      fGroupSchema,\n      fName,\n      required$1('unit'),\n      fPname,\n      fDefaults,\n      fOverrides\n    ]);\n    const asNamedPart = part => {\n      return part.fold(Optional.some, Optional.none, Optional.some, Optional.some);\n    };\n    const name$2 = part => {\n      const get = data => data.name;\n      return part.fold(get, get, get, get);\n    };\n    const asCommon = part => {\n      return part.fold(identity, identity, identity, identity);\n    };\n    const convert = (adtConstructor, partSchema) => spec => {\n      const data = asRawOrDie$1('Converting part type', partSchema, spec);\n      return adtConstructor(data);\n    };\n    const required = convert(adt$2.required, requiredSpec);\n    const external = convert(adt$2.external, externalSpec);\n    const optional = convert(adt$2.optional, optionalSpec);\n    const group = convert(adt$2.group, groupSpec);\n    const original = constant$1('entirety');\n\n    var PartType = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        required: required,\n        external: external,\n        optional: optional,\n        group: group,\n        asNamedPart: asNamedPart,\n        name: name$2,\n        asCommon: asCommon,\n        original: original\n    });\n\n    const combine = (detail, data, partSpec, partValidated) => deepMerge(data.defaults(detail, partSpec, partValidated), partSpec, { uid: detail.partUids[data.name] }, data.overrides(detail, partSpec, partValidated));\n    const subs = (owner, detail, parts) => {\n      const internals = {};\n      const externals = {};\n      each$1(parts, part => {\n        part.fold(data => {\n          internals[data.pname] = single$2(true, (detail, partSpec, partValidated) => data.factory.sketch(combine(detail, data, partSpec, partValidated)));\n        }, data => {\n          const partSpec = detail.parts[data.name];\n          externals[data.name] = constant$1(data.factory.sketch(combine(detail, data, partSpec[original()]), partSpec));\n        }, data => {\n          internals[data.pname] = single$2(false, (detail, partSpec, partValidated) => data.factory.sketch(combine(detail, data, partSpec, partValidated)));\n        }, data => {\n          internals[data.pname] = multiple(true, (detail, _partSpec, _partValidated) => {\n            const units = detail[data.name];\n            return map$2(units, u => data.factory.sketch(deepMerge(data.defaults(detail, u, _partValidated), u, data.overrides(detail, u))));\n          });\n        });\n      });\n      return {\n        internals: constant$1(internals),\n        externals: constant$1(externals)\n      };\n    };\n\n    const generate$3 = (owner, parts) => {\n      const r = {};\n      each$1(parts, part => {\n        asNamedPart(part).each(np => {\n          const g = doGenerateOne(owner, np.pname);\n          r[np.name] = config => {\n            const validated = asRawOrDie$1('Part: ' + np.name + ' in ' + owner, objOf(np.schema), config);\n            return {\n              ...g,\n              config,\n              validated\n            };\n          };\n        });\n      });\n      return r;\n    };\n    const doGenerateOne = (owner, pname) => ({\n      uiType: placeholder(),\n      owner,\n      name: pname\n    });\n    const generateOne$1 = (owner, pname, config) => ({\n      uiType: placeholder(),\n      owner,\n      name: pname,\n      config,\n      validated: {}\n    });\n    const schemas = parts => bind$3(parts, part => part.fold(Optional.none, Optional.some, Optional.none, Optional.none).map(data => requiredObjOf(data.name, data.schema.concat([snapshot(original())]))).toArray());\n    const names = parts => map$2(parts, name$2);\n    const substitutes = (owner, detail, parts) => subs(owner, detail, parts);\n    const components$1 = (owner, detail, internals) => substitutePlaces(Optional.some(owner), detail, detail.components, internals);\n    const getPart = (component, detail, partKey) => {\n      const uid = detail.partUids[partKey];\n      return component.getSystem().getByUid(uid).toOptional();\n    };\n    const getPartOrDie = (component, detail, partKey) => getPart(component, detail, partKey).getOrDie('Could not find part: ' + partKey);\n    const getParts = (component, detail, partKeys) => {\n      const r = {};\n      const uids = detail.partUids;\n      const system = component.getSystem();\n      each$1(partKeys, pk => {\n        r[pk] = constant$1(system.getByUid(uids[pk]));\n      });\n      return r;\n    };\n    const getAllParts = (component, detail) => {\n      const system = component.getSystem();\n      return map$1(detail.partUids, (pUid, _k) => constant$1(system.getByUid(pUid)));\n    };\n    const getAllPartNames = detail => keys(detail.partUids);\n    const getPartsOrDie = (component, detail, partKeys) => {\n      const r = {};\n      const uids = detail.partUids;\n      const system = component.getSystem();\n      each$1(partKeys, pk => {\n        r[pk] = constant$1(system.getByUid(uids[pk]).getOrDie());\n      });\n      return r;\n    };\n    const defaultUids = (baseUid, partTypes) => {\n      const partNames = names(partTypes);\n      return wrapAll(map$2(partNames, pn => ({\n        key: pn,\n        value: baseUid + '-' + pn\n      })));\n    };\n    const defaultUidsSchema = partTypes => field$1('partUids', 'partUids', mergeWithThunk(spec => defaultUids(spec.uid, partTypes)), anyValue());\n\n    var AlloyParts = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        generate: generate$3,\n        generateOne: generateOne$1,\n        schemas: schemas,\n        names: names,\n        substitutes: substitutes,\n        components: components$1,\n        defaultUids: defaultUids,\n        defaultUidsSchema: defaultUidsSchema,\n        getAllParts: getAllParts,\n        getAllPartNames: getAllPartNames,\n        getPart: getPart,\n        getPartOrDie: getPartOrDie,\n        getParts: getParts,\n        getPartsOrDie: getPartsOrDie\n    });\n\n    const base = (partSchemas, partUidsSchemas) => {\n      const ps = partSchemas.length > 0 ? [requiredObjOf('parts', partSchemas)] : [];\n      return ps.concat([\n        required$1('uid'),\n        defaulted('dom', {}),\n        defaulted('components', []),\n        snapshot('originalSpec'),\n        defaulted('debug.sketcher', {})\n      ]).concat(partUidsSchemas);\n    };\n    const asRawOrDie = (label, schema, spec, partSchemas, partUidsSchemas) => {\n      const baseS = base(partSchemas, partUidsSchemas);\n      return asRawOrDie$1(label + ' [SpecSchema]', objOfOnly(baseS.concat(schema)), spec);\n    };\n\n    const single$1 = (owner, schema, factory, spec) => {\n      const specWithUid = supplyUid(spec);\n      const detail = asRawOrDie(owner, schema, specWithUid, [], []);\n      return factory(detail, specWithUid);\n    };\n    const composite$1 = (owner, schema, partTypes, factory, spec) => {\n      const specWithUid = supplyUid(spec);\n      const partSchemas = schemas(partTypes);\n      const partUidsSchema = defaultUidsSchema(partTypes);\n      const detail = asRawOrDie(owner, schema, specWithUid, partSchemas, [partUidsSchema]);\n      const subs = substitutes(owner, detail, partTypes);\n      const components = components$1(owner, detail, subs.internals());\n      return factory(detail, components, specWithUid, subs.externals());\n    };\n    const hasUid = spec => has$2(spec, 'uid');\n    const supplyUid = spec => {\n      return hasUid(spec) ? spec : {\n        ...spec,\n        uid: generate$5('uid')\n      };\n    };\n\n    const isSketchSpec = spec => {\n      return spec.uid !== undefined;\n    };\n    const singleSchema = objOfOnly([\n      required$1('name'),\n      required$1('factory'),\n      required$1('configFields'),\n      defaulted('apis', {}),\n      defaulted('extraApis', {})\n    ]);\n    const compositeSchema = objOfOnly([\n      required$1('name'),\n      required$1('factory'),\n      required$1('configFields'),\n      required$1('partFields'),\n      defaulted('apis', {}),\n      defaulted('extraApis', {})\n    ]);\n    const single = rawConfig => {\n      const config = asRawOrDie$1('Sketcher for ' + rawConfig.name, singleSchema, rawConfig);\n      const sketch = spec => single$1(config.name, config.configFields, config.factory, spec);\n      const apis = map$1(config.apis, makeApi);\n      const extraApis = map$1(config.extraApis, (f, k) => markAsExtraApi(f, k));\n      return {\n        name: config.name,\n        configFields: config.configFields,\n        sketch,\n        ...apis,\n        ...extraApis\n      };\n    };\n    const composite = rawConfig => {\n      const config = asRawOrDie$1('Sketcher for ' + rawConfig.name, compositeSchema, rawConfig);\n      const sketch = spec => composite$1(config.name, config.configFields, config.partFields, config.factory, spec);\n      const parts = generate$3(config.name, config.partFields);\n      const apis = map$1(config.apis, makeApi);\n      const extraApis = map$1(config.extraApis, (f, k) => markAsExtraApi(f, k));\n      return {\n        name: config.name,\n        partFields: config.partFields,\n        configFields: config.configFields,\n        sketch,\n        parts,\n        ...apis,\n        ...extraApis\n      };\n    };\n\n    const inside = target => isTag('input')(target) && get$f(target, 'type') !== 'radio' || isTag('textarea')(target);\n\n    const getCurrent = (component, composeConfig, _composeState) => composeConfig.find(component);\n\n    var ComposeApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        getCurrent: getCurrent\n    });\n\n    const ComposeSchema = [required$1('find')];\n\n    const Composing = create$4({\n      fields: ComposeSchema,\n      name: 'composing',\n      apis: ComposeApis\n    });\n\n    const nativeDisabled = [\n      'input',\n      'button',\n      'textarea',\n      'select'\n    ];\n    const onLoad$1 = (component, disableConfig, disableState) => {\n      const f = disableConfig.disabled() ? disable : enable;\n      f(component, disableConfig);\n    };\n    const hasNative = (component, config) => config.useNative === true && contains$2(nativeDisabled, name$3(component.element));\n    const nativeIsDisabled = component => has$1(component.element, 'disabled');\n    const nativeDisable = component => {\n      set$9(component.element, 'disabled', 'disabled');\n    };\n    const nativeEnable = component => {\n      remove$7(component.element, 'disabled');\n    };\n    const ariaIsDisabled = component => get$f(component.element, 'aria-disabled') === 'true';\n    const ariaDisable = component => {\n      set$9(component.element, 'aria-disabled', 'true');\n    };\n    const ariaEnable = component => {\n      set$9(component.element, 'aria-disabled', 'false');\n    };\n    const disable = (component, disableConfig, _disableState) => {\n      disableConfig.disableClass.each(disableClass => {\n        add$2(component.element, disableClass);\n      });\n      const f = hasNative(component, disableConfig) ? nativeDisable : ariaDisable;\n      f(component);\n      disableConfig.onDisabled(component);\n    };\n    const enable = (component, disableConfig, _disableState) => {\n      disableConfig.disableClass.each(disableClass => {\n        remove$2(component.element, disableClass);\n      });\n      const f = hasNative(component, disableConfig) ? nativeEnable : ariaEnable;\n      f(component);\n      disableConfig.onEnabled(component);\n    };\n    const isDisabled = (component, disableConfig) => hasNative(component, disableConfig) ? nativeIsDisabled(component) : ariaIsDisabled(component);\n    const set$4 = (component, disableConfig, disableState, disabled) => {\n      const f = disabled ? disable : enable;\n      f(component, disableConfig);\n    };\n\n    var DisableApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        enable: enable,\n        disable: disable,\n        isDisabled: isDisabled,\n        onLoad: onLoad$1,\n        set: set$4\n    });\n\n    const exhibit$5 = (base, disableConfig) => nu$7({ classes: disableConfig.disabled() ? disableConfig.disableClass.toArray() : [] });\n    const events$e = (disableConfig, disableState) => derive$2([\n      abort(execute$5(), (component, _simulatedEvent) => isDisabled(component, disableConfig)),\n      loadEvent(disableConfig, disableState, onLoad$1)\n    ]);\n\n    var ActiveDisable = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        exhibit: exhibit$5,\n        events: events$e\n    });\n\n    var DisableSchema = [\n      defaultedFunction('disabled', never),\n      defaulted('useNative', true),\n      option$3('disableClass'),\n      onHandler('onDisabled'),\n      onHandler('onEnabled')\n    ];\n\n    const Disabling = create$4({\n      fields: DisableSchema,\n      name: 'disabling',\n      active: ActiveDisable,\n      apis: DisableApis\n    });\n\n    const dehighlightAllExcept = (component, hConfig, hState, skip) => {\n      const highlighted = descendants(component.element, '.' + hConfig.highlightClass);\n      each$1(highlighted, h => {\n        const shouldSkip = exists(skip, skipComp => eq(skipComp.element, h));\n        if (!shouldSkip) {\n          remove$2(h, hConfig.highlightClass);\n          component.getSystem().getByDom(h).each(target => {\n            hConfig.onDehighlight(component, target);\n            emit(target, dehighlight$1());\n          });\n        }\n      });\n    };\n    const dehighlightAll = (component, hConfig, hState) => dehighlightAllExcept(component, hConfig, hState, []);\n    const dehighlight = (component, hConfig, hState, target) => {\n      if (isHighlighted(component, hConfig, hState, target)) {\n        remove$2(target.element, hConfig.highlightClass);\n        hConfig.onDehighlight(component, target);\n        emit(target, dehighlight$1());\n      }\n    };\n    const highlight = (component, hConfig, hState, target) => {\n      dehighlightAllExcept(component, hConfig, hState, [target]);\n      if (!isHighlighted(component, hConfig, hState, target)) {\n        add$2(target.element, hConfig.highlightClass);\n        hConfig.onHighlight(component, target);\n        emit(target, highlight$1());\n      }\n    };\n    const highlightFirst = (component, hConfig, hState) => {\n      getFirst(component, hConfig).each(firstComp => {\n        highlight(component, hConfig, hState, firstComp);\n      });\n    };\n    const highlightLast = (component, hConfig, hState) => {\n      getLast(component, hConfig).each(lastComp => {\n        highlight(component, hConfig, hState, lastComp);\n      });\n    };\n    const highlightAt = (component, hConfig, hState, index) => {\n      getByIndex(component, hConfig, hState, index).fold(err => {\n        throw err;\n      }, firstComp => {\n        highlight(component, hConfig, hState, firstComp);\n      });\n    };\n    const highlightBy = (component, hConfig, hState, predicate) => {\n      const candidates = getCandidates(component, hConfig);\n      const targetComp = find$5(candidates, predicate);\n      targetComp.each(c => {\n        highlight(component, hConfig, hState, c);\n      });\n    };\n    const isHighlighted = (component, hConfig, hState, queryTarget) => has(queryTarget.element, hConfig.highlightClass);\n    const getHighlighted = (component, hConfig, _hState) => descendant(component.element, '.' + hConfig.highlightClass).bind(e => component.getSystem().getByDom(e).toOptional());\n    const getByIndex = (component, hConfig, hState, index) => {\n      const items = descendants(component.element, '.' + hConfig.itemClass);\n      return Optional.from(items[index]).fold(() => Result.error(new Error('No element found with index ' + index)), component.getSystem().getByDom);\n    };\n    const getFirst = (component, hConfig, _hState) => descendant(component.element, '.' + hConfig.itemClass).bind(e => component.getSystem().getByDom(e).toOptional());\n    const getLast = (component, hConfig, _hState) => {\n      const items = descendants(component.element, '.' + hConfig.itemClass);\n      const last = items.length > 0 ? Optional.some(items[items.length - 1]) : Optional.none();\n      return last.bind(c => component.getSystem().getByDom(c).toOptional());\n    };\n    const getDelta$2 = (component, hConfig, hState, delta) => {\n      const items = descendants(component.element, '.' + hConfig.itemClass);\n      const current = findIndex$1(items, item => has(item, hConfig.highlightClass));\n      return current.bind(selected => {\n        const dest = cycleBy(selected, delta, 0, items.length - 1);\n        return component.getSystem().getByDom(items[dest]).toOptional();\n      });\n    };\n    const getPrevious = (component, hConfig, hState) => getDelta$2(component, hConfig, hState, -1);\n    const getNext = (component, hConfig, hState) => getDelta$2(component, hConfig, hState, +1);\n    const getCandidates = (component, hConfig, _hState) => {\n      const items = descendants(component.element, '.' + hConfig.itemClass);\n      return cat(map$2(items, i => component.getSystem().getByDom(i).toOptional()));\n    };\n\n    var HighlightApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        dehighlightAll: dehighlightAll,\n        dehighlight: dehighlight,\n        highlight: highlight,\n        highlightFirst: highlightFirst,\n        highlightLast: highlightLast,\n        highlightAt: highlightAt,\n        highlightBy: highlightBy,\n        isHighlighted: isHighlighted,\n        getHighlighted: getHighlighted,\n        getFirst: getFirst,\n        getLast: getLast,\n        getPrevious: getPrevious,\n        getNext: getNext,\n        getCandidates: getCandidates\n    });\n\n    var HighlightSchema = [\n      required$1('highlightClass'),\n      required$1('itemClass'),\n      onHandler('onHighlight'),\n      onHandler('onDehighlight')\n    ];\n\n    const Highlighting = create$4({\n      fields: HighlightSchema,\n      name: 'highlighting',\n      apis: HighlightApis\n    });\n\n    const BACKSPACE = [8];\n    const TAB = [9];\n    const ENTER = [13];\n    const ESCAPE = [27];\n    const SPACE = [32];\n    const LEFT = [37];\n    const UP = [38];\n    const RIGHT = [39];\n    const DOWN = [40];\n\n    const cyclePrev = (values, index, predicate) => {\n      const before = reverse(values.slice(0, index));\n      const after = reverse(values.slice(index + 1));\n      return find$5(before.concat(after), predicate);\n    };\n    const tryPrev = (values, index, predicate) => {\n      const before = reverse(values.slice(0, index));\n      return find$5(before, predicate);\n    };\n    const cycleNext = (values, index, predicate) => {\n      const before = values.slice(0, index);\n      const after = values.slice(index + 1);\n      return find$5(after.concat(before), predicate);\n    };\n    const tryNext = (values, index, predicate) => {\n      const after = values.slice(index + 1);\n      return find$5(after, predicate);\n    };\n\n    const inSet = keys => event => {\n      const raw = event.raw;\n      return contains$2(keys, raw.which);\n    };\n    const and = preds => event => forall(preds, pred => pred(event));\n    const isShift$1 = event => {\n      const raw = event.raw;\n      return raw.shiftKey === true;\n    };\n    const isControl = event => {\n      const raw = event.raw;\n      return raw.ctrlKey === true;\n    };\n    const isNotShift = not(isShift$1);\n\n    const rule = (matches, action) => ({\n      matches,\n      classification: action\n    });\n    const choose = (transitions, event) => {\n      const transition = find$5(transitions, t => t.matches(event));\n      return transition.map(t => t.classification);\n    };\n\n    const reportFocusShifting = (component, prevFocus, newFocus) => {\n      const noChange = prevFocus.exists(p => newFocus.exists(n => eq(n, p)));\n      if (!noChange) {\n        emitWith(component, focusShifted(), {\n          prevFocus,\n          newFocus\n        });\n      }\n    };\n    const dom$2 = () => {\n      const get = component => search(component.element);\n      const set = (component, focusee) => {\n        const prevFocus = get(component);\n        component.getSystem().triggerFocus(focusee, component.element);\n        const newFocus = get(component);\n        reportFocusShifting(component, prevFocus, newFocus);\n      };\n      return {\n        get,\n        set\n      };\n    };\n    const highlights = () => {\n      const get = component => Highlighting.getHighlighted(component).map(item => item.element);\n      const set = (component, element) => {\n        const prevFocus = get(component);\n        component.getSystem().getByDom(element).fold(noop, item => {\n          Highlighting.highlight(component, item);\n        });\n        const newFocus = get(component);\n        reportFocusShifting(component, prevFocus, newFocus);\n      };\n      return {\n        get,\n        set\n      };\n    };\n\n    var FocusInsideModes;\n    (function (FocusInsideModes) {\n      FocusInsideModes['OnFocusMode'] = 'onFocus';\n      FocusInsideModes['OnEnterOrSpaceMode'] = 'onEnterOrSpace';\n      FocusInsideModes['OnApiMode'] = 'onApi';\n    }(FocusInsideModes || (FocusInsideModes = {})));\n\n    const typical = (infoSchema, stateInit, getKeydownRules, getKeyupRules, optFocusIn) => {\n      const schema = () => infoSchema.concat([\n        defaulted('focusManager', dom$2()),\n        defaultedOf('focusInside', 'onFocus', valueOf(val => contains$2([\n          'onFocus',\n          'onEnterOrSpace',\n          'onApi'\n        ], val) ? Result.value(val) : Result.error('Invalid value for focusInside'))),\n        output$1('handler', me),\n        output$1('state', stateInit),\n        output$1('sendFocusIn', optFocusIn)\n      ]);\n      const processKey = (component, simulatedEvent, getRules, keyingConfig, keyingState) => {\n        const rules = getRules(component, simulatedEvent, keyingConfig, keyingState);\n        return choose(rules, simulatedEvent.event).bind(rule => rule(component, simulatedEvent, keyingConfig, keyingState));\n      };\n      const toEvents = (keyingConfig, keyingState) => {\n        const onFocusHandler = keyingConfig.focusInside !== FocusInsideModes.OnFocusMode ? Optional.none() : optFocusIn(keyingConfig).map(focusIn => run$1(focus$4(), (component, simulatedEvent) => {\n          focusIn(component, keyingConfig, keyingState);\n          simulatedEvent.stop();\n        }));\n        const tryGoInsideComponent = (component, simulatedEvent) => {\n          const isEnterOrSpace = inSet(SPACE.concat(ENTER))(simulatedEvent.event);\n          if (keyingConfig.focusInside === FocusInsideModes.OnEnterOrSpaceMode && isEnterOrSpace && isSource(component, simulatedEvent)) {\n            optFocusIn(keyingConfig).each(focusIn => {\n              focusIn(component, keyingConfig, keyingState);\n              simulatedEvent.stop();\n            });\n          }\n        };\n        const keyboardEvents = [\n          run$1(keydown(), (component, simulatedEvent) => {\n            processKey(component, simulatedEvent, getKeydownRules, keyingConfig, keyingState).fold(() => {\n              tryGoInsideComponent(component, simulatedEvent);\n            }, _ => {\n              simulatedEvent.stop();\n            });\n          }),\n          run$1(keyup(), (component, simulatedEvent) => {\n            processKey(component, simulatedEvent, getKeyupRules, keyingConfig, keyingState).each(_ => {\n              simulatedEvent.stop();\n            });\n          })\n        ];\n        return derive$2(onFocusHandler.toArray().concat(keyboardEvents));\n      };\n      const me = {\n        schema,\n        processKey,\n        toEvents\n      };\n      return me;\n    };\n\n    const create$2 = cyclicField => {\n      const schema = [\n        option$3('onEscape'),\n        option$3('onEnter'),\n        defaulted('selector', '[data-alloy-tabstop=\"true\"]:not(:disabled)'),\n        defaulted('firstTabstop', 0),\n        defaulted('useTabstopAt', always),\n        option$3('visibilitySelector')\n      ].concat([cyclicField]);\n      const isVisible = (tabbingConfig, element) => {\n        const target = tabbingConfig.visibilitySelector.bind(sel => closest$1(element, sel)).getOr(element);\n        return get$d(target) > 0;\n      };\n      const findInitial = (component, tabbingConfig) => {\n        const tabstops = descendants(component.element, tabbingConfig.selector);\n        const visibles = filter$2(tabstops, elem => isVisible(tabbingConfig, elem));\n        return Optional.from(visibles[tabbingConfig.firstTabstop]);\n      };\n      const findCurrent = (component, tabbingConfig) => tabbingConfig.focusManager.get(component).bind(elem => closest$1(elem, tabbingConfig.selector));\n      const isTabstop = (tabbingConfig, element) => isVisible(tabbingConfig, element) && tabbingConfig.useTabstopAt(element);\n      const focusIn = (component, tabbingConfig, _tabbingState) => {\n        findInitial(component, tabbingConfig).each(target => {\n          tabbingConfig.focusManager.set(component, target);\n        });\n      };\n      const goFromTabstop = (component, tabstops, stopIndex, tabbingConfig, cycle) => cycle(tabstops, stopIndex, elem => isTabstop(tabbingConfig, elem)).fold(() => tabbingConfig.cyclic ? Optional.some(true) : Optional.none(), target => {\n        tabbingConfig.focusManager.set(component, target);\n        return Optional.some(true);\n      });\n      const go = (component, _simulatedEvent, tabbingConfig, cycle) => {\n        const tabstops = descendants(component.element, tabbingConfig.selector);\n        return findCurrent(component, tabbingConfig).bind(tabstop => {\n          const optStopIndex = findIndex$1(tabstops, curry(eq, tabstop));\n          return optStopIndex.bind(stopIndex => goFromTabstop(component, tabstops, stopIndex, tabbingConfig, cycle));\n        });\n      };\n      const goBackwards = (component, simulatedEvent, tabbingConfig) => {\n        const navigate = tabbingConfig.cyclic ? cyclePrev : tryPrev;\n        return go(component, simulatedEvent, tabbingConfig, navigate);\n      };\n      const goForwards = (component, simulatedEvent, tabbingConfig) => {\n        const navigate = tabbingConfig.cyclic ? cycleNext : tryNext;\n        return go(component, simulatedEvent, tabbingConfig, navigate);\n      };\n      const isFirstChild = elem => parentNode(elem).bind(firstChild).exists(child => eq(child, elem));\n      const goFromPseudoTabstop = (component, simulatedEvent, tabbingConfig) => findCurrent(component, tabbingConfig).filter(elem => !tabbingConfig.useTabstopAt(elem)).bind(elem => (isFirstChild(elem) ? goBackwards : goForwards)(component, simulatedEvent, tabbingConfig));\n      const execute = (component, simulatedEvent, tabbingConfig) => tabbingConfig.onEnter.bind(f => f(component, simulatedEvent));\n      const exit = (component, simulatedEvent, tabbingConfig) => tabbingConfig.onEscape.bind(f => f(component, simulatedEvent));\n      const getKeydownRules = constant$1([\n        rule(and([\n          isShift$1,\n          inSet(TAB)\n        ]), goBackwards),\n        rule(inSet(TAB), goForwards),\n        rule(and([\n          isNotShift,\n          inSet(ENTER)\n        ]), execute)\n      ]);\n      const getKeyupRules = constant$1([\n        rule(inSet(ESCAPE), exit),\n        rule(inSet(TAB), goFromPseudoTabstop)\n      ]);\n      return typical(schema, NoState.init, getKeydownRules, getKeyupRules, () => Optional.some(focusIn));\n    };\n\n    var AcyclicType = create$2(customField('cyclic', never));\n\n    var CyclicType = create$2(customField('cyclic', always));\n\n    const doDefaultExecute = (component, _simulatedEvent, focused) => {\n      dispatch(component, focused, execute$5());\n      return Optional.some(true);\n    };\n    const defaultExecute = (component, simulatedEvent, focused) => {\n      const isComplex = inside(focused) && inSet(SPACE)(simulatedEvent.event);\n      return isComplex ? Optional.none() : doDefaultExecute(component, simulatedEvent, focused);\n    };\n    const stopEventForFirefox = (_component, _simulatedEvent) => Optional.some(true);\n\n    const schema$v = [\n      defaulted('execute', defaultExecute),\n      defaulted('useSpace', false),\n      defaulted('useEnter', true),\n      defaulted('useControlEnter', false),\n      defaulted('useDown', false)\n    ];\n    const execute$4 = (component, simulatedEvent, executeConfig) => executeConfig.execute(component, simulatedEvent, component.element);\n    const getKeydownRules$5 = (component, _simulatedEvent, executeConfig, _executeState) => {\n      const spaceExec = executeConfig.useSpace && !inside(component.element) ? SPACE : [];\n      const enterExec = executeConfig.useEnter ? ENTER : [];\n      const downExec = executeConfig.useDown ? DOWN : [];\n      const execKeys = spaceExec.concat(enterExec).concat(downExec);\n      return [rule(inSet(execKeys), execute$4)].concat(executeConfig.useControlEnter ? [rule(and([\n          isControl,\n          inSet(ENTER)\n        ]), execute$4)] : []);\n    };\n    const getKeyupRules$5 = (component, _simulatedEvent, executeConfig, _executeState) => executeConfig.useSpace && !inside(component.element) ? [rule(inSet(SPACE), stopEventForFirefox)] : [];\n    var ExecutionType = typical(schema$v, NoState.init, getKeydownRules$5, getKeyupRules$5, () => Optional.none());\n\n    const flatgrid$1 = () => {\n      const dimensions = value$2();\n      const setGridSize = (numRows, numColumns) => {\n        dimensions.set({\n          numRows,\n          numColumns\n        });\n      };\n      const getNumRows = () => dimensions.get().map(d => d.numRows);\n      const getNumColumns = () => dimensions.get().map(d => d.numColumns);\n      return nu$8({\n        readState: () => dimensions.get().map(d => ({\n          numRows: String(d.numRows),\n          numColumns: String(d.numColumns)\n        })).getOr({\n          numRows: '?',\n          numColumns: '?'\n        }),\n        setGridSize,\n        getNumRows,\n        getNumColumns\n      });\n    };\n    const init$d = spec => spec.state(spec);\n\n    var KeyingState = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        flatgrid: flatgrid$1,\n        init: init$d\n    });\n\n    const useH = movement => (component, simulatedEvent, config, state) => {\n      const move = movement(component.element);\n      return use(move, component, simulatedEvent, config, state);\n    };\n    const west$1 = (moveLeft, moveRight) => {\n      const movement = onDirection(moveLeft, moveRight);\n      return useH(movement);\n    };\n    const east$1 = (moveLeft, moveRight) => {\n      const movement = onDirection(moveRight, moveLeft);\n      return useH(movement);\n    };\n    const useV = move => (component, simulatedEvent, config, state) => use(move, component, simulatedEvent, config, state);\n    const use = (move, component, simulatedEvent, config, state) => {\n      const outcome = config.focusManager.get(component).bind(focused => move(component.element, focused, config, state));\n      return outcome.map(newFocus => {\n        config.focusManager.set(component, newFocus);\n        return true;\n      });\n    };\n    const north$1 = useV;\n    const south$1 = useV;\n    const move$1 = useV;\n\n    const isHidden$1 = dom => dom.offsetWidth <= 0 && dom.offsetHeight <= 0;\n    const isVisible = element => !isHidden$1(element.dom);\n\n    const locate = (candidates, predicate) => findIndex$1(candidates, predicate).map(index => ({\n      index,\n      candidates\n    }));\n\n    const locateVisible = (container, current, selector) => {\n      const predicate = x => eq(x, current);\n      const candidates = descendants(container, selector);\n      const visible = filter$2(candidates, isVisible);\n      return locate(visible, predicate);\n    };\n    const findIndex = (elements, target) => findIndex$1(elements, elem => eq(target, elem));\n\n    const withGrid = (values, index, numCols, f) => {\n      const oldRow = Math.floor(index / numCols);\n      const oldColumn = index % numCols;\n      return f(oldRow, oldColumn).bind(address => {\n        const newIndex = address.row * numCols + address.column;\n        return newIndex >= 0 && newIndex < values.length ? Optional.some(values[newIndex]) : Optional.none();\n      });\n    };\n    const cycleHorizontal$1 = (values, index, numRows, numCols, delta) => withGrid(values, index, numCols, (oldRow, oldColumn) => {\n      const onLastRow = oldRow === numRows - 1;\n      const colsInRow = onLastRow ? values.length - oldRow * numCols : numCols;\n      const newColumn = cycleBy(oldColumn, delta, 0, colsInRow - 1);\n      return Optional.some({\n        row: oldRow,\n        column: newColumn\n      });\n    });\n    const cycleVertical$1 = (values, index, numRows, numCols, delta) => withGrid(values, index, numCols, (oldRow, oldColumn) => {\n      const newRow = cycleBy(oldRow, delta, 0, numRows - 1);\n      const onLastRow = newRow === numRows - 1;\n      const colsInRow = onLastRow ? values.length - newRow * numCols : numCols;\n      const newCol = clamp(oldColumn, 0, colsInRow - 1);\n      return Optional.some({\n        row: newRow,\n        column: newCol\n      });\n    });\n    const cycleRight$1 = (values, index, numRows, numCols) => cycleHorizontal$1(values, index, numRows, numCols, +1);\n    const cycleLeft$1 = (values, index, numRows, numCols) => cycleHorizontal$1(values, index, numRows, numCols, -1);\n    const cycleUp$1 = (values, index, numRows, numCols) => cycleVertical$1(values, index, numRows, numCols, -1);\n    const cycleDown$1 = (values, index, numRows, numCols) => cycleVertical$1(values, index, numRows, numCols, +1);\n\n    const schema$u = [\n      required$1('selector'),\n      defaulted('execute', defaultExecute),\n      onKeyboardHandler('onEscape'),\n      defaulted('captureTab', false),\n      initSize()\n    ];\n    const focusIn$3 = (component, gridConfig, _gridState) => {\n      descendant(component.element, gridConfig.selector).each(first => {\n        gridConfig.focusManager.set(component, first);\n      });\n    };\n    const findCurrent$1 = (component, gridConfig) => gridConfig.focusManager.get(component).bind(elem => closest$1(elem, gridConfig.selector));\n    const execute$3 = (component, simulatedEvent, gridConfig, _gridState) => findCurrent$1(component, gridConfig).bind(focused => gridConfig.execute(component, simulatedEvent, focused));\n    const doMove$2 = cycle => (element, focused, gridConfig, gridState) => locateVisible(element, focused, gridConfig.selector).bind(identified => cycle(identified.candidates, identified.index, gridState.getNumRows().getOr(gridConfig.initSize.numRows), gridState.getNumColumns().getOr(gridConfig.initSize.numColumns)));\n    const handleTab = (_component, _simulatedEvent, gridConfig) => gridConfig.captureTab ? Optional.some(true) : Optional.none();\n    const doEscape$1 = (component, simulatedEvent, gridConfig) => gridConfig.onEscape(component, simulatedEvent);\n    const moveLeft$3 = doMove$2(cycleLeft$1);\n    const moveRight$3 = doMove$2(cycleRight$1);\n    const moveNorth$1 = doMove$2(cycleUp$1);\n    const moveSouth$1 = doMove$2(cycleDown$1);\n    const getKeydownRules$4 = constant$1([\n      rule(inSet(LEFT), west$1(moveLeft$3, moveRight$3)),\n      rule(inSet(RIGHT), east$1(moveLeft$3, moveRight$3)),\n      rule(inSet(UP), north$1(moveNorth$1)),\n      rule(inSet(DOWN), south$1(moveSouth$1)),\n      rule(and([\n        isShift$1,\n        inSet(TAB)\n      ]), handleTab),\n      rule(and([\n        isNotShift,\n        inSet(TAB)\n      ]), handleTab),\n      rule(inSet(SPACE.concat(ENTER)), execute$3)\n    ]);\n    const getKeyupRules$4 = constant$1([\n      rule(inSet(ESCAPE), doEscape$1),\n      rule(inSet(SPACE), stopEventForFirefox)\n    ]);\n    var FlatgridType = typical(schema$u, flatgrid$1, getKeydownRules$4, getKeyupRules$4, () => Optional.some(focusIn$3));\n\n    const f = (container, selector, current, delta, getNewIndex) => {\n      const isDisabledButton = candidate => name$3(candidate) === 'button' && get$f(candidate, 'disabled') === 'disabled';\n      const tryNewIndex = (initial, index, candidates) => getNewIndex(initial, index, delta, 0, candidates.length - 1, candidates[index], newIndex => isDisabledButton(candidates[newIndex]) ? tryNewIndex(initial, newIndex, candidates) : Optional.from(candidates[newIndex]));\n      return locateVisible(container, current, selector).bind(identified => {\n        const index = identified.index;\n        const candidates = identified.candidates;\n        return tryNewIndex(index, index, candidates);\n      });\n    };\n    const horizontalWithoutCycles = (container, selector, current, delta) => f(container, selector, current, delta, (prevIndex, v, d, min, max, oldCandidate, onNewIndex) => {\n      const newIndex = clamp(v + d, min, max);\n      return newIndex === prevIndex ? Optional.from(oldCandidate) : onNewIndex(newIndex);\n    });\n    const horizontal = (container, selector, current, delta) => f(container, selector, current, delta, (prevIndex, v, d, min, max, _oldCandidate, onNewIndex) => {\n      const newIndex = cycleBy(v, d, min, max);\n      return newIndex === prevIndex ? Optional.none() : onNewIndex(newIndex);\n    });\n\n    const schema$t = [\n      required$1('selector'),\n      defaulted('getInitial', Optional.none),\n      defaulted('execute', defaultExecute),\n      onKeyboardHandler('onEscape'),\n      defaulted('executeOnMove', false),\n      defaulted('allowVertical', true),\n      defaulted('allowHorizontal', true),\n      defaulted('cycles', true)\n    ];\n    const findCurrent = (component, flowConfig) => flowConfig.focusManager.get(component).bind(elem => closest$1(elem, flowConfig.selector));\n    const execute$2 = (component, simulatedEvent, flowConfig) => findCurrent(component, flowConfig).bind(focused => flowConfig.execute(component, simulatedEvent, focused));\n    const focusIn$2 = (component, flowConfig, _state) => {\n      flowConfig.getInitial(component).orThunk(() => descendant(component.element, flowConfig.selector)).each(first => {\n        flowConfig.focusManager.set(component, first);\n      });\n    };\n    const moveLeft$2 = (element, focused, info) => (info.cycles ? horizontal : horizontalWithoutCycles)(element, info.selector, focused, -1);\n    const moveRight$2 = (element, focused, info) => (info.cycles ? horizontal : horizontalWithoutCycles)(element, info.selector, focused, +1);\n    const doMove$1 = movement => (component, simulatedEvent, flowConfig, flowState) => movement(component, simulatedEvent, flowConfig, flowState).bind(() => flowConfig.executeOnMove ? execute$2(component, simulatedEvent, flowConfig) : Optional.some(true));\n    const doEscape = (component, simulatedEvent, flowConfig) => flowConfig.onEscape(component, simulatedEvent);\n    const getKeydownRules$3 = (_component, _se, flowConfig, _flowState) => {\n      const westMovers = [...flowConfig.allowHorizontal ? LEFT : []].concat(flowConfig.allowVertical ? UP : []);\n      const eastMovers = [...flowConfig.allowHorizontal ? RIGHT : []].concat(flowConfig.allowVertical ? DOWN : []);\n      return [\n        rule(inSet(westMovers), doMove$1(west$1(moveLeft$2, moveRight$2))),\n        rule(inSet(eastMovers), doMove$1(east$1(moveLeft$2, moveRight$2))),\n        rule(inSet(ENTER), execute$2),\n        rule(inSet(SPACE), execute$2)\n      ];\n    };\n    const getKeyupRules$3 = constant$1([\n      rule(inSet(SPACE), stopEventForFirefox),\n      rule(inSet(ESCAPE), doEscape)\n    ]);\n    var FlowType = typical(schema$t, NoState.init, getKeydownRules$3, getKeyupRules$3, () => Optional.some(focusIn$2));\n\n    const toCell = (matrix, rowIndex, columnIndex) => Optional.from(matrix[rowIndex]).bind(row => Optional.from(row[columnIndex]).map(cell => ({\n      rowIndex,\n      columnIndex,\n      cell\n    })));\n    const cycleHorizontal = (matrix, rowIndex, startCol, deltaCol) => {\n      const row = matrix[rowIndex];\n      const colsInRow = row.length;\n      const newColIndex = cycleBy(startCol, deltaCol, 0, colsInRow - 1);\n      return toCell(matrix, rowIndex, newColIndex);\n    };\n    const cycleVertical = (matrix, colIndex, startRow, deltaRow) => {\n      const nextRowIndex = cycleBy(startRow, deltaRow, 0, matrix.length - 1);\n      const colsInNextRow = matrix[nextRowIndex].length;\n      const nextColIndex = clamp(colIndex, 0, colsInNextRow - 1);\n      return toCell(matrix, nextRowIndex, nextColIndex);\n    };\n    const moveHorizontal = (matrix, rowIndex, startCol, deltaCol) => {\n      const row = matrix[rowIndex];\n      const colsInRow = row.length;\n      const newColIndex = clamp(startCol + deltaCol, 0, colsInRow - 1);\n      return toCell(matrix, rowIndex, newColIndex);\n    };\n    const moveVertical = (matrix, colIndex, startRow, deltaRow) => {\n      const nextRowIndex = clamp(startRow + deltaRow, 0, matrix.length - 1);\n      const colsInNextRow = matrix[nextRowIndex].length;\n      const nextColIndex = clamp(colIndex, 0, colsInNextRow - 1);\n      return toCell(matrix, nextRowIndex, nextColIndex);\n    };\n    const cycleRight = (matrix, startRow, startCol) => cycleHorizontal(matrix, startRow, startCol, +1);\n    const cycleLeft = (matrix, startRow, startCol) => cycleHorizontal(matrix, startRow, startCol, -1);\n    const cycleUp = (matrix, startRow, startCol) => cycleVertical(matrix, startCol, startRow, -1);\n    const cycleDown = (matrix, startRow, startCol) => cycleVertical(matrix, startCol, startRow, +1);\n    const moveLeft$1 = (matrix, startRow, startCol) => moveHorizontal(matrix, startRow, startCol, -1);\n    const moveRight$1 = (matrix, startRow, startCol) => moveHorizontal(matrix, startRow, startCol, +1);\n    const moveUp$1 = (matrix, startRow, startCol) => moveVertical(matrix, startCol, startRow, -1);\n    const moveDown$1 = (matrix, startRow, startCol) => moveVertical(matrix, startCol, startRow, +1);\n\n    const schema$s = [\n      requiredObjOf('selectors', [\n        required$1('row'),\n        required$1('cell')\n      ]),\n      defaulted('cycles', true),\n      defaulted('previousSelector', Optional.none),\n      defaulted('execute', defaultExecute)\n    ];\n    const focusIn$1 = (component, matrixConfig, _state) => {\n      const focused = matrixConfig.previousSelector(component).orThunk(() => {\n        const selectors = matrixConfig.selectors;\n        return descendant(component.element, selectors.cell);\n      });\n      focused.each(cell => {\n        matrixConfig.focusManager.set(component, cell);\n      });\n    };\n    const execute$1 = (component, simulatedEvent, matrixConfig) => search(component.element).bind(focused => matrixConfig.execute(component, simulatedEvent, focused));\n    const toMatrix = (rows, matrixConfig) => map$2(rows, row => descendants(row, matrixConfig.selectors.cell));\n    const doMove = (ifCycle, ifMove) => (element, focused, matrixConfig) => {\n      const move = matrixConfig.cycles ? ifCycle : ifMove;\n      return closest$1(focused, matrixConfig.selectors.row).bind(inRow => {\n        const cellsInRow = descendants(inRow, matrixConfig.selectors.cell);\n        return findIndex(cellsInRow, focused).bind(colIndex => {\n          const allRows = descendants(element, matrixConfig.selectors.row);\n          return findIndex(allRows, inRow).bind(rowIndex => {\n            const matrix = toMatrix(allRows, matrixConfig);\n            return move(matrix, rowIndex, colIndex).map(next => next.cell);\n          });\n        });\n      });\n    };\n    const moveLeft = doMove(cycleLeft, moveLeft$1);\n    const moveRight = doMove(cycleRight, moveRight$1);\n    const moveNorth = doMove(cycleUp, moveUp$1);\n    const moveSouth = doMove(cycleDown, moveDown$1);\n    const getKeydownRules$2 = constant$1([\n      rule(inSet(LEFT), west$1(moveLeft, moveRight)),\n      rule(inSet(RIGHT), east$1(moveLeft, moveRight)),\n      rule(inSet(UP), north$1(moveNorth)),\n      rule(inSet(DOWN), south$1(moveSouth)),\n      rule(inSet(SPACE.concat(ENTER)), execute$1)\n    ]);\n    const getKeyupRules$2 = constant$1([rule(inSet(SPACE), stopEventForFirefox)]);\n    var MatrixType = typical(schema$s, NoState.init, getKeydownRules$2, getKeyupRules$2, () => Optional.some(focusIn$1));\n\n    const schema$r = [\n      required$1('selector'),\n      defaulted('execute', defaultExecute),\n      defaulted('moveOnTab', false)\n    ];\n    const execute = (component, simulatedEvent, menuConfig) => menuConfig.focusManager.get(component).bind(focused => menuConfig.execute(component, simulatedEvent, focused));\n    const focusIn = (component, menuConfig, _state) => {\n      descendant(component.element, menuConfig.selector).each(first => {\n        menuConfig.focusManager.set(component, first);\n      });\n    };\n    const moveUp = (element, focused, info) => horizontal(element, info.selector, focused, -1);\n    const moveDown = (element, focused, info) => horizontal(element, info.selector, focused, +1);\n    const fireShiftTab = (component, simulatedEvent, menuConfig, menuState) => menuConfig.moveOnTab ? move$1(moveUp)(component, simulatedEvent, menuConfig, menuState) : Optional.none();\n    const fireTab = (component, simulatedEvent, menuConfig, menuState) => menuConfig.moveOnTab ? move$1(moveDown)(component, simulatedEvent, menuConfig, menuState) : Optional.none();\n    const getKeydownRules$1 = constant$1([\n      rule(inSet(UP), move$1(moveUp)),\n      rule(inSet(DOWN), move$1(moveDown)),\n      rule(and([\n        isShift$1,\n        inSet(TAB)\n      ]), fireShiftTab),\n      rule(and([\n        isNotShift,\n        inSet(TAB)\n      ]), fireTab),\n      rule(inSet(ENTER), execute),\n      rule(inSet(SPACE), execute)\n    ]);\n    const getKeyupRules$1 = constant$1([rule(inSet(SPACE), stopEventForFirefox)]);\n    var MenuType = typical(schema$r, NoState.init, getKeydownRules$1, getKeyupRules$1, () => Optional.some(focusIn));\n\n    const schema$q = [\n      onKeyboardHandler('onSpace'),\n      onKeyboardHandler('onEnter'),\n      onKeyboardHandler('onShiftEnter'),\n      onKeyboardHandler('onLeft'),\n      onKeyboardHandler('onRight'),\n      onKeyboardHandler('onTab'),\n      onKeyboardHandler('onShiftTab'),\n      onKeyboardHandler('onUp'),\n      onKeyboardHandler('onDown'),\n      onKeyboardHandler('onEscape'),\n      defaulted('stopSpaceKeyup', false),\n      option$3('focusIn')\n    ];\n    const getKeydownRules = (component, simulatedEvent, specialInfo) => [\n      rule(inSet(SPACE), specialInfo.onSpace),\n      rule(and([\n        isNotShift,\n        inSet(ENTER)\n      ]), specialInfo.onEnter),\n      rule(and([\n        isShift$1,\n        inSet(ENTER)\n      ]), specialInfo.onShiftEnter),\n      rule(and([\n        isShift$1,\n        inSet(TAB)\n      ]), specialInfo.onShiftTab),\n      rule(and([\n        isNotShift,\n        inSet(TAB)\n      ]), specialInfo.onTab),\n      rule(inSet(UP), specialInfo.onUp),\n      rule(inSet(DOWN), specialInfo.onDown),\n      rule(inSet(LEFT), specialInfo.onLeft),\n      rule(inSet(RIGHT), specialInfo.onRight),\n      rule(inSet(SPACE), specialInfo.onSpace)\n    ];\n    const getKeyupRules = (component, simulatedEvent, specialInfo) => [\n      ...specialInfo.stopSpaceKeyup ? [rule(inSet(SPACE), stopEventForFirefox)] : [],\n      rule(inSet(ESCAPE), specialInfo.onEscape)\n    ];\n    var SpecialType = typical(schema$q, NoState.init, getKeydownRules, getKeyupRules, specialInfo => specialInfo.focusIn);\n\n    const acyclic = AcyclicType.schema();\n    const cyclic = CyclicType.schema();\n    const flow = FlowType.schema();\n    const flatgrid = FlatgridType.schema();\n    const matrix = MatrixType.schema();\n    const execution = ExecutionType.schema();\n    const menu = MenuType.schema();\n    const special = SpecialType.schema();\n\n    var KeyboardBranches = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        acyclic: acyclic,\n        cyclic: cyclic,\n        flow: flow,\n        flatgrid: flatgrid,\n        matrix: matrix,\n        execution: execution,\n        menu: menu,\n        special: special\n    });\n\n    const isFlatgridState = keyState => hasNonNullableKey(keyState, 'setGridSize');\n    const Keying = createModes({\n      branchKey: 'mode',\n      branches: KeyboardBranches,\n      name: 'keying',\n      active: {\n        events: (keyingConfig, keyingState) => {\n          const handler = keyingConfig.handler;\n          return handler.toEvents(keyingConfig, keyingState);\n        }\n      },\n      apis: {\n        focusIn: (component, keyConfig, keyState) => {\n          keyConfig.sendFocusIn(keyConfig).fold(() => {\n            component.getSystem().triggerFocus(component.element, component.element);\n          }, sendFocusIn => {\n            sendFocusIn(component, keyConfig, keyState);\n          });\n        },\n        setGridSize: (component, keyConfig, keyState, numRows, numColumns) => {\n          if (!isFlatgridState(keyState)) {\n            console.error('Layout does not support setGridSize');\n          } else {\n            keyState.setGridSize(numRows, numColumns);\n          }\n        }\n      },\n      state: KeyingState\n    });\n\n    const withoutReuse = (parent, data) => {\n      preserve$1(() => {\n        replaceChildren(parent, data, () => map$2(data, parent.getSystem().build));\n      }, parent.element);\n    };\n    const withReuse = (parent, data) => {\n      preserve$1(() => {\n        virtualReplaceChildren(parent, data, () => {\n          return patchSpecChildren(parent.element, data, parent.getSystem().buildOrPatch);\n        });\n      }, parent.element);\n    };\n\n    const virtualReplace = (component, replacee, replaceeIndex, childSpec) => {\n      virtualDetach(replacee);\n      const child = patchSpecChild(component.element, replaceeIndex, childSpec, component.getSystem().buildOrPatch);\n      virtualAttach(component, child);\n      component.syncComponents();\n    };\n    const insert = (component, insertion, childSpec) => {\n      const child = component.getSystem().build(childSpec);\n      attachWith(component, child, insertion);\n    };\n    const replace = (component, replacee, replaceeIndex, childSpec) => {\n      detach(replacee);\n      insert(component, (p, c) => appendAt(p, c, replaceeIndex), childSpec);\n    };\n    const set$3 = (component, replaceConfig, replaceState, data) => {\n      const replacer = replaceConfig.reuseDom ? withReuse : withoutReuse;\n      return replacer(component, data);\n    };\n    const append = (component, replaceConfig, replaceState, appendee) => {\n      insert(component, append$2, appendee);\n    };\n    const prepend = (component, replaceConfig, replaceState, prependee) => {\n      insert(component, prepend$1, prependee);\n    };\n    const remove = (component, replaceConfig, replaceState, removee) => {\n      const children = contents(component);\n      const foundChild = find$5(children, child => eq(removee.element, child.element));\n      foundChild.each(detach);\n    };\n    const contents = (component, _replaceConfig) => component.components();\n    const replaceAt = (component, replaceConfig, replaceState, replaceeIndex, replacer) => {\n      const children = contents(component);\n      return Optional.from(children[replaceeIndex]).map(replacee => {\n        replacer.fold(() => detach(replacee), r => {\n          const replacer = replaceConfig.reuseDom ? virtualReplace : replace;\n          replacer(component, replacee, replaceeIndex, r);\n        });\n        return replacee;\n      });\n    };\n    const replaceBy = (component, replaceConfig, replaceState, replaceePred, replacer) => {\n      const children = contents(component);\n      return findIndex$1(children, replaceePred).bind(replaceeIndex => replaceAt(component, replaceConfig, replaceState, replaceeIndex, replacer));\n    };\n\n    var ReplaceApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        append: append,\n        prepend: prepend,\n        remove: remove,\n        replaceAt: replaceAt,\n        replaceBy: replaceBy,\n        set: set$3,\n        contents: contents\n    });\n\n    const Replacing = create$4({\n      fields: [defaultedBoolean('reuseDom', true)],\n      name: 'replacing',\n      apis: ReplaceApis\n    });\n\n    const events$d = (name, eventHandlers) => {\n      const events = derive$2(eventHandlers);\n      return create$4({\n        fields: [required$1('enabled')],\n        name,\n        active: { events: constant$1(events) }\n      });\n    };\n    const config = (name, eventHandlers) => {\n      const me = events$d(name, eventHandlers);\n      return {\n        key: name,\n        value: {\n          config: {},\n          me,\n          configAsRaw: constant$1({}),\n          initialConfig: {},\n          state: NoState\n        }\n      };\n    };\n\n    const focus$2 = (component, focusConfig) => {\n      if (!focusConfig.ignore) {\n        focus$3(component.element);\n        focusConfig.onFocus(component);\n      }\n    };\n    const blur = (component, focusConfig) => {\n      if (!focusConfig.ignore) {\n        blur$1(component.element);\n      }\n    };\n    const isFocused = component => hasFocus(component.element);\n\n    var FocusApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        focus: focus$2,\n        blur: blur,\n        isFocused: isFocused\n    });\n\n    const exhibit$4 = (base, focusConfig) => {\n      const mod = focusConfig.ignore ? {} : { attributes: { tabindex: '-1' } };\n      return nu$7(mod);\n    };\n    const events$c = focusConfig => derive$2([run$1(focus$4(), (component, simulatedEvent) => {\n        focus$2(component, focusConfig);\n        simulatedEvent.stop();\n      })].concat(focusConfig.stopMousedown ? [run$1(mousedown(), (_, simulatedEvent) => {\n        simulatedEvent.event.prevent();\n      })] : []));\n\n    var ActiveFocus = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        exhibit: exhibit$4,\n        events: events$c\n    });\n\n    var FocusSchema = [\n      onHandler('onFocus'),\n      defaulted('stopMousedown', false),\n      defaulted('ignore', false)\n    ];\n\n    const Focusing = create$4({\n      fields: FocusSchema,\n      name: 'focusing',\n      active: ActiveFocus,\n      apis: FocusApis\n    });\n\n    const SetupBehaviourCellState = initialState => {\n      const init = () => {\n        const cell = Cell(initialState);\n        const get = () => cell.get();\n        const set = newState => cell.set(newState);\n        const clear = () => cell.set(initialState);\n        const readState = () => cell.get();\n        return {\n          get,\n          set,\n          clear,\n          readState\n        };\n      };\n      return { init };\n    };\n\n    const updateAriaState = (component, toggleConfig, toggleState) => {\n      const ariaInfo = toggleConfig.aria;\n      ariaInfo.update(component, ariaInfo, toggleState.get());\n    };\n    const updateClass = (component, toggleConfig, toggleState) => {\n      toggleConfig.toggleClass.each(toggleClass => {\n        if (toggleState.get()) {\n          add$2(component.element, toggleClass);\n        } else {\n          remove$2(component.element, toggleClass);\n        }\n      });\n    };\n    const set$2 = (component, toggleConfig, toggleState, state) => {\n      const initialState = toggleState.get();\n      toggleState.set(state);\n      updateClass(component, toggleConfig, toggleState);\n      updateAriaState(component, toggleConfig, toggleState);\n      if (initialState !== state) {\n        toggleConfig.onToggled(component, state);\n      }\n    };\n    const toggle$2 = (component, toggleConfig, toggleState) => {\n      set$2(component, toggleConfig, toggleState, !toggleState.get());\n    };\n    const on = (component, toggleConfig, toggleState) => {\n      set$2(component, toggleConfig, toggleState, true);\n    };\n    const off = (component, toggleConfig, toggleState) => {\n      set$2(component, toggleConfig, toggleState, false);\n    };\n    const isOn = (component, toggleConfig, toggleState) => toggleState.get();\n    const onLoad = (component, toggleConfig, toggleState) => {\n      set$2(component, toggleConfig, toggleState, toggleConfig.selected);\n    };\n\n    var ToggleApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        onLoad: onLoad,\n        toggle: toggle$2,\n        isOn: isOn,\n        on: on,\n        off: off,\n        set: set$2\n    });\n\n    const exhibit$3 = () => nu$7({});\n    const events$b = (toggleConfig, toggleState) => {\n      const execute = executeEvent(toggleConfig, toggleState, toggle$2);\n      const load = loadEvent(toggleConfig, toggleState, onLoad);\n      return derive$2(flatten([\n        toggleConfig.toggleOnExecute ? [execute] : [],\n        [load]\n      ]));\n    };\n\n    var ActiveToggle = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        exhibit: exhibit$3,\n        events: events$b\n    });\n\n    const updatePressed = (component, ariaInfo, status) => {\n      set$9(component.element, 'aria-pressed', status);\n      if (ariaInfo.syncWithExpanded) {\n        updateExpanded(component, ariaInfo, status);\n      }\n    };\n    const updateSelected = (component, ariaInfo, status) => {\n      set$9(component.element, 'aria-selected', status);\n    };\n    const updateChecked = (component, ariaInfo, status) => {\n      set$9(component.element, 'aria-checked', status);\n    };\n    const updateExpanded = (component, ariaInfo, status) => {\n      set$9(component.element, 'aria-expanded', status);\n    };\n\n    var ToggleSchema = [\n      defaulted('selected', false),\n      option$3('toggleClass'),\n      defaulted('toggleOnExecute', true),\n      onHandler('onToggled'),\n      defaultedOf('aria', { mode: 'none' }, choose$1('mode', {\n        pressed: [\n          defaulted('syncWithExpanded', false),\n          output$1('update', updatePressed)\n        ],\n        checked: [output$1('update', updateChecked)],\n        expanded: [output$1('update', updateExpanded)],\n        selected: [output$1('update', updateSelected)],\n        none: [output$1('update', noop)]\n      }))\n    ];\n\n    const Toggling = create$4({\n      fields: ToggleSchema,\n      name: 'toggling',\n      active: ActiveToggle,\n      apis: ToggleApis,\n      state: SetupBehaviourCellState(false)\n    });\n\n    const pointerEvents = () => {\n      const onClick = (component, simulatedEvent) => {\n        simulatedEvent.stop();\n        emitExecute(component);\n      };\n      return [\n        run$1(click(), onClick),\n        run$1(tap(), onClick),\n        cutter(touchstart()),\n        cutter(mousedown())\n      ];\n    };\n    const events$a = optAction => {\n      const executeHandler = action => runOnExecute$1((component, simulatedEvent) => {\n        action(component);\n        simulatedEvent.stop();\n      });\n      return derive$2(flatten([\n        optAction.map(executeHandler).toArray(),\n        pointerEvents()\n      ]));\n    };\n\n    const hoverEvent = 'alloy.item-hover';\n    const focusEvent = 'alloy.item-focus';\n    const toggledEvent = 'alloy.item-toggled';\n    const onHover = item => {\n      if (search(item.element).isNone() || Focusing.isFocused(item)) {\n        if (!Focusing.isFocused(item)) {\n          Focusing.focus(item);\n        }\n        emitWith(item, hoverEvent, { item });\n      }\n    };\n    const onFocus$1 = item => {\n      emitWith(item, focusEvent, { item });\n    };\n    const onToggled = (item, state) => {\n      emitWith(item, toggledEvent, {\n        item,\n        state\n      });\n    };\n    const hover = constant$1(hoverEvent);\n    const focus$1 = constant$1(focusEvent);\n    const toggled = constant$1(toggledEvent);\n\n    const getItemRole = detail => detail.toggling.map(toggling => toggling.exclusive ? 'menuitemradio' : 'menuitemcheckbox').getOr('menuitem');\n    const getTogglingSpec = tConfig => ({\n      aria: { mode: 'checked' },\n      ...filter$1(tConfig, (_value, name) => name !== 'exclusive'),\n      onToggled: (component, state) => {\n        if (isFunction(tConfig.onToggled)) {\n          tConfig.onToggled(component, state);\n        }\n        onToggled(component, state);\n      }\n    });\n    const builder$2 = detail => ({\n      dom: detail.dom,\n      domModification: {\n        ...detail.domModification,\n        attributes: {\n          'role': getItemRole(detail),\n          ...detail.domModification.attributes,\n          'aria-haspopup': detail.hasSubmenu,\n          ...detail.hasSubmenu ? { 'aria-expanded': false } : {}\n        }\n      },\n      behaviours: SketchBehaviours.augment(detail.itemBehaviours, [\n        detail.toggling.fold(Toggling.revoke, tConfig => Toggling.config(getTogglingSpec(tConfig))),\n        Focusing.config({\n          ignore: detail.ignoreFocus,\n          stopMousedown: detail.ignoreFocus,\n          onFocus: component => {\n            onFocus$1(component);\n          }\n        }),\n        Keying.config({ mode: 'execution' }),\n        Representing.config({\n          store: {\n            mode: 'memory',\n            initialValue: detail.data\n          }\n        }),\n        config('item-type-events', [\n          ...pointerEvents(),\n          run$1(mouseover(), onHover),\n          run$1(focusItem(), Focusing.focus)\n        ])\n      ]),\n      components: detail.components,\n      eventOrder: detail.eventOrder\n    });\n    const schema$p = [\n      required$1('data'),\n      required$1('components'),\n      required$1('dom'),\n      defaulted('hasSubmenu', false),\n      option$3('toggling'),\n      SketchBehaviours.field('itemBehaviours', [\n        Toggling,\n        Focusing,\n        Keying,\n        Representing\n      ]),\n      defaulted('ignoreFocus', false),\n      defaulted('domModification', {}),\n      output$1('builder', builder$2),\n      defaulted('eventOrder', {})\n    ];\n\n    const builder$1 = detail => ({\n      dom: detail.dom,\n      components: detail.components,\n      events: derive$2([stopper(focusItem())])\n    });\n    const schema$o = [\n      required$1('dom'),\n      required$1('components'),\n      output$1('builder', builder$1)\n    ];\n\n    const owner$2 = constant$1('item-widget');\n    const parts$h = constant$1([required({\n        name: 'widget',\n        overrides: detail => {\n          return {\n            behaviours: derive$1([Representing.config({\n                store: {\n                  mode: 'manual',\n                  getValue: _component => {\n                    return detail.data;\n                  },\n                  setValue: noop\n                }\n              })])\n          };\n        }\n      })]);\n\n    const builder = detail => {\n      const subs = substitutes(owner$2(), detail, parts$h());\n      const components = components$1(owner$2(), detail, subs.internals());\n      const focusWidget = component => getPart(component, detail, 'widget').map(widget => {\n        Keying.focusIn(widget);\n        return widget;\n      });\n      const onHorizontalArrow = (component, simulatedEvent) => inside(simulatedEvent.event.target) ? Optional.none() : (() => {\n        if (detail.autofocus) {\n          simulatedEvent.setSource(component.element);\n          return Optional.none();\n        } else {\n          return Optional.none();\n        }\n      })();\n      return {\n        dom: detail.dom,\n        components,\n        domModification: detail.domModification,\n        events: derive$2([\n          runOnExecute$1((component, simulatedEvent) => {\n            focusWidget(component).each(_widget => {\n              simulatedEvent.stop();\n            });\n          }),\n          run$1(mouseover(), onHover),\n          run$1(focusItem(), (component, _simulatedEvent) => {\n            if (detail.autofocus) {\n              focusWidget(component);\n            } else {\n              Focusing.focus(component);\n            }\n          })\n        ]),\n        behaviours: SketchBehaviours.augment(detail.widgetBehaviours, [\n          Representing.config({\n            store: {\n              mode: 'memory',\n              initialValue: detail.data\n            }\n          }),\n          Focusing.config({\n            ignore: detail.ignoreFocus,\n            onFocus: component => {\n              onFocus$1(component);\n            }\n          }),\n          Keying.config({\n            mode: 'special',\n            focusIn: detail.autofocus ? component => {\n              focusWidget(component);\n            } : revoke(),\n            onLeft: onHorizontalArrow,\n            onRight: onHorizontalArrow,\n            onEscape: (component, simulatedEvent) => {\n              if (!Focusing.isFocused(component) && !detail.autofocus) {\n                Focusing.focus(component);\n                return Optional.some(true);\n              } else if (detail.autofocus) {\n                simulatedEvent.setSource(component.element);\n                return Optional.none();\n              } else {\n                return Optional.none();\n              }\n            }\n          })\n        ])\n      };\n    };\n    const schema$n = [\n      required$1('uid'),\n      required$1('data'),\n      required$1('components'),\n      required$1('dom'),\n      defaulted('autofocus', false),\n      defaulted('ignoreFocus', false),\n      SketchBehaviours.field('widgetBehaviours', [\n        Representing,\n        Focusing,\n        Keying\n      ]),\n      defaulted('domModification', {}),\n      defaultUidsSchema(parts$h()),\n      output$1('builder', builder)\n    ];\n\n    const itemSchema$2 = choose$1('type', {\n      widget: schema$n,\n      item: schema$p,\n      separator: schema$o\n    });\n    const configureGrid = (detail, movementInfo) => ({\n      mode: 'flatgrid',\n      selector: '.' + detail.markers.item,\n      initSize: {\n        numColumns: movementInfo.initSize.numColumns,\n        numRows: movementInfo.initSize.numRows\n      },\n      focusManager: detail.focusManager\n    });\n    const configureMatrix = (detail, movementInfo) => ({\n      mode: 'matrix',\n      selectors: {\n        row: movementInfo.rowSelector,\n        cell: '.' + detail.markers.item\n      },\n      previousSelector: movementInfo.previousSelector,\n      focusManager: detail.focusManager\n    });\n    const configureMenu = (detail, movementInfo) => ({\n      mode: 'menu',\n      selector: '.' + detail.markers.item,\n      moveOnTab: movementInfo.moveOnTab,\n      focusManager: detail.focusManager\n    });\n    const parts$g = constant$1([group({\n        factory: {\n          sketch: spec => {\n            const itemInfo = asRawOrDie$1('menu.spec item', itemSchema$2, spec);\n            return itemInfo.builder(itemInfo);\n          }\n        },\n        name: 'items',\n        unit: 'item',\n        defaults: (detail, u) => {\n          return has$2(u, 'uid') ? u : {\n            ...u,\n            uid: generate$5('item')\n          };\n        },\n        overrides: (detail, u) => {\n          return {\n            type: u.type,\n            ignoreFocus: detail.fakeFocus,\n            domModification: { classes: [detail.markers.item] }\n          };\n        }\n      })]);\n    const schema$m = constant$1([\n      required$1('value'),\n      required$1('items'),\n      required$1('dom'),\n      required$1('components'),\n      defaulted('eventOrder', {}),\n      field('menuBehaviours', [\n        Highlighting,\n        Representing,\n        Composing,\n        Keying\n      ]),\n      defaultedOf('movement', {\n        mode: 'menu',\n        moveOnTab: true\n      }, choose$1('mode', {\n        grid: [\n          initSize(),\n          output$1('config', configureGrid)\n        ],\n        matrix: [\n          output$1('config', configureMatrix),\n          required$1('rowSelector'),\n          defaulted('previousSelector', Optional.none)\n        ],\n        menu: [\n          defaulted('moveOnTab', true),\n          output$1('config', configureMenu)\n        ]\n      })),\n      itemMarkers(),\n      defaulted('fakeFocus', false),\n      defaulted('focusManager', dom$2()),\n      onHandler('onHighlight'),\n      onHandler('onDehighlight')\n    ]);\n\n    const focus = constant$1('alloy.menu-focus');\n\n    const deselectOtherRadioItems = (menu, item) => {\n      const checkedRadioItems = descendants(menu.element, '[role=\"menuitemradio\"][aria-checked=\"true\"]');\n      each$1(checkedRadioItems, ele => {\n        if (!eq(ele, item.element)) {\n          menu.getSystem().getByDom(ele).each(c => {\n            Toggling.off(c);\n          });\n        }\n      });\n    };\n    const make$7 = (detail, components, _spec, _externals) => ({\n      uid: detail.uid,\n      dom: detail.dom,\n      markers: detail.markers,\n      behaviours: augment(detail.menuBehaviours, [\n        Highlighting.config({\n          highlightClass: detail.markers.selectedItem,\n          itemClass: detail.markers.item,\n          onHighlight: detail.onHighlight,\n          onDehighlight: detail.onDehighlight\n        }),\n        Representing.config({\n          store: {\n            mode: 'memory',\n            initialValue: detail.value\n          }\n        }),\n        Composing.config({ find: Optional.some }),\n        Keying.config(detail.movement.config(detail, detail.movement))\n      ]),\n      events: derive$2([\n        run$1(focus$1(), (menu, simulatedEvent) => {\n          const event = simulatedEvent.event;\n          menu.getSystem().getByDom(event.target).each(item => {\n            Highlighting.highlight(menu, item);\n            simulatedEvent.stop();\n            emitWith(menu, focus(), {\n              menu,\n              item\n            });\n          });\n        }),\n        run$1(hover(), (menu, simulatedEvent) => {\n          const item = simulatedEvent.event.item;\n          Highlighting.highlight(menu, item);\n        }),\n        run$1(toggled(), (menu, simulatedEvent) => {\n          const {item, state} = simulatedEvent.event;\n          if (state && get$f(item.element, 'role') === 'menuitemradio') {\n            deselectOtherRadioItems(menu, item);\n          }\n        })\n      ]),\n      components,\n      eventOrder: detail.eventOrder,\n      domModification: { attributes: { role: 'menu' } }\n    });\n\n    const Menu = composite({\n      name: 'Menu',\n      configFields: schema$m(),\n      partFields: parts$g(),\n      factory: make$7\n    });\n\n    const transpose$1 = obj => tupleMap(obj, (v, k) => ({\n      k: v,\n      v: k\n    }));\n    const trace = (items, byItem, byMenu, finish) => get$g(byMenu, finish).bind(triggerItem => get$g(items, triggerItem).bind(triggerMenu => {\n      const rest = trace(items, byItem, byMenu, triggerMenu);\n      return Optional.some([triggerMenu].concat(rest));\n    })).getOr([]);\n    const generate$2 = (menus, expansions) => {\n      const items = {};\n      each(menus, (menuItems, menu) => {\n        each$1(menuItems, item => {\n          items[item] = menu;\n        });\n      });\n      const byItem = expansions;\n      const byMenu = transpose$1(expansions);\n      const menuPaths = map$1(byMenu, (_triggerItem, submenu) => [submenu].concat(trace(items, byItem, byMenu, submenu)));\n      return map$1(items, menu => get$g(menuPaths, menu).getOr([menu]));\n    };\n\n    const init$c = () => {\n      const expansions = Cell({});\n      const menus = Cell({});\n      const paths = Cell({});\n      const primary = value$2();\n      const directory = Cell({});\n      const clear = () => {\n        expansions.set({});\n        menus.set({});\n        paths.set({});\n        primary.clear();\n      };\n      const isClear = () => primary.get().isNone();\n      const setMenuBuilt = (menuName, built) => {\n        menus.set({\n          ...menus.get(),\n          [menuName]: {\n            type: 'prepared',\n            menu: built\n          }\n        });\n      };\n      const setContents = (sPrimary, sMenus, sExpansions, dir) => {\n        primary.set(sPrimary);\n        expansions.set(sExpansions);\n        menus.set(sMenus);\n        directory.set(dir);\n        const sPaths = generate$2(dir, sExpansions);\n        paths.set(sPaths);\n      };\n      const getTriggeringItem = menuValue => find$4(expansions.get(), (v, _k) => v === menuValue);\n      const getTriggerData = (menuValue, getItemByValue, path) => getPreparedMenu(menuValue).bind(menu => getTriggeringItem(menuValue).bind(triggeringItemValue => getItemByValue(triggeringItemValue).map(triggeredItem => ({\n        triggeredMenu: menu,\n        triggeringItem: triggeredItem,\n        triggeringPath: path\n      }))));\n      const getTriggeringPath = (itemValue, getItemByValue) => {\n        const extraPath = filter$2(lookupItem(itemValue).toArray(), menuValue => getPreparedMenu(menuValue).isSome());\n        return get$g(paths.get(), itemValue).bind(path => {\n          const revPath = reverse(extraPath.concat(path));\n          const triggers = bind$3(revPath, (menuValue, menuIndex) => getTriggerData(menuValue, getItemByValue, revPath.slice(0, menuIndex + 1)).fold(() => is$1(primary.get(), menuValue) ? [] : [Optional.none()], data => [Optional.some(data)]));\n          return sequence(triggers);\n        });\n      };\n      const expand = itemValue => get$g(expansions.get(), itemValue).map(menu => {\n        const current = get$g(paths.get(), itemValue).getOr([]);\n        return [menu].concat(current);\n      });\n      const collapse = itemValue => get$g(paths.get(), itemValue).bind(path => path.length > 1 ? Optional.some(path.slice(1)) : Optional.none());\n      const refresh = itemValue => get$g(paths.get(), itemValue);\n      const getPreparedMenu = menuValue => lookupMenu(menuValue).bind(extractPreparedMenu);\n      const lookupMenu = menuValue => get$g(menus.get(), menuValue);\n      const lookupItem = itemValue => get$g(expansions.get(), itemValue);\n      const otherMenus = path => {\n        const menuValues = directory.get();\n        return difference(keys(menuValues), path);\n      };\n      const getPrimary = () => primary.get().bind(getPreparedMenu);\n      const getMenus = () => menus.get();\n      return {\n        setMenuBuilt,\n        setContents,\n        expand,\n        refresh,\n        collapse,\n        lookupMenu,\n        lookupItem,\n        otherMenus,\n        getPrimary,\n        getMenus,\n        clear,\n        isClear,\n        getTriggeringPath\n      };\n    };\n    const extractPreparedMenu = prep => prep.type === 'prepared' ? Optional.some(prep.menu) : Optional.none();\n    const LayeredState = {\n      init: init$c,\n      extractPreparedMenu\n    };\n\n    const onMenuItemHighlightedEvent = generate$6('tiered-menu-item-highlight');\n    const onMenuItemDehighlightedEvent = generate$6('tiered-menu-item-dehighlight');\n\n    var HighlightOnOpen;\n    (function (HighlightOnOpen) {\n      HighlightOnOpen[HighlightOnOpen['HighlightMenuAndItem'] = 0] = 'HighlightMenuAndItem';\n      HighlightOnOpen[HighlightOnOpen['HighlightJustMenu'] = 1] = 'HighlightJustMenu';\n      HighlightOnOpen[HighlightOnOpen['HighlightNone'] = 2] = 'HighlightNone';\n    }(HighlightOnOpen || (HighlightOnOpen = {})));\n\n    const make$6 = (detail, _rawUiSpec) => {\n      const submenuParentItems = value$2();\n      const buildMenus = (container, primaryName, menus) => map$1(menus, (spec, name) => {\n        const makeSketch = () => Menu.sketch({\n          ...spec,\n          value: name,\n          markers: detail.markers,\n          fakeFocus: detail.fakeFocus,\n          onHighlight: (menuComp, itemComp) => {\n            const highlightData = {\n              menuComp,\n              itemComp\n            };\n            emitWith(menuComp, onMenuItemHighlightedEvent, highlightData);\n          },\n          onDehighlight: (menuComp, itemComp) => {\n            const dehighlightData = {\n              menuComp,\n              itemComp\n            };\n            emitWith(menuComp, onMenuItemDehighlightedEvent, dehighlightData);\n          },\n          focusManager: detail.fakeFocus ? highlights() : dom$2()\n        });\n        return name === primaryName ? {\n          type: 'prepared',\n          menu: container.getSystem().build(makeSketch())\n        } : {\n          type: 'notbuilt',\n          nbMenu: makeSketch\n        };\n      });\n      const layeredState = LayeredState.init();\n      const setup = container => {\n        const componentMap = buildMenus(container, detail.data.primary, detail.data.menus);\n        const directory = toDirectory();\n        layeredState.setContents(detail.data.primary, componentMap, detail.data.expansions, directory);\n        return layeredState.getPrimary();\n      };\n      const getItemValue = item => Representing.getValue(item).value;\n      const getItemByValue = (_container, menus, itemValue) => findMap(menus, menu => {\n        if (!menu.getSystem().isConnected()) {\n          return Optional.none();\n        }\n        const candidates = Highlighting.getCandidates(menu);\n        return find$5(candidates, c => getItemValue(c) === itemValue);\n      });\n      const toDirectory = _container => map$1(detail.data.menus, (data, _menuName) => bind$3(data.items, item => item.type === 'separator' ? [] : [item.data.value]));\n      const setActiveMenu = Highlighting.highlight;\n      const setActiveMenuAndItem = (container, menu) => {\n        setActiveMenu(container, menu);\n        Highlighting.getHighlighted(menu).orThunk(() => Highlighting.getFirst(menu)).each(item => {\n          if (detail.fakeFocus) {\n            Highlighting.highlight(menu, item);\n          } else {\n            dispatch(container, item.element, focusItem());\n          }\n        });\n      };\n      const getMenus = (state, menuValues) => cat(map$2(menuValues, mv => state.lookupMenu(mv).bind(prep => prep.type === 'prepared' ? Optional.some(prep.menu) : Optional.none())));\n      const closeOthers = (container, state, path) => {\n        const others = getMenus(state, state.otherMenus(path));\n        each$1(others, o => {\n          remove$1(o.element, [detail.markers.backgroundMenu]);\n          if (!detail.stayInDom) {\n            Replacing.remove(container, o);\n          }\n        });\n      };\n      const getSubmenuParents = container => submenuParentItems.get().getOrThunk(() => {\n        const r = {};\n        const items = descendants(container.element, `.${ detail.markers.item }`);\n        const parentItems = filter$2(items, i => get$f(i, 'aria-haspopup') === 'true');\n        each$1(parentItems, i => {\n          container.getSystem().getByDom(i).each(itemComp => {\n            const key = getItemValue(itemComp);\n            r[key] = itemComp;\n          });\n        });\n        submenuParentItems.set(r);\n        return r;\n      });\n      const updateAriaExpansions = (container, path) => {\n        const parentItems = getSubmenuParents(container);\n        each(parentItems, (v, k) => {\n          const expanded = contains$2(path, k);\n          set$9(v.element, 'aria-expanded', expanded);\n        });\n      };\n      const updateMenuPath = (container, state, path) => Optional.from(path[0]).bind(latestMenuName => state.lookupMenu(latestMenuName).bind(menuPrep => {\n        if (menuPrep.type === 'notbuilt') {\n          return Optional.none();\n        } else {\n          const activeMenu = menuPrep.menu;\n          const rest = getMenus(state, path.slice(1));\n          each$1(rest, r => {\n            add$2(r.element, detail.markers.backgroundMenu);\n          });\n          if (!inBody(activeMenu.element)) {\n            Replacing.append(container, premade(activeMenu));\n          }\n          remove$1(activeMenu.element, [detail.markers.backgroundMenu]);\n          setActiveMenuAndItem(container, activeMenu);\n          closeOthers(container, state, path);\n          return Optional.some(activeMenu);\n        }\n      }));\n      let ExpandHighlightDecision;\n      (function (ExpandHighlightDecision) {\n        ExpandHighlightDecision[ExpandHighlightDecision['HighlightSubmenu'] = 0] = 'HighlightSubmenu';\n        ExpandHighlightDecision[ExpandHighlightDecision['HighlightParent'] = 1] = 'HighlightParent';\n      }(ExpandHighlightDecision || (ExpandHighlightDecision = {})));\n      const buildIfRequired = (container, menuName, menuPrep) => {\n        if (menuPrep.type === 'notbuilt') {\n          const menu = container.getSystem().build(menuPrep.nbMenu());\n          layeredState.setMenuBuilt(menuName, menu);\n          return menu;\n        } else {\n          return menuPrep.menu;\n        }\n      };\n      const expandRight = (container, item, decision = ExpandHighlightDecision.HighlightSubmenu) => {\n        if (item.hasConfigured(Disabling) && Disabling.isDisabled(item)) {\n          return Optional.some(item);\n        } else {\n          const value = getItemValue(item);\n          return layeredState.expand(value).bind(path => {\n            updateAriaExpansions(container, path);\n            return Optional.from(path[0]).bind(menuName => layeredState.lookupMenu(menuName).bind(activeMenuPrep => {\n              const activeMenu = buildIfRequired(container, menuName, activeMenuPrep);\n              if (!inBody(activeMenu.element)) {\n                Replacing.append(container, premade(activeMenu));\n              }\n              detail.onOpenSubmenu(container, item, activeMenu, reverse(path));\n              if (decision === ExpandHighlightDecision.HighlightSubmenu) {\n                Highlighting.highlightFirst(activeMenu);\n                return updateMenuPath(container, layeredState, path);\n              } else {\n                Highlighting.dehighlightAll(activeMenu);\n                return Optional.some(item);\n              }\n            }));\n          });\n        }\n      };\n      const collapseLeft = (container, item) => {\n        const value = getItemValue(item);\n        return layeredState.collapse(value).bind(path => {\n          updateAriaExpansions(container, path);\n          return updateMenuPath(container, layeredState, path).map(activeMenu => {\n            detail.onCollapseMenu(container, item, activeMenu);\n            return activeMenu;\n          });\n        });\n      };\n      const updateView = (container, item) => {\n        const value = getItemValue(item);\n        return layeredState.refresh(value).bind(path => {\n          updateAriaExpansions(container, path);\n          return updateMenuPath(container, layeredState, path);\n        });\n      };\n      const onRight = (container, item) => inside(item.element) ? Optional.none() : expandRight(container, item, ExpandHighlightDecision.HighlightSubmenu);\n      const onLeft = (container, item) => inside(item.element) ? Optional.none() : collapseLeft(container, item);\n      const onEscape = (container, item) => collapseLeft(container, item).orThunk(() => detail.onEscape(container, item).map(() => container));\n      const keyOnItem = f => (container, simulatedEvent) => {\n        return closest$1(simulatedEvent.getSource(), `.${ detail.markers.item }`).bind(target => container.getSystem().getByDom(target).toOptional().bind(item => f(container, item).map(always)));\n      };\n      const events = derive$2([\n        run$1(focus(), (tmenu, simulatedEvent) => {\n          const item = simulatedEvent.event.item;\n          layeredState.lookupItem(getItemValue(item)).each(() => {\n            const menu = simulatedEvent.event.menu;\n            Highlighting.highlight(tmenu, menu);\n            const value = getItemValue(simulatedEvent.event.item);\n            layeredState.refresh(value).each(path => closeOthers(tmenu, layeredState, path));\n          });\n        }),\n        runOnExecute$1((component, simulatedEvent) => {\n          const target = simulatedEvent.event.target;\n          component.getSystem().getByDom(target).each(item => {\n            const itemValue = getItemValue(item);\n            if (itemValue.indexOf('collapse-item') === 0) {\n              collapseLeft(component, item);\n            }\n            expandRight(component, item, ExpandHighlightDecision.HighlightSubmenu).fold(() => {\n              detail.onExecute(component, item);\n            }, noop);\n          });\n        }),\n        runOnAttached((container, _simulatedEvent) => {\n          setup(container).each(primary => {\n            Replacing.append(container, premade(primary));\n            detail.onOpenMenu(container, primary);\n            if (detail.highlightOnOpen === HighlightOnOpen.HighlightMenuAndItem) {\n              setActiveMenuAndItem(container, primary);\n            } else if (detail.highlightOnOpen === HighlightOnOpen.HighlightJustMenu) {\n              setActiveMenu(container, primary);\n            }\n          });\n        }),\n        run$1(onMenuItemHighlightedEvent, (tmenuComp, se) => {\n          detail.onHighlightItem(tmenuComp, se.event.menuComp, se.event.itemComp);\n        }),\n        run$1(onMenuItemDehighlightedEvent, (tmenuComp, se) => {\n          detail.onDehighlightItem(tmenuComp, se.event.menuComp, se.event.itemComp);\n        }),\n        ...detail.navigateOnHover ? [run$1(hover(), (tmenu, simulatedEvent) => {\n            const item = simulatedEvent.event.item;\n            updateView(tmenu, item);\n            expandRight(tmenu, item, ExpandHighlightDecision.HighlightParent);\n            detail.onHover(tmenu, item);\n          })] : []\n      ]);\n      const getActiveItem = container => Highlighting.getHighlighted(container).bind(Highlighting.getHighlighted);\n      const collapseMenuApi = container => {\n        getActiveItem(container).each(currentItem => {\n          collapseLeft(container, currentItem);\n        });\n      };\n      const highlightPrimary = container => {\n        layeredState.getPrimary().each(primary => {\n          setActiveMenuAndItem(container, primary);\n        });\n      };\n      const extractMenuFromContainer = container => Optional.from(container.components()[0]).filter(comp => get$f(comp.element, 'role') === 'menu');\n      const repositionMenus = container => {\n        const maybeActivePrimary = layeredState.getPrimary().bind(primary => getActiveItem(container).bind(currentItem => {\n          const itemValue = getItemValue(currentItem);\n          const allMenus = values(layeredState.getMenus());\n          const preparedMenus = cat(map$2(allMenus, LayeredState.extractPreparedMenu));\n          return layeredState.getTriggeringPath(itemValue, v => getItemByValue(container, preparedMenus, v));\n        }).map(triggeringPath => ({\n          primary,\n          triggeringPath\n        })));\n        maybeActivePrimary.fold(() => {\n          extractMenuFromContainer(container).each(primaryMenu => {\n            detail.onRepositionMenu(container, primaryMenu, []);\n          });\n        }, ({primary, triggeringPath}) => {\n          detail.onRepositionMenu(container, primary, triggeringPath);\n        });\n      };\n      const apis = {\n        collapseMenu: collapseMenuApi,\n        highlightPrimary,\n        repositionMenus\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        markers: detail.markers,\n        behaviours: augment(detail.tmenuBehaviours, [\n          Keying.config({\n            mode: 'special',\n            onRight: keyOnItem(onRight),\n            onLeft: keyOnItem(onLeft),\n            onEscape: keyOnItem(onEscape),\n            focusIn: (container, _keyInfo) => {\n              layeredState.getPrimary().each(primary => {\n                dispatch(container, primary.element, focusItem());\n              });\n            }\n          }),\n          Highlighting.config({\n            highlightClass: detail.markers.selectedMenu,\n            itemClass: detail.markers.menu\n          }),\n          Composing.config({\n            find: container => {\n              return Highlighting.getHighlighted(container);\n            }\n          }),\n          Replacing.config({})\n        ]),\n        eventOrder: detail.eventOrder,\n        apis,\n        events\n      };\n    };\n    const collapseItem$1 = constant$1('collapse-item');\n\n    const tieredData = (primary, menus, expansions) => ({\n      primary,\n      menus,\n      expansions\n    });\n    const singleData = (name, menu) => ({\n      primary: name,\n      menus: wrap$1(name, menu),\n      expansions: {}\n    });\n    const collapseItem = text => ({\n      value: generate$6(collapseItem$1()),\n      meta: { text }\n    });\n    const tieredMenu = single({\n      name: 'TieredMenu',\n      configFields: [\n        onStrictKeyboardHandler('onExecute'),\n        onStrictKeyboardHandler('onEscape'),\n        onStrictHandler('onOpenMenu'),\n        onStrictHandler('onOpenSubmenu'),\n        onHandler('onRepositionMenu'),\n        onHandler('onCollapseMenu'),\n        defaulted('highlightOnOpen', HighlightOnOpen.HighlightMenuAndItem),\n        requiredObjOf('data', [\n          required$1('primary'),\n          required$1('menus'),\n          required$1('expansions')\n        ]),\n        defaulted('fakeFocus', false),\n        onHandler('onHighlightItem'),\n        onHandler('onDehighlightItem'),\n        onHandler('onHover'),\n        tieredMenuMarkers(),\n        required$1('dom'),\n        defaulted('navigateOnHover', true),\n        defaulted('stayInDom', false),\n        field('tmenuBehaviours', [\n          Keying,\n          Highlighting,\n          Composing,\n          Replacing\n        ]),\n        defaulted('eventOrder', {})\n      ],\n      apis: {\n        collapseMenu: (apis, tmenu) => {\n          apis.collapseMenu(tmenu);\n        },\n        highlightPrimary: (apis, tmenu) => {\n          apis.highlightPrimary(tmenu);\n        },\n        repositionMenus: (apis, tmenu) => {\n          apis.repositionMenus(tmenu);\n        }\n      },\n      factory: make$6,\n      extraApis: {\n        tieredData,\n        singleData,\n        collapseItem\n      }\n    });\n\n    const makeMenu = (detail, menuSandbox, placementSpec, menuSpec, getBounds) => {\n      const lazySink = () => detail.lazySink(menuSandbox);\n      const layouts = menuSpec.type === 'horizontal' ? {\n        layouts: {\n          onLtr: () => belowOrAbove(),\n          onRtl: () => belowOrAboveRtl()\n        }\n      } : {};\n      const isFirstTierSubmenu = triggeringPaths => triggeringPaths.length === 2;\n      const getSubmenuLayouts = triggeringPaths => isFirstTierSubmenu(triggeringPaths) ? layouts : {};\n      return tieredMenu.sketch({\n        dom: { tag: 'div' },\n        data: menuSpec.data,\n        markers: menuSpec.menu.markers,\n        highlightOnOpen: menuSpec.menu.highlightOnOpen,\n        fakeFocus: menuSpec.menu.fakeFocus,\n        onEscape: () => {\n          Sandboxing.close(menuSandbox);\n          detail.onEscape.map(handler => handler(menuSandbox));\n          return Optional.some(true);\n        },\n        onExecute: () => {\n          return Optional.some(true);\n        },\n        onOpenMenu: (tmenu, menu) => {\n          Positioning.positionWithinBounds(lazySink().getOrDie(), menu, placementSpec, getBounds());\n        },\n        onOpenSubmenu: (tmenu, item, submenu, triggeringPaths) => {\n          const sink = lazySink().getOrDie();\n          Positioning.position(sink, submenu, {\n            anchor: {\n              type: 'submenu',\n              item,\n              ...getSubmenuLayouts(triggeringPaths)\n            }\n          });\n        },\n        onRepositionMenu: (tmenu, primaryMenu, submenuTriggers) => {\n          const sink = lazySink().getOrDie();\n          Positioning.positionWithinBounds(sink, primaryMenu, placementSpec, getBounds());\n          each$1(submenuTriggers, st => {\n            const submenuLayouts = getSubmenuLayouts(st.triggeringPath);\n            Positioning.position(sink, st.triggeredMenu, {\n              anchor: {\n                type: 'submenu',\n                item: st.triggeringItem,\n                ...submenuLayouts\n              }\n            });\n          });\n        }\n      });\n    };\n    const factory$o = (detail, spec) => {\n      const isPartOfRelated = (sandbox, queryElem) => {\n        const related = detail.getRelated(sandbox);\n        return related.exists(rel => isPartOf$1(rel, queryElem));\n      };\n      const setContent = (sandbox, thing) => {\n        Sandboxing.setContent(sandbox, thing);\n      };\n      const showAt = (sandbox, thing, placementSpec) => {\n        const getBounds = Optional.none;\n        showWithinBounds(sandbox, thing, placementSpec, getBounds);\n      };\n      const showWithinBounds = (sandbox, thing, placementSpec, getBounds) => {\n        const sink = detail.lazySink(sandbox).getOrDie();\n        Sandboxing.openWhileCloaked(sandbox, thing, () => Positioning.positionWithinBounds(sink, sandbox, placementSpec, getBounds()));\n        Representing.setValue(sandbox, Optional.some({\n          mode: 'position',\n          config: placementSpec,\n          getBounds\n        }));\n      };\n      const showMenuAt = (sandbox, placementSpec, menuSpec) => {\n        showMenuWithinBounds(sandbox, placementSpec, menuSpec, Optional.none);\n      };\n      const showMenuWithinBounds = (sandbox, placementSpec, menuSpec, getBounds) => {\n        const menu = makeMenu(detail, sandbox, placementSpec, menuSpec, getBounds);\n        Sandboxing.open(sandbox, menu);\n        Representing.setValue(sandbox, Optional.some({\n          mode: 'menu',\n          menu\n        }));\n      };\n      const hide = sandbox => {\n        if (Sandboxing.isOpen(sandbox)) {\n          Representing.setValue(sandbox, Optional.none());\n          Sandboxing.close(sandbox);\n        }\n      };\n      const getContent = sandbox => Sandboxing.getState(sandbox);\n      const reposition = sandbox => {\n        if (Sandboxing.isOpen(sandbox)) {\n          Representing.getValue(sandbox).each(state => {\n            switch (state.mode) {\n            case 'menu':\n              Sandboxing.getState(sandbox).each(tieredMenu.repositionMenus);\n              break;\n            case 'position':\n              const sink = detail.lazySink(sandbox).getOrDie();\n              Positioning.positionWithinBounds(sink, sandbox, state.config, state.getBounds());\n              break;\n            }\n          });\n        }\n      };\n      const apis = {\n        setContent,\n        showAt,\n        showWithinBounds,\n        showMenuAt,\n        showMenuWithinBounds,\n        hide,\n        getContent,\n        reposition,\n        isOpen: Sandboxing.isOpen\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        behaviours: augment(detail.inlineBehaviours, [\n          Sandboxing.config({\n            isPartOf: (sandbox, data, queryElem) => {\n              return isPartOf$1(data, queryElem) || isPartOfRelated(sandbox, queryElem);\n            },\n            getAttachPoint: sandbox => {\n              return detail.lazySink(sandbox).getOrDie();\n            },\n            onOpen: sandbox => {\n              detail.onShow(sandbox);\n            },\n            onClose: sandbox => {\n              detail.onHide(sandbox);\n            }\n          }),\n          Representing.config({\n            store: {\n              mode: 'memory',\n              initialValue: Optional.none()\n            }\n          }),\n          Receiving.config({\n            channels: {\n              ...receivingChannel$1({\n                isExtraPart: spec.isExtraPart,\n                ...detail.fireDismissalEventInstead.map(fe => ({ fireEventInstead: { event: fe.event } })).getOr({})\n              }),\n              ...receivingChannel({\n                ...detail.fireRepositionEventInstead.map(fe => ({ fireEventInstead: { event: fe.event } })).getOr({}),\n                doReposition: reposition\n              })\n            }\n          })\n        ]),\n        eventOrder: detail.eventOrder,\n        apis\n      };\n    };\n    const InlineView = single({\n      name: 'InlineView',\n      configFields: [\n        required$1('lazySink'),\n        onHandler('onShow'),\n        onHandler('onHide'),\n        optionFunction('onEscape'),\n        field('inlineBehaviours', [\n          Sandboxing,\n          Representing,\n          Receiving\n        ]),\n        optionObjOf('fireDismissalEventInstead', [defaulted('event', dismissRequested())]),\n        optionObjOf('fireRepositionEventInstead', [defaulted('event', repositionRequested())]),\n        defaulted('getRelated', Optional.none),\n        defaulted('isExtraPart', never),\n        defaulted('eventOrder', Optional.none)\n      ],\n      factory: factory$o,\n      apis: {\n        showAt: (apis, component, anchor, thing) => {\n          apis.showAt(component, anchor, thing);\n        },\n        showWithinBounds: (apis, component, anchor, thing, bounds) => {\n          apis.showWithinBounds(component, anchor, thing, bounds);\n        },\n        showMenuAt: (apis, component, anchor, menuSpec) => {\n          apis.showMenuAt(component, anchor, menuSpec);\n        },\n        showMenuWithinBounds: (apis, component, anchor, menuSpec, bounds) => {\n          apis.showMenuWithinBounds(component, anchor, menuSpec, bounds);\n        },\n        hide: (apis, component) => {\n          apis.hide(component);\n        },\n        isOpen: (apis, component) => apis.isOpen(component),\n        getContent: (apis, component) => apis.getContent(component),\n        setContent: (apis, component, thing) => {\n          apis.setContent(component, thing);\n        },\n        reposition: (apis, component) => {\n          apis.reposition(component);\n        }\n      }\n    });\n\n    var global$9 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n    const factory$n = detail => {\n      const events = events$a(detail.action);\n      const tag = detail.dom.tag;\n      const lookupAttr = attr => get$g(detail.dom, 'attributes').bind(attrs => get$g(attrs, attr));\n      const getModAttributes = () => {\n        if (tag === 'button') {\n          const type = lookupAttr('type').getOr('button');\n          const roleAttrs = lookupAttr('role').map(role => ({ role })).getOr({});\n          return {\n            type,\n            ...roleAttrs\n          };\n        } else {\n          const role = detail.role.getOr(lookupAttr('role').getOr('button'));\n          return { role };\n        }\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components: detail.components,\n        events,\n        behaviours: SketchBehaviours.augment(detail.buttonBehaviours, [\n          Focusing.config({}),\n          Keying.config({\n            mode: 'execution',\n            useSpace: true,\n            useEnter: true\n          })\n        ]),\n        domModification: { attributes: getModAttributes() },\n        eventOrder: detail.eventOrder\n      };\n    };\n    const Button = single({\n      name: 'Button',\n      factory: factory$n,\n      configFields: [\n        defaulted('uid', undefined),\n        required$1('dom'),\n        defaulted('components', []),\n        SketchBehaviours.field('buttonBehaviours', [\n          Focusing,\n          Keying\n        ]),\n        option$3('action'),\n        option$3('role'),\n        defaulted('eventOrder', {})\n      ]\n    });\n\n    const getAttrs = elem => {\n      const attributes = elem.dom.attributes !== undefined ? elem.dom.attributes : [];\n      return foldl(attributes, (b, attr) => {\n        if (attr.name === 'class') {\n          return b;\n        } else {\n          return {\n            ...b,\n            [attr.name]: attr.value\n          };\n        }\n      }, {});\n    };\n    const getClasses = elem => Array.prototype.slice.call(elem.dom.classList, 0);\n    const fromHtml = html => {\n      const elem = SugarElement.fromHtml(html);\n      const children$1 = children(elem);\n      const attrs = getAttrs(elem);\n      const classes = getClasses(elem);\n      const contents = children$1.length === 0 ? {} : { innerHtml: get$9(elem) };\n      return {\n        tag: name$3(elem),\n        classes,\n        attributes: attrs,\n        ...contents\n      };\n    };\n\n    const record = spec => {\n      const uid = isSketchSpec(spec) && hasNonNullableKey(spec, 'uid') ? spec.uid : generate$5('memento');\n      const get = anyInSystem => anyInSystem.getSystem().getByUid(uid).getOrDie();\n      const getOpt = anyInSystem => anyInSystem.getSystem().getByUid(uid).toOptional();\n      const asSpec = () => ({\n        ...spec,\n        uid\n      });\n      return {\n        get,\n        getOpt,\n        asSpec\n      };\n    };\n\n    /*! @license DOMPurify 3.1.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.7/LICENSE */\n\n    const {\n      entries,\n      setPrototypeOf,\n      isFrozen,\n      getPrototypeOf,\n      getOwnPropertyDescriptor\n    } = Object;\n    let {\n      freeze,\n      seal,\n      create: create$1\n    } = Object; // eslint-disable-line import/no-mutable-exports\n    let {\n      apply,\n      construct\n    } = typeof Reflect !== 'undefined' && Reflect;\n    if (!freeze) {\n      freeze = function freeze(x) {\n        return x;\n      };\n    }\n    if (!seal) {\n      seal = function seal(x) {\n        return x;\n      };\n    }\n    if (!apply) {\n      apply = function apply(fun, thisValue, args) {\n        return fun.apply(thisValue, args);\n      };\n    }\n    if (!construct) {\n      construct = function construct(Func, args) {\n        return new Func(...args);\n      };\n    }\n    const arrayForEach = unapply(Array.prototype.forEach);\n    const arrayPop = unapply(Array.prototype.pop);\n    const arrayPush = unapply(Array.prototype.push);\n    const stringToLowerCase = unapply(String.prototype.toLowerCase);\n    const stringToString = unapply(String.prototype.toString);\n    const stringMatch = unapply(String.prototype.match);\n    const stringReplace = unapply(String.prototype.replace);\n    const stringIndexOf = unapply(String.prototype.indexOf);\n    const stringTrim = unapply(String.prototype.trim);\n    const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n    const regExpTest = unapply(RegExp.prototype.test);\n    const typeErrorCreate = unconstruct(TypeError);\n\n    /**\n     * Creates a new function that calls the given function with a specified thisArg and arguments.\n     *\n     * @param {Function} func - The function to be wrapped and called.\n     * @returns {Function} A new function that calls the given function with a specified thisArg and arguments.\n     */\n    function unapply(func) {\n      return function (thisArg) {\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n        return apply(func, thisArg, args);\n      };\n    }\n\n    /**\n     * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n     *\n     * @param {Function} func - The constructor function to be wrapped and called.\n     * @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments.\n     */\n    function unconstruct(func) {\n      return function () {\n        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          args[_key2] = arguments[_key2];\n        }\n        return construct(func, args);\n      };\n    }\n\n    /**\n     * Add properties to a lookup table\n     *\n     * @param {Object} set - The set to which elements will be added.\n     * @param {Array} array - The array containing elements to be added to the set.\n     * @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n     * @returns {Object} The modified set with added elements.\n     */\n    function addToSet(set, array) {\n      let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n      if (setPrototypeOf) {\n        // Make 'in' and truthy checks like Boolean(set.constructor)\n        // independent of any properties defined on Object.prototype.\n        // Prevent prototype setters from intercepting set as a this value.\n        setPrototypeOf(set, null);\n      }\n      let l = array.length;\n      while (l--) {\n        let element = array[l];\n        if (typeof element === 'string') {\n          const lcElement = transformCaseFunc(element);\n          if (lcElement !== element) {\n            // Config presets (e.g. tags.js, attrs.js) are immutable.\n            if (!isFrozen(array)) {\n              array[l] = lcElement;\n            }\n            element = lcElement;\n          }\n        }\n        set[element] = true;\n      }\n      return set;\n    }\n\n    /**\n     * Clean up an array to harden against CSPP\n     *\n     * @param {Array} array - The array to be cleaned.\n     * @returns {Array} The cleaned version of the array\n     */\n    function cleanArray(array) {\n      for (let index = 0; index < array.length; index++) {\n        const isPropertyExist = objectHasOwnProperty(array, index);\n        if (!isPropertyExist) {\n          array[index] = null;\n        }\n      }\n      return array;\n    }\n\n    /**\n     * Shallow clone an object\n     *\n     * @param {Object} object - The object to be cloned.\n     * @returns {Object} A new object that copies the original.\n     */\n    function clone(object) {\n      const newObject = create$1(null);\n      for (const [property, value] of entries(object)) {\n        const isPropertyExist = objectHasOwnProperty(object, property);\n        if (isPropertyExist) {\n          if (Array.isArray(value)) {\n            newObject[property] = cleanArray(value);\n          } else if (value && typeof value === 'object' && value.constructor === Object) {\n            newObject[property] = clone(value);\n          } else {\n            newObject[property] = value;\n          }\n        }\n      }\n      return newObject;\n    }\n\n    /**\n     * This method automatically checks if the prop is function or getter and behaves accordingly.\n     *\n     * @param {Object} object - The object to look up the getter function in its prototype chain.\n     * @param {String} prop - The property name for which to find the getter function.\n     * @returns {Function} The getter function found in the prototype chain or a fallback function.\n     */\n    function lookupGetter(object, prop) {\n      while (object !== null) {\n        const desc = getOwnPropertyDescriptor(object, prop);\n        if (desc) {\n          if (desc.get) {\n            return unapply(desc.get);\n          }\n          if (typeof desc.value === 'function') {\n            return unapply(desc.value);\n          }\n        }\n        object = getPrototypeOf(object);\n      }\n      function fallbackValue() {\n        return null;\n      }\n      return fallbackValue;\n    }\n\n    const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n    // SVG\n    const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n    const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n    // List of SVG elements that are disallowed by default.\n    // We still need to know them so that we can do namespace\n    // checks properly in case one wants to add them to\n    // allow-list.\n    const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n    const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n\n    // Similarly to SVG, we want to know all MathML elements,\n    // even those that we disallow by default.\n    const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n    const text$1 = freeze(['#text']);\n\n    const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\n    const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n    const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n    const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n    // eslint-disable-next-line unicorn/better-regex\n    const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n    const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\n    const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\n    const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n    const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n    const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n    );\n    const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n    const ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n    );\n    const DOCTYPE_NAME = seal(/^html$/i);\n    const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\n    var EXPRESSIONS = /*#__PURE__*/Object.freeze({\n      __proto__: null,\n      MUSTACHE_EXPR: MUSTACHE_EXPR,\n      ERB_EXPR: ERB_EXPR,\n      TMPLIT_EXPR: TMPLIT_EXPR,\n      DATA_ATTR: DATA_ATTR,\n      ARIA_ATTR: ARIA_ATTR,\n      IS_ALLOWED_URI: IS_ALLOWED_URI,\n      IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n      ATTR_WHITESPACE: ATTR_WHITESPACE,\n      DOCTYPE_NAME: DOCTYPE_NAME,\n      CUSTOM_ELEMENT: CUSTOM_ELEMENT\n    });\n\n    // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n    const NODE_TYPE = {\n      element: 1,\n      attribute: 2,\n      text: 3,\n      cdataSection: 4,\n      entityReference: 5,\n      // Deprecated\n      entityNode: 6,\n      // Deprecated\n      progressingInstruction: 7,\n      comment: 8,\n      document: 9,\n      documentType: 10,\n      documentFragment: 11,\n      notation: 12 // Deprecated\n    };\n    const getGlobal = function getGlobal() {\n      return typeof window === 'undefined' ? null : window;\n    };\n\n    /**\n     * Creates a no-op policy for internal use only.\n     * Don't export this function outside this module!\n     * @param {TrustedTypePolicyFactory} trustedTypes The policy factory.\n     * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n     * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types\n     * are not supported or creating the policy failed).\n     */\n    const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n      if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n        return null;\n      }\n\n      // Allow the callers to control the unique policy name\n      // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n      // Policy creation with duplicate names throws in Trusted Types.\n      let suffix = null;\n      const ATTR_NAME = 'data-tt-policy-suffix';\n      if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n        suffix = purifyHostElement.getAttribute(ATTR_NAME);\n      }\n      const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n      try {\n        return trustedTypes.createPolicy(policyName, {\n          createHTML(html) {\n            return html;\n          },\n          createScriptURL(scriptUrl) {\n            return scriptUrl;\n          }\n        });\n      } catch (_) {\n        // Policy creation failed (most likely another DOMPurify script has\n        // already run). Skip creating the policy, as this will only cause errors\n        // if TT are enforced.\n        console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n        return null;\n      }\n    };\n    function createDOMPurify() {\n      let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n      const DOMPurify = root => createDOMPurify(root);\n\n      /**\n       * Version label, exposed for easier checks\n       * if DOMPurify is up to date or not\n       */\n      DOMPurify.version = '3.1.7';\n\n      /**\n       * Array of elements that DOMPurify removed during sanitation.\n       * Empty if nothing was removed.\n       */\n      DOMPurify.removed = [];\n      if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document) {\n        // Not running in a browser, provide a factory function\n        // so that you can pass your own Window\n        DOMPurify.isSupported = false;\n        return DOMPurify;\n      }\n      let {\n        document\n      } = window;\n      const originalDocument = document;\n      const currentScript = originalDocument.currentScript;\n      const {\n        DocumentFragment,\n        HTMLTemplateElement,\n        Node,\n        Element,\n        NodeFilter,\n        NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n        HTMLFormElement,\n        DOMParser,\n        trustedTypes\n      } = window;\n      const ElementPrototype = Element.prototype;\n      const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n      const remove = lookupGetter(ElementPrototype, 'remove');\n      const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n      const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n      const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n      // As per issue #47, the web-components registry is inherited by a\n      // new document created via createHTMLDocument. As per the spec\n      // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n      // a new empty registry is used when creating a template contents owner\n      // document, so we use that as our parent document to ensure nothing\n      // is inherited.\n      if (typeof HTMLTemplateElement === 'function') {\n        const template = document.createElement('template');\n        if (template.content && template.content.ownerDocument) {\n          document = template.content.ownerDocument;\n        }\n      }\n      let trustedTypesPolicy;\n      let emptyHTML = '';\n      const {\n        implementation,\n        createNodeIterator,\n        createDocumentFragment,\n        getElementsByTagName\n      } = document;\n      const {\n        importNode\n      } = originalDocument;\n      let hooks = {};\n\n      /**\n       * Expose whether this browser supports running the full DOMPurify.\n       */\n      DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n      const {\n        MUSTACHE_EXPR,\n        ERB_EXPR,\n        TMPLIT_EXPR,\n        DATA_ATTR,\n        ARIA_ATTR,\n        IS_SCRIPT_OR_DATA,\n        ATTR_WHITESPACE,\n        CUSTOM_ELEMENT\n      } = EXPRESSIONS;\n      let {\n        IS_ALLOWED_URI: IS_ALLOWED_URI$1\n      } = EXPRESSIONS;\n\n      /**\n       * We consider the elements and attributes below to be safe. Ideally\n       * don't add any new ones but feel free to remove unwanted ones.\n       */\n\n      /* allowed element names */\n      let ALLOWED_TAGS = null;\n      const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text$1]);\n\n      /* Allowed attribute names */\n      let ALLOWED_ATTR = null;\n      const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n\n      /*\n       * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n       * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n       * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n       * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n       */\n      let CUSTOM_ELEMENT_HANDLING = Object.seal(create$1(null, {\n        tagNameCheck: {\n          writable: true,\n          configurable: false,\n          enumerable: true,\n          value: null\n        },\n        attributeNameCheck: {\n          writable: true,\n          configurable: false,\n          enumerable: true,\n          value: null\n        },\n        allowCustomizedBuiltInElements: {\n          writable: true,\n          configurable: false,\n          enumerable: true,\n          value: false\n        }\n      }));\n\n      /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n      let FORBID_TAGS = null;\n\n      /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n      let FORBID_ATTR = null;\n\n      /* Decide if ARIA attributes are okay */\n      let ALLOW_ARIA_ATTR = true;\n\n      /* Decide if custom data attributes are okay */\n      let ALLOW_DATA_ATTR = true;\n\n      /* Decide if unknown protocols are okay */\n      let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n      /* Decide if self-closing tags in attributes are allowed.\n       * Usually removed due to a mXSS issue in jQuery 3.0 */\n      let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n      /* Output should be safe for common template engines.\n       * This means, DOMPurify removes data attributes, mustaches and ERB\n       */\n      let SAFE_FOR_TEMPLATES = false;\n\n      /* Output should be safe even for XML used within HTML and alike.\n       * This means, DOMPurify removes comments when containing risky content.\n       */\n      let SAFE_FOR_XML = true;\n\n      /* Decide if document with <html>... should be returned */\n      let WHOLE_DOCUMENT = false;\n\n      /* Track whether config is already set on this instance of DOMPurify. */\n      let SET_CONFIG = false;\n\n      /* Decide if all elements (e.g. style, script) must be children of\n       * document.body. By default, browsers might move them to document.head */\n      let FORCE_BODY = false;\n\n      /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n       * string (or a TrustedHTML object if Trusted Types are supported).\n       * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n       */\n      let RETURN_DOM = false;\n\n      /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n       * string  (or a TrustedHTML object if Trusted Types are supported) */\n      let RETURN_DOM_FRAGMENT = false;\n\n      /* Try to return a Trusted Type object instead of a string, return a string in\n       * case Trusted Types are not supported  */\n      let RETURN_TRUSTED_TYPE = false;\n\n      /* Output should be free from DOM clobbering attacks?\n       * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n       */\n      let SANITIZE_DOM = true;\n\n      /* Achieve full DOM Clobbering protection by isolating the namespace of named\n       * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n       *\n       * HTML/DOM spec rules that enable DOM Clobbering:\n       *   - Named Access on Window (\u00A77.3.3)\n       *   - DOM Tree Accessors (\u00A73.1.5)\n       *   - Form Element Parent-Child Relations (\u00A74.10.3)\n       *   - Iframe srcdoc / Nested WindowProxies (\u00A74.8.5)\n       *   - HTMLCollection (\u00A74.2.10.2)\n       *\n       * Namespace isolation is implemented by prefixing `id` and `name` attributes\n       * with a constant string, i.e., `user-content-`\n       */\n      let SANITIZE_NAMED_PROPS = false;\n      const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n      /* Keep element content when removing element? */\n      let KEEP_CONTENT = true;\n\n      /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n       * of importing it into a new Document and returning a sanitized copy */\n      let IN_PLACE = false;\n\n      /* Allow usage of profiles like html, svg and mathMl */\n      let USE_PROFILES = {};\n\n      /* Tags to ignore content of when KEEP_CONTENT is true */\n      let FORBID_CONTENTS = null;\n      const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n      /* Tags that are safe for data: URIs */\n      let DATA_URI_TAGS = null;\n      const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n      /* Attributes safe for values like \"javascript:\" */\n      let URI_SAFE_ATTRIBUTES = null;\n      const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n      const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n      const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n      const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n      /* Document namespace */\n      let NAMESPACE = HTML_NAMESPACE;\n      let IS_EMPTY_INPUT = false;\n\n      /* Allowed XHTML+XML namespaces */\n      let ALLOWED_NAMESPACES = null;\n      const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n\n      /* Parsing of strict XHTML documents */\n      let PARSER_MEDIA_TYPE = null;\n      const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n      const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n      let transformCaseFunc = null;\n\n      /* Keep a reference to config to pass to hooks */\n      let CONFIG = null;\n\n      /* Ideally, do not touch anything below this line */\n      /* ______________________________________________ */\n\n      const formElement = document.createElement('form');\n      const isRegexOrFunction = function isRegexOrFunction(testValue) {\n        return testValue instanceof RegExp || testValue instanceof Function;\n      };\n\n      /**\n       * _parseConfig\n       *\n       * @param  {Object} cfg optional config literal\n       */\n      // eslint-disable-next-line complexity\n      const _parseConfig = function _parseConfig() {\n        let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        if (CONFIG && CONFIG === cfg) {\n          return;\n        }\n\n        /* Shield configuration object from tampering */\n        if (!cfg || typeof cfg !== 'object') {\n          cfg = {};\n        }\n\n        /* Shield configuration object from prototype pollution */\n        cfg = clone(cfg);\n        PARSER_MEDIA_TYPE =\n        // eslint-disable-next-line unicorn/prefer-includes\n        SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n\n        // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n        transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n\n        /* Set configuration parameters */\n        ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n        ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n        ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n        URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n        // eslint-disable-line indent\n        cfg.ADD_URI_SAFE_ATTR,\n        // eslint-disable-line indent\n        transformCaseFunc // eslint-disable-line indent\n        ) // eslint-disable-line indent\n        : DEFAULT_URI_SAFE_ATTRIBUTES;\n        DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS),\n        // eslint-disable-line indent\n        cfg.ADD_DATA_URI_TAGS,\n        // eslint-disable-line indent\n        transformCaseFunc // eslint-disable-line indent\n        ) // eslint-disable-line indent\n        : DEFAULT_DATA_URI_TAGS;\n        FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n        FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n        FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n        USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n        ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n        ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n        ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n        ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n        SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n        SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n        WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n        RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n        RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n        RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n        FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n        SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n        SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n        KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n        IN_PLACE = cfg.IN_PLACE || false; // Default false\n        IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n        NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n        CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n        if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n        }\n        if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n          CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n        }\n        if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n          CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n        }\n        if (SAFE_FOR_TEMPLATES) {\n          ALLOW_DATA_ATTR = false;\n        }\n        if (RETURN_DOM_FRAGMENT) {\n          RETURN_DOM = true;\n        }\n\n        /* Parse profile info */\n        if (USE_PROFILES) {\n          ALLOWED_TAGS = addToSet({}, text$1);\n          ALLOWED_ATTR = [];\n          if (USE_PROFILES.html === true) {\n            addToSet(ALLOWED_TAGS, html$1);\n            addToSet(ALLOWED_ATTR, html);\n          }\n          if (USE_PROFILES.svg === true) {\n            addToSet(ALLOWED_TAGS, svg$1);\n            addToSet(ALLOWED_ATTR, svg);\n            addToSet(ALLOWED_ATTR, xml);\n          }\n          if (USE_PROFILES.svgFilters === true) {\n            addToSet(ALLOWED_TAGS, svgFilters);\n            addToSet(ALLOWED_ATTR, svg);\n            addToSet(ALLOWED_ATTR, xml);\n          }\n          if (USE_PROFILES.mathMl === true) {\n            addToSet(ALLOWED_TAGS, mathMl$1);\n            addToSet(ALLOWED_ATTR, mathMl);\n            addToSet(ALLOWED_ATTR, xml);\n          }\n        }\n\n        /* Merge configuration parameters */\n        if (cfg.ADD_TAGS) {\n          if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n            ALLOWED_TAGS = clone(ALLOWED_TAGS);\n          }\n          addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n        }\n        if (cfg.ADD_ATTR) {\n          if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n            ALLOWED_ATTR = clone(ALLOWED_ATTR);\n          }\n          addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n        }\n        if (cfg.ADD_URI_SAFE_ATTR) {\n          addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n        }\n        if (cfg.FORBID_CONTENTS) {\n          if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n            FORBID_CONTENTS = clone(FORBID_CONTENTS);\n          }\n          addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n        }\n\n        /* Add #text in case KEEP_CONTENT is set to true */\n        if (KEEP_CONTENT) {\n          ALLOWED_TAGS['#text'] = true;\n        }\n\n        /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n        if (WHOLE_DOCUMENT) {\n          addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n        }\n\n        /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n        if (ALLOWED_TAGS.table) {\n          addToSet(ALLOWED_TAGS, ['tbody']);\n          delete FORBID_TAGS.tbody;\n        }\n        if (cfg.TRUSTED_TYPES_POLICY) {\n          if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n            throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n          }\n          if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n            throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n          }\n\n          // Overwrite existing TrustedTypes policy.\n          trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n          // Sign local variables required by `sanitize`.\n          emptyHTML = trustedTypesPolicy.createHTML('');\n        } else {\n          // Uninitialized policy, attempt to initialize the internal dompurify policy.\n          if (trustedTypesPolicy === undefined) {\n            trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n          }\n\n          // If creating the internal policy succeeded sign internal variables.\n          if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n            emptyHTML = trustedTypesPolicy.createHTML('');\n          }\n        }\n\n        // Prevent further manipulation of configuration.\n        // Not available in IE8, Safari 5, etc.\n        if (freeze) {\n          freeze(cfg);\n        }\n        CONFIG = cfg;\n      };\n      const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n      const HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n      // Certain elements are allowed in both SVG and HTML\n      // namespace. We need to specify them explicitly\n      // so that they don't get erroneously deleted from\n      // HTML namespace.\n      const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n      /* Keep track of all possible SVG and MathML tags\n       * so that we can perform the namespace checks\n       * correctly. */\n      const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n      const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n\n      /**\n       * @param  {Element} element a DOM element whose namespace is being checked\n       * @returns {boolean} Return false if the element has a\n       *  namespace that a spec-compliant parser would never\n       *  return. Return true otherwise.\n       */\n      const _checkValidNamespace = function _checkValidNamespace(element) {\n        let parent = getParentNode(element);\n\n        // In JSDOM, if we're inside shadow DOM, then parentNode\n        // can be null. We just simulate parent in this case.\n        if (!parent || !parent.tagName) {\n          parent = {\n            namespaceURI: NAMESPACE,\n            tagName: 'template'\n          };\n        }\n        const tagName = stringToLowerCase(element.tagName);\n        const parentTagName = stringToLowerCase(parent.tagName);\n        if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n          return false;\n        }\n        if (element.namespaceURI === SVG_NAMESPACE) {\n          // The only way to switch from HTML namespace to SVG\n          // is via <svg>. If it happens via any other tag, then\n          // it should be killed.\n          if (parent.namespaceURI === HTML_NAMESPACE) {\n            return tagName === 'svg';\n          }\n\n          // The only way to switch from MathML to SVG is via`\n          // svg if parent is either <annotation-xml> or MathML\n          // text integration points.\n          if (parent.namespaceURI === MATHML_NAMESPACE) {\n            return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n          }\n\n          // We only allow elements that are defined in SVG\n          // spec. All others are disallowed in SVG namespace.\n          return Boolean(ALL_SVG_TAGS[tagName]);\n        }\n        if (element.namespaceURI === MATHML_NAMESPACE) {\n          // The only way to switch from HTML namespace to MathML\n          // is via <math>. If it happens via any other tag, then\n          // it should be killed.\n          if (parent.namespaceURI === HTML_NAMESPACE) {\n            return tagName === 'math';\n          }\n\n          // The only way to switch from SVG to MathML is via\n          // <math> and HTML integration points\n          if (parent.namespaceURI === SVG_NAMESPACE) {\n            return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n          }\n\n          // We only allow elements that are defined in MathML\n          // spec. All others are disallowed in MathML namespace.\n          return Boolean(ALL_MATHML_TAGS[tagName]);\n        }\n        if (element.namespaceURI === HTML_NAMESPACE) {\n          // The only way to switch from SVG to HTML is via\n          // HTML integration points, and from MathML to HTML\n          // is via MathML text integration points\n          if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n            return false;\n          }\n          if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n            return false;\n          }\n\n          // We disallow tags that are specific for MathML\n          // or SVG and should never appear in HTML namespace\n          return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n        }\n\n        // For XHTML and XML documents that support custom namespaces\n        if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n          return true;\n        }\n\n        // The code should never reach this place (this means\n        // that the element somehow got namespace that is not\n        // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n        // Return false just in case.\n        return false;\n      };\n\n      /**\n       * _forceRemove\n       *\n       * @param  {Node} node a DOM node\n       */\n      const _forceRemove = function _forceRemove(node) {\n        arrayPush(DOMPurify.removed, {\n          element: node\n        });\n        try {\n          // eslint-disable-next-line unicorn/prefer-dom-node-remove\n          getParentNode(node).removeChild(node);\n        } catch (_) {\n          remove(node);\n        }\n      };\n\n      /**\n       * _removeAttribute\n       *\n       * @param  {String} name an Attribute name\n       * @param  {Node} node a DOM node\n       */\n      const _removeAttribute = function _removeAttribute(name, node) {\n        try {\n          arrayPush(DOMPurify.removed, {\n            attribute: node.getAttributeNode(name),\n            from: node\n          });\n        } catch (_) {\n          arrayPush(DOMPurify.removed, {\n            attribute: null,\n            from: node\n          });\n        }\n        node.removeAttribute(name);\n\n        // We void attribute values for unremovable \"is\"\" attributes\n        if (name === 'is' && !ALLOWED_ATTR[name]) {\n          if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n            try {\n              _forceRemove(node);\n            } catch (_) {}\n          } else {\n            try {\n              node.setAttribute(name, '');\n            } catch (_) {}\n          }\n        }\n      };\n\n      /**\n       * _initDocument\n       *\n       * @param  {String} dirty a string of dirty markup\n       * @return {Document} a DOM, filled with the dirty markup\n       */\n      const _initDocument = function _initDocument(dirty) {\n        /* Create a HTML document */\n        let doc = null;\n        let leadingWhitespace = null;\n        if (FORCE_BODY) {\n          dirty = '<remove></remove>' + dirty;\n        } else {\n          /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n          const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n          leadingWhitespace = matches && matches[0];\n        }\n        if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n          // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n          dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n        }\n        const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n        /*\n         * Use the DOMParser API by default, fallback later if needs be\n         * DOMParser not work for svg when has multiple root element.\n         */\n        if (NAMESPACE === HTML_NAMESPACE) {\n          try {\n            doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n          } catch (_) {}\n        }\n\n        /* Use createHTMLDocument in case DOMParser is not available */\n        if (!doc || !doc.documentElement) {\n          doc = implementation.createDocument(NAMESPACE, 'template', null);\n          try {\n            doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n          } catch (_) {\n            // Syntax error if dirtyPayload is invalid xml\n          }\n        }\n        const body = doc.body || doc.documentElement;\n        if (dirty && leadingWhitespace) {\n          body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n        }\n\n        /* Work on whole document or just its body */\n        if (NAMESPACE === HTML_NAMESPACE) {\n          return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n        }\n        return WHOLE_DOCUMENT ? doc.documentElement : body;\n      };\n\n      /**\n       * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n       *\n       * @param  {Node} root The root element or node to start traversing on.\n       * @return {NodeIterator} The created NodeIterator\n       */\n      const _createNodeIterator = function _createNodeIterator(root) {\n        return createNodeIterator.call(root.ownerDocument || root, root,\n        // eslint-disable-next-line no-bitwise\n        NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n      };\n\n      /**\n       * _isClobbered\n       *\n       * @param  {Node} elm element to check for clobbering attacks\n       * @return {Boolean} true if clobbered, false if safe\n       */\n      const _isClobbered = function _isClobbered(elm) {\n        return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n      };\n\n      /**\n       * Checks whether the given object is a DOM node.\n       *\n       * @param  {Node} object object to check whether it's a DOM node\n       * @return {Boolean} true is object is a DOM node\n       */\n      const _isNode = function _isNode(object) {\n        return typeof Node === 'function' && object instanceof Node;\n      };\n\n      /**\n       * _executeHook\n       * Execute user configurable hooks\n       *\n       * @param  {String} entryPoint  Name of the hook's entry point\n       * @param  {Node} currentNode node to work on with the hook\n       * @param  {Object} data additional hook parameters\n       */\n      const _executeHook = function _executeHook(entryPoint, currentNode, data) {\n        if (!hooks[entryPoint]) {\n          return;\n        }\n        arrayForEach(hooks[entryPoint], hook => {\n          hook.call(DOMPurify, currentNode, data, CONFIG);\n        });\n      };\n\n      /**\n       * _sanitizeElements\n       *\n       * @protect nodeName\n       * @protect textContent\n       * @protect removeChild\n       *\n       * @param   {Node} currentNode to check for permission to exist\n       * @return  {Boolean} true if node was killed, false if left alive\n       */\n      const _sanitizeElements = function _sanitizeElements(currentNode) {\n        let content = null;\n\n        /* Execute a hook if present */\n        _executeHook('beforeSanitizeElements', currentNode, null);\n\n        /* Check if element is clobbered or can clobber */\n        if (_isClobbered(currentNode)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Now let's check the element's type and name */\n        const tagName = transformCaseFunc(currentNode.nodeName);\n\n        /* Execute a hook if present */\n        _executeHook('uponSanitizeElement', currentNode, {\n          tagName,\n          allowedTags: ALLOWED_TAGS\n        });\n\n        /* Detect mXSS attempts abusing namespace confusion */\n        if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Remove any occurrence of processing instructions */\n        if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Remove any kind of possibly harmful comments */\n        if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Remove element if anything forbids its presence */\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          /* Check if we have a custom element to handle */\n          if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n            if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n              return false;\n            }\n            if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n              return false;\n            }\n          }\n\n          /* Keep content except for bad-listed elements */\n          if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n            const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n            const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n            if (childNodes && parentNode) {\n              const childCount = childNodes.length;\n              for (let i = childCount - 1; i >= 0; --i) {\n                const childClone = cloneNode(childNodes[i], true);\n                childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n                parentNode.insertBefore(childClone, getNextSibling(currentNode));\n              }\n            }\n          }\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Check whether element has a valid namespace */\n        if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Make sure that older browsers don't get fallback-tag mXSS */\n        if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n          _forceRemove(currentNode);\n          return true;\n        }\n\n        /* Sanitize element content to be template-safe */\n        if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n          /* Get the element's text content */\n          content = currentNode.textContent;\n          arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n            content = stringReplace(content, expr, ' ');\n          });\n          if (currentNode.textContent !== content) {\n            arrayPush(DOMPurify.removed, {\n              element: currentNode.cloneNode()\n            });\n            currentNode.textContent = content;\n          }\n        }\n\n        /* Execute a hook if present */\n        _executeHook('afterSanitizeElements', currentNode, null);\n        return false;\n      };\n\n      /**\n       * _isValidAttribute\n       *\n       * @param  {string} lcTag Lowercase tag name of containing element.\n       * @param  {string} lcName Lowercase attribute name.\n       * @param  {string} value Attribute value.\n       * @return {Boolean} Returns true if `value` is valid, otherwise false.\n       */\n      // eslint-disable-next-line complexity\n      const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n        /* Make sure attribute cannot clobber */\n        if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n          return false;\n        }\n\n        /* Allow valid data-* attributes: At least one character after \"-\"\n            (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n            XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n            We don't need to check the value; it's always URI safe. */\n        if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n          if (\n          // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n          // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n          // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n          _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n          // Alternative, second condition checks if it's an `is`-attribute, AND\n          // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n          lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n            return false;\n          }\n          /* Check value is safe. First, is attr inert? If so, is safe */\n        } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n          return false;\n        } else ;\n        return true;\n      };\n\n      /**\n       * _isBasicCustomElement\n       * checks if at least one dash is included in tagName, and it's not the first char\n       * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n       *\n       * @param {string} tagName name of the tag of the node to sanitize\n       * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n       */\n      const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n        return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n      };\n\n      /**\n       * _sanitizeAttributes\n       *\n       * @protect attributes\n       * @protect nodeName\n       * @protect removeAttribute\n       * @protect setAttribute\n       *\n       * @param  {Node} currentNode to sanitize\n       */\n      const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n        /* Execute a hook if present */\n        _executeHook('beforeSanitizeAttributes', currentNode, null);\n        const {\n          attributes\n        } = currentNode;\n\n        /* Check if we have attributes; if not we might have a text node */\n        if (!attributes) {\n          return;\n        }\n        const hookEvent = {\n          attrName: '',\n          attrValue: '',\n          keepAttr: true,\n          allowedAttributes: ALLOWED_ATTR\n        };\n        let l = attributes.length;\n\n        /* Go backwards over all attributes; safely remove bad ones */\n        while (l--) {\n          const attr = attributes[l];\n          const {\n            name,\n            namespaceURI,\n            value: attrValue\n          } = attr;\n          const lcName = transformCaseFunc(name);\n          let value = name === 'value' ? attrValue : stringTrim(attrValue);\n          const initValue = value;\n\n          /* Execute a hook if present */\n          hookEvent.attrName = lcName;\n          hookEvent.attrValue = value;\n          hookEvent.keepAttr = true;\n          hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n          _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n          value = hookEvent.attrValue;\n\n          /* Did the hooks approve of the attribute? */\n          if (hookEvent.forceKeepAttr) {\n            continue;\n          }\n\n          /* Did the hooks approve of the attribute? */\n          if (!hookEvent.keepAttr) {\n            _removeAttribute(name, currentNode);\n            continue;\n          }\n\n          /* Work around a security issue in jQuery 3.0 */\n          if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n            _removeAttribute(name, currentNode);\n            continue;\n          }\n\n          /* Sanitize attribute content to be template-safe */\n          if (SAFE_FOR_TEMPLATES) {\n            arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n              value = stringReplace(value, expr, ' ');\n            });\n          }\n\n          /* Is `value` valid for this attribute? */\n          const lcTag = transformCaseFunc(currentNode.nodeName);\n          if (!_isValidAttribute(lcTag, lcName, value)) {\n            _removeAttribute(name, currentNode);\n            continue;\n          }\n\n          /* Full DOM Clobbering protection via namespace isolation,\n           * Prefix id and name attributes with `user-content-`\n           */\n          if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n            // Remove the attribute with this value\n            _removeAttribute(name, currentNode);\n\n            // Prefix the value and later re-create the attribute with the sanitized value\n            value = SANITIZE_NAMED_PROPS_PREFIX + value;\n          }\n\n          /* Work around a security issue with comments inside attributes */\n          if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n            _removeAttribute(name, currentNode);\n            continue;\n          }\n\n          /* Handle attributes that require Trusted Types */\n          if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n            if (namespaceURI) ; else {\n              switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n                case 'TrustedHTML':\n                  {\n                    value = trustedTypesPolicy.createHTML(value);\n                    break;\n                  }\n                case 'TrustedScriptURL':\n                  {\n                    value = trustedTypesPolicy.createScriptURL(value);\n                    break;\n                  }\n              }\n            }\n          }\n\n          /* Handle invalid data-* attribute set by try-catching it */\n          if (value !== initValue) {\n            try {\n              if (namespaceURI) {\n                currentNode.setAttributeNS(namespaceURI, name, value);\n              } else {\n                /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n                currentNode.setAttribute(name, value);\n              }\n              if (_isClobbered(currentNode)) {\n                _forceRemove(currentNode);\n              } else {\n                arrayPop(DOMPurify.removed);\n              }\n            } catch (_) {}\n          }\n        }\n\n        /* Execute a hook if present */\n        _executeHook('afterSanitizeAttributes', currentNode, null);\n      };\n\n      /**\n       * _sanitizeShadowDOM\n       *\n       * @param  {DocumentFragment} fragment to iterate over recursively\n       */\n      const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n        let shadowNode = null;\n        const shadowIterator = _createNodeIterator(fragment);\n\n        /* Execute a hook if present */\n        _executeHook('beforeSanitizeShadowDOM', fragment, null);\n        while (shadowNode = shadowIterator.nextNode()) {\n          /* Execute a hook if present */\n          _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n          /* Sanitize tags and elements */\n          if (_sanitizeElements(shadowNode)) {\n            continue;\n          }\n\n          /* Deep shadow DOM detected */\n          if (shadowNode.content instanceof DocumentFragment) {\n            _sanitizeShadowDOM(shadowNode.content);\n          }\n\n          /* Check attributes, sanitize if necessary */\n          _sanitizeAttributes(shadowNode);\n        }\n\n        /* Execute a hook if present */\n        _executeHook('afterSanitizeShadowDOM', fragment, null);\n      };\n\n      /**\n       * Sanitize\n       * Public method providing core sanitation functionality\n       *\n       * @param {String|Node} dirty string or DOM node\n       * @param {Object} cfg object\n       */\n      // eslint-disable-next-line complexity\n      DOMPurify.sanitize = function (dirty) {\n        let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        let body = null;\n        let importedNode = null;\n        let currentNode = null;\n        let returnNode = null;\n        /* Make sure we have a string to sanitize.\n          DO NOT return early, as this will return the wrong type if\n          the user has requested a DOM object rather than a string */\n        IS_EMPTY_INPUT = !dirty;\n        if (IS_EMPTY_INPUT) {\n          dirty = '<!-->';\n        }\n\n        /* Stringify, in case dirty is an object */\n        if (typeof dirty !== 'string' && !_isNode(dirty)) {\n          if (typeof dirty.toString === 'function') {\n            dirty = dirty.toString();\n            if (typeof dirty !== 'string') {\n              throw typeErrorCreate('dirty is not a string, aborting');\n            }\n          } else {\n            throw typeErrorCreate('toString is not a function');\n          }\n        }\n\n        /* Return dirty HTML if DOMPurify cannot run */\n        if (!DOMPurify.isSupported) {\n          return dirty;\n        }\n\n        /* Assign config vars */\n        if (!SET_CONFIG) {\n          _parseConfig(cfg);\n        }\n\n        /* Clean up removed elements */\n        DOMPurify.removed = [];\n\n        /* Check if dirty is correctly typed for IN_PLACE */\n        if (typeof dirty === 'string') {\n          IN_PLACE = false;\n        }\n        if (IN_PLACE) {\n          /* Do some early pre-sanitization to avoid unsafe root nodes */\n          if (dirty.nodeName) {\n            const tagName = transformCaseFunc(dirty.nodeName);\n            if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n              throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n            }\n          }\n        } else if (dirty instanceof Node) {\n          /* If dirty is a DOM element, append to an empty document to avoid\n             elements being stripped by the parser */\n          body = _initDocument('<!---->');\n          importedNode = body.ownerDocument.importNode(dirty, true);\n          if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n            /* Node is already a body, use as is */\n            body = importedNode;\n          } else if (importedNode.nodeName === 'HTML') {\n            body = importedNode;\n          } else {\n            // eslint-disable-next-line unicorn/prefer-dom-node-append\n            body.appendChild(importedNode);\n          }\n        } else {\n          /* Exit directly if we have nothing to do */\n          if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n          // eslint-disable-next-line unicorn/prefer-includes\n          dirty.indexOf('<') === -1) {\n            return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n          }\n\n          /* Initialize the document to work on */\n          body = _initDocument(dirty);\n\n          /* Check we have a DOM node from the data */\n          if (!body) {\n            return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n          }\n        }\n\n        /* Remove first element node (ours) if FORCE_BODY is set */\n        if (body && FORCE_BODY) {\n          _forceRemove(body.firstChild);\n        }\n\n        /* Get node iterator */\n        const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n        /* Now start iterating over the created document */\n        while (currentNode = nodeIterator.nextNode()) {\n          /* Sanitize tags and elements */\n          if (_sanitizeElements(currentNode)) {\n            continue;\n          }\n\n          /* Shadow DOM detected, sanitize it */\n          if (currentNode.content instanceof DocumentFragment) {\n            _sanitizeShadowDOM(currentNode.content);\n          }\n\n          /* Check attributes, sanitize if necessary */\n          _sanitizeAttributes(currentNode);\n        }\n\n        /* If we sanitized `dirty` in-place, return it. */\n        if (IN_PLACE) {\n          return dirty;\n        }\n\n        /* Return sanitized string or DOM */\n        if (RETURN_DOM) {\n          if (RETURN_DOM_FRAGMENT) {\n            returnNode = createDocumentFragment.call(body.ownerDocument);\n            while (body.firstChild) {\n              // eslint-disable-next-line unicorn/prefer-dom-node-append\n              returnNode.appendChild(body.firstChild);\n            }\n          } else {\n            returnNode = body;\n          }\n          if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n            /*\n              AdoptNode() is not used because internal state is not reset\n              (e.g. the past names map of a HTMLFormElement), this is safe\n              in theory but we would rather not risk another attack vector.\n              The state that is cloned by importNode() is explicitly defined\n              by the specs.\n            */\n            returnNode = importNode.call(originalDocument, returnNode, true);\n          }\n          return returnNode;\n        }\n        let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n        /* Serialize doctype if allowed */\n        if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n          serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n        }\n\n        /* Sanitize final string template-safe */\n        if (SAFE_FOR_TEMPLATES) {\n          arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n            serializedHTML = stringReplace(serializedHTML, expr, ' ');\n          });\n        }\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n      };\n\n      /**\n       * Public method to set the configuration once\n       * setConfig\n       *\n       * @param {Object} cfg configuration object\n       */\n      DOMPurify.setConfig = function () {\n        let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        _parseConfig(cfg);\n        SET_CONFIG = true;\n      };\n\n      /**\n       * Public method to remove the configuration\n       * clearConfig\n       *\n       */\n      DOMPurify.clearConfig = function () {\n        CONFIG = null;\n        SET_CONFIG = false;\n      };\n\n      /**\n       * Public method to check if an attribute value is valid.\n       * Uses last set config, if any. Otherwise, uses config defaults.\n       * isValidAttribute\n       *\n       * @param  {String} tag Tag name of containing element.\n       * @param  {String} attr Attribute name.\n       * @param  {String} value Attribute value.\n       * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n       */\n      DOMPurify.isValidAttribute = function (tag, attr, value) {\n        /* Initialize shared config vars if necessary. */\n        if (!CONFIG) {\n          _parseConfig({});\n        }\n        const lcTag = transformCaseFunc(tag);\n        const lcName = transformCaseFunc(attr);\n        return _isValidAttribute(lcTag, lcName, value);\n      };\n\n      /**\n       * AddHook\n       * Public method to add DOMPurify hooks\n       *\n       * @param {String} entryPoint entry point for the hook to add\n       * @param {Function} hookFunction function to execute\n       */\n      DOMPurify.addHook = function (entryPoint, hookFunction) {\n        if (typeof hookFunction !== 'function') {\n          return;\n        }\n        hooks[entryPoint] = hooks[entryPoint] || [];\n        arrayPush(hooks[entryPoint], hookFunction);\n      };\n\n      /**\n       * RemoveHook\n       * Public method to remove a DOMPurify hook at a given entryPoint\n       * (pops it from the stack of hooks if more are present)\n       *\n       * @param {String} entryPoint entry point for the hook to remove\n       * @return {Function} removed(popped) hook\n       */\n      DOMPurify.removeHook = function (entryPoint) {\n        if (hooks[entryPoint]) {\n          return arrayPop(hooks[entryPoint]);\n        }\n      };\n\n      /**\n       * RemoveHooks\n       * Public method to remove all DOMPurify hooks at a given entryPoint\n       *\n       * @param  {String} entryPoint entry point for the hooks to remove\n       */\n      DOMPurify.removeHooks = function (entryPoint) {\n        if (hooks[entryPoint]) {\n          hooks[entryPoint] = [];\n        }\n      };\n\n      /**\n       * RemoveAllHooks\n       * Public method to remove all DOMPurify hooks\n       */\n      DOMPurify.removeAllHooks = function () {\n        hooks = {};\n      };\n      return DOMPurify;\n    }\n    var purify = createDOMPurify();\n\n    const sanitizeHtmlString = html => purify().sanitize(html);\n\n    var global$8 = tinymce.util.Tools.resolve('tinymce.util.I18n');\n\n    const rtlTransform = {\n      'indent': true,\n      'outdent': true,\n      'table-insert-column-after': true,\n      'table-insert-column-before': true,\n      'paste-column-after': true,\n      'paste-column-before': true,\n      'unordered-list': true,\n      'list-bull-circle': true,\n      'list-bull-default': true,\n      'list-bull-square': true\n    };\n    const defaultIconName = 'temporary-placeholder';\n    const defaultIcon = icons => () => get$g(icons, defaultIconName).getOr('!not found!');\n    const getIconName = (name, icons) => {\n      const lcName = name.toLowerCase();\n      if (global$8.isRtl()) {\n        const rtlName = ensureTrailing(lcName, '-rtl');\n        return has$2(icons, rtlName) ? rtlName : lcName;\n      } else {\n        return lcName;\n      }\n    };\n    const lookupIcon = (name, icons) => get$g(icons, getIconName(name, icons));\n    const get$2 = (name, iconProvider) => {\n      const icons = iconProvider();\n      return lookupIcon(name, icons).getOrThunk(defaultIcon(icons));\n    };\n    const getOr = (name, iconProvider, fallbackIcon) => {\n      const icons = iconProvider();\n      return lookupIcon(name, icons).or(fallbackIcon).getOrThunk(defaultIcon(icons));\n    };\n    const needsRtlTransform = iconName => global$8.isRtl() ? has$2(rtlTransform, iconName) : false;\n    const addFocusableBehaviour = () => config('add-focusable', [runOnAttached(comp => {\n        child(comp.element, 'svg').each(svg => set$9(svg, 'focusable', 'false'));\n      })]);\n    const renderIcon$3 = (spec, iconName, icons, fallbackIcon) => {\n      var _a, _b;\n      const rtlIconClasses = needsRtlTransform(iconName) ? ['tox-icon--flip'] : [];\n      const iconHtml = get$g(icons, getIconName(iconName, icons)).or(fallbackIcon).getOrThunk(defaultIcon(icons));\n      return {\n        dom: {\n          tag: spec.tag,\n          attributes: (_a = spec.attributes) !== null && _a !== void 0 ? _a : {},\n          classes: spec.classes.concat(rtlIconClasses),\n          innerHtml: iconHtml\n        },\n        behaviours: derive$1([\n          ...(_b = spec.behaviours) !== null && _b !== void 0 ? _b : [],\n          addFocusableBehaviour()\n        ])\n      };\n    };\n    const render$3 = (iconName, spec, iconProvider, fallbackIcon = Optional.none()) => renderIcon$3(spec, iconName, iconProvider(), fallbackIcon);\n    const renderFirst = (iconNames, spec, iconProvider) => {\n      const icons = iconProvider();\n      const iconName = find$5(iconNames, name => has$2(icons, getIconName(name, icons)));\n      return renderIcon$3(spec, iconName.getOr(defaultIconName), icons, Optional.none());\n    };\n\n    const notificationIconMap = {\n      success: 'checkmark',\n      error: 'warning',\n      err: 'error',\n      warning: 'warning',\n      warn: 'warning',\n      info: 'info'\n    };\n    const factory$m = detail => {\n      const memBannerText = record({\n        dom: fromHtml(`<p>${ sanitizeHtmlString(detail.translationProvider(detail.text)) }</p>`),\n        behaviours: derive$1([Replacing.config({})])\n      });\n      const renderPercentBar = percent => ({\n        dom: {\n          tag: 'div',\n          classes: ['tox-bar'],\n          styles: { width: `${ percent }%` }\n        }\n      });\n      const renderPercentText = percent => ({\n        dom: {\n          tag: 'div',\n          classes: ['tox-text'],\n          innerHtml: `${ percent }%`\n        }\n      });\n      const memBannerProgress = record({\n        dom: {\n          tag: 'div',\n          classes: detail.progress ? [\n            'tox-progress-bar',\n            'tox-progress-indicator'\n          ] : ['tox-progress-bar']\n        },\n        components: [\n          {\n            dom: {\n              tag: 'div',\n              classes: ['tox-bar-container']\n            },\n            components: [renderPercentBar(0)]\n          },\n          renderPercentText(0)\n        ],\n        behaviours: derive$1([Replacing.config({})])\n      });\n      const updateProgress = (comp, percent) => {\n        if (comp.getSystem().isConnected()) {\n          memBannerProgress.getOpt(comp).each(progress => {\n            Replacing.set(progress, [\n              {\n                dom: {\n                  tag: 'div',\n                  classes: ['tox-bar-container']\n                },\n                components: [renderPercentBar(percent)]\n              },\n              renderPercentText(percent)\n            ]);\n          });\n        }\n      };\n      const updateText = (comp, text) => {\n        if (comp.getSystem().isConnected()) {\n          const banner = memBannerText.get(comp);\n          Replacing.set(banner, [text$2(text)]);\n        }\n      };\n      const apis = {\n        updateProgress,\n        updateText\n      };\n      const iconChoices = flatten([\n        detail.icon.toArray(),\n        detail.level.toArray(),\n        detail.level.bind(level => Optional.from(notificationIconMap[level])).toArray()\n      ]);\n      const memButton = record(Button.sketch({\n        dom: {\n          tag: 'button',\n          classes: [\n            'tox-notification__dismiss',\n            'tox-button',\n            'tox-button--naked',\n            'tox-button--icon'\n          ]\n        },\n        components: [render$3('close', {\n            tag: 'span',\n            classes: ['tox-icon'],\n            attributes: { 'aria-label': detail.translationProvider('Close') }\n          }, detail.iconProvider)],\n        action: comp => {\n          detail.onAction(comp);\n        }\n      }));\n      const notificationIconSpec = renderFirst(iconChoices, {\n        tag: 'div',\n        classes: ['tox-notification__icon']\n      }, detail.iconProvider);\n      const notificationBodySpec = {\n        dom: {\n          tag: 'div',\n          classes: ['tox-notification__body']\n        },\n        components: [memBannerText.asSpec()],\n        behaviours: derive$1([Replacing.config({})])\n      };\n      const components = [\n        notificationIconSpec,\n        notificationBodySpec\n      ];\n      return {\n        uid: detail.uid,\n        dom: {\n          tag: 'div',\n          attributes: { role: 'alert' },\n          classes: detail.level.map(level => [\n            'tox-notification',\n            'tox-notification--in',\n            `tox-notification--${ level }`\n          ]).getOr([\n            'tox-notification',\n            'tox-notification--in'\n          ])\n        },\n        behaviours: derive$1([\n          Focusing.config({}),\n          config('notification-events', [run$1(focusin(), comp => {\n              memButton.getOpt(comp).each(Focusing.focus);\n            })])\n        ]),\n        components: components.concat(detail.progress ? [memBannerProgress.asSpec()] : []).concat(!detail.closeButton ? [] : [memButton.asSpec()]),\n        apis\n      };\n    };\n    const Notification = single({\n      name: 'Notification',\n      factory: factory$m,\n      configFields: [\n        option$3('level'),\n        required$1('progress'),\n        option$3('icon'),\n        required$1('onAction'),\n        required$1('text'),\n        required$1('iconProvider'),\n        required$1('translationProvider'),\n        defaultedBoolean('closeButton', true)\n      ],\n      apis: {\n        updateProgress: (apis, comp, percent) => {\n          apis.updateProgress(comp, percent);\n        },\n        updateText: (apis, comp, text) => {\n          apis.updateText(comp, text);\n        }\n      }\n    });\n\n    var NotificationManagerImpl = (editor, extras, uiMothership) => {\n      const sharedBackstage = extras.backstage.shared;\n      const getBounds = () => {\n        const contentArea = box$1(SugarElement.fromDom(editor.getContentAreaContainer()));\n        const win$1 = win();\n        const x = clamp(win$1.x, contentArea.x, contentArea.right);\n        const y = clamp(win$1.y, contentArea.y, contentArea.bottom);\n        const right = Math.max(contentArea.right, win$1.right);\n        const bottom = Math.max(contentArea.bottom, win$1.bottom);\n        return Optional.some(bounds(x, y, right - x, bottom - y));\n      };\n      const open = (settings, closeCallback) => {\n        const close = () => {\n          closeCallback();\n          InlineView.hide(notificationWrapper);\n        };\n        const notification = build$1(Notification.sketch({\n          text: settings.text,\n          level: contains$2([\n            'success',\n            'error',\n            'warning',\n            'warn',\n            'info'\n          ], settings.type) ? settings.type : undefined,\n          progress: settings.progressBar === true,\n          icon: settings.icon,\n          closeButton: settings.closeButton,\n          onAction: close,\n          iconProvider: sharedBackstage.providers.icons,\n          translationProvider: sharedBackstage.providers.translate\n        }));\n        const notificationWrapper = build$1(InlineView.sketch({\n          dom: {\n            tag: 'div',\n            classes: ['tox-notifications-container']\n          },\n          lazySink: sharedBackstage.getSink,\n          fireDismissalEventInstead: {},\n          ...sharedBackstage.header.isPositionedAtTop() ? {} : { fireRepositionEventInstead: {} }\n        }));\n        uiMothership.add(notificationWrapper);\n        if (isNumber(settings.timeout) && settings.timeout > 0) {\n          global$9.setEditorTimeout(editor, () => {\n            close();\n          }, settings.timeout);\n        }\n        const reposition = () => {\n          const notificationSpec = premade(notification);\n          const anchorOverrides = { maxHeightFunction: expandable$1() };\n          const allNotifications = editor.notificationManager.getNotifications();\n          if (allNotifications[0] === thisNotification) {\n            const anchor = {\n              ...sharedBackstage.anchors.banner(),\n              overrides: anchorOverrides\n            };\n            InlineView.showWithinBounds(notificationWrapper, notificationSpec, { anchor }, getBounds);\n          } else {\n            indexOf(allNotifications, thisNotification).each(idx => {\n              const previousNotification = allNotifications[idx - 1].getEl();\n              const nodeAnchor = {\n                type: 'node',\n                root: body(),\n                node: Optional.some(SugarElement.fromDom(previousNotification)),\n                overrides: anchorOverrides,\n                layouts: {\n                  onRtl: () => [south$2],\n                  onLtr: () => [south$2]\n                }\n              };\n              InlineView.showWithinBounds(notificationWrapper, notificationSpec, { anchor: nodeAnchor }, getBounds);\n            });\n          }\n        };\n        const thisNotification = {\n          close,\n          reposition,\n          text: nuText => {\n            Notification.updateText(notification, nuText);\n          },\n          settings,\n          getEl: () => notification.element.dom,\n          progressBar: {\n            value: percent => {\n              Notification.updateProgress(notification, percent);\n            }\n          }\n        };\n        return thisNotification;\n      };\n      const close = notification => {\n        notification.close();\n      };\n      const getArgs = notification => {\n        return notification.settings;\n      };\n      return {\n        open,\n        close,\n        getArgs\n      };\n    };\n\n    var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n    var global$6 = tinymce.util.Tools.resolve('tinymce.EditorManager');\n\n    var global$5 = tinymce.util.Tools.resolve('tinymce.Env');\n\n    var ToolbarMode$1;\n    (function (ToolbarMode) {\n      ToolbarMode['default'] = 'wrap';\n      ToolbarMode['floating'] = 'floating';\n      ToolbarMode['sliding'] = 'sliding';\n      ToolbarMode['scrolling'] = 'scrolling';\n    }(ToolbarMode$1 || (ToolbarMode$1 = {})));\n    var ToolbarLocation$1;\n    (function (ToolbarLocation) {\n      ToolbarLocation['auto'] = 'auto';\n      ToolbarLocation['top'] = 'top';\n      ToolbarLocation['bottom'] = 'bottom';\n    }(ToolbarLocation$1 || (ToolbarLocation$1 = {})));\n    const option$2 = name => editor => editor.options.get(name);\n    const wrapOptional = fn => editor => Optional.from(fn(editor));\n    const register$e = editor => {\n      const isPhone = global$5.deviceType.isPhone();\n      const isMobile = global$5.deviceType.isTablet() || isPhone;\n      const registerOption = editor.options.register;\n      const stringOrFalseProcessor = value => isString(value) || value === false;\n      const stringOrNumberProcessor = value => isString(value) || isNumber(value);\n      registerOption('skin', {\n        processor: value => isString(value) || value === false,\n        default: 'oxide'\n      });\n      registerOption('skin_url', { processor: 'string' });\n      registerOption('height', {\n        processor: stringOrNumberProcessor,\n        default: Math.max(editor.getElement().offsetHeight, 400)\n      });\n      registerOption('width', {\n        processor: stringOrNumberProcessor,\n        default: global$7.DOM.getStyle(editor.getElement(), 'width')\n      });\n      registerOption('min_height', {\n        processor: 'number',\n        default: 100\n      });\n      registerOption('min_width', { processor: 'number' });\n      registerOption('max_height', { processor: 'number' });\n      registerOption('max_width', { processor: 'number' });\n      registerOption('style_formats', { processor: 'object[]' });\n      registerOption('style_formats_merge', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('style_formats_autohide', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('line_height_formats', {\n        processor: 'string',\n        default: '1 1.1 1.2 1.3 1.4 1.5 2'\n      });\n      registerOption('font_family_formats', {\n        processor: 'string',\n        default: 'Andale Mono=andale mono,monospace;' + 'Arial=arial,helvetica,sans-serif;' + 'Arial Black=arial black,sans-serif;' + 'Book Antiqua=book antiqua,palatino,serif;' + 'Comic Sans MS=comic sans ms,sans-serif;' + 'Courier New=courier new,courier,monospace;' + 'Georgia=georgia,palatino,serif;' + 'Helvetica=helvetica,arial,sans-serif;' + 'Impact=impact,sans-serif;' + 'Symbol=symbol;' + 'Tahoma=tahoma,arial,helvetica,sans-serif;' + 'Terminal=terminal,monaco,monospace;' + 'Times New Roman=times new roman,times,serif;' + 'Trebuchet MS=trebuchet ms,geneva,sans-serif;' + 'Verdana=verdana,geneva,sans-serif;' + 'Webdings=webdings;' + 'Wingdings=wingdings,zapf dingbats'\n      });\n      registerOption('font_size_formats', {\n        processor: 'string',\n        default: '8pt 10pt 12pt 14pt 18pt 24pt 36pt'\n      });\n      registerOption('font_size_input_default_unit', {\n        processor: 'string',\n        default: 'pt'\n      });\n      registerOption('block_formats', {\n        processor: 'string',\n        default: 'Paragraph=p;' + 'Heading 1=h1;' + 'Heading 2=h2;' + 'Heading 3=h3;' + 'Heading 4=h4;' + 'Heading 5=h5;' + 'Heading 6=h6;' + 'Preformatted=pre'\n      });\n      registerOption('content_langs', { processor: 'object[]' });\n      registerOption('removed_menuitems', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('menubar', {\n        processor: value => isString(value) || isBoolean(value),\n        default: !isPhone\n      });\n      registerOption('menu', {\n        processor: 'object',\n        default: {}\n      });\n      registerOption('toolbar', {\n        processor: value => {\n          if (isBoolean(value) || isString(value) || isArray(value)) {\n            return {\n              value,\n              valid: true\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be a boolean, string or array.'\n            };\n          }\n        },\n        default: true\n      });\n      range$2(9, num => {\n        registerOption('toolbar' + (num + 1), { processor: 'string' });\n      });\n      registerOption('toolbar_mode', {\n        processor: 'string',\n        default: isMobile ? 'scrolling' : 'floating'\n      });\n      registerOption('toolbar_groups', {\n        processor: 'object',\n        default: {}\n      });\n      registerOption('toolbar_location', {\n        processor: 'string',\n        default: ToolbarLocation$1.auto\n      });\n      registerOption('toolbar_persist', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('toolbar_sticky', {\n        processor: 'boolean',\n        default: editor.inline\n      });\n      registerOption('toolbar_sticky_offset', {\n        processor: 'number',\n        default: 0\n      });\n      registerOption('fixed_toolbar_container', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('fixed_toolbar_container_target', { processor: 'object' });\n      registerOption('ui_mode', {\n        processor: 'string',\n        default: 'combined'\n      });\n      registerOption('file_picker_callback', { processor: 'function' });\n      registerOption('file_picker_validator_handler', { processor: 'function' });\n      registerOption('file_picker_types', { processor: 'string' });\n      registerOption('typeahead_urls', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('anchor_top', {\n        processor: stringOrFalseProcessor,\n        default: '#top'\n      });\n      registerOption('anchor_bottom', {\n        processor: stringOrFalseProcessor,\n        default: '#bottom'\n      });\n      registerOption('draggable_modal', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('statusbar', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('elementpath', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('branding', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('promotion', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('resize', {\n        processor: value => value === 'both' || isBoolean(value),\n        default: !global$5.deviceType.isTouch()\n      });\n      registerOption('sidebar_show', { processor: 'string' });\n      registerOption('help_accessibility', {\n        processor: 'boolean',\n        default: editor.hasPlugin('help')\n      });\n      registerOption('default_font_stack', {\n        processor: 'string[]',\n        default: []\n      });\n    };\n    const isReadOnly = option$2('readonly');\n    const getHeightOption = option$2('height');\n    const getWidthOption = option$2('width');\n    const getMinWidthOption = wrapOptional(option$2('min_width'));\n    const getMinHeightOption = wrapOptional(option$2('min_height'));\n    const getMaxWidthOption = wrapOptional(option$2('max_width'));\n    const getMaxHeightOption = wrapOptional(option$2('max_height'));\n    const getUserStyleFormats = wrapOptional(option$2('style_formats'));\n    const shouldMergeStyleFormats = option$2('style_formats_merge');\n    const shouldAutoHideStyleFormats = option$2('style_formats_autohide');\n    const getContentLanguages = option$2('content_langs');\n    const getRemovedMenuItems = option$2('removed_menuitems');\n    const getToolbarMode = option$2('toolbar_mode');\n    const getToolbarGroups = option$2('toolbar_groups');\n    const getToolbarLocation = option$2('toolbar_location');\n    const fixedContainerSelector = option$2('fixed_toolbar_container');\n    const fixedToolbarContainerTarget = option$2('fixed_toolbar_container_target');\n    const isToolbarPersist = option$2('toolbar_persist');\n    const getStickyToolbarOffset = option$2('toolbar_sticky_offset');\n    const getMenubar = option$2('menubar');\n    const getToolbar = option$2('toolbar');\n    const getFilePickerCallback = option$2('file_picker_callback');\n    const getFilePickerValidatorHandler = option$2('file_picker_validator_handler');\n    const getFontSizeInputDefaultUnit = option$2('font_size_input_default_unit');\n    const getFilePickerTypes = option$2('file_picker_types');\n    const useTypeaheadUrls = option$2('typeahead_urls');\n    const getAnchorTop = option$2('anchor_top');\n    const getAnchorBottom = option$2('anchor_bottom');\n    const isDraggableModal$1 = option$2('draggable_modal');\n    const useStatusBar = option$2('statusbar');\n    const useElementPath = option$2('elementpath');\n    const useBranding = option$2('branding');\n    const getResize = option$2('resize');\n    const getPasteAsText = option$2('paste_as_text');\n    const getSidebarShow = option$2('sidebar_show');\n    const promotionEnabled = option$2('promotion');\n    const useHelpAccessibility = option$2('help_accessibility');\n    const getDefaultFontStack = option$2('default_font_stack');\n    const isSkinDisabled = editor => editor.options.get('skin') === false;\n    const isMenubarEnabled = editor => editor.options.get('menubar') !== false;\n    const getSkinUrl = editor => {\n      const skinUrl = editor.options.get('skin_url');\n      if (isSkinDisabled(editor)) {\n        return skinUrl;\n      } else {\n        if (skinUrl) {\n          return editor.documentBaseURI.toAbsolute(skinUrl);\n        } else {\n          const skin = editor.options.get('skin');\n          return global$6.baseURL + '/skins/ui/' + skin;\n        }\n      }\n    };\n    const getSkinUrlOption = editor => Optional.from(editor.options.get('skin_url'));\n    const getLineHeightFormats = editor => editor.options.get('line_height_formats').split(' ');\n    const isToolbarEnabled = editor => {\n      const toolbar = getToolbar(editor);\n      const isToolbarString = isString(toolbar);\n      const isToolbarObjectArray = isArray(toolbar) && toolbar.length > 0;\n      return !isMultipleToolbars(editor) && (isToolbarObjectArray || isToolbarString || toolbar === true);\n    };\n    const getMultipleToolbarsOption = editor => {\n      const toolbars = range$2(9, num => editor.options.get('toolbar' + (num + 1)));\n      const toolbarArray = filter$2(toolbars, isString);\n      return someIf(toolbarArray.length > 0, toolbarArray);\n    };\n    const isMultipleToolbars = editor => getMultipleToolbarsOption(editor).fold(() => {\n      const toolbar = getToolbar(editor);\n      return isArrayOf(toolbar, isString) && toolbar.length > 0;\n    }, always);\n    const isToolbarLocationBottom = editor => getToolbarLocation(editor) === ToolbarLocation$1.bottom;\n    const fixedContainerTarget = editor => {\n      var _a;\n      if (!editor.inline) {\n        return Optional.none();\n      }\n      const selector = (_a = fixedContainerSelector(editor)) !== null && _a !== void 0 ? _a : '';\n      if (selector.length > 0) {\n        return descendant(body(), selector);\n      }\n      const element = fixedToolbarContainerTarget(editor);\n      if (isNonNullable(element)) {\n        return Optional.some(SugarElement.fromDom(element));\n      }\n      return Optional.none();\n    };\n    const useFixedContainer = editor => editor.inline && fixedContainerTarget(editor).isSome();\n    const getUiContainer = editor => {\n      const fixedContainer = fixedContainerTarget(editor);\n      return fixedContainer.getOrThunk(() => getContentContainer(getRootNode(SugarElement.fromDom(editor.getElement()))));\n    };\n    const isDistractionFree = editor => editor.inline && !isMenubarEnabled(editor) && !isToolbarEnabled(editor) && !isMultipleToolbars(editor);\n    const isStickyToolbar = editor => {\n      const isStickyToolbar = editor.options.get('toolbar_sticky');\n      return (isStickyToolbar || editor.inline) && !useFixedContainer(editor) && !isDistractionFree(editor);\n    };\n    const isSplitUiMode = editor => !useFixedContainer(editor) && editor.options.get('ui_mode') === 'split';\n    const getMenus = editor => {\n      const menu = editor.options.get('menu');\n      return map$1(menu, menu => ({\n        ...menu,\n        items: menu.items\n      }));\n    };\n\n    var Options = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        get ToolbarMode () { return ToolbarMode$1; },\n        get ToolbarLocation () { return ToolbarLocation$1; },\n        register: register$e,\n        getSkinUrl: getSkinUrl,\n        getSkinUrlOption: getSkinUrlOption,\n        isReadOnly: isReadOnly,\n        isSkinDisabled: isSkinDisabled,\n        getHeightOption: getHeightOption,\n        getWidthOption: getWidthOption,\n        getMinWidthOption: getMinWidthOption,\n        getMinHeightOption: getMinHeightOption,\n        getMaxWidthOption: getMaxWidthOption,\n        getMaxHeightOption: getMaxHeightOption,\n        getUserStyleFormats: getUserStyleFormats,\n        shouldMergeStyleFormats: shouldMergeStyleFormats,\n        shouldAutoHideStyleFormats: shouldAutoHideStyleFormats,\n        getLineHeightFormats: getLineHeightFormats,\n        getContentLanguages: getContentLanguages,\n        getRemovedMenuItems: getRemovedMenuItems,\n        isMenubarEnabled: isMenubarEnabled,\n        isMultipleToolbars: isMultipleToolbars,\n        isToolbarEnabled: isToolbarEnabled,\n        isToolbarPersist: isToolbarPersist,\n        getMultipleToolbarsOption: getMultipleToolbarsOption,\n        getUiContainer: getUiContainer,\n        useFixedContainer: useFixedContainer,\n        isSplitUiMode: isSplitUiMode,\n        getToolbarMode: getToolbarMode,\n        isDraggableModal: isDraggableModal$1,\n        isDistractionFree: isDistractionFree,\n        isStickyToolbar: isStickyToolbar,\n        getStickyToolbarOffset: getStickyToolbarOffset,\n        getToolbarLocation: getToolbarLocation,\n        isToolbarLocationBottom: isToolbarLocationBottom,\n        getToolbarGroups: getToolbarGroups,\n        getMenus: getMenus,\n        getMenubar: getMenubar,\n        getToolbar: getToolbar,\n        getFilePickerCallback: getFilePickerCallback,\n        getFilePickerTypes: getFilePickerTypes,\n        useTypeaheadUrls: useTypeaheadUrls,\n        getAnchorTop: getAnchorTop,\n        getAnchorBottom: getAnchorBottom,\n        getFilePickerValidatorHandler: getFilePickerValidatorHandler,\n        getFontSizeInputDefaultUnit: getFontSizeInputDefaultUnit,\n        useStatusBar: useStatusBar,\n        useElementPath: useElementPath,\n        promotionEnabled: promotionEnabled,\n        useBranding: useBranding,\n        getResize: getResize,\n        getPasteAsText: getPasteAsText,\n        getSidebarShow: getSidebarShow,\n        useHelpAccessibility: useHelpAccessibility,\n        getDefaultFontStack: getDefaultFontStack\n    });\n\n    const autocompleteSelector = '[data-mce-autocompleter]';\n    const detect$1 = elm => closest$1(elm, autocompleteSelector);\n    const findIn = elm => descendant(elm, autocompleteSelector);\n\n    const setup$e = (api, editor) => {\n      const redirectKeyToItem = (item, e) => {\n        emitWith(item, keydown(), { raw: e });\n      };\n      const getItem = () => api.getMenu().bind(Highlighting.getHighlighted);\n      editor.on('keydown', e => {\n        const keyCode = e.which;\n        if (!api.isActive()) {\n          return;\n        }\n        if (api.isMenuOpen()) {\n          if (keyCode === 13) {\n            getItem().each(emitExecute);\n            e.preventDefault();\n          } else if (keyCode === 40) {\n            getItem().fold(() => {\n              api.getMenu().each(Highlighting.highlightFirst);\n            }, item => {\n              redirectKeyToItem(item, e);\n            });\n            e.preventDefault();\n            e.stopImmediatePropagation();\n          } else if (keyCode === 37 || keyCode === 38 || keyCode === 39) {\n            getItem().each(item => {\n              redirectKeyToItem(item, e);\n              e.preventDefault();\n              e.stopImmediatePropagation();\n            });\n          }\n        } else {\n          if (keyCode === 13 || keyCode === 38 || keyCode === 40) {\n            api.cancelIfNecessary();\n          }\n        }\n      });\n      editor.on('NodeChange', e => {\n        if (api.isActive() && !api.isProcessingAction() && detect$1(SugarElement.fromDom(e.element)).isNone()) {\n          api.cancelIfNecessary();\n        }\n      });\n    };\n    const AutocompleterEditorEvents = { setup: setup$e };\n\n    var ItemResponse;\n    (function (ItemResponse) {\n      ItemResponse[ItemResponse['CLOSE_ON_EXECUTE'] = 0] = 'CLOSE_ON_EXECUTE';\n      ItemResponse[ItemResponse['BUBBLE_TO_SANDBOX'] = 1] = 'BUBBLE_TO_SANDBOX';\n    }(ItemResponse || (ItemResponse = {})));\n    var ItemResponse$1 = ItemResponse;\n\n    const navClass = 'tox-menu-nav__js';\n    const selectableClass = 'tox-collection__item';\n    const colorClass = 'tox-swatch';\n    const presetClasses = {\n      normal: navClass,\n      color: colorClass\n    };\n    const tickedClass = 'tox-collection__item--enabled';\n    const groupHeadingClass = 'tox-collection__group-heading';\n    const iconClass = 'tox-collection__item-icon';\n    const textClass = 'tox-collection__item-label';\n    const accessoryClass = 'tox-collection__item-accessory';\n    const caretClass = 'tox-collection__item-caret';\n    const checkmarkClass = 'tox-collection__item-checkmark';\n    const activeClass = 'tox-collection__item--active';\n    const containerClass = 'tox-collection__item-container';\n    const containerColumnClass = 'tox-collection__item-container--column';\n    const containerRowClass = 'tox-collection__item-container--row';\n    const containerAlignRightClass = 'tox-collection__item-container--align-right';\n    const containerAlignLeftClass = 'tox-collection__item-container--align-left';\n    const containerValignTopClass = 'tox-collection__item-container--valign-top';\n    const containerValignMiddleClass = 'tox-collection__item-container--valign-middle';\n    const containerValignBottomClass = 'tox-collection__item-container--valign-bottom';\n    const classForPreset = presets => get$g(presetClasses, presets).getOr(navClass);\n\n    const forMenu = presets => {\n      if (presets === 'color') {\n        return 'tox-swatches';\n      } else {\n        return 'tox-menu';\n      }\n    };\n    const classes = presets => ({\n      backgroundMenu: 'tox-background-menu',\n      selectedMenu: 'tox-selected-menu',\n      selectedItem: 'tox-collection__item--active',\n      hasIcons: 'tox-menu--has-icons',\n      menu: forMenu(presets),\n      tieredMenu: 'tox-tiered-menu'\n    });\n\n    const markers = presets => {\n      const menuClasses = classes(presets);\n      return {\n        backgroundMenu: menuClasses.backgroundMenu,\n        selectedMenu: menuClasses.selectedMenu,\n        menu: menuClasses.menu,\n        selectedItem: menuClasses.selectedItem,\n        item: classForPreset(presets)\n      };\n    };\n    const dom$1 = (hasIcons, columns, presets) => {\n      const menuClasses = classes(presets);\n      return {\n        tag: 'div',\n        classes: flatten([\n          [\n            menuClasses.menu,\n            `tox-menu-${ columns }-column`\n          ],\n          hasIcons ? [menuClasses.hasIcons] : []\n        ])\n      };\n    };\n    const components = [Menu.parts.items({})];\n    const part = (hasIcons, columns, presets) => {\n      const menuClasses = classes(presets);\n      const d = {\n        tag: 'div',\n        classes: flatten([[menuClasses.tieredMenu]])\n      };\n      return {\n        dom: d,\n        markers: markers(presets)\n      };\n    };\n\n    const schema$l = constant$1([\n      option$3('data'),\n      defaulted('inputAttributes', {}),\n      defaulted('inputStyles', {}),\n      defaulted('tag', 'input'),\n      defaulted('inputClasses', []),\n      onHandler('onSetValue'),\n      defaulted('styles', {}),\n      defaulted('eventOrder', {}),\n      field('inputBehaviours', [\n        Representing,\n        Focusing\n      ]),\n      defaulted('selectOnFocus', true)\n    ]);\n    const focusBehaviours = detail => derive$1([Focusing.config({\n        onFocus: !detail.selectOnFocus ? noop : component => {\n          const input = component.element;\n          const value = get$6(input);\n          input.dom.setSelectionRange(0, value.length);\n        }\n      })]);\n    const behaviours = detail => ({\n      ...focusBehaviours(detail),\n      ...augment(detail.inputBehaviours, [Representing.config({\n          store: {\n            mode: 'manual',\n            ...detail.data.map(data => ({ initialValue: data })).getOr({}),\n            getValue: input => {\n              return get$6(input.element);\n            },\n            setValue: (input, data) => {\n              const current = get$6(input.element);\n              if (current !== data) {\n                set$5(input.element, data);\n              }\n            }\n          },\n          onSetValue: detail.onSetValue\n        })])\n    });\n    const dom = detail => ({\n      tag: detail.tag,\n      attributes: {\n        type: 'text',\n        ...detail.inputAttributes\n      },\n      styles: detail.inputStyles,\n      classes: detail.inputClasses\n    });\n\n    const factory$l = (detail, _spec) => ({\n      uid: detail.uid,\n      dom: dom(detail),\n      components: [],\n      behaviours: behaviours(detail),\n      eventOrder: detail.eventOrder\n    });\n    const Input = single({\n      name: 'Input',\n      configFields: schema$l(),\n      factory: factory$l\n    });\n\n    const refetchTriggerEvent = generate$6('refetch-trigger-event');\n    const redirectMenuItemInteractionEvent = generate$6('redirect-menu-item-interaction');\n\n    const menuSearcherClass = 'tox-menu__searcher';\n    const findWithinSandbox = sandboxComp => {\n      return descendant(sandboxComp.element, `.${ menuSearcherClass }`).bind(inputElem => sandboxComp.getSystem().getByDom(inputElem).toOptional());\n    };\n    const findWithinMenu = findWithinSandbox;\n    const restoreState = (inputComp, searcherState) => {\n      Representing.setValue(inputComp, searcherState.fetchPattern);\n      inputComp.element.dom.selectionStart = searcherState.selectionStart;\n      inputComp.element.dom.selectionEnd = searcherState.selectionEnd;\n    };\n    const saveState = inputComp => {\n      const fetchPattern = Representing.getValue(inputComp);\n      const selectionStart = inputComp.element.dom.selectionStart;\n      const selectionEnd = inputComp.element.dom.selectionEnd;\n      return {\n        fetchPattern,\n        selectionStart,\n        selectionEnd\n      };\n    };\n    const setActiveDescendant = (inputComp, active) => {\n      getOpt(active.element, 'id').each(id => set$9(inputComp.element, 'aria-activedescendant', id));\n    };\n    const renderMenuSearcher = spec => {\n      const handleByBrowser = (comp, se) => {\n        se.cut();\n        return Optional.none();\n      };\n      const handleByHighlightedItem = (comp, se) => {\n        const eventData = {\n          interactionEvent: se.event,\n          eventType: se.event.raw.type\n        };\n        emitWith(comp, redirectMenuItemInteractionEvent, eventData);\n        return Optional.some(true);\n      };\n      const customSearcherEventsName = 'searcher-events';\n      return {\n        dom: {\n          tag: 'div',\n          classes: [selectableClass]\n        },\n        components: [Input.sketch({\n            inputClasses: [\n              menuSearcherClass,\n              'tox-textfield'\n            ],\n            inputAttributes: {\n              ...spec.placeholder.map(placeholder => ({ placeholder: spec.i18n(placeholder) })).getOr({}),\n              'type': 'search',\n              'aria-autocomplete': 'list'\n            },\n            inputBehaviours: derive$1([\n              config(customSearcherEventsName, [\n                run$1(input(), inputComp => {\n                  emit(inputComp, refetchTriggerEvent);\n                }),\n                run$1(keydown(), (inputComp, se) => {\n                  if (se.event.raw.key === 'Escape') {\n                    se.stop();\n                  }\n                })\n              ]),\n              Keying.config({\n                mode: 'special',\n                onLeft: handleByBrowser,\n                onRight: handleByBrowser,\n                onSpace: handleByBrowser,\n                onEnter: handleByHighlightedItem,\n                onEscape: handleByHighlightedItem,\n                onUp: handleByHighlightedItem,\n                onDown: handleByHighlightedItem\n              })\n            ]),\n            eventOrder: {\n              keydown: [\n                customSearcherEventsName,\n                Keying.name()\n              ]\n            }\n          })]\n      };\n    };\n\n    const searchResultsClass = 'tox-collection--results__js';\n    const augmentWithAria = item => {\n      var _a;\n      if (item.dom) {\n        return {\n          ...item,\n          dom: {\n            ...item.dom,\n            attributes: {\n              ...(_a = item.dom.attributes) !== null && _a !== void 0 ? _a : {},\n              'id': generate$6('aria-item-search-result-id'),\n              'aria-selected': 'false'\n            }\n          }\n        };\n      } else {\n        return item;\n      }\n    };\n\n    const chunk = (rowDom, numColumns) => items => {\n      const chunks = chunk$1(items, numColumns);\n      return map$2(chunks, c => ({\n        dom: rowDom,\n        components: c\n      }));\n    };\n    const forSwatch = columns => ({\n      dom: {\n        tag: 'div',\n        classes: [\n          'tox-menu',\n          'tox-swatches-menu'\n        ]\n      },\n      components: [{\n          dom: {\n            tag: 'div',\n            classes: ['tox-swatches']\n          },\n          components: [Menu.parts.items({\n              preprocess: columns !== 'auto' ? chunk({\n                tag: 'div',\n                classes: ['tox-swatches__row']\n              }, columns) : identity\n            })]\n        }]\n    });\n    const forToolbar = columns => ({\n      dom: {\n        tag: 'div',\n        classes: [\n          'tox-menu',\n          'tox-collection',\n          'tox-collection--toolbar',\n          'tox-collection--toolbar-lg'\n        ]\n      },\n      components: [Menu.parts.items({\n          preprocess: chunk({\n            tag: 'div',\n            classes: ['tox-collection__group']\n          }, columns)\n        })]\n    });\n    const preprocessCollection = (items, isSeparator) => {\n      const allSplits = [];\n      let currentSplit = [];\n      each$1(items, (item, i) => {\n        if (isSeparator(item, i)) {\n          if (currentSplit.length > 0) {\n            allSplits.push(currentSplit);\n          }\n          currentSplit = [];\n          if (has$2(item.dom, 'innerHtml') || item.components && item.components.length > 0) {\n            currentSplit.push(item);\n          }\n        } else {\n          currentSplit.push(item);\n        }\n      });\n      if (currentSplit.length > 0) {\n        allSplits.push(currentSplit);\n      }\n      return map$2(allSplits, s => ({\n        dom: {\n          tag: 'div',\n          classes: ['tox-collection__group']\n        },\n        components: s\n      }));\n    };\n    const insertItemsPlaceholder = (columns, initItems, onItem) => {\n      return Menu.parts.items({\n        preprocess: rawItems => {\n          const enrichedItems = map$2(rawItems, onItem);\n          if (columns !== 'auto' && columns > 1) {\n            return chunk({\n              tag: 'div',\n              classes: ['tox-collection__group']\n            }, columns)(enrichedItems);\n          } else {\n            return preprocessCollection(enrichedItems, (_item, i) => initItems[i].type === 'separator');\n          }\n        }\n      });\n    };\n    const forCollection = (columns, initItems, _hasIcons = true) => ({\n      dom: {\n        tag: 'div',\n        classes: [\n          'tox-menu',\n          'tox-collection'\n        ].concat(columns === 1 ? ['tox-collection--list'] : ['tox-collection--grid'])\n      },\n      components: [insertItemsPlaceholder(columns, initItems, identity)]\n    });\n    const forCollectionWithSearchResults = (columns, initItems, _hasIcons = true) => {\n      const ariaControlsSearchResults = generate$6('aria-controls-search-results');\n      return {\n        dom: {\n          tag: 'div',\n          classes: [\n            'tox-menu',\n            'tox-collection',\n            searchResultsClass\n          ].concat(columns === 1 ? ['tox-collection--list'] : ['tox-collection--grid']),\n          attributes: { id: ariaControlsSearchResults }\n        },\n        components: [insertItemsPlaceholder(columns, initItems, augmentWithAria)]\n      };\n    };\n    const forCollectionWithSearchField = (columns, initItems, searchField) => {\n      const ariaControlsSearchResults = generate$6('aria-controls-search-results');\n      return {\n        dom: {\n          tag: 'div',\n          classes: [\n            'tox-menu',\n            'tox-collection'\n          ].concat(columns === 1 ? ['tox-collection--list'] : ['tox-collection--grid'])\n        },\n        components: [\n          renderMenuSearcher({\n            i18n: global$8.translate,\n            placeholder: searchField.placeholder\n          }),\n          {\n            dom: {\n              tag: 'div',\n              classes: [\n                ...columns === 1 ? ['tox-collection--list'] : ['tox-collection--grid'],\n                searchResultsClass\n              ],\n              attributes: { id: ariaControlsSearchResults }\n            },\n            components: [insertItemsPlaceholder(columns, initItems, augmentWithAria)]\n          }\n        ]\n      };\n    };\n    const forHorizontalCollection = (initItems, _hasIcons = true) => ({\n      dom: {\n        tag: 'div',\n        classes: [\n          'tox-collection',\n          'tox-collection--horizontal'\n        ]\n      },\n      components: [Menu.parts.items({ preprocess: items => preprocessCollection(items, (_item, i) => initItems[i].type === 'separator') })]\n    });\n\n    const menuHasIcons = xs => exists(xs, item => 'icon' in item && item.icon !== undefined);\n    const handleError = error => {\n      console.error(formatError(error));\n      console.log(error);\n      return Optional.none();\n    };\n    const createHorizontalPartialMenuWithAlloyItems = (value, _hasIcons, items, _columns, _menuLayout) => {\n      const structure = forHorizontalCollection(items);\n      return {\n        value,\n        dom: structure.dom,\n        components: structure.components,\n        items\n      };\n    };\n    const createPartialMenuWithAlloyItems = (value, hasIcons, items, columns, menuLayout) => {\n      const getNormalStructure = () => {\n        if (menuLayout.menuType !== 'searchable') {\n          return forCollection(columns, items);\n        } else {\n          return menuLayout.searchMode.searchMode === 'search-with-field' ? forCollectionWithSearchField(columns, items, menuLayout.searchMode) : forCollectionWithSearchResults(columns, items);\n        }\n      };\n      if (menuLayout.menuType === 'color') {\n        const structure = forSwatch(columns);\n        return {\n          value,\n          dom: structure.dom,\n          components: structure.components,\n          items\n        };\n      } else if (menuLayout.menuType === 'normal' && columns === 'auto') {\n        const structure = forCollection(columns, items);\n        return {\n          value,\n          dom: structure.dom,\n          components: structure.components,\n          items\n        };\n      } else if (menuLayout.menuType === 'normal' || menuLayout.menuType === 'searchable') {\n        const structure = getNormalStructure();\n        return {\n          value,\n          dom: structure.dom,\n          components: structure.components,\n          items\n        };\n      } else if (menuLayout.menuType === 'listpreview' && columns !== 'auto') {\n        const structure = forToolbar(columns);\n        return {\n          value,\n          dom: structure.dom,\n          components: structure.components,\n          items\n        };\n      } else {\n        return {\n          value,\n          dom: dom$1(hasIcons, columns, menuLayout.menuType),\n          components: components,\n          items\n        };\n      }\n    };\n\n    const type = requiredString('type');\n    const name$1 = requiredString('name');\n    const label = requiredString('label');\n    const text = requiredString('text');\n    const title = requiredString('title');\n    const icon = requiredString('icon');\n    const value$1 = requiredString('value');\n    const fetch$1 = requiredFunction('fetch');\n    const getSubmenuItems = requiredFunction('getSubmenuItems');\n    const onAction = requiredFunction('onAction');\n    const onItemAction = requiredFunction('onItemAction');\n    const onSetup = defaultedFunction('onSetup', () => noop);\n    const optionalName = optionString('name');\n    const optionalText = optionString('text');\n    const optionalIcon = optionString('icon');\n    const optionalTooltip = optionString('tooltip');\n    const optionalLabel = optionString('label');\n    const optionalShortcut = optionString('shortcut');\n    const optionalSelect = optionFunction('select');\n    const active = defaultedBoolean('active', false);\n    const borderless = defaultedBoolean('borderless', false);\n    const enabled = defaultedBoolean('enabled', true);\n    const primary = defaultedBoolean('primary', false);\n    const defaultedColumns = num => defaulted('columns', num);\n    const defaultedMeta = defaulted('meta', {});\n    const defaultedOnAction = defaultedFunction('onAction', noop);\n    const defaultedType = type => defaultedString('type', type);\n    const generatedName = namePrefix => field$1('name', 'name', defaultedThunk(() => generate$6(`${ namePrefix }-name`)), string);\n    const generatedValue = valuePrefix => field$1('value', 'value', defaultedThunk(() => generate$6(`${ valuePrefix }-value`)), anyValue());\n\n    const separatorMenuItemSchema = objOf([\n      type,\n      optionalText\n    ]);\n    const createSeparatorMenuItem = spec => asRaw('separatormenuitem', separatorMenuItemSchema, spec);\n\n    const autocompleterItemSchema = objOf([\n      defaultedType('autocompleteitem'),\n      active,\n      enabled,\n      defaultedMeta,\n      value$1,\n      optionalText,\n      optionalIcon\n    ]);\n    const createSeparatorItem = spec => asRaw('Autocompleter.Separator', separatorMenuItemSchema, spec);\n    const createAutocompleterItem = spec => asRaw('Autocompleter.Item', autocompleterItemSchema, spec);\n\n    const baseToolbarButtonFields = [\n      enabled,\n      optionalTooltip,\n      optionalIcon,\n      optionalText,\n      onSetup\n    ];\n    const toolbarButtonSchema = objOf([\n      type,\n      onAction\n    ].concat(baseToolbarButtonFields));\n    const createToolbarButton = spec => asRaw('toolbarbutton', toolbarButtonSchema, spec);\n\n    const baseToolbarToggleButtonFields = [active].concat(baseToolbarButtonFields);\n    const toggleButtonSchema = objOf(baseToolbarToggleButtonFields.concat([\n      type,\n      onAction\n    ]));\n    const createToggleButton = spec => asRaw('ToggleButton', toggleButtonSchema, spec);\n\n    const contextBarFields = [\n      defaultedFunction('predicate', never),\n      defaultedStringEnum('scope', 'node', [\n        'node',\n        'editor'\n      ]),\n      defaultedStringEnum('position', 'selection', [\n        'node',\n        'selection',\n        'line'\n      ])\n    ];\n\n    const contextButtonFields = baseToolbarButtonFields.concat([\n      defaultedType('contextformbutton'),\n      primary,\n      onAction,\n      customField('original', identity)\n    ]);\n    const contextToggleButtonFields = baseToolbarToggleButtonFields.concat([\n      defaultedType('contextformbutton'),\n      primary,\n      onAction,\n      customField('original', identity)\n    ]);\n    const launchButtonFields = baseToolbarButtonFields.concat([defaultedType('contextformbutton')]);\n    const launchToggleButtonFields = baseToolbarToggleButtonFields.concat([defaultedType('contextformtogglebutton')]);\n    const toggleOrNormal = choose$1('type', {\n      contextformbutton: contextButtonFields,\n      contextformtogglebutton: contextToggleButtonFields\n    });\n    const contextFormSchema = objOf([\n      defaultedType('contextform'),\n      defaultedFunction('initValue', constant$1('')),\n      optionalLabel,\n      requiredArrayOf('commands', toggleOrNormal),\n      optionOf('launch', choose$1('type', {\n        contextformbutton: launchButtonFields,\n        contextformtogglebutton: launchToggleButtonFields\n      }))\n    ].concat(contextBarFields));\n    const createContextForm = spec => asRaw('ContextForm', contextFormSchema, spec);\n\n    const contextToolbarSchema = objOf([\n      defaultedType('contexttoolbar'),\n      requiredString('items')\n    ].concat(contextBarFields));\n    const createContextToolbar = spec => asRaw('ContextToolbar', contextToolbarSchema, spec);\n\n    const cardImageFields = [\n      type,\n      requiredString('src'),\n      optionString('alt'),\n      defaultedArrayOf('classes', [], string)\n    ];\n    const cardImageSchema = objOf(cardImageFields);\n\n    const cardTextFields = [\n      type,\n      text,\n      optionalName,\n      defaultedArrayOf('classes', ['tox-collection__item-label'], string)\n    ];\n    const cardTextSchema = objOf(cardTextFields);\n\n    const itemSchema$1 = valueThunk(() => choose$2('type', {\n      cardimage: cardImageSchema,\n      cardtext: cardTextSchema,\n      cardcontainer: cardContainerSchema\n    }));\n    const cardContainerSchema = objOf([\n      type,\n      defaultedString('direction', 'horizontal'),\n      defaultedString('align', 'left'),\n      defaultedString('valign', 'middle'),\n      requiredArrayOf('items', itemSchema$1)\n    ]);\n\n    const commonMenuItemFields = [\n      enabled,\n      optionalText,\n      optionalShortcut,\n      generatedValue('menuitem'),\n      defaultedMeta\n    ];\n\n    const cardMenuItemSchema = objOf([\n      type,\n      optionalLabel,\n      requiredArrayOf('items', itemSchema$1),\n      onSetup,\n      defaultedOnAction\n    ].concat(commonMenuItemFields));\n    const createCardMenuItem = spec => asRaw('cardmenuitem', cardMenuItemSchema, spec);\n\n    const choiceMenuItemSchema = objOf([\n      type,\n      active,\n      optionalIcon\n    ].concat(commonMenuItemFields));\n    const createChoiceMenuItem = spec => asRaw('choicemenuitem', choiceMenuItemSchema, spec);\n\n    const baseFields = [\n      type,\n      requiredString('fancytype'),\n      defaultedOnAction\n    ];\n    const insertTableFields = [defaulted('initData', {})].concat(baseFields);\n    const colorSwatchFields = [\n      optionFunction('select'),\n      defaultedObjOf('initData', {}, [\n        defaultedBoolean('allowCustomColors', true),\n        defaultedString('storageKey', 'default'),\n        optionArrayOf('colors', anyValue())\n      ])\n    ].concat(baseFields);\n    const fancyMenuItemSchema = choose$1('fancytype', {\n      inserttable: insertTableFields,\n      colorswatch: colorSwatchFields\n    });\n    const createFancyMenuItem = spec => asRaw('fancymenuitem', fancyMenuItemSchema, spec);\n\n    const menuItemSchema = objOf([\n      type,\n      onSetup,\n      defaultedOnAction,\n      optionalIcon\n    ].concat(commonMenuItemFields));\n    const createMenuItem = spec => asRaw('menuitem', menuItemSchema, spec);\n\n    const nestedMenuItemSchema = objOf([\n      type,\n      getSubmenuItems,\n      onSetup,\n      optionalIcon\n    ].concat(commonMenuItemFields));\n    const createNestedMenuItem = spec => asRaw('nestedmenuitem', nestedMenuItemSchema, spec);\n\n    const toggleMenuItemSchema = objOf([\n      type,\n      optionalIcon,\n      active,\n      onSetup,\n      onAction\n    ].concat(commonMenuItemFields));\n    const createToggleMenuItem = spec => asRaw('togglemenuitem', toggleMenuItemSchema, spec);\n\n    const detectSize = (comp, margin, selectorClass) => {\n      const descendants$1 = descendants(comp.element, '.' + selectorClass);\n      if (descendants$1.length > 0) {\n        const columnLength = findIndex$1(descendants$1, c => {\n          const thisTop = c.dom.getBoundingClientRect().top;\n          const cTop = descendants$1[0].dom.getBoundingClientRect().top;\n          return Math.abs(thisTop - cTop) > margin;\n        }).getOr(descendants$1.length);\n        return Optional.some({\n          numColumns: columnLength,\n          numRows: Math.ceil(descendants$1.length / columnLength)\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n\n    const namedEvents = (name, handlers) => derive$1([config(name, handlers)]);\n    const unnamedEvents = handlers => namedEvents(generate$6('unnamed-events'), handlers);\n    const SimpleBehaviours = {\n      namedEvents,\n      unnamedEvents\n    };\n\n    const ExclusivityChannel = generate$6('tooltip.exclusive');\n    const ShowTooltipEvent = generate$6('tooltip.show');\n    const HideTooltipEvent = generate$6('tooltip.hide');\n\n    const hideAllExclusive = (component, _tConfig, _tState) => {\n      component.getSystem().broadcastOn([ExclusivityChannel], {});\n    };\n    const setComponents = (component, tConfig, tState, specs) => {\n      tState.getTooltip().each(tooltip => {\n        if (tooltip.getSystem().isConnected()) {\n          Replacing.set(tooltip, specs);\n        }\n      });\n    };\n\n    var TooltippingApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        hideAllExclusive: hideAllExclusive,\n        setComponents: setComponents\n    });\n\n    const events$9 = (tooltipConfig, state) => {\n      const hide = comp => {\n        state.getTooltip().each(p => {\n          detach(p);\n          tooltipConfig.onHide(comp, p);\n          state.clearTooltip();\n        });\n        state.clearTimer();\n      };\n      const show = comp => {\n        if (!state.isShowing()) {\n          hideAllExclusive(comp);\n          const sink = tooltipConfig.lazySink(comp).getOrDie();\n          const popup = comp.getSystem().build({\n            dom: tooltipConfig.tooltipDom,\n            components: tooltipConfig.tooltipComponents,\n            events: derive$2(tooltipConfig.mode === 'normal' ? [\n              run$1(mouseover(), _ => {\n                emit(comp, ShowTooltipEvent);\n              }),\n              run$1(mouseout(), _ => {\n                emit(comp, HideTooltipEvent);\n              })\n            ] : []),\n            behaviours: derive$1([Replacing.config({})])\n          });\n          state.setTooltip(popup);\n          attach(sink, popup);\n          tooltipConfig.onShow(comp, popup);\n          Positioning.position(sink, popup, { anchor: tooltipConfig.anchor(comp) });\n        }\n      };\n      return derive$2(flatten([\n        [\n          run$1(ShowTooltipEvent, comp => {\n            state.resetTimer(() => {\n              show(comp);\n            }, tooltipConfig.delay);\n          }),\n          run$1(HideTooltipEvent, comp => {\n            state.resetTimer(() => {\n              hide(comp);\n            }, tooltipConfig.delay);\n          }),\n          run$1(receive(), (comp, message) => {\n            const receivingData = message;\n            if (!receivingData.universal) {\n              if (contains$2(receivingData.channels, ExclusivityChannel)) {\n                hide(comp);\n              }\n            }\n          }),\n          runOnDetached(comp => {\n            hide(comp);\n          })\n        ],\n        tooltipConfig.mode === 'normal' ? [\n          run$1(focusin(), comp => {\n            emit(comp, ShowTooltipEvent);\n          }),\n          run$1(postBlur(), comp => {\n            emit(comp, HideTooltipEvent);\n          }),\n          run$1(mouseover(), comp => {\n            emit(comp, ShowTooltipEvent);\n          }),\n          run$1(mouseout(), comp => {\n            emit(comp, HideTooltipEvent);\n          })\n        ] : [\n          run$1(highlight$1(), (comp, _se) => {\n            emit(comp, ShowTooltipEvent);\n          }),\n          run$1(dehighlight$1(), comp => {\n            emit(comp, HideTooltipEvent);\n          })\n        ]\n      ]));\n    };\n\n    var ActiveTooltipping = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        events: events$9\n    });\n\n    var TooltippingSchema = [\n      required$1('lazySink'),\n      required$1('tooltipDom'),\n      defaulted('exclusive', true),\n      defaulted('tooltipComponents', []),\n      defaulted('delay', 300),\n      defaultedStringEnum('mode', 'normal', [\n        'normal',\n        'follow-highlight'\n      ]),\n      defaulted('anchor', comp => ({\n        type: 'hotspot',\n        hotspot: comp,\n        layouts: {\n          onLtr: constant$1([\n            south$2,\n            north$2,\n            southeast$2,\n            northeast$2,\n            southwest$2,\n            northwest$2\n          ]),\n          onRtl: constant$1([\n            south$2,\n            north$2,\n            southeast$2,\n            northeast$2,\n            southwest$2,\n            northwest$2\n          ])\n        }\n      })),\n      onHandler('onHide'),\n      onHandler('onShow')\n    ];\n\n    const init$b = () => {\n      const timer = value$2();\n      const popup = value$2();\n      const clearTimer = () => {\n        timer.on(clearTimeout);\n      };\n      const resetTimer = (f, delay) => {\n        clearTimer();\n        timer.set(setTimeout(f, delay));\n      };\n      const readState = constant$1('not-implemented');\n      return nu$8({\n        getTooltip: popup.get,\n        isShowing: popup.isSet,\n        setTooltip: popup.set,\n        clearTooltip: popup.clear,\n        clearTimer,\n        resetTimer,\n        readState\n      });\n    };\n\n    var TooltippingState = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        init: init$b\n    });\n\n    const Tooltipping = create$4({\n      fields: TooltippingSchema,\n      name: 'tooltipping',\n      active: ActiveTooltipping,\n      state: TooltippingState,\n      apis: TooltippingApis\n    });\n\n    const escape = text => text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n    const ReadOnlyChannel = 'silver.readonly';\n    const ReadOnlyDataSchema = objOf([requiredBoolean('readonly')]);\n    const broadcastReadonly = (uiRefs, readonly) => {\n      const outerContainer = uiRefs.mainUi.outerContainer;\n      const target = outerContainer.element;\n      const motherships = [\n        uiRefs.mainUi.mothership,\n        ...uiRefs.uiMotherships\n      ];\n      if (readonly) {\n        each$1(motherships, m => {\n          m.broadcastOn([dismissPopups()], { target });\n        });\n      }\n      each$1(motherships, m => {\n        m.broadcastOn([ReadOnlyChannel], { readonly });\n      });\n    };\n    const setupReadonlyModeSwitch = (editor, uiRefs) => {\n      editor.on('init', () => {\n        if (editor.mode.isReadOnly()) {\n          broadcastReadonly(uiRefs, true);\n        }\n      });\n      editor.on('SwitchMode', () => broadcastReadonly(uiRefs, editor.mode.isReadOnly()));\n      if (isReadOnly(editor)) {\n        editor.mode.set('readonly');\n      }\n    };\n    const receivingConfig = () => Receiving.config({\n      channels: {\n        [ReadOnlyChannel]: {\n          schema: ReadOnlyDataSchema,\n          onReceive: (comp, data) => {\n            Disabling.set(comp, data.readonly);\n          }\n        }\n      }\n    });\n\n    const item = disabled => Disabling.config({\n      disabled,\n      disableClass: 'tox-collection__item--state-disabled'\n    });\n    const button = disabled => Disabling.config({ disabled });\n    const splitButton = disabled => Disabling.config({\n      disabled,\n      disableClass: 'tox-tbtn--disabled'\n    });\n    const toolbarButton = disabled => Disabling.config({\n      disabled,\n      disableClass: 'tox-tbtn--disabled',\n      useNative: false\n    });\n    const DisablingConfigs = {\n      item,\n      button,\n      splitButton,\n      toolbarButton\n    };\n\n    const runWithApi = (info, comp) => {\n      const api = info.getApi(comp);\n      return f => {\n        f(api);\n      };\n    };\n    const onControlAttached = (info, editorOffCell) => runOnAttached(comp => {\n      const run = runWithApi(info, comp);\n      run(api => {\n        const onDestroy = info.onSetup(api);\n        if (isFunction(onDestroy)) {\n          editorOffCell.set(onDestroy);\n        }\n      });\n    });\n    const onControlDetached = (getApi, editorOffCell) => runOnDetached(comp => runWithApi(getApi, comp)(editorOffCell.get()));\n\n    const onMenuItemExecute = (info, itemResponse) => runOnExecute$1((comp, simulatedEvent) => {\n      runWithApi(info, comp)(info.onAction);\n      if (!info.triggersSubmenu && itemResponse === ItemResponse$1.CLOSE_ON_EXECUTE) {\n        if (comp.getSystem().isConnected()) {\n          emit(comp, sandboxClose());\n        }\n        simulatedEvent.stop();\n      }\n    });\n    const menuItemEventOrder = {\n      [execute$5()]: [\n        'disabling',\n        'alloy.base.behaviour',\n        'toggling',\n        'item-events'\n      ]\n    };\n\n    const componentRenderPipeline = cat;\n    const renderCommonItem = (spec, structure, itemResponse, providersBackstage) => {\n      const editorOffCell = Cell(noop);\n      return {\n        type: 'item',\n        dom: structure.dom,\n        components: componentRenderPipeline(structure.optComponents),\n        data: spec.data,\n        eventOrder: menuItemEventOrder,\n        hasSubmenu: spec.triggersSubmenu,\n        itemBehaviours: derive$1([\n          config('item-events', [\n            onMenuItemExecute(spec, itemResponse),\n            onControlAttached(spec, editorOffCell),\n            onControlDetached(spec, editorOffCell)\n          ]),\n          DisablingConfigs.item(() => !spec.enabled || providersBackstage.isDisabled()),\n          receivingConfig(),\n          Replacing.config({})\n        ].concat(spec.itemBehaviours))\n      };\n    };\n    const buildData = source => ({\n      value: source.value,\n      meta: {\n        text: source.text.getOr(''),\n        ...source.meta\n      }\n    });\n\n    const convertText = source => {\n      const isMac = global$5.os.isMacOS() || global$5.os.isiOS();\n      const mac = {\n        alt: '\\u2325',\n        ctrl: '\\u2303',\n        shift: '\\u21E7',\n        meta: '\\u2318',\n        access: '\\u2303\\u2325'\n      };\n      const other = {\n        meta: 'Ctrl',\n        access: 'Shift+Alt'\n      };\n      const replace = isMac ? mac : other;\n      const shortcut = source.split('+');\n      const updated = map$2(shortcut, segment => {\n        const search = segment.toLowerCase().trim();\n        return has$2(replace, search) ? replace[search] : segment;\n      });\n      return isMac ? updated.join('') : updated.join('+');\n    };\n\n    const renderIcon$2 = (name, icons, classes = [iconClass]) => render$3(name, {\n      tag: 'div',\n      classes\n    }, icons);\n    const renderText = text => ({\n      dom: {\n        tag: 'div',\n        classes: [textClass]\n      },\n      components: [text$2(global$8.translate(text))]\n    });\n    const renderHtml = (html, classes) => ({\n      dom: {\n        tag: 'div',\n        classes,\n        innerHtml: html\n      }\n    });\n    const renderStyledText = (style, text) => ({\n      dom: {\n        tag: 'div',\n        classes: [textClass]\n      },\n      components: [{\n          dom: {\n            tag: style.tag,\n            styles: style.styles\n          },\n          components: [text$2(global$8.translate(text))]\n        }]\n    });\n    const renderShortcut = shortcut => ({\n      dom: {\n        tag: 'div',\n        classes: [accessoryClass]\n      },\n      components: [text$2(convertText(shortcut))]\n    });\n    const renderCheckmark = icons => renderIcon$2('checkmark', icons, [checkmarkClass]);\n    const renderSubmenuCaret = icons => renderIcon$2('chevron-right', icons, [caretClass]);\n    const renderDownwardsCaret = icons => renderIcon$2('chevron-down', icons, [caretClass]);\n    const renderContainer = (container, components) => {\n      const directionClass = container.direction === 'vertical' ? containerColumnClass : containerRowClass;\n      const alignClass = container.align === 'left' ? containerAlignLeftClass : containerAlignRightClass;\n      const getValignClass = () => {\n        switch (container.valign) {\n        case 'top':\n          return containerValignTopClass;\n        case 'middle':\n          return containerValignMiddleClass;\n        case 'bottom':\n          return containerValignBottomClass;\n        }\n      };\n      return {\n        dom: {\n          tag: 'div',\n          classes: [\n            containerClass,\n            directionClass,\n            alignClass,\n            getValignClass()\n          ]\n        },\n        components\n      };\n    };\n    const renderImage = (src, classes, alt) => ({\n      dom: {\n        tag: 'img',\n        classes,\n        attributes: {\n          src,\n          alt: alt.getOr('')\n        }\n      }\n    });\n\n    const renderColorStructure = (item, providerBackstage, fallbackIcon) => {\n      const colorPickerCommand = 'custom';\n      const removeColorCommand = 'remove';\n      const itemText = item.ariaLabel;\n      const itemValue = item.value;\n      const iconSvg = item.iconContent.map(name => getOr(name, providerBackstage.icons, fallbackIcon));\n      const getDom = () => {\n        const common = colorClass;\n        const icon = iconSvg.getOr('');\n        const attributes = itemText.map(text => ({ title: providerBackstage.translate(text) })).getOr({});\n        const baseDom = {\n          tag: 'div',\n          attributes,\n          classes: [common]\n        };\n        if (itemValue === colorPickerCommand) {\n          return {\n            ...baseDom,\n            tag: 'button',\n            classes: [\n              ...baseDom.classes,\n              'tox-swatches__picker-btn'\n            ],\n            innerHtml: icon\n          };\n        } else if (itemValue === removeColorCommand) {\n          return {\n            ...baseDom,\n            classes: [\n              ...baseDom.classes,\n              'tox-swatch--remove'\n            ],\n            innerHtml: icon\n          };\n        } else if (isNonNullable(itemValue)) {\n          return {\n            ...baseDom,\n            attributes: {\n              ...baseDom.attributes,\n              'data-mce-color': itemValue\n            },\n            styles: { 'background-color': itemValue },\n            innerHtml: icon\n          };\n        } else {\n          return baseDom;\n        }\n      };\n      return {\n        dom: getDom(),\n        optComponents: []\n      };\n    };\n    const renderItemDomStructure = ariaLabel => {\n      const domTitle = ariaLabel.map(label => ({\n        attributes: {\n          title: global$8.translate(label),\n          id: generate$6('menu-item')\n        }\n      })).getOr({});\n      return {\n        tag: 'div',\n        classes: [\n          navClass,\n          selectableClass\n        ],\n        ...domTitle\n      };\n    };\n    const renderNormalItemStructure = (info, providersBackstage, renderIcons, fallbackIcon) => {\n      const iconSpec = {\n        tag: 'div',\n        classes: [iconClass]\n      };\n      const renderIcon = iconName => render$3(iconName, iconSpec, providersBackstage.icons, fallbackIcon);\n      const renderEmptyIcon = () => Optional.some({ dom: iconSpec });\n      const leftIcon = renderIcons ? info.iconContent.map(renderIcon).orThunk(renderEmptyIcon) : Optional.none();\n      const checkmark = info.checkMark;\n      const textRender = Optional.from(info.meta).fold(() => renderText, meta => has$2(meta, 'style') ? curry(renderStyledText, meta.style) : renderText);\n      const content = info.htmlContent.fold(() => info.textContent.map(textRender), html => Optional.some(renderHtml(html, [textClass])));\n      const menuItem = {\n        dom: renderItemDomStructure(info.ariaLabel),\n        optComponents: [\n          leftIcon,\n          content,\n          info.shortcutContent.map(renderShortcut),\n          checkmark,\n          info.caret\n        ]\n      };\n      return menuItem;\n    };\n    const renderItemStructure = (info, providersBackstage, renderIcons, fallbackIcon = Optional.none()) => {\n      if (info.presets === 'color') {\n        return renderColorStructure(info, providersBackstage, fallbackIcon);\n      } else {\n        return renderNormalItemStructure(info, providersBackstage, renderIcons, fallbackIcon);\n      }\n    };\n\n    const tooltipBehaviour = (meta, sharedBackstage) => get$g(meta, 'tooltipWorker').map(tooltipWorker => [Tooltipping.config({\n        lazySink: sharedBackstage.getSink,\n        tooltipDom: {\n          tag: 'div',\n          classes: ['tox-tooltip-worker-container']\n        },\n        tooltipComponents: [],\n        anchor: comp => ({\n          type: 'submenu',\n          item: comp,\n          overrides: { maxHeightFunction: expandable$1 }\n        }),\n        mode: 'follow-highlight',\n        onShow: (component, _tooltip) => {\n          tooltipWorker(elm => {\n            Tooltipping.setComponents(component, [external$1({ element: SugarElement.fromDom(elm) })]);\n          });\n        }\n      })]).getOr([]);\n    const encodeText = text => global$7.DOM.encode(text);\n    const replaceText = (text, matchText) => {\n      const translated = global$8.translate(text);\n      const encoded = encodeText(translated);\n      if (matchText.length > 0) {\n        const escapedMatchRegex = new RegExp(escape(matchText), 'gi');\n        return encoded.replace(escapedMatchRegex, match => `<span class=\"tox-autocompleter-highlight\">${ match }</span>`);\n      } else {\n        return encoded;\n      }\n    };\n    const renderAutocompleteItem = (spec, matchText, useText, presets, onItemValueHandler, itemResponse, sharedBackstage, renderIcons = true) => {\n      const structure = renderItemStructure({\n        presets,\n        textContent: Optional.none(),\n        htmlContent: useText ? spec.text.map(text => replaceText(text, matchText)) : Optional.none(),\n        ariaLabel: spec.text,\n        iconContent: spec.icon,\n        shortcutContent: Optional.none(),\n        checkMark: Optional.none(),\n        caret: Optional.none(),\n        value: spec.value\n      }, sharedBackstage.providers, renderIcons, spec.icon);\n      return renderCommonItem({\n        data: buildData(spec),\n        enabled: spec.enabled,\n        getApi: constant$1({}),\n        onAction: _api => onItemValueHandler(spec.value, spec.meta),\n        onSetup: constant$1(noop),\n        triggersSubmenu: false,\n        itemBehaviours: tooltipBehaviour(spec.meta, sharedBackstage)\n      }, structure, itemResponse, sharedBackstage.providers);\n    };\n\n    const render$2 = (items, extras) => map$2(items, item => {\n      switch (item.type) {\n      case 'cardcontainer':\n        return renderContainer(item, render$2(item.items, extras));\n      case 'cardimage':\n        return renderImage(item.src, item.classes, item.alt);\n      case 'cardtext':\n        const shouldHighlight = item.name.exists(name => contains$2(extras.cardText.highlightOn, name));\n        const matchText = shouldHighlight ? Optional.from(extras.cardText.matchText).getOr('') : '';\n        return renderHtml(replaceText(item.text, matchText), item.classes);\n      }\n    });\n    const renderCardMenuItem = (spec, itemResponse, sharedBackstage, extras) => {\n      const getApi = component => ({\n        isEnabled: () => !Disabling.isDisabled(component),\n        setEnabled: state => {\n          Disabling.set(component, !state);\n          each$1(descendants(component.element, '*'), elm => {\n            component.getSystem().getByDom(elm).each(comp => {\n              if (comp.hasConfigured(Disabling)) {\n                Disabling.set(comp, !state);\n              }\n            });\n          });\n        }\n      });\n      const structure = {\n        dom: renderItemDomStructure(spec.label),\n        optComponents: [Optional.some({\n            dom: {\n              tag: 'div',\n              classes: [\n                containerClass,\n                containerRowClass\n              ]\n            },\n            components: render$2(spec.items, extras)\n          })]\n      };\n      return renderCommonItem({\n        data: buildData({\n          text: Optional.none(),\n          ...spec\n        }),\n        enabled: spec.enabled,\n        getApi,\n        onAction: spec.onAction,\n        onSetup: spec.onSetup,\n        triggersSubmenu: false,\n        itemBehaviours: Optional.from(extras.itemBehaviours).getOr([])\n      }, structure, itemResponse, sharedBackstage.providers);\n    };\n\n    const renderChoiceItem = (spec, useText, presets, onItemValueHandler, isSelected, itemResponse, providersBackstage, renderIcons = true) => {\n      const getApi = component => ({\n        setActive: state => {\n          Toggling.set(component, state);\n        },\n        isActive: () => Toggling.isOn(component),\n        isEnabled: () => !Disabling.isDisabled(component),\n        setEnabled: state => Disabling.set(component, !state)\n      });\n      const structure = renderItemStructure({\n        presets,\n        textContent: useText ? spec.text : Optional.none(),\n        htmlContent: Optional.none(),\n        ariaLabel: spec.text,\n        iconContent: spec.icon,\n        shortcutContent: useText ? spec.shortcut : Optional.none(),\n        checkMark: useText ? Optional.some(renderCheckmark(providersBackstage.icons)) : Optional.none(),\n        caret: Optional.none(),\n        value: spec.value\n      }, providersBackstage, renderIcons);\n      return deepMerge(renderCommonItem({\n        data: buildData(spec),\n        enabled: spec.enabled,\n        getApi,\n        onAction: _api => onItemValueHandler(spec.value),\n        onSetup: api => {\n          api.setActive(isSelected);\n          return noop;\n        },\n        triggersSubmenu: false,\n        itemBehaviours: []\n      }, structure, itemResponse, providersBackstage), {\n        toggling: {\n          toggleClass: tickedClass,\n          toggleOnExecute: false,\n          selected: spec.active,\n          exclusive: true\n        }\n      });\n    };\n\n    const parts$f = generate$3(owner$2(), parts$h());\n\n    const hexColour = value => ({ value: normalizeHex(value) });\n    const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n    const longformRegex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;\n    const isHexString = hex => shorthandRegex.test(hex) || longformRegex.test(hex);\n    const normalizeHex = hex => removeLeading(hex, '#').toUpperCase();\n    const fromString$1 = hex => isHexString(hex) ? Optional.some({ value: normalizeHex(hex) }) : Optional.none();\n    const getLongForm = hex => {\n      const hexString = hex.value.replace(shorthandRegex, (m, r, g, b) => r + r + g + g + b + b);\n      return { value: hexString };\n    };\n    const extractValues = hex => {\n      const longForm = getLongForm(hex);\n      const splitForm = longformRegex.exec(longForm.value);\n      return splitForm === null ? [\n        'FFFFFF',\n        'FF',\n        'FF',\n        'FF'\n      ] : splitForm;\n    };\n    const toHex = component => {\n      const hex = component.toString(16);\n      return (hex.length === 1 ? '0' + hex : hex).toUpperCase();\n    };\n    const fromRgba = rgbaColour => {\n      const value = toHex(rgbaColour.red) + toHex(rgbaColour.green) + toHex(rgbaColour.blue);\n      return hexColour(value);\n    };\n\n    const min = Math.min;\n    const max = Math.max;\n    const round$1 = Math.round;\n    const rgbRegex = /^\\s*rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)\\s*$/i;\n    const rgbaRegex = /^\\s*rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d?(?:\\.\\d+)?)\\s*\\)\\s*$/i;\n    const rgbaColour = (red, green, blue, alpha) => ({\n      red,\n      green,\n      blue,\n      alpha\n    });\n    const isRgbaComponent = value => {\n      const num = parseInt(value, 10);\n      return num.toString() === value && num >= 0 && num <= 255;\n    };\n    const fromHsv = hsv => {\n      let r;\n      let g;\n      let b;\n      const hue = (hsv.hue || 0) % 360;\n      let saturation = hsv.saturation / 100;\n      let brightness = hsv.value / 100;\n      saturation = max(0, min(saturation, 1));\n      brightness = max(0, min(brightness, 1));\n      if (saturation === 0) {\n        r = g = b = round$1(255 * brightness);\n        return rgbaColour(r, g, b, 1);\n      }\n      const side = hue / 60;\n      const chroma = brightness * saturation;\n      const x = chroma * (1 - Math.abs(side % 2 - 1));\n      const match = brightness - chroma;\n      switch (Math.floor(side)) {\n      case 0:\n        r = chroma;\n        g = x;\n        b = 0;\n        break;\n      case 1:\n        r = x;\n        g = chroma;\n        b = 0;\n        break;\n      case 2:\n        r = 0;\n        g = chroma;\n        b = x;\n        break;\n      case 3:\n        r = 0;\n        g = x;\n        b = chroma;\n        break;\n      case 4:\n        r = x;\n        g = 0;\n        b = chroma;\n        break;\n      case 5:\n        r = chroma;\n        g = 0;\n        b = x;\n        break;\n      default:\n        r = g = b = 0;\n      }\n      r = round$1(255 * (r + match));\n      g = round$1(255 * (g + match));\n      b = round$1(255 * (b + match));\n      return rgbaColour(r, g, b, 1);\n    };\n    const fromHex = hexColour => {\n      const result = extractValues(hexColour);\n      const red = parseInt(result[1], 16);\n      const green = parseInt(result[2], 16);\n      const blue = parseInt(result[3], 16);\n      return rgbaColour(red, green, blue, 1);\n    };\n    const fromStringValues = (red, green, blue, alpha) => {\n      const r = parseInt(red, 10);\n      const g = parseInt(green, 10);\n      const b = parseInt(blue, 10);\n      const a = parseFloat(alpha);\n      return rgbaColour(r, g, b, a);\n    };\n    const fromString = rgbaString => {\n      if (rgbaString === 'transparent') {\n        return Optional.some(rgbaColour(0, 0, 0, 0));\n      }\n      const rgbMatch = rgbRegex.exec(rgbaString);\n      if (rgbMatch !== null) {\n        return Optional.some(fromStringValues(rgbMatch[1], rgbMatch[2], rgbMatch[3], '1'));\n      }\n      const rgbaMatch = rgbaRegex.exec(rgbaString);\n      if (rgbaMatch !== null) {\n        return Optional.some(fromStringValues(rgbaMatch[1], rgbaMatch[2], rgbaMatch[3], rgbaMatch[4]));\n      }\n      return Optional.none();\n    };\n    const toString = rgba => `rgba(${ rgba.red },${ rgba.green },${ rgba.blue },${ rgba.alpha })`;\n    const red = rgbaColour(255, 0, 0, 1);\n\n    const fireSkinLoaded$1 = editor => {\n      editor.dispatch('SkinLoaded');\n    };\n    const fireSkinLoadError$1 = (editor, error) => {\n      editor.dispatch('SkinLoadError', error);\n    };\n    const fireResizeEditor = editor => {\n      editor.dispatch('ResizeEditor');\n    };\n    const fireResizeContent = (editor, e) => {\n      editor.dispatch('ResizeContent', e);\n    };\n    const fireScrollContent = (editor, e) => {\n      editor.dispatch('ScrollContent', e);\n    };\n    const fireTextColorChange = (editor, data) => {\n      editor.dispatch('TextColorChange', data);\n    };\n    const fireAfterProgressState = (editor, state) => {\n      editor.dispatch('AfterProgressState', { state });\n    };\n    const fireResolveName = (editor, node) => editor.dispatch('ResolveName', {\n      name: node.nodeName.toLowerCase(),\n      target: node\n    });\n    const fireToggleToolbarDrawer = (editor, state) => {\n      editor.dispatch('ToggleToolbarDrawer', { state });\n    };\n    const fireStylesTextUpdate = (editor, data) => {\n      editor.dispatch('StylesTextUpdate', data);\n    };\n    const fireAlignTextUpdate = (editor, data) => {\n      editor.dispatch('AlignTextUpdate', data);\n    };\n    const fireFontSizeTextUpdate = (editor, data) => {\n      editor.dispatch('FontSizeTextUpdate', data);\n    };\n    const fireFontSizeInputTextUpdate = (editor, data) => {\n      editor.dispatch('FontSizeInputTextUpdate', data);\n    };\n    const fireBlocksTextUpdate = (editor, data) => {\n      editor.dispatch('BlocksTextUpdate', data);\n    };\n    const fireFontFamilyTextUpdate = (editor, data) => {\n      editor.dispatch('FontFamilyTextUpdate', data);\n    };\n\n    const composeUnbinders = (f, g) => () => {\n      f();\n      g();\n    };\n    const onSetupEditableToggle = editor => onSetupEvent(editor, 'NodeChange', api => {\n      api.setEnabled(editor.selection.isEditable());\n    });\n    const onSetupFormatToggle = (editor, name) => api => {\n      const boundFormatChangeCallback = unbindable();\n      const init = () => {\n        api.setActive(editor.formatter.match(name));\n        const binding = editor.formatter.formatChanged(name, api.setActive);\n        boundFormatChangeCallback.set(binding);\n      };\n      editor.initialized ? init() : editor.once('init', init);\n      return () => {\n        editor.off('init', init);\n        boundFormatChangeCallback.clear();\n      };\n    };\n    const onSetupStateToggle = (editor, name) => api => {\n      const unbindEditableToogle = onSetupEditableToggle(editor)(api);\n      const unbindFormatToggle = onSetupFormatToggle(editor, name)(api);\n      return () => {\n        unbindEditableToogle();\n        unbindFormatToggle();\n      };\n    };\n    const onSetupEvent = (editor, event, f) => api => {\n      const handleEvent = () => f(api);\n      const init = () => {\n        f(api);\n        editor.on(event, handleEvent);\n      };\n      editor.initialized ? init() : editor.once('init', init);\n      return () => {\n        editor.off('init', init);\n        editor.off(event, handleEvent);\n      };\n    };\n    const onActionToggleFormat$1 = editor => rawItem => () => {\n      editor.undoManager.transact(() => {\n        editor.focus();\n        editor.execCommand('mceToggleFormat', false, rawItem.format);\n      });\n    };\n    const onActionExecCommand = (editor, command) => () => editor.execCommand(command);\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.util.LocalStorage');\n\n    const cacheStorage = {};\n    const ColorCache = (storageId, max = 10) => {\n      const storageString = global$4.getItem(storageId);\n      const localstorage = isString(storageString) ? JSON.parse(storageString) : [];\n      const prune = list => {\n        const diff = max - list.length;\n        return diff < 0 ? list.slice(0, max) : list;\n      };\n      const cache = prune(localstorage);\n      const add = key => {\n        indexOf(cache, key).each(remove);\n        cache.unshift(key);\n        if (cache.length > max) {\n          cache.pop();\n        }\n        global$4.setItem(storageId, JSON.stringify(cache));\n      };\n      const remove = idx => {\n        cache.splice(idx, 1);\n      };\n      const state = () => cache.slice(0);\n      return {\n        add,\n        state\n      };\n    };\n    const getCacheForId = id => get$g(cacheStorage, id).getOrThunk(() => {\n      const storageId = `tinymce-custom-colors-${ id }`;\n      const currentData = global$4.getItem(storageId);\n      if (isNullable(currentData)) {\n        const legacyDefault = global$4.getItem('tinymce-custom-colors');\n        global$4.setItem(storageId, isNonNullable(legacyDefault) ? legacyDefault : '[]');\n      }\n      const storage = ColorCache(storageId, 10);\n      cacheStorage[id] = storage;\n      return storage;\n    });\n    const getCurrentColors = id => map$2(getCacheForId(id).state(), color => ({\n      type: 'choiceitem',\n      text: color,\n      icon: 'checkmark',\n      value: color\n    }));\n    const addColor = (id, color) => {\n      getCacheForId(id).add(color);\n    };\n\n    const hsvColour = (hue, saturation, value) => ({\n      hue,\n      saturation,\n      value\n    });\n    const fromRgb = rgbaColour => {\n      let h = 0;\n      let s = 0;\n      let v = 0;\n      const r = rgbaColour.red / 255;\n      const g = rgbaColour.green / 255;\n      const b = rgbaColour.blue / 255;\n      const minRGB = Math.min(r, Math.min(g, b));\n      const maxRGB = Math.max(r, Math.max(g, b));\n      if (minRGB === maxRGB) {\n        v = minRGB;\n        return hsvColour(0, 0, v * 100);\n      }\n      const d = r === minRGB ? g - b : b === minRGB ? r - g : b - r;\n      h = r === minRGB ? 3 : b === minRGB ? 1 : 5;\n      h = 60 * (h - d / (maxRGB - minRGB));\n      s = (maxRGB - minRGB) / maxRGB;\n      v = maxRGB;\n      return hsvColour(Math.round(h), Math.round(s * 100), Math.round(v * 100));\n    };\n\n    const hexToHsv = hex => fromRgb(fromHex(hex));\n    const hsvToHex = hsv => fromRgba(fromHsv(hsv));\n    const anyToHex = color => fromString$1(color).orThunk(() => fromString(color).map(fromRgba)).getOrThunk(() => {\n      const canvas = document.createElement('canvas');\n      canvas.height = 1;\n      canvas.width = 1;\n      const canvasContext = canvas.getContext('2d');\n      canvasContext.clearRect(0, 0, canvas.width, canvas.height);\n      canvasContext.fillStyle = '#FFFFFF';\n      canvasContext.fillStyle = color;\n      canvasContext.fillRect(0, 0, 1, 1);\n      const rgba = canvasContext.getImageData(0, 0, 1, 1).data;\n      const r = rgba[0];\n      const g = rgba[1];\n      const b = rgba[2];\n      const a = rgba[3];\n      return fromRgba(rgbaColour(r, g, b, a));\n    });\n\n    const foregroundId = 'forecolor';\n    const backgroundId = 'hilitecolor';\n    const fallbackCols = 5;\n    const mapColors = colorMap => {\n      const colors = [];\n      for (let i = 0; i < colorMap.length; i += 2) {\n        colors.push({\n          text: colorMap[i + 1],\n          value: '#' + anyToHex(colorMap[i]).value,\n          icon: 'checkmark',\n          type: 'choiceitem'\n        });\n      }\n      return colors;\n    };\n    const option$1 = name => editor => editor.options.get(name);\n    const fallbackColor = '#000000';\n    const register$d = editor => {\n      const registerOption = editor.options.register;\n      const colorProcessor = value => {\n        if (isArrayOf(value, isString)) {\n          return {\n            value: mapColors(value),\n            valid: true\n          };\n        } else {\n          return {\n            valid: false,\n            message: 'Must be an array of strings.'\n          };\n        }\n      };\n      const colorColsProcessor = value => {\n        if (isNumber(value) && value > 0) {\n          return {\n            value,\n            valid: true\n          };\n        } else {\n          return {\n            valid: false,\n            message: 'Must be a positive number.'\n          };\n        }\n      };\n      registerOption('color_map', {\n        processor: colorProcessor,\n        default: [\n          '#BFEDD2',\n          'Light Green',\n          '#FBEEB8',\n          'Light Yellow',\n          '#F8CAC6',\n          'Light Red',\n          '#ECCAFA',\n          'Light Purple',\n          '#C2E0F4',\n          'Light Blue',\n          '#2DC26B',\n          'Green',\n          '#F1C40F',\n          'Yellow',\n          '#E03E2D',\n          'Red',\n          '#B96AD9',\n          'Purple',\n          '#3598DB',\n          'Blue',\n          '#169179',\n          'Dark Turquoise',\n          '#E67E23',\n          'Orange',\n          '#BA372A',\n          'Dark Red',\n          '#843FA1',\n          'Dark Purple',\n          '#236FA1',\n          'Dark Blue',\n          '#ECF0F1',\n          'Light Gray',\n          '#CED4D9',\n          'Medium Gray',\n          '#95A5A6',\n          'Gray',\n          '#7E8C8D',\n          'Dark Gray',\n          '#34495E',\n          'Navy Blue',\n          '#000000',\n          'Black',\n          '#ffffff',\n          'White'\n        ]\n      });\n      registerOption('color_map_background', { processor: colorProcessor });\n      registerOption('color_map_foreground', { processor: colorProcessor });\n      registerOption('color_cols', {\n        processor: colorColsProcessor,\n        default: calcCols(editor)\n      });\n      registerOption('color_cols_foreground', {\n        processor: colorColsProcessor,\n        default: defaultCols(editor, foregroundId)\n      });\n      registerOption('color_cols_background', {\n        processor: colorColsProcessor,\n        default: defaultCols(editor, backgroundId)\n      });\n      registerOption('custom_colors', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('color_default_foreground', {\n        processor: 'string',\n        default: fallbackColor\n      });\n      registerOption('color_default_background', {\n        processor: 'string',\n        default: fallbackColor\n      });\n    };\n    const getColors$2 = (editor, id) => {\n      if (id === foregroundId && editor.options.isSet('color_map_foreground')) {\n        return option$1('color_map_foreground')(editor);\n      } else if (id === backgroundId && editor.options.isSet('color_map_background')) {\n        return option$1('color_map_background')(editor);\n      } else {\n        return option$1('color_map')(editor);\n      }\n    };\n    const calcCols = (editor, id = 'default') => Math.max(fallbackCols, Math.ceil(Math.sqrt(getColors$2(editor, id).length)));\n    const defaultCols = (editor, id) => {\n      const defaultCols = option$1('color_cols')(editor);\n      const calculatedCols = calcCols(editor, id);\n      if (defaultCols === calcCols(editor)) {\n        return calculatedCols;\n      } else {\n        return defaultCols;\n      }\n    };\n    const getColorCols$1 = (editor, id = 'default') => {\n      const getCols = () => {\n        if (id === foregroundId) {\n          return option$1('color_cols_foreground')(editor);\n        } else if (id === backgroundId) {\n          return option$1('color_cols_background')(editor);\n        } else {\n          return option$1('color_cols')(editor);\n        }\n      };\n      return Math.round(getCols());\n    };\n    const hasCustomColors$1 = option$1('custom_colors');\n    const getDefaultForegroundColor = option$1('color_default_foreground');\n    const getDefaultBackgroundColor = option$1('color_default_background');\n\n    const defaultBackgroundColor = 'rgba(0, 0, 0, 0)';\n    const isValidBackgroundColor = value => fromString(value).exists(c => c.alpha !== 0);\n    const getClosestCssBackgroundColorValue = scope => {\n      return closest$4(scope, node => {\n        if (isElement$1(node)) {\n          const color = get$e(node, 'background-color');\n          return someIf(isValidBackgroundColor(color), color);\n        } else {\n          return Optional.none();\n        }\n      }).getOr(defaultBackgroundColor);\n    };\n    const getCurrentColor = (editor, format) => {\n      const node = SugarElement.fromDom(editor.selection.getStart());\n      const cssRgbValue = format === 'hilitecolor' ? getClosestCssBackgroundColorValue(node) : get$e(node, 'color');\n      return fromString(cssRgbValue).map(rgba => '#' + fromRgba(rgba).value);\n    };\n    const applyFormat = (editor, format, value) => {\n      editor.undoManager.transact(() => {\n        editor.focus();\n        editor.formatter.apply(format, { value });\n        editor.nodeChanged();\n      });\n    };\n    const removeFormat = (editor, format) => {\n      editor.undoManager.transact(() => {\n        editor.focus();\n        editor.formatter.remove(format, { value: null }, undefined, true);\n        editor.nodeChanged();\n      });\n    };\n    const registerCommands = editor => {\n      editor.addCommand('mceApplyTextcolor', (format, value) => {\n        applyFormat(editor, format, value);\n      });\n      editor.addCommand('mceRemoveTextcolor', format => {\n        removeFormat(editor, format);\n      });\n    };\n    const getAdditionalColors = hasCustom => {\n      const type = 'choiceitem';\n      const remove = {\n        type,\n        text: 'Remove color',\n        icon: 'color-swatch-remove-color',\n        value: 'remove'\n      };\n      const custom = {\n        type,\n        text: 'Custom color',\n        icon: 'color-picker',\n        value: 'custom'\n      };\n      return hasCustom ? [\n        remove,\n        custom\n      ] : [remove];\n    };\n    const applyColor = (editor, format, value, onChoice) => {\n      if (value === 'custom') {\n        const dialog = colorPickerDialog(editor);\n        dialog(colorOpt => {\n          colorOpt.each(color => {\n            addColor(format, color);\n            editor.execCommand('mceApplyTextcolor', format, color);\n            onChoice(color);\n          });\n        }, getCurrentColor(editor, format).getOr(fallbackColor));\n      } else if (value === 'remove') {\n        onChoice('');\n        editor.execCommand('mceRemoveTextcolor', format);\n      } else {\n        onChoice(value);\n        editor.execCommand('mceApplyTextcolor', format, value);\n      }\n    };\n    const getColors$1 = (colors, id, hasCustom) => colors.concat(getCurrentColors(id).concat(getAdditionalColors(hasCustom)));\n    const getFetch$1 = (colors, id, hasCustom) => callback => {\n      callback(getColors$1(colors, id, hasCustom));\n    };\n    const setIconColor = (splitButtonApi, name, newColor) => {\n      const id = name === 'forecolor' ? 'tox-icon-text-color__color' : 'tox-icon-highlight-bg-color__color';\n      splitButtonApi.setIconFill(id, newColor);\n    };\n    const setTooltip = (buttonApi, tooltip) => {\n      buttonApi.setTooltip(tooltip);\n    };\n    const select$1 = (editor, format) => value => {\n      const optCurrentHex = getCurrentColor(editor, format);\n      return is$1(optCurrentHex, value.toUpperCase());\n    };\n    const getToolTipText = (editor, format, lastColor) => {\n      if (isEmpty(lastColor)) {\n        return format === 'forecolor' ? 'Text color' : 'Background color';\n      }\n      const tooltipPrefix = format === 'forecolor' ? 'Text color {0}' : 'Background color {0}';\n      const colors = getColors$1(getColors$2(editor, format), format, false);\n      const colorText = find$5(colors, c => c.value === lastColor).getOr({ text: '' }).text;\n      return editor.translate([\n        tooltipPrefix,\n        editor.translate(colorText)\n      ]);\n    };\n    const registerTextColorButton = (editor, name, format, lastColor) => {\n      editor.ui.registry.addSplitButton(name, {\n        tooltip: getToolTipText(editor, format, lastColor.get()),\n        presets: 'color',\n        icon: name === 'forecolor' ? 'text-color' : 'highlight-bg-color',\n        select: select$1(editor, format),\n        columns: getColorCols$1(editor, format),\n        fetch: getFetch$1(getColors$2(editor, format), format, hasCustomColors$1(editor)),\n        onAction: _splitButtonApi => {\n          applyColor(editor, format, lastColor.get(), noop);\n        },\n        onItemAction: (_splitButtonApi, value) => {\n          applyColor(editor, format, value, newColor => {\n            lastColor.set(newColor);\n            fireTextColorChange(editor, {\n              name,\n              color: newColor\n            });\n          });\n        },\n        onSetup: splitButtonApi => {\n          setIconColor(splitButtonApi, name, lastColor.get());\n          const handler = e => {\n            if (e.name === name) {\n              setIconColor(splitButtonApi, e.name, e.color);\n              setTooltip(splitButtonApi, getToolTipText(editor, format, e.color));\n            }\n          };\n          editor.on('TextColorChange', handler);\n          return composeUnbinders(onSetupEditableToggle(editor)(splitButtonApi), () => {\n            editor.off('TextColorChange', handler);\n          });\n        }\n      });\n    };\n    const registerTextColorMenuItem = (editor, name, format, text, lastColor) => {\n      editor.ui.registry.addNestedMenuItem(name, {\n        text,\n        icon: name === 'forecolor' ? 'text-color' : 'highlight-bg-color',\n        onSetup: api => {\n          setTooltip(api, getToolTipText(editor, format, lastColor.get()));\n          setIconColor(api, name, lastColor.get());\n          return onSetupEditableToggle(editor)(api);\n        },\n        getSubmenuItems: () => [{\n            type: 'fancymenuitem',\n            fancytype: 'colorswatch',\n            select: select$1(editor, format),\n            initData: { storageKey: format },\n            onAction: data => {\n              applyColor(editor, format, data.value, newColor => {\n                lastColor.set(newColor);\n                fireTextColorChange(editor, {\n                  name,\n                  color: newColor\n                });\n              });\n            }\n          }]\n      });\n    };\n    const colorPickerDialog = editor => (callback, value) => {\n      let isValid = false;\n      const onSubmit = api => {\n        const data = api.getData();\n        const hex = data.colorpicker;\n        if (isValid) {\n          callback(Optional.from(hex));\n          api.close();\n        } else {\n          editor.windowManager.alert(editor.translate([\n            'Invalid hex color code: {0}',\n            hex\n          ]));\n        }\n      };\n      const onAction = (_api, details) => {\n        if (details.name === 'hex-valid') {\n          isValid = details.value;\n        }\n      };\n      const initialData = { colorpicker: value };\n      editor.windowManager.open({\n        title: 'Color Picker',\n        size: 'normal',\n        body: {\n          type: 'panel',\n          items: [{\n              type: 'colorpicker',\n              name: 'colorpicker',\n              label: 'Color'\n            }]\n        },\n        buttons: [\n          {\n            type: 'cancel',\n            name: 'cancel',\n            text: 'Cancel'\n          },\n          {\n            type: 'submit',\n            name: 'save',\n            text: 'Save',\n            primary: true\n          }\n        ],\n        initialData,\n        onAction,\n        onSubmit,\n        onClose: noop,\n        onCancel: () => {\n          callback(Optional.none());\n        }\n      });\n    };\n    const register$c = editor => {\n      registerCommands(editor);\n      const fallbackColorForeground = getDefaultForegroundColor(editor);\n      const fallbackColorBackground = getDefaultBackgroundColor(editor);\n      const lastForeColor = Cell(fallbackColorForeground);\n      const lastBackColor = Cell(fallbackColorBackground);\n      registerTextColorButton(editor, 'forecolor', 'forecolor', lastForeColor);\n      registerTextColorButton(editor, 'backcolor', 'hilitecolor', lastBackColor);\n      registerTextColorMenuItem(editor, 'forecolor', 'forecolor', 'Text color', lastForeColor);\n      registerTextColorMenuItem(editor, 'backcolor', 'hilitecolor', 'Background color', lastBackColor);\n    };\n\n    const createPartialChoiceMenu = (value, items, onItemValueHandler, columns, presets, itemResponse, select, providersBackstage) => {\n      const hasIcons = menuHasIcons(items);\n      const presetItemTypes = presets !== 'color' ? 'normal' : 'color';\n      const alloyItems = createChoiceItems(items, onItemValueHandler, columns, presetItemTypes, itemResponse, select, providersBackstage);\n      const menuLayout = { menuType: presets };\n      return createPartialMenuWithAlloyItems(value, hasIcons, alloyItems, columns, menuLayout);\n    };\n    const createChoiceItems = (items, onItemValueHandler, columns, itemPresets, itemResponse, select, providersBackstage) => cat(map$2(items, item => {\n      if (item.type === 'choiceitem') {\n        return createChoiceMenuItem(item).fold(handleError, d => Optional.some(renderChoiceItem(d, columns === 1, itemPresets, onItemValueHandler, select(d.value), itemResponse, providersBackstage, menuHasIcons(items))));\n      } else {\n        return Optional.none();\n      }\n    }));\n\n    const deriveMenuMovement = (columns, presets) => {\n      const menuMarkers = markers(presets);\n      if (columns === 1) {\n        return {\n          mode: 'menu',\n          moveOnTab: true\n        };\n      } else if (columns === 'auto') {\n        return {\n          mode: 'grid',\n          selector: '.' + menuMarkers.item,\n          initSize: {\n            numColumns: 1,\n            numRows: 1\n          }\n        };\n      } else {\n        const rowClass = presets === 'color' ? 'tox-swatches__row' : 'tox-collection__group';\n        return {\n          mode: 'matrix',\n          rowSelector: '.' + rowClass,\n          previousSelector: menu => {\n            return presets === 'color' ? descendant(menu.element, '[aria-checked=true]') : Optional.none();\n          }\n        };\n      }\n    };\n    const deriveCollectionMovement = (columns, presets) => {\n      if (columns === 1) {\n        return {\n          mode: 'menu',\n          moveOnTab: false,\n          selector: '.tox-collection__item'\n        };\n      } else if (columns === 'auto') {\n        return {\n          mode: 'flatgrid',\n          selector: '.' + 'tox-collection__item',\n          initSize: {\n            numColumns: 1,\n            numRows: 1\n          }\n        };\n      } else {\n        return {\n          mode: 'matrix',\n          selectors: {\n            row: presets === 'color' ? '.tox-swatches__row' : '.tox-collection__group',\n            cell: presets === 'color' ? `.${ colorClass }` : `.${ selectableClass }`\n          }\n        };\n      }\n    };\n\n    const renderColorSwatchItem = (spec, backstage) => {\n      const items = getColorItems(spec, backstage);\n      const columns = backstage.colorinput.getColorCols(spec.initData.storageKey);\n      const presets = 'color';\n      const menuSpec = createPartialChoiceMenu(generate$6('menu-value'), items, value => {\n        spec.onAction({ value });\n      }, columns, presets, ItemResponse$1.CLOSE_ON_EXECUTE, spec.select.getOr(never), backstage.shared.providers);\n      const widgetSpec = {\n        ...menuSpec,\n        markers: markers(presets),\n        movement: deriveMenuMovement(columns, presets)\n      };\n      return {\n        type: 'widget',\n        data: { value: generate$6('widget-id') },\n        dom: {\n          tag: 'div',\n          classes: ['tox-fancymenuitem']\n        },\n        autofocus: true,\n        components: [parts$f.widget(Menu.sketch(widgetSpec))]\n      };\n    };\n    const getColorItems = (spec, backstage) => {\n      const useCustomColors = spec.initData.allowCustomColors && backstage.colorinput.hasCustomColors();\n      return spec.initData.colors.fold(() => getColors$1(backstage.colorinput.getColors(spec.initData.storageKey), spec.initData.storageKey, useCustomColors), colors => colors.concat(getAdditionalColors(useCustomColors)));\n    };\n\n    const cellOverEvent = generate$6('cell-over');\n    const cellExecuteEvent = generate$6('cell-execute');\n    const makeAnnouncementText = backstage => (row, col) => backstage.shared.providers.translate([\n      '{0} columns, {1} rows',\n      col,\n      row\n    ]);\n    const makeCell = (row, col, label) => {\n      const emitCellOver = c => emitWith(c, cellOverEvent, {\n        row,\n        col\n      });\n      const emitExecute = c => emitWith(c, cellExecuteEvent, {\n        row,\n        col\n      });\n      const onClick = (c, se) => {\n        se.stop();\n        emitExecute(c);\n      };\n      return build$1({\n        dom: {\n          tag: 'div',\n          attributes: {\n            role: 'button',\n            ['aria-label']: label\n          }\n        },\n        behaviours: derive$1([\n          config('insert-table-picker-cell', [\n            run$1(mouseover(), Focusing.focus),\n            run$1(execute$5(), emitExecute),\n            run$1(click(), onClick),\n            run$1(tap(), onClick)\n          ]),\n          Toggling.config({\n            toggleClass: 'tox-insert-table-picker__selected',\n            toggleOnExecute: false\n          }),\n          Focusing.config({ onFocus: emitCellOver })\n        ])\n      });\n    };\n    const makeCells = (getCellLabel, numRows, numCols) => {\n      const cells = [];\n      for (let i = 0; i < numRows; i++) {\n        const row = [];\n        for (let j = 0; j < numCols; j++) {\n          const label = getCellLabel(i + 1, j + 1);\n          row.push(makeCell(i, j, label));\n        }\n        cells.push(row);\n      }\n      return cells;\n    };\n    const selectCells = (cells, selectedRow, selectedColumn, numRows, numColumns) => {\n      for (let i = 0; i < numRows; i++) {\n        for (let j = 0; j < numColumns; j++) {\n          Toggling.set(cells[i][j], i <= selectedRow && j <= selectedColumn);\n        }\n      }\n    };\n    const makeComponents = cells => bind$3(cells, cellRow => map$2(cellRow, premade));\n    const makeLabelText = (row, col) => text$2(`${ col }x${ row }`);\n    const renderInsertTableMenuItem = (spec, backstage) => {\n      const numRows = 10;\n      const numColumns = 10;\n      const getCellLabel = makeAnnouncementText(backstage);\n      const cells = makeCells(getCellLabel, numRows, numColumns);\n      const emptyLabelText = makeLabelText(0, 0);\n      const memLabel = record({\n        dom: {\n          tag: 'span',\n          classes: ['tox-insert-table-picker__label']\n        },\n        components: [emptyLabelText],\n        behaviours: derive$1([Replacing.config({})])\n      });\n      return {\n        type: 'widget',\n        data: { value: generate$6('widget-id') },\n        dom: {\n          tag: 'div',\n          classes: ['tox-fancymenuitem']\n        },\n        autofocus: true,\n        components: [parts$f.widget({\n            dom: {\n              tag: 'div',\n              classes: ['tox-insert-table-picker']\n            },\n            components: makeComponents(cells).concat(memLabel.asSpec()),\n            behaviours: derive$1([\n              config('insert-table-picker', [\n                runOnAttached(c => {\n                  Replacing.set(memLabel.get(c), [emptyLabelText]);\n                }),\n                runWithTarget(cellOverEvent, (c, t, e) => {\n                  const {row, col} = e.event;\n                  selectCells(cells, row, col, numRows, numColumns);\n                  Replacing.set(memLabel.get(c), [makeLabelText(row + 1, col + 1)]);\n                }),\n                runWithTarget(cellExecuteEvent, (c, _, e) => {\n                  const {row, col} = e.event;\n                  spec.onAction({\n                    numRows: row + 1,\n                    numColumns: col + 1\n                  });\n                  emit(c, sandboxClose());\n                })\n              ]),\n              Keying.config({\n                initSize: {\n                  numRows,\n                  numColumns\n                },\n                mode: 'flatgrid',\n                selector: '[role=\"button\"]'\n              })\n            ])\n          })]\n      };\n    };\n\n    const fancyMenuItems = {\n      inserttable: renderInsertTableMenuItem,\n      colorswatch: renderColorSwatchItem\n    };\n    const renderFancyMenuItem = (spec, backstage) => get$g(fancyMenuItems, spec.fancytype).map(render => render(spec, backstage));\n\n    const renderNestedItem = (spec, itemResponse, providersBackstage, renderIcons = true, downwardsCaret = false) => {\n      const caret = downwardsCaret ? renderDownwardsCaret(providersBackstage.icons) : renderSubmenuCaret(providersBackstage.icons);\n      const getApi = component => ({\n        isEnabled: () => !Disabling.isDisabled(component),\n        setEnabled: state => Disabling.set(component, !state),\n        setIconFill: (id, value) => {\n          descendant(component.element, `svg path[class=\"${ id }\"], rect[class=\"${ id }\"]`).each(underlinePath => {\n            set$9(underlinePath, 'fill', value);\n          });\n        },\n        setTooltip: tooltip => {\n          const translatedTooltip = providersBackstage.translate(tooltip);\n          setAll$1(component.element, {\n            'aria-label': translatedTooltip,\n            'title': translatedTooltip\n          });\n        }\n      });\n      const structure = renderItemStructure({\n        presets: 'normal',\n        iconContent: spec.icon,\n        textContent: spec.text,\n        htmlContent: Optional.none(),\n        ariaLabel: spec.text,\n        caret: Optional.some(caret),\n        checkMark: Optional.none(),\n        shortcutContent: spec.shortcut\n      }, providersBackstage, renderIcons);\n      return renderCommonItem({\n        data: buildData(spec),\n        getApi,\n        enabled: spec.enabled,\n        onAction: noop,\n        onSetup: spec.onSetup,\n        triggersSubmenu: true,\n        itemBehaviours: []\n      }, structure, itemResponse, providersBackstage);\n    };\n\n    const renderNormalItem = (spec, itemResponse, providersBackstage, renderIcons = true) => {\n      const getApi = component => ({\n        isEnabled: () => !Disabling.isDisabled(component),\n        setEnabled: state => Disabling.set(component, !state)\n      });\n      const structure = renderItemStructure({\n        presets: 'normal',\n        iconContent: spec.icon,\n        textContent: spec.text,\n        htmlContent: Optional.none(),\n        ariaLabel: spec.text,\n        caret: Optional.none(),\n        checkMark: Optional.none(),\n        shortcutContent: spec.shortcut\n      }, providersBackstage, renderIcons);\n      return renderCommonItem({\n        data: buildData(spec),\n        getApi,\n        enabled: spec.enabled,\n        onAction: spec.onAction,\n        onSetup: spec.onSetup,\n        triggersSubmenu: false,\n        itemBehaviours: []\n      }, structure, itemResponse, providersBackstage);\n    };\n\n    const renderSeparatorItem = spec => ({\n      type: 'separator',\n      dom: {\n        tag: 'div',\n        classes: [\n          selectableClass,\n          groupHeadingClass\n        ]\n      },\n      components: spec.text.map(text$2).toArray()\n    });\n\n    const renderToggleMenuItem = (spec, itemResponse, providersBackstage, renderIcons = true) => {\n      const getApi = component => ({\n        setActive: state => {\n          Toggling.set(component, state);\n        },\n        isActive: () => Toggling.isOn(component),\n        isEnabled: () => !Disabling.isDisabled(component),\n        setEnabled: state => Disabling.set(component, !state)\n      });\n      const structure = renderItemStructure({\n        iconContent: spec.icon,\n        textContent: spec.text,\n        htmlContent: Optional.none(),\n        ariaLabel: spec.text,\n        checkMark: Optional.some(renderCheckmark(providersBackstage.icons)),\n        caret: Optional.none(),\n        shortcutContent: spec.shortcut,\n        presets: 'normal',\n        meta: spec.meta\n      }, providersBackstage, renderIcons);\n      return deepMerge(renderCommonItem({\n        data: buildData(spec),\n        enabled: spec.enabled,\n        getApi,\n        onAction: spec.onAction,\n        onSetup: spec.onSetup,\n        triggersSubmenu: false,\n        itemBehaviours: []\n      }, structure, itemResponse, providersBackstage), {\n        toggling: {\n          toggleClass: tickedClass,\n          toggleOnExecute: false,\n          selected: spec.active\n        }\n      });\n    };\n\n    const autocomplete = renderAutocompleteItem;\n    const separator$3 = renderSeparatorItem;\n    const normal = renderNormalItem;\n    const nested = renderNestedItem;\n    const toggle$1 = renderToggleMenuItem;\n    const fancy = renderFancyMenuItem;\n    const card = renderCardMenuItem;\n\n    const getCoupled = (component, coupleConfig, coupleState, name) => coupleState.getOrCreate(component, coupleConfig, name);\n    const getExistingCoupled = (component, coupleConfig, coupleState, name) => coupleState.getExisting(component, coupleConfig, name);\n\n    var CouplingApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        getCoupled: getCoupled,\n        getExistingCoupled: getExistingCoupled\n    });\n\n    var CouplingSchema = [requiredOf('others', setOf(Result.value, anyValue()))];\n\n    const init$a = () => {\n      const coupled = {};\n      const lookupCoupled = (coupleConfig, coupledName) => {\n        const available = keys(coupleConfig.others);\n        if (available.length === 0) {\n          throw new Error('Cannot find any known coupled components');\n        } else {\n          return get$g(coupled, coupledName);\n        }\n      };\n      const getOrCreate = (component, coupleConfig, name) => {\n        return lookupCoupled(coupleConfig, name).getOrThunk(() => {\n          const builder = get$g(coupleConfig.others, name).getOrDie('No information found for coupled component: ' + name);\n          const spec = builder(component);\n          const built = component.getSystem().build(spec);\n          coupled[name] = built;\n          return built;\n        });\n      };\n      const getExisting = (component, coupleConfig, name) => {\n        return lookupCoupled(coupleConfig, name).orThunk(() => {\n          get$g(coupleConfig.others, name).getOrDie('No information found for coupled component: ' + name);\n          return Optional.none();\n        });\n      };\n      const readState = constant$1({});\n      return nu$8({\n        readState,\n        getExisting,\n        getOrCreate\n      });\n    };\n\n    var CouplingState = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        init: init$a\n    });\n\n    const Coupling = create$4({\n      fields: CouplingSchema,\n      name: 'coupling',\n      apis: CouplingApis,\n      state: CouplingState\n    });\n\n    const nu$3 = baseFn => {\n      let data = Optional.none();\n      let callbacks = [];\n      const map = f => nu$3(nCallback => {\n        get(data => {\n          nCallback(f(data));\n        });\n      });\n      const get = nCallback => {\n        if (isReady()) {\n          call(nCallback);\n        } else {\n          callbacks.push(nCallback);\n        }\n      };\n      const set = x => {\n        if (!isReady()) {\n          data = Optional.some(x);\n          run(callbacks);\n          callbacks = [];\n        }\n      };\n      const isReady = () => data.isSome();\n      const run = cbs => {\n        each$1(cbs, call);\n      };\n      const call = cb => {\n        data.each(x => {\n          setTimeout(() => {\n            cb(x);\n          }, 0);\n        });\n      };\n      baseFn(set);\n      return {\n        get,\n        map,\n        isReady\n      };\n    };\n    const pure$1 = a => nu$3(callback => {\n      callback(a);\n    });\n    const LazyValue = {\n      nu: nu$3,\n      pure: pure$1\n    };\n\n    const errorReporter = err => {\n      setTimeout(() => {\n        throw err;\n      }, 0);\n    };\n    const make$5 = run => {\n      const get = callback => {\n        run().then(callback, errorReporter);\n      };\n      const map = fab => {\n        return make$5(() => run().then(fab));\n      };\n      const bind = aFutureB => {\n        return make$5(() => run().then(v => aFutureB(v).toPromise()));\n      };\n      const anonBind = futureB => {\n        return make$5(() => run().then(() => futureB.toPromise()));\n      };\n      const toLazy = () => {\n        return LazyValue.nu(get);\n      };\n      const toCached = () => {\n        let cache = null;\n        return make$5(() => {\n          if (cache === null) {\n            cache = run();\n          }\n          return cache;\n        });\n      };\n      const toPromise = run;\n      return {\n        map,\n        bind,\n        anonBind,\n        toLazy,\n        toCached,\n        toPromise,\n        get\n      };\n    };\n    const nu$2 = baseFn => {\n      return make$5(() => new Promise(baseFn));\n    };\n    const pure = a => {\n      return make$5(() => Promise.resolve(a));\n    };\n    const Future = {\n      nu: nu$2,\n      pure\n    };\n\n    const suffix = constant$1('sink');\n    const partType$1 = constant$1(optional({\n      name: suffix(),\n      overrides: constant$1({\n        dom: { tag: 'div' },\n        behaviours: derive$1([Positioning.config({ useFixed: always })]),\n        events: derive$2([\n          cutter(keydown()),\n          cutter(mousedown()),\n          cutter(click())\n        ])\n      })\n    }));\n\n    const getAnchor = (detail, component) => {\n      const hotspot = detail.getHotspot(component).getOr(component);\n      const type = 'hotspot';\n      const overrides = detail.getAnchorOverrides();\n      return detail.layouts.fold(() => ({\n        type,\n        hotspot,\n        overrides\n      }), layouts => ({\n        type,\n        hotspot,\n        overrides,\n        layouts\n      }));\n    };\n    const fetch = (detail, mapFetch, component) => {\n      const fetcher = detail.fetch;\n      return fetcher(component).map(mapFetch);\n    };\n    const openF = (detail, mapFetch, anchor, component, sandbox, externals, highlightOnOpen) => {\n      const futureData = fetch(detail, mapFetch, component);\n      const getLazySink = getSink(component, detail);\n      return futureData.map(tdata => tdata.bind(data => Optional.from(tieredMenu.sketch({\n        ...externals.menu(),\n        uid: generate$5(''),\n        data,\n        highlightOnOpen,\n        onOpenMenu: (tmenu, menu) => {\n          const sink = getLazySink().getOrDie();\n          Positioning.position(sink, menu, { anchor });\n          Sandboxing.decloak(sandbox);\n        },\n        onOpenSubmenu: (tmenu, item, submenu) => {\n          const sink = getLazySink().getOrDie();\n          Positioning.position(sink, submenu, {\n            anchor: {\n              type: 'submenu',\n              item\n            }\n          });\n          Sandboxing.decloak(sandbox);\n        },\n        onRepositionMenu: (tmenu, primaryMenu, submenuTriggers) => {\n          const sink = getLazySink().getOrDie();\n          Positioning.position(sink, primaryMenu, { anchor });\n          each$1(submenuTriggers, st => {\n            Positioning.position(sink, st.triggeredMenu, {\n              anchor: {\n                type: 'submenu',\n                item: st.triggeringItem\n              }\n            });\n          });\n        },\n        onEscape: () => {\n          Focusing.focus(component);\n          Sandboxing.close(sandbox);\n          return Optional.some(true);\n        }\n      }))));\n    };\n    const open = (detail, mapFetch, hotspot, sandbox, externals, onOpenSync, highlightOnOpen) => {\n      const anchor = getAnchor(detail, hotspot);\n      const processed = openF(detail, mapFetch, anchor, hotspot, sandbox, externals, highlightOnOpen);\n      return processed.map(tdata => {\n        tdata.fold(() => {\n          if (Sandboxing.isOpen(sandbox)) {\n            Sandboxing.close(sandbox);\n          }\n        }, data => {\n          Sandboxing.cloak(sandbox);\n          Sandboxing.open(sandbox, data);\n          onOpenSync(sandbox);\n        });\n        return sandbox;\n      });\n    };\n    const close = (detail, mapFetch, component, sandbox, _externals, _onOpenSync, _highlightOnOpen) => {\n      Sandboxing.close(sandbox);\n      return Future.pure(sandbox);\n    };\n    const togglePopup = (detail, mapFetch, hotspot, externals, onOpenSync, highlightOnOpen) => {\n      const sandbox = Coupling.getCoupled(hotspot, 'sandbox');\n      const showing = Sandboxing.isOpen(sandbox);\n      const action = showing ? close : open;\n      return action(detail, mapFetch, hotspot, sandbox, externals, onOpenSync, highlightOnOpen);\n    };\n    const matchWidth = (hotspot, container, useMinWidth) => {\n      const menu = Composing.getCurrent(container).getOr(container);\n      const buttonWidth = get$c(hotspot.element);\n      if (useMinWidth) {\n        set$8(menu.element, 'min-width', buttonWidth + 'px');\n      } else {\n        set$7(menu.element, buttonWidth);\n      }\n    };\n    const getSink = (anyInSystem, sinkDetail) => anyInSystem.getSystem().getByUid(sinkDetail.uid + '-' + suffix()).map(internalSink => () => Result.value(internalSink)).getOrThunk(() => sinkDetail.lazySink.fold(() => () => Result.error(new Error('No internal sink is specified, nor could an external sink be found')), lazySinkFn => () => lazySinkFn(anyInSystem)));\n    const doRepositionMenus = sandbox => {\n      Sandboxing.getState(sandbox).each(tmenu => {\n        tieredMenu.repositionMenus(tmenu);\n      });\n    };\n    const makeSandbox$1 = (detail, hotspot, extras) => {\n      const ariaControls = manager();\n      const onOpen = (component, menu) => {\n        const anchor = getAnchor(detail, hotspot);\n        ariaControls.link(hotspot.element);\n        if (detail.matchWidth) {\n          matchWidth(anchor.hotspot, menu, detail.useMinWidth);\n        }\n        detail.onOpen(anchor, component, menu);\n        if (extras !== undefined && extras.onOpen !== undefined) {\n          extras.onOpen(component, menu);\n        }\n      };\n      const onClose = (component, menu) => {\n        ariaControls.unlink(hotspot.element);\n        if (extras !== undefined && extras.onClose !== undefined) {\n          extras.onClose(component, menu);\n        }\n      };\n      const lazySink = getSink(hotspot, detail);\n      return {\n        dom: {\n          tag: 'div',\n          classes: detail.sandboxClasses,\n          attributes: {\n            id: ariaControls.id,\n            role: 'listbox'\n          }\n        },\n        behaviours: SketchBehaviours.augment(detail.sandboxBehaviours, [\n          Representing.config({\n            store: {\n              mode: 'memory',\n              initialValue: hotspot\n            }\n          }),\n          Sandboxing.config({\n            onOpen,\n            onClose,\n            isPartOf: (container, data, queryElem) => {\n              return isPartOf$1(data, queryElem) || isPartOf$1(hotspot, queryElem);\n            },\n            getAttachPoint: () => {\n              return lazySink().getOrDie();\n            }\n          }),\n          Composing.config({\n            find: sandbox => {\n              return Sandboxing.getState(sandbox).bind(menu => Composing.getCurrent(menu));\n            }\n          }),\n          Receiving.config({\n            channels: {\n              ...receivingChannel$1({ isExtraPart: never }),\n              ...receivingChannel({ doReposition: doRepositionMenus })\n            }\n          })\n        ])\n      };\n    };\n    const repositionMenus = comp => {\n      const sandbox = Coupling.getCoupled(comp, 'sandbox');\n      doRepositionMenus(sandbox);\n    };\n\n    const sandboxFields = () => [\n      defaulted('sandboxClasses', []),\n      SketchBehaviours.field('sandboxBehaviours', [\n        Composing,\n        Receiving,\n        Sandboxing,\n        Representing\n      ])\n    ];\n\n    const schema$k = constant$1([\n      required$1('dom'),\n      required$1('fetch'),\n      onHandler('onOpen'),\n      onKeyboardHandler('onExecute'),\n      defaulted('getHotspot', Optional.some),\n      defaulted('getAnchorOverrides', constant$1({})),\n      schema$y(),\n      field('dropdownBehaviours', [\n        Toggling,\n        Coupling,\n        Keying,\n        Focusing\n      ]),\n      required$1('toggleClass'),\n      defaulted('eventOrder', {}),\n      option$3('lazySink'),\n      defaulted('matchWidth', false),\n      defaulted('useMinWidth', false),\n      option$3('role')\n    ].concat(sandboxFields()));\n    const parts$e = constant$1([\n      external({\n        schema: [\n          tieredMenuMarkers(),\n          defaulted('fakeFocus', false)\n        ],\n        name: 'menu',\n        defaults: detail => {\n          return { onExecute: detail.onExecute };\n        }\n      }),\n      partType$1()\n    ]);\n\n    const factory$k = (detail, components, _spec, externals) => {\n      const lookupAttr = attr => get$g(detail.dom, 'attributes').bind(attrs => get$g(attrs, attr));\n      const switchToMenu = sandbox => {\n        Sandboxing.getState(sandbox).each(tmenu => {\n          tieredMenu.highlightPrimary(tmenu);\n        });\n      };\n      const togglePopup$1 = (dropdownComp, onOpenSync, highlightOnOpen) => {\n        return togglePopup(detail, identity, dropdownComp, externals, onOpenSync, highlightOnOpen);\n      };\n      const action = component => {\n        const onOpenSync = switchToMenu;\n        togglePopup$1(component, onOpenSync, HighlightOnOpen.HighlightMenuAndItem).get(noop);\n      };\n      const apis = {\n        expand: comp => {\n          if (!Toggling.isOn(comp)) {\n            togglePopup$1(comp, noop, HighlightOnOpen.HighlightNone).get(noop);\n          }\n        },\n        open: comp => {\n          if (!Toggling.isOn(comp)) {\n            togglePopup$1(comp, noop, HighlightOnOpen.HighlightMenuAndItem).get(noop);\n          }\n        },\n        refetch: comp => {\n          const optSandbox = Coupling.getExistingCoupled(comp, 'sandbox');\n          return optSandbox.fold(() => {\n            return togglePopup$1(comp, noop, HighlightOnOpen.HighlightMenuAndItem).map(noop);\n          }, sandboxComp => {\n            return open(detail, identity, comp, sandboxComp, externals, noop, HighlightOnOpen.HighlightMenuAndItem).map(noop);\n          });\n        },\n        isOpen: Toggling.isOn,\n        close: comp => {\n          if (Toggling.isOn(comp)) {\n            togglePopup$1(comp, noop, HighlightOnOpen.HighlightMenuAndItem).get(noop);\n          }\n        },\n        repositionMenus: comp => {\n          if (Toggling.isOn(comp)) {\n            repositionMenus(comp);\n          }\n        }\n      };\n      const triggerExecute = (comp, _se) => {\n        emitExecute(comp);\n        return Optional.some(true);\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components,\n        behaviours: augment(detail.dropdownBehaviours, [\n          Toggling.config({\n            toggleClass: detail.toggleClass,\n            aria: { mode: 'expanded' }\n          }),\n          Coupling.config({\n            others: {\n              sandbox: hotspot => {\n                return makeSandbox$1(detail, hotspot, {\n                  onOpen: () => Toggling.on(hotspot),\n                  onClose: () => Toggling.off(hotspot)\n                });\n              }\n            }\n          }),\n          Keying.config({\n            mode: 'special',\n            onSpace: triggerExecute,\n            onEnter: triggerExecute,\n            onDown: (comp, _se) => {\n              if (Dropdown.isOpen(comp)) {\n                const sandbox = Coupling.getCoupled(comp, 'sandbox');\n                switchToMenu(sandbox);\n              } else {\n                Dropdown.open(comp);\n              }\n              return Optional.some(true);\n            },\n            onEscape: (comp, _se) => {\n              if (Dropdown.isOpen(comp)) {\n                Dropdown.close(comp);\n                return Optional.some(true);\n              } else {\n                return Optional.none();\n              }\n            }\n          }),\n          Focusing.config({})\n        ]),\n        events: events$a(Optional.some(action)),\n        eventOrder: {\n          ...detail.eventOrder,\n          [execute$5()]: [\n            'disabling',\n            'toggling',\n            'alloy.base.behaviour'\n          ]\n        },\n        apis,\n        domModification: {\n          attributes: {\n            'aria-haspopup': 'true',\n            ...detail.role.fold(() => ({}), role => ({ role })),\n            ...detail.dom.tag === 'button' ? { type: lookupAttr('type').getOr('button') } : {}\n          }\n        }\n      };\n    };\n    const Dropdown = composite({\n      name: 'Dropdown',\n      configFields: schema$k(),\n      partFields: parts$e(),\n      factory: factory$k,\n      apis: {\n        open: (apis, comp) => apis.open(comp),\n        refetch: (apis, comp) => apis.refetch(comp),\n        expand: (apis, comp) => apis.expand(comp),\n        close: (apis, comp) => apis.close(comp),\n        isOpen: (apis, comp) => apis.isOpen(comp),\n        repositionMenus: (apis, comp) => apis.repositionMenus(comp)\n      }\n    });\n\n    const identifyMenuLayout = searchMode => {\n      switch (searchMode.searchMode) {\n      case 'no-search': {\n          return { menuType: 'normal' };\n        }\n      default: {\n          return {\n            menuType: 'searchable',\n            searchMode\n          };\n        }\n      }\n    };\n    const handleRefetchTrigger = originalSandboxComp => {\n      const dropdown = Representing.getValue(originalSandboxComp);\n      const optSearcherState = findWithinSandbox(originalSandboxComp).map(saveState);\n      Dropdown.refetch(dropdown).get(() => {\n        const newSandboxComp = Coupling.getCoupled(dropdown, 'sandbox');\n        optSearcherState.each(searcherState => findWithinSandbox(newSandboxComp).each(inputComp => restoreState(inputComp, searcherState)));\n      });\n    };\n    const handleRedirectToMenuItem = (sandboxComp, se) => {\n      getActiveMenuItemFrom(sandboxComp).each(activeItem => {\n        retargetAndDispatchWith(sandboxComp, activeItem.element, se.event.eventType, se.event.interactionEvent);\n      });\n    };\n    const getActiveMenuItemFrom = sandboxComp => {\n      return Sandboxing.getState(sandboxComp).bind(Highlighting.getHighlighted).bind(Highlighting.getHighlighted);\n    };\n    const getSearchResults = activeMenuComp => {\n      return has(activeMenuComp.element, searchResultsClass) ? Optional.some(activeMenuComp.element) : descendant(activeMenuComp.element, '.' + searchResultsClass);\n    };\n    const updateAriaOnHighlight = (tmenuComp, menuComp, itemComp) => {\n      findWithinMenu(tmenuComp).each(inputComp => {\n        setActiveDescendant(inputComp, itemComp);\n        const optActiveResults = getSearchResults(menuComp);\n        optActiveResults.each(resultsElem => {\n          getOpt(resultsElem, 'id').each(controlledId => set$9(inputComp.element, 'aria-controls', controlledId));\n        });\n      });\n      set$9(itemComp.element, 'aria-selected', 'true');\n    };\n    const updateAriaOnDehighlight = (tmenuComp, menuComp, itemComp) => {\n      set$9(itemComp.element, 'aria-selected', 'false');\n    };\n    const focusSearchField = tmenuComp => {\n      findWithinMenu(tmenuComp).each(searcherComp => Focusing.focus(searcherComp));\n    };\n    const getSearchPattern = dropdownComp => {\n      const optSandboxComp = Coupling.getExistingCoupled(dropdownComp, 'sandbox');\n      return optSandboxComp.bind(findWithinSandbox).map(saveState).map(state => state.fetchPattern).getOr('');\n    };\n\n    var FocusMode;\n    (function (FocusMode) {\n      FocusMode[FocusMode['ContentFocus'] = 0] = 'ContentFocus';\n      FocusMode[FocusMode['UiFocus'] = 1] = 'UiFocus';\n    }(FocusMode || (FocusMode = {})));\n    const createMenuItemFromBridge = (item, itemResponse, backstage, menuHasIcons, isHorizontalMenu) => {\n      const providersBackstage = backstage.shared.providers;\n      const parseForHorizontalMenu = menuitem => !isHorizontalMenu ? menuitem : {\n        ...menuitem,\n        shortcut: Optional.none(),\n        icon: menuitem.text.isSome() ? Optional.none() : menuitem.icon\n      };\n      switch (item.type) {\n      case 'menuitem':\n        return createMenuItem(item).fold(handleError, d => Optional.some(normal(parseForHorizontalMenu(d), itemResponse, providersBackstage, menuHasIcons)));\n      case 'nestedmenuitem':\n        return createNestedMenuItem(item).fold(handleError, d => Optional.some(nested(parseForHorizontalMenu(d), itemResponse, providersBackstage, menuHasIcons, isHorizontalMenu)));\n      case 'togglemenuitem':\n        return createToggleMenuItem(item).fold(handleError, d => Optional.some(toggle$1(parseForHorizontalMenu(d), itemResponse, providersBackstage, menuHasIcons)));\n      case 'separator':\n        return createSeparatorMenuItem(item).fold(handleError, d => Optional.some(separator$3(d)));\n      case 'fancymenuitem':\n        return createFancyMenuItem(item).fold(handleError, d => fancy(d, backstage));\n      default: {\n          console.error('Unknown item in general menu', item);\n          return Optional.none();\n        }\n      }\n    };\n    const createAutocompleteItems = (items, matchText, onItemValueHandler, columns, itemResponse, sharedBackstage, highlightOn) => {\n      const renderText = columns === 1;\n      const renderIcons = !renderText || menuHasIcons(items);\n      return cat(map$2(items, item => {\n        switch (item.type) {\n        case 'separator':\n          return createSeparatorItem(item).fold(handleError, d => Optional.some(separator$3(d)));\n        case 'cardmenuitem':\n          return createCardMenuItem(item).fold(handleError, d => Optional.some(card({\n            ...d,\n            onAction: api => {\n              d.onAction(api);\n              onItemValueHandler(d.value, d.meta);\n            }\n          }, itemResponse, sharedBackstage, {\n            itemBehaviours: tooltipBehaviour(d.meta, sharedBackstage),\n            cardText: {\n              matchText,\n              highlightOn\n            }\n          })));\n        case 'autocompleteitem':\n        default:\n          return createAutocompleterItem(item).fold(handleError, d => Optional.some(autocomplete(d, matchText, renderText, 'normal', onItemValueHandler, itemResponse, sharedBackstage, renderIcons)));\n        }\n      }));\n    };\n    const createPartialMenu = (value, items, itemResponse, backstage, isHorizontalMenu, searchMode) => {\n      const hasIcons = menuHasIcons(items);\n      const alloyItems = cat(map$2(items, item => {\n        const itemHasIcon = i => isHorizontalMenu ? !has$2(i, 'text') : hasIcons;\n        const createItem = i => createMenuItemFromBridge(i, itemResponse, backstage, itemHasIcon(i), isHorizontalMenu);\n        if (item.type === 'nestedmenuitem' && item.getSubmenuItems().length <= 0) {\n          return createItem({\n            ...item,\n            enabled: false\n          });\n        } else {\n          return createItem(item);\n        }\n      }));\n      const menuLayout = identifyMenuLayout(searchMode);\n      const createPartial = isHorizontalMenu ? createHorizontalPartialMenuWithAlloyItems : createPartialMenuWithAlloyItems;\n      return createPartial(value, hasIcons, alloyItems, 1, menuLayout);\n    };\n    const createTieredDataFrom = partialMenu => tieredMenu.singleData(partialMenu.value, partialMenu);\n    const createInlineMenuFrom = (partialMenu, columns, focusMode, presets) => {\n      const movement = deriveMenuMovement(columns, presets);\n      const menuMarkers = markers(presets);\n      return {\n        data: createTieredDataFrom({\n          ...partialMenu,\n          movement,\n          menuBehaviours: SimpleBehaviours.unnamedEvents(columns !== 'auto' ? [] : [runOnAttached((comp, _se) => {\n              detectSize(comp, 4, menuMarkers.item).each(({numColumns, numRows}) => {\n                Keying.setGridSize(comp, numRows, numColumns);\n              });\n            })])\n        }),\n        menu: {\n          markers: markers(presets),\n          fakeFocus: focusMode === FocusMode.ContentFocus\n        }\n      };\n    };\n\n    const getAutocompleterRange = (dom, initRange) => {\n      return detect$1(SugarElement.fromDom(initRange.startContainer)).map(elm => {\n        const range = dom.createRng();\n        range.selectNode(elm.dom);\n        return range;\n      });\n    };\n    const register$b = (editor, sharedBackstage) => {\n      const autocompleterId = generate$6('autocompleter');\n      const processingAction = Cell(false);\n      const activeState = Cell(false);\n      const autocompleter = build$1(InlineView.sketch({\n        dom: {\n          tag: 'div',\n          classes: ['tox-autocompleter'],\n          attributes: { id: autocompleterId }\n        },\n        components: [],\n        fireDismissalEventInstead: {},\n        inlineBehaviours: derive$1([config('dismissAutocompleter', [\n            run$1(dismissRequested(), () => cancelIfNecessary()),\n            run$1(highlight$1(), (_, se) => {\n              getOpt(se.event.target, 'id').each(id => set$9(SugarElement.fromDom(editor.getBody()), 'aria-activedescendant', id));\n            })\n          ])]),\n        lazySink: sharedBackstage.getSink\n      }));\n      const isMenuOpen = () => InlineView.isOpen(autocompleter);\n      const isActive = activeState.get;\n      const hideIfNecessary = () => {\n        if (isMenuOpen()) {\n          InlineView.hide(autocompleter);\n          editor.dom.remove(autocompleterId, false);\n          const editorBody = SugarElement.fromDom(editor.getBody());\n          getOpt(editorBody, 'aria-owns').filter(ariaOwnsAttr => ariaOwnsAttr === autocompleterId).each(() => {\n            remove$7(editorBody, 'aria-owns');\n            remove$7(editorBody, 'aria-activedescendant');\n          });\n        }\n      };\n      const getMenu = () => InlineView.getContent(autocompleter).bind(tmenu => {\n        return get$h(tmenu.components(), 0);\n      });\n      const cancelIfNecessary = () => editor.execCommand('mceAutocompleterClose');\n      const getCombinedItems = matches => {\n        const columns = findMap(matches, m => Optional.from(m.columns)).getOr(1);\n        return bind$3(matches, match => {\n          const choices = match.items;\n          return createAutocompleteItems(choices, match.matchText, (itemValue, itemMeta) => {\n            const nr = editor.selection.getRng();\n            getAutocompleterRange(editor.dom, nr).each(range => {\n              const autocompleterApi = {\n                hide: () => cancelIfNecessary(),\n                reload: fetchOptions => {\n                  hideIfNecessary();\n                  editor.execCommand('mceAutocompleterReload', false, { fetchOptions });\n                }\n              };\n              processingAction.set(true);\n              match.onAction(autocompleterApi, range, itemValue, itemMeta);\n              processingAction.set(false);\n            });\n          }, columns, ItemResponse$1.BUBBLE_TO_SANDBOX, sharedBackstage, match.highlightOn);\n        });\n      };\n      const display = (lookupData, items) => {\n        findIn(SugarElement.fromDom(editor.getBody())).each(element => {\n          const columns = findMap(lookupData, ld => Optional.from(ld.columns)).getOr(1);\n          InlineView.showMenuAt(autocompleter, {\n            anchor: {\n              type: 'node',\n              root: SugarElement.fromDom(editor.getBody()),\n              node: Optional.from(element)\n            }\n          }, createInlineMenuFrom(createPartialMenuWithAlloyItems('autocompleter-value', true, items, columns, { menuType: 'normal' }), columns, FocusMode.ContentFocus, 'normal'));\n        });\n        getMenu().each(Highlighting.highlightFirst);\n      };\n      const updateDisplay = lookupData => {\n        const combinedItems = getCombinedItems(lookupData);\n        if (combinedItems.length > 0) {\n          display(lookupData, combinedItems);\n          set$9(SugarElement.fromDom(editor.getBody()), 'aria-owns', autocompleterId);\n          if (!editor.inline) {\n            cloneAutocompleterToEditorDoc();\n          }\n        } else {\n          hideIfNecessary();\n        }\n      };\n      const cloneAutocompleterToEditorDoc = () => {\n        if (editor.dom.get(autocompleterId)) {\n          editor.dom.remove(autocompleterId, false);\n        }\n        const docElm = editor.getDoc().documentElement;\n        const selection = editor.selection.getNode();\n        const newElm = deep(autocompleter.element);\n        setAll(newElm, {\n          border: '0',\n          clip: 'rect(0 0 0 0)',\n          height: '1px',\n          margin: '-1px',\n          overflow: 'hidden',\n          padding: '0',\n          position: 'absolute',\n          width: '1px',\n          top: `${ selection.offsetTop }px`,\n          left: `${ selection.offsetLeft }px`\n        });\n        editor.dom.add(docElm, newElm.dom);\n        descendant(newElm, '[role=\"menu\"]').each(child => {\n          remove$6(child, 'position');\n          remove$6(child, 'max-height');\n        });\n      };\n      editor.on('AutocompleterStart', ({lookupData}) => {\n        activeState.set(true);\n        processingAction.set(false);\n        updateDisplay(lookupData);\n      });\n      editor.on('AutocompleterUpdate', ({lookupData}) => updateDisplay(lookupData));\n      editor.on('AutocompleterEnd', () => {\n        hideIfNecessary();\n        activeState.set(false);\n        processingAction.set(false);\n      });\n      const autocompleterUiApi = {\n        cancelIfNecessary,\n        isMenuOpen,\n        isActive,\n        isProcessingAction: processingAction.get,\n        getMenu\n      };\n      AutocompleterEditorEvents.setup(autocompleterUiApi, editor);\n    };\n    const Autocompleter = { register: register$b };\n\n    const nonScrollingOverflows = [\n      'visible',\n      'hidden',\n      'clip'\n    ];\n    const isScrollingOverflowValue = value => trim$1(value).length > 0 && !contains$2(nonScrollingOverflows, value);\n    const isScroller = elem => {\n      if (isHTMLElement(elem)) {\n        const overflowX = get$e(elem, 'overflow-x');\n        const overflowY = get$e(elem, 'overflow-y');\n        return isScrollingOverflowValue(overflowX) || isScrollingOverflowValue(overflowY);\n      } else {\n        return false;\n      }\n    };\n    const detect = popupSinkElem => {\n      const ancestorsScrollers = ancestors(popupSinkElem, isScroller);\n      const scrollers = ancestorsScrollers.length === 0 ? getShadowRoot(popupSinkElem).map(getShadowHost).map(x => ancestors(x, isScroller)).getOr([]) : ancestorsScrollers;\n      return head(scrollers).map(element => ({\n        element,\n        others: scrollers.slice(1)\n      }));\n    };\n    const detectWhenSplitUiMode = (editor, popupSinkElem) => isSplitUiMode(editor) ? detect(popupSinkElem) : Optional.none();\n    const getBoundsFrom = sc => {\n      const scrollableBoxes = [\n        ...map$2(sc.others, box$1),\n        win()\n      ];\n      return constrainByMany(box$1(sc.element), scrollableBoxes);\n    };\n\n    const closest = (scope, selector, isRoot) => closest$1(scope, selector, isRoot).isSome();\n\n    const DelayedFunction = (fun, delay) => {\n      let ref = null;\n      const schedule = (...args) => {\n        ref = setTimeout(() => {\n          fun.apply(null, args);\n          ref = null;\n        }, delay);\n      };\n      const cancel = () => {\n        if (ref !== null) {\n          clearTimeout(ref);\n          ref = null;\n        }\n      };\n      return {\n        cancel,\n        schedule\n      };\n    };\n\n    const SIGNIFICANT_MOVE = 5;\n    const LONGPRESS_DELAY = 400;\n    const getTouch = event => {\n      const raw = event.raw;\n      if (raw.touches === undefined || raw.touches.length !== 1) {\n        return Optional.none();\n      }\n      return Optional.some(raw.touches[0]);\n    };\n    const isFarEnough = (touch, data) => {\n      const distX = Math.abs(touch.clientX - data.x);\n      const distY = Math.abs(touch.clientY - data.y);\n      return distX > SIGNIFICANT_MOVE || distY > SIGNIFICANT_MOVE;\n    };\n    const monitor = settings => {\n      const startData = value$2();\n      const longpressFired = Cell(false);\n      const longpress$1 = DelayedFunction(event => {\n        settings.triggerEvent(longpress(), event);\n        longpressFired.set(true);\n      }, LONGPRESS_DELAY);\n      const handleTouchstart = event => {\n        getTouch(event).each(touch => {\n          longpress$1.cancel();\n          const data = {\n            x: touch.clientX,\n            y: touch.clientY,\n            target: event.target\n          };\n          longpress$1.schedule(event);\n          longpressFired.set(false);\n          startData.set(data);\n        });\n        return Optional.none();\n      };\n      const handleTouchmove = event => {\n        longpress$1.cancel();\n        getTouch(event).each(touch => {\n          startData.on(data => {\n            if (isFarEnough(touch, data)) {\n              startData.clear();\n            }\n          });\n        });\n        return Optional.none();\n      };\n      const handleTouchend = event => {\n        longpress$1.cancel();\n        const isSame = data => eq(data.target, event.target);\n        return startData.get().filter(isSame).map(_data => {\n          if (longpressFired.get()) {\n            event.prevent();\n            return false;\n          } else {\n            return settings.triggerEvent(tap(), event);\n          }\n        });\n      };\n      const handlers = wrapAll([\n        {\n          key: touchstart(),\n          value: handleTouchstart\n        },\n        {\n          key: touchmove(),\n          value: handleTouchmove\n        },\n        {\n          key: touchend(),\n          value: handleTouchend\n        }\n      ]);\n      const fireIfReady = (event, type) => get$g(handlers, type).bind(handler => handler(event));\n      return { fireIfReady };\n    };\n\n    const isDangerous = event => {\n      const keyEv = event.raw;\n      return keyEv.which === BACKSPACE[0] && !contains$2([\n        'input',\n        'textarea'\n      ], name$3(event.target)) && !closest(event.target, '[contenteditable=\"true\"]');\n    };\n    const setup$d = (container, rawSettings) => {\n      const settings = {\n        stopBackspace: true,\n        ...rawSettings\n      };\n      const pointerEvents = [\n        'touchstart',\n        'touchmove',\n        'touchend',\n        'touchcancel',\n        'gesturestart',\n        'mousedown',\n        'mouseup',\n        'mouseover',\n        'mousemove',\n        'mouseout',\n        'click'\n      ];\n      const tapEvent = monitor(settings);\n      const simpleEvents = map$2(pointerEvents.concat([\n        'selectstart',\n        'input',\n        'contextmenu',\n        'change',\n        'transitionend',\n        'transitioncancel',\n        'drag',\n        'dragstart',\n        'dragend',\n        'dragenter',\n        'dragleave',\n        'dragover',\n        'drop',\n        'keyup'\n      ]), type => bind(container, type, event => {\n        tapEvent.fireIfReady(event, type).each(tapStopped => {\n          if (tapStopped) {\n            event.kill();\n          }\n        });\n        const stopped = settings.triggerEvent(type, event);\n        if (stopped) {\n          event.kill();\n        }\n      }));\n      const pasteTimeout = value$2();\n      const onPaste = bind(container, 'paste', event => {\n        tapEvent.fireIfReady(event, 'paste').each(tapStopped => {\n          if (tapStopped) {\n            event.kill();\n          }\n        });\n        const stopped = settings.triggerEvent('paste', event);\n        if (stopped) {\n          event.kill();\n        }\n        pasteTimeout.set(setTimeout(() => {\n          settings.triggerEvent(postPaste(), event);\n        }, 0));\n      });\n      const onKeydown = bind(container, 'keydown', event => {\n        const stopped = settings.triggerEvent('keydown', event);\n        if (stopped) {\n          event.kill();\n        } else if (settings.stopBackspace && isDangerous(event)) {\n          event.prevent();\n        }\n      });\n      const onFocusIn = bind(container, 'focusin', event => {\n        const stopped = settings.triggerEvent('focusin', event);\n        if (stopped) {\n          event.kill();\n        }\n      });\n      const focusoutTimeout = value$2();\n      const onFocusOut = bind(container, 'focusout', event => {\n        const stopped = settings.triggerEvent('focusout', event);\n        if (stopped) {\n          event.kill();\n        }\n        focusoutTimeout.set(setTimeout(() => {\n          settings.triggerEvent(postBlur(), event);\n        }, 0));\n      });\n      const unbind = () => {\n        each$1(simpleEvents, e => {\n          e.unbind();\n        });\n        onKeydown.unbind();\n        onFocusIn.unbind();\n        onFocusOut.unbind();\n        onPaste.unbind();\n        pasteTimeout.on(clearTimeout);\n        focusoutTimeout.on(clearTimeout);\n      };\n      return { unbind };\n    };\n\n    const derive = (rawEvent, rawTarget) => {\n      const source = get$g(rawEvent, 'target').getOr(rawTarget);\n      return Cell(source);\n    };\n\n    const fromSource = (event, source) => {\n      const stopper = Cell(false);\n      const cutter = Cell(false);\n      const stop = () => {\n        stopper.set(true);\n      };\n      const cut = () => {\n        cutter.set(true);\n      };\n      return {\n        stop,\n        cut,\n        isStopped: stopper.get,\n        isCut: cutter.get,\n        event,\n        setSource: source.set,\n        getSource: source.get\n      };\n    };\n    const fromExternal = event => {\n      const stopper = Cell(false);\n      const stop = () => {\n        stopper.set(true);\n      };\n      return {\n        stop,\n        cut: noop,\n        isStopped: stopper.get,\n        isCut: never,\n        event,\n        setSource: die('Cannot set source of a broadcasted event'),\n        getSource: die('Cannot get source of a broadcasted event')\n      };\n    };\n\n    const adt$1 = Adt.generate([\n      { stopped: [] },\n      { resume: ['element'] },\n      { complete: [] }\n    ]);\n    const doTriggerHandler = (lookup, eventType, rawEvent, target, source, logger) => {\n      const handler = lookup(eventType, target);\n      const simulatedEvent = fromSource(rawEvent, source);\n      return handler.fold(() => {\n        logger.logEventNoHandlers(eventType, target);\n        return adt$1.complete();\n      }, handlerInfo => {\n        const descHandler = handlerInfo.descHandler;\n        const eventHandler = getCurried(descHandler);\n        eventHandler(simulatedEvent);\n        if (simulatedEvent.isStopped()) {\n          logger.logEventStopped(eventType, handlerInfo.element, descHandler.purpose);\n          return adt$1.stopped();\n        } else if (simulatedEvent.isCut()) {\n          logger.logEventCut(eventType, handlerInfo.element, descHandler.purpose);\n          return adt$1.complete();\n        } else {\n          return parent(handlerInfo.element).fold(() => {\n            logger.logNoParent(eventType, handlerInfo.element, descHandler.purpose);\n            return adt$1.complete();\n          }, parent => {\n            logger.logEventResponse(eventType, handlerInfo.element, descHandler.purpose);\n            return adt$1.resume(parent);\n          });\n        }\n      });\n    };\n    const doTriggerOnUntilStopped = (lookup, eventType, rawEvent, rawTarget, source, logger) => doTriggerHandler(lookup, eventType, rawEvent, rawTarget, source, logger).fold(always, parent => doTriggerOnUntilStopped(lookup, eventType, rawEvent, parent, source, logger), never);\n    const triggerHandler = (lookup, eventType, rawEvent, target, logger) => {\n      const source = derive(rawEvent, target);\n      return doTriggerHandler(lookup, eventType, rawEvent, target, source, logger);\n    };\n    const broadcast = (listeners, rawEvent, _logger) => {\n      const simulatedEvent = fromExternal(rawEvent);\n      each$1(listeners, listener => {\n        const descHandler = listener.descHandler;\n        const handler = getCurried(descHandler);\n        handler(simulatedEvent);\n      });\n      return simulatedEvent.isStopped();\n    };\n    const triggerUntilStopped = (lookup, eventType, rawEvent, logger) => triggerOnUntilStopped(lookup, eventType, rawEvent, rawEvent.target, logger);\n    const triggerOnUntilStopped = (lookup, eventType, rawEvent, rawTarget, logger) => {\n      const source = derive(rawEvent, rawTarget);\n      return doTriggerOnUntilStopped(lookup, eventType, rawEvent, rawTarget, source, logger);\n    };\n\n    const eventHandler = (element, descHandler) => ({\n      element,\n      descHandler\n    });\n    const broadcastHandler = (id, handler) => ({\n      id,\n      descHandler: handler\n    });\n    const EventRegistry = () => {\n      const registry = {};\n      const registerId = (extraArgs, id, events) => {\n        each(events, (v, k) => {\n          const handlers = registry[k] !== undefined ? registry[k] : {};\n          handlers[id] = curryArgs(v, extraArgs);\n          registry[k] = handlers;\n        });\n      };\n      const findHandler = (handlers, elem) => read$1(elem).bind(id => get$g(handlers, id)).map(descHandler => eventHandler(elem, descHandler));\n      const filterByType = type => get$g(registry, type).map(handlers => mapToArray(handlers, (f, id) => broadcastHandler(id, f))).getOr([]);\n      const find = (isAboveRoot, type, target) => get$g(registry, type).bind(handlers => closest$4(target, elem => findHandler(handlers, elem), isAboveRoot));\n      const unregisterId = id => {\n        each(registry, (handlersById, _eventName) => {\n          if (has$2(handlersById, id)) {\n            delete handlersById[id];\n          }\n        });\n      };\n      return {\n        registerId,\n        unregisterId,\n        filterByType,\n        find\n      };\n    };\n\n    const Registry = () => {\n      const events = EventRegistry();\n      const components = {};\n      const readOrTag = component => {\n        const elem = component.element;\n        return read$1(elem).getOrThunk(() => write('uid-', component.element));\n      };\n      const failOnDuplicate = (component, tagId) => {\n        const conflict = components[tagId];\n        if (conflict === component) {\n          unregister(component);\n        } else {\n          throw new Error('The tagId \"' + tagId + '\" is already used by: ' + element(conflict.element) + '\\nCannot use it for: ' + element(component.element) + '\\n' + 'The conflicting element is' + (inBody(conflict.element) ? ' ' : ' not ') + 'already in the DOM');\n        }\n      };\n      const register = component => {\n        const tagId = readOrTag(component);\n        if (hasNonNullableKey(components, tagId)) {\n          failOnDuplicate(component, tagId);\n        }\n        const extraArgs = [component];\n        events.registerId(extraArgs, tagId, component.events);\n        components[tagId] = component;\n      };\n      const unregister = component => {\n        read$1(component.element).each(tagId => {\n          delete components[tagId];\n          events.unregisterId(tagId);\n        });\n      };\n      const filter = type => events.filterByType(type);\n      const find = (isAboveRoot, type, target) => events.find(isAboveRoot, type, target);\n      const getById = id => get$g(components, id);\n      return {\n        find,\n        filter,\n        register,\n        unregister,\n        getById\n      };\n    };\n\n    const factory$j = detail => {\n      const {attributes, ...domWithoutAttributes} = detail.dom;\n      return {\n        uid: detail.uid,\n        dom: {\n          tag: 'div',\n          attributes: {\n            role: 'presentation',\n            ...attributes\n          },\n          ...domWithoutAttributes\n        },\n        components: detail.components,\n        behaviours: get$3(detail.containerBehaviours),\n        events: detail.events,\n        domModification: detail.domModification,\n        eventOrder: detail.eventOrder\n      };\n    };\n    const Container = single({\n      name: 'Container',\n      factory: factory$j,\n      configFields: [\n        defaulted('components', []),\n        field('containerBehaviours', []),\n        defaulted('events', {}),\n        defaulted('domModification', {}),\n        defaulted('eventOrder', {})\n      ]\n    });\n\n    const takeover = root => {\n      const isAboveRoot = el => parent(root.element).fold(always, parent => eq(el, parent));\n      const registry = Registry();\n      const lookup = (eventName, target) => registry.find(isAboveRoot, eventName, target);\n      const domEvents = setup$d(root.element, {\n        triggerEvent: (eventName, event) => {\n          return monitorEvent(eventName, event.target, logger => triggerUntilStopped(lookup, eventName, event, logger));\n        }\n      });\n      const systemApi = {\n        debugInfo: constant$1('real'),\n        triggerEvent: (eventName, target, data) => {\n          monitorEvent(eventName, target, logger => triggerOnUntilStopped(lookup, eventName, data, target, logger));\n        },\n        triggerFocus: (target, originator) => {\n          read$1(target).fold(() => {\n            focus$3(target);\n          }, _alloyId => {\n            monitorEvent(focus$4(), target, logger => {\n              triggerHandler(lookup, focus$4(), {\n                originator,\n                kill: noop,\n                prevent: noop,\n                target\n              }, target, logger);\n              return false;\n            });\n          });\n        },\n        triggerEscape: (comp, simulatedEvent) => {\n          systemApi.triggerEvent('keydown', comp.element, simulatedEvent.event);\n        },\n        getByUid: uid => {\n          return getByUid(uid);\n        },\n        getByDom: elem => {\n          return getByDom(elem);\n        },\n        build: build$1,\n        buildOrPatch: buildOrPatch,\n        addToGui: c => {\n          add(c);\n        },\n        removeFromGui: c => {\n          remove(c);\n        },\n        addToWorld: c => {\n          addToWorld(c);\n        },\n        removeFromWorld: c => {\n          removeFromWorld(c);\n        },\n        broadcast: message => {\n          broadcast$1(message);\n        },\n        broadcastOn: (channels, message) => {\n          broadcastOn(channels, message);\n        },\n        broadcastEvent: (eventName, event) => {\n          broadcastEvent(eventName, event);\n        },\n        isConnected: always\n      };\n      const addToWorld = component => {\n        component.connect(systemApi);\n        if (!isText(component.element)) {\n          registry.register(component);\n          each$1(component.components(), addToWorld);\n          systemApi.triggerEvent(systemInit(), component.element, { target: component.element });\n        }\n      };\n      const removeFromWorld = component => {\n        if (!isText(component.element)) {\n          each$1(component.components(), removeFromWorld);\n          registry.unregister(component);\n        }\n        component.disconnect();\n      };\n      const add = component => {\n        attach(root, component);\n      };\n      const remove = component => {\n        detach(component);\n      };\n      const destroy = () => {\n        domEvents.unbind();\n        remove$5(root.element);\n      };\n      const broadcastData = data => {\n        const receivers = registry.filter(receive());\n        each$1(receivers, receiver => {\n          const descHandler = receiver.descHandler;\n          const handler = getCurried(descHandler);\n          handler(data);\n        });\n      };\n      const broadcast$1 = message => {\n        broadcastData({\n          universal: true,\n          data: message\n        });\n      };\n      const broadcastOn = (channels, message) => {\n        broadcastData({\n          universal: false,\n          channels,\n          data: message\n        });\n      };\n      const broadcastEvent = (eventName, event) => {\n        const listeners = registry.filter(eventName);\n        return broadcast(listeners, event);\n      };\n      const getByUid = uid => registry.getById(uid).fold(() => Result.error(new Error('Could not find component with uid: \"' + uid + '\" in system.')), Result.value);\n      const getByDom = elem => {\n        const uid = read$1(elem).getOr('not found');\n        return getByUid(uid);\n      };\n      addToWorld(root);\n      return {\n        root,\n        element: root.element,\n        destroy,\n        add,\n        remove,\n        getByUid,\n        getByDom,\n        addToWorld,\n        removeFromWorld,\n        broadcast: broadcast$1,\n        broadcastOn,\n        broadcastEvent\n      };\n    };\n\n    const renderBar = (spec, backstage) => ({\n      dom: {\n        tag: 'div',\n        classes: [\n          'tox-bar',\n          'tox-form__controls-h-stack'\n        ]\n      },\n      components: map$2(spec.items, backstage.interpreter)\n    });\n\n    const schema$j = constant$1([\n      defaulted('prefix', 'form-field'),\n      field('fieldBehaviours', [\n        Composing,\n        Representing\n      ])\n    ]);\n    const parts$d = constant$1([\n      optional({\n        schema: [required$1('dom')],\n        name: 'label'\n      }),\n      optional({\n        factory: {\n          sketch: spec => {\n            return {\n              uid: spec.uid,\n              dom: {\n                tag: 'span',\n                styles: { display: 'none' },\n                attributes: { 'aria-hidden': 'true' },\n                innerHtml: spec.text\n              }\n            };\n          }\n        },\n        schema: [required$1('text')],\n        name: 'aria-descriptor'\n      }),\n      required({\n        factory: {\n          sketch: spec => {\n            const excludeFactory = exclude(spec, ['factory']);\n            return spec.factory.sketch(excludeFactory);\n          }\n        },\n        schema: [required$1('factory')],\n        name: 'field'\n      })\n    ]);\n\n    const factory$i = (detail, components, _spec, _externals) => {\n      const behaviours = augment(detail.fieldBehaviours, [\n        Composing.config({\n          find: container => {\n            return getPart(container, detail, 'field');\n          }\n        }),\n        Representing.config({\n          store: {\n            mode: 'manual',\n            getValue: field => {\n              return Composing.getCurrent(field).bind(Representing.getValue);\n            },\n            setValue: (field, value) => {\n              Composing.getCurrent(field).each(current => {\n                Representing.setValue(current, value);\n              });\n            }\n          }\n        })\n      ]);\n      const events = derive$2([runOnAttached((component, _simulatedEvent) => {\n          const ps = getParts(component, detail, [\n            'label',\n            'field',\n            'aria-descriptor'\n          ]);\n          ps.field().each(field => {\n            const id = generate$6(detail.prefix);\n            ps.label().each(label => {\n              set$9(label.element, 'for', id);\n              set$9(field.element, 'id', id);\n            });\n            ps['aria-descriptor']().each(descriptor => {\n              const descriptorId = generate$6(detail.prefix);\n              set$9(descriptor.element, 'id', descriptorId);\n              set$9(field.element, 'aria-describedby', descriptorId);\n            });\n          });\n        })]);\n      const apis = {\n        getField: container => getPart(container, detail, 'field'),\n        getLabel: container => getPart(container, detail, 'label')\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components,\n        behaviours,\n        events,\n        apis\n      };\n    };\n    const FormField = composite({\n      name: 'FormField',\n      configFields: schema$j(),\n      partFields: parts$d(),\n      factory: factory$i,\n      apis: {\n        getField: (apis, comp) => apis.getField(comp),\n        getLabel: (apis, comp) => apis.getLabel(comp)\n      }\n    });\n\n    const exhibit$2 = (base, tabConfig) => nu$7({\n      attributes: wrapAll([{\n          key: tabConfig.tabAttr,\n          value: 'true'\n        }])\n    });\n\n    var ActiveTabstopping = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        exhibit: exhibit$2\n    });\n\n    var TabstopSchema = [defaulted('tabAttr', 'data-alloy-tabstop')];\n\n    const Tabstopping = create$4({\n      fields: TabstopSchema,\n      name: 'tabstopping',\n      active: ActiveTabstopping\n    });\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.html.Entities');\n\n    const renderFormFieldWith = (pLabel, pField, extraClasses, extraBehaviours) => {\n      const spec = renderFormFieldSpecWith(pLabel, pField, extraClasses, extraBehaviours);\n      return FormField.sketch(spec);\n    };\n    const renderFormField = (pLabel, pField) => renderFormFieldWith(pLabel, pField, [], []);\n    const renderFormFieldSpecWith = (pLabel, pField, extraClasses, extraBehaviours) => ({\n      dom: renderFormFieldDomWith(extraClasses),\n      components: pLabel.toArray().concat([pField]),\n      fieldBehaviours: derive$1(extraBehaviours)\n    });\n    const renderFormFieldDom = () => renderFormFieldDomWith([]);\n    const renderFormFieldDomWith = extraClasses => ({\n      tag: 'div',\n      classes: ['tox-form__group'].concat(extraClasses)\n    });\n    const renderLabel$3 = (label, providersBackstage) => FormField.parts.label({\n      dom: {\n        tag: 'label',\n        classes: ['tox-label']\n      },\n      components: [text$2(providersBackstage.translate(label))]\n    });\n\n    const formChangeEvent = generate$6('form-component-change');\n    const formCloseEvent = generate$6('form-close');\n    const formCancelEvent = generate$6('form-cancel');\n    const formActionEvent = generate$6('form-action');\n    const formSubmitEvent = generate$6('form-submit');\n    const formBlockEvent = generate$6('form-block');\n    const formUnblockEvent = generate$6('form-unblock');\n    const formTabChangeEvent = generate$6('form-tabchange');\n    const formResizeEvent = generate$6('form-resize');\n\n    const renderCollection = (spec, providersBackstage, initialData) => {\n      const pLabel = spec.label.map(label => renderLabel$3(label, providersBackstage));\n      const icons = providersBackstage.icons();\n      const getIcon = icon => {\n        var _a;\n        return (_a = icons[icon]) !== null && _a !== void 0 ? _a : icon;\n      };\n      const runOnItem = f => (comp, se) => {\n        closest$1(se.event.target, '[data-collection-item-value]').each(target => {\n          f(comp, se, target, get$f(target, 'data-collection-item-value'));\n        });\n      };\n      const setContents = (comp, items) => {\n        const htmlLines = map$2(items, item => {\n          const itemText = global$8.translate(item.text);\n          const textContent = spec.columns === 1 ? `<div class=\"tox-collection__item-label\">${ itemText }</div>` : '';\n          const iconContent = `<div class=\"tox-collection__item-icon\">${ getIcon(item.icon) }</div>`;\n          const mapItemName = {\n            '_': ' ',\n            ' - ': ' ',\n            '-': ' '\n          };\n          const ariaLabel = itemText.replace(/\\_| \\- |\\-/g, match => mapItemName[match]);\n          const disabledClass = providersBackstage.isDisabled() ? ' tox-collection__item--state-disabled' : '';\n          return `<div class=\"tox-collection__item${ disabledClass }\" tabindex=\"-1\" data-collection-item-value=\"${ global$3.encodeAllRaw(item.value) }\" title=\"${ ariaLabel }\" aria-label=\"${ ariaLabel }\">${ iconContent }${ textContent }</div>`;\n        });\n        const chunks = spec.columns !== 'auto' && spec.columns > 1 ? chunk$1(htmlLines, spec.columns) : [htmlLines];\n        const html = map$2(chunks, ch => `<div class=\"tox-collection__group\">${ ch.join('') }</div>`);\n        set$6(comp.element, html.join(''));\n      };\n      const onClick = runOnItem((comp, se, tgt, itemValue) => {\n        se.stop();\n        if (!providersBackstage.isDisabled()) {\n          emitWith(comp, formActionEvent, {\n            name: spec.name,\n            value: itemValue\n          });\n        }\n      });\n      const collectionEvents = [\n        run$1(mouseover(), runOnItem((comp, se, tgt) => {\n          focus$3(tgt);\n        })),\n        run$1(click(), onClick),\n        run$1(tap(), onClick),\n        run$1(focusin(), runOnItem((comp, se, tgt) => {\n          descendant(comp.element, '.' + activeClass).each(currentActive => {\n            remove$2(currentActive, activeClass);\n          });\n          add$2(tgt, activeClass);\n        })),\n        run$1(focusout(), runOnItem(comp => {\n          descendant(comp.element, '.' + activeClass).each(currentActive => {\n            remove$2(currentActive, activeClass);\n          });\n        })),\n        runOnExecute$1(runOnItem((comp, se, tgt, itemValue) => {\n          emitWith(comp, formActionEvent, {\n            name: spec.name,\n            value: itemValue\n          });\n        }))\n      ];\n      const iterCollectionItems = (comp, applyAttributes) => map$2(descendants(comp.element, '.tox-collection__item'), applyAttributes);\n      const pField = FormField.parts.field({\n        dom: {\n          tag: 'div',\n          classes: ['tox-collection'].concat(spec.columns !== 1 ? ['tox-collection--grid'] : ['tox-collection--list'])\n        },\n        components: [],\n        factory: { sketch: identity },\n        behaviours: derive$1([\n          Disabling.config({\n            disabled: providersBackstage.isDisabled,\n            onDisabled: comp => {\n              iterCollectionItems(comp, childElm => {\n                add$2(childElm, 'tox-collection__item--state-disabled');\n                set$9(childElm, 'aria-disabled', true);\n              });\n            },\n            onEnabled: comp => {\n              iterCollectionItems(comp, childElm => {\n                remove$2(childElm, 'tox-collection__item--state-disabled');\n                remove$7(childElm, 'aria-disabled');\n              });\n            }\n          }),\n          receivingConfig(),\n          Replacing.config({}),\n          Representing.config({\n            store: {\n              mode: 'memory',\n              initialValue: initialData.getOr([])\n            },\n            onSetValue: (comp, items) => {\n              setContents(comp, items);\n              if (spec.columns === 'auto') {\n                detectSize(comp, 5, 'tox-collection__item').each(({numRows, numColumns}) => {\n                  Keying.setGridSize(comp, numRows, numColumns);\n                });\n              }\n              emit(comp, formResizeEvent);\n            }\n          }),\n          Tabstopping.config({}),\n          Keying.config(deriveCollectionMovement(spec.columns, 'normal')),\n          config('collection-events', collectionEvents)\n        ]),\n        eventOrder: {\n          [execute$5()]: [\n            'disabling',\n            'alloy.base.behaviour',\n            'collection-events'\n          ]\n        }\n      });\n      const extraClasses = ['tox-form__group--collection'];\n      return renderFormFieldWith(pLabel, pField, extraClasses, []);\n    };\n\n    const ariaElements = [\n      'input',\n      'textarea'\n    ];\n    const isAriaElement = elem => {\n      const name = name$3(elem);\n      return contains$2(ariaElements, name);\n    };\n    const markValid = (component, invalidConfig) => {\n      const elem = invalidConfig.getRoot(component).getOr(component.element);\n      remove$2(elem, invalidConfig.invalidClass);\n      invalidConfig.notify.each(notifyInfo => {\n        if (isAriaElement(component.element)) {\n          set$9(component.element, 'aria-invalid', false);\n        }\n        notifyInfo.getContainer(component).each(container => {\n          set$6(container, notifyInfo.validHtml);\n        });\n        notifyInfo.onValid(component);\n      });\n    };\n    const markInvalid = (component, invalidConfig, invalidState, text) => {\n      const elem = invalidConfig.getRoot(component).getOr(component.element);\n      add$2(elem, invalidConfig.invalidClass);\n      invalidConfig.notify.each(notifyInfo => {\n        if (isAriaElement(component.element)) {\n          set$9(component.element, 'aria-invalid', true);\n        }\n        notifyInfo.getContainer(component).each(container => {\n          set$6(container, text);\n        });\n        notifyInfo.onInvalid(component, text);\n      });\n    };\n    const query = (component, invalidConfig, _invalidState) => invalidConfig.validator.fold(() => Future.pure(Result.value(true)), validatorInfo => validatorInfo.validate(component));\n    const run = (component, invalidConfig, invalidState) => {\n      invalidConfig.notify.each(notifyInfo => {\n        notifyInfo.onValidate(component);\n      });\n      return query(component, invalidConfig).map(valid => {\n        if (component.getSystem().isConnected()) {\n          return valid.fold(err => {\n            markInvalid(component, invalidConfig, invalidState, err);\n            return Result.error(err);\n          }, v => {\n            markValid(component, invalidConfig);\n            return Result.value(v);\n          });\n        } else {\n          return Result.error('No longer in system');\n        }\n      });\n    };\n    const isInvalid = (component, invalidConfig) => {\n      const elem = invalidConfig.getRoot(component).getOr(component.element);\n      return has(elem, invalidConfig.invalidClass);\n    };\n\n    var InvalidateApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        markValid: markValid,\n        markInvalid: markInvalid,\n        query: query,\n        run: run,\n        isInvalid: isInvalid\n    });\n\n    const events$8 = (invalidConfig, invalidState) => invalidConfig.validator.map(validatorInfo => derive$2([run$1(validatorInfo.onEvent, component => {\n        run(component, invalidConfig, invalidState).get(identity);\n      })].concat(validatorInfo.validateOnLoad ? [runOnAttached(component => {\n        run(component, invalidConfig, invalidState).get(noop);\n      })] : []))).getOr({});\n\n    var ActiveInvalidate = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        events: events$8\n    });\n\n    var InvalidateSchema = [\n      required$1('invalidClass'),\n      defaulted('getRoot', Optional.none),\n      optionObjOf('notify', [\n        defaulted('aria', 'alert'),\n        defaulted('getContainer', Optional.none),\n        defaulted('validHtml', ''),\n        onHandler('onValid'),\n        onHandler('onInvalid'),\n        onHandler('onValidate')\n      ]),\n      optionObjOf('validator', [\n        required$1('validate'),\n        defaulted('onEvent', 'input'),\n        defaulted('validateOnLoad', true)\n      ])\n    ];\n\n    const Invalidating = create$4({\n      fields: InvalidateSchema,\n      name: 'invalidating',\n      active: ActiveInvalidate,\n      apis: InvalidateApis,\n      extra: {\n        validation: validator => {\n          return component => {\n            const v = Representing.getValue(component);\n            return Future.pure(validator(v));\n          };\n        }\n      }\n    });\n\n    const exhibit$1 = () => nu$7({\n      styles: {\n        '-webkit-user-select': 'none',\n        'user-select': 'none',\n        '-ms-user-select': 'none',\n        '-moz-user-select': '-moz-none'\n      },\n      attributes: { unselectable: 'on' }\n    });\n    const events$7 = () => derive$2([abort(selectstart(), always)]);\n\n    var ActiveUnselecting = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        events: events$7,\n        exhibit: exhibit$1\n    });\n\n    const Unselecting = create$4({\n      fields: [],\n      name: 'unselecting',\n      active: ActiveUnselecting\n    });\n\n    const renderPanelButton = (spec, sharedBackstage) => Dropdown.sketch({\n      dom: spec.dom,\n      components: spec.components,\n      toggleClass: 'mce-active',\n      dropdownBehaviours: derive$1([\n        DisablingConfigs.button(sharedBackstage.providers.isDisabled),\n        receivingConfig(),\n        Unselecting.config({}),\n        Tabstopping.config({})\n      ]),\n      layouts: spec.layouts,\n      sandboxClasses: ['tox-dialog__popups'],\n      lazySink: sharedBackstage.getSink,\n      fetch: comp => Future.nu(callback => spec.fetch(callback)).map(items => Optional.from(createTieredDataFrom(deepMerge(createPartialChoiceMenu(generate$6('menu-value'), items, value => {\n        spec.onItemAction(comp, value);\n      }, spec.columns, spec.presets, ItemResponse$1.CLOSE_ON_EXECUTE, never, sharedBackstage.providers), { movement: deriveMenuMovement(spec.columns, spec.presets) })))),\n      parts: { menu: part(false, 1, spec.presets) }\n    });\n\n    const colorInputChangeEvent = generate$6('color-input-change');\n    const colorSwatchChangeEvent = generate$6('color-swatch-change');\n    const colorPickerCancelEvent = generate$6('color-picker-cancel');\n    const renderColorInput = (spec, sharedBackstage, colorInputBackstage, initialData) => {\n      const pField = FormField.parts.field({\n        factory: Input,\n        inputClasses: ['tox-textfield'],\n        data: initialData,\n        onSetValue: c => Invalidating.run(c).get(noop),\n        inputBehaviours: derive$1([\n          Disabling.config({ disabled: sharedBackstage.providers.isDisabled }),\n          receivingConfig(),\n          Tabstopping.config({}),\n          Invalidating.config({\n            invalidClass: 'tox-textbox-field-invalid',\n            getRoot: comp => parentElement(comp.element),\n            notify: {\n              onValid: comp => {\n                const val = Representing.getValue(comp);\n                emitWith(comp, colorInputChangeEvent, { color: val });\n              }\n            },\n            validator: {\n              validateOnLoad: false,\n              validate: input => {\n                const inputValue = Representing.getValue(input);\n                if (inputValue.length === 0) {\n                  return Future.pure(Result.value(true));\n                } else {\n                  const span = SugarElement.fromTag('span');\n                  set$8(span, 'background-color', inputValue);\n                  const res = getRaw(span, 'background-color').fold(() => Result.error('blah'), _ => Result.value(inputValue));\n                  return Future.pure(res);\n                }\n              }\n            }\n          })\n        ]),\n        selectOnFocus: false\n      });\n      const pLabel = spec.label.map(label => renderLabel$3(label, sharedBackstage.providers));\n      const emitSwatchChange = (colorBit, value) => {\n        emitWith(colorBit, colorSwatchChangeEvent, { value });\n      };\n      const onItemAction = (comp, value) => {\n        memColorButton.getOpt(comp).each(colorBit => {\n          if (value === 'custom') {\n            colorInputBackstage.colorPicker(valueOpt => {\n              valueOpt.fold(() => emit(colorBit, colorPickerCancelEvent), value => {\n                emitSwatchChange(colorBit, value);\n                addColor(spec.storageKey, value);\n              });\n            }, '#ffffff');\n          } else if (value === 'remove') {\n            emitSwatchChange(colorBit, '');\n          } else {\n            emitSwatchChange(colorBit, value);\n          }\n        });\n      };\n      const memColorButton = record(renderPanelButton({\n        dom: {\n          tag: 'span',\n          attributes: { 'aria-label': sharedBackstage.providers.translate('Color swatch') }\n        },\n        layouts: {\n          onRtl: () => [\n            southwest$2,\n            southeast$2,\n            south$2\n          ],\n          onLtr: () => [\n            southeast$2,\n            southwest$2,\n            south$2\n          ]\n        },\n        components: [],\n        fetch: getFetch$1(colorInputBackstage.getColors(spec.storageKey), spec.storageKey, colorInputBackstage.hasCustomColors()),\n        columns: colorInputBackstage.getColorCols(spec.storageKey),\n        presets: 'color',\n        onItemAction\n      }, sharedBackstage));\n      return FormField.sketch({\n        dom: {\n          tag: 'div',\n          classes: ['tox-form__group']\n        },\n        components: pLabel.toArray().concat([{\n            dom: {\n              tag: 'div',\n              classes: ['tox-color-input']\n            },\n            components: [\n              pField,\n              memColorButton.asSpec()\n            ]\n          }]),\n        fieldBehaviours: derive$1([config('form-field-events', [\n            run$1(colorInputChangeEvent, (comp, se) => {\n              memColorButton.getOpt(comp).each(colorButton => {\n                set$8(colorButton.element, 'background-color', se.event.color);\n              });\n              emitWith(comp, formChangeEvent, { name: spec.name });\n            }),\n            run$1(colorSwatchChangeEvent, (comp, se) => {\n              FormField.getField(comp).each(field => {\n                Representing.setValue(field, se.event.value);\n                Composing.getCurrent(comp).each(Focusing.focus);\n              });\n            }),\n            run$1(colorPickerCancelEvent, (comp, _se) => {\n              FormField.getField(comp).each(_field => {\n                Composing.getCurrent(comp).each(Focusing.focus);\n              });\n            })\n          ])])\n      });\n    };\n\n    const labelPart = optional({\n      schema: [required$1('dom')],\n      name: 'label'\n    });\n    const edgePart = name => optional({\n      name: '' + name + '-edge',\n      overrides: detail => {\n        const action = detail.model.manager.edgeActions[name];\n        return action.fold(() => ({}), a => ({\n          events: derive$2([\n            runActionExtra(touchstart(), (comp, se, d) => a(comp, d), [detail]),\n            runActionExtra(mousedown(), (comp, se, d) => a(comp, d), [detail]),\n            runActionExtra(mousemove(), (comp, se, det) => {\n              if (det.mouseIsDown.get()) {\n                a(comp, det);\n              }\n            }, [detail])\n          ])\n        }));\n      }\n    });\n    const tlEdgePart = edgePart('top-left');\n    const tedgePart = edgePart('top');\n    const trEdgePart = edgePart('top-right');\n    const redgePart = edgePart('right');\n    const brEdgePart = edgePart('bottom-right');\n    const bedgePart = edgePart('bottom');\n    const blEdgePart = edgePart('bottom-left');\n    const ledgePart = edgePart('left');\n    const thumbPart = required({\n      name: 'thumb',\n      defaults: constant$1({ dom: { styles: { position: 'absolute' } } }),\n      overrides: detail => {\n        return {\n          events: derive$2([\n            redirectToPart(touchstart(), detail, 'spectrum'),\n            redirectToPart(touchmove(), detail, 'spectrum'),\n            redirectToPart(touchend(), detail, 'spectrum'),\n            redirectToPart(mousedown(), detail, 'spectrum'),\n            redirectToPart(mousemove(), detail, 'spectrum'),\n            redirectToPart(mouseup(), detail, 'spectrum')\n          ])\n        };\n      }\n    });\n    const isShift = event => isShift$1(event.event);\n    const spectrumPart = required({\n      schema: [customField('mouseIsDown', () => Cell(false))],\n      name: 'spectrum',\n      overrides: detail => {\n        const modelDetail = detail.model;\n        const model = modelDetail.manager;\n        const setValueFrom = (component, simulatedEvent) => model.getValueFromEvent(simulatedEvent).map(value => model.setValueFrom(component, detail, value));\n        return {\n          behaviours: derive$1([\n            Keying.config({\n              mode: 'special',\n              onLeft: (spectrum, event) => model.onLeft(spectrum, detail, isShift(event)),\n              onRight: (spectrum, event) => model.onRight(spectrum, detail, isShift(event)),\n              onUp: (spectrum, event) => model.onUp(spectrum, detail, isShift(event)),\n              onDown: (spectrum, event) => model.onDown(spectrum, detail, isShift(event))\n            }),\n            Tabstopping.config({}),\n            Focusing.config({})\n          ]),\n          events: derive$2([\n            run$1(touchstart(), setValueFrom),\n            run$1(touchmove(), setValueFrom),\n            run$1(mousedown(), setValueFrom),\n            run$1(mousemove(), (spectrum, se) => {\n              if (detail.mouseIsDown.get()) {\n                setValueFrom(spectrum, se);\n              }\n            })\n          ])\n        };\n      }\n    });\n    var SliderParts = [\n      labelPart,\n      ledgePart,\n      redgePart,\n      tedgePart,\n      bedgePart,\n      tlEdgePart,\n      trEdgePart,\n      blEdgePart,\n      brEdgePart,\n      thumbPart,\n      spectrumPart\n    ];\n\n    const _sliderChangeEvent = 'slider.change.value';\n    const sliderChangeEvent = constant$1(_sliderChangeEvent);\n    const isTouchEvent$2 = evt => evt.type.indexOf('touch') !== -1;\n    const getEventSource = simulatedEvent => {\n      const evt = simulatedEvent.event.raw;\n      if (isTouchEvent$2(evt)) {\n        const touchEvent = evt;\n        return touchEvent.touches !== undefined && touchEvent.touches.length === 1 ? Optional.some(touchEvent.touches[0]).map(t => SugarPosition(t.clientX, t.clientY)) : Optional.none();\n      } else {\n        const mouseEvent = evt;\n        return mouseEvent.clientX !== undefined ? Optional.some(mouseEvent).map(me => SugarPosition(me.clientX, me.clientY)) : Optional.none();\n      }\n    };\n\n    const t = 'top', r = 'right', b = 'bottom', l = 'left';\n    const minX = detail => detail.model.minX;\n    const minY = detail => detail.model.minY;\n    const min1X = detail => detail.model.minX - 1;\n    const min1Y = detail => detail.model.minY - 1;\n    const maxX = detail => detail.model.maxX;\n    const maxY = detail => detail.model.maxY;\n    const max1X = detail => detail.model.maxX + 1;\n    const max1Y = detail => detail.model.maxY + 1;\n    const range = (detail, max, min) => max(detail) - min(detail);\n    const xRange = detail => range(detail, maxX, minX);\n    const yRange = detail => range(detail, maxY, minY);\n    const halfX = detail => xRange(detail) / 2;\n    const halfY = detail => yRange(detail) / 2;\n    const step = (detail, useMultiplier) => useMultiplier ? detail.stepSize * detail.speedMultiplier : detail.stepSize;\n    const snap = detail => detail.snapToGrid;\n    const snapStart = detail => detail.snapStart;\n    const rounded = detail => detail.rounded;\n    const hasEdge = (detail, edgeName) => detail[edgeName + '-edge'] !== undefined;\n    const hasLEdge = detail => hasEdge(detail, l);\n    const hasREdge = detail => hasEdge(detail, r);\n    const hasTEdge = detail => hasEdge(detail, t);\n    const hasBEdge = detail => hasEdge(detail, b);\n    const currentValue = detail => detail.model.value.get();\n\n    const xyValue = (x, y) => ({\n      x,\n      y\n    });\n    const fireSliderChange$3 = (component, value) => {\n      emitWith(component, sliderChangeEvent(), { value });\n    };\n    const setToTLEdgeXY = (edge, detail) => {\n      fireSliderChange$3(edge, xyValue(min1X(detail), min1Y(detail)));\n    };\n    const setToTEdge = (edge, detail) => {\n      fireSliderChange$3(edge, min1Y(detail));\n    };\n    const setToTEdgeXY = (edge, detail) => {\n      fireSliderChange$3(edge, xyValue(halfX(detail), min1Y(detail)));\n    };\n    const setToTREdgeXY = (edge, detail) => {\n      fireSliderChange$3(edge, xyValue(max1X(detail), min1Y(detail)));\n    };\n    const setToREdge = (edge, detail) => {\n      fireSliderChange$3(edge, max1X(detail));\n    };\n    const setToREdgeXY = (edge, detail) => {\n      fireSliderChange$3(edge, xyValue(max1X(detail), halfY(detail)));\n    };\n    const setToBREdgeXY = (edge, detail) => {\n      fireSliderChange$3(edge, xyValue(max1X(detail), max1Y(detail)));\n    };\n    const setToBEdge = (edge, detail) => {\n      fireSliderChange$3(edge, max1Y(detail));\n    };\n    const setToBEdgeXY = (edge, detail) => {\n      fireSliderChange$3(edge, xyValue(halfX(detail), max1Y(detail)));\n    };\n    const setToBLEdgeXY = (edge, detail) => {\n      fireSliderChange$3(edge, xyValue(min1X(detail), max1Y(detail)));\n    };\n    const setToLEdge = (edge, detail) => {\n      fireSliderChange$3(edge, min1X(detail));\n    };\n    const setToLEdgeXY = (edge, detail) => {\n      fireSliderChange$3(edge, xyValue(min1X(detail), halfY(detail)));\n    };\n\n    const reduceBy = (value, min, max, step) => {\n      if (value < min) {\n        return value;\n      } else if (value > max) {\n        return max;\n      } else if (value === min) {\n        return min - 1;\n      } else {\n        return Math.max(min, value - step);\n      }\n    };\n    const increaseBy = (value, min, max, step) => {\n      if (value > max) {\n        return value;\n      } else if (value < min) {\n        return min;\n      } else if (value === max) {\n        return max + 1;\n      } else {\n        return Math.min(max, value + step);\n      }\n    };\n    const capValue = (value, min, max) => Math.max(min, Math.min(max, value));\n    const snapValueOf = (value, min, max, step, snapStart) => snapStart.fold(() => {\n      const initValue = value - min;\n      const extraValue = Math.round(initValue / step) * step;\n      return capValue(min + extraValue, min - 1, max + 1);\n    }, start => {\n      const remainder = (value - start) % step;\n      const adjustment = Math.round(remainder / step);\n      const rawSteps = Math.floor((value - start) / step);\n      const maxSteps = Math.floor((max - start) / step);\n      const numSteps = Math.min(maxSteps, rawSteps + adjustment);\n      const r = start + numSteps * step;\n      return Math.max(start, r);\n    });\n    const findOffsetOf = (value, min, max) => Math.min(max, Math.max(value, min)) - min;\n    const findValueOf = args => {\n      const {min, max, range, value, step, snap, snapStart, rounded, hasMinEdge, hasMaxEdge, minBound, maxBound, screenRange} = args;\n      const capMin = hasMinEdge ? min - 1 : min;\n      const capMax = hasMaxEdge ? max + 1 : max;\n      if (value < minBound) {\n        return capMin;\n      } else if (value > maxBound) {\n        return capMax;\n      } else {\n        const offset = findOffsetOf(value, minBound, maxBound);\n        const newValue = capValue(offset / screenRange * range + min, capMin, capMax);\n        if (snap && newValue >= min && newValue <= max) {\n          return snapValueOf(newValue, min, max, step, snapStart);\n        } else if (rounded) {\n          return Math.round(newValue);\n        } else {\n          return newValue;\n        }\n      }\n    };\n    const findOffsetOfValue$2 = args => {\n      const {min, max, range, value, hasMinEdge, hasMaxEdge, maxBound, maxOffset, centerMinEdge, centerMaxEdge} = args;\n      if (value < min) {\n        return hasMinEdge ? 0 : centerMinEdge;\n      } else if (value > max) {\n        return hasMaxEdge ? maxBound : centerMaxEdge;\n      } else {\n        return (value - min) / range * maxOffset;\n      }\n    };\n\n    const top = 'top', right = 'right', bottom = 'bottom', left = 'left', width = 'width', height = 'height';\n    const getBounds = component => component.element.dom.getBoundingClientRect();\n    const getBoundsProperty = (bounds, property) => bounds[property];\n    const getMinXBounds = component => {\n      const bounds = getBounds(component);\n      return getBoundsProperty(bounds, left);\n    };\n    const getMaxXBounds = component => {\n      const bounds = getBounds(component);\n      return getBoundsProperty(bounds, right);\n    };\n    const getMinYBounds = component => {\n      const bounds = getBounds(component);\n      return getBoundsProperty(bounds, top);\n    };\n    const getMaxYBounds = component => {\n      const bounds = getBounds(component);\n      return getBoundsProperty(bounds, bottom);\n    };\n    const getXScreenRange = component => {\n      const bounds = getBounds(component);\n      return getBoundsProperty(bounds, width);\n    };\n    const getYScreenRange = component => {\n      const bounds = getBounds(component);\n      return getBoundsProperty(bounds, height);\n    };\n    const getCenterOffsetOf = (componentMinEdge, componentMaxEdge, spectrumMinEdge) => (componentMinEdge + componentMaxEdge) / 2 - spectrumMinEdge;\n    const getXCenterOffSetOf = (component, spectrum) => {\n      const componentBounds = getBounds(component);\n      const spectrumBounds = getBounds(spectrum);\n      const componentMinEdge = getBoundsProperty(componentBounds, left);\n      const componentMaxEdge = getBoundsProperty(componentBounds, right);\n      const spectrumMinEdge = getBoundsProperty(spectrumBounds, left);\n      return getCenterOffsetOf(componentMinEdge, componentMaxEdge, spectrumMinEdge);\n    };\n    const getYCenterOffSetOf = (component, spectrum) => {\n      const componentBounds = getBounds(component);\n      const spectrumBounds = getBounds(spectrum);\n      const componentMinEdge = getBoundsProperty(componentBounds, top);\n      const componentMaxEdge = getBoundsProperty(componentBounds, bottom);\n      const spectrumMinEdge = getBoundsProperty(spectrumBounds, top);\n      return getCenterOffsetOf(componentMinEdge, componentMaxEdge, spectrumMinEdge);\n    };\n\n    const fireSliderChange$2 = (spectrum, value) => {\n      emitWith(spectrum, sliderChangeEvent(), { value });\n    };\n    const findValueOfOffset$1 = (spectrum, detail, left) => {\n      const args = {\n        min: minX(detail),\n        max: maxX(detail),\n        range: xRange(detail),\n        value: left,\n        step: step(detail),\n        snap: snap(detail),\n        snapStart: snapStart(detail),\n        rounded: rounded(detail),\n        hasMinEdge: hasLEdge(detail),\n        hasMaxEdge: hasREdge(detail),\n        minBound: getMinXBounds(spectrum),\n        maxBound: getMaxXBounds(spectrum),\n        screenRange: getXScreenRange(spectrum)\n      };\n      return findValueOf(args);\n    };\n    const setValueFrom$2 = (spectrum, detail, value) => {\n      const xValue = findValueOfOffset$1(spectrum, detail, value);\n      const sliderVal = xValue;\n      fireSliderChange$2(spectrum, sliderVal);\n      return xValue;\n    };\n    const setToMin$2 = (spectrum, detail) => {\n      const min = minX(detail);\n      fireSliderChange$2(spectrum, min);\n    };\n    const setToMax$2 = (spectrum, detail) => {\n      const max = maxX(detail);\n      fireSliderChange$2(spectrum, max);\n    };\n    const moveBy$2 = (direction, spectrum, detail, useMultiplier) => {\n      const f = direction > 0 ? increaseBy : reduceBy;\n      const xValue = f(currentValue(detail), minX(detail), maxX(detail), step(detail, useMultiplier));\n      fireSliderChange$2(spectrum, xValue);\n      return Optional.some(xValue);\n    };\n    const handleMovement$2 = direction => (spectrum, detail, useMultiplier) => moveBy$2(direction, spectrum, detail, useMultiplier).map(always);\n    const getValueFromEvent$2 = simulatedEvent => {\n      const pos = getEventSource(simulatedEvent);\n      return pos.map(p => p.left);\n    };\n    const findOffsetOfValue$1 = (spectrum, detail, value, minEdge, maxEdge) => {\n      const minOffset = 0;\n      const maxOffset = getXScreenRange(spectrum);\n      const centerMinEdge = minEdge.bind(edge => Optional.some(getXCenterOffSetOf(edge, spectrum))).getOr(minOffset);\n      const centerMaxEdge = maxEdge.bind(edge => Optional.some(getXCenterOffSetOf(edge, spectrum))).getOr(maxOffset);\n      const args = {\n        min: minX(detail),\n        max: maxX(detail),\n        range: xRange(detail),\n        value,\n        hasMinEdge: hasLEdge(detail),\n        hasMaxEdge: hasREdge(detail),\n        minBound: getMinXBounds(spectrum),\n        minOffset,\n        maxBound: getMaxXBounds(spectrum),\n        maxOffset,\n        centerMinEdge,\n        centerMaxEdge\n      };\n      return findOffsetOfValue$2(args);\n    };\n    const findPositionOfValue$1 = (slider, spectrum, value, minEdge, maxEdge, detail) => {\n      const offset = findOffsetOfValue$1(spectrum, detail, value, minEdge, maxEdge);\n      return getMinXBounds(spectrum) - getMinXBounds(slider) + offset;\n    };\n    const setPositionFromValue$2 = (slider, thumb, detail, edges) => {\n      const value = currentValue(detail);\n      const pos = findPositionOfValue$1(slider, edges.getSpectrum(slider), value, edges.getLeftEdge(slider), edges.getRightEdge(slider), detail);\n      const thumbRadius = get$c(thumb.element) / 2;\n      set$8(thumb.element, 'left', pos - thumbRadius + 'px');\n    };\n    const onLeft$2 = handleMovement$2(-1);\n    const onRight$2 = handleMovement$2(1);\n    const onUp$2 = Optional.none;\n    const onDown$2 = Optional.none;\n    const edgeActions$2 = {\n      'top-left': Optional.none(),\n      'top': Optional.none(),\n      'top-right': Optional.none(),\n      'right': Optional.some(setToREdge),\n      'bottom-right': Optional.none(),\n      'bottom': Optional.none(),\n      'bottom-left': Optional.none(),\n      'left': Optional.some(setToLEdge)\n    };\n\n    var HorizontalModel = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        setValueFrom: setValueFrom$2,\n        setToMin: setToMin$2,\n        setToMax: setToMax$2,\n        findValueOfOffset: findValueOfOffset$1,\n        getValueFromEvent: getValueFromEvent$2,\n        findPositionOfValue: findPositionOfValue$1,\n        setPositionFromValue: setPositionFromValue$2,\n        onLeft: onLeft$2,\n        onRight: onRight$2,\n        onUp: onUp$2,\n        onDown: onDown$2,\n        edgeActions: edgeActions$2\n    });\n\n    const fireSliderChange$1 = (spectrum, value) => {\n      emitWith(spectrum, sliderChangeEvent(), { value });\n    };\n    const findValueOfOffset = (spectrum, detail, top) => {\n      const args = {\n        min: minY(detail),\n        max: maxY(detail),\n        range: yRange(detail),\n        value: top,\n        step: step(detail),\n        snap: snap(detail),\n        snapStart: snapStart(detail),\n        rounded: rounded(detail),\n        hasMinEdge: hasTEdge(detail),\n        hasMaxEdge: hasBEdge(detail),\n        minBound: getMinYBounds(spectrum),\n        maxBound: getMaxYBounds(spectrum),\n        screenRange: getYScreenRange(spectrum)\n      };\n      return findValueOf(args);\n    };\n    const setValueFrom$1 = (spectrum, detail, value) => {\n      const yValue = findValueOfOffset(spectrum, detail, value);\n      const sliderVal = yValue;\n      fireSliderChange$1(spectrum, sliderVal);\n      return yValue;\n    };\n    const setToMin$1 = (spectrum, detail) => {\n      const min = minY(detail);\n      fireSliderChange$1(spectrum, min);\n    };\n    const setToMax$1 = (spectrum, detail) => {\n      const max = maxY(detail);\n      fireSliderChange$1(spectrum, max);\n    };\n    const moveBy$1 = (direction, spectrum, detail, useMultiplier) => {\n      const f = direction > 0 ? increaseBy : reduceBy;\n      const yValue = f(currentValue(detail), minY(detail), maxY(detail), step(detail, useMultiplier));\n      fireSliderChange$1(spectrum, yValue);\n      return Optional.some(yValue);\n    };\n    const handleMovement$1 = direction => (spectrum, detail, useMultiplier) => moveBy$1(direction, spectrum, detail, useMultiplier).map(always);\n    const getValueFromEvent$1 = simulatedEvent => {\n      const pos = getEventSource(simulatedEvent);\n      return pos.map(p => {\n        return p.top;\n      });\n    };\n    const findOffsetOfValue = (spectrum, detail, value, minEdge, maxEdge) => {\n      const minOffset = 0;\n      const maxOffset = getYScreenRange(spectrum);\n      const centerMinEdge = minEdge.bind(edge => Optional.some(getYCenterOffSetOf(edge, spectrum))).getOr(minOffset);\n      const centerMaxEdge = maxEdge.bind(edge => Optional.some(getYCenterOffSetOf(edge, spectrum))).getOr(maxOffset);\n      const args = {\n        min: minY(detail),\n        max: maxY(detail),\n        range: yRange(detail),\n        value,\n        hasMinEdge: hasTEdge(detail),\n        hasMaxEdge: hasBEdge(detail),\n        minBound: getMinYBounds(spectrum),\n        minOffset,\n        maxBound: getMaxYBounds(spectrum),\n        maxOffset,\n        centerMinEdge,\n        centerMaxEdge\n      };\n      return findOffsetOfValue$2(args);\n    };\n    const findPositionOfValue = (slider, spectrum, value, minEdge, maxEdge, detail) => {\n      const offset = findOffsetOfValue(spectrum, detail, value, minEdge, maxEdge);\n      return getMinYBounds(spectrum) - getMinYBounds(slider) + offset;\n    };\n    const setPositionFromValue$1 = (slider, thumb, detail, edges) => {\n      const value = currentValue(detail);\n      const pos = findPositionOfValue(slider, edges.getSpectrum(slider), value, edges.getTopEdge(slider), edges.getBottomEdge(slider), detail);\n      const thumbRadius = get$d(thumb.element) / 2;\n      set$8(thumb.element, 'top', pos - thumbRadius + 'px');\n    };\n    const onLeft$1 = Optional.none;\n    const onRight$1 = Optional.none;\n    const onUp$1 = handleMovement$1(-1);\n    const onDown$1 = handleMovement$1(1);\n    const edgeActions$1 = {\n      'top-left': Optional.none(),\n      'top': Optional.some(setToTEdge),\n      'top-right': Optional.none(),\n      'right': Optional.none(),\n      'bottom-right': Optional.none(),\n      'bottom': Optional.some(setToBEdge),\n      'bottom-left': Optional.none(),\n      'left': Optional.none()\n    };\n\n    var VerticalModel = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        setValueFrom: setValueFrom$1,\n        setToMin: setToMin$1,\n        setToMax: setToMax$1,\n        findValueOfOffset: findValueOfOffset,\n        getValueFromEvent: getValueFromEvent$1,\n        findPositionOfValue: findPositionOfValue,\n        setPositionFromValue: setPositionFromValue$1,\n        onLeft: onLeft$1,\n        onRight: onRight$1,\n        onUp: onUp$1,\n        onDown: onDown$1,\n        edgeActions: edgeActions$1\n    });\n\n    const fireSliderChange = (spectrum, value) => {\n      emitWith(spectrum, sliderChangeEvent(), { value });\n    };\n    const sliderValue = (x, y) => ({\n      x,\n      y\n    });\n    const setValueFrom = (spectrum, detail, value) => {\n      const xValue = findValueOfOffset$1(spectrum, detail, value.left);\n      const yValue = findValueOfOffset(spectrum, detail, value.top);\n      const val = sliderValue(xValue, yValue);\n      fireSliderChange(spectrum, val);\n      return val;\n    };\n    const moveBy = (direction, isVerticalMovement, spectrum, detail, useMultiplier) => {\n      const f = direction > 0 ? increaseBy : reduceBy;\n      const xValue = isVerticalMovement ? currentValue(detail).x : f(currentValue(detail).x, minX(detail), maxX(detail), step(detail, useMultiplier));\n      const yValue = !isVerticalMovement ? currentValue(detail).y : f(currentValue(detail).y, minY(detail), maxY(detail), step(detail, useMultiplier));\n      fireSliderChange(spectrum, sliderValue(xValue, yValue));\n      return Optional.some(xValue);\n    };\n    const handleMovement = (direction, isVerticalMovement) => (spectrum, detail, useMultiplier) => moveBy(direction, isVerticalMovement, spectrum, detail, useMultiplier).map(always);\n    const setToMin = (spectrum, detail) => {\n      const mX = minX(detail);\n      const mY = minY(detail);\n      fireSliderChange(spectrum, sliderValue(mX, mY));\n    };\n    const setToMax = (spectrum, detail) => {\n      const mX = maxX(detail);\n      const mY = maxY(detail);\n      fireSliderChange(spectrum, sliderValue(mX, mY));\n    };\n    const getValueFromEvent = simulatedEvent => getEventSource(simulatedEvent);\n    const setPositionFromValue = (slider, thumb, detail, edges) => {\n      const value = currentValue(detail);\n      const xPos = findPositionOfValue$1(slider, edges.getSpectrum(slider), value.x, edges.getLeftEdge(slider), edges.getRightEdge(slider), detail);\n      const yPos = findPositionOfValue(slider, edges.getSpectrum(slider), value.y, edges.getTopEdge(slider), edges.getBottomEdge(slider), detail);\n      const thumbXRadius = get$c(thumb.element) / 2;\n      const thumbYRadius = get$d(thumb.element) / 2;\n      set$8(thumb.element, 'left', xPos - thumbXRadius + 'px');\n      set$8(thumb.element, 'top', yPos - thumbYRadius + 'px');\n    };\n    const onLeft = handleMovement(-1, false);\n    const onRight = handleMovement(1, false);\n    const onUp = handleMovement(-1, true);\n    const onDown = handleMovement(1, true);\n    const edgeActions = {\n      'top-left': Optional.some(setToTLEdgeXY),\n      'top': Optional.some(setToTEdgeXY),\n      'top-right': Optional.some(setToTREdgeXY),\n      'right': Optional.some(setToREdgeXY),\n      'bottom-right': Optional.some(setToBREdgeXY),\n      'bottom': Optional.some(setToBEdgeXY),\n      'bottom-left': Optional.some(setToBLEdgeXY),\n      'left': Optional.some(setToLEdgeXY)\n    };\n\n    var TwoDModel = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        setValueFrom: setValueFrom,\n        setToMin: setToMin,\n        setToMax: setToMax,\n        getValueFromEvent: getValueFromEvent,\n        setPositionFromValue: setPositionFromValue,\n        onLeft: onLeft,\n        onRight: onRight,\n        onUp: onUp,\n        onDown: onDown,\n        edgeActions: edgeActions\n    });\n\n    const SliderSchema = [\n      defaulted('stepSize', 1),\n      defaulted('speedMultiplier', 10),\n      defaulted('onChange', noop),\n      defaulted('onChoose', noop),\n      defaulted('onInit', noop),\n      defaulted('onDragStart', noop),\n      defaulted('onDragEnd', noop),\n      defaulted('snapToGrid', false),\n      defaulted('rounded', true),\n      option$3('snapStart'),\n      requiredOf('model', choose$1('mode', {\n        x: [\n          defaulted('minX', 0),\n          defaulted('maxX', 100),\n          customField('value', spec => Cell(spec.mode.minX)),\n          required$1('getInitialValue'),\n          output$1('manager', HorizontalModel)\n        ],\n        y: [\n          defaulted('minY', 0),\n          defaulted('maxY', 100),\n          customField('value', spec => Cell(spec.mode.minY)),\n          required$1('getInitialValue'),\n          output$1('manager', VerticalModel)\n        ],\n        xy: [\n          defaulted('minX', 0),\n          defaulted('maxX', 100),\n          defaulted('minY', 0),\n          defaulted('maxY', 100),\n          customField('value', spec => Cell({\n            x: spec.mode.minX,\n            y: spec.mode.minY\n          })),\n          required$1('getInitialValue'),\n          output$1('manager', TwoDModel)\n        ]\n      })),\n      field('sliderBehaviours', [\n        Keying,\n        Representing\n      ]),\n      customField('mouseIsDown', () => Cell(false))\n    ];\n\n    const sketch$2 = (detail, components, _spec, _externals) => {\n      const getThumb = component => getPartOrDie(component, detail, 'thumb');\n      const getSpectrum = component => getPartOrDie(component, detail, 'spectrum');\n      const getLeftEdge = component => getPart(component, detail, 'left-edge');\n      const getRightEdge = component => getPart(component, detail, 'right-edge');\n      const getTopEdge = component => getPart(component, detail, 'top-edge');\n      const getBottomEdge = component => getPart(component, detail, 'bottom-edge');\n      const modelDetail = detail.model;\n      const model = modelDetail.manager;\n      const refresh = (slider, thumb) => {\n        model.setPositionFromValue(slider, thumb, detail, {\n          getLeftEdge,\n          getRightEdge,\n          getTopEdge,\n          getBottomEdge,\n          getSpectrum\n        });\n      };\n      const setValue = (slider, newValue) => {\n        modelDetail.value.set(newValue);\n        const thumb = getThumb(slider);\n        refresh(slider, thumb);\n      };\n      const changeValue = (slider, newValue) => {\n        setValue(slider, newValue);\n        const thumb = getThumb(slider);\n        detail.onChange(slider, thumb, newValue);\n        return Optional.some(true);\n      };\n      const resetToMin = slider => {\n        model.setToMin(slider, detail);\n      };\n      const resetToMax = slider => {\n        model.setToMax(slider, detail);\n      };\n      const choose = slider => {\n        const fireOnChoose = () => {\n          getPart(slider, detail, 'thumb').each(thumb => {\n            const value = modelDetail.value.get();\n            detail.onChoose(slider, thumb, value);\n          });\n        };\n        const wasDown = detail.mouseIsDown.get();\n        detail.mouseIsDown.set(false);\n        if (wasDown) {\n          fireOnChoose();\n        }\n      };\n      const onDragStart = (slider, simulatedEvent) => {\n        simulatedEvent.stop();\n        detail.mouseIsDown.set(true);\n        detail.onDragStart(slider, getThumb(slider));\n      };\n      const onDragEnd = (slider, simulatedEvent) => {\n        simulatedEvent.stop();\n        detail.onDragEnd(slider, getThumb(slider));\n        choose(slider);\n      };\n      const focusWidget = component => {\n        getPart(component, detail, 'spectrum').map(Keying.focusIn);\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components,\n        behaviours: augment(detail.sliderBehaviours, [\n          Keying.config({\n            mode: 'special',\n            focusIn: focusWidget\n          }),\n          Representing.config({\n            store: {\n              mode: 'manual',\n              getValue: _ => {\n                return modelDetail.value.get();\n              },\n              setValue\n            }\n          }),\n          Receiving.config({ channels: { [mouseReleased()]: { onReceive: choose } } })\n        ]),\n        events: derive$2([\n          run$1(sliderChangeEvent(), (slider, simulatedEvent) => {\n            changeValue(slider, simulatedEvent.event.value);\n          }),\n          runOnAttached((slider, _simulatedEvent) => {\n            const getInitial = modelDetail.getInitialValue();\n            modelDetail.value.set(getInitial);\n            const thumb = getThumb(slider);\n            refresh(slider, thumb);\n            const spectrum = getSpectrum(slider);\n            detail.onInit(slider, thumb, spectrum, modelDetail.value.get());\n          }),\n          run$1(touchstart(), onDragStart),\n          run$1(touchend(), onDragEnd),\n          run$1(mousedown(), (component, event) => {\n            focusWidget(component);\n            onDragStart(component, event);\n          }),\n          run$1(mouseup(), onDragEnd)\n        ]),\n        apis: {\n          resetToMin,\n          resetToMax,\n          setValue,\n          refresh\n        },\n        domModification: { styles: { position: 'relative' } }\n      };\n    };\n\n    const Slider = composite({\n      name: 'Slider',\n      configFields: SliderSchema,\n      partFields: SliderParts,\n      factory: sketch$2,\n      apis: {\n        setValue: (apis, slider, value) => {\n          apis.setValue(slider, value);\n        },\n        resetToMin: (apis, slider) => {\n          apis.resetToMin(slider);\n        },\n        resetToMax: (apis, slider) => {\n          apis.resetToMax(slider);\n        },\n        refresh: (apis, slider) => {\n          apis.refresh(slider);\n        }\n      }\n    });\n\n    const fieldsUpdate = generate$6('rgb-hex-update');\n    const sliderUpdate = generate$6('slider-update');\n    const paletteUpdate = generate$6('palette-update');\n\n    const sliderFactory = (translate, getClass) => {\n      const spectrum = Slider.parts.spectrum({\n        dom: {\n          tag: 'div',\n          classes: [getClass('hue-slider-spectrum')],\n          attributes: { role: 'presentation' }\n        }\n      });\n      const thumb = Slider.parts.thumb({\n        dom: {\n          tag: 'div',\n          classes: [getClass('hue-slider-thumb')],\n          attributes: { role: 'presentation' }\n        }\n      });\n      return Slider.sketch({\n        dom: {\n          tag: 'div',\n          classes: [getClass('hue-slider')],\n          attributes: {\n            'role': 'slider',\n            'aria-valuemin': 0,\n            'aria-valuemax': 360,\n            'aria-valuenow': 120\n          }\n        },\n        rounded: false,\n        model: {\n          mode: 'y',\n          getInitialValue: constant$1(0)\n        },\n        components: [\n          spectrum,\n          thumb\n        ],\n        sliderBehaviours: derive$1([Focusing.config({})]),\n        onChange: (slider, _thumb, value) => {\n          set$9(slider.element, 'aria-valuenow', Math.floor(360 - value * 3.6));\n          emitWith(slider, sliderUpdate, { value });\n        }\n      });\n    };\n\n    const owner$1 = 'form';\n    const schema$i = [field('formBehaviours', [Representing])];\n    const getPartName$1 = name => '<alloy.field.' + name + '>';\n    const sketch$1 = fSpec => {\n      const parts = (() => {\n        const record = [];\n        const field = (name, config) => {\n          record.push(name);\n          return generateOne$1(owner$1, getPartName$1(name), config);\n        };\n        return {\n          field,\n          record: constant$1(record)\n        };\n      })();\n      const spec = fSpec(parts);\n      const partNames = parts.record();\n      const fieldParts = map$2(partNames, n => required({\n        name: n,\n        pname: getPartName$1(n)\n      }));\n      return composite$1(owner$1, schema$i, fieldParts, make$4, spec);\n    };\n    const toResult = (o, e) => o.fold(() => Result.error(e), Result.value);\n    const make$4 = (detail, components) => ({\n      uid: detail.uid,\n      dom: detail.dom,\n      components,\n      behaviours: augment(detail.formBehaviours, [Representing.config({\n          store: {\n            mode: 'manual',\n            getValue: form => {\n              const resPs = getAllParts(form, detail);\n              return map$1(resPs, (resPThunk, pName) => resPThunk().bind(v => {\n                const opt = Composing.getCurrent(v);\n                return toResult(opt, new Error(`Cannot find a current component to extract the value from for form part '${ pName }': ` + element(v.element)));\n              }).map(Representing.getValue));\n            },\n            setValue: (form, values) => {\n              each(values, (newValue, key) => {\n                getPart(form, detail, key).each(wrapper => {\n                  Composing.getCurrent(wrapper).each(field => {\n                    Representing.setValue(field, newValue);\n                  });\n                });\n              });\n            }\n          }\n        })]),\n      apis: {\n        getField: (form, key) => {\n          return getPart(form, detail, key).bind(Composing.getCurrent);\n        }\n      }\n    });\n    const Form = {\n      getField: makeApi((apis, component, key) => apis.getField(component, key)),\n      sketch: sketch$1\n    };\n\n    const validInput = generate$6('valid-input');\n    const invalidInput = generate$6('invalid-input');\n    const validatingInput = generate$6('validating-input');\n    const translatePrefix = 'colorcustom.rgb.';\n    const rgbFormFactory = (translate, getClass, onValidHexx, onInvalidHexx) => {\n      const invalidation = (label, isValid) => Invalidating.config({\n        invalidClass: getClass('invalid'),\n        notify: {\n          onValidate: comp => {\n            emitWith(comp, validatingInput, { type: label });\n          },\n          onValid: comp => {\n            emitWith(comp, validInput, {\n              type: label,\n              value: Representing.getValue(comp)\n            });\n          },\n          onInvalid: comp => {\n            emitWith(comp, invalidInput, {\n              type: label,\n              value: Representing.getValue(comp)\n            });\n          }\n        },\n        validator: {\n          validate: comp => {\n            const value = Representing.getValue(comp);\n            const res = isValid(value) ? Result.value(true) : Result.error(translate('aria.input.invalid'));\n            return Future.pure(res);\n          },\n          validateOnLoad: false\n        }\n      });\n      const renderTextField = (isValid, name, label, description, data) => {\n        const helptext = translate(translatePrefix + 'range');\n        const pLabel = FormField.parts.label({\n          dom: {\n            tag: 'label',\n            attributes: { 'aria-label': description }\n          },\n          components: [text$2(label)]\n        });\n        const pField = FormField.parts.field({\n          data,\n          factory: Input,\n          inputAttributes: {\n            type: 'text',\n            ...name === 'hex' ? { 'aria-live': 'polite' } : {}\n          },\n          inputClasses: [getClass('textfield')],\n          inputBehaviours: derive$1([\n            invalidation(name, isValid),\n            Tabstopping.config({})\n          ]),\n          onSetValue: input => {\n            if (Invalidating.isInvalid(input)) {\n              const run = Invalidating.run(input);\n              run.get(noop);\n            }\n          }\n        });\n        const comps = [\n          pLabel,\n          pField\n        ];\n        const concats = name !== 'hex' ? [FormField.parts['aria-descriptor']({ text: helptext })] : [];\n        const components = comps.concat(concats);\n        return {\n          dom: {\n            tag: 'div',\n            attributes: { role: 'presentation' }\n          },\n          components\n        };\n      };\n      const copyRgbToHex = (form, rgba) => {\n        const hex = fromRgba(rgba);\n        Form.getField(form, 'hex').each(hexField => {\n          if (!Focusing.isFocused(hexField)) {\n            Representing.setValue(form, { hex: hex.value });\n          }\n        });\n        return hex;\n      };\n      const copyRgbToForm = (form, rgb) => {\n        const red = rgb.red;\n        const green = rgb.green;\n        const blue = rgb.blue;\n        Representing.setValue(form, {\n          red,\n          green,\n          blue\n        });\n      };\n      const memPreview = record({\n        dom: {\n          tag: 'div',\n          classes: [getClass('rgba-preview')],\n          styles: { 'background-color': 'white' },\n          attributes: { role: 'presentation' }\n        }\n      });\n      const updatePreview = (anyInSystem, hex) => {\n        memPreview.getOpt(anyInSystem).each(preview => {\n          set$8(preview.element, 'background-color', '#' + hex.value);\n        });\n      };\n      const factory = () => {\n        const state = {\n          red: Cell(Optional.some(255)),\n          green: Cell(Optional.some(255)),\n          blue: Cell(Optional.some(255)),\n          hex: Cell(Optional.some('ffffff'))\n        };\n        const copyHexToRgb = (form, hex) => {\n          const rgb = fromHex(hex);\n          copyRgbToForm(form, rgb);\n          setValueRgb(rgb);\n        };\n        const get = prop => state[prop].get();\n        const set = (prop, value) => {\n          state[prop].set(value);\n        };\n        const getValueRgb = () => get('red').bind(red => get('green').bind(green => get('blue').map(blue => rgbaColour(red, green, blue, 1))));\n        const setValueRgb = rgb => {\n          const red = rgb.red;\n          const green = rgb.green;\n          const blue = rgb.blue;\n          set('red', Optional.some(red));\n          set('green', Optional.some(green));\n          set('blue', Optional.some(blue));\n        };\n        const onInvalidInput = (form, simulatedEvent) => {\n          const data = simulatedEvent.event;\n          if (data.type !== 'hex') {\n            set(data.type, Optional.none());\n          } else {\n            onInvalidHexx(form);\n          }\n        };\n        const onValidHex = (form, value) => {\n          onValidHexx(form);\n          const hex = hexColour(value);\n          set('hex', Optional.some(hex.value));\n          const rgb = fromHex(hex);\n          copyRgbToForm(form, rgb);\n          setValueRgb(rgb);\n          emitWith(form, fieldsUpdate, { hex });\n          updatePreview(form, hex);\n        };\n        const onValidRgb = (form, prop, value) => {\n          const val = parseInt(value, 10);\n          set(prop, Optional.some(val));\n          getValueRgb().each(rgb => {\n            const hex = copyRgbToHex(form, rgb);\n            emitWith(form, fieldsUpdate, { hex });\n            updatePreview(form, hex);\n          });\n        };\n        const isHexInputEvent = data => data.type === 'hex';\n        const onValidInput = (form, simulatedEvent) => {\n          const data = simulatedEvent.event;\n          if (isHexInputEvent(data)) {\n            onValidHex(form, data.value);\n          } else {\n            onValidRgb(form, data.type, data.value);\n          }\n        };\n        const formPartStrings = key => ({\n          label: translate(translatePrefix + key + '.label'),\n          description: translate(translatePrefix + key + '.description')\n        });\n        const redStrings = formPartStrings('red');\n        const greenStrings = formPartStrings('green');\n        const blueStrings = formPartStrings('blue');\n        const hexStrings = formPartStrings('hex');\n        return deepMerge(Form.sketch(parts => ({\n          dom: {\n            tag: 'form',\n            classes: [getClass('rgb-form')],\n            attributes: { 'aria-label': translate('aria.color.picker') }\n          },\n          components: [\n            parts.field('red', FormField.sketch(renderTextField(isRgbaComponent, 'red', redStrings.label, redStrings.description, 255))),\n            parts.field('green', FormField.sketch(renderTextField(isRgbaComponent, 'green', greenStrings.label, greenStrings.description, 255))),\n            parts.field('blue', FormField.sketch(renderTextField(isRgbaComponent, 'blue', blueStrings.label, blueStrings.description, 255))),\n            parts.field('hex', FormField.sketch(renderTextField(isHexString, 'hex', hexStrings.label, hexStrings.description, 'ffffff'))),\n            memPreview.asSpec()\n          ],\n          formBehaviours: derive$1([\n            Invalidating.config({ invalidClass: getClass('form-invalid') }),\n            config('rgb-form-events', [\n              run$1(validInput, onValidInput),\n              run$1(invalidInput, onInvalidInput),\n              run$1(validatingInput, onInvalidInput)\n            ])\n          ])\n        })), {\n          apis: {\n            updateHex: (form, hex) => {\n              Representing.setValue(form, { hex: hex.value });\n              copyHexToRgb(form, hex);\n              updatePreview(form, hex);\n            }\n          }\n        });\n      };\n      const rgbFormSketcher = single({\n        factory,\n        name: 'RgbForm',\n        configFields: [],\n        apis: {\n          updateHex: (apis, form, hex) => {\n            apis.updateHex(form, hex);\n          }\n        },\n        extraApis: {}\n      });\n      return rgbFormSketcher;\n    };\n\n    const paletteFactory = (translate, getClass) => {\n      const spectrumPart = Slider.parts.spectrum({\n        dom: {\n          tag: 'canvas',\n          attributes: { role: 'presentation' },\n          classes: [getClass('sv-palette-spectrum')]\n        }\n      });\n      const thumbPart = Slider.parts.thumb({\n        dom: {\n          tag: 'div',\n          attributes: { role: 'presentation' },\n          classes: [getClass('sv-palette-thumb')],\n          innerHtml: `<div class=${ getClass('sv-palette-inner-thumb') } role=\"presentation\"></div>`\n        }\n      });\n      const setColour = (canvas, rgba) => {\n        const {width, height} = canvas;\n        const ctx = canvas.getContext('2d');\n        if (ctx === null) {\n          return;\n        }\n        ctx.fillStyle = rgba;\n        ctx.fillRect(0, 0, width, height);\n        const grdWhite = ctx.createLinearGradient(0, 0, width, 0);\n        grdWhite.addColorStop(0, 'rgba(255,255,255,1)');\n        grdWhite.addColorStop(1, 'rgba(255,255,255,0)');\n        ctx.fillStyle = grdWhite;\n        ctx.fillRect(0, 0, width, height);\n        const grdBlack = ctx.createLinearGradient(0, 0, 0, height);\n        grdBlack.addColorStop(0, 'rgba(0,0,0,0)');\n        grdBlack.addColorStop(1, 'rgba(0,0,0,1)');\n        ctx.fillStyle = grdBlack;\n        ctx.fillRect(0, 0, width, height);\n      };\n      const setPaletteHue = (slider, hue) => {\n        const canvas = slider.components()[0].element.dom;\n        const hsv = hsvColour(hue, 100, 100);\n        const rgba = fromHsv(hsv);\n        setColour(canvas, toString(rgba));\n      };\n      const setPaletteThumb = (slider, hex) => {\n        const hsv = fromRgb(fromHex(hex));\n        Slider.setValue(slider, {\n          x: hsv.saturation,\n          y: 100 - hsv.value\n        });\n        set$9(slider.element, 'aria-valuetext', translate([\n          'Saturation {0}%, Brightness {1}%',\n          hsv.saturation,\n          hsv.value\n        ]));\n      };\n      const factory = _detail => {\n        const getInitialValue = constant$1({\n          x: 0,\n          y: 0\n        });\n        const onChange = (slider, _thumb, value) => {\n          if (!isNumber(value)) {\n            set$9(slider.element, 'aria-valuetext', translate([\n              'Saturation {0}%, Brightness {1}%',\n              Math.floor(value.x),\n              Math.floor(100 - value.y)\n            ]));\n          }\n          emitWith(slider, paletteUpdate, { value });\n        };\n        const onInit = (_slider, _thumb, spectrum, _value) => {\n          setColour(spectrum.element.dom, toString(red));\n        };\n        const sliderBehaviours = derive$1([\n          Composing.config({ find: Optional.some }),\n          Focusing.config({})\n        ]);\n        return Slider.sketch({\n          dom: {\n            tag: 'div',\n            attributes: {\n              'role': 'slider',\n              'aria-valuetext': translate([\n                'Saturation {0}%, Brightness {1}%',\n                0,\n                0\n              ])\n            },\n            classes: [getClass('sv-palette')]\n          },\n          model: {\n            mode: 'xy',\n            getInitialValue\n          },\n          rounded: false,\n          components: [\n            spectrumPart,\n            thumbPart\n          ],\n          onChange,\n          onInit,\n          sliderBehaviours\n        });\n      };\n      const saturationBrightnessPaletteSketcher = single({\n        factory,\n        name: 'SaturationBrightnessPalette',\n        configFields: [],\n        apis: {\n          setHue: (_apis, slider, hue) => {\n            setPaletteHue(slider, hue);\n          },\n          setThumb: (_apis, slider, hex) => {\n            setPaletteThumb(slider, hex);\n          }\n        },\n        extraApis: {}\n      });\n      return saturationBrightnessPaletteSketcher;\n    };\n\n    const makeFactory = (translate, getClass) => {\n      const factory = detail => {\n        const rgbForm = rgbFormFactory(translate, getClass, detail.onValidHex, detail.onInvalidHex);\n        const sbPalette = paletteFactory(translate, getClass);\n        const hueSliderToDegrees = hue => (100 - hue) / 100 * 360;\n        const hueDegreesToSlider = hue => 100 - hue / 360 * 100;\n        const state = {\n          paletteRgba: Cell(red),\n          paletteHue: Cell(0)\n        };\n        const memSlider = record(sliderFactory(translate, getClass));\n        const memPalette = record(sbPalette.sketch({}));\n        const memRgb = record(rgbForm.sketch({}));\n        const updatePalette = (anyInSystem, _hex, hue) => {\n          memPalette.getOpt(anyInSystem).each(palette => {\n            sbPalette.setHue(palette, hue);\n          });\n        };\n        const updateFields = (anyInSystem, hex) => {\n          memRgb.getOpt(anyInSystem).each(form => {\n            rgbForm.updateHex(form, hex);\n          });\n        };\n        const updateSlider = (anyInSystem, _hex, hue) => {\n          memSlider.getOpt(anyInSystem).each(slider => {\n            Slider.setValue(slider, hueDegreesToSlider(hue));\n          });\n        };\n        const updatePaletteThumb = (anyInSystem, hex) => {\n          memPalette.getOpt(anyInSystem).each(palette => {\n            sbPalette.setThumb(palette, hex);\n          });\n        };\n        const updateState = (hex, hue) => {\n          const rgba = fromHex(hex);\n          state.paletteRgba.set(rgba);\n          state.paletteHue.set(hue);\n        };\n        const runUpdates = (anyInSystem, hex, hue, updates) => {\n          updateState(hex, hue);\n          each$1(updates, update => {\n            update(anyInSystem, hex, hue);\n          });\n        };\n        const onPaletteUpdate = () => {\n          const updates = [updateFields];\n          return (form, simulatedEvent) => {\n            const value = simulatedEvent.event.value;\n            const oldHue = state.paletteHue.get();\n            const newHsv = hsvColour(oldHue, value.x, 100 - value.y);\n            const newHex = hsvToHex(newHsv);\n            runUpdates(form, newHex, oldHue, updates);\n          };\n        };\n        const onSliderUpdate = () => {\n          const updates = [\n            updatePalette,\n            updateFields\n          ];\n          return (form, simulatedEvent) => {\n            const hue = hueSliderToDegrees(simulatedEvent.event.value);\n            const oldRgb = state.paletteRgba.get();\n            const oldHsv = fromRgb(oldRgb);\n            const newHsv = hsvColour(hue, oldHsv.saturation, oldHsv.value);\n            const newHex = hsvToHex(newHsv);\n            runUpdates(form, newHex, hue, updates);\n          };\n        };\n        const onFieldsUpdate = () => {\n          const updates = [\n            updatePalette,\n            updateSlider,\n            updatePaletteThumb\n          ];\n          return (form, simulatedEvent) => {\n            const hex = simulatedEvent.event.hex;\n            const hsv = hexToHsv(hex);\n            runUpdates(form, hex, hsv.hue, updates);\n          };\n        };\n        return {\n          uid: detail.uid,\n          dom: detail.dom,\n          components: [\n            memPalette.asSpec(),\n            memSlider.asSpec(),\n            memRgb.asSpec()\n          ],\n          behaviours: derive$1([\n            config('colour-picker-events', [\n              run$1(fieldsUpdate, onFieldsUpdate()),\n              run$1(paletteUpdate, onPaletteUpdate()),\n              run$1(sliderUpdate, onSliderUpdate())\n            ]),\n            Composing.config({ find: comp => memRgb.getOpt(comp) }),\n            Keying.config({ mode: 'acyclic' })\n          ])\n        };\n      };\n      const colourPickerSketcher = single({\n        name: 'ColourPicker',\n        configFields: [\n          required$1('dom'),\n          defaulted('onValidHex', noop),\n          defaulted('onInvalidHex', noop)\n        ],\n        factory\n      });\n      return colourPickerSketcher;\n    };\n\n    const self = () => Composing.config({ find: Optional.some });\n    const memento$1 = mem => Composing.config({ find: mem.getOpt });\n    const childAt = index => Composing.config({ find: comp => child$2(comp.element, index).bind(element => comp.getSystem().getByDom(element).toOptional()) });\n    const ComposingConfigs = {\n      self,\n      memento: memento$1,\n      childAt\n    };\n\n    const processors = objOf([\n      defaulted('preprocess', identity),\n      defaulted('postprocess', identity)\n    ]);\n    const memento = (mem, rawProcessors) => {\n      const ps = asRawOrDie$1('RepresentingConfigs.memento processors', processors, rawProcessors);\n      return Representing.config({\n        store: {\n          mode: 'manual',\n          getValue: comp => {\n            const other = mem.get(comp);\n            const rawValue = Representing.getValue(other);\n            return ps.postprocess(rawValue);\n          },\n          setValue: (comp, rawValue) => {\n            const newValue = ps.preprocess(rawValue);\n            const other = mem.get(comp);\n            Representing.setValue(other, newValue);\n          }\n        }\n      });\n    };\n    const withComp = (optInitialValue, getter, setter) => Representing.config({\n      store: {\n        mode: 'manual',\n        ...optInitialValue.map(initialValue => ({ initialValue })).getOr({}),\n        getValue: getter,\n        setValue: setter\n      }\n    });\n    const withElement = (initialValue, getter, setter) => withComp(initialValue, c => getter(c.element), (c, v) => setter(c.element, v));\n    const domHtml = optInitialValue => withElement(optInitialValue, get$9, set$6);\n    const memory = initialValue => Representing.config({\n      store: {\n        mode: 'memory',\n        initialValue\n      }\n    });\n\n    const english = {\n      'colorcustom.rgb.red.label': 'R',\n      'colorcustom.rgb.red.description': 'Red component',\n      'colorcustom.rgb.green.label': 'G',\n      'colorcustom.rgb.green.description': 'Green component',\n      'colorcustom.rgb.blue.label': 'B',\n      'colorcustom.rgb.blue.description': 'Blue component',\n      'colorcustom.rgb.hex.label': '#',\n      'colorcustom.rgb.hex.description': 'Hex color code',\n      'colorcustom.rgb.range': 'Range 0 to 255',\n      'aria.color.picker': 'Color Picker',\n      'aria.input.invalid': 'Invalid input'\n    };\n    const translate$1 = providerBackstage => key => {\n      if (isString(key)) {\n        return providerBackstage.translate(english[key]);\n      } else {\n        return providerBackstage.translate(key);\n      }\n    };\n    const renderColorPicker = (_spec, providerBackstage, initialData) => {\n      const getClass = key => 'tox-' + key;\n      const colourPickerFactory = makeFactory(translate$1(providerBackstage), getClass);\n      const onValidHex = form => {\n        emitWith(form, formActionEvent, {\n          name: 'hex-valid',\n          value: true\n        });\n      };\n      const onInvalidHex = form => {\n        emitWith(form, formActionEvent, {\n          name: 'hex-valid',\n          value: false\n        });\n      };\n      const memPicker = record(colourPickerFactory.sketch({\n        dom: {\n          tag: 'div',\n          classes: [getClass('color-picker-container')],\n          attributes: { role: 'presentation' }\n        },\n        onValidHex,\n        onInvalidHex\n      }));\n      return {\n        dom: { tag: 'div' },\n        components: [memPicker.asSpec()],\n        behaviours: derive$1([\n          withComp(initialData, comp => {\n            const picker = memPicker.get(comp);\n            const optRgbForm = Composing.getCurrent(picker);\n            const optHex = optRgbForm.bind(rgbForm => {\n              const formValues = Representing.getValue(rgbForm);\n              return formValues.hex;\n            });\n            return optHex.map(hex => '#' + removeLeading(hex, '#')).getOr('');\n          }, (comp, newValue) => {\n            const pattern = /^#([a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?)/;\n            const valOpt = Optional.from(pattern.exec(newValue)).bind(matches => get$h(matches, 1));\n            const picker = memPicker.get(comp);\n            const optRgbForm = Composing.getCurrent(picker);\n            optRgbForm.fold(() => {\n              console.log('Can not find form');\n            }, rgbForm => {\n              Representing.setValue(rgbForm, { hex: valOpt.getOr('') });\n              Form.getField(rgbForm, 'hex').each(hexField => {\n                emit(hexField, input());\n              });\n            });\n          }),\n          ComposingConfigs.self()\n        ])\n      };\n    };\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.Resource');\n\n    const isOldCustomEditor = spec => has$2(spec, 'init');\n    const renderCustomEditor = spec => {\n      const editorApi = value$2();\n      const memReplaced = record({ dom: { tag: spec.tag } });\n      const initialValue = value$2();\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-custom-editor']\n        },\n        behaviours: derive$1([\n          config('custom-editor-events', [runOnAttached(component => {\n              memReplaced.getOpt(component).each(ta => {\n                (isOldCustomEditor(spec) ? spec.init(ta.element.dom) : global$2.load(spec.scriptId, spec.scriptUrl).then(init => init(ta.element.dom, spec.settings))).then(ea => {\n                  initialValue.on(cvalue => {\n                    ea.setValue(cvalue);\n                  });\n                  initialValue.clear();\n                  editorApi.set(ea);\n                });\n              });\n            })]),\n          withComp(Optional.none(), () => editorApi.get().fold(() => initialValue.get().getOr(''), ed => ed.getValue()), (component, value) => {\n            editorApi.get().fold(() => initialValue.set(value), ed => ed.setValue(value));\n          }),\n          ComposingConfigs.self()\n        ]),\n        components: [memReplaced.asSpec()]\n      };\n    };\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const filterByExtension = (files, providersBackstage) => {\n      const allowedImageFileTypes = global$1.explode(providersBackstage.getOption('images_file_types'));\n      const isFileInAllowedTypes = file => exists(allowedImageFileTypes, type => endsWith(file.name.toLowerCase(), `.${ type.toLowerCase() }`));\n      return filter$2(from(files), isFileInAllowedTypes);\n    };\n    const renderDropZone = (spec, providersBackstage, initialData) => {\n      const stopper = (_, se) => {\n        se.stop();\n      };\n      const sequence = actions => (comp, se) => {\n        each$1(actions, a => {\n          a(comp, se);\n        });\n      };\n      const onDrop = (comp, se) => {\n        var _a;\n        if (!Disabling.isDisabled(comp)) {\n          const transferEvent = se.event.raw;\n          handleFiles(comp, (_a = transferEvent.dataTransfer) === null || _a === void 0 ? void 0 : _a.files);\n        }\n      };\n      const onSelect = (component, simulatedEvent) => {\n        const input = simulatedEvent.event.raw.target;\n        handleFiles(component, input.files);\n      };\n      const handleFiles = (component, files) => {\n        if (files) {\n          Representing.setValue(component, filterByExtension(files, providersBackstage));\n          emitWith(component, formChangeEvent, { name: spec.name });\n        }\n      };\n      const memInput = record({\n        dom: {\n          tag: 'input',\n          attributes: {\n            type: 'file',\n            accept: 'image/*'\n          },\n          styles: { display: 'none' }\n        },\n        behaviours: derive$1([config('input-file-events', [\n            cutter(click()),\n            cutter(tap())\n          ])])\n      });\n      const renderField = s => ({\n        uid: s.uid,\n        dom: {\n          tag: 'div',\n          classes: ['tox-dropzone-container']\n        },\n        behaviours: derive$1([\n          memory(initialData.getOr([])),\n          ComposingConfigs.self(),\n          Disabling.config({}),\n          Toggling.config({\n            toggleClass: 'dragenter',\n            toggleOnExecute: false\n          }),\n          config('dropzone-events', [\n            run$1('dragenter', sequence([\n              stopper,\n              Toggling.toggle\n            ])),\n            run$1('dragleave', sequence([\n              stopper,\n              Toggling.toggle\n            ])),\n            run$1('dragover', stopper),\n            run$1('drop', sequence([\n              stopper,\n              onDrop\n            ])),\n            run$1(change(), onSelect)\n          ])\n        ]),\n        components: [{\n            dom: {\n              tag: 'div',\n              classes: ['tox-dropzone'],\n              styles: {}\n            },\n            components: [\n              {\n                dom: { tag: 'p' },\n                components: [text$2(providersBackstage.translate('Drop an image here'))]\n              },\n              Button.sketch({\n                dom: {\n                  tag: 'button',\n                  styles: { position: 'relative' },\n                  classes: [\n                    'tox-button',\n                    'tox-button--secondary'\n                  ]\n                },\n                components: [\n                  text$2(providersBackstage.translate('Browse for an image')),\n                  memInput.asSpec()\n                ],\n                action: comp => {\n                  const inputComp = memInput.get(comp);\n                  inputComp.element.dom.click();\n                },\n                buttonBehaviours: derive$1([\n                  Tabstopping.config({}),\n                  DisablingConfigs.button(providersBackstage.isDisabled),\n                  receivingConfig()\n                ])\n              })\n            ]\n          }]\n      });\n      const pLabel = spec.label.map(label => renderLabel$3(label, providersBackstage));\n      const pField = FormField.parts.field({ factory: { sketch: renderField } });\n      return renderFormFieldWith(pLabel, pField, ['tox-form__group--stretched'], []);\n    };\n\n    const renderGrid = (spec, backstage) => ({\n      dom: {\n        tag: 'div',\n        classes: [\n          'tox-form__grid',\n          `tox-form__grid--${ spec.columns }col`\n        ]\n      },\n      components: map$2(spec.items, backstage.interpreter)\n    });\n\n    const adaptable = (fn, rate) => {\n      let timer = null;\n      let args = null;\n      const cancel = () => {\n        if (!isNull(timer)) {\n          clearTimeout(timer);\n          timer = null;\n          args = null;\n        }\n      };\n      const throttle = (...newArgs) => {\n        args = newArgs;\n        if (isNull(timer)) {\n          timer = setTimeout(() => {\n            const tempArgs = args;\n            timer = null;\n            args = null;\n            fn.apply(null, tempArgs);\n          }, rate);\n        }\n      };\n      return {\n        cancel,\n        throttle\n      };\n    };\n    const first = (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        if (isNull(timer)) {\n          timer = setTimeout(() => {\n            timer = null;\n            fn.apply(null, args);\n          }, rate);\n        }\n      };\n      return {\n        cancel,\n        throttle\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 beforeObject = generate$6('alloy-fake-before-tabstop');\n    const afterObject = generate$6('alloy-fake-after-tabstop');\n    const craftWithClasses = classes => {\n      return {\n        dom: {\n          tag: 'div',\n          styles: {\n            width: '1px',\n            height: '1px',\n            outline: 'none'\n          },\n          attributes: { tabindex: '0' },\n          classes\n        },\n        behaviours: derive$1([\n          Focusing.config({ ignore: true }),\n          Tabstopping.config({})\n        ])\n      };\n    };\n    const craft = (containerClasses, spec) => {\n      return {\n        dom: {\n          tag: 'div',\n          classes: [\n            'tox-navobj',\n            ...containerClasses.getOr([])\n          ]\n        },\n        components: [\n          craftWithClasses([beforeObject]),\n          spec,\n          craftWithClasses([afterObject])\n        ],\n        behaviours: derive$1([ComposingConfigs.childAt(1)])\n      };\n    };\n    const triggerTab = (placeholder, shiftKey) => {\n      emitWith(placeholder, keydown(), {\n        raw: {\n          which: 9,\n          shiftKey\n        }\n      });\n    };\n    const onFocus = (container, targetComp) => {\n      const target = targetComp.element;\n      if (has(target, beforeObject)) {\n        triggerTab(container, true);\n      } else if (has(target, afterObject)) {\n        triggerTab(container, false);\n      }\n    };\n    const isPseudoStop = element => {\n      return closest(element, [\n        '.' + beforeObject,\n        '.' + afterObject\n      ].join(','), never);\n    };\n\n    const dialogChannel = generate$6('update-dialog');\n    const titleChannel = generate$6('update-title');\n    const bodyChannel = generate$6('update-body');\n    const footerChannel = generate$6('update-footer');\n    const bodySendMessageChannel = generate$6('body-send-message');\n    const dialogFocusShiftedChannel = generate$6('dialog-focus-shifted');\n\n    const browser = detect$2().browser;\n    const isSafari = browser.isSafari();\n    const isFirefox = browser.isFirefox();\n    const isSafariOrFirefox = isSafari || isFirefox;\n    const isChromium = browser.isChromium();\n    const isElementScrollAtBottom = ({scrollTop, scrollHeight, clientHeight}) => Math.ceil(scrollTop) + clientHeight >= scrollHeight;\n    const scrollToY = (win, y) => win.scrollTo(0, y === 'bottom' ? 99999999 : y);\n    const getScrollingElement = (doc, html) => {\n      const body = doc.body;\n      return Optional.from(!/^<!DOCTYPE (html|HTML)/.test(html) && (!isChromium && !isSafari || isNonNullable(body) && (body.scrollTop !== 0 || Math.abs(body.scrollHeight - body.clientHeight) > 1)) ? body : doc.documentElement);\n    };\n    const writeValue = (iframeElement, html, fallbackFn) => {\n      const iframe = iframeElement.dom;\n      Optional.from(iframe.contentDocument).fold(fallbackFn, doc => {\n        let lastScrollTop = 0;\n        const isScrollAtBottom = getScrollingElement(doc, html).map(el => {\n          lastScrollTop = el.scrollTop;\n          return el;\n        }).forall(isElementScrollAtBottom);\n        const scrollAfterWrite = () => {\n          const win = iframe.contentWindow;\n          if (isNonNullable(win)) {\n            if (isScrollAtBottom) {\n              scrollToY(win, 'bottom');\n            } else if (!isScrollAtBottom && isSafariOrFirefox && lastScrollTop !== 0) {\n              scrollToY(win, lastScrollTop);\n            }\n          }\n        };\n        if (isSafari) {\n          iframe.addEventListener('load', scrollAfterWrite, { once: true });\n        }\n        doc.open();\n        doc.write(html);\n        doc.close();\n        if (!isSafari) {\n          scrollAfterWrite();\n        }\n      });\n    };\n    const throttleInterval = someIf(isSafariOrFirefox, isSafari ? 500 : 200);\n    const writeValueThrottler = throttleInterval.map(interval => adaptable(writeValue, interval));\n    const getDynamicSource = (initialData, stream) => {\n      const cachedValue = Cell(initialData.getOr(''));\n      return {\n        getValue: _frameComponent => cachedValue.get(),\n        setValue: (frameComponent, html) => {\n          if (cachedValue.get() !== html) {\n            const iframeElement = frameComponent.element;\n            const setSrcdocValue = () => set$9(iframeElement, 'srcdoc', html);\n            if (stream) {\n              writeValueThrottler.fold(constant$1(writeValue), throttler => throttler.throttle)(iframeElement, html, setSrcdocValue);\n            } else {\n              setSrcdocValue();\n            }\n          }\n          cachedValue.set(html);\n        }\n      };\n    };\n    const renderIFrame = (spec, providersBackstage, initialData) => {\n      const baseClass = 'tox-dialog__iframe';\n      const opaqueClass = spec.transparent ? [] : [`${ baseClass }--opaque`];\n      const containerBorderedClass = spec.border ? [`tox-navobj-bordered`] : [];\n      const attributes = {\n        ...spec.label.map(title => ({ title })).getOr({}),\n        ...initialData.map(html => ({ srcdoc: html })).getOr({}),\n        ...spec.sandboxed ? { sandbox: 'allow-scripts allow-same-origin' } : {}\n      };\n      const sourcing = getDynamicSource(initialData, spec.streamContent);\n      const pLabel = spec.label.map(label => renderLabel$3(label, providersBackstage));\n      const factory = newSpec => craft(Optional.from(containerBorderedClass), {\n        uid: newSpec.uid,\n        dom: {\n          tag: 'iframe',\n          attributes,\n          classes: [\n            baseClass,\n            ...opaqueClass\n          ]\n        },\n        behaviours: derive$1([\n          Tabstopping.config({}),\n          Focusing.config({}),\n          withComp(initialData, sourcing.getValue, sourcing.setValue),\n          Receiving.config({\n            channels: {\n              [dialogFocusShiftedChannel]: {\n                onReceive: (comp, message) => {\n                  message.newFocus.each(newFocus => {\n                    parentElement(comp.element).each(parent => {\n                      const f = eq(comp.element, newFocus) ? add$2 : remove$2;\n                      f(parent, 'tox-navobj-bordered-focus');\n                    });\n                  });\n                }\n              }\n            }\n          })\n        ])\n      });\n      const pField = FormField.parts.field({ factory: { sketch: factory } });\n      return renderFormFieldWith(pLabel, pField, ['tox-form__group--stretched'], []);\n    };\n\n    const image = image => new Promise((resolve, reject) => {\n      const loaded = () => {\n        destroy();\n        resolve(image);\n      };\n      const listeners = [\n        bind(image, 'load', loaded),\n        bind(image, 'error', () => {\n          destroy();\n          reject('Unable to load data from image: ' + image.dom.src);\n        })\n      ];\n      const destroy = () => each$1(listeners, l => l.unbind());\n      if (image.dom.complete) {\n        loaded();\n      }\n    });\n\n    const calculateImagePosition = (panelWidth, panelHeight, imageWidth, imageHeight, zoom) => {\n      const width = imageWidth * zoom;\n      const height = imageHeight * zoom;\n      const left = Math.max(0, panelWidth / 2 - width / 2);\n      const top = Math.max(0, panelHeight / 2 - height / 2);\n      return {\n        left: left.toString() + 'px',\n        top: top.toString() + 'px',\n        width: width.toString() + 'px',\n        height: height.toString() + 'px'\n      };\n    };\n    const zoomToFit = (panel, width, height) => {\n      const panelW = get$c(panel);\n      const panelH = get$d(panel);\n      return Math.min(panelW / width, panelH / height, 1);\n    };\n    const renderImagePreview = (spec, initialData) => {\n      const cachedData = Cell(initialData.getOr({ url: '' }));\n      const memImage = record({\n        dom: {\n          tag: 'img',\n          classes: ['tox-imagepreview__image'],\n          attributes: initialData.map(data => ({ src: data.url })).getOr({})\n        }\n      });\n      const memContainer = record({\n        dom: {\n          tag: 'div',\n          classes: ['tox-imagepreview__container'],\n          attributes: { role: 'presentation' }\n        },\n        components: [memImage.asSpec()]\n      });\n      const setValue = (frameComponent, data) => {\n        const translatedData = { url: data.url };\n        data.zoom.each(z => translatedData.zoom = z);\n        data.cachedWidth.each(z => translatedData.cachedWidth = z);\n        data.cachedHeight.each(z => translatedData.cachedHeight = z);\n        cachedData.set(translatedData);\n        const applyFramePositioning = () => {\n          const {cachedWidth, cachedHeight, zoom} = translatedData;\n          if (!isUndefined(cachedWidth) && !isUndefined(cachedHeight)) {\n            if (isUndefined(zoom)) {\n              const z = zoomToFit(frameComponent.element, cachedWidth, cachedHeight);\n              translatedData.zoom = z;\n            }\n            const position = calculateImagePosition(get$c(frameComponent.element), get$d(frameComponent.element), cachedWidth, cachedHeight, translatedData.zoom);\n            memContainer.getOpt(frameComponent).each(container => {\n              setAll(container.element, position);\n            });\n          }\n        };\n        memImage.getOpt(frameComponent).each(imageComponent => {\n          const img = imageComponent.element;\n          if (data.url !== get$f(img, 'src')) {\n            set$9(img, 'src', data.url);\n            remove$2(frameComponent.element, 'tox-imagepreview__loaded');\n          }\n          applyFramePositioning();\n          image(img).then(img => {\n            if (frameComponent.getSystem().isConnected()) {\n              add$2(frameComponent.element, 'tox-imagepreview__loaded');\n              translatedData.cachedWidth = img.dom.naturalWidth;\n              translatedData.cachedHeight = img.dom.naturalHeight;\n              applyFramePositioning();\n            }\n          });\n        });\n      };\n      const styles = {};\n      spec.height.each(h => styles.height = h);\n      const fakeValidatedData = initialData.map(d => ({\n        url: d.url,\n        zoom: Optional.from(d.zoom),\n        cachedWidth: Optional.from(d.cachedWidth),\n        cachedHeight: Optional.from(d.cachedHeight)\n      }));\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-imagepreview'],\n          styles,\n          attributes: { role: 'presentation' }\n        },\n        components: [memContainer.asSpec()],\n        behaviours: derive$1([\n          ComposingConfigs.self(),\n          withComp(fakeValidatedData, () => cachedData.get(), setValue)\n        ])\n      };\n    };\n\n    const renderLabel$2 = (spec, backstageShared) => {\n      const baseClass = 'tox-label';\n      const centerClass = spec.align === 'center' ? [`${ baseClass }--center`] : [];\n      const endClass = spec.align === 'end' ? [`${ baseClass }--end`] : [];\n      const label = {\n        dom: {\n          tag: 'label',\n          classes: [\n            baseClass,\n            ...centerClass,\n            ...endClass\n          ]\n        },\n        components: [text$2(backstageShared.providers.translate(spec.label))]\n      };\n      const comps = map$2(spec.items, backstageShared.interpreter);\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-form__group']\n        },\n        components: [\n          label,\n          ...comps\n        ],\n        behaviours: derive$1([\n          ComposingConfigs.self(),\n          Replacing.config({}),\n          domHtml(Optional.none()),\n          Keying.config({ mode: 'acyclic' })\n        ])\n      };\n    };\n\n    const internalToolbarButtonExecute = generate$6('toolbar.button.execute');\n    const onToolbarButtonExecute = info => runOnExecute$1((comp, _simulatedEvent) => {\n      runWithApi(info, comp)(itemApi => {\n        emitWith(comp, internalToolbarButtonExecute, { buttonApi: itemApi });\n        info.onAction(itemApi);\n      });\n    });\n    const commonButtonDisplayEvent = generate$6('common-button-display-events');\n    const toolbarButtonEventOrder = {\n      [execute$5()]: [\n        'disabling',\n        'alloy.base.behaviour',\n        'toggling',\n        'toolbar-button-events'\n      ],\n      [attachedToDom()]: [\n        'toolbar-button-events',\n        commonButtonDisplayEvent\n      ],\n      [mousedown()]: [\n        'focusing',\n        'alloy.base.behaviour',\n        commonButtonDisplayEvent\n      ]\n    };\n\n    const forceInitialSize = comp => set$8(comp.element, 'width', get$e(comp.element, 'width'));\n\n    const renderIcon$1 = (iconName, iconsProvider, behaviours) => render$3(iconName, {\n      tag: 'span',\n      classes: [\n        'tox-icon',\n        'tox-tbtn__icon-wrap'\n      ],\n      behaviours\n    }, iconsProvider);\n    const renderIconFromPack$1 = (iconName, iconsProvider) => renderIcon$1(iconName, iconsProvider, []);\n    const renderReplaceableIconFromPack = (iconName, iconsProvider) => renderIcon$1(iconName, iconsProvider, [Replacing.config({})]);\n    const renderLabel$1 = (text, prefix, providersBackstage) => ({\n      dom: {\n        tag: 'span',\n        classes: [`${ prefix }__select-label`]\n      },\n      components: [text$2(providersBackstage.translate(text))],\n      behaviours: derive$1([Replacing.config({})])\n    });\n\n    const updateMenuText = generate$6('update-menu-text');\n    const updateMenuIcon = generate$6('update-menu-icon');\n    const renderCommonDropdown = (spec, prefix, sharedBackstage) => {\n      const editorOffCell = Cell(noop);\n      const optMemDisplayText = spec.text.map(text => record(renderLabel$1(text, prefix, sharedBackstage.providers)));\n      const optMemDisplayIcon = spec.icon.map(iconName => record(renderReplaceableIconFromPack(iconName, sharedBackstage.providers.icons)));\n      const onLeftOrRightInMenu = (comp, se) => {\n        const dropdown = Representing.getValue(comp);\n        Focusing.focus(dropdown);\n        emitWith(dropdown, 'keydown', { raw: se.event.raw });\n        Dropdown.close(dropdown);\n        return Optional.some(true);\n      };\n      const role = spec.role.fold(() => ({}), role => ({ role }));\n      const tooltipAttributes = spec.tooltip.fold(() => ({}), tooltip => {\n        const translatedTooltip = sharedBackstage.providers.translate(tooltip);\n        return {\n          'title': translatedTooltip,\n          'aria-label': translatedTooltip\n        };\n      });\n      const iconSpec = render$3('chevron-down', {\n        tag: 'div',\n        classes: [`${ prefix }__select-chevron`]\n      }, sharedBackstage.providers.icons);\n      const fixWidthBehaviourName = generate$6('common-button-display-events');\n      const memDropdown = record(Dropdown.sketch({\n        ...spec.uid ? { uid: spec.uid } : {},\n        ...role,\n        dom: {\n          tag: 'button',\n          classes: [\n            prefix,\n            `${ prefix }--select`\n          ].concat(map$2(spec.classes, c => `${ prefix }--${ c }`)),\n          attributes: { ...tooltipAttributes }\n        },\n        components: componentRenderPipeline([\n          optMemDisplayIcon.map(mem => mem.asSpec()),\n          optMemDisplayText.map(mem => mem.asSpec()),\n          Optional.some(iconSpec)\n        ]),\n        matchWidth: true,\n        useMinWidth: true,\n        onOpen: (anchor, dropdownComp, tmenuComp) => {\n          if (spec.searchable) {\n            focusSearchField(tmenuComp);\n          }\n        },\n        dropdownBehaviours: derive$1([\n          ...spec.dropdownBehaviours,\n          DisablingConfigs.button(() => spec.disabled || sharedBackstage.providers.isDisabled()),\n          receivingConfig(),\n          Unselecting.config({}),\n          Replacing.config({}),\n          config('dropdown-events', [\n            onControlAttached(spec, editorOffCell),\n            onControlDetached(spec, editorOffCell)\n          ]),\n          config(fixWidthBehaviourName, [runOnAttached((comp, _se) => forceInitialSize(comp))]),\n          config('menubutton-update-display-text', [\n            run$1(updateMenuText, (comp, se) => {\n              optMemDisplayText.bind(mem => mem.getOpt(comp)).each(displayText => {\n                Replacing.set(displayText, [text$2(sharedBackstage.providers.translate(se.event.text))]);\n              });\n            }),\n            run$1(updateMenuIcon, (comp, se) => {\n              optMemDisplayIcon.bind(mem => mem.getOpt(comp)).each(displayIcon => {\n                Replacing.set(displayIcon, [renderReplaceableIconFromPack(se.event.icon, sharedBackstage.providers.icons)]);\n              });\n            })\n          ])\n        ]),\n        eventOrder: deepMerge(toolbarButtonEventOrder, {\n          mousedown: [\n            'focusing',\n            'alloy.base.behaviour',\n            'item-type-events',\n            'normal-dropdown-events'\n          ],\n          [attachedToDom()]: [\n            'toolbar-button-events',\n            'dropdown-events',\n            fixWidthBehaviourName\n          ]\n        }),\n        sandboxBehaviours: derive$1([\n          Keying.config({\n            mode: 'special',\n            onLeft: onLeftOrRightInMenu,\n            onRight: onLeftOrRightInMenu\n          }),\n          config('dropdown-sandbox-events', [\n            run$1(refetchTriggerEvent, (originalSandboxComp, se) => {\n              handleRefetchTrigger(originalSandboxComp);\n              se.stop();\n            }),\n            run$1(redirectMenuItemInteractionEvent, (sandboxComp, se) => {\n              handleRedirectToMenuItem(sandboxComp, se);\n              se.stop();\n            })\n          ])\n        ]),\n        lazySink: sharedBackstage.getSink,\n        toggleClass: `${ prefix }--active`,\n        parts: {\n          menu: {\n            ...part(false, spec.columns, spec.presets),\n            fakeFocus: spec.searchable,\n            onHighlightItem: updateAriaOnHighlight,\n            onCollapseMenu: (tmenuComp, itemCompCausingCollapse, nowActiveMenuComp) => {\n              Highlighting.getHighlighted(nowActiveMenuComp).each(itemComp => {\n                updateAriaOnHighlight(tmenuComp, nowActiveMenuComp, itemComp);\n              });\n            },\n            onDehighlightItem: updateAriaOnDehighlight\n          }\n        },\n        getAnchorOverrides: () => {\n          return {\n            maxHeightFunction: (element, available) => {\n              anchored()(element, available - 10);\n            }\n          };\n        },\n        fetch: comp => Future.nu(curry(spec.fetch, comp))\n      }));\n      return memDropdown.asSpec();\n    };\n\n    const isMenuItemReference = item => isString(item);\n    const isSeparator$2 = item => item.type === 'separator';\n    const isExpandingMenuItem = item => has$2(item, 'getSubmenuItems');\n    const separator$2 = { type: 'separator' };\n    const unwrapReferences = (items, menuItems) => {\n      const realItems = foldl(items, (acc, item) => {\n        if (isMenuItemReference(item)) {\n          if (item === '') {\n            return acc;\n          } else if (item === '|') {\n            return acc.length > 0 && !isSeparator$2(acc[acc.length - 1]) ? acc.concat([separator$2]) : acc;\n          } else if (has$2(menuItems, item.toLowerCase())) {\n            return acc.concat([menuItems[item.toLowerCase()]]);\n          } else {\n            return acc;\n          }\n        } else {\n          return acc.concat([item]);\n        }\n      }, []);\n      if (realItems.length > 0 && isSeparator$2(realItems[realItems.length - 1])) {\n        realItems.pop();\n      }\n      return realItems;\n    };\n    const getFromExpandingItem = (item, menuItems) => {\n      const submenuItems = item.getSubmenuItems();\n      const rest = expand(submenuItems, menuItems);\n      const newMenus = deepMerge(rest.menus, { [item.value]: rest.items });\n      const newExpansions = deepMerge(rest.expansions, { [item.value]: item.value });\n      return {\n        item,\n        menus: newMenus,\n        expansions: newExpansions\n      };\n    };\n    const generateValueIfRequired = item => {\n      const itemValue = get$g(item, 'value').getOrThunk(() => generate$6('generated-menu-item'));\n      return deepMerge({ value: itemValue }, item);\n    };\n    const expand = (items, menuItems) => {\n      const realItems = unwrapReferences(isString(items) ? items.split(' ') : items, menuItems);\n      return foldr(realItems, (acc, item) => {\n        if (isExpandingMenuItem(item)) {\n          const itemWithValue = generateValueIfRequired(item);\n          const newData = getFromExpandingItem(itemWithValue, menuItems);\n          return {\n            menus: deepMerge(acc.menus, newData.menus),\n            items: [\n              newData.item,\n              ...acc.items\n            ],\n            expansions: deepMerge(acc.expansions, newData.expansions)\n          };\n        } else {\n          return {\n            ...acc,\n            items: [\n              item,\n              ...acc.items\n            ]\n          };\n        }\n      }, {\n        menus: {},\n        expansions: {},\n        items: []\n      });\n    };\n\n    const getSearchModeForField = settings => {\n      return settings.search.fold(() => ({ searchMode: 'no-search' }), searchSettings => ({\n        searchMode: 'search-with-field',\n        placeholder: searchSettings.placeholder\n      }));\n    };\n    const getSearchModeForResults = settings => {\n      return settings.search.fold(() => ({ searchMode: 'no-search' }), _ => ({ searchMode: 'search-with-results' }));\n    };\n    const build = (items, itemResponse, backstage, settings) => {\n      const primary = generate$6('primary-menu');\n      const data = expand(items, backstage.shared.providers.menuItems());\n      if (data.items.length === 0) {\n        return Optional.none();\n      }\n      const mainMenuSearchMode = getSearchModeForField(settings);\n      const mainMenu = createPartialMenu(primary, data.items, itemResponse, backstage, settings.isHorizontalMenu, mainMenuSearchMode);\n      const submenuSearchMode = getSearchModeForResults(settings);\n      const submenus = map$1(data.menus, (menuItems, menuName) => createPartialMenu(menuName, menuItems, itemResponse, backstage, false, submenuSearchMode));\n      const menus = deepMerge(submenus, wrap$1(primary, mainMenu));\n      return Optional.from(tieredMenu.tieredData(primary, menus, data.expansions));\n    };\n\n    const isSingleListItem = item => !has$2(item, 'items');\n    const dataAttribute = 'data-value';\n    const fetchItems = (dropdownComp, name, items, selectedValue) => map$2(items, item => {\n      if (!isSingleListItem(item)) {\n        return {\n          type: 'nestedmenuitem',\n          text: item.text,\n          getSubmenuItems: () => fetchItems(dropdownComp, name, item.items, selectedValue)\n        };\n      } else {\n        return {\n          type: 'togglemenuitem',\n          text: item.text,\n          value: item.value,\n          active: item.value === selectedValue,\n          onAction: () => {\n            Representing.setValue(dropdownComp, item.value);\n            emitWith(dropdownComp, formChangeEvent, { name });\n            Focusing.focus(dropdownComp);\n          }\n        };\n      }\n    });\n    const findItemByValue = (items, value) => findMap(items, item => {\n      if (!isSingleListItem(item)) {\n        return findItemByValue(item.items, value);\n      } else {\n        return someIf(item.value === value, item);\n      }\n    });\n    const renderListBox = (spec, backstage, initialData) => {\n      const providersBackstage = backstage.shared.providers;\n      const initialItem = initialData.bind(value => findItemByValue(spec.items, value)).orThunk(() => head(spec.items).filter(isSingleListItem));\n      const pLabel = spec.label.map(label => renderLabel$3(label, providersBackstage));\n      const pField = FormField.parts.field({\n        dom: {},\n        factory: {\n          sketch: sketchSpec => renderCommonDropdown({\n            uid: sketchSpec.uid,\n            text: initialItem.map(item => item.text),\n            icon: Optional.none(),\n            tooltip: spec.label,\n            role: Optional.none(),\n            fetch: (comp, callback) => {\n              const items = fetchItems(comp, spec.name, spec.items, Representing.getValue(comp));\n              callback(build(items, ItemResponse$1.CLOSE_ON_EXECUTE, backstage, {\n                isHorizontalMenu: false,\n                search: Optional.none()\n              }));\n            },\n            onSetup: constant$1(noop),\n            getApi: constant$1({}),\n            columns: 1,\n            presets: 'normal',\n            classes: [],\n            dropdownBehaviours: [\n              Tabstopping.config({}),\n              withComp(initialItem.map(item => item.value), comp => get$f(comp.element, dataAttribute), (comp, data) => {\n                findItemByValue(spec.items, data).each(item => {\n                  set$9(comp.element, dataAttribute, item.value);\n                  emitWith(comp, updateMenuText, { text: item.text });\n                });\n              })\n            ]\n          }, 'tox-listbox', backstage.shared)\n        }\n      });\n      const listBoxWrap = {\n        dom: {\n          tag: 'div',\n          classes: ['tox-listboxfield']\n        },\n        components: [pField]\n      };\n      return FormField.sketch({\n        dom: {\n          tag: 'div',\n          classes: ['tox-form__group']\n        },\n        components: flatten([\n          pLabel.toArray(),\n          [listBoxWrap]\n        ]),\n        fieldBehaviours: derive$1([Disabling.config({\n            disabled: constant$1(!spec.enabled),\n            onDisabled: comp => {\n              FormField.getField(comp).each(Disabling.disable);\n            },\n            onEnabled: comp => {\n              FormField.getField(comp).each(Disabling.enable);\n            }\n          })])\n      });\n    };\n\n    const renderPanel = (spec, backstage) => ({\n      dom: {\n        tag: 'div',\n        classes: spec.classes\n      },\n      components: map$2(spec.items, backstage.shared.interpreter)\n    });\n\n    const factory$h = (detail, _spec) => {\n      const options = map$2(detail.options, option => ({\n        dom: {\n          tag: 'option',\n          value: option.value,\n          innerHtml: option.text\n        }\n      }));\n      const initialValues = detail.data.map(v => wrap$1('initialValue', v)).getOr({});\n      return {\n        uid: detail.uid,\n        dom: {\n          tag: 'select',\n          classes: detail.selectClasses,\n          attributes: detail.selectAttributes\n        },\n        components: options,\n        behaviours: augment(detail.selectBehaviours, [\n          Focusing.config({}),\n          Representing.config({\n            store: {\n              mode: 'manual',\n              getValue: select => {\n                return get$6(select.element);\n              },\n              setValue: (select, newValue) => {\n                const firstOption = head(detail.options);\n                const found = find$5(detail.options, opt => opt.value === newValue);\n                if (found.isSome()) {\n                  set$5(select.element, newValue);\n                } else if (select.element.dom.selectedIndex === -1 && newValue === '') {\n                  firstOption.each(value => set$5(select.element, value.value));\n                }\n              },\n              ...initialValues\n            }\n          })\n        ])\n      };\n    };\n    const HtmlSelect = single({\n      name: 'HtmlSelect',\n      configFields: [\n        required$1('options'),\n        field('selectBehaviours', [\n          Focusing,\n          Representing\n        ]),\n        defaulted('selectClasses', []),\n        defaulted('selectAttributes', {}),\n        option$3('data')\n      ],\n      factory: factory$h\n    });\n\n    const renderSelectBox = (spec, providersBackstage, initialData) => {\n      const translatedOptions = map$2(spec.items, item => ({\n        text: providersBackstage.translate(item.text),\n        value: item.value\n      }));\n      const pLabel = spec.label.map(label => renderLabel$3(label, providersBackstage));\n      const pField = FormField.parts.field({\n        dom: {},\n        ...initialData.map(data => ({ data })).getOr({}),\n        selectAttributes: { size: spec.size },\n        options: translatedOptions,\n        factory: HtmlSelect,\n        selectBehaviours: derive$1([\n          Disabling.config({ disabled: () => !spec.enabled || providersBackstage.isDisabled() }),\n          Tabstopping.config({}),\n          config('selectbox-change', [run$1(change(), (component, _) => {\n              emitWith(component, formChangeEvent, { name: spec.name });\n            })])\n        ])\n      });\n      const chevron = spec.size > 1 ? Optional.none() : Optional.some(render$3('chevron-down', {\n        tag: 'div',\n        classes: ['tox-selectfield__icon-js']\n      }, providersBackstage.icons));\n      const selectWrap = {\n        dom: {\n          tag: 'div',\n          classes: ['tox-selectfield']\n        },\n        components: flatten([\n          [pField],\n          chevron.toArray()\n        ])\n      };\n      return FormField.sketch({\n        dom: {\n          tag: 'div',\n          classes: ['tox-form__group']\n        },\n        components: flatten([\n          pLabel.toArray(),\n          [selectWrap]\n        ]),\n        fieldBehaviours: derive$1([\n          Disabling.config({\n            disabled: () => !spec.enabled || providersBackstage.isDisabled(),\n            onDisabled: comp => {\n              FormField.getField(comp).each(Disabling.disable);\n            },\n            onEnabled: comp => {\n              FormField.getField(comp).each(Disabling.enable);\n            }\n          }),\n          receivingConfig()\n        ])\n      });\n    };\n\n    const schema$h = constant$1([\n      defaulted('field1Name', 'field1'),\n      defaulted('field2Name', 'field2'),\n      onStrictHandler('onLockedChange'),\n      markers$1(['lockClass']),\n      defaulted('locked', false),\n      SketchBehaviours.field('coupledFieldBehaviours', [\n        Composing,\n        Representing\n      ])\n    ]);\n    const getField = (comp, detail, partName) => getPart(comp, detail, partName).bind(Composing.getCurrent);\n    const coupledPart = (selfName, otherName) => required({\n      factory: FormField,\n      name: selfName,\n      overrides: detail => {\n        return {\n          fieldBehaviours: derive$1([config('coupled-input-behaviour', [run$1(input(), me => {\n                getField(me, detail, otherName).each(other => {\n                  getPart(me, detail, 'lock').each(lock => {\n                    if (Toggling.isOn(lock)) {\n                      detail.onLockedChange(me, other, lock);\n                    }\n                  });\n                });\n              })])])\n        };\n      }\n    });\n    const parts$c = constant$1([\n      coupledPart('field1', 'field2'),\n      coupledPart('field2', 'field1'),\n      required({\n        factory: Button,\n        schema: [required$1('dom')],\n        name: 'lock',\n        overrides: detail => {\n          return {\n            buttonBehaviours: derive$1([Toggling.config({\n                selected: detail.locked,\n                toggleClass: detail.markers.lockClass,\n                aria: { mode: 'pressed' }\n              })])\n          };\n        }\n      })\n    ]);\n\n    const factory$g = (detail, components, _spec, _externals) => ({\n      uid: detail.uid,\n      dom: detail.dom,\n      components,\n      behaviours: SketchBehaviours.augment(detail.coupledFieldBehaviours, [\n        Composing.config({ find: Optional.some }),\n        Representing.config({\n          store: {\n            mode: 'manual',\n            getValue: comp => {\n              const parts = getPartsOrDie(comp, detail, [\n                'field1',\n                'field2'\n              ]);\n              return {\n                [detail.field1Name]: Representing.getValue(parts.field1()),\n                [detail.field2Name]: Representing.getValue(parts.field2())\n              };\n            },\n            setValue: (comp, value) => {\n              const parts = getPartsOrDie(comp, detail, [\n                'field1',\n                'field2'\n              ]);\n              if (hasNonNullableKey(value, detail.field1Name)) {\n                Representing.setValue(parts.field1(), value[detail.field1Name]);\n              }\n              if (hasNonNullableKey(value, detail.field2Name)) {\n                Representing.setValue(parts.field2(), value[detail.field2Name]);\n              }\n            }\n          }\n        })\n      ]),\n      apis: {\n        getField1: component => getPart(component, detail, 'field1'),\n        getField2: component => getPart(component, detail, 'field2'),\n        getLock: component => getPart(component, detail, 'lock')\n      }\n    });\n    const FormCoupledInputs = composite({\n      name: 'FormCoupledInputs',\n      configFields: schema$h(),\n      partFields: parts$c(),\n      factory: factory$g,\n      apis: {\n        getField1: (apis, component) => apis.getField1(component),\n        getField2: (apis, component) => apis.getField2(component),\n        getLock: (apis, component) => apis.getLock(component)\n      }\n    });\n\n    const formatSize = size => {\n      const unitDec = {\n        '': 0,\n        'px': 0,\n        'pt': 1,\n        'mm': 1,\n        'pc': 2,\n        'ex': 2,\n        'em': 2,\n        'ch': 2,\n        'rem': 2,\n        'cm': 3,\n        'in': 4,\n        '%': 4\n      };\n      const maxDecimal = unit => unit in unitDec ? unitDec[unit] : 1;\n      let numText = size.value.toFixed(maxDecimal(size.unit));\n      if (numText.indexOf('.') !== -1) {\n        numText = numText.replace(/\\.?0*$/, '');\n      }\n      return numText + size.unit;\n    };\n    const parseSize = sizeText => {\n      const numPattern = /^\\s*(\\d+(?:\\.\\d+)?)\\s*(|cm|mm|in|px|pt|pc|em|ex|ch|rem|vw|vh|vmin|vmax|%)\\s*$/;\n      const match = numPattern.exec(sizeText);\n      if (match !== null) {\n        const value = parseFloat(match[1]);\n        const unit = match[2];\n        return Result.value({\n          value,\n          unit\n        });\n      } else {\n        return Result.error(sizeText);\n      }\n    };\n    const convertUnit = (size, unit) => {\n      const inInch = {\n        '': 96,\n        'px': 96,\n        'pt': 72,\n        'cm': 2.54,\n        'pc': 12,\n        'mm': 25.4,\n        'in': 1\n      };\n      const supported = u => has$2(inInch, u);\n      if (size.unit === unit) {\n        return Optional.some(size.value);\n      } else if (supported(size.unit) && supported(unit)) {\n        if (inInch[size.unit] === inInch[unit]) {\n          return Optional.some(size.value);\n        } else {\n          return Optional.some(size.value / inInch[size.unit] * inInch[unit]);\n        }\n      } else {\n        return Optional.none();\n      }\n    };\n    const noSizeConversion = _input => Optional.none();\n    const ratioSizeConversion = (scale, unit) => size => convertUnit(size, unit).map(value => ({\n      value: value * scale,\n      unit\n    }));\n    const makeRatioConverter = (currentFieldText, otherFieldText) => {\n      const cValue = parseSize(currentFieldText).toOptional();\n      const oValue = parseSize(otherFieldText).toOptional();\n      return lift2(cValue, oValue, (cSize, oSize) => convertUnit(cSize, oSize.unit).map(val => oSize.value / val).map(r => ratioSizeConversion(r, oSize.unit)).getOr(noSizeConversion)).getOr(noSizeConversion);\n    };\n\n    const renderSizeInput = (spec, providersBackstage) => {\n      let converter = noSizeConversion;\n      const ratioEvent = generate$6('ratio-event');\n      const makeIcon = iconName => render$3(iconName, {\n        tag: 'span',\n        classes: [\n          'tox-icon',\n          'tox-lock-icon__' + iconName\n        ]\n      }, providersBackstage.icons);\n      const pLock = FormCoupledInputs.parts.lock({\n        dom: {\n          tag: 'button',\n          classes: [\n            'tox-lock',\n            'tox-button',\n            'tox-button--naked',\n            'tox-button--icon'\n          ],\n          attributes: { title: providersBackstage.translate(spec.label.getOr('Constrain proportions')) }\n        },\n        components: [\n          makeIcon('lock'),\n          makeIcon('unlock')\n        ],\n        buttonBehaviours: derive$1([\n          Disabling.config({ disabled: () => !spec.enabled || providersBackstage.isDisabled() }),\n          receivingConfig(),\n          Tabstopping.config({})\n        ])\n      });\n      const formGroup = components => ({\n        dom: {\n          tag: 'div',\n          classes: ['tox-form__group']\n        },\n        components\n      });\n      const getFieldPart = isField1 => FormField.parts.field({\n        factory: Input,\n        inputClasses: ['tox-textfield'],\n        inputBehaviours: derive$1([\n          Disabling.config({ disabled: () => !spec.enabled || providersBackstage.isDisabled() }),\n          receivingConfig(),\n          Tabstopping.config({}),\n          config('size-input-events', [\n            run$1(focusin(), (component, _simulatedEvent) => {\n              emitWith(component, ratioEvent, { isField1 });\n            }),\n            run$1(change(), (component, _simulatedEvent) => {\n              emitWith(component, formChangeEvent, { name: spec.name });\n            })\n          ])\n        ]),\n        selectOnFocus: false\n      });\n      const getLabel = label => ({\n        dom: {\n          tag: 'label',\n          classes: ['tox-label']\n        },\n        components: [text$2(providersBackstage.translate(label))]\n      });\n      const widthField = FormCoupledInputs.parts.field1(formGroup([\n        FormField.parts.label(getLabel('Width')),\n        getFieldPart(true)\n      ]));\n      const heightField = FormCoupledInputs.parts.field2(formGroup([\n        FormField.parts.label(getLabel('Height')),\n        getFieldPart(false)\n      ]));\n      return FormCoupledInputs.sketch({\n        dom: {\n          tag: 'div',\n          classes: ['tox-form__group']\n        },\n        components: [{\n            dom: {\n              tag: 'div',\n              classes: ['tox-form__controls-h-stack']\n            },\n            components: [\n              widthField,\n              heightField,\n              formGroup([\n                getLabel(nbsp),\n                pLock\n              ])\n            ]\n          }],\n        field1Name: 'width',\n        field2Name: 'height',\n        locked: true,\n        markers: { lockClass: 'tox-locked' },\n        onLockedChange: (current, other, _lock) => {\n          parseSize(Representing.getValue(current)).each(size => {\n            converter(size).each(newSize => {\n              Representing.setValue(other, formatSize(newSize));\n            });\n          });\n        },\n        coupledFieldBehaviours: derive$1([\n          Disabling.config({\n            disabled: () => !spec.enabled || providersBackstage.isDisabled(),\n            onDisabled: comp => {\n              FormCoupledInputs.getField1(comp).bind(FormField.getField).each(Disabling.disable);\n              FormCoupledInputs.getField2(comp).bind(FormField.getField).each(Disabling.disable);\n              FormCoupledInputs.getLock(comp).each(Disabling.disable);\n            },\n            onEnabled: comp => {\n              FormCoupledInputs.getField1(comp).bind(FormField.getField).each(Disabling.enable);\n              FormCoupledInputs.getField2(comp).bind(FormField.getField).each(Disabling.enable);\n              FormCoupledInputs.getLock(comp).each(Disabling.enable);\n            }\n          }),\n          receivingConfig(),\n          config('size-input-events2', [run$1(ratioEvent, (component, simulatedEvent) => {\n              const isField1 = simulatedEvent.event.isField1;\n              const optCurrent = isField1 ? FormCoupledInputs.getField1(component) : FormCoupledInputs.getField2(component);\n              const optOther = isField1 ? FormCoupledInputs.getField2(component) : FormCoupledInputs.getField1(component);\n              const value1 = optCurrent.map(Representing.getValue).getOr('');\n              const value2 = optOther.map(Representing.getValue).getOr('');\n              converter = makeRatioConverter(value1, value2);\n            })])\n        ])\n      });\n    };\n\n    const renderSlider = (spec, providerBackstage, initialData) => {\n      const labelPart = Slider.parts.label({\n        dom: {\n          tag: 'label',\n          classes: ['tox-label']\n        },\n        components: [text$2(providerBackstage.translate(spec.label))]\n      });\n      const spectrum = Slider.parts.spectrum({\n        dom: {\n          tag: 'div',\n          classes: ['tox-slider__rail'],\n          attributes: { role: 'presentation' }\n        }\n      });\n      const thumb = Slider.parts.thumb({\n        dom: {\n          tag: 'div',\n          classes: ['tox-slider__handle'],\n          attributes: { role: 'presentation' }\n        }\n      });\n      return Slider.sketch({\n        dom: {\n          tag: 'div',\n          classes: ['tox-slider'],\n          attributes: { role: 'presentation' }\n        },\n        model: {\n          mode: 'x',\n          minX: spec.min,\n          maxX: spec.max,\n          getInitialValue: constant$1(initialData.getOrThunk(() => (Math.abs(spec.max) - Math.abs(spec.min)) / 2))\n        },\n        components: [\n          labelPart,\n          spectrum,\n          thumb\n        ],\n        sliderBehaviours: derive$1([\n          ComposingConfigs.self(),\n          Focusing.config({})\n        ]),\n        onChoose: (component, thumb, value) => {\n          emitWith(component, formChangeEvent, {\n            name: spec.name,\n            value\n          });\n        }\n      });\n    };\n\n    const renderTable = (spec, providersBackstage) => {\n      const renderTh = text => ({\n        dom: {\n          tag: 'th',\n          innerHtml: providersBackstage.translate(text)\n        }\n      });\n      const renderHeader = header => ({\n        dom: { tag: 'thead' },\n        components: [{\n            dom: { tag: 'tr' },\n            components: map$2(header, renderTh)\n          }]\n      });\n      const renderTd = text => ({\n        dom: {\n          tag: 'td',\n          innerHtml: providersBackstage.translate(text)\n        }\n      });\n      const renderTr = row => ({\n        dom: { tag: 'tr' },\n        components: map$2(row, renderTd)\n      });\n      const renderRows = rows => ({\n        dom: { tag: 'tbody' },\n        components: map$2(rows, renderTr)\n      });\n      return {\n        dom: {\n          tag: 'table',\n          classes: ['tox-dialog__table']\n        },\n        components: [\n          renderHeader(spec.header),\n          renderRows(spec.cells)\n        ],\n        behaviours: derive$1([\n          Tabstopping.config({}),\n          Focusing.config({})\n        ])\n      };\n    };\n\n    const renderTextField = (spec, providersBackstage) => {\n      const pLabel = spec.label.map(label => renderLabel$3(label, providersBackstage));\n      const baseInputBehaviours = [\n        Disabling.config({ disabled: () => spec.disabled || providersBackstage.isDisabled() }),\n        receivingConfig(),\n        Keying.config({\n          mode: 'execution',\n          useEnter: spec.multiline !== true,\n          useControlEnter: spec.multiline === true,\n          execute: comp => {\n            emit(comp, formSubmitEvent);\n            return Optional.some(true);\n          }\n        }),\n        config('textfield-change', [\n          run$1(input(), (component, _) => {\n            emitWith(component, formChangeEvent, { name: spec.name });\n          }),\n          run$1(postPaste(), (component, _) => {\n            emitWith(component, formChangeEvent, { name: spec.name });\n          })\n        ]),\n        Tabstopping.config({})\n      ];\n      const validatingBehaviours = spec.validation.map(vl => Invalidating.config({\n        getRoot: input => {\n          return parentElement(input.element);\n        },\n        invalidClass: 'tox-invalid',\n        validator: {\n          validate: input => {\n            const v = Representing.getValue(input);\n            const result = vl.validator(v);\n            return Future.pure(result === true ? Result.value(v) : Result.error(result));\n          },\n          validateOnLoad: vl.validateOnLoad\n        }\n      })).toArray();\n      const placeholder = spec.placeholder.fold(constant$1({}), p => ({ placeholder: providersBackstage.translate(p) }));\n      const inputMode = spec.inputMode.fold(constant$1({}), mode => ({ inputmode: mode }));\n      const inputAttributes = {\n        ...placeholder,\n        ...inputMode\n      };\n      const pField = FormField.parts.field({\n        tag: spec.multiline === true ? 'textarea' : 'input',\n        ...spec.data.map(data => ({ data })).getOr({}),\n        inputAttributes,\n        inputClasses: [spec.classname],\n        inputBehaviours: derive$1(flatten([\n          baseInputBehaviours,\n          validatingBehaviours\n        ])),\n        selectOnFocus: false,\n        factory: Input\n      });\n      const pTextField = spec.multiline ? {\n        dom: {\n          tag: 'div',\n          classes: ['tox-textarea-wrap']\n        },\n        components: [pField]\n      } : pField;\n      const extraClasses = spec.flex ? ['tox-form__group--stretched'] : [];\n      const extraClasses2 = extraClasses.concat(spec.maximized ? ['tox-form-group--maximize'] : []);\n      const extraBehaviours = [\n        Disabling.config({\n          disabled: () => spec.disabled || providersBackstage.isDisabled(),\n          onDisabled: comp => {\n            FormField.getField(comp).each(Disabling.disable);\n          },\n          onEnabled: comp => {\n            FormField.getField(comp).each(Disabling.enable);\n          }\n        }),\n        receivingConfig()\n      ];\n      return renderFormFieldWith(pLabel, pTextField, extraClasses2, extraBehaviours);\n    };\n    const renderInput = (spec, providersBackstage, initialData) => renderTextField({\n      name: spec.name,\n      multiline: false,\n      label: spec.label,\n      inputMode: spec.inputMode,\n      placeholder: spec.placeholder,\n      flex: false,\n      disabled: !spec.enabled,\n      classname: 'tox-textfield',\n      validation: Optional.none(),\n      maximized: spec.maximized,\n      data: initialData\n    }, providersBackstage);\n    const renderTextarea = (spec, providersBackstage, initialData) => renderTextField({\n      name: spec.name,\n      multiline: true,\n      label: spec.label,\n      inputMode: Optional.none(),\n      placeholder: spec.placeholder,\n      flex: true,\n      disabled: !spec.enabled,\n      classname: 'tox-textarea',\n      validation: Optional.none(),\n      maximized: spec.maximized,\n      data: initialData\n    }, providersBackstage);\n\n    const getAnimationRoot = (component, slideConfig) => slideConfig.getAnimationRoot.fold(() => component.element, get => get(component));\n\n    const getDimensionProperty = slideConfig => slideConfig.dimension.property;\n    const getDimension = (slideConfig, elem) => slideConfig.dimension.getDimension(elem);\n    const disableTransitions = (component, slideConfig) => {\n      const root = getAnimationRoot(component, slideConfig);\n      remove$1(root, [\n        slideConfig.shrinkingClass,\n        slideConfig.growingClass\n      ]);\n    };\n    const setShrunk = (component, slideConfig) => {\n      remove$2(component.element, slideConfig.openClass);\n      add$2(component.element, slideConfig.closedClass);\n      set$8(component.element, getDimensionProperty(slideConfig), '0px');\n      reflow(component.element);\n    };\n    const setGrown = (component, slideConfig) => {\n      remove$2(component.element, slideConfig.closedClass);\n      add$2(component.element, slideConfig.openClass);\n      remove$6(component.element, getDimensionProperty(slideConfig));\n    };\n    const doImmediateShrink = (component, slideConfig, slideState, _calculatedSize) => {\n      slideState.setCollapsed();\n      set$8(component.element, getDimensionProperty(slideConfig), getDimension(slideConfig, component.element));\n      disableTransitions(component, slideConfig);\n      setShrunk(component, slideConfig);\n      slideConfig.onStartShrink(component);\n      slideConfig.onShrunk(component);\n    };\n    const doStartShrink = (component, slideConfig, slideState, calculatedSize) => {\n      const size = calculatedSize.getOrThunk(() => getDimension(slideConfig, component.element));\n      slideState.setCollapsed();\n      set$8(component.element, getDimensionProperty(slideConfig), size);\n      reflow(component.element);\n      const root = getAnimationRoot(component, slideConfig);\n      remove$2(root, slideConfig.growingClass);\n      add$2(root, slideConfig.shrinkingClass);\n      setShrunk(component, slideConfig);\n      slideConfig.onStartShrink(component);\n    };\n    const doStartSmartShrink = (component, slideConfig, slideState) => {\n      const size = getDimension(slideConfig, component.element);\n      const shrinker = size === '0px' ? doImmediateShrink : doStartShrink;\n      shrinker(component, slideConfig, slideState, Optional.some(size));\n    };\n    const doStartGrow = (component, slideConfig, slideState) => {\n      const root = getAnimationRoot(component, slideConfig);\n      const wasShrinking = has(root, slideConfig.shrinkingClass);\n      const beforeSize = getDimension(slideConfig, component.element);\n      setGrown(component, slideConfig);\n      const fullSize = getDimension(slideConfig, component.element);\n      const startPartialGrow = () => {\n        set$8(component.element, getDimensionProperty(slideConfig), beforeSize);\n        reflow(component.element);\n      };\n      const startCompleteGrow = () => {\n        setShrunk(component, slideConfig);\n      };\n      const setStartSize = wasShrinking ? startPartialGrow : startCompleteGrow;\n      setStartSize();\n      remove$2(root, slideConfig.shrinkingClass);\n      add$2(root, slideConfig.growingClass);\n      setGrown(component, slideConfig);\n      set$8(component.element, getDimensionProperty(slideConfig), fullSize);\n      slideState.setExpanded();\n      slideConfig.onStartGrow(component);\n    };\n    const refresh$4 = (component, slideConfig, slideState) => {\n      if (slideState.isExpanded()) {\n        remove$6(component.element, getDimensionProperty(slideConfig));\n        const fullSize = getDimension(slideConfig, component.element);\n        set$8(component.element, getDimensionProperty(slideConfig), fullSize);\n      }\n    };\n    const grow = (component, slideConfig, slideState) => {\n      if (!slideState.isExpanded()) {\n        doStartGrow(component, slideConfig, slideState);\n      }\n    };\n    const shrink = (component, slideConfig, slideState) => {\n      if (slideState.isExpanded()) {\n        doStartSmartShrink(component, slideConfig, slideState);\n      }\n    };\n    const immediateShrink = (component, slideConfig, slideState) => {\n      if (slideState.isExpanded()) {\n        doImmediateShrink(component, slideConfig, slideState);\n      }\n    };\n    const hasGrown = (component, slideConfig, slideState) => slideState.isExpanded();\n    const hasShrunk = (component, slideConfig, slideState) => slideState.isCollapsed();\n    const isGrowing = (component, slideConfig, _slideState) => {\n      const root = getAnimationRoot(component, slideConfig);\n      return has(root, slideConfig.growingClass) === true;\n    };\n    const isShrinking = (component, slideConfig, _slideState) => {\n      const root = getAnimationRoot(component, slideConfig);\n      return has(root, slideConfig.shrinkingClass) === true;\n    };\n    const isTransitioning = (component, slideConfig, slideState) => isGrowing(component, slideConfig) || isShrinking(component, slideConfig);\n    const toggleGrow = (component, slideConfig, slideState) => {\n      const f = slideState.isExpanded() ? doStartSmartShrink : doStartGrow;\n      f(component, slideConfig, slideState);\n    };\n    const immediateGrow = (component, slideConfig, slideState) => {\n      if (!slideState.isExpanded()) {\n        setGrown(component, slideConfig);\n        set$8(component.element, getDimensionProperty(slideConfig), getDimension(slideConfig, component.element));\n        disableTransitions(component, slideConfig);\n        slideState.setExpanded();\n        slideConfig.onStartGrow(component);\n        slideConfig.onGrown(component);\n      }\n    };\n\n    var SlidingApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        refresh: refresh$4,\n        grow: grow,\n        shrink: shrink,\n        immediateShrink: immediateShrink,\n        hasGrown: hasGrown,\n        hasShrunk: hasShrunk,\n        isGrowing: isGrowing,\n        isShrinking: isShrinking,\n        isTransitioning: isTransitioning,\n        toggleGrow: toggleGrow,\n        disableTransitions: disableTransitions,\n        immediateGrow: immediateGrow\n    });\n\n    const exhibit = (base, slideConfig, _slideState) => {\n      const expanded = slideConfig.expanded;\n      return expanded ? nu$7({\n        classes: [slideConfig.openClass],\n        styles: {}\n      }) : nu$7({\n        classes: [slideConfig.closedClass],\n        styles: wrap$1(slideConfig.dimension.property, '0px')\n      });\n    };\n    const events$6 = (slideConfig, slideState) => derive$2([runOnSource(transitionend(), (component, simulatedEvent) => {\n        const raw = simulatedEvent.event.raw;\n        if (raw.propertyName === slideConfig.dimension.property) {\n          disableTransitions(component, slideConfig);\n          if (slideState.isExpanded()) {\n            remove$6(component.element, slideConfig.dimension.property);\n          }\n          const notify = slideState.isExpanded() ? slideConfig.onGrown : slideConfig.onShrunk;\n          notify(component);\n        }\n      })]);\n\n    var ActiveSliding = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        exhibit: exhibit,\n        events: events$6\n    });\n\n    var SlidingSchema = [\n      required$1('closedClass'),\n      required$1('openClass'),\n      required$1('shrinkingClass'),\n      required$1('growingClass'),\n      option$3('getAnimationRoot'),\n      onHandler('onShrunk'),\n      onHandler('onStartShrink'),\n      onHandler('onGrown'),\n      onHandler('onStartGrow'),\n      defaulted('expanded', false),\n      requiredOf('dimension', choose$1('property', {\n        width: [\n          output$1('property', 'width'),\n          output$1('getDimension', elem => get$c(elem) + 'px')\n        ],\n        height: [\n          output$1('property', 'height'),\n          output$1('getDimension', elem => get$d(elem) + 'px')\n        ]\n      }))\n    ];\n\n    const init$9 = spec => {\n      const state = Cell(spec.expanded);\n      const readState = () => 'expanded: ' + state.get();\n      return nu$8({\n        isExpanded: () => state.get() === true,\n        isCollapsed: () => state.get() === false,\n        setCollapsed: curry(state.set, false),\n        setExpanded: curry(state.set, true),\n        readState\n      });\n    };\n\n    var SlidingState = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        init: init$9\n    });\n\n    const Sliding = create$4({\n      fields: SlidingSchema,\n      name: 'sliding',\n      active: ActiveSliding,\n      apis: SlidingApis,\n      state: SlidingState\n    });\n\n    const getMenuButtonApi = component => ({\n      isEnabled: () => !Disabling.isDisabled(component),\n      setEnabled: state => Disabling.set(component, !state),\n      setActive: state => {\n        const elm = component.element;\n        if (state) {\n          add$2(elm, 'tox-tbtn--enabled');\n          set$9(elm, 'aria-pressed', true);\n        } else {\n          remove$2(elm, 'tox-tbtn--enabled');\n          remove$7(elm, 'aria-pressed');\n        }\n      },\n      isActive: () => has(component.element, 'tox-tbtn--enabled'),\n      setText: text => {\n        emitWith(component, updateMenuText, { text });\n      },\n      setIcon: icon => emitWith(component, updateMenuIcon, { icon })\n    });\n    const renderMenuButton = (spec, prefix, backstage, role, tabstopping = true) => {\n      return renderCommonDropdown({\n        text: spec.text,\n        icon: spec.icon,\n        tooltip: spec.tooltip,\n        searchable: spec.search.isSome(),\n        role,\n        fetch: (dropdownComp, callback) => {\n          const fetchContext = { pattern: spec.search.isSome() ? getSearchPattern(dropdownComp) : '' };\n          spec.fetch(items => {\n            callback(build(items, ItemResponse$1.CLOSE_ON_EXECUTE, backstage, {\n              isHorizontalMenu: false,\n              search: spec.search\n            }));\n          }, fetchContext, getMenuButtonApi(dropdownComp));\n        },\n        onSetup: spec.onSetup,\n        getApi: getMenuButtonApi,\n        columns: 1,\n        presets: 'normal',\n        classes: [],\n        dropdownBehaviours: [...tabstopping ? [Tabstopping.config({})] : []]\n      }, prefix, backstage.shared);\n    };\n    const getFetch = (items, getButton, backstage) => {\n      const getMenuItemAction = item => api => {\n        const newValue = !api.isActive();\n        api.setActive(newValue);\n        item.storage.set(newValue);\n        backstage.shared.getSink().each(sink => {\n          getButton().getOpt(sink).each(orig => {\n            focus$3(orig.element);\n            emitWith(orig, formActionEvent, {\n              name: item.name,\n              value: item.storage.get()\n            });\n          });\n        });\n      };\n      const getMenuItemSetup = item => api => {\n        api.setActive(item.storage.get());\n      };\n      return success => {\n        success(map$2(items, item => {\n          const text = item.text.fold(() => ({}), text => ({ text }));\n          return {\n            type: item.type,\n            active: false,\n            ...text,\n            onAction: getMenuItemAction(item),\n            onSetup: getMenuItemSetup(item)\n          };\n        }));\n      };\n    };\n\n    const renderLabel = text => ({\n      dom: {\n        tag: 'span',\n        classes: ['tox-tree__label'],\n        attributes: {\n          'title': text,\n          'aria-label': text\n        }\n      },\n      components: [text$2(text)]\n    });\n    const leafLabelEventsId = generate$6('leaf-label-event-id');\n    const renderLeafLabel = ({leaf, onLeafAction, visible, treeId, selectedId, backstage}) => {\n      const internalMenuButton = leaf.menu.map(btn => renderMenuButton(btn, 'tox-mbtn', backstage, Optional.none(), visible));\n      const components = [renderLabel(leaf.title)];\n      internalMenuButton.each(btn => components.push(btn));\n      return Button.sketch({\n        dom: {\n          tag: 'div',\n          classes: [\n            'tox-tree--leaf__label',\n            'tox-trbtn'\n          ].concat(visible ? ['tox-tree--leaf__label--visible'] : [])\n        },\n        components,\n        role: 'treeitem',\n        action: button => {\n          onLeafAction(leaf.id);\n          button.getSystem().broadcastOn([`update-active-item-${ treeId }`], { value: leaf.id });\n        },\n        eventOrder: {\n          [keydown()]: [\n            leafLabelEventsId,\n            'keying'\n          ]\n        },\n        buttonBehaviours: derive$1([\n          ...visible ? [Tabstopping.config({})] : [],\n          Toggling.config({\n            toggleClass: 'tox-trbtn--enabled',\n            toggleOnExecute: false,\n            aria: { mode: 'selected' }\n          }),\n          Receiving.config({\n            channels: {\n              [`update-active-item-${ treeId }`]: {\n                onReceive: (comp, message) => {\n                  (message.value === leaf.id ? Toggling.on : Toggling.off)(comp);\n                }\n              }\n            }\n          }),\n          config(leafLabelEventsId, [\n            runOnAttached((comp, _se) => {\n              selectedId.each(id => {\n                const toggle = id === leaf.id ? Toggling.on : Toggling.off;\n                toggle(comp);\n              });\n            }),\n            run$1(keydown(), (comp, se) => {\n              const isLeftArrowKey = se.event.raw.code === 'ArrowLeft';\n              const isRightArrowKey = se.event.raw.code === 'ArrowRight';\n              if (isLeftArrowKey) {\n                ancestor(comp.element, '.tox-tree--directory').each(dirElement => {\n                  comp.getSystem().getByDom(dirElement).each(dirComp => {\n                    child(dirElement, '.tox-tree--directory__label').each(dirLabelElement => {\n                      dirComp.getSystem().getByDom(dirLabelElement).each(Focusing.focus);\n                    });\n                  });\n                });\n                se.stop();\n              } else if (isRightArrowKey) {\n                se.stop();\n              }\n            })\n          ])\n        ])\n      });\n    };\n    const renderIcon = (iconName, iconsProvider, behaviours) => render$3(iconName, {\n      tag: 'span',\n      classes: [\n        'tox-tree__icon-wrap',\n        'tox-icon'\n      ],\n      behaviours\n    }, iconsProvider);\n    const renderIconFromPack = (iconName, iconsProvider) => renderIcon(iconName, iconsProvider, []);\n    const directoryLabelEventsId = generate$6('directory-label-event-id');\n    const renderDirectoryLabel = ({directory, visible, noChildren, backstage}) => {\n      const internalMenuButton = directory.menu.map(btn => renderMenuButton(btn, 'tox-mbtn', backstage, Optional.none()));\n      const components = [\n        {\n          dom: {\n            tag: 'div',\n            classes: ['tox-chevron']\n          },\n          components: [renderIconFromPack('chevron-right', backstage.shared.providers.icons)]\n        },\n        renderLabel(directory.title)\n      ];\n      internalMenuButton.each(btn => {\n        components.push(btn);\n      });\n      const toggleExpandChildren = button => {\n        ancestor(button.element, '.tox-tree--directory').each(directoryEle => {\n          button.getSystem().getByDom(directoryEle).each(directoryComp => {\n            const willExpand = !Toggling.isOn(directoryComp);\n            Toggling.toggle(directoryComp);\n            emitWith(button, 'expand-tree-node', {\n              expanded: willExpand,\n              node: directory.id\n            });\n          });\n        });\n      };\n      return Button.sketch({\n        dom: {\n          tag: 'div',\n          classes: [\n            'tox-tree--directory__label',\n            'tox-trbtn'\n          ].concat(visible ? ['tox-tree--directory__label--visible'] : [])\n        },\n        components,\n        action: toggleExpandChildren,\n        eventOrder: {\n          [keydown()]: [\n            directoryLabelEventsId,\n            'keying'\n          ]\n        },\n        buttonBehaviours: derive$1([\n          ...visible ? [Tabstopping.config({})] : [],\n          config(directoryLabelEventsId, [run$1(keydown(), (comp, se) => {\n              const isRightArrowKey = se.event.raw.code === 'ArrowRight';\n              const isLeftArrowKey = se.event.raw.code === 'ArrowLeft';\n              if (isRightArrowKey && noChildren) {\n                se.stop();\n              }\n              if (isRightArrowKey || isLeftArrowKey) {\n                ancestor(comp.element, '.tox-tree--directory').each(directoryEle => {\n                  comp.getSystem().getByDom(directoryEle).each(directoryComp => {\n                    if (!Toggling.isOn(directoryComp) && isRightArrowKey || Toggling.isOn(directoryComp) && isLeftArrowKey) {\n                      toggleExpandChildren(comp);\n                      se.stop();\n                    } else if (isLeftArrowKey && !Toggling.isOn(directoryComp)) {\n                      ancestor(directoryComp.element, '.tox-tree--directory').each(parentDirElement => {\n                        child(parentDirElement, '.tox-tree--directory__label').each(parentDirLabelElement => {\n                          directoryComp.getSystem().getByDom(parentDirLabelElement).each(Focusing.focus);\n                        });\n                      });\n                      se.stop();\n                    }\n                  });\n                });\n              }\n            })])\n        ])\n      });\n    };\n    const renderDirectoryChildren = ({children, onLeafAction, visible, treeId, expandedIds, selectedId, backstage}) => {\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-tree--directory__children']\n        },\n        components: children.map(item => {\n          return item.type === 'leaf' ? renderLeafLabel({\n            leaf: item,\n            selectedId,\n            onLeafAction,\n            visible,\n            treeId,\n            backstage\n          }) : renderDirectory({\n            directory: item,\n            expandedIds,\n            selectedId,\n            onLeafAction,\n            labelTabstopping: visible,\n            treeId,\n            backstage\n          });\n        }),\n        behaviours: derive$1([\n          Sliding.config({\n            dimension: { property: 'height' },\n            closedClass: 'tox-tree--directory__children--closed',\n            openClass: 'tox-tree--directory__children--open',\n            growingClass: 'tox-tree--directory__children--growing',\n            shrinkingClass: 'tox-tree--directory__children--shrinking',\n            expanded: visible\n          }),\n          Replacing.config({})\n        ])\n      };\n    };\n    const directoryEventsId = generate$6('directory-event-id');\n    const renderDirectory = ({directory, onLeafAction, labelTabstopping, treeId, backstage, expandedIds, selectedId}) => {\n      const {children} = directory;\n      const expandedIdsCell = Cell(expandedIds);\n      const computedChildrenComponents = visible => children.map(item => {\n        return item.type === 'leaf' ? renderLeafLabel({\n          leaf: item,\n          selectedId,\n          onLeafAction,\n          visible,\n          treeId,\n          backstage\n        }) : renderDirectory({\n          directory: item,\n          expandedIds: expandedIdsCell.get(),\n          selectedId,\n          onLeafAction,\n          labelTabstopping: visible,\n          treeId,\n          backstage\n        });\n      });\n      const childrenVisible = expandedIds.includes(directory.id);\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-tree--directory'],\n          attributes: { role: 'treeitem' }\n        },\n        components: [\n          renderDirectoryLabel({\n            directory,\n            visible: labelTabstopping,\n            noChildren: directory.children.length === 0,\n            backstage\n          }),\n          renderDirectoryChildren({\n            children,\n            expandedIds,\n            selectedId,\n            onLeafAction,\n            visible: childrenVisible,\n            treeId,\n            backstage\n          })\n        ],\n        behaviours: derive$1([\n          config(directoryEventsId, [\n            runOnAttached((comp, _se) => {\n              Toggling.set(comp, childrenVisible);\n            }),\n            run$1('expand-tree-node', (_cmp, se) => {\n              const {expanded, node} = se.event;\n              expandedIdsCell.set(expanded ? [\n                ...expandedIdsCell.get(),\n                node\n              ] : expandedIdsCell.get().filter(id => id !== node));\n            })\n          ]),\n          Toggling.config({\n            ...directory.children.length > 0 ? { aria: { mode: 'expanded' } } : {},\n            toggleClass: 'tox-tree--directory--expanded',\n            onToggled: (comp, childrenVisible) => {\n              const childrenComp = comp.components()[1];\n              const newChildren = computedChildrenComponents(childrenVisible);\n              if (childrenVisible) {\n                Sliding.grow(childrenComp);\n              } else {\n                Sliding.shrink(childrenComp);\n              }\n              Replacing.set(childrenComp, newChildren);\n            }\n          })\n        ])\n      };\n    };\n    const treeEventsId = generate$6('tree-event-id');\n    const renderTree = (spec, backstage) => {\n      const onLeafAction = spec.onLeafAction.getOr(noop);\n      const onToggleExpand = spec.onToggleExpand.getOr(noop);\n      const defaultExpandedIds = spec.defaultExpandedIds;\n      const expandedIds = Cell(defaultExpandedIds);\n      const selectedIdCell = Cell(spec.defaultSelectedId);\n      const treeId = generate$6('tree-id');\n      const children = (selectedId, expandedIds) => spec.items.map(item => {\n        return item.type === 'leaf' ? renderLeafLabel({\n          leaf: item,\n          selectedId,\n          onLeafAction,\n          visible: true,\n          treeId,\n          backstage\n        }) : renderDirectory({\n          directory: item,\n          selectedId,\n          onLeafAction,\n          expandedIds,\n          labelTabstopping: true,\n          treeId,\n          backstage\n        });\n      });\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-tree'],\n          attributes: { role: 'tree' }\n        },\n        components: children(selectedIdCell.get(), expandedIds.get()),\n        behaviours: derive$1([\n          Keying.config({\n            mode: 'flow',\n            selector: '.tox-tree--leaf__label--visible, .tox-tree--directory__label--visible',\n            cycles: false\n          }),\n          config(treeEventsId, [run$1('expand-tree-node', (_cmp, se) => {\n              const {expanded, node} = se.event;\n              expandedIds.set(expanded ? [\n                ...expandedIds.get(),\n                node\n              ] : expandedIds.get().filter(id => id !== node));\n              onToggleExpand(expandedIds.get(), {\n                expanded,\n                node\n              });\n            })]),\n          Receiving.config({\n            channels: {\n              [`update-active-item-${ treeId }`]: {\n                onReceive: (comp, message) => {\n                  selectedIdCell.set(Optional.some(message.value));\n                  Replacing.set(comp, children(Optional.some(message.value), expandedIds.get()));\n                }\n              }\n            }\n          }),\n          Replacing.config({})\n        ])\n      };\n    };\n\n    const events$5 = (streamConfig, streamState) => {\n      const streams = streamConfig.stream.streams;\n      const processor = streams.setup(streamConfig, streamState);\n      return derive$2([\n        run$1(streamConfig.event, processor),\n        runOnDetached(() => streamState.cancel())\n      ].concat(streamConfig.cancelEvent.map(e => [run$1(e, () => streamState.cancel())]).getOr([])));\n    };\n\n    var ActiveStreaming = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        events: events$5\n    });\n\n    const throttle = _config => {\n      const state = Cell(null);\n      const readState = () => ({ timer: state.get() !== null ? 'set' : 'unset' });\n      const setTimer = t => {\n        state.set(t);\n      };\n      const cancel = () => {\n        const t = state.get();\n        if (t !== null) {\n          t.cancel();\n        }\n      };\n      return nu$8({\n        readState,\n        setTimer,\n        cancel\n      });\n    };\n    const init$8 = spec => spec.stream.streams.state(spec);\n\n    var StreamingState = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        throttle: throttle,\n        init: init$8\n    });\n\n    const setup$c = (streamInfo, streamState) => {\n      const sInfo = streamInfo.stream;\n      const throttler = last(streamInfo.onStream, sInfo.delay);\n      streamState.setTimer(throttler);\n      return (component, simulatedEvent) => {\n        throttler.throttle(component, simulatedEvent);\n        if (sInfo.stopEvent) {\n          simulatedEvent.stop();\n        }\n      };\n    };\n    var StreamingSchema = [\n      requiredOf('stream', choose$1('mode', {\n        throttle: [\n          required$1('delay'),\n          defaulted('stopEvent', true),\n          output$1('streams', {\n            setup: setup$c,\n            state: throttle\n          })\n        ]\n      })),\n      defaulted('event', 'input'),\n      option$3('cancelEvent'),\n      onStrictHandler('onStream')\n    ];\n\n    const Streaming = create$4({\n      fields: StreamingSchema,\n      name: 'streaming',\n      active: ActiveStreaming,\n      state: StreamingState\n    });\n\n    const setValueFromItem = (model, input, item) => {\n      const itemData = Representing.getValue(item);\n      Representing.setValue(input, itemData);\n      setCursorAtEnd(input);\n    };\n    const setSelectionOn = (input, f) => {\n      const el = input.element;\n      const value = get$6(el);\n      const node = el.dom;\n      if (get$f(el, 'type') !== 'number') {\n        f(node, value);\n      }\n    };\n    const setCursorAtEnd = input => {\n      setSelectionOn(input, (node, value) => node.setSelectionRange(value.length, value.length));\n    };\n    const setSelectionToEnd = (input, startOffset) => {\n      setSelectionOn(input, (node, value) => node.setSelectionRange(startOffset, value.length));\n    };\n    const attemptSelectOver = (model, input, item) => {\n      if (!model.selectsOver) {\n        return Optional.none();\n      } else {\n        const currentValue = Representing.getValue(input);\n        const inputDisplay = model.getDisplayText(currentValue);\n        const itemValue = Representing.getValue(item);\n        const itemDisplay = model.getDisplayText(itemValue);\n        return itemDisplay.indexOf(inputDisplay) === 0 ? Optional.some(() => {\n          setValueFromItem(model, input, item);\n          setSelectionToEnd(input, inputDisplay.length);\n        }) : Optional.none();\n      }\n    };\n\n    const itemExecute = constant$1('alloy.typeahead.itemexecute');\n\n    const make$3 = (detail, components, spec, externals) => {\n      const navigateList = (comp, simulatedEvent, highlighter) => {\n        detail.previewing.set(false);\n        const sandbox = Coupling.getCoupled(comp, 'sandbox');\n        if (Sandboxing.isOpen(sandbox)) {\n          Composing.getCurrent(sandbox).each(menu => {\n            Highlighting.getHighlighted(menu).fold(() => {\n              highlighter(menu);\n            }, () => {\n              dispatchEvent(sandbox, menu.element, 'keydown', simulatedEvent);\n            });\n          });\n        } else {\n          const onOpenSync = sandbox => {\n            Composing.getCurrent(sandbox).each(highlighter);\n          };\n          open(detail, mapFetch(comp), comp, sandbox, externals, onOpenSync, HighlightOnOpen.HighlightMenuAndItem).get(noop);\n        }\n      };\n      const focusBehaviours$1 = focusBehaviours(detail);\n      const mapFetch = comp => tdata => tdata.map(data => {\n        const menus = values(data.menus);\n        const items = bind$3(menus, menu => filter$2(menu.items, item => item.type === 'item'));\n        const repState = Representing.getState(comp);\n        repState.update(map$2(items, item => item.data));\n        return data;\n      });\n      const getActiveMenu = sandboxComp => Composing.getCurrent(sandboxComp);\n      const typeaheadCustomEvents = 'typeaheadevents';\n      const behaviours = [\n        Focusing.config({}),\n        Representing.config({\n          onSetValue: detail.onSetValue,\n          store: {\n            mode: 'dataset',\n            getDataKey: comp => get$6(comp.element),\n            getFallbackEntry: itemString => ({\n              value: itemString,\n              meta: {}\n            }),\n            setValue: (comp, data) => {\n              set$5(comp.element, detail.model.getDisplayText(data));\n            },\n            ...detail.initialData.map(d => wrap$1('initialValue', d)).getOr({})\n          }\n        }),\n        Streaming.config({\n          stream: {\n            mode: 'throttle',\n            delay: detail.responseTime,\n            stopEvent: false\n          },\n          onStream: (component, _simulatedEvent) => {\n            const sandbox = Coupling.getCoupled(component, 'sandbox');\n            const focusInInput = Focusing.isFocused(component);\n            if (focusInInput) {\n              if (get$6(component.element).length >= detail.minChars) {\n                const previousValue = getActiveMenu(sandbox).bind(activeMenu => Highlighting.getHighlighted(activeMenu).map(Representing.getValue));\n                detail.previewing.set(true);\n                const onOpenSync = _sandbox => {\n                  getActiveMenu(sandbox).each(activeMenu => {\n                    previousValue.fold(() => {\n                      if (detail.model.selectsOver) {\n                        Highlighting.highlightFirst(activeMenu);\n                      }\n                    }, pv => {\n                      Highlighting.highlightBy(activeMenu, item => {\n                        const itemData = Representing.getValue(item);\n                        return itemData.value === pv.value;\n                      });\n                      Highlighting.getHighlighted(activeMenu).orThunk(() => {\n                        Highlighting.highlightFirst(activeMenu);\n                        return Optional.none();\n                      });\n                    });\n                  });\n                };\n                open(detail, mapFetch(component), component, sandbox, externals, onOpenSync, HighlightOnOpen.HighlightJustMenu).get(noop);\n              }\n            }\n          },\n          cancelEvent: typeaheadCancel()\n        }),\n        Keying.config({\n          mode: 'special',\n          onDown: (comp, simulatedEvent) => {\n            navigateList(comp, simulatedEvent, Highlighting.highlightFirst);\n            return Optional.some(true);\n          },\n          onEscape: comp => {\n            const sandbox = Coupling.getCoupled(comp, 'sandbox');\n            if (Sandboxing.isOpen(sandbox)) {\n              Sandboxing.close(sandbox);\n              return Optional.some(true);\n            }\n            return Optional.none();\n          },\n          onUp: (comp, simulatedEvent) => {\n            navigateList(comp, simulatedEvent, Highlighting.highlightLast);\n            return Optional.some(true);\n          },\n          onEnter: comp => {\n            const sandbox = Coupling.getCoupled(comp, 'sandbox');\n            const sandboxIsOpen = Sandboxing.isOpen(sandbox);\n            if (sandboxIsOpen && !detail.previewing.get()) {\n              return getActiveMenu(sandbox).bind(activeMenu => Highlighting.getHighlighted(activeMenu)).map(item => {\n                emitWith(comp, itemExecute(), { item });\n                return true;\n              });\n            } else {\n              const currentValue = Representing.getValue(comp);\n              emit(comp, typeaheadCancel());\n              detail.onExecute(sandbox, comp, currentValue);\n              if (sandboxIsOpen) {\n                Sandboxing.close(sandbox);\n              }\n              return Optional.some(true);\n            }\n          }\n        }),\n        Toggling.config({\n          toggleClass: detail.markers.openClass,\n          aria: { mode: 'expanded' }\n        }),\n        Coupling.config({\n          others: {\n            sandbox: hotspot => {\n              return makeSandbox$1(detail, hotspot, {\n                onOpen: () => Toggling.on(hotspot),\n                onClose: () => {\n                  detail.lazyTypeaheadComp.get().each(input => remove$7(input.element, 'aria-activedescendant'));\n                  Toggling.off(hotspot);\n                }\n              });\n            }\n          }\n        }),\n        config(typeaheadCustomEvents, [\n          runOnAttached(typeaheadComp => {\n            detail.lazyTypeaheadComp.set(Optional.some(typeaheadComp));\n          }),\n          runOnDetached(_typeaheadComp => {\n            detail.lazyTypeaheadComp.set(Optional.none());\n          }),\n          runOnExecute$1(comp => {\n            const onOpenSync = noop;\n            togglePopup(detail, mapFetch(comp), comp, externals, onOpenSync, HighlightOnOpen.HighlightMenuAndItem).get(noop);\n          }),\n          run$1(itemExecute(), (comp, se) => {\n            const sandbox = Coupling.getCoupled(comp, 'sandbox');\n            setValueFromItem(detail.model, comp, se.event.item);\n            emit(comp, typeaheadCancel());\n            detail.onItemExecute(comp, sandbox, se.event.item, Representing.getValue(comp));\n            Sandboxing.close(sandbox);\n            setCursorAtEnd(comp);\n          })\n        ].concat(detail.dismissOnBlur ? [run$1(postBlur(), typeahead => {\n            const sandbox = Coupling.getCoupled(typeahead, 'sandbox');\n            if (search(sandbox.element).isNone()) {\n              Sandboxing.close(sandbox);\n            }\n          })] : []))\n      ];\n      const eventOrder = {\n        [detachedFromDom()]: [\n          Representing.name(),\n          Streaming.name(),\n          typeaheadCustomEvents\n        ],\n        ...detail.eventOrder\n      };\n      return {\n        uid: detail.uid,\n        dom: dom(deepMerge(detail, {\n          inputAttributes: {\n            'role': 'combobox',\n            'aria-autocomplete': 'list',\n            'aria-haspopup': 'true'\n          }\n        })),\n        behaviours: {\n          ...focusBehaviours$1,\n          ...augment(detail.typeaheadBehaviours, behaviours)\n        },\n        eventOrder\n      };\n    };\n\n    const schema$g = constant$1([\n      option$3('lazySink'),\n      required$1('fetch'),\n      defaulted('minChars', 5),\n      defaulted('responseTime', 1000),\n      onHandler('onOpen'),\n      defaulted('getHotspot', Optional.some),\n      defaulted('getAnchorOverrides', constant$1({})),\n      defaulted('layouts', Optional.none()),\n      defaulted('eventOrder', {}),\n      defaultedObjOf('model', {}, [\n        defaulted('getDisplayText', itemData => itemData.meta !== undefined && itemData.meta.text !== undefined ? itemData.meta.text : itemData.value),\n        defaulted('selectsOver', true),\n        defaulted('populateFromBrowse', true)\n      ]),\n      onHandler('onSetValue'),\n      onKeyboardHandler('onExecute'),\n      onHandler('onItemExecute'),\n      defaulted('inputClasses', []),\n      defaulted('inputAttributes', {}),\n      defaulted('inputStyles', {}),\n      defaulted('matchWidth', true),\n      defaulted('useMinWidth', false),\n      defaulted('dismissOnBlur', true),\n      markers$1(['openClass']),\n      option$3('initialData'),\n      field('typeaheadBehaviours', [\n        Focusing,\n        Representing,\n        Streaming,\n        Keying,\n        Toggling,\n        Coupling\n      ]),\n      customField('lazyTypeaheadComp', () => Cell(Optional.none)),\n      customField('previewing', () => Cell(true))\n    ].concat(schema$l()).concat(sandboxFields()));\n    const parts$b = constant$1([external({\n        schema: [tieredMenuMarkers()],\n        name: 'menu',\n        overrides: detail => {\n          return {\n            fakeFocus: true,\n            onHighlightItem: (_tmenu, menu, item) => {\n              if (!detail.previewing.get()) {\n                detail.lazyTypeaheadComp.get().each(input => {\n                  if (detail.model.populateFromBrowse) {\n                    setValueFromItem(detail.model, input, item);\n                  }\n                  getOpt(item.element, 'id').each(id => set$9(input.element, 'aria-activedescendant', id));\n                });\n              } else {\n                detail.lazyTypeaheadComp.get().each(input => {\n                  attemptSelectOver(detail.model, input, item).fold(() => {\n                    if (detail.model.selectsOver) {\n                      Highlighting.dehighlight(menu, item);\n                      detail.previewing.set(true);\n                    } else {\n                      detail.previewing.set(false);\n                    }\n                  }, selectOverTextInInput => {\n                    selectOverTextInInput();\n                    detail.previewing.set(false);\n                  });\n                });\n              }\n            },\n            onExecute: (_menu, item) => {\n              return detail.lazyTypeaheadComp.get().map(typeahead => {\n                emitWith(typeahead, itemExecute(), { item });\n                return true;\n              });\n            },\n            onHover: (menu, item) => {\n              detail.previewing.set(false);\n              detail.lazyTypeaheadComp.get().each(input => {\n                if (detail.model.populateFromBrowse) {\n                  setValueFromItem(detail.model, input, item);\n                }\n              });\n            }\n          };\n        }\n      })]);\n\n    const Typeahead = composite({\n      name: 'Typeahead',\n      configFields: schema$g(),\n      partFields: parts$b(),\n      factory: make$3\n    });\n\n    const wrap = delegate => {\n      const toCached = () => {\n        return wrap(delegate.toCached());\n      };\n      const bindFuture = f => {\n        return wrap(delegate.bind(resA => resA.fold(err => Future.pure(Result.error(err)), a => f(a))));\n      };\n      const bindResult = f => {\n        return wrap(delegate.map(resA => resA.bind(f)));\n      };\n      const mapResult = f => {\n        return wrap(delegate.map(resA => resA.map(f)));\n      };\n      const mapError = f => {\n        return wrap(delegate.map(resA => resA.mapError(f)));\n      };\n      const foldResult = (whenError, whenValue) => {\n        return delegate.map(res => res.fold(whenError, whenValue));\n      };\n      const withTimeout = (timeout, errorThunk) => {\n        return wrap(Future.nu(callback => {\n          let timedOut = false;\n          const timer = setTimeout(() => {\n            timedOut = true;\n            callback(Result.error(errorThunk()));\n          }, timeout);\n          delegate.get(result => {\n            if (!timedOut) {\n              clearTimeout(timer);\n              callback(result);\n            }\n          });\n        }));\n      };\n      return {\n        ...delegate,\n        toCached,\n        bindFuture,\n        bindResult,\n        mapResult,\n        mapError,\n        foldResult,\n        withTimeout\n      };\n    };\n    const nu$1 = worker => {\n      return wrap(Future.nu(worker));\n    };\n    const value = value => {\n      return wrap(Future.pure(Result.value(value)));\n    };\n    const error = error => {\n      return wrap(Future.pure(Result.error(error)));\n    };\n    const fromResult = result => {\n      return wrap(Future.pure(result));\n    };\n    const fromFuture = future => {\n      return wrap(future.map(Result.value));\n    };\n    const fromPromise = promise => {\n      return nu$1(completer => {\n        promise.then(value => {\n          completer(Result.value(value));\n        }, error => {\n          completer(Result.error(error));\n        });\n      });\n    };\n    const FutureResult = {\n      nu: nu$1,\n      wrap,\n      pure: value,\n      value,\n      error,\n      fromResult,\n      fromFuture,\n      fromPromise\n    };\n\n    const renderCommonSpec = (spec, actionOpt, extraBehaviours = [], dom, components, providersBackstage) => {\n      const action = actionOpt.fold(() => ({}), action => ({ action }));\n      const common = {\n        buttonBehaviours: derive$1([\n          DisablingConfigs.button(() => !spec.enabled || providersBackstage.isDisabled()),\n          receivingConfig(),\n          Tabstopping.config({}),\n          config('button press', [\n            preventDefault('click'),\n            preventDefault('mousedown')\n          ])\n        ].concat(extraBehaviours)),\n        eventOrder: {\n          click: [\n            'button press',\n            'alloy.base.behaviour'\n          ],\n          mousedown: [\n            'button press',\n            'alloy.base.behaviour'\n          ]\n        },\n        ...action\n      };\n      const domFinal = deepMerge(common, { dom });\n      return deepMerge(domFinal, { components });\n    };\n    const renderIconButtonSpec = (spec, action, providersBackstage, extraBehaviours = []) => {\n      const tooltipAttributes = spec.tooltip.map(tooltip => ({\n        'aria-label': providersBackstage.translate(tooltip),\n        'title': providersBackstage.translate(tooltip)\n      })).getOr({});\n      const dom = {\n        tag: 'button',\n        classes: ['tox-tbtn'],\n        attributes: tooltipAttributes\n      };\n      const icon = spec.icon.map(iconName => renderIconFromPack$1(iconName, providersBackstage.icons));\n      const components = componentRenderPipeline([icon]);\n      return renderCommonSpec(spec, action, extraBehaviours, dom, components, providersBackstage);\n    };\n    const calculateClassesFromButtonType = buttonType => {\n      switch (buttonType) {\n      case 'primary':\n        return ['tox-button'];\n      case 'toolbar':\n        return ['tox-tbtn'];\n      case 'secondary':\n      default:\n        return [\n          'tox-button',\n          'tox-button--secondary'\n        ];\n      }\n    };\n    const renderButtonSpec = (spec, action, providersBackstage, extraBehaviours = [], extraClasses = []) => {\n      const translatedText = providersBackstage.translate(spec.text);\n      const icon = spec.icon.map(iconName => renderIconFromPack$1(iconName, providersBackstage.icons));\n      const components = [icon.getOrThunk(() => text$2(translatedText))];\n      const buttonType = spec.buttonType.getOr(!spec.primary && !spec.borderless ? 'secondary' : 'primary');\n      const baseClasses = calculateClassesFromButtonType(buttonType);\n      const classes = [\n        ...baseClasses,\n        ...icon.isSome() ? ['tox-button--icon'] : [],\n        ...spec.borderless ? ['tox-button--naked'] : [],\n        ...extraClasses\n      ];\n      const dom = {\n        tag: 'button',\n        classes,\n        attributes: { title: translatedText }\n      };\n      return renderCommonSpec(spec, action, extraBehaviours, dom, components, providersBackstage);\n    };\n    const renderButton$1 = (spec, action, providersBackstage, extraBehaviours = [], extraClasses = []) => {\n      const buttonSpec = renderButtonSpec(spec, Optional.some(action), providersBackstage, extraBehaviours, extraClasses);\n      return Button.sketch(buttonSpec);\n    };\n    const getAction = (name, buttonType) => comp => {\n      if (buttonType === 'custom') {\n        emitWith(comp, formActionEvent, {\n          name,\n          value: {}\n        });\n      } else if (buttonType === 'submit') {\n        emit(comp, formSubmitEvent);\n      } else if (buttonType === 'cancel') {\n        emit(comp, formCancelEvent);\n      } else {\n        console.error('Unknown button type: ', buttonType);\n      }\n    };\n    const isMenuFooterButtonSpec = (spec, buttonType) => buttonType === 'menu';\n    const isNormalFooterButtonSpec = (spec, buttonType) => buttonType === 'custom' || buttonType === 'cancel' || buttonType === 'submit';\n    const isToggleButtonSpec = (spec, buttonType) => buttonType === 'togglebutton';\n    const renderToggleButton = (spec, providers) => {\n      var _a, _b;\n      const optMemIcon = spec.icon.map(memIcon => renderReplaceableIconFromPack(memIcon, providers.icons)).map(record);\n      const action = comp => {\n        emitWith(comp, formActionEvent, {\n          name: spec.name,\n          value: {\n            setIcon: newIcon => {\n              optMemIcon.map(memIcon => memIcon.getOpt(comp).each(displayIcon => {\n                Replacing.set(displayIcon, [renderReplaceableIconFromPack(newIcon, providers.icons)]);\n              }));\n            }\n          }\n        });\n      };\n      const buttonType = spec.buttonType.getOr(!spec.primary ? 'secondary' : 'primary');\n      const buttonSpec = {\n        ...spec,\n        name: (_a = spec.name) !== null && _a !== void 0 ? _a : '',\n        primary: buttonType === 'primary',\n        tooltip: Optional.from(spec.tooltip),\n        enabled: (_b = spec.enabled) !== null && _b !== void 0 ? _b : false,\n        borderless: false\n      };\n      const tooltipAttributes = buttonSpec.tooltip.map(tooltip => ({\n        'aria-label': providers.translate(tooltip),\n        'title': providers.translate(tooltip)\n      })).getOr({});\n      const buttonTypeClasses = calculateClassesFromButtonType(buttonType !== null && buttonType !== void 0 ? buttonType : 'secondary');\n      const showIconAndText = spec.icon.isSome() && spec.text.isSome();\n      const dom = {\n        tag: 'button',\n        classes: [\n          ...buttonTypeClasses.concat(spec.icon.isSome() ? ['tox-button--icon'] : []),\n          ...spec.active ? ['tox-button--enabled'] : [],\n          ...showIconAndText ? ['tox-button--icon-and-text'] : []\n        ],\n        attributes: tooltipAttributes\n      };\n      const extraBehaviours = [];\n      const translatedText = providers.translate(spec.text.getOr(''));\n      const translatedTextComponed = text$2(translatedText);\n      const iconComp = componentRenderPipeline([optMemIcon.map(memIcon => memIcon.asSpec())]);\n      const components = [\n        ...iconComp,\n        ...spec.text.isSome() ? [translatedTextComponed] : []\n      ];\n      const iconButtonSpec = renderCommonSpec(buttonSpec, Optional.some(action), extraBehaviours, dom, components, providers);\n      return Button.sketch(iconButtonSpec);\n    };\n    const renderFooterButton = (spec, buttonType, backstage) => {\n      if (isMenuFooterButtonSpec(spec, buttonType)) {\n        const getButton = () => memButton;\n        const menuButtonSpec = spec;\n        const fixedSpec = {\n          ...spec,\n          type: 'menubutton',\n          search: Optional.none(),\n          onSetup: api => {\n            api.setEnabled(spec.enabled);\n            return noop;\n          },\n          fetch: getFetch(menuButtonSpec.items, getButton, backstage)\n        };\n        const memButton = record(renderMenuButton(fixedSpec, 'tox-tbtn', backstage, Optional.none()));\n        return memButton.asSpec();\n      } else if (isNormalFooterButtonSpec(spec, buttonType)) {\n        const action = getAction(spec.name, buttonType);\n        const buttonSpec = {\n          ...spec,\n          borderless: false\n        };\n        return renderButton$1(buttonSpec, action, backstage.shared.providers, []);\n      } else if (isToggleButtonSpec(spec, buttonType)) {\n        return renderToggleButton(spec, backstage.shared.providers);\n      } else {\n        console.error('Unknown footer button type: ', buttonType);\n        throw new Error('Unknown footer button type');\n      }\n    };\n    const renderDialogButton = (spec, providersBackstage) => {\n      const action = getAction(spec.name, 'custom');\n      return renderFormField(Optional.none(), FormField.parts.field({\n        factory: Button,\n        ...renderButtonSpec(spec, Optional.some(action), providersBackstage, [\n          memory(''),\n          ComposingConfigs.self()\n        ])\n      }));\n    };\n\n    const separator$1 = { type: 'separator' };\n    const toMenuItem = target => ({\n      type: 'menuitem',\n      value: target.url,\n      text: target.title,\n      meta: { attach: target.attach },\n      onAction: noop\n    });\n    const staticMenuItem = (title, url) => ({\n      type: 'menuitem',\n      value: url,\n      text: title,\n      meta: { attach: undefined },\n      onAction: noop\n    });\n    const toMenuItems = targets => map$2(targets, toMenuItem);\n    const filterLinkTargets = (type, targets) => filter$2(targets, target => target.type === type);\n    const filteredTargets = (type, targets) => toMenuItems(filterLinkTargets(type, targets));\n    const headerTargets = linkInfo => filteredTargets('header', linkInfo.targets);\n    const anchorTargets = linkInfo => filteredTargets('anchor', linkInfo.targets);\n    const anchorTargetTop = linkInfo => Optional.from(linkInfo.anchorTop).map(url => staticMenuItem('<top>', url)).toArray();\n    const anchorTargetBottom = linkInfo => Optional.from(linkInfo.anchorBottom).map(url => staticMenuItem('<bottom>', url)).toArray();\n    const historyTargets = history => map$2(history, url => staticMenuItem(url, url));\n    const joinMenuLists = items => {\n      return foldl(items, (a, b) => {\n        const bothEmpty = a.length === 0 || b.length === 0;\n        return bothEmpty ? a.concat(b) : a.concat(separator$1, b);\n      }, []);\n    };\n    const filterByQuery = (term, menuItems) => {\n      const lowerCaseTerm = term.toLowerCase();\n      return filter$2(menuItems, item => {\n        var _a;\n        const text = item.meta !== undefined && item.meta.text !== undefined ? item.meta.text : item.text;\n        const value = (_a = item.value) !== null && _a !== void 0 ? _a : '';\n        return contains$1(text.toLowerCase(), lowerCaseTerm) || contains$1(value.toLowerCase(), lowerCaseTerm);\n      });\n    };\n\n    const getItems = (fileType, input, urlBackstage) => {\n      var _a, _b;\n      const urlInputValue = Representing.getValue(input);\n      const term = (_b = (_a = urlInputValue === null || urlInputValue === void 0 ? void 0 : urlInputValue.meta) === null || _a === void 0 ? void 0 : _a.text) !== null && _b !== void 0 ? _b : urlInputValue.value;\n      const info = urlBackstage.getLinkInformation();\n      return info.fold(() => [], linkInfo => {\n        const history = filterByQuery(term, historyTargets(urlBackstage.getHistory(fileType)));\n        return fileType === 'file' ? joinMenuLists([\n          history,\n          filterByQuery(term, headerTargets(linkInfo)),\n          filterByQuery(term, flatten([\n            anchorTargetTop(linkInfo),\n            anchorTargets(linkInfo),\n            anchorTargetBottom(linkInfo)\n          ]))\n        ]) : history;\n      });\n    };\n    const errorId = generate$6('aria-invalid');\n    const renderUrlInput = (spec, backstage, urlBackstage, initialData) => {\n      const providersBackstage = backstage.shared.providers;\n      const updateHistory = component => {\n        const urlEntry = Representing.getValue(component);\n        urlBackstage.addToHistory(urlEntry.value, spec.filetype);\n      };\n      const typeaheadSpec = {\n        ...initialData.map(initialData => ({ initialData })).getOr({}),\n        dismissOnBlur: true,\n        inputClasses: ['tox-textfield'],\n        sandboxClasses: ['tox-dialog__popups'],\n        inputAttributes: {\n          'aria-errormessage': errorId,\n          'type': 'url'\n        },\n        minChars: 0,\n        responseTime: 0,\n        fetch: input => {\n          const items = getItems(spec.filetype, input, urlBackstage);\n          const tdata = build(items, ItemResponse$1.BUBBLE_TO_SANDBOX, backstage, {\n            isHorizontalMenu: false,\n            search: Optional.none()\n          });\n          return Future.pure(tdata);\n        },\n        getHotspot: comp => memUrlBox.getOpt(comp),\n        onSetValue: (comp, _newValue) => {\n          if (comp.hasConfigured(Invalidating)) {\n            Invalidating.run(comp).get(noop);\n          }\n        },\n        typeaheadBehaviours: derive$1([\n          ...urlBackstage.getValidationHandler().map(handler => Invalidating.config({\n            getRoot: comp => parentElement(comp.element),\n            invalidClass: 'tox-control-wrap--status-invalid',\n            notify: {\n              onInvalid: (comp, err) => {\n                memInvalidIcon.getOpt(comp).each(invalidComp => {\n                  set$9(invalidComp.element, 'title', providersBackstage.translate(err));\n                });\n              }\n            },\n            validator: {\n              validate: input => {\n                const urlEntry = Representing.getValue(input);\n                return FutureResult.nu(completer => {\n                  handler({\n                    type: spec.filetype,\n                    url: urlEntry.value\n                  }, validation => {\n                    if (validation.status === 'invalid') {\n                      const err = Result.error(validation.message);\n                      completer(err);\n                    } else {\n                      const val = Result.value(validation.message);\n                      completer(val);\n                    }\n                  });\n                });\n              },\n              validateOnLoad: false\n            }\n          })).toArray(),\n          Disabling.config({ disabled: () => !spec.enabled || providersBackstage.isDisabled() }),\n          Tabstopping.config({}),\n          config('urlinput-events', [\n            run$1(input(), comp => {\n              const currentValue = get$6(comp.element);\n              const trimmedValue = currentValue.trim();\n              if (trimmedValue !== currentValue) {\n                set$5(comp.element, trimmedValue);\n              }\n              if (spec.filetype === 'file') {\n                emitWith(comp, formChangeEvent, { name: spec.name });\n              }\n            }),\n            run$1(change(), comp => {\n              emitWith(comp, formChangeEvent, { name: spec.name });\n              updateHistory(comp);\n            }),\n            run$1(postPaste(), comp => {\n              emitWith(comp, formChangeEvent, { name: spec.name });\n              updateHistory(comp);\n            })\n          ])\n        ]),\n        eventOrder: {\n          [input()]: [\n            'streaming',\n            'urlinput-events',\n            'invalidating'\n          ]\n        },\n        model: {\n          getDisplayText: itemData => itemData.value,\n          selectsOver: false,\n          populateFromBrowse: false\n        },\n        markers: { openClass: 'tox-textfield--popup-open' },\n        lazySink: backstage.shared.getSink,\n        parts: { menu: part(false, 1, 'normal') },\n        onExecute: (_menu, component, _entry) => {\n          emitWith(component, formSubmitEvent, {});\n        },\n        onItemExecute: (typeahead, _sandbox, _item, _value) => {\n          updateHistory(typeahead);\n          emitWith(typeahead, formChangeEvent, { name: spec.name });\n        }\n      };\n      const pField = FormField.parts.field({\n        ...typeaheadSpec,\n        factory: Typeahead\n      });\n      const pLabel = spec.label.map(label => renderLabel$3(label, providersBackstage));\n      const makeIcon = (name, errId, icon = name, label = name) => render$3(icon, {\n        tag: 'div',\n        classes: [\n          'tox-icon',\n          'tox-control-wrap__status-icon-' + name\n        ],\n        attributes: {\n          'title': providersBackstage.translate(label),\n          'aria-live': 'polite',\n          ...errId.fold(() => ({}), id => ({ id }))\n        }\n      }, providersBackstage.icons);\n      const memInvalidIcon = record(makeIcon('invalid', Optional.some(errorId), 'warning'));\n      const memStatus = record({\n        dom: {\n          tag: 'div',\n          classes: ['tox-control-wrap__status-icon-wrap']\n        },\n        components: [memInvalidIcon.asSpec()]\n      });\n      const optUrlPicker = urlBackstage.getUrlPicker(spec.filetype);\n      const browseUrlEvent = generate$6('browser.url.event');\n      const memUrlBox = record({\n        dom: {\n          tag: 'div',\n          classes: ['tox-control-wrap']\n        },\n        components: [\n          pField,\n          memStatus.asSpec()\n        ],\n        behaviours: derive$1([Disabling.config({ disabled: () => !spec.enabled || providersBackstage.isDisabled() })])\n      });\n      const memUrlPickerButton = record(renderButton$1({\n        name: spec.name,\n        icon: Optional.some('browse'),\n        text: spec.picker_text.or(spec.label).getOr(''),\n        enabled: spec.enabled,\n        primary: false,\n        buttonType: Optional.none(),\n        borderless: true\n      }, component => emit(component, browseUrlEvent), providersBackstage, [], ['tox-browse-url']));\n      const controlHWrapper = () => ({\n        dom: {\n          tag: 'div',\n          classes: ['tox-form__controls-h-stack']\n        },\n        components: flatten([\n          [memUrlBox.asSpec()],\n          optUrlPicker.map(() => memUrlPickerButton.asSpec()).toArray()\n        ])\n      });\n      const openUrlPicker = comp => {\n        Composing.getCurrent(comp).each(field => {\n          const componentData = Representing.getValue(field);\n          const urlData = {\n            fieldname: spec.name,\n            ...componentData\n          };\n          optUrlPicker.each(picker => {\n            picker(urlData).get(chosenData => {\n              Representing.setValue(field, chosenData);\n              emitWith(comp, formChangeEvent, { name: spec.name });\n            });\n          });\n        });\n      };\n      return FormField.sketch({\n        dom: renderFormFieldDom(),\n        components: pLabel.toArray().concat([controlHWrapper()]),\n        fieldBehaviours: derive$1([\n          Disabling.config({\n            disabled: () => !spec.enabled || providersBackstage.isDisabled(),\n            onDisabled: comp => {\n              FormField.getField(comp).each(Disabling.disable);\n              memUrlPickerButton.getOpt(comp).each(Disabling.disable);\n            },\n            onEnabled: comp => {\n              FormField.getField(comp).each(Disabling.enable);\n              memUrlPickerButton.getOpt(comp).each(Disabling.enable);\n            }\n          }),\n          receivingConfig(),\n          config('url-input-events', [run$1(browseUrlEvent, openUrlPicker)])\n        ])\n      });\n    };\n\n    const renderAlertBanner = (spec, providersBackstage) => {\n      const icon = get$2(spec.icon, providersBackstage.icons);\n      return Container.sketch({\n        dom: {\n          tag: 'div',\n          attributes: { role: 'alert' },\n          classes: [\n            'tox-notification',\n            'tox-notification--in',\n            `tox-notification--${ spec.level }`\n          ]\n        },\n        components: [\n          {\n            dom: {\n              tag: 'div',\n              classes: ['tox-notification__icon'],\n              innerHtml: !spec.url ? icon : undefined\n            },\n            components: spec.url ? [Button.sketch({\n                dom: {\n                  tag: 'button',\n                  classes: [\n                    'tox-button',\n                    'tox-button--naked',\n                    'tox-button--icon'\n                  ],\n                  innerHtml: icon,\n                  attributes: { title: providersBackstage.translate(spec.iconTooltip) }\n                },\n                action: comp => emitWith(comp, formActionEvent, {\n                  name: 'alert-banner',\n                  value: spec.url\n                }),\n                buttonBehaviours: derive$1([addFocusableBehaviour()])\n              })] : undefined\n          },\n          {\n            dom: {\n              tag: 'div',\n              classes: ['tox-notification__body'],\n              innerHtml: providersBackstage.translate(spec.text)\n            }\n          }\n        ]\n      });\n    };\n\n    const set$1 = (element, status) => {\n      element.dom.checked = status;\n    };\n    const get$1 = element => element.dom.checked;\n\n    const renderCheckbox = (spec, providerBackstage, initialData) => {\n      const toggleCheckboxHandler = comp => {\n        comp.element.dom.click();\n        return Optional.some(true);\n      };\n      const pField = FormField.parts.field({\n        factory: { sketch: identity },\n        dom: {\n          tag: 'input',\n          classes: ['tox-checkbox__input'],\n          attributes: { type: 'checkbox' }\n        },\n        behaviours: derive$1([\n          ComposingConfigs.self(),\n          Disabling.config({\n            disabled: () => !spec.enabled || providerBackstage.isDisabled(),\n            onDisabled: component => {\n              parentElement(component.element).each(element => add$2(element, 'tox-checkbox--disabled'));\n            },\n            onEnabled: component => {\n              parentElement(component.element).each(element => remove$2(element, 'tox-checkbox--disabled'));\n            }\n          }),\n          Tabstopping.config({}),\n          Focusing.config({}),\n          withElement(initialData, get$1, set$1),\n          Keying.config({\n            mode: 'special',\n            onEnter: toggleCheckboxHandler,\n            onSpace: toggleCheckboxHandler,\n            stopSpaceKeyup: true\n          }),\n          config('checkbox-events', [run$1(change(), (component, _) => {\n              emitWith(component, formChangeEvent, { name: spec.name });\n            })])\n        ])\n      });\n      const pLabel = FormField.parts.label({\n        dom: {\n          tag: 'span',\n          classes: ['tox-checkbox__label']\n        },\n        components: [text$2(providerBackstage.translate(spec.label))],\n        behaviours: derive$1([Unselecting.config({})])\n      });\n      const makeIcon = className => {\n        const iconName = className === 'checked' ? 'selected' : 'unselected';\n        return render$3(iconName, {\n          tag: 'span',\n          classes: [\n            'tox-icon',\n            'tox-checkbox-icon__' + className\n          ]\n        }, providerBackstage.icons);\n      };\n      const memIcons = record({\n        dom: {\n          tag: 'div',\n          classes: ['tox-checkbox__icons']\n        },\n        components: [\n          makeIcon('checked'),\n          makeIcon('unchecked')\n        ]\n      });\n      return FormField.sketch({\n        dom: {\n          tag: 'label',\n          classes: ['tox-checkbox']\n        },\n        components: [\n          pField,\n          memIcons.asSpec(),\n          pLabel\n        ],\n        fieldBehaviours: derive$1([\n          Disabling.config({ disabled: () => !spec.enabled || providerBackstage.isDisabled() }),\n          receivingConfig()\n        ])\n      });\n    };\n\n    const renderHtmlPanel = spec => {\n      if (spec.presets === 'presentation') {\n        return Container.sketch({\n          dom: {\n            tag: 'div',\n            classes: ['tox-form__group'],\n            innerHtml: spec.html\n          }\n        });\n      } else {\n        return Container.sketch({\n          dom: {\n            tag: 'div',\n            classes: ['tox-form__group'],\n            innerHtml: spec.html,\n            attributes: { role: 'document' }\n          },\n          containerBehaviours: derive$1([\n            Tabstopping.config({}),\n            Focusing.config({})\n          ])\n        });\n      }\n    };\n\n    const make$2 = render => {\n      return (parts, spec, dialogData, backstage) => get$g(spec, 'name').fold(() => render(spec, backstage, Optional.none()), fieldName => parts.field(fieldName, render(spec, backstage, get$g(dialogData, fieldName))));\n    };\n    const makeIframe = render => (parts, spec, dialogData, backstage) => {\n      const iframeSpec = deepMerge(spec, { source: 'dynamic' });\n      return make$2(render)(parts, iframeSpec, dialogData, backstage);\n    };\n    const factories = {\n      bar: make$2((spec, backstage) => renderBar(spec, backstage.shared)),\n      collection: make$2((spec, backstage, data) => renderCollection(spec, backstage.shared.providers, data)),\n      alertbanner: make$2((spec, backstage) => renderAlertBanner(spec, backstage.shared.providers)),\n      input: make$2((spec, backstage, data) => renderInput(spec, backstage.shared.providers, data)),\n      textarea: make$2((spec, backstage, data) => renderTextarea(spec, backstage.shared.providers, data)),\n      label: make$2((spec, backstage) => renderLabel$2(spec, backstage.shared)),\n      iframe: makeIframe((spec, backstage, data) => renderIFrame(spec, backstage.shared.providers, data)),\n      button: make$2((spec, backstage) => renderDialogButton(spec, backstage.shared.providers)),\n      checkbox: make$2((spec, backstage, data) => renderCheckbox(spec, backstage.shared.providers, data)),\n      colorinput: make$2((spec, backstage, data) => renderColorInput(spec, backstage.shared, backstage.colorinput, data)),\n      colorpicker: make$2((spec, backstage, data) => renderColorPicker(spec, backstage.shared.providers, data)),\n      dropzone: make$2((spec, backstage, data) => renderDropZone(spec, backstage.shared.providers, data)),\n      grid: make$2((spec, backstage) => renderGrid(spec, backstage.shared)),\n      listbox: make$2((spec, backstage, data) => renderListBox(spec, backstage, data)),\n      selectbox: make$2((spec, backstage, data) => renderSelectBox(spec, backstage.shared.providers, data)),\n      sizeinput: make$2((spec, backstage) => renderSizeInput(spec, backstage.shared.providers)),\n      slider: make$2((spec, backstage, data) => renderSlider(spec, backstage.shared.providers, data)),\n      urlinput: make$2((spec, backstage, data) => renderUrlInput(spec, backstage, backstage.urlinput, data)),\n      customeditor: make$2(renderCustomEditor),\n      htmlpanel: make$2(renderHtmlPanel),\n      imagepreview: make$2((spec, _, data) => renderImagePreview(spec, data)),\n      table: make$2((spec, backstage) => renderTable(spec, backstage.shared.providers)),\n      tree: make$2((spec, backstage) => renderTree(spec, backstage)),\n      panel: make$2((spec, backstage) => renderPanel(spec, backstage))\n    };\n    const noFormParts = {\n      field: (_name, spec) => spec,\n      record: constant$1([])\n    };\n    const interpretInForm = (parts, spec, dialogData, oldBackstage) => {\n      const newBackstage = deepMerge(oldBackstage, { shared: { interpreter: childSpec => interpretParts(parts, childSpec, dialogData, newBackstage) } });\n      return interpretParts(parts, spec, dialogData, newBackstage);\n    };\n    const interpretParts = (parts, spec, dialogData, backstage) => get$g(factories, spec.type).fold(() => {\n      console.error(`Unknown factory type \"${ spec.type }\", defaulting to container: `, spec);\n      return spec;\n    }, factory => factory(parts, spec, dialogData, backstage));\n    const interpretWithoutForm = (spec, dialogData, backstage) => interpretParts(noFormParts, spec, dialogData, backstage);\n\n    const labelPrefix = 'layout-inset';\n    const westEdgeX = anchor => anchor.x;\n    const middleX = (anchor, element) => anchor.x + anchor.width / 2 - element.width / 2;\n    const eastEdgeX = (anchor, element) => anchor.x + anchor.width - element.width;\n    const northY = anchor => anchor.y;\n    const southY = (anchor, element) => anchor.y + anchor.height - element.height;\n    const centreY = (anchor, element) => anchor.y + anchor.height / 2 - element.height / 2;\n    const southwest = (anchor, element, bubbles) => nu$6(eastEdgeX(anchor, element), southY(anchor, element), bubbles.insetSouthwest(), northwest$3(), 'southwest', boundsRestriction(anchor, {\n      right: 0,\n      bottom: 3\n    }), labelPrefix);\n    const southeast = (anchor, element, bubbles) => nu$6(westEdgeX(anchor), southY(anchor, element), bubbles.insetSoutheast(), northeast$3(), 'southeast', boundsRestriction(anchor, {\n      left: 1,\n      bottom: 3\n    }), labelPrefix);\n    const northwest = (anchor, element, bubbles) => nu$6(eastEdgeX(anchor, element), northY(anchor), bubbles.insetNorthwest(), southwest$3(), 'northwest', boundsRestriction(anchor, {\n      right: 0,\n      top: 2\n    }), labelPrefix);\n    const northeast = (anchor, element, bubbles) => nu$6(westEdgeX(anchor), northY(anchor), bubbles.insetNortheast(), southeast$3(), 'northeast', boundsRestriction(anchor, {\n      left: 1,\n      top: 2\n    }), labelPrefix);\n    const north = (anchor, element, bubbles) => nu$6(middleX(anchor, element), northY(anchor), bubbles.insetNorth(), south$3(), 'north', boundsRestriction(anchor, { top: 2 }), labelPrefix);\n    const south = (anchor, element, bubbles) => nu$6(middleX(anchor, element), southY(anchor, element), bubbles.insetSouth(), north$3(), 'south', boundsRestriction(anchor, { bottom: 3 }), labelPrefix);\n    const east = (anchor, element, bubbles) => nu$6(eastEdgeX(anchor, element), centreY(anchor, element), bubbles.insetEast(), west$3(), 'east', boundsRestriction(anchor, { right: 0 }), labelPrefix);\n    const west = (anchor, element, bubbles) => nu$6(westEdgeX(anchor), centreY(anchor, element), bubbles.insetWest(), east$3(), 'west', boundsRestriction(anchor, { left: 1 }), labelPrefix);\n    const lookupPreserveLayout = lastPlacement => {\n      switch (lastPlacement) {\n      case 'north':\n        return north;\n      case 'northeast':\n        return northeast;\n      case 'northwest':\n        return northwest;\n      case 'south':\n        return south;\n      case 'southeast':\n        return southeast;\n      case 'southwest':\n        return southwest;\n      case 'east':\n        return east;\n      case 'west':\n        return west;\n      }\n    };\n    const preserve = (anchor, element, bubbles, placee, bounds) => {\n      const layout = getPlacement(placee).map(lookupPreserveLayout).getOr(north);\n      return layout(anchor, element, bubbles, placee, bounds);\n    };\n    const lookupFlippedLayout = lastPlacement => {\n      switch (lastPlacement) {\n      case 'north':\n        return south;\n      case 'northeast':\n        return southeast;\n      case 'northwest':\n        return southwest;\n      case 'south':\n        return north;\n      case 'southeast':\n        return northeast;\n      case 'southwest':\n        return northwest;\n      case 'east':\n        return west;\n      case 'west':\n        return east;\n      }\n    };\n    const flip = (anchor, element, bubbles, placee, bounds) => {\n      const layout = getPlacement(placee).map(lookupFlippedLayout).getOr(north);\n      return layout(anchor, element, bubbles, placee, bounds);\n    };\n\n    const bubbleAlignments$2 = {\n      valignCentre: [],\n      alignCentre: [],\n      alignLeft: [],\n      alignRight: [],\n      right: [],\n      left: [],\n      bottom: [],\n      top: []\n    };\n    const getInlineDialogAnchor = (contentAreaElement, lazyAnchorbar, lazyUseEditableAreaAnchor) => {\n      const bubbleSize = 12;\n      const overrides = { maxHeightFunction: expandable$1() };\n      const editableAreaAnchor = () => ({\n        type: 'node',\n        root: getContentContainer(getRootNode(contentAreaElement())),\n        node: Optional.from(contentAreaElement()),\n        bubble: nu$5(bubbleSize, bubbleSize, bubbleAlignments$2),\n        layouts: {\n          onRtl: () => [northeast],\n          onLtr: () => [northwest]\n        },\n        overrides\n      });\n      const standardAnchor = () => ({\n        type: 'hotspot',\n        hotspot: lazyAnchorbar(),\n        bubble: nu$5(-bubbleSize, bubbleSize, bubbleAlignments$2),\n        layouts: {\n          onRtl: () => [\n            southeast$2,\n            southwest$2,\n            south$2\n          ],\n          onLtr: () => [\n            southwest$2,\n            southeast$2,\n            south$2\n          ]\n        },\n        overrides\n      });\n      return () => lazyUseEditableAreaAnchor() ? editableAreaAnchor() : standardAnchor();\n    };\n    const getInlineBottomDialogAnchor = (inline, contentAreaElement, lazyBottomAnchorBar, lazyUseEditableAreaAnchor) => {\n      const bubbleSize = 12;\n      const overrides = { maxHeightFunction: expandable$1() };\n      const editableAreaAnchor = () => ({\n        type: 'node',\n        root: getContentContainer(getRootNode(contentAreaElement())),\n        node: Optional.from(contentAreaElement()),\n        bubble: nu$5(bubbleSize, bubbleSize, bubbleAlignments$2),\n        layouts: {\n          onRtl: () => [north],\n          onLtr: () => [north]\n        },\n        overrides\n      });\n      const standardAnchor = () => inline ? {\n        type: 'node',\n        root: getContentContainer(getRootNode(contentAreaElement())),\n        node: Optional.from(contentAreaElement()),\n        bubble: nu$5(0, -getOuter$2(contentAreaElement()), bubbleAlignments$2),\n        layouts: {\n          onRtl: () => [north$2],\n          onLtr: () => [north$2]\n        },\n        overrides\n      } : {\n        type: 'hotspot',\n        hotspot: lazyBottomAnchorBar(),\n        bubble: nu$5(0, 0, bubbleAlignments$2),\n        layouts: {\n          onRtl: () => [north$2],\n          onLtr: () => [north$2]\n        },\n        overrides\n      };\n      return () => lazyUseEditableAreaAnchor() ? editableAreaAnchor() : standardAnchor();\n    };\n    const getBannerAnchor = (contentAreaElement, lazyAnchorbar, lazyUseEditableAreaAnchor) => {\n      const editableAreaAnchor = () => ({\n        type: 'node',\n        root: getContentContainer(getRootNode(contentAreaElement())),\n        node: Optional.from(contentAreaElement()),\n        layouts: {\n          onRtl: () => [north],\n          onLtr: () => [north]\n        }\n      });\n      const standardAnchor = () => ({\n        type: 'hotspot',\n        hotspot: lazyAnchorbar(),\n        layouts: {\n          onRtl: () => [south$2],\n          onLtr: () => [south$2]\n        }\n      });\n      return () => lazyUseEditableAreaAnchor() ? editableAreaAnchor() : standardAnchor();\n    };\n    const getCursorAnchor = (editor, bodyElement) => () => ({\n      type: 'selection',\n      root: bodyElement(),\n      getSelection: () => {\n        const rng = editor.selection.getRng();\n        const selectedCells = editor.model.table.getSelectedCells();\n        if (selectedCells.length > 1) {\n          const firstCell = selectedCells[0];\n          const lastCell = selectedCells[selectedCells.length - 1];\n          const selectionTableCellRange = {\n            firstCell: SugarElement.fromDom(firstCell),\n            lastCell: SugarElement.fromDom(lastCell)\n          };\n          return Optional.some(selectionTableCellRange);\n        }\n        return Optional.some(SimSelection.range(SugarElement.fromDom(rng.startContainer), rng.startOffset, SugarElement.fromDom(rng.endContainer), rng.endOffset));\n      }\n    });\n    const getNodeAnchor$1 = bodyElement => element => ({\n      type: 'node',\n      root: bodyElement(),\n      node: element\n    });\n    const getAnchors = (editor, lazyAnchorbar, lazyBottomAnchorBar, isToolbarTop) => {\n      const useFixedToolbarContainer = useFixedContainer(editor);\n      const bodyElement = () => SugarElement.fromDom(editor.getBody());\n      const contentAreaElement = () => SugarElement.fromDom(editor.getContentAreaContainer());\n      const lazyUseEditableAreaAnchor = () => useFixedToolbarContainer || !isToolbarTop();\n      return {\n        inlineDialog: getInlineDialogAnchor(contentAreaElement, lazyAnchorbar, lazyUseEditableAreaAnchor),\n        inlineBottomDialog: getInlineBottomDialogAnchor(editor.inline, contentAreaElement, lazyBottomAnchorBar, lazyUseEditableAreaAnchor),\n        banner: getBannerAnchor(contentAreaElement, lazyAnchorbar, lazyUseEditableAreaAnchor),\n        cursor: getCursorAnchor(editor, bodyElement),\n        node: getNodeAnchor$1(bodyElement)\n      };\n    };\n\n    const colorPicker = editor => (callback, value) => {\n      const dialog = colorPickerDialog(editor);\n      dialog(callback, value);\n    };\n    const hasCustomColors = editor => () => hasCustomColors$1(editor);\n    const getColors = editor => id => getColors$2(editor, id);\n    const getColorCols = editor => id => getColorCols$1(editor, id);\n    const ColorInputBackstage = editor => ({\n      colorPicker: colorPicker(editor),\n      hasCustomColors: hasCustomColors(editor),\n      getColors: getColors(editor),\n      getColorCols: getColorCols(editor)\n    });\n\n    const isDraggableModal = editor => () => isDraggableModal$1(editor);\n    const DialogBackstage = editor => ({ isDraggableModal: isDraggableModal(editor) });\n\n    const HeaderBackstage = editor => {\n      const mode = Cell(isToolbarLocationBottom(editor) ? 'bottom' : 'top');\n      return {\n        isPositionedAtTop: () => mode.get() === 'top',\n        getDockingMode: mode.get,\n        setDockingMode: mode.set\n      };\n    };\n\n    const isNestedFormat = format => hasNonNullableKey(format, 'items');\n    const isFormatReference = format => hasNonNullableKey(format, 'format');\n    const defaultStyleFormats = [\n      {\n        title: 'Headings',\n        items: [\n          {\n            title: 'Heading 1',\n            format: 'h1'\n          },\n          {\n            title: 'Heading 2',\n            format: 'h2'\n          },\n          {\n            title: 'Heading 3',\n            format: 'h3'\n          },\n          {\n            title: 'Heading 4',\n            format: 'h4'\n          },\n          {\n            title: 'Heading 5',\n            format: 'h5'\n          },\n          {\n            title: 'Heading 6',\n            format: 'h6'\n          }\n        ]\n      },\n      {\n        title: 'Inline',\n        items: [\n          {\n            title: 'Bold',\n            format: 'bold'\n          },\n          {\n            title: 'Italic',\n            format: 'italic'\n          },\n          {\n            title: 'Underline',\n            format: 'underline'\n          },\n          {\n            title: 'Strikethrough',\n            format: 'strikethrough'\n          },\n          {\n            title: 'Superscript',\n            format: 'superscript'\n          },\n          {\n            title: 'Subscript',\n            format: 'subscript'\n          },\n          {\n            title: 'Code',\n            format: 'code'\n          }\n        ]\n      },\n      {\n        title: 'Blocks',\n        items: [\n          {\n            title: 'Paragraph',\n            format: 'p'\n          },\n          {\n            title: 'Blockquote',\n            format: 'blockquote'\n          },\n          {\n            title: 'Div',\n            format: 'div'\n          },\n          {\n            title: 'Pre',\n            format: 'pre'\n          }\n        ]\n      },\n      {\n        title: 'Align',\n        items: [\n          {\n            title: 'Left',\n            format: 'alignleft'\n          },\n          {\n            title: 'Center',\n            format: 'aligncenter'\n          },\n          {\n            title: 'Right',\n            format: 'alignright'\n          },\n          {\n            title: 'Justify',\n            format: 'alignjustify'\n          }\n        ]\n      }\n    ];\n    const isNestedFormats = format => has$2(format, 'items');\n    const isBlockFormat = format => has$2(format, 'block');\n    const isInlineFormat = format => has$2(format, 'inline');\n    const isSelectorFormat = format => has$2(format, 'selector');\n    const mapFormats = userFormats => foldl(userFormats, (acc, fmt) => {\n      if (isNestedFormats(fmt)) {\n        const result = mapFormats(fmt.items);\n        return {\n          customFormats: acc.customFormats.concat(result.customFormats),\n          formats: acc.formats.concat([{\n              title: fmt.title,\n              items: result.formats\n            }])\n        };\n      } else if (isInlineFormat(fmt) || isBlockFormat(fmt) || isSelectorFormat(fmt)) {\n        const formatName = isString(fmt.name) ? fmt.name : fmt.title.toLowerCase();\n        const formatNameWithPrefix = `custom-${ formatName }`;\n        return {\n          customFormats: acc.customFormats.concat([{\n              name: formatNameWithPrefix,\n              format: fmt\n            }]),\n          formats: acc.formats.concat([{\n              title: fmt.title,\n              format: formatNameWithPrefix,\n              icon: fmt.icon\n            }])\n        };\n      } else {\n        return {\n          ...acc,\n          formats: acc.formats.concat(fmt)\n        };\n      }\n    }, {\n      customFormats: [],\n      formats: []\n    });\n    const registerCustomFormats = (editor, userFormats) => {\n      const result = mapFormats(userFormats);\n      const registerFormats = customFormats => {\n        each$1(customFormats, fmt => {\n          if (!editor.formatter.has(fmt.name)) {\n            editor.formatter.register(fmt.name, fmt.format);\n          }\n        });\n      };\n      if (editor.formatter) {\n        registerFormats(result.customFormats);\n      } else {\n        editor.on('init', () => {\n          registerFormats(result.customFormats);\n        });\n      }\n      return result.formats;\n    };\n    const getStyleFormats = editor => getUserStyleFormats(editor).map(userFormats => {\n      const registeredUserFormats = registerCustomFormats(editor, userFormats);\n      return shouldMergeStyleFormats(editor) ? defaultStyleFormats.concat(registeredUserFormats) : registeredUserFormats;\n    }).getOr(defaultStyleFormats);\n\n    const isSeparator$1 = format => {\n      const keys$1 = keys(format);\n      return keys$1.length === 1 && contains$2(keys$1, 'title');\n    };\n    const processBasic = (item, isSelectedFor, getPreviewFor) => ({\n      ...item,\n      type: 'formatter',\n      isSelected: isSelectedFor(item.format),\n      getStylePreview: getPreviewFor(item.format)\n    });\n    const register$a = (editor, formats, isSelectedFor, getPreviewFor) => {\n      const enrichSupported = item => processBasic(item, isSelectedFor, getPreviewFor);\n      const enrichMenu = item => {\n        const newItems = doEnrich(item.items);\n        return {\n          ...item,\n          type: 'submenu',\n          getStyleItems: constant$1(newItems)\n        };\n      };\n      const enrichCustom = item => {\n        const formatName = isString(item.name) ? item.name : generate$6(item.title);\n        const formatNameWithPrefix = `custom-${ formatName }`;\n        const newItem = {\n          ...item,\n          type: 'formatter',\n          format: formatNameWithPrefix,\n          isSelected: isSelectedFor(formatNameWithPrefix),\n          getStylePreview: getPreviewFor(formatNameWithPrefix)\n        };\n        editor.formatter.register(formatName, newItem);\n        return newItem;\n      };\n      const doEnrich = items => map$2(items, item => {\n        if (isNestedFormat(item)) {\n          return enrichMenu(item);\n        } else if (isFormatReference(item)) {\n          return enrichSupported(item);\n        } else if (isSeparator$1(item)) {\n          return {\n            ...item,\n            type: 'separator'\n          };\n        } else {\n          return enrichCustom(item);\n        }\n      });\n      return doEnrich(formats);\n    };\n\n    const init$7 = editor => {\n      const isSelectedFor = format => () => editor.formatter.match(format);\n      const getPreviewFor = format => () => {\n        const fmt = editor.formatter.get(format);\n        return fmt !== undefined ? Optional.some({\n          tag: fmt.length > 0 ? fmt[0].inline || fmt[0].block || 'div' : 'div',\n          styles: editor.dom.parseStyle(editor.formatter.getCssText(format))\n        }) : Optional.none();\n      };\n      const settingsFormats = Cell([]);\n      const eventsFormats = Cell([]);\n      const replaceSettings = Cell(false);\n      editor.on('PreInit', _e => {\n        const formats = getStyleFormats(editor);\n        const enriched = register$a(editor, formats, isSelectedFor, getPreviewFor);\n        settingsFormats.set(enriched);\n      });\n      editor.on('addStyleModifications', e => {\n        const modifications = register$a(editor, e.items, isSelectedFor, getPreviewFor);\n        eventsFormats.set(modifications);\n        replaceSettings.set(e.replace);\n      });\n      const getData = () => {\n        const fromSettings = replaceSettings.get() ? [] : settingsFormats.get();\n        const fromEvents = eventsFormats.get();\n        return fromSettings.concat(fromEvents);\n      };\n      return { getData };\n    };\n\n    const isElement = node => isNonNullable(node) && node.nodeType === 1;\n    const trim = global$1.trim;\n    const hasContentEditableState = value => {\n      return node => {\n        if (isElement(node)) {\n          if (node.contentEditable === value) {\n            return true;\n          }\n          if (node.getAttribute('data-mce-contenteditable') === value) {\n            return true;\n          }\n        }\n        return false;\n      };\n    };\n    const isContentEditableTrue = hasContentEditableState('true');\n    const isContentEditableFalse = hasContentEditableState('false');\n    const create = (type, title, url, level, attach) => ({\n      type,\n      title,\n      url,\n      level,\n      attach\n    });\n    const isChildOfContentEditableTrue = node => {\n      let tempNode = node;\n      while (tempNode = tempNode.parentNode) {\n        const value = tempNode.contentEditable;\n        if (value && value !== 'inherit') {\n          return isContentEditableTrue(tempNode);\n        }\n      }\n      return false;\n    };\n    const select = (selector, root) => {\n      return map$2(descendants(SugarElement.fromDom(root), selector), element => {\n        return element.dom;\n      });\n    };\n    const getElementText = elm => {\n      return elm.innerText || elm.textContent;\n    };\n    const getOrGenerateId = elm => {\n      return elm.id ? elm.id : generate$6('h');\n    };\n    const isAnchor = elm => {\n      return elm && elm.nodeName === 'A' && (elm.id || elm.name) !== undefined;\n    };\n    const isValidAnchor = elm => {\n      return isAnchor(elm) && isEditable(elm);\n    };\n    const isHeader = elm => {\n      return elm && /^(H[1-6])$/.test(elm.nodeName);\n    };\n    const isEditable = elm => {\n      return isChildOfContentEditableTrue(elm) && !isContentEditableFalse(elm);\n    };\n    const isValidHeader = elm => {\n      return isHeader(elm) && isEditable(elm);\n    };\n    const getLevel = elm => {\n      return isHeader(elm) ? parseInt(elm.nodeName.substr(1), 10) : 0;\n    };\n    const headerTarget = elm => {\n      var _a;\n      const headerId = getOrGenerateId(elm);\n      const attach = () => {\n        elm.id = headerId;\n      };\n      return create('header', (_a = getElementText(elm)) !== null && _a !== void 0 ? _a : '', '#' + headerId, getLevel(elm), attach);\n    };\n    const anchorTarget = elm => {\n      const anchorId = elm.id || elm.name;\n      const anchorText = getElementText(elm);\n      return create('anchor', anchorText ? anchorText : '#' + anchorId, '#' + anchorId, 0, noop);\n    };\n    const getHeaderTargets = elms => {\n      return map$2(filter$2(elms, isValidHeader), headerTarget);\n    };\n    const getAnchorTargets = elms => {\n      return map$2(filter$2(elms, isValidAnchor), anchorTarget);\n    };\n    const getTargetElements = elm => {\n      const elms = select('h1,h2,h3,h4,h5,h6,a:not([href])', elm);\n      return elms;\n    };\n    const hasTitle = target => {\n      return trim(target.title).length > 0;\n    };\n    const find = elm => {\n      const elms = getTargetElements(elm);\n      return filter$2(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);\n    };\n    const LinkTargets = { find };\n\n    const STORAGE_KEY = 'tinymce-url-history';\n    const HISTORY_LENGTH = 5;\n    const isHttpUrl = url => isString(url) && /^https?/.test(url);\n    const isArrayOfUrl = a => isArray(a) && a.length <= HISTORY_LENGTH && forall(a, isHttpUrl);\n    const isRecordOfUrlArray = r => isObject(r) && find$4(r, value => !isArrayOfUrl(value)).isNone();\n    const getAllHistory = () => {\n      const unparsedHistory = global$4.getItem(STORAGE_KEY);\n      if (unparsedHistory === null) {\n        return {};\n      }\n      let history;\n      try {\n        history = JSON.parse(unparsedHistory);\n      } catch (e) {\n        if (e instanceof SyntaxError) {\n          console.log('Local storage ' + STORAGE_KEY + ' was not valid JSON', e);\n          return {};\n        }\n        throw e;\n      }\n      if (!isRecordOfUrlArray(history)) {\n        console.log('Local storage ' + STORAGE_KEY + ' was not valid format', history);\n        return {};\n      }\n      return history;\n    };\n    const setAllHistory = history => {\n      if (!isRecordOfUrlArray(history)) {\n        throw new Error('Bad format for history:\\n' + JSON.stringify(history));\n      }\n      global$4.setItem(STORAGE_KEY, JSON.stringify(history));\n    };\n    const getHistory = fileType => {\n      const history = getAllHistory();\n      return get$g(history, fileType).getOr([]);\n    };\n    const addToHistory = (url, fileType) => {\n      if (!isHttpUrl(url)) {\n        return;\n      }\n      const history = getAllHistory();\n      const items = get$g(history, fileType).getOr([]);\n      const itemsWithoutUrl = filter$2(items, item => item !== url);\n      history[fileType] = [url].concat(itemsWithoutUrl).slice(0, HISTORY_LENGTH);\n      setAllHistory(history);\n    };\n\n    const isTruthy = value => !!value;\n    const makeMap = value => map$1(global$1.makeMap(value, /[, ]/), isTruthy);\n    const getPicker = editor => Optional.from(getFilePickerCallback(editor));\n    const getPickerTypes = editor => {\n      const optFileTypes = Optional.from(getFilePickerTypes(editor)).filter(isTruthy).map(makeMap);\n      return getPicker(editor).fold(never, _picker => optFileTypes.fold(always, types => keys(types).length > 0 ? types : false));\n    };\n    const getPickerSetting = (editor, filetype) => {\n      const pickerTypes = getPickerTypes(editor);\n      if (isBoolean(pickerTypes)) {\n        return pickerTypes ? getPicker(editor) : Optional.none();\n      } else {\n        return pickerTypes[filetype] ? getPicker(editor) : Optional.none();\n      }\n    };\n    const getUrlPicker = (editor, filetype) => getPickerSetting(editor, filetype).map(picker => entry => Future.nu(completer => {\n      const handler = (value, meta) => {\n        if (!isString(value)) {\n          throw new Error('Expected value to be string');\n        }\n        if (meta !== undefined && !isObject(meta)) {\n          throw new Error('Expected meta to be a object');\n        }\n        const r = {\n          value,\n          meta\n        };\n        completer(r);\n      };\n      const meta = {\n        filetype,\n        fieldname: entry.fieldname,\n        ...Optional.from(entry.meta).getOr({})\n      };\n      picker.call(editor, handler, entry.value, meta);\n    }));\n    const getTextSetting = value => Optional.from(value).filter(isString).getOrUndefined();\n    const getLinkInformation = editor => {\n      if (!useTypeaheadUrls(editor)) {\n        return Optional.none();\n      }\n      return Optional.some({\n        targets: LinkTargets.find(editor.getBody()),\n        anchorTop: getTextSetting(getAnchorTop(editor)),\n        anchorBottom: getTextSetting(getAnchorBottom(editor))\n      });\n    };\n    const getValidationHandler = editor => Optional.from(getFilePickerValidatorHandler(editor));\n    const UrlInputBackstage = editor => ({\n      getHistory,\n      addToHistory,\n      getLinkInformation: () => getLinkInformation(editor),\n      getValidationHandler: () => getValidationHandler(editor),\n      getUrlPicker: filetype => getUrlPicker(editor, filetype)\n    });\n\n    const init$6 = (lazySinks, editor, lazyAnchorbar, lazyBottomAnchorBar) => {\n      const contextMenuState = Cell(false);\n      const toolbar = HeaderBackstage(editor);\n      const providers = {\n        icons: () => editor.ui.registry.getAll().icons,\n        menuItems: () => editor.ui.registry.getAll().menuItems,\n        translate: global$8.translate,\n        isDisabled: () => editor.mode.isReadOnly() || !editor.ui.isEnabled(),\n        getOption: editor.options.get\n      };\n      const urlinput = UrlInputBackstage(editor);\n      const styles = init$7(editor);\n      const colorinput = ColorInputBackstage(editor);\n      const dialogSettings = DialogBackstage(editor);\n      const isContextMenuOpen = () => contextMenuState.get();\n      const setContextMenuState = state => contextMenuState.set(state);\n      const commonBackstage = {\n        shared: {\n          providers,\n          anchors: getAnchors(editor, lazyAnchorbar, lazyBottomAnchorBar, toolbar.isPositionedAtTop),\n          header: toolbar\n        },\n        urlinput,\n        styles,\n        colorinput,\n        dialog: dialogSettings,\n        isContextMenuOpen,\n        setContextMenuState\n      };\n      const popupBackstage = {\n        ...commonBackstage,\n        shared: {\n          ...commonBackstage.shared,\n          interpreter: s => interpretWithoutForm(s, {}, popupBackstage),\n          getSink: lazySinks.popup\n        }\n      };\n      const dialogBackstage = {\n        ...commonBackstage,\n        shared: {\n          ...commonBackstage.shared,\n          interpreter: s => interpretWithoutForm(s, {}, dialogBackstage),\n          getSink: lazySinks.dialog\n        }\n      };\n      return {\n        popup: popupBackstage,\n        dialog: dialogBackstage\n      };\n    };\n\n    const setup$b = (editor, mothership, uiMotherships) => {\n      const broadcastEvent = (name, evt) => {\n        each$1([\n          mothership,\n          ...uiMotherships\n        ], m => {\n          m.broadcastEvent(name, evt);\n        });\n      };\n      const broadcastOn = (channel, message) => {\n        each$1([\n          mothership,\n          ...uiMotherships\n        ], m => {\n          m.broadcastOn([channel], message);\n        });\n      };\n      const fireDismissPopups = evt => broadcastOn(dismissPopups(), { target: evt.target });\n      const doc = getDocument();\n      const onTouchstart = bind(doc, 'touchstart', fireDismissPopups);\n      const onTouchmove = bind(doc, 'touchmove', evt => broadcastEvent(documentTouchmove(), evt));\n      const onTouchend = bind(doc, 'touchend', evt => broadcastEvent(documentTouchend(), evt));\n      const onMousedown = bind(doc, 'mousedown', fireDismissPopups);\n      const onMouseup = bind(doc, 'mouseup', evt => {\n        if (evt.raw.button === 0) {\n          broadcastOn(mouseReleased(), { target: evt.target });\n        }\n      });\n      const onContentClick = raw => broadcastOn(dismissPopups(), { target: SugarElement.fromDom(raw.target) });\n      const onContentMouseup = raw => {\n        if (raw.button === 0) {\n          broadcastOn(mouseReleased(), { target: SugarElement.fromDom(raw.target) });\n        }\n      };\n      const onContentMousedown = () => {\n        each$1(editor.editorManager.get(), loopEditor => {\n          if (editor !== loopEditor) {\n            loopEditor.dispatch('DismissPopups', { relatedTarget: editor });\n          }\n        });\n      };\n      const onWindowScroll = evt => broadcastEvent(windowScroll(), fromRawEvent(evt));\n      const onWindowResize = evt => {\n        broadcastOn(repositionPopups(), {});\n        broadcastEvent(windowResize(), fromRawEvent(evt));\n      };\n      const dos = getRootNode(SugarElement.fromDom(editor.getElement()));\n      const onElementScroll = capture(dos, 'scroll', evt => {\n        requestAnimationFrame(() => {\n          const c = editor.getContainer();\n          if (c !== undefined && c !== null) {\n            const optScrollingContext = detectWhenSplitUiMode(editor, mothership.element);\n            const scrollers = optScrollingContext.map(sc => [\n              sc.element,\n              ...sc.others\n            ]).getOr([]);\n            if (exists(scrollers, s => eq(s, evt.target))) {\n              editor.dispatch('ElementScroll', { target: evt.target.dom });\n              broadcastEvent(externalElementScroll(), evt);\n            }\n          }\n        });\n      });\n      const onEditorResize = () => broadcastOn(repositionPopups(), {});\n      const onEditorProgress = evt => {\n        if (evt.state) {\n          broadcastOn(dismissPopups(), { target: SugarElement.fromDom(editor.getContainer()) });\n        }\n      };\n      const onDismissPopups = event => {\n        broadcastOn(dismissPopups(), { target: SugarElement.fromDom(event.relatedTarget.getContainer()) });\n      };\n      editor.on('PostRender', () => {\n        editor.on('click', onContentClick);\n        editor.on('tap', onContentClick);\n        editor.on('mouseup', onContentMouseup);\n        editor.on('mousedown', onContentMousedown);\n        editor.on('ScrollWindow', onWindowScroll);\n        editor.on('ResizeWindow', onWindowResize);\n        editor.on('ResizeEditor', onEditorResize);\n        editor.on('AfterProgressState', onEditorProgress);\n        editor.on('DismissPopups', onDismissPopups);\n      });\n      editor.on('remove', () => {\n        editor.off('click', onContentClick);\n        editor.off('tap', onContentClick);\n        editor.off('mouseup', onContentMouseup);\n        editor.off('mousedown', onContentMousedown);\n        editor.off('ScrollWindow', onWindowScroll);\n        editor.off('ResizeWindow', onWindowResize);\n        editor.off('ResizeEditor', onEditorResize);\n        editor.off('AfterProgressState', onEditorProgress);\n        editor.off('DismissPopups', onDismissPopups);\n        onMousedown.unbind();\n        onTouchstart.unbind();\n        onTouchmove.unbind();\n        onTouchend.unbind();\n        onMouseup.unbind();\n        onElementScroll.unbind();\n      });\n      editor.on('detach', () => {\n        each$1([\n          mothership,\n          ...uiMotherships\n        ], detachSystem);\n        each$1([\n          mothership,\n          ...uiMotherships\n        ], m => m.destroy());\n      });\n    };\n\n    const parts$a = AlloyParts;\n    const partType = PartType;\n\n    const schema$f = constant$1([\n      defaulted('shell', false),\n      required$1('makeItem'),\n      defaulted('setupItem', noop),\n      SketchBehaviours.field('listBehaviours', [Replacing])\n    ]);\n    const customListDetail = () => ({ behaviours: derive$1([Replacing.config({})]) });\n    const itemsPart = optional({\n      name: 'items',\n      overrides: customListDetail\n    });\n    const parts$9 = constant$1([itemsPart]);\n    const name = constant$1('CustomList');\n\n    const factory$f = (detail, components, _spec, _external) => {\n      const setItems = (list, items) => {\n        getListContainer(list).fold(() => {\n          console.error('Custom List was defined to not be a shell, but no item container was specified in components');\n          throw new Error('Custom List was defined to not be a shell, but no item container was specified in components');\n        }, container => {\n          const itemComps = Replacing.contents(container);\n          const numListsRequired = items.length;\n          const numListsToAdd = numListsRequired - itemComps.length;\n          const itemsToAdd = numListsToAdd > 0 ? range$2(numListsToAdd, () => detail.makeItem()) : [];\n          const itemsToRemove = itemComps.slice(numListsRequired);\n          each$1(itemsToRemove, item => Replacing.remove(container, item));\n          each$1(itemsToAdd, item => Replacing.append(container, item));\n          const builtLists = Replacing.contents(container);\n          each$1(builtLists, (item, i) => {\n            detail.setupItem(list, item, items[i], i);\n          });\n        });\n      };\n      const extra = detail.shell ? {\n        behaviours: [Replacing.config({})],\n        components: []\n      } : {\n        behaviours: [],\n        components\n      };\n      const getListContainer = component => detail.shell ? Optional.some(component) : getPart(component, detail, 'items');\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components: extra.components,\n        behaviours: augment(detail.listBehaviours, extra.behaviours),\n        apis: { setItems }\n      };\n    };\n    const CustomList = composite({\n      name: name(),\n      configFields: schema$f(),\n      partFields: parts$9(),\n      factory: factory$f,\n      apis: {\n        setItems: (apis, list, items) => {\n          apis.setItems(list, items);\n        }\n      }\n    });\n\n    const schema$e = constant$1([\n      required$1('dom'),\n      defaulted('shell', true),\n      field('toolbarBehaviours', [Replacing])\n    ]);\n    const enhanceGroups = () => ({ behaviours: derive$1([Replacing.config({})]) });\n    const parts$8 = constant$1([optional({\n        name: 'groups',\n        overrides: enhanceGroups\n      })]);\n\n    const factory$e = (detail, components, _spec, _externals) => {\n      const setGroups = (toolbar, groups) => {\n        getGroupContainer(toolbar).fold(() => {\n          console.error('Toolbar was defined to not be a shell, but no groups container was specified in components');\n          throw new Error('Toolbar was defined to not be a shell, but no groups container was specified in components');\n        }, container => {\n          Replacing.set(container, groups);\n        });\n      };\n      const getGroupContainer = component => detail.shell ? Optional.some(component) : getPart(component, detail, 'groups');\n      const extra = detail.shell ? {\n        behaviours: [Replacing.config({})],\n        components: []\n      } : {\n        behaviours: [],\n        components\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components: extra.components,\n        behaviours: augment(detail.toolbarBehaviours, extra.behaviours),\n        apis: {\n          setGroups,\n          refresh: noop\n        },\n        domModification: { attributes: { role: 'group' } }\n      };\n    };\n    const Toolbar = composite({\n      name: 'Toolbar',\n      configFields: schema$e(),\n      partFields: parts$8(),\n      factory: factory$e,\n      apis: {\n        setGroups: (apis, toolbar, groups) => {\n          apis.setGroups(toolbar, groups);\n        }\n      }\n    });\n\n    const setup$a = noop;\n    const isDocked$2 = never;\n    const getBehaviours$1 = constant$1([]);\n\n    var StaticHeader = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        setup: setup$a,\n        isDocked: isDocked$2,\n        getBehaviours: getBehaviours$1\n    });\n\n    const getOffsetParent = element => {\n      const isFixed = is$1(getRaw(element, 'position'), 'fixed');\n      const offsetParent$1 = isFixed ? Optional.none() : offsetParent(element);\n      return offsetParent$1.orThunk(() => {\n        const marker = SugarElement.fromTag('span');\n        return parent(element).bind(parent => {\n          append$2(parent, marker);\n          const offsetParent$1 = offsetParent(marker);\n          remove$5(marker);\n          return offsetParent$1;\n        });\n      });\n    };\n    const getOrigin = element => getOffsetParent(element).map(absolute$3).getOrThunk(() => SugarPosition(0, 0));\n\n    const appear = (component, contextualInfo) => {\n      const elem = component.element;\n      add$2(elem, contextualInfo.transitionClass);\n      remove$2(elem, contextualInfo.fadeOutClass);\n      add$2(elem, contextualInfo.fadeInClass);\n      contextualInfo.onShow(component);\n    };\n    const disappear = (component, contextualInfo) => {\n      const elem = component.element;\n      add$2(elem, contextualInfo.transitionClass);\n      remove$2(elem, contextualInfo.fadeInClass);\n      add$2(elem, contextualInfo.fadeOutClass);\n      contextualInfo.onHide(component);\n    };\n    const isPartiallyVisible = (box, bounds) => box.y < bounds.bottom && box.bottom > bounds.y;\n    const isTopCompletelyVisible = (box, bounds) => box.y >= bounds.y;\n    const isBottomCompletelyVisible = (box, bounds) => box.bottom <= bounds.bottom;\n    const forceTopPosition = (winBox, leftX, viewport) => ({\n      location: 'top',\n      leftX,\n      topY: viewport.bounds.y - winBox.y\n    });\n    const forceBottomPosition = (winBox, leftX, viewport) => ({\n      location: 'bottom',\n      leftX,\n      bottomY: winBox.bottom - viewport.bounds.bottom\n    });\n    const getDockedLeftPosition = bounds => {\n      return bounds.box.x - bounds.win.x;\n    };\n    const tryDockingPosition = (modes, bounds, viewport) => {\n      const winBox = bounds.win;\n      const box = bounds.box;\n      const leftX = getDockedLeftPosition(bounds);\n      return findMap(modes, mode => {\n        switch (mode) {\n        case 'bottom':\n          return !isBottomCompletelyVisible(box, viewport.bounds) ? Optional.some(forceBottomPosition(winBox, leftX, viewport)) : Optional.none();\n        case 'top':\n          return !isTopCompletelyVisible(box, viewport.bounds) ? Optional.some(forceTopPosition(winBox, leftX, viewport)) : Optional.none();\n        default:\n          return Optional.none();\n        }\n      }).getOr({ location: 'no-dock' });\n    };\n    const isVisibleForModes = (modes, box, viewport) => forall(modes, mode => {\n      switch (mode) {\n      case 'bottom':\n        return isBottomCompletelyVisible(box, viewport.bounds);\n      case 'top':\n        return isTopCompletelyVisible(box, viewport.bounds);\n      }\n    });\n    const getXYForRestoring = (pos, viewport) => {\n      const priorY = viewport.optScrollEnv.fold(constant$1(pos.bounds.y), scrollEnv => scrollEnv.scrollElmTop + (pos.bounds.y - scrollEnv.currentScrollTop));\n      return SugarPosition(pos.bounds.x, priorY);\n    };\n    const getXYForSaving = (box, viewport) => {\n      const priorY = viewport.optScrollEnv.fold(constant$1(box.y), scrollEnv => box.y + scrollEnv.currentScrollTop - scrollEnv.scrollElmTop);\n      return SugarPosition(box.x, priorY);\n    };\n    const getPrior = (elem, viewport, state) => state.getInitialPos().map(pos => {\n      const xy = getXYForRestoring(pos, viewport);\n      return {\n        box: bounds(xy.left, xy.top, get$c(elem), get$d(elem)),\n        location: pos.location\n      };\n    });\n    const storePrior = (elem, box, viewport, state, decision) => {\n      const xy = getXYForSaving(box, viewport);\n      const bounds$1 = bounds(xy.left, xy.top, box.width, box.height);\n      state.setInitialPos({\n        style: getAllRaw(elem),\n        position: get$e(elem, 'position') || 'static',\n        bounds: bounds$1,\n        location: decision.location\n      });\n    };\n    const storePriorIfNone = (elem, box, viewport, state, decision) => {\n      state.getInitialPos().fold(() => storePrior(elem, box, viewport, state, decision), () => noop);\n    };\n    const revertToOriginal = (elem, box, state) => state.getInitialPos().bind(position => {\n      var _a;\n      state.clearInitialPos();\n      switch (position.position) {\n      case 'static':\n        return Optional.some({ morph: 'static' });\n      case 'absolute':\n        const offsetParent = getOffsetParent(elem).getOr(body());\n        const offsetBox = box$1(offsetParent);\n        const scrollDelta = (_a = offsetParent.dom.scrollTop) !== null && _a !== void 0 ? _a : 0;\n        return Optional.some({\n          morph: 'absolute',\n          positionCss: NuPositionCss('absolute', get$g(position.style, 'left').map(_left => box.x - offsetBox.x), get$g(position.style, 'top').map(_top => box.y - offsetBox.y + scrollDelta), get$g(position.style, 'right').map(_right => offsetBox.right - box.right), get$g(position.style, 'bottom').map(_bottom => offsetBox.bottom - box.bottom))\n        });\n      default:\n        return Optional.none();\n      }\n    });\n    const tryMorphToOriginal = (elem, viewport, state) => getPrior(elem, viewport, state).filter(({box}) => isVisibleForModes(state.getModes(), box, viewport)).bind(({box}) => revertToOriginal(elem, box, state));\n    const tryDecisionToFixedMorph = decision => {\n      switch (decision.location) {\n      case 'top': {\n          return Optional.some({\n            morph: 'fixed',\n            positionCss: NuPositionCss('fixed', Optional.some(decision.leftX), Optional.some(decision.topY), Optional.none(), Optional.none())\n          });\n        }\n      case 'bottom': {\n          return Optional.some({\n            morph: 'fixed',\n            positionCss: NuPositionCss('fixed', Optional.some(decision.leftX), Optional.none(), Optional.none(), Optional.some(decision.bottomY))\n          });\n        }\n      default:\n        return Optional.none();\n      }\n    };\n    const tryMorphToFixed = (elem, viewport, state) => {\n      const box = box$1(elem);\n      const winBox = win();\n      const decision = tryDockingPosition(state.getModes(), {\n        win: winBox,\n        box\n      }, viewport);\n      if (decision.location === 'top' || decision.location === 'bottom') {\n        storePrior(elem, box, viewport, state, decision);\n        return tryDecisionToFixedMorph(decision);\n      } else {\n        return Optional.none();\n      }\n    };\n    const tryMorphToOriginalOrUpdateFixed = (elem, viewport, state) => {\n      return tryMorphToOriginal(elem, viewport, state).orThunk(() => {\n        return viewport.optScrollEnv.bind(_ => getPrior(elem, viewport, state)).bind(({box, location}) => {\n          const winBox = win();\n          const leftX = getDockedLeftPosition({\n            win: winBox,\n            box\n          });\n          const decision = location === 'top' ? forceTopPosition(winBox, leftX, viewport) : forceBottomPosition(winBox, leftX, viewport);\n          return tryDecisionToFixedMorph(decision);\n        });\n      });\n    };\n    const tryMorph = (component, viewport, state) => {\n      const elem = component.element;\n      const isDocked = is$1(getRaw(elem, 'position'), 'fixed');\n      return isDocked ? tryMorphToOriginalOrUpdateFixed(elem, viewport, state) : tryMorphToFixed(elem, viewport, state);\n    };\n    const calculateMorphToOriginal = (component, viewport, state) => {\n      const elem = component.element;\n      return getPrior(elem, viewport, state).bind(({box}) => revertToOriginal(elem, box, state));\n    };\n    const forceDockWith = (elem, viewport, state, getDecision) => {\n      const box = box$1(elem);\n      const winBox = win();\n      const leftX = getDockedLeftPosition({\n        win: winBox,\n        box\n      });\n      const decision = getDecision(winBox, leftX, viewport);\n      if (decision.location === 'bottom' || decision.location === 'top') {\n        storePriorIfNone(elem, box, viewport, state, decision);\n        return tryDecisionToFixedMorph(decision);\n      } else {\n        return Optional.none();\n      }\n    };\n\n    const morphToStatic = (component, config, state) => {\n      state.setDocked(false);\n      each$1([\n        'left',\n        'right',\n        'top',\n        'bottom',\n        'position'\n      ], prop => remove$6(component.element, prop));\n      config.onUndocked(component);\n    };\n    const morphToCoord = (component, config, state, position) => {\n      const isDocked = position.position === 'fixed';\n      state.setDocked(isDocked);\n      applyPositionCss(component.element, position);\n      const method = isDocked ? config.onDocked : config.onUndocked;\n      method(component);\n    };\n    const updateVisibility = (component, config, state, viewport, morphToDocked = false) => {\n      config.contextual.each(contextInfo => {\n        contextInfo.lazyContext(component).each(box => {\n          const isVisible = isPartiallyVisible(box, viewport.bounds);\n          if (isVisible !== state.isVisible()) {\n            state.setVisible(isVisible);\n            if (morphToDocked && !isVisible) {\n              add$1(component.element, [contextInfo.fadeOutClass]);\n              contextInfo.onHide(component);\n            } else {\n              const method = isVisible ? appear : disappear;\n              method(component, contextInfo);\n            }\n          }\n        });\n      });\n    };\n    const applyFixedMorph = (component, config, state, viewport, morph) => {\n      updateVisibility(component, config, state, viewport, true);\n      morphToCoord(component, config, state, morph.positionCss);\n    };\n    const applyMorph = (component, config, state, viewport, morph) => {\n      switch (morph.morph) {\n      case 'static': {\n          return morphToStatic(component, config, state);\n        }\n      case 'absolute': {\n          return morphToCoord(component, config, state, morph.positionCss);\n        }\n      case 'fixed': {\n          return applyFixedMorph(component, config, state, viewport, morph);\n        }\n      }\n    };\n    const refreshInternal = (component, config, state) => {\n      const viewport = config.lazyViewport(component);\n      updateVisibility(component, config, state, viewport);\n      tryMorph(component, viewport, state).each(morph => {\n        applyMorph(component, config, state, viewport, morph);\n      });\n    };\n    const resetInternal = (component, config, state) => {\n      const elem = component.element;\n      state.setDocked(false);\n      const viewport = config.lazyViewport(component);\n      calculateMorphToOriginal(component, viewport, state).each(staticOrAbsoluteMorph => {\n        switch (staticOrAbsoluteMorph.morph) {\n        case 'static': {\n            morphToStatic(component, config, state);\n            break;\n          }\n        case 'absolute': {\n            morphToCoord(component, config, state, staticOrAbsoluteMorph.positionCss);\n            break;\n          }\n        }\n      });\n      state.setVisible(true);\n      config.contextual.each(contextInfo => {\n        remove$1(elem, [\n          contextInfo.fadeInClass,\n          contextInfo.fadeOutClass,\n          contextInfo.transitionClass\n        ]);\n        contextInfo.onShow(component);\n      });\n      refresh$3(component, config, state);\n    };\n    const refresh$3 = (component, config, state) => {\n      if (component.getSystem().isConnected()) {\n        refreshInternal(component, config, state);\n      }\n    };\n    const reset = (component, config, state) => {\n      if (state.isDocked()) {\n        resetInternal(component, config, state);\n      }\n    };\n    const forceDockWithDecision = getDecision => (component, config, state) => {\n      const viewport = config.lazyViewport(component);\n      const optMorph = forceDockWith(component.element, viewport, state, getDecision);\n      optMorph.each(morph => {\n        applyFixedMorph(component, config, state, viewport, morph);\n      });\n    };\n    const forceDockToTop = forceDockWithDecision(forceTopPosition);\n    const forceDockToBottom = forceDockWithDecision(forceBottomPosition);\n    const isDocked$1 = (component, config, state) => state.isDocked();\n    const setModes = (component, config, state, modes) => state.setModes(modes);\n    const getModes = (component, config, state) => state.getModes();\n\n    var DockingApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        refresh: refresh$3,\n        reset: reset,\n        isDocked: isDocked$1,\n        getModes: getModes,\n        setModes: setModes,\n        forceDockToTop: forceDockToTop,\n        forceDockToBottom: forceDockToBottom\n    });\n\n    const events$4 = (dockInfo, dockState) => derive$2([\n      runOnSource(transitionend(), (component, simulatedEvent) => {\n        dockInfo.contextual.each(contextInfo => {\n          if (has(component.element, contextInfo.transitionClass)) {\n            remove$1(component.element, [\n              contextInfo.transitionClass,\n              contextInfo.fadeInClass\n            ]);\n            const notify = dockState.isVisible() ? contextInfo.onShown : contextInfo.onHidden;\n            notify(component);\n          }\n          simulatedEvent.stop();\n        });\n      }),\n      run$1(windowScroll(), (component, _) => {\n        refresh$3(component, dockInfo, dockState);\n      }),\n      run$1(externalElementScroll(), (component, _) => {\n        refresh$3(component, dockInfo, dockState);\n      }),\n      run$1(windowResize(), (component, _) => {\n        reset(component, dockInfo, dockState);\n      })\n    ]);\n\n    var ActiveDocking = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        events: events$4\n    });\n\n    var DockingSchema = [\n      optionObjOf('contextual', [\n        requiredString('fadeInClass'),\n        requiredString('fadeOutClass'),\n        requiredString('transitionClass'),\n        requiredFunction('lazyContext'),\n        onHandler('onShow'),\n        onHandler('onShown'),\n        onHandler('onHide'),\n        onHandler('onHidden')\n      ]),\n      defaultedFunction('lazyViewport', () => ({\n        bounds: win(),\n        optScrollEnv: Optional.none()\n      })),\n      defaultedArrayOf('modes', [\n        'top',\n        'bottom'\n      ], string),\n      onHandler('onDocked'),\n      onHandler('onUndocked')\n    ];\n\n    const init$5 = spec => {\n      const docked = Cell(false);\n      const visible = Cell(true);\n      const initialBounds = value$2();\n      const modes = Cell(spec.modes);\n      const readState = () => `docked:  ${ docked.get() }, visible: ${ visible.get() }, modes: ${ modes.get().join(',') }`;\n      return nu$8({\n        isDocked: docked.get,\n        setDocked: docked.set,\n        getInitialPos: initialBounds.get,\n        setInitialPos: initialBounds.set,\n        clearInitialPos: initialBounds.clear,\n        isVisible: visible.get,\n        setVisible: visible.set,\n        getModes: modes.get,\n        setModes: modes.set,\n        readState\n      });\n    };\n\n    var DockingState = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        init: init$5\n    });\n\n    const Docking = create$4({\n      fields: DockingSchema,\n      name: 'docking',\n      active: ActiveDocking,\n      apis: DockingApis,\n      state: DockingState\n    });\n\n    const toolbarHeightChange = constant$1(generate$6('toolbar-height-change'));\n\n    const visibility = {\n      fadeInClass: 'tox-editor-dock-fadein',\n      fadeOutClass: 'tox-editor-dock-fadeout',\n      transitionClass: 'tox-editor-dock-transition'\n    };\n    const editorStickyOnClass = 'tox-tinymce--toolbar-sticky-on';\n    const editorStickyOffClass = 'tox-tinymce--toolbar-sticky-off';\n    const scrollFromBehindHeader = (e, containerHeader) => {\n      const doc = owner$4(containerHeader);\n      const win = defaultView(containerHeader);\n      const viewHeight = win.dom.innerHeight;\n      const scrollPos = get$b(doc);\n      const markerElement = SugarElement.fromDom(e.elm);\n      const markerPos = absolute$2(markerElement);\n      const markerHeight = get$d(markerElement);\n      const markerTop = markerPos.y;\n      const markerBottom = markerTop + markerHeight;\n      const editorHeaderPos = absolute$3(containerHeader);\n      const editorHeaderHeight = get$d(containerHeader);\n      const editorHeaderTop = editorHeaderPos.top;\n      const editorHeaderBottom = editorHeaderTop + editorHeaderHeight;\n      const editorHeaderDockedAtTop = Math.abs(editorHeaderTop - scrollPos.top) < 2;\n      const editorHeaderDockedAtBottom = Math.abs(editorHeaderBottom - (scrollPos.top + viewHeight)) < 2;\n      if (editorHeaderDockedAtTop && markerTop < editorHeaderBottom) {\n        to(scrollPos.left, markerTop - editorHeaderHeight, doc);\n      } else if (editorHeaderDockedAtBottom && markerBottom > editorHeaderTop) {\n        const y = markerTop - viewHeight + markerHeight + editorHeaderHeight;\n        to(scrollPos.left, y, doc);\n      }\n    };\n    const isDockedMode = (header, mode) => contains$2(Docking.getModes(header), mode);\n    const updateIframeContentFlow = header => {\n      const getOccupiedHeight = elm => getOuter$2(elm) + (parseInt(get$e(elm, 'margin-top'), 10) || 0) + (parseInt(get$e(elm, 'margin-bottom'), 10) || 0);\n      const elm = header.element;\n      parentElement(elm).each(parentElem => {\n        const padding = 'padding-' + Docking.getModes(header)[0];\n        if (Docking.isDocked(header)) {\n          const parentWidth = get$c(parentElem);\n          set$8(elm, 'width', parentWidth + 'px');\n          set$8(parentElem, padding, getOccupiedHeight(elm) + 'px');\n        } else {\n          remove$6(elm, 'width');\n          remove$6(parentElem, padding);\n        }\n      });\n    };\n    const updateSinkVisibility = (sinkElem, visible) => {\n      if (visible) {\n        remove$2(sinkElem, visibility.fadeOutClass);\n        add$1(sinkElem, [\n          visibility.transitionClass,\n          visibility.fadeInClass\n        ]);\n      } else {\n        remove$2(sinkElem, visibility.fadeInClass);\n        add$1(sinkElem, [\n          visibility.fadeOutClass,\n          visibility.transitionClass\n        ]);\n      }\n    };\n    const updateEditorClasses = (editor, docked) => {\n      const editorContainer = SugarElement.fromDom(editor.getContainer());\n      if (docked) {\n        add$2(editorContainer, editorStickyOnClass);\n        remove$2(editorContainer, editorStickyOffClass);\n      } else {\n        add$2(editorContainer, editorStickyOffClass);\n        remove$2(editorContainer, editorStickyOnClass);\n      }\n    };\n    const restoreFocus = (headerElem, focusedElem) => {\n      const ownerDoc = owner$4(focusedElem);\n      active$1(ownerDoc).filter(activeElm => !eq(focusedElem, activeElm)).filter(activeElm => eq(activeElm, SugarElement.fromDom(ownerDoc.dom.body)) || contains(headerElem, activeElm)).each(() => focus$3(focusedElem));\n    };\n    const findFocusedElem = (rootElm, lazySink) => search(rootElm).orThunk(() => lazySink().toOptional().bind(sink => search(sink.element)));\n    const setup$9 = (editor, sharedBackstage, lazyHeader) => {\n      if (!editor.inline) {\n        if (!sharedBackstage.header.isPositionedAtTop()) {\n          editor.on('ResizeEditor', () => {\n            lazyHeader().each(Docking.reset);\n          });\n        }\n        editor.on('ResizeWindow ResizeEditor', () => {\n          lazyHeader().each(updateIframeContentFlow);\n        });\n        editor.on('SkinLoaded', () => {\n          lazyHeader().each(comp => {\n            Docking.isDocked(comp) ? Docking.reset(comp) : Docking.refresh(comp);\n          });\n        });\n        editor.on('FullscreenStateChanged', () => {\n          lazyHeader().each(Docking.reset);\n        });\n      }\n      editor.on('AfterScrollIntoView', e => {\n        lazyHeader().each(header => {\n          Docking.refresh(header);\n          const headerElem = header.element;\n          if (isVisible(headerElem)) {\n            scrollFromBehindHeader(e, headerElem);\n          }\n        });\n      });\n      editor.on('PostRender', () => {\n        updateEditorClasses(editor, false);\n      });\n    };\n    const isDocked = lazyHeader => lazyHeader().map(Docking.isDocked).getOr(false);\n    const getIframeBehaviours = () => [Receiving.config({ channels: { [toolbarHeightChange()]: { onReceive: updateIframeContentFlow } } })];\n    const getBehaviours = (editor, sharedBackstage) => {\n      const focusedElm = value$2();\n      const lazySink = sharedBackstage.getSink;\n      const runOnSinkElement = f => {\n        lazySink().each(sink => f(sink.element));\n      };\n      const onDockingSwitch = comp => {\n        if (!editor.inline) {\n          updateIframeContentFlow(comp);\n        }\n        updateEditorClasses(editor, Docking.isDocked(comp));\n        comp.getSystem().broadcastOn([repositionPopups()], {});\n        lazySink().each(sink => sink.getSystem().broadcastOn([repositionPopups()], {}));\n      };\n      const additionalBehaviours = editor.inline ? [] : getIframeBehaviours();\n      return [\n        Focusing.config({}),\n        Docking.config({\n          contextual: {\n            lazyContext: comp => {\n              const headerHeight = getOuter$2(comp.element);\n              const container = editor.inline ? editor.getContentAreaContainer() : editor.getContainer();\n              return Optional.from(container).map(c => {\n                const box = box$1(SugarElement.fromDom(c));\n                const optScrollingContext = detectWhenSplitUiMode(editor, comp.element);\n                return optScrollingContext.fold(() => {\n                  const boxHeight = box.height - headerHeight;\n                  const topBound = box.y + (isDockedMode(comp, 'top') ? 0 : headerHeight);\n                  return bounds(box.x, topBound, box.width, boxHeight);\n                }, scrollEnv => {\n                  const constrainedBounds = constrain(box, getBoundsFrom(scrollEnv));\n                  const constrainedBoundsY = isDockedMode(comp, 'top') ? constrainedBounds.y : constrainedBounds.y + headerHeight;\n                  return bounds(constrainedBounds.x, constrainedBoundsY, constrainedBounds.width, constrainedBounds.height - headerHeight);\n                });\n              });\n            },\n            onShow: () => {\n              runOnSinkElement(elem => updateSinkVisibility(elem, true));\n            },\n            onShown: comp => {\n              runOnSinkElement(elem => remove$1(elem, [\n                visibility.transitionClass,\n                visibility.fadeInClass\n              ]));\n              focusedElm.get().each(elem => {\n                restoreFocus(comp.element, elem);\n                focusedElm.clear();\n              });\n            },\n            onHide: comp => {\n              findFocusedElem(comp.element, lazySink).fold(focusedElm.clear, focusedElm.set);\n              runOnSinkElement(elem => updateSinkVisibility(elem, false));\n            },\n            onHidden: () => {\n              runOnSinkElement(elem => remove$1(elem, [visibility.transitionClass]));\n            },\n            ...visibility\n          },\n          lazyViewport: comp => {\n            const optScrollingContext = detectWhenSplitUiMode(editor, comp.element);\n            return optScrollingContext.fold(() => {\n              const boundsWithoutOffset = win();\n              const offset = getStickyToolbarOffset(editor);\n              const top = boundsWithoutOffset.y + (isDockedMode(comp, 'top') ? offset : 0);\n              const height = boundsWithoutOffset.height - (isDockedMode(comp, 'bottom') ? offset : 0);\n              return {\n                bounds: bounds(boundsWithoutOffset.x, top, boundsWithoutOffset.width, height),\n                optScrollEnv: Optional.none()\n              };\n            }, sc => {\n              const combinedBounds = getBoundsFrom(sc);\n              return {\n                bounds: combinedBounds,\n                optScrollEnv: Optional.some({\n                  currentScrollTop: sc.element.dom.scrollTop,\n                  scrollElmTop: absolute$3(sc.element).top\n                })\n              };\n            });\n          },\n          modes: [sharedBackstage.header.getDockingMode()],\n          onDocked: onDockingSwitch,\n          onUndocked: onDockingSwitch\n        }),\n        ...additionalBehaviours\n      ];\n    };\n\n    var StickyHeader = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        setup: setup$9,\n        isDocked: isDocked,\n        getBehaviours: getBehaviours\n    });\n\n    const renderHeader = spec => {\n      const editor = spec.editor;\n      const getBehaviours$2 = spec.sticky ? getBehaviours : getBehaviours$1;\n      return {\n        uid: spec.uid,\n        dom: spec.dom,\n        components: spec.components,\n        behaviours: derive$1(getBehaviours$2(editor, spec.sharedBackstage))\n      };\n    };\n\n    const groupToolbarButtonSchema = objOf([\n      type,\n      requiredOf('items', oneOf([\n        arrOfObj([\n          name$1,\n          requiredArrayOf('items', string)\n        ]),\n        string\n      ]))\n    ].concat(baseToolbarButtonFields));\n    const createGroupToolbarButton = spec => asRaw('GroupToolbarButton', groupToolbarButtonSchema, spec);\n\n    const baseMenuButtonFields = [\n      optionString('text'),\n      optionString('tooltip'),\n      optionString('icon'),\n      defaultedOf('search', false, oneOf([\n        boolean,\n        objOf([optionString('placeholder')])\n      ], x => {\n        if (isBoolean(x)) {\n          return x ? Optional.some({ placeholder: Optional.none() }) : Optional.none();\n        } else {\n          return Optional.some(x);\n        }\n      })),\n      requiredFunction('fetch'),\n      defaultedFunction('onSetup', () => noop)\n    ];\n\n    const MenuButtonSchema = objOf([\n      type,\n      ...baseMenuButtonFields\n    ]);\n    const createMenuButton = spec => asRaw('menubutton', MenuButtonSchema, spec);\n\n    const splitButtonSchema = objOf([\n      type,\n      optionalTooltip,\n      optionalIcon,\n      optionalText,\n      optionalSelect,\n      fetch$1,\n      onSetup,\n      defaultedStringEnum('presets', 'normal', [\n        'normal',\n        'color',\n        'listpreview'\n      ]),\n      defaultedColumns(1),\n      onAction,\n      onItemAction\n    ]);\n    const createSplitButton = spec => asRaw('SplitButton', splitButtonSchema, spec);\n\n    const factory$d = (detail, spec) => {\n      const setMenus = (comp, menus) => {\n        const newMenus = map$2(menus, m => {\n          const buttonSpec = {\n            type: 'menubutton',\n            text: m.text,\n            fetch: callback => {\n              callback(m.getItems());\n            }\n          };\n          const internal = createMenuButton(buttonSpec).mapError(errInfo => formatError(errInfo)).getOrDie();\n          return renderMenuButton(internal, 'tox-mbtn', spec.backstage, Optional.some('menuitem'));\n        });\n        Replacing.set(comp, newMenus);\n      };\n      const apis = {\n        focus: Keying.focusIn,\n        setMenus\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components: [],\n        behaviours: derive$1([\n          Replacing.config({}),\n          config('menubar-events', [\n            runOnAttached(component => {\n              detail.onSetup(component);\n            }),\n            run$1(mouseover(), (comp, se) => {\n              descendant(comp.element, '.' + 'tox-mbtn--active').each(activeButton => {\n                closest$1(se.event.target, '.' + 'tox-mbtn').each(hoveredButton => {\n                  if (!eq(activeButton, hoveredButton)) {\n                    comp.getSystem().getByDom(activeButton).each(activeComp => {\n                      comp.getSystem().getByDom(hoveredButton).each(hoveredComp => {\n                        Dropdown.expand(hoveredComp);\n                        Dropdown.close(activeComp);\n                        Focusing.focus(hoveredComp);\n                      });\n                    });\n                  }\n                });\n              });\n            }),\n            run$1(focusShifted(), (comp, se) => {\n              se.event.prevFocus.bind(prev => comp.getSystem().getByDom(prev).toOptional()).each(prev => {\n                se.event.newFocus.bind(nu => comp.getSystem().getByDom(nu).toOptional()).each(nu => {\n                  if (Dropdown.isOpen(prev)) {\n                    Dropdown.expand(nu);\n                    Dropdown.close(prev);\n                  }\n                });\n              });\n            })\n          ]),\n          Keying.config({\n            mode: 'flow',\n            selector: '.' + 'tox-mbtn',\n            onEscape: comp => {\n              detail.onEscape(comp);\n              return Optional.some(true);\n            }\n          }),\n          Tabstopping.config({})\n        ]),\n        apis,\n        domModification: { attributes: { role: 'menubar' } }\n      };\n    };\n    var SilverMenubar = single({\n      factory: factory$d,\n      name: 'silver.Menubar',\n      configFields: [\n        required$1('dom'),\n        required$1('uid'),\n        required$1('onEscape'),\n        required$1('backstage'),\n        defaulted('onSetup', noop)\n      ],\n      apis: {\n        focus: (apis, comp) => {\n          apis.focus(comp);\n        },\n        setMenus: (apis, comp, menus) => {\n          apis.setMenus(comp, menus);\n        }\n      }\n    });\n\n    const promotionMessage = '\\u26A1\\ufe0fUpgrade';\n    const promotionLink = 'https://www.tiny.cloud/tinymce-self-hosted-premium-features/?utm_campaign=self_hosted_upgrade_promo&utm_source=tiny&utm_medium=referral';\n    const renderPromotion = spec => {\n      return {\n        uid: spec.uid,\n        dom: spec.dom,\n        components: [{\n            dom: {\n              tag: 'a',\n              attributes: {\n                'href': promotionLink,\n                'rel': 'noopener',\n                'target': '_blank',\n                'aria-hidden': 'true'\n              },\n              classes: ['tox-promotion-link'],\n              innerHtml: promotionMessage\n            }\n          }]\n      };\n    };\n\n    const owner = 'container';\n    const schema$d = [field('slotBehaviours', [])];\n    const getPartName = name => '<alloy.field.' + name + '>';\n    const sketch = sSpec => {\n      const parts = (() => {\n        const record = [];\n        const slot = (name, config) => {\n          record.push(name);\n          return generateOne$1(owner, getPartName(name), config);\n        };\n        return {\n          slot,\n          record: constant$1(record)\n        };\n      })();\n      const spec = sSpec(parts);\n      const partNames = parts.record();\n      const fieldParts = map$2(partNames, n => required({\n        name: n,\n        pname: getPartName(n)\n      }));\n      return composite$1(owner, schema$d, fieldParts, make$1, spec);\n    };\n    const make$1 = (detail, components) => {\n      const getSlotNames = _ => getAllPartNames(detail);\n      const getSlot = (container, key) => getPart(container, detail, key);\n      const onSlot = (f, def) => (container, key) => getPart(container, detail, key).map(slot => f(slot, key)).getOr(def);\n      const onSlots = f => (container, keys) => {\n        each$1(keys, key => f(container, key));\n      };\n      const doShowing = (comp, _key) => get$f(comp.element, 'aria-hidden') !== 'true';\n      const doShow = (comp, key) => {\n        if (!doShowing(comp)) {\n          const element = comp.element;\n          remove$6(element, 'display');\n          remove$7(element, 'aria-hidden');\n          emitWith(comp, slotVisibility(), {\n            name: key,\n            visible: true\n          });\n        }\n      };\n      const doHide = (comp, key) => {\n        if (doShowing(comp)) {\n          const element = comp.element;\n          set$8(element, 'display', 'none');\n          set$9(element, 'aria-hidden', 'true');\n          emitWith(comp, slotVisibility(), {\n            name: key,\n            visible: false\n          });\n        }\n      };\n      const isShowing = onSlot(doShowing, false);\n      const hideSlot = onSlot(doHide);\n      const hideSlots = onSlots(hideSlot);\n      const hideAllSlots = container => hideSlots(container, getSlotNames());\n      const showSlot = onSlot(doShow);\n      const apis = {\n        getSlotNames,\n        getSlot,\n        isShowing,\n        hideSlot,\n        hideAllSlots,\n        showSlot\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components,\n        behaviours: get$3(detail.slotBehaviours),\n        apis\n      };\n    };\n    const slotApis = map$1({\n      getSlotNames: (apis, c) => apis.getSlotNames(c),\n      getSlot: (apis, c, key) => apis.getSlot(c, key),\n      isShowing: (apis, c, key) => apis.isShowing(c, key),\n      hideSlot: (apis, c, key) => apis.hideSlot(c, key),\n      hideAllSlots: (apis, c) => apis.hideAllSlots(c),\n      showSlot: (apis, c, key) => apis.showSlot(c, key)\n    }, value => makeApi(value));\n    const SlotContainer = {\n      ...slotApis,\n      ...{ sketch }\n    };\n\n    const sidebarSchema = objOf([\n      optionalIcon,\n      optionalTooltip,\n      defaultedFunction('onShow', noop),\n      defaultedFunction('onHide', noop),\n      onSetup\n    ]);\n    const createSidebar = spec => asRaw('sidebar', sidebarSchema, spec);\n\n    const setup$8 = editor => {\n      const {sidebars} = editor.ui.registry.getAll();\n      each$1(keys(sidebars), name => {\n        const spec = sidebars[name];\n        const isActive = () => is$1(Optional.from(editor.queryCommandValue('ToggleSidebar')), name);\n        editor.ui.registry.addToggleButton(name, {\n          icon: spec.icon,\n          tooltip: spec.tooltip,\n          onAction: buttonApi => {\n            editor.execCommand('ToggleSidebar', false, name);\n            buttonApi.setActive(isActive());\n          },\n          onSetup: buttonApi => {\n            buttonApi.setActive(isActive());\n            const handleToggle = () => buttonApi.setActive(isActive());\n            editor.on('ToggleSidebar', handleToggle);\n            return () => {\n              editor.off('ToggleSidebar', handleToggle);\n            };\n          }\n        });\n      });\n    };\n    const getApi = comp => ({ element: () => comp.element.dom });\n    const makePanels = (parts, panelConfigs) => {\n      const specs = map$2(keys(panelConfigs), name => {\n        const spec = panelConfigs[name];\n        const bridged = getOrDie(createSidebar(spec));\n        return {\n          name,\n          getApi,\n          onSetup: bridged.onSetup,\n          onShow: bridged.onShow,\n          onHide: bridged.onHide\n        };\n      });\n      return map$2(specs, spec => {\n        const editorOffCell = Cell(noop);\n        return parts.slot(spec.name, {\n          dom: {\n            tag: 'div',\n            classes: ['tox-sidebar__pane']\n          },\n          behaviours: SimpleBehaviours.unnamedEvents([\n            onControlAttached(spec, editorOffCell),\n            onControlDetached(spec, editorOffCell),\n            run$1(slotVisibility(), (sidepanel, se) => {\n              const data = se.event;\n              const optSidePanelSpec = find$5(specs, config => config.name === data.name);\n              optSidePanelSpec.each(sidePanelSpec => {\n                const handler = data.visible ? sidePanelSpec.onShow : sidePanelSpec.onHide;\n                handler(sidePanelSpec.getApi(sidepanel));\n              });\n            })\n          ])\n        });\n      });\n    };\n    const makeSidebar = panelConfigs => SlotContainer.sketch(parts => ({\n      dom: {\n        tag: 'div',\n        classes: ['tox-sidebar__pane-container']\n      },\n      components: makePanels(parts, panelConfigs),\n      slotBehaviours: SimpleBehaviours.unnamedEvents([runOnAttached(slotContainer => SlotContainer.hideAllSlots(slotContainer))])\n    }));\n    const setSidebar = (sidebar, panelConfigs, showSidebar) => {\n      const optSlider = Composing.getCurrent(sidebar);\n      optSlider.each(slider => {\n        Replacing.set(slider, [makeSidebar(panelConfigs)]);\n        const configKey = showSidebar === null || showSidebar === void 0 ? void 0 : showSidebar.toLowerCase();\n        if (isString(configKey) && has$2(panelConfigs, configKey)) {\n          Composing.getCurrent(slider).each(slotContainer => {\n            SlotContainer.showSlot(slotContainer, configKey);\n            Sliding.immediateGrow(slider);\n            remove$6(slider.element, 'width');\n            updateSidebarRoleOnToggle(sidebar.element, 'region');\n          });\n        }\n      });\n    };\n    const updateSidebarRoleOnToggle = (sidebar, sidebarState) => {\n      set$9(sidebar, 'role', sidebarState);\n    };\n    const toggleSidebar = (sidebar, name) => {\n      const optSlider = Composing.getCurrent(sidebar);\n      optSlider.each(slider => {\n        const optSlotContainer = Composing.getCurrent(slider);\n        optSlotContainer.each(slotContainer => {\n          if (Sliding.hasGrown(slider)) {\n            if (SlotContainer.isShowing(slotContainer, name)) {\n              Sliding.shrink(slider);\n              updateSidebarRoleOnToggle(sidebar.element, 'presentation');\n            } else {\n              SlotContainer.hideAllSlots(slotContainer);\n              SlotContainer.showSlot(slotContainer, name);\n              updateSidebarRoleOnToggle(sidebar.element, 'region');\n            }\n          } else {\n            SlotContainer.hideAllSlots(slotContainer);\n            SlotContainer.showSlot(slotContainer, name);\n            Sliding.grow(slider);\n            updateSidebarRoleOnToggle(sidebar.element, 'region');\n          }\n        });\n      });\n    };\n    const whichSidebar = sidebar => {\n      const optSlider = Composing.getCurrent(sidebar);\n      return optSlider.bind(slider => {\n        const sidebarOpen = Sliding.isGrowing(slider) || Sliding.hasGrown(slider);\n        if (sidebarOpen) {\n          const optSlotContainer = Composing.getCurrent(slider);\n          return optSlotContainer.bind(slotContainer => find$5(SlotContainer.getSlotNames(slotContainer), name => SlotContainer.isShowing(slotContainer, name)));\n        } else {\n          return Optional.none();\n        }\n      });\n    };\n    const fixSize = generate$6('FixSizeEvent');\n    const autoSize = generate$6('AutoSizeEvent');\n    const renderSidebar = spec => ({\n      uid: spec.uid,\n      dom: {\n        tag: 'div',\n        classes: ['tox-sidebar'],\n        attributes: { role: 'presentation' }\n      },\n      components: [{\n          dom: {\n            tag: 'div',\n            classes: ['tox-sidebar__slider']\n          },\n          components: [],\n          behaviours: derive$1([\n            Tabstopping.config({}),\n            Focusing.config({}),\n            Sliding.config({\n              dimension: { property: 'width' },\n              closedClass: 'tox-sidebar--sliding-closed',\n              openClass: 'tox-sidebar--sliding-open',\n              shrinkingClass: 'tox-sidebar--sliding-shrinking',\n              growingClass: 'tox-sidebar--sliding-growing',\n              onShrunk: slider => {\n                const optSlotContainer = Composing.getCurrent(slider);\n                optSlotContainer.each(SlotContainer.hideAllSlots);\n                emit(slider, autoSize);\n              },\n              onGrown: slider => {\n                emit(slider, autoSize);\n              },\n              onStartGrow: slider => {\n                emitWith(slider, fixSize, { width: getRaw(slider.element, 'width').getOr('') });\n              },\n              onStartShrink: slider => {\n                emitWith(slider, fixSize, { width: get$c(slider.element) + 'px' });\n              }\n            }),\n            Replacing.config({}),\n            Composing.config({\n              find: comp => {\n                const children = Replacing.contents(comp);\n                return head(children);\n              }\n            })\n          ])\n        }],\n      behaviours: derive$1([\n        ComposingConfigs.childAt(0),\n        config('sidebar-sliding-events', [\n          run$1(fixSize, (comp, se) => {\n            set$8(comp.element, 'width', se.event.width);\n          }),\n          run$1(autoSize, (comp, _se) => {\n            remove$6(comp.element, 'width');\n          })\n        ])\n      ])\n    });\n\n    const block = (component, config, state, getBusySpec) => {\n      set$9(component.element, 'aria-busy', true);\n      const root = config.getRoot(component).getOr(component);\n      const blockerBehaviours = derive$1([\n        Keying.config({\n          mode: 'special',\n          onTab: () => Optional.some(true),\n          onShiftTab: () => Optional.some(true)\n        }),\n        Focusing.config({})\n      ]);\n      const blockSpec = getBusySpec(root, blockerBehaviours);\n      const blocker = root.getSystem().build(blockSpec);\n      Replacing.append(root, premade(blocker));\n      if (blocker.hasConfigured(Keying) && config.focus) {\n        Keying.focusIn(blocker);\n      }\n      if (!state.isBlocked()) {\n        config.onBlock(component);\n      }\n      state.blockWith(() => Replacing.remove(root, blocker));\n    };\n    const unblock = (component, config, state) => {\n      remove$7(component.element, 'aria-busy');\n      if (state.isBlocked()) {\n        config.onUnblock(component);\n      }\n      state.clear();\n    };\n    const isBlocked = (component, blockingConfig, blockingState) => blockingState.isBlocked();\n\n    var BlockingApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        block: block,\n        unblock: unblock,\n        isBlocked: isBlocked\n    });\n\n    var BlockingSchema = [\n      defaultedFunction('getRoot', Optional.none),\n      defaultedBoolean('focus', true),\n      onHandler('onBlock'),\n      onHandler('onUnblock')\n    ];\n\n    const init$4 = () => {\n      const blocker = destroyable();\n      const blockWith = destroy => {\n        blocker.set({ destroy });\n      };\n      return nu$8({\n        readState: blocker.isSet,\n        blockWith,\n        clear: blocker.clear,\n        isBlocked: blocker.isSet\n      });\n    };\n\n    var BlockingState = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        init: init$4\n    });\n\n    const Blocking = create$4({\n      fields: BlockingSchema,\n      name: 'blocking',\n      apis: BlockingApis,\n      state: BlockingState\n    });\n\n    const getBusySpec$1 = providerBackstage => (_root, _behaviours) => ({\n      dom: {\n        tag: 'div',\n        attributes: {\n          'aria-label': providerBackstage.translate('Loading...'),\n          'tabindex': '0'\n        },\n        classes: ['tox-throbber__busy-spinner']\n      },\n      components: [{ dom: fromHtml('<div class=\"tox-spinner\"><div></div><div></div><div></div></div>') }]\n    });\n    const focusBusyComponent = throbber => Composing.getCurrent(throbber).each(comp => focus$3(comp.element, true));\n    const toggleEditorTabIndex = (editor, state) => {\n      const tabIndexAttr = 'tabindex';\n      const dataTabIndexAttr = `data-mce-${ tabIndexAttr }`;\n      Optional.from(editor.iframeElement).map(SugarElement.fromDom).each(iframe => {\n        if (state) {\n          getOpt(iframe, tabIndexAttr).each(tabIndex => set$9(iframe, dataTabIndexAttr, tabIndex));\n          set$9(iframe, tabIndexAttr, -1);\n        } else {\n          remove$7(iframe, tabIndexAttr);\n          getOpt(iframe, dataTabIndexAttr).each(tabIndex => {\n            set$9(iframe, tabIndexAttr, tabIndex);\n            remove$7(iframe, dataTabIndexAttr);\n          });\n        }\n      });\n    };\n    const toggleThrobber = (editor, comp, state, providerBackstage) => {\n      const element = comp.element;\n      toggleEditorTabIndex(editor, state);\n      if (state) {\n        Blocking.block(comp, getBusySpec$1(providerBackstage));\n        remove$6(element, 'display');\n        remove$7(element, 'aria-hidden');\n        if (editor.hasFocus()) {\n          focusBusyComponent(comp);\n        }\n      } else {\n        const throbberFocus = Composing.getCurrent(comp).exists(busyComp => hasFocus(busyComp.element));\n        Blocking.unblock(comp);\n        set$8(element, 'display', 'none');\n        set$9(element, 'aria-hidden', 'true');\n        if (throbberFocus) {\n          editor.focus();\n        }\n      }\n    };\n    const renderThrobber = spec => ({\n      uid: spec.uid,\n      dom: {\n        tag: 'div',\n        attributes: { 'aria-hidden': 'true' },\n        classes: ['tox-throbber'],\n        styles: { display: 'none' }\n      },\n      behaviours: derive$1([\n        Replacing.config({}),\n        Blocking.config({ focus: false }),\n        Composing.config({ find: comp => head(comp.components()) })\n      ]),\n      components: []\n    });\n    const isFocusEvent = event => event.type === 'focusin';\n    const isPasteBinTarget = event => {\n      if (isFocusEvent(event)) {\n        const node = event.composed ? head(event.composedPath()) : Optional.from(event.target);\n        return node.map(SugarElement.fromDom).filter(isElement$1).exists(targetElm => has(targetElm, 'mce-pastebin'));\n      } else {\n        return false;\n      }\n    };\n    const setup$7 = (editor, lazyThrobber, sharedBackstage) => {\n      const throbberState = Cell(false);\n      const timer = value$2();\n      const stealFocus = e => {\n        if (throbberState.get() && !isPasteBinTarget(e)) {\n          e.preventDefault();\n          focusBusyComponent(lazyThrobber());\n          editor.editorManager.setActive(editor);\n        }\n      };\n      if (!editor.inline) {\n        editor.on('PreInit', () => {\n          editor.dom.bind(editor.getWin(), 'focusin', stealFocus);\n          editor.on('BeforeExecCommand', e => {\n            if (e.command.toLowerCase() === 'mcefocus' && e.value !== true) {\n              stealFocus(e);\n            }\n          });\n        });\n      }\n      const toggle = state => {\n        if (state !== throbberState.get()) {\n          throbberState.set(state);\n          toggleThrobber(editor, lazyThrobber(), state, sharedBackstage.providers);\n          fireAfterProgressState(editor, state);\n        }\n      };\n      editor.on('ProgressState', e => {\n        timer.on(clearTimeout);\n        if (isNumber(e.time)) {\n          const timerId = global$9.setEditorTimeout(editor, () => toggle(e.state), e.time);\n          timer.set(timerId);\n        } else {\n          toggle(e.state);\n          timer.clear();\n        }\n      });\n    };\n\n    const generate$1 = (xs, f) => {\n      const init = {\n        len: 0,\n        list: []\n      };\n      const r = foldl(xs, (b, a) => {\n        const value = f(a, b.len);\n        return value.fold(constant$1(b), v => ({\n          len: v.finish,\n          list: b.list.concat([v])\n        }));\n      }, init);\n      return r.list;\n    };\n\n    const output = (within, extra, withinWidth) => ({\n      within,\n      extra,\n      withinWidth\n    });\n    const apportion = (units, total, len) => {\n      const parray = generate$1(units, (unit, current) => {\n        const width = len(unit);\n        return Optional.some({\n          element: unit,\n          start: current,\n          finish: current + width,\n          width\n        });\n      });\n      const within = filter$2(parray, unit => unit.finish <= total);\n      const withinWidth = foldr(within, (acc, el) => acc + el.width, 0);\n      const extra = parray.slice(within.length);\n      return {\n        within,\n        extra,\n        withinWidth\n      };\n    };\n    const toUnit = parray => map$2(parray, unit => unit.element);\n    const fitLast = (within, extra, withinWidth) => {\n      const fits = toUnit(within.concat(extra));\n      return output(fits, [], withinWidth);\n    };\n    const overflow = (within, extra, overflower, withinWidth) => {\n      const fits = toUnit(within).concat([overflower]);\n      return output(fits, toUnit(extra), withinWidth);\n    };\n    const fitAll = (within, extra, withinWidth) => output(toUnit(within), [], withinWidth);\n    const tryFit = (total, units, len) => {\n      const divide = apportion(units, total, len);\n      return divide.extra.length === 0 ? Optional.some(divide) : Optional.none();\n    };\n    const partition = (total, units, len, overflower) => {\n      const divide = tryFit(total, units, len).getOrThunk(() => apportion(units, total - len(overflower), len));\n      const within = divide.within;\n      const extra = divide.extra;\n      const withinWidth = divide.withinWidth;\n      if (extra.length === 1 && extra[0].width <= len(overflower)) {\n        return fitLast(within, extra, withinWidth);\n      } else if (extra.length >= 1) {\n        return overflow(within, extra, overflower, withinWidth);\n      } else {\n        return fitAll(within, extra, withinWidth);\n      }\n    };\n\n    const setGroups$1 = (toolbar, storedGroups) => {\n      const bGroups = map$2(storedGroups, g => premade(g));\n      Toolbar.setGroups(toolbar, bGroups);\n    };\n    const findFocusedComp = comps => findMap(comps, comp => search(comp.element).bind(focusedElm => comp.getSystem().getByDom(focusedElm).toOptional()));\n    const refresh$2 = (toolbar, detail, setOverflow) => {\n      const builtGroups = detail.builtGroups.get();\n      if (builtGroups.length === 0) {\n        return;\n      }\n      const primary = getPartOrDie(toolbar, detail, 'primary');\n      const overflowGroup = Coupling.getCoupled(toolbar, 'overflowGroup');\n      set$8(primary.element, 'visibility', 'hidden');\n      const groups = builtGroups.concat([overflowGroup]);\n      const focusedComp = findFocusedComp(groups);\n      setOverflow([]);\n      setGroups$1(primary, groups);\n      const availableWidth = get$c(primary.element);\n      const overflows = partition(availableWidth, detail.builtGroups.get(), comp => get$c(comp.element), overflowGroup);\n      if (overflows.extra.length === 0) {\n        Replacing.remove(primary, overflowGroup);\n        setOverflow([]);\n      } else {\n        setGroups$1(primary, overflows.within);\n        setOverflow(overflows.extra);\n      }\n      remove$6(primary.element, 'visibility');\n      reflow(primary.element);\n      focusedComp.each(Focusing.focus);\n    };\n\n    const schema$c = constant$1([\n      field('splitToolbarBehaviours', [Coupling]),\n      customField('builtGroups', () => Cell([]))\n    ]);\n\n    const schema$b = constant$1([\n      markers$1(['overflowToggledClass']),\n      optionFunction('getOverflowBounds'),\n      required$1('lazySink'),\n      customField('overflowGroups', () => Cell([])),\n      onHandler('onOpened'),\n      onHandler('onClosed')\n    ].concat(schema$c()));\n    const parts$7 = constant$1([\n      required({\n        factory: Toolbar,\n        schema: schema$e(),\n        name: 'primary'\n      }),\n      external({\n        schema: schema$e(),\n        name: 'overflow'\n      }),\n      external({ name: 'overflow-button' }),\n      external({ name: 'overflow-group' })\n    ]);\n\n    const expandable = constant$1((element, available) => {\n      setMax(element, Math.floor(available));\n    });\n\n    const schema$a = constant$1([\n      markers$1(['toggledClass']),\n      required$1('lazySink'),\n      requiredFunction('fetch'),\n      optionFunction('getBounds'),\n      optionObjOf('fireDismissalEventInstead', [defaulted('event', dismissRequested())]),\n      schema$y(),\n      onHandler('onToggled')\n    ]);\n    const parts$6 = constant$1([\n      external({\n        name: 'button',\n        overrides: detail => ({\n          dom: { attributes: { 'aria-haspopup': 'true' } },\n          buttonBehaviours: derive$1([Toggling.config({\n              toggleClass: detail.markers.toggledClass,\n              aria: { mode: 'expanded' },\n              toggleOnExecute: false,\n              onToggled: detail.onToggled\n            })])\n        })\n      }),\n      external({\n        factory: Toolbar,\n        schema: schema$e(),\n        name: 'toolbar',\n        overrides: detail => {\n          return {\n            toolbarBehaviours: derive$1([Keying.config({\n                mode: 'cyclic',\n                onEscape: comp => {\n                  getPart(comp, detail, 'button').each(Focusing.focus);\n                  return Optional.none();\n                }\n              })])\n          };\n        }\n      })\n    ]);\n\n    const shouldSkipFocus = value$2();\n    const toggleWithoutFocusing = (button, externals) => {\n      shouldSkipFocus.set(true);\n      toggle(button, externals);\n      shouldSkipFocus.clear();\n    };\n    const toggle = (button, externals) => {\n      const toolbarSandbox = Coupling.getCoupled(button, 'toolbarSandbox');\n      if (Sandboxing.isOpen(toolbarSandbox)) {\n        Sandboxing.close(toolbarSandbox);\n      } else {\n        Sandboxing.open(toolbarSandbox, externals.toolbar());\n      }\n    };\n    const position = (button, toolbar, detail, layouts) => {\n      const bounds = detail.getBounds.map(bounder => bounder());\n      const sink = detail.lazySink(button).getOrDie();\n      Positioning.positionWithinBounds(sink, toolbar, {\n        anchor: {\n          type: 'hotspot',\n          hotspot: button,\n          layouts,\n          overrides: { maxWidthFunction: expandable() }\n        }\n      }, bounds);\n    };\n    const setGroups = (button, toolbar, detail, layouts, groups) => {\n      Toolbar.setGroups(toolbar, groups);\n      position(button, toolbar, detail, layouts);\n      Toggling.on(button);\n    };\n    const makeSandbox = (button, spec, detail) => {\n      const ariaControls = manager();\n      const onOpen = (sandbox, toolbar) => {\n        const skipFocus = shouldSkipFocus.get().getOr(false);\n        detail.fetch().get(groups => {\n          setGroups(button, toolbar, detail, spec.layouts, groups);\n          ariaControls.link(button.element);\n          if (!skipFocus) {\n            Keying.focusIn(toolbar);\n          }\n        });\n      };\n      const onClose = () => {\n        Toggling.off(button);\n        if (!shouldSkipFocus.get().getOr(false)) {\n          Focusing.focus(button);\n        }\n        ariaControls.unlink(button.element);\n      };\n      return {\n        dom: {\n          tag: 'div',\n          attributes: { id: ariaControls.id }\n        },\n        behaviours: derive$1([\n          Keying.config({\n            mode: 'special',\n            onEscape: comp => {\n              Sandboxing.close(comp);\n              return Optional.some(true);\n            }\n          }),\n          Sandboxing.config({\n            onOpen,\n            onClose,\n            isPartOf: (container, data, queryElem) => {\n              return isPartOf$1(data, queryElem) || isPartOf$1(button, queryElem);\n            },\n            getAttachPoint: () => {\n              return detail.lazySink(button).getOrDie();\n            }\n          }),\n          Receiving.config({\n            channels: {\n              ...receivingChannel$1({\n                isExtraPart: never,\n                ...detail.fireDismissalEventInstead.map(fe => ({ fireEventInstead: { event: fe.event } })).getOr({})\n              }),\n              ...receivingChannel({\n                doReposition: () => {\n                  Sandboxing.getState(Coupling.getCoupled(button, 'toolbarSandbox')).each(toolbar => {\n                    position(button, toolbar, detail, spec.layouts);\n                  });\n                }\n              })\n            }\n          })\n        ])\n      };\n    };\n    const factory$c = (detail, components, spec, externals) => ({\n      ...Button.sketch({\n        ...externals.button(),\n        action: button => {\n          toggle(button, externals);\n        },\n        buttonBehaviours: SketchBehaviours.augment({ dump: externals.button().buttonBehaviours }, [Coupling.config({\n            others: {\n              toolbarSandbox: button => {\n                return makeSandbox(button, spec, detail);\n              }\n            }\n          })])\n      }),\n      apis: {\n        setGroups: (button, groups) => {\n          Sandboxing.getState(Coupling.getCoupled(button, 'toolbarSandbox')).each(toolbar => {\n            setGroups(button, toolbar, detail, spec.layouts, groups);\n          });\n        },\n        reposition: button => {\n          Sandboxing.getState(Coupling.getCoupled(button, 'toolbarSandbox')).each(toolbar => {\n            position(button, toolbar, detail, spec.layouts);\n          });\n        },\n        toggle: button => {\n          toggle(button, externals);\n        },\n        toggleWithoutFocusing: button => {\n          toggleWithoutFocusing(button, externals);\n        },\n        getToolbar: button => {\n          return Sandboxing.getState(Coupling.getCoupled(button, 'toolbarSandbox'));\n        },\n        isOpen: button => {\n          return Sandboxing.isOpen(Coupling.getCoupled(button, 'toolbarSandbox'));\n        }\n      }\n    });\n    const FloatingToolbarButton = composite({\n      name: 'FloatingToolbarButton',\n      factory: factory$c,\n      configFields: schema$a(),\n      partFields: parts$6(),\n      apis: {\n        setGroups: (apis, button, groups) => {\n          apis.setGroups(button, groups);\n        },\n        reposition: (apis, button) => {\n          apis.reposition(button);\n        },\n        toggle: (apis, button) => {\n          apis.toggle(button);\n        },\n        toggleWithoutFocusing: (apis, button) => {\n          apis.toggleWithoutFocusing(button);\n        },\n        getToolbar: (apis, button) => apis.getToolbar(button),\n        isOpen: (apis, button) => apis.isOpen(button)\n      }\n    });\n\n    const schema$9 = constant$1([\n      required$1('items'),\n      markers$1(['itemSelector']),\n      field('tgroupBehaviours', [Keying])\n    ]);\n    const parts$5 = constant$1([group({\n        name: 'items',\n        unit: 'item'\n      })]);\n\n    const factory$b = (detail, components, _spec, _externals) => ({\n      uid: detail.uid,\n      dom: detail.dom,\n      components,\n      behaviours: augment(detail.tgroupBehaviours, [Keying.config({\n          mode: 'flow',\n          selector: detail.markers.itemSelector\n        })]),\n      domModification: { attributes: { role: 'toolbar' } }\n    });\n    const ToolbarGroup = composite({\n      name: 'ToolbarGroup',\n      configFields: schema$9(),\n      partFields: parts$5(),\n      factory: factory$b\n    });\n\n    const buildGroups = comps => map$2(comps, g => premade(g));\n    const refresh$1 = (toolbar, memFloatingToolbarButton, detail) => {\n      refresh$2(toolbar, detail, overflowGroups => {\n        detail.overflowGroups.set(overflowGroups);\n        memFloatingToolbarButton.getOpt(toolbar).each(floatingToolbarButton => {\n          FloatingToolbarButton.setGroups(floatingToolbarButton, buildGroups(overflowGroups));\n        });\n      });\n    };\n    const factory$a = (detail, components, spec, externals) => {\n      const memFloatingToolbarButton = record(FloatingToolbarButton.sketch({\n        fetch: () => Future.nu(resolve => {\n          resolve(buildGroups(detail.overflowGroups.get()));\n        }),\n        layouts: {\n          onLtr: () => [\n            southwest$2,\n            southeast$2\n          ],\n          onRtl: () => [\n            southeast$2,\n            southwest$2\n          ],\n          onBottomLtr: () => [\n            northwest$2,\n            northeast$2\n          ],\n          onBottomRtl: () => [\n            northeast$2,\n            northwest$2\n          ]\n        },\n        getBounds: spec.getOverflowBounds,\n        lazySink: detail.lazySink,\n        fireDismissalEventInstead: {},\n        markers: { toggledClass: detail.markers.overflowToggledClass },\n        parts: {\n          button: externals['overflow-button'](),\n          toolbar: externals.overflow()\n        },\n        onToggled: (comp, state) => detail[state ? 'onOpened' : 'onClosed'](comp)\n      }));\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components,\n        behaviours: augment(detail.splitToolbarBehaviours, [Coupling.config({\n            others: {\n              overflowGroup: () => {\n                return ToolbarGroup.sketch({\n                  ...externals['overflow-group'](),\n                  items: [memFloatingToolbarButton.asSpec()]\n                });\n              }\n            }\n          })]),\n        apis: {\n          setGroups: (toolbar, groups) => {\n            detail.builtGroups.set(map$2(groups, toolbar.getSystem().build));\n            refresh$1(toolbar, memFloatingToolbarButton, detail);\n          },\n          refresh: toolbar => refresh$1(toolbar, memFloatingToolbarButton, detail),\n          toggle: toolbar => {\n            memFloatingToolbarButton.getOpt(toolbar).each(floatingToolbarButton => {\n              FloatingToolbarButton.toggle(floatingToolbarButton);\n            });\n          },\n          toggleWithoutFocusing: toolbar => {\n            memFloatingToolbarButton.getOpt(toolbar).each(FloatingToolbarButton.toggleWithoutFocusing);\n          },\n          isOpen: toolbar => memFloatingToolbarButton.getOpt(toolbar).map(FloatingToolbarButton.isOpen).getOr(false),\n          reposition: toolbar => {\n            memFloatingToolbarButton.getOpt(toolbar).each(floatingToolbarButton => {\n              FloatingToolbarButton.reposition(floatingToolbarButton);\n            });\n          },\n          getOverflow: toolbar => memFloatingToolbarButton.getOpt(toolbar).bind(FloatingToolbarButton.getToolbar)\n        },\n        domModification: { attributes: { role: 'group' } }\n      };\n    };\n    const SplitFloatingToolbar = composite({\n      name: 'SplitFloatingToolbar',\n      configFields: schema$b(),\n      partFields: parts$7(),\n      factory: factory$a,\n      apis: {\n        setGroups: (apis, toolbar, groups) => {\n          apis.setGroups(toolbar, groups);\n        },\n        refresh: (apis, toolbar) => {\n          apis.refresh(toolbar);\n        },\n        reposition: (apis, toolbar) => {\n          apis.reposition(toolbar);\n        },\n        toggle: (apis, toolbar) => {\n          apis.toggle(toolbar);\n        },\n        toggleWithoutFocusing: (apis, toolbar) => {\n          apis.toggle(toolbar);\n        },\n        isOpen: (apis, toolbar) => apis.isOpen(toolbar),\n        getOverflow: (apis, toolbar) => apis.getOverflow(toolbar)\n      }\n    });\n\n    const schema$8 = constant$1([\n      markers$1([\n        'closedClass',\n        'openClass',\n        'shrinkingClass',\n        'growingClass',\n        'overflowToggledClass'\n      ]),\n      onHandler('onOpened'),\n      onHandler('onClosed')\n    ].concat(schema$c()));\n    const parts$4 = constant$1([\n      required({\n        factory: Toolbar,\n        schema: schema$e(),\n        name: 'primary'\n      }),\n      required({\n        factory: Toolbar,\n        schema: schema$e(),\n        name: 'overflow',\n        overrides: detail => {\n          return {\n            toolbarBehaviours: derive$1([\n              Sliding.config({\n                dimension: { property: 'height' },\n                closedClass: detail.markers.closedClass,\n                openClass: detail.markers.openClass,\n                shrinkingClass: detail.markers.shrinkingClass,\n                growingClass: detail.markers.growingClass,\n                onShrunk: comp => {\n                  getPart(comp, detail, 'overflow-button').each(button => {\n                    Toggling.off(button);\n                    Focusing.focus(button);\n                  });\n                  detail.onClosed(comp);\n                },\n                onGrown: comp => {\n                  Keying.focusIn(comp);\n                  detail.onOpened(comp);\n                },\n                onStartGrow: comp => {\n                  getPart(comp, detail, 'overflow-button').each(Toggling.on);\n                }\n              }),\n              Keying.config({\n                mode: 'acyclic',\n                onEscape: comp => {\n                  getPart(comp, detail, 'overflow-button').each(Focusing.focus);\n                  return Optional.some(true);\n                }\n              })\n            ])\n          };\n        }\n      }),\n      external({\n        name: 'overflow-button',\n        overrides: detail => ({\n          buttonBehaviours: derive$1([Toggling.config({\n              toggleClass: detail.markers.overflowToggledClass,\n              aria: { mode: 'pressed' },\n              toggleOnExecute: false\n            })])\n        })\n      }),\n      external({ name: 'overflow-group' })\n    ]);\n\n    const isOpen = (toolbar, detail) => getPart(toolbar, detail, 'overflow').map(Sliding.hasGrown).getOr(false);\n    const toggleToolbar = (toolbar, detail) => {\n      getPart(toolbar, detail, 'overflow-button').bind(() => getPart(toolbar, detail, 'overflow')).each(overf => {\n        refresh(toolbar, detail);\n        Sliding.toggleGrow(overf);\n      });\n    };\n    const refresh = (toolbar, detail) => {\n      getPart(toolbar, detail, 'overflow').each(overflow => {\n        refresh$2(toolbar, detail, groups => {\n          const builtGroups = map$2(groups, g => premade(g));\n          Toolbar.setGroups(overflow, builtGroups);\n        });\n        getPart(toolbar, detail, 'overflow-button').each(button => {\n          if (Sliding.hasGrown(overflow)) {\n            Toggling.on(button);\n          }\n        });\n        Sliding.refresh(overflow);\n      });\n    };\n    const factory$9 = (detail, components, spec, externals) => {\n      const toolbarToggleEvent = 'alloy.toolbar.toggle';\n      const doSetGroups = (toolbar, groups) => {\n        const built = map$2(groups, toolbar.getSystem().build);\n        detail.builtGroups.set(built);\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components,\n        behaviours: augment(detail.splitToolbarBehaviours, [\n          Coupling.config({\n            others: {\n              overflowGroup: toolbar => {\n                return ToolbarGroup.sketch({\n                  ...externals['overflow-group'](),\n                  items: [Button.sketch({\n                      ...externals['overflow-button'](),\n                      action: _button => {\n                        emit(toolbar, toolbarToggleEvent);\n                      }\n                    })]\n                });\n              }\n            }\n          }),\n          config('toolbar-toggle-events', [run$1(toolbarToggleEvent, toolbar => {\n              toggleToolbar(toolbar, detail);\n            })])\n        ]),\n        apis: {\n          setGroups: (toolbar, groups) => {\n            doSetGroups(toolbar, groups);\n            refresh(toolbar, detail);\n          },\n          refresh: toolbar => refresh(toolbar, detail),\n          toggle: toolbar => toggleToolbar(toolbar, detail),\n          isOpen: toolbar => isOpen(toolbar, detail)\n        },\n        domModification: { attributes: { role: 'group' } }\n      };\n    };\n    const SplitSlidingToolbar = composite({\n      name: 'SplitSlidingToolbar',\n      configFields: schema$8(),\n      partFields: parts$4(),\n      factory: factory$9,\n      apis: {\n        setGroups: (apis, toolbar, groups) => {\n          apis.setGroups(toolbar, groups);\n        },\n        refresh: (apis, toolbar) => {\n          apis.refresh(toolbar);\n        },\n        toggle: (apis, toolbar) => {\n          apis.toggle(toolbar);\n        },\n        isOpen: (apis, toolbar) => apis.isOpen(toolbar)\n      }\n    });\n\n    const renderToolbarGroupCommon = toolbarGroup => {\n      const attributes = toolbarGroup.title.fold(() => ({}), title => ({ attributes: { title } }));\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-toolbar__group'],\n          ...attributes\n        },\n        components: [ToolbarGroup.parts.items({})],\n        items: toolbarGroup.items,\n        markers: { itemSelector: '*:not(.tox-split-button) > .tox-tbtn:not([disabled]), ' + '.tox-split-button:not([disabled]), ' + '.tox-toolbar-nav-js:not([disabled]), ' + '.tox-number-input:not([disabled])' },\n        tgroupBehaviours: derive$1([\n          Tabstopping.config({}),\n          Focusing.config({})\n        ])\n      };\n    };\n    const renderToolbarGroup = toolbarGroup => ToolbarGroup.sketch(renderToolbarGroupCommon(toolbarGroup));\n    const getToolbarBehaviours = (toolbarSpec, modeName) => {\n      const onAttached = runOnAttached(component => {\n        const groups = map$2(toolbarSpec.initGroups, renderToolbarGroup);\n        Toolbar.setGroups(component, groups);\n      });\n      return derive$1([\n        DisablingConfigs.toolbarButton(toolbarSpec.providers.isDisabled),\n        receivingConfig(),\n        Keying.config({\n          mode: modeName,\n          onEscape: toolbarSpec.onEscape,\n          selector: '.tox-toolbar__group'\n        }),\n        config('toolbar-events', [onAttached])\n      ]);\n    };\n    const renderMoreToolbarCommon = toolbarSpec => {\n      const modeName = toolbarSpec.cyclicKeying ? 'cyclic' : 'acyclic';\n      return {\n        uid: toolbarSpec.uid,\n        dom: {\n          tag: 'div',\n          classes: ['tox-toolbar-overlord']\n        },\n        parts: {\n          'overflow-group': renderToolbarGroupCommon({\n            title: Optional.none(),\n            items: []\n          }),\n          'overflow-button': renderIconButtonSpec({\n            name: 'more',\n            icon: Optional.some('more-drawer'),\n            enabled: true,\n            tooltip: Optional.some('Reveal or hide additional toolbar items'),\n            primary: false,\n            buttonType: Optional.none(),\n            borderless: false\n          }, Optional.none(), toolbarSpec.providers)\n        },\n        splitToolbarBehaviours: getToolbarBehaviours(toolbarSpec, modeName)\n      };\n    };\n    const renderFloatingMoreToolbar = toolbarSpec => {\n      const baseSpec = renderMoreToolbarCommon(toolbarSpec);\n      const overflowXOffset = 4;\n      const primary = SplitFloatingToolbar.parts.primary({\n        dom: {\n          tag: 'div',\n          classes: ['tox-toolbar__primary']\n        }\n      });\n      return SplitFloatingToolbar.sketch({\n        ...baseSpec,\n        lazySink: toolbarSpec.getSink,\n        getOverflowBounds: () => {\n          const headerElem = toolbarSpec.moreDrawerData.lazyHeader().element;\n          const headerBounds = absolute$2(headerElem);\n          const docElem = documentElement(headerElem);\n          const docBounds = absolute$2(docElem);\n          const height = Math.max(docElem.dom.scrollHeight, docBounds.height);\n          return bounds(headerBounds.x + overflowXOffset, docBounds.y, headerBounds.width - overflowXOffset * 2, height);\n        },\n        parts: {\n          ...baseSpec.parts,\n          overflow: {\n            dom: {\n              tag: 'div',\n              classes: ['tox-toolbar__overflow'],\n              attributes: toolbarSpec.attributes\n            }\n          }\n        },\n        components: [primary],\n        markers: { overflowToggledClass: 'tox-tbtn--enabled' },\n        onOpened: comp => toolbarSpec.onToggled(comp, true),\n        onClosed: comp => toolbarSpec.onToggled(comp, false)\n      });\n    };\n    const renderSlidingMoreToolbar = toolbarSpec => {\n      const primary = SplitSlidingToolbar.parts.primary({\n        dom: {\n          tag: 'div',\n          classes: ['tox-toolbar__primary']\n        }\n      });\n      const overflow = SplitSlidingToolbar.parts.overflow({\n        dom: {\n          tag: 'div',\n          classes: ['tox-toolbar__overflow']\n        }\n      });\n      const baseSpec = renderMoreToolbarCommon(toolbarSpec);\n      return SplitSlidingToolbar.sketch({\n        ...baseSpec,\n        components: [\n          primary,\n          overflow\n        ],\n        markers: {\n          openClass: 'tox-toolbar__overflow--open',\n          closedClass: 'tox-toolbar__overflow--closed',\n          growingClass: 'tox-toolbar__overflow--growing',\n          shrinkingClass: 'tox-toolbar__overflow--shrinking',\n          overflowToggledClass: 'tox-tbtn--enabled'\n        },\n        onOpened: comp => {\n          comp.getSystem().broadcastOn([toolbarHeightChange()], { type: 'opened' });\n          toolbarSpec.onToggled(comp, true);\n        },\n        onClosed: comp => {\n          comp.getSystem().broadcastOn([toolbarHeightChange()], { type: 'closed' });\n          toolbarSpec.onToggled(comp, false);\n        }\n      });\n    };\n    const renderToolbar = toolbarSpec => {\n      const modeName = toolbarSpec.cyclicKeying ? 'cyclic' : 'acyclic';\n      return Toolbar.sketch({\n        uid: toolbarSpec.uid,\n        dom: {\n          tag: 'div',\n          classes: ['tox-toolbar'].concat(toolbarSpec.type === ToolbarMode$1.scrolling ? ['tox-toolbar--scrolling'] : [])\n        },\n        components: [Toolbar.parts.groups({})],\n        toolbarBehaviours: getToolbarBehaviours(toolbarSpec, modeName)\n      });\n    };\n\n    const baseButtonFields = [\n      optionalText,\n      optionalIcon,\n      optionString('tooltip'),\n      defaultedStringEnum('buttonType', 'secondary', [\n        'primary',\n        'secondary'\n      ]),\n      defaultedBoolean('borderless', false),\n      requiredFunction('onAction')\n    ];\n    const normalButtonFields = [\n      ...baseButtonFields,\n      text,\n      requiredStringEnum('type', ['button'])\n    ];\n    const toggleButtonFields = [\n      ...baseButtonFields,\n      defaultedBoolean('active', false),\n      requiredStringEnum('type', ['togglebutton'])\n    ];\n    const schemaWithoutGroupButton = {\n      button: normalButtonFields,\n      togglebutton: toggleButtonFields\n    };\n    const groupFields = [\n      requiredStringEnum('type', ['group']),\n      defaultedArrayOf('buttons', [], choose$1('type', schemaWithoutGroupButton))\n    ];\n    const viewButtonSchema = choose$1('type', {\n      ...schemaWithoutGroupButton,\n      group: groupFields\n    });\n\n    const viewSchema = objOf([\n      defaultedArrayOf('buttons', [], viewButtonSchema),\n      requiredFunction('onShow'),\n      requiredFunction('onHide')\n    ]);\n    const createView = spec => asRaw('view', viewSchema, spec);\n\n    const renderButton = (spec, providers) => {\n      var _a, _b;\n      const isToggleButton = spec.type === 'togglebutton';\n      const optMemIcon = spec.icon.map(memIcon => renderReplaceableIconFromPack(memIcon, providers.icons)).map(record);\n      const getAction = () => comp => {\n        const setIcon = newIcon => {\n          optMemIcon.map(memIcon => memIcon.getOpt(comp).each(displayIcon => {\n            Replacing.set(displayIcon, [renderReplaceableIconFromPack(newIcon, providers.icons)]);\n          }));\n        };\n        const setActive = state => {\n          const elm = comp.element;\n          if (state) {\n            add$2(elm, 'tox-button--enabled');\n            set$9(elm, 'aria-pressed', true);\n          } else {\n            remove$2(elm, 'tox-button--enabled');\n            remove$7(elm, 'aria-pressed');\n          }\n        };\n        const isActive = () => has(comp.element, 'tox-button--enabled');\n        if (isToggleButton) {\n          return spec.onAction({\n            setIcon,\n            setActive,\n            isActive\n          });\n        }\n        if (spec.type === 'button') {\n          return spec.onAction({ setIcon });\n        }\n      };\n      const action = getAction();\n      const buttonSpec = {\n        ...spec,\n        name: isToggleButton ? spec.text.getOr(spec.icon.getOr('')) : (_a = spec.text) !== null && _a !== void 0 ? _a : spec.icon.getOr(''),\n        primary: spec.buttonType === 'primary',\n        buttonType: Optional.from(spec.buttonType),\n        tooltip: spec.tooltip,\n        icon: spec.icon,\n        enabled: true,\n        borderless: spec.borderless\n      };\n      const buttonTypeClasses = calculateClassesFromButtonType((_b = spec.buttonType) !== null && _b !== void 0 ? _b : 'secondary');\n      const optTranslatedText = isToggleButton ? spec.text.map(providers.translate) : Optional.some(providers.translate(spec.text));\n      const optTranslatedTextComponed = optTranslatedText.map(text$2);\n      const tooltipAttributes = buttonSpec.tooltip.or(optTranslatedText).map(tooltip => ({\n        'aria-label': providers.translate(tooltip),\n        'title': providers.translate(tooltip)\n      })).getOr({});\n      const optIconSpec = optMemIcon.map(memIcon => memIcon.asSpec());\n      const components = componentRenderPipeline([\n        optIconSpec,\n        optTranslatedTextComponed\n      ]);\n      const hasIconAndText = spec.icon.isSome() && optTranslatedTextComponed.isSome();\n      const dom = {\n        tag: 'button',\n        classes: buttonTypeClasses.concat(...spec.icon.isSome() && !hasIconAndText ? ['tox-button--icon'] : []).concat(...hasIconAndText ? ['tox-button--icon-and-text'] : []).concat(...spec.borderless ? ['tox-button--naked'] : []).concat(...spec.type === 'togglebutton' && spec.active ? ['tox-button--enabled'] : []),\n        attributes: tooltipAttributes\n      };\n      const extraBehaviours = [];\n      const iconButtonSpec = renderCommonSpec(buttonSpec, Optional.some(action), extraBehaviours, dom, components, providers);\n      return Button.sketch(iconButtonSpec);\n    };\n\n    const renderViewButton = (spec, providers) => renderButton(spec, providers);\n    const renderButtonsGroup = (spec, providers) => {\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-view__toolbar__group']\n        },\n        components: map$2(spec.buttons, button => renderViewButton(button, providers))\n      };\n    };\n    const deviceDetection = detect$2().deviceType;\n    const isPhone = deviceDetection.isPhone();\n    const isTablet = deviceDetection.isTablet();\n    const renderViewHeader = spec => {\n      let hasGroups = false;\n      const endButtons = map$2(spec.buttons, btnspec => {\n        if (btnspec.type === 'group') {\n          hasGroups = true;\n          return renderButtonsGroup(btnspec, spec.providers);\n        } else {\n          return renderViewButton(btnspec, spec.providers);\n        }\n      });\n      return {\n        uid: spec.uid,\n        dom: {\n          tag: 'div',\n          classes: [\n            !hasGroups ? 'tox-view__header' : 'tox-view__toolbar',\n            ...isPhone || isTablet ? [\n              'tox-view--mobile',\n              'tox-view--scrolling'\n            ] : []\n          ]\n        },\n        behaviours: derive$1([\n          Focusing.config({}),\n          Keying.config({\n            mode: 'flow',\n            selector: 'button, .tox-button',\n            focusInside: FocusInsideModes.OnEnterOrSpaceMode\n          })\n        ]),\n        components: hasGroups ? endButtons : [\n          Container.sketch({\n            dom: {\n              tag: 'div',\n              classes: ['tox-view__header-start']\n            },\n            components: []\n          }),\n          Container.sketch({\n            dom: {\n              tag: 'div',\n              classes: ['tox-view__header-end']\n            },\n            components: endButtons\n          })\n        ]\n      };\n    };\n    const renderViewPane = spec => {\n      return {\n        uid: spec.uid,\n        dom: {\n          tag: 'div',\n          classes: ['tox-view__pane']\n        }\n      };\n    };\n    const factory$8 = (detail, components, _spec, _externals) => {\n      const apis = {\n        getPane: comp => parts$a.getPart(comp, detail, 'pane'),\n        getOnShow: _comp => detail.viewConfig.onShow,\n        getOnHide: _comp => detail.viewConfig.onHide\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components,\n        apis\n      };\n    };\n    var View = composite({\n      name: 'silver.View',\n      configFields: [required$1('viewConfig')],\n      partFields: [\n        optional({\n          factory: { sketch: renderViewHeader },\n          schema: [\n            required$1('buttons'),\n            required$1('providers')\n          ],\n          name: 'header'\n        }),\n        optional({\n          factory: { sketch: renderViewPane },\n          schema: [],\n          name: 'pane'\n        })\n      ],\n      factory: factory$8,\n      apis: {\n        getPane: (apis, comp) => apis.getPane(comp),\n        getOnShow: (apis, comp) => apis.getOnShow(comp),\n        getOnHide: (apis, comp) => apis.getOnHide(comp)\n      }\n    });\n\n    const makeViews = (parts, viewConfigs, providers) => {\n      return mapToArray(viewConfigs, (config, name) => {\n        const internalViewConfig = getOrDie(createView(config));\n        return parts.slot(name, View.sketch({\n          dom: {\n            tag: 'div',\n            classes: ['tox-view']\n          },\n          viewConfig: internalViewConfig,\n          components: [\n            ...internalViewConfig.buttons.length > 0 ? [View.parts.header({\n                buttons: internalViewConfig.buttons,\n                providers\n              })] : [],\n            View.parts.pane({})\n          ]\n        }));\n      });\n    };\n    const makeSlotContainer = (viewConfigs, providers) => SlotContainer.sketch(parts => ({\n      dom: {\n        tag: 'div',\n        classes: ['tox-view-wrap__slot-container']\n      },\n      components: makeViews(parts, viewConfigs, providers),\n      slotBehaviours: SimpleBehaviours.unnamedEvents([runOnAttached(slotContainer => SlotContainer.hideAllSlots(slotContainer))])\n    }));\n    const getCurrentName = slotContainer => {\n      return find$5(SlotContainer.getSlotNames(slotContainer), name => SlotContainer.isShowing(slotContainer, name));\n    };\n    const hideContainer = comp => {\n      const element = comp.element;\n      set$8(element, 'display', 'none');\n      set$9(element, 'aria-hidden', 'true');\n    };\n    const showContainer = comp => {\n      const element = comp.element;\n      remove$6(element, 'display');\n      remove$7(element, 'aria-hidden');\n    };\n    const makeViewInstanceApi = slot => ({ getContainer: constant$1(slot) });\n    const runOnPaneWithInstanceApi = (slotContainer, name, get) => {\n      SlotContainer.getSlot(slotContainer, name).each(view => {\n        View.getPane(view).each(pane => {\n          const onCallback = get(view);\n          onCallback(makeViewInstanceApi(pane.element.dom));\n        });\n      });\n    };\n    const runOnShow = (slotContainer, name) => runOnPaneWithInstanceApi(slotContainer, name, View.getOnShow);\n    const runOnHide = (slotContainer, name) => runOnPaneWithInstanceApi(slotContainer, name, View.getOnHide);\n    const factory$7 = (detail, spec) => {\n      const setViews = (comp, viewConfigs) => {\n        Replacing.set(comp, [makeSlotContainer(viewConfigs, spec.backstage.shared.providers)]);\n      };\n      const whichView = comp => {\n        return Composing.getCurrent(comp).bind(getCurrentName);\n      };\n      const toggleView = (comp, showMainView, hideMainView, name) => {\n        return Composing.getCurrent(comp).exists(slotContainer => {\n          const optCurrentSlotName = getCurrentName(slotContainer);\n          const isTogglingCurrentView = optCurrentSlotName.exists(current => name === current);\n          const exists = SlotContainer.getSlot(slotContainer, name).isSome();\n          if (exists) {\n            SlotContainer.hideAllSlots(slotContainer);\n            if (!isTogglingCurrentView) {\n              hideMainView();\n              showContainer(comp);\n              SlotContainer.showSlot(slotContainer, name);\n              runOnShow(slotContainer, name);\n            } else {\n              hideContainer(comp);\n              showMainView();\n            }\n            optCurrentSlotName.each(prevName => runOnHide(slotContainer, prevName));\n          }\n          return exists;\n        });\n      };\n      const apis = {\n        setViews,\n        whichView,\n        toggleView\n      };\n      return {\n        uid: detail.uid,\n        dom: {\n          tag: 'div',\n          classes: ['tox-view-wrap'],\n          attributes: { 'aria-hidden': 'true' },\n          styles: { display: 'none' }\n        },\n        components: [],\n        behaviours: derive$1([\n          Replacing.config({}),\n          Composing.config({\n            find: comp => {\n              const children = Replacing.contents(comp);\n              return head(children);\n            }\n          })\n        ]),\n        apis\n      };\n    };\n    var ViewWrapper = single({\n      factory: factory$7,\n      name: 'silver.ViewWrapper',\n      configFields: [required$1('backstage')],\n      apis: {\n        setViews: (apis, comp, views) => apis.setViews(comp, views),\n        toggleView: (apis, comp, outerContainer, editorCont, name) => apis.toggleView(comp, outerContainer, editorCont, name),\n        whichView: (apis, comp) => apis.whichView(comp)\n      }\n    });\n\n    const factory$6 = (detail, components, _spec) => {\n      let toolbarDrawerOpenState = false;\n      const apis = {\n        getSocket: comp => {\n          return parts$a.getPart(comp, detail, 'socket');\n        },\n        setSidebar: (comp, panelConfigs, showSidebar) => {\n          parts$a.getPart(comp, detail, 'sidebar').each(sidebar => setSidebar(sidebar, panelConfigs, showSidebar));\n        },\n        toggleSidebar: (comp, name) => {\n          parts$a.getPart(comp, detail, 'sidebar').each(sidebar => toggleSidebar(sidebar, name));\n        },\n        whichSidebar: comp => {\n          return parts$a.getPart(comp, detail, 'sidebar').bind(whichSidebar).getOrNull();\n        },\n        getHeader: comp => {\n          return parts$a.getPart(comp, detail, 'header');\n        },\n        getToolbar: comp => {\n          return parts$a.getPart(comp, detail, 'toolbar');\n        },\n        setToolbar: (comp, groups) => {\n          parts$a.getPart(comp, detail, 'toolbar').each(toolbar => {\n            const renderedGroups = map$2(groups, renderToolbarGroup);\n            toolbar.getApis().setGroups(toolbar, renderedGroups);\n          });\n        },\n        setToolbars: (comp, toolbars) => {\n          parts$a.getPart(comp, detail, 'multiple-toolbar').each(mToolbar => {\n            const renderedToolbars = map$2(toolbars, g => map$2(g, renderToolbarGroup));\n            CustomList.setItems(mToolbar, renderedToolbars);\n          });\n        },\n        refreshToolbar: comp => {\n          const toolbar = parts$a.getPart(comp, detail, 'toolbar');\n          toolbar.each(toolbar => toolbar.getApis().refresh(toolbar));\n        },\n        toggleToolbarDrawer: comp => {\n          parts$a.getPart(comp, detail, 'toolbar').each(toolbar => {\n            mapFrom(toolbar.getApis().toggle, toggle => toggle(toolbar));\n          });\n        },\n        toggleToolbarDrawerWithoutFocusing: comp => {\n          parts$a.getPart(comp, detail, 'toolbar').each(toolbar => {\n            mapFrom(toolbar.getApis().toggleWithoutFocusing, toggleWithoutFocusing => toggleWithoutFocusing(toolbar));\n          });\n        },\n        isToolbarDrawerToggled: comp => {\n          return parts$a.getPart(comp, detail, 'toolbar').bind(toolbar => Optional.from(toolbar.getApis().isOpen).map(isOpen => isOpen(toolbar))).getOr(false);\n        },\n        getThrobber: comp => {\n          return parts$a.getPart(comp, detail, 'throbber');\n        },\n        focusToolbar: comp => {\n          const optToolbar = parts$a.getPart(comp, detail, 'toolbar').orThunk(() => parts$a.getPart(comp, detail, 'multiple-toolbar'));\n          optToolbar.each(toolbar => {\n            Keying.focusIn(toolbar);\n          });\n        },\n        setMenubar: (comp, menus) => {\n          parts$a.getPart(comp, detail, 'menubar').each(menubar => {\n            SilverMenubar.setMenus(menubar, menus);\n          });\n        },\n        focusMenubar: comp => {\n          parts$a.getPart(comp, detail, 'menubar').each(menubar => {\n            SilverMenubar.focus(menubar);\n          });\n        },\n        setViews: (comp, viewConfigs) => {\n          parts$a.getPart(comp, detail, 'viewWrapper').each(wrapper => {\n            ViewWrapper.setViews(wrapper, viewConfigs);\n          });\n        },\n        toggleView: (comp, name) => {\n          return parts$a.getPart(comp, detail, 'viewWrapper').exists(wrapper => ViewWrapper.toggleView(wrapper, () => apis.showMainView(comp), () => apis.hideMainView(comp), name));\n        },\n        whichView: comp => {\n          return parts$a.getPart(comp, detail, 'viewWrapper').bind(ViewWrapper.whichView).getOrNull();\n        },\n        hideMainView: comp => {\n          toolbarDrawerOpenState = apis.isToolbarDrawerToggled(comp);\n          if (toolbarDrawerOpenState) {\n            apis.toggleToolbarDrawer(comp);\n          }\n          parts$a.getPart(comp, detail, 'editorContainer').each(editorContainer => {\n            const element = editorContainer.element;\n            set$8(element, 'display', 'none');\n            set$9(element, 'aria-hidden', 'true');\n          });\n        },\n        showMainView: comp => {\n          if (toolbarDrawerOpenState) {\n            apis.toggleToolbarDrawer(comp);\n          }\n          parts$a.getPart(comp, detail, 'editorContainer').each(editorContainer => {\n            const element = editorContainer.element;\n            remove$6(element, 'display');\n            remove$7(element, 'aria-hidden');\n          });\n        }\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components,\n        apis,\n        behaviours: detail.behaviours\n      };\n    };\n    const partMenubar = partType.optional({\n      factory: SilverMenubar,\n      name: 'menubar',\n      schema: [required$1('backstage')]\n    });\n    const toolbarFactory = spec => {\n      if (spec.type === ToolbarMode$1.sliding) {\n        return renderSlidingMoreToolbar;\n      } else if (spec.type === ToolbarMode$1.floating) {\n        return renderFloatingMoreToolbar;\n      } else {\n        return renderToolbar;\n      }\n    };\n    const partMultipleToolbar = partType.optional({\n      factory: {\n        sketch: spec => CustomList.sketch({\n          uid: spec.uid,\n          dom: spec.dom,\n          listBehaviours: derive$1([Keying.config({\n              mode: 'acyclic',\n              selector: '.tox-toolbar'\n            })]),\n          makeItem: () => renderToolbar({\n            type: spec.type,\n            uid: generate$6('multiple-toolbar-item'),\n            cyclicKeying: false,\n            initGroups: [],\n            providers: spec.providers,\n            onEscape: () => {\n              spec.onEscape();\n              return Optional.some(true);\n            }\n          }),\n          setupItem: (_mToolbar, tc, data, _index) => {\n            Toolbar.setGroups(tc, data);\n          },\n          shell: true\n        })\n      },\n      name: 'multiple-toolbar',\n      schema: [\n        required$1('dom'),\n        required$1('onEscape')\n      ]\n    });\n    const partToolbar = partType.optional({\n      factory: {\n        sketch: spec => {\n          const renderer = toolbarFactory(spec);\n          const toolbarSpec = {\n            type: spec.type,\n            uid: spec.uid,\n            onEscape: () => {\n              spec.onEscape();\n              return Optional.some(true);\n            },\n            onToggled: (_comp, state) => spec.onToolbarToggled(state),\n            cyclicKeying: false,\n            initGroups: [],\n            getSink: spec.getSink,\n            providers: spec.providers,\n            moreDrawerData: {\n              lazyToolbar: spec.lazyToolbar,\n              lazyMoreButton: spec.lazyMoreButton,\n              lazyHeader: spec.lazyHeader\n            },\n            attributes: spec.attributes\n          };\n          return renderer(toolbarSpec);\n        }\n      },\n      name: 'toolbar',\n      schema: [\n        required$1('dom'),\n        required$1('onEscape'),\n        required$1('getSink')\n      ]\n    });\n    const partHeader = partType.optional({\n      factory: { sketch: renderHeader },\n      name: 'header',\n      schema: [required$1('dom')]\n    });\n    const partPromotion = partType.optional({\n      factory: { sketch: renderPromotion },\n      name: 'promotion',\n      schema: [required$1('dom')]\n    });\n    const partSocket = partType.optional({\n      name: 'socket',\n      schema: [required$1('dom')]\n    });\n    const partSidebar = partType.optional({\n      factory: { sketch: renderSidebar },\n      name: 'sidebar',\n      schema: [required$1('dom')]\n    });\n    const partThrobber = partType.optional({\n      factory: { sketch: renderThrobber },\n      name: 'throbber',\n      schema: [required$1('dom')]\n    });\n    const partViewWrapper = partType.optional({\n      factory: ViewWrapper,\n      name: 'viewWrapper',\n      schema: [required$1('backstage')]\n    });\n    const renderEditorContainer = spec => ({\n      uid: spec.uid,\n      dom: {\n        tag: 'div',\n        classes: ['tox-editor-container']\n      },\n      components: spec.components\n    });\n    const partEditorContainer = partType.optional({\n      factory: { sketch: renderEditorContainer },\n      name: 'editorContainer',\n      schema: []\n    });\n    var OuterContainer = composite({\n      name: 'OuterContainer',\n      factory: factory$6,\n      configFields: [\n        required$1('dom'),\n        required$1('behaviours')\n      ],\n      partFields: [\n        partHeader,\n        partMenubar,\n        partToolbar,\n        partMultipleToolbar,\n        partSocket,\n        partSidebar,\n        partPromotion,\n        partThrobber,\n        partViewWrapper,\n        partEditorContainer\n      ],\n      apis: {\n        getSocket: (apis, comp) => {\n          return apis.getSocket(comp);\n        },\n        setSidebar: (apis, comp, panelConfigs, showSidebar) => {\n          apis.setSidebar(comp, panelConfigs, showSidebar);\n        },\n        toggleSidebar: (apis, comp, name) => {\n          apis.toggleSidebar(comp, name);\n        },\n        whichSidebar: (apis, comp) => {\n          return apis.whichSidebar(comp);\n        },\n        getHeader: (apis, comp) => {\n          return apis.getHeader(comp);\n        },\n        getToolbar: (apis, comp) => {\n          return apis.getToolbar(comp);\n        },\n        setToolbar: (apis, comp, groups) => {\n          apis.setToolbar(comp, groups);\n        },\n        setToolbars: (apis, comp, toolbars) => {\n          apis.setToolbars(comp, toolbars);\n        },\n        refreshToolbar: (apis, comp) => {\n          return apis.refreshToolbar(comp);\n        },\n        toggleToolbarDrawer: (apis, comp) => {\n          apis.toggleToolbarDrawer(comp);\n        },\n        toggleToolbarDrawerWithoutFocusing: (apis, comp) => {\n          apis.toggleToolbarDrawerWithoutFocusing(comp);\n        },\n        isToolbarDrawerToggled: (apis, comp) => {\n          return apis.isToolbarDrawerToggled(comp);\n        },\n        getThrobber: (apis, comp) => {\n          return apis.getThrobber(comp);\n        },\n        setMenubar: (apis, comp, menus) => {\n          apis.setMenubar(comp, menus);\n        },\n        focusMenubar: (apis, comp) => {\n          apis.focusMenubar(comp);\n        },\n        focusToolbar: (apis, comp) => {\n          apis.focusToolbar(comp);\n        },\n        setViews: (apis, comp, views) => {\n          apis.setViews(comp, views);\n        },\n        toggleView: (apis, comp, name) => {\n          return apis.toggleView(comp, name);\n        },\n        whichView: (apis, comp) => {\n          return apis.whichView(comp);\n        }\n      }\n    });\n\n    const defaultMenubar = 'file edit view insert format tools table help';\n    const defaultMenus = {\n      file: {\n        title: 'File',\n        items: 'newdocument restoredraft | preview | export print | deleteallconversations'\n      },\n      edit: {\n        title: 'Edit',\n        items: 'undo redo | cut copy paste pastetext | selectall | searchreplace'\n      },\n      view: {\n        title: 'View',\n        items: 'code | visualaid visualchars visualblocks | spellchecker | preview fullscreen | showcomments'\n      },\n      insert: {\n        title: 'Insert',\n        items: 'image link media addcomment pageembed template inserttemplate codesample inserttable accordion | charmap emoticons hr | pagebreak nonbreaking anchor tableofcontents footnotes | mergetags | insertdatetime'\n      },\n      format: {\n        title: 'Format',\n        items: 'bold italic underline strikethrough superscript subscript codeformat | styles blocks fontfamily fontsize align lineheight | forecolor backcolor | language | removeformat'\n      },\n      tools: {\n        title: 'Tools',\n        items: 'aidialog aishortcuts | spellchecker spellcheckerlanguage | autocorrect capitalization | a11ycheck code typography wordcount addtemplate'\n      },\n      table: {\n        title: 'Table',\n        items: 'inserttable | cell row column | advtablesort | tableprops deletetable'\n      },\n      help: {\n        title: 'Help',\n        items: 'help'\n      }\n    };\n    const make = (menu, registry, editor) => {\n      const removedMenuItems = getRemovedMenuItems(editor).split(/[ ,]/);\n      return {\n        text: menu.title,\n        getItems: () => bind$3(menu.items, i => {\n          const itemName = i.toLowerCase();\n          if (itemName.trim().length === 0) {\n            return [];\n          } else if (exists(removedMenuItems, removedMenuItem => removedMenuItem === itemName)) {\n            return [];\n          } else if (itemName === 'separator' || itemName === '|') {\n            return [{ type: 'separator' }];\n          } else if (registry.menuItems[itemName]) {\n            return [registry.menuItems[itemName]];\n          } else {\n            return [];\n          }\n        })\n      };\n    };\n    const parseItemsString = items => {\n      return items.split(' ');\n    };\n    const identifyMenus = (editor, registry) => {\n      const rawMenuData = {\n        ...defaultMenus,\n        ...registry.menus\n      };\n      const userDefinedMenus = keys(registry.menus).length > 0;\n      const menubar = registry.menubar === undefined || registry.menubar === true ? parseItemsString(defaultMenubar) : parseItemsString(registry.menubar === false ? '' : registry.menubar);\n      const validMenus = filter$2(menubar, menuName => {\n        const isDefaultMenu = has$2(defaultMenus, menuName);\n        if (userDefinedMenus) {\n          return isDefaultMenu || get$g(registry.menus, menuName).exists(menu => has$2(menu, 'items'));\n        } else {\n          return isDefaultMenu;\n        }\n      });\n      const menus = map$2(validMenus, menuName => {\n        const menuData = rawMenuData[menuName];\n        return make({\n          title: menuData.title,\n          items: parseItemsString(menuData.items)\n        }, registry, editor);\n      });\n      return filter$2(menus, menu => {\n        const isNotSeparator = item => isString(item) || item.type !== 'separator';\n        return menu.getItems().length > 0 && exists(menu.getItems(), isNotSeparator);\n      });\n    };\n\n    const fireSkinLoaded = editor => {\n      const done = () => {\n        editor._skinLoaded = true;\n        fireSkinLoaded$1(editor);\n      };\n      return () => {\n        if (editor.initialized) {\n          done();\n        } else {\n          editor.on('init', done);\n        }\n      };\n    };\n    const fireSkinLoadError = (editor, err) => () => fireSkinLoadError$1(editor, { message: err });\n\n    const loadStylesheet = (editor, stylesheetUrl, styleSheetLoader) => {\n      editor.on('remove', () => styleSheetLoader.unload(stylesheetUrl));\n      return styleSheetLoader.load(stylesheetUrl);\n    };\n    const loadRawCss = (editor, key, css, styleSheetLoader) => {\n      editor.on('remove', () => styleSheetLoader.unloadRawCss(key));\n      return styleSheetLoader.loadRawCss(key, css);\n    };\n    const loadUiSkins = async (editor, skinUrl) => {\n      const skinResourceIdentifier = getSkinUrlOption(editor).getOr('default');\n      const skinUiCss = 'ui/' + skinResourceIdentifier + '/skin.css';\n      const css = tinymce.Resource.get(skinUiCss);\n      if (isString(css)) {\n        return Promise.resolve(loadRawCss(editor, skinUiCss, css, editor.ui.styleSheetLoader));\n      } else {\n        const skinUiCss = skinUrl + '/skin.min.css';\n        return loadStylesheet(editor, skinUiCss, editor.ui.styleSheetLoader);\n      }\n    };\n    const loadShadowDomUiSkins = async (editor, skinUrl) => {\n      const isInShadowRoot$1 = isInShadowRoot(SugarElement.fromDom(editor.getElement()));\n      if (isInShadowRoot$1) {\n        const skinResourceIdentifier = getSkinUrlOption(editor).getOr('default');\n        const shadowDomSkinCss = 'ui/' + skinResourceIdentifier + '/skin.shadowdom.css';\n        const css = tinymce.Resource.get(shadowDomSkinCss);\n        if (isString(css)) {\n          loadRawCss(editor, shadowDomSkinCss, css, global$7.DOM.styleSheetLoader);\n          return Promise.resolve();\n        } else {\n          const shadowDomSkinCss = skinUrl + '/skin.shadowdom.min.css';\n          return loadStylesheet(editor, shadowDomSkinCss, global$7.DOM.styleSheetLoader);\n        }\n      }\n    };\n    const loadUrlSkin = async (isInline, editor) => {\n      getSkinUrlOption(editor).fold(() => {\n        const skinResourceIdentifier = getSkinUrl(editor);\n        if (skinResourceIdentifier) {\n          editor.contentCSS.push(skinResourceIdentifier + (isInline ? '/content.inline' : '/content') + '.min.css');\n        }\n      }, skinUrl => {\n        const skinContentCss = 'ui/' + skinUrl + (isInline ? '/content.inline' : '/content') + '.css';\n        const css = tinymce.Resource.get(skinContentCss);\n        if (isString(css)) {\n          loadRawCss(editor, skinContentCss, css, editor.ui.styleSheetLoader);\n        } else {\n          const skinResourceIdentifier = getSkinUrl(editor);\n          if (skinResourceIdentifier) {\n            editor.contentCSS.push(skinResourceIdentifier + (isInline ? '/content.inline' : '/content') + '.min.css');\n          }\n        }\n      });\n      const skinUrl = getSkinUrl(editor);\n      if (!isSkinDisabled(editor) && isString(skinUrl)) {\n        return Promise.all([\n          loadUiSkins(editor, skinUrl),\n          loadShadowDomUiSkins(editor, skinUrl)\n        ]).then();\n      }\n    };\n    const loadSkin = (isInline, editor) => {\n      return loadUrlSkin(isInline, editor).then(fireSkinLoaded(editor), fireSkinLoadError(editor, 'Skin could not be loaded'));\n    };\n    const iframe = curry(loadSkin, false);\n    const inline = curry(loadSkin, true);\n\n    const makeTooltipText = (editor, labelWithPlaceholder, value) => editor.translate([\n      labelWithPlaceholder,\n      editor.translate(value)\n    ]);\n\n    const generateSelectItems = (backstage, spec) => {\n      const generateItem = (rawItem, response, invalid, value) => {\n        const translatedText = backstage.shared.providers.translate(rawItem.title);\n        if (rawItem.type === 'separator') {\n          return Optional.some({\n            type: 'separator',\n            text: translatedText\n          });\n        } else if (rawItem.type === 'submenu') {\n          const items = bind$3(rawItem.getStyleItems(), si => validate(si, response, value));\n          if (response === 0 && items.length <= 0) {\n            return Optional.none();\n          } else {\n            return Optional.some({\n              type: 'nestedmenuitem',\n              text: translatedText,\n              enabled: items.length > 0,\n              getSubmenuItems: () => bind$3(rawItem.getStyleItems(), si => validate(si, response, value))\n            });\n          }\n        } else {\n          return Optional.some({\n            type: 'togglemenuitem',\n            text: translatedText,\n            icon: rawItem.icon,\n            active: rawItem.isSelected(value),\n            enabled: !invalid,\n            onAction: spec.onAction(rawItem),\n            ...rawItem.getStylePreview().fold(() => ({}), preview => ({ meta: { style: preview } }))\n          });\n        }\n      };\n      const validate = (item, response, value) => {\n        const invalid = item.type === 'formatter' && spec.isInvalid(item);\n        if (response === 0) {\n          return invalid ? [] : generateItem(item, response, false, value).toArray();\n        } else {\n          return generateItem(item, response, invalid, value).toArray();\n        }\n      };\n      const validateItems = preItems => {\n        const value = spec.getCurrentValue();\n        const response = spec.shouldHide ? 0 : 1;\n        return bind$3(preItems, item => validate(item, response, value));\n      };\n      const getFetch = (backstage, getStyleItems) => (comp, callback) => {\n        const preItems = getStyleItems();\n        const items = validateItems(preItems);\n        const menu = build(items, ItemResponse$1.CLOSE_ON_EXECUTE, backstage, {\n          isHorizontalMenu: false,\n          search: Optional.none()\n        });\n        callback(menu);\n      };\n      return {\n        validateItems,\n        getFetch\n      };\n    };\n    const createMenuItems = (editor, backstage, spec) => {\n      const dataset = spec.dataset;\n      const getStyleItems = dataset.type === 'basic' ? () => map$2(dataset.data, d => processBasic(d, spec.isSelectedFor, spec.getPreviewFor)) : dataset.getData;\n      return {\n        items: generateSelectItems(backstage, spec),\n        getStyleItems\n      };\n    };\n    const createSelectButton = (editor, backstage, spec, tooltipWithPlaceholder, textUpdateEventName) => {\n      const {items, getStyleItems} = createMenuItems(editor, backstage, spec);\n      const getApi = comp => ({\n        getComponent: constant$1(comp),\n        setTooltip: tooltip => {\n          const translatedTooltip = backstage.shared.providers.translate(tooltip);\n          setAll$1(comp.element, {\n            'aria-label': translatedTooltip,\n            'title': translatedTooltip\n          });\n        }\n      });\n      const onSetup = api => {\n        const handler = e => api.setTooltip(makeTooltipText(editor, tooltipWithPlaceholder, e.value));\n        editor.on(textUpdateEventName, handler);\n        return composeUnbinders(onSetupEvent(editor, 'NodeChange', api => {\n          const comp = api.getComponent();\n          spec.updateText(comp);\n          Disabling.set(api.getComponent(), !editor.selection.isEditable());\n        })(api), () => editor.off(textUpdateEventName, handler));\n      };\n      return renderCommonDropdown({\n        text: spec.icon.isSome() ? Optional.none() : spec.text,\n        icon: spec.icon,\n        tooltip: Optional.from(spec.tooltip),\n        role: Optional.none(),\n        fetch: items.getFetch(backstage, getStyleItems),\n        onSetup,\n        getApi,\n        columns: 1,\n        presets: 'normal',\n        classes: spec.icon.isSome() ? [] : ['bespoke'],\n        dropdownBehaviours: []\n      }, 'tox-tbtn', backstage.shared);\n    };\n\n    const process = rawFormats => map$2(rawFormats, item => {\n      let title = item, format = item;\n      const values = item.split('=');\n      if (values.length > 1) {\n        title = values[0];\n        format = values[1];\n      }\n      return {\n        title,\n        format\n      };\n    });\n    const buildBasicStaticDataset = data => ({\n      type: 'basic',\n      data\n    });\n    var Delimiter;\n    (function (Delimiter) {\n      Delimiter[Delimiter['SemiColon'] = 0] = 'SemiColon';\n      Delimiter[Delimiter['Space'] = 1] = 'Space';\n    }(Delimiter || (Delimiter = {})));\n    const split = (rawFormats, delimiter) => {\n      if (delimiter === Delimiter.SemiColon) {\n        return rawFormats.replace(/;$/, '').split(';');\n      } else {\n        return rawFormats.split(' ');\n      }\n    };\n    const buildBasicSettingsDataset = (editor, settingName, delimiter) => {\n      const rawFormats = editor.options.get(settingName);\n      const data = process(split(rawFormats, delimiter));\n      return {\n        type: 'basic',\n        data\n      };\n    };\n\n    const menuTitle$4 = 'Align';\n    const btnTooltip$4 = 'Alignment {0}';\n    const fallbackAlignment = 'left';\n    const alignMenuItems = [\n      {\n        title: 'Left',\n        icon: 'align-left',\n        format: 'alignleft',\n        command: 'JustifyLeft'\n      },\n      {\n        title: 'Center',\n        icon: 'align-center',\n        format: 'aligncenter',\n        command: 'JustifyCenter'\n      },\n      {\n        title: 'Right',\n        icon: 'align-right',\n        format: 'alignright',\n        command: 'JustifyRight'\n      },\n      {\n        title: 'Justify',\n        icon: 'align-justify',\n        format: 'alignjustify',\n        command: 'JustifyFull'\n      }\n    ];\n    const getSpec$4 = editor => {\n      const getMatchingValue = () => find$5(alignMenuItems, item => editor.formatter.match(item.format));\n      const isSelectedFor = format => () => editor.formatter.match(format);\n      const getPreviewFor = _format => Optional.none;\n      const updateSelectMenuIcon = comp => {\n        const match = getMatchingValue();\n        const alignment = match.fold(constant$1(fallbackAlignment), item => item.title.toLowerCase());\n        emitWith(comp, updateMenuIcon, { icon: `align-${ alignment }` });\n        fireAlignTextUpdate(editor, { value: alignment });\n      };\n      const dataset = buildBasicStaticDataset(alignMenuItems);\n      const onAction = rawItem => () => find$5(alignMenuItems, item => item.format === rawItem.format).each(item => editor.execCommand(item.command));\n      return {\n        tooltip: makeTooltipText(editor, btnTooltip$4, fallbackAlignment),\n        text: Optional.none(),\n        icon: Optional.some('align-left'),\n        isSelectedFor,\n        getCurrentValue: Optional.none,\n        getPreviewFor,\n        onAction,\n        updateText: updateSelectMenuIcon,\n        dataset,\n        shouldHide: false,\n        isInvalid: item => !editor.formatter.canApply(item.format)\n      };\n    };\n    const createAlignButton = (editor, backstage) => createSelectButton(editor, backstage, getSpec$4(editor), btnTooltip$4, 'AlignTextUpdate');\n    const createAlignMenu = (editor, backstage) => {\n      const menuItems = createMenuItems(editor, backstage, getSpec$4(editor));\n      editor.ui.registry.addNestedMenuItem('align', {\n        text: backstage.shared.providers.translate(menuTitle$4),\n        onSetup: onSetupEditableToggle(editor),\n        getSubmenuItems: () => menuItems.items.validateItems(menuItems.getStyleItems())\n      });\n    };\n\n    const findNearest = (editor, getStyles) => {\n      const styles = getStyles();\n      const formats = map$2(styles, style => style.format);\n      return Optional.from(editor.formatter.closest(formats)).bind(fmt => find$5(styles, data => data.format === fmt)).orThunk(() => someIf(editor.formatter.match('p'), {\n        title: 'Paragraph',\n        format: 'p'\n      }));\n    };\n\n    const menuTitle$3 = 'Blocks';\n    const btnTooltip$3 = 'Block {0}';\n    const fallbackFormat = 'Paragraph';\n    const getSpec$3 = editor => {\n      const isSelectedFor = format => () => editor.formatter.match(format);\n      const getPreviewFor = format => () => {\n        const fmt = editor.formatter.get(format);\n        if (fmt) {\n          return Optional.some({\n            tag: fmt.length > 0 ? fmt[0].inline || fmt[0].block || 'div' : 'div',\n            styles: editor.dom.parseStyle(editor.formatter.getCssText(format))\n          });\n        } else {\n          return Optional.none();\n        }\n      };\n      const updateSelectMenuText = comp => {\n        const detectedFormat = findNearest(editor, () => dataset.data);\n        const text = detectedFormat.fold(constant$1(fallbackFormat), fmt => fmt.title);\n        emitWith(comp, updateMenuText, { text });\n        fireBlocksTextUpdate(editor, { value: text });\n      };\n      const dataset = buildBasicSettingsDataset(editor, 'block_formats', Delimiter.SemiColon);\n      return {\n        tooltip: makeTooltipText(editor, btnTooltip$3, fallbackFormat),\n        text: Optional.some(fallbackFormat),\n        icon: Optional.none(),\n        isSelectedFor,\n        getCurrentValue: Optional.none,\n        getPreviewFor,\n        onAction: onActionToggleFormat$1(editor),\n        updateText: updateSelectMenuText,\n        dataset,\n        shouldHide: false,\n        isInvalid: item => !editor.formatter.canApply(item.format)\n      };\n    };\n    const createBlocksButton = (editor, backstage) => createSelectButton(editor, backstage, getSpec$3(editor), btnTooltip$3, 'BlocksTextUpdate');\n    const createBlocksMenu = (editor, backstage) => {\n      const menuItems = createMenuItems(editor, backstage, getSpec$3(editor));\n      editor.ui.registry.addNestedMenuItem('blocks', {\n        text: menuTitle$3,\n        onSetup: onSetupEditableToggle(editor),\n        getSubmenuItems: () => menuItems.items.validateItems(menuItems.getStyleItems())\n      });\n    };\n\n    const menuTitle$2 = 'Fonts';\n    const btnTooltip$2 = 'Font {0}';\n    const systemFont = 'System Font';\n    const systemStackFonts = [\n      '-apple-system',\n      'Segoe UI',\n      'Roboto',\n      'Helvetica Neue',\n      'sans-serif'\n    ];\n    const splitFonts = fontFamily => {\n      const fonts = fontFamily.split(/\\s*,\\s*/);\n      return map$2(fonts, font => font.replace(/^['\"]+|['\"]+$/g, ''));\n    };\n    const matchesStack = (fonts, stack) => stack.length > 0 && forall(stack, font => fonts.indexOf(font.toLowerCase()) > -1);\n    const isSystemFontStack = (fontFamily, userStack) => {\n      if (fontFamily.indexOf('-apple-system') === 0 || userStack.length > 0) {\n        const fonts = splitFonts(fontFamily.toLowerCase());\n        return matchesStack(fonts, systemStackFonts) || matchesStack(fonts, userStack);\n      } else {\n        return false;\n      }\n    };\n    const getSpec$2 = editor => {\n      const getMatchingValue = () => {\n        const getFirstFont = fontFamily => fontFamily ? splitFonts(fontFamily)[0] : '';\n        const fontFamily = editor.queryCommandValue('FontName');\n        const items = dataset.data;\n        const font = fontFamily ? fontFamily.toLowerCase() : '';\n        const userStack = getDefaultFontStack(editor);\n        const matchOpt = find$5(items, item => {\n          const format = item.format;\n          return format.toLowerCase() === font || getFirstFont(format).toLowerCase() === getFirstFont(font).toLowerCase();\n        }).orThunk(() => {\n          return someIf(isSystemFontStack(font, userStack), {\n            title: systemFont,\n            format: font\n          });\n        });\n        return {\n          matchOpt,\n          font: fontFamily\n        };\n      };\n      const isSelectedFor = item => valueOpt => valueOpt.exists(value => value.format === item);\n      const getCurrentValue = () => {\n        const {matchOpt} = getMatchingValue();\n        return matchOpt;\n      };\n      const getPreviewFor = item => () => Optional.some({\n        tag: 'div',\n        styles: item.indexOf('dings') === -1 ? { 'font-family': item } : {}\n      });\n      const onAction = rawItem => () => {\n        editor.undoManager.transact(() => {\n          editor.focus();\n          editor.execCommand('FontName', false, rawItem.format);\n        });\n      };\n      const updateSelectMenuText = comp => {\n        const {matchOpt, font} = getMatchingValue();\n        const text = matchOpt.fold(constant$1(font), item => item.title);\n        emitWith(comp, updateMenuText, { text });\n        fireFontFamilyTextUpdate(editor, { value: text });\n      };\n      const dataset = buildBasicSettingsDataset(editor, 'font_family_formats', Delimiter.SemiColon);\n      return {\n        tooltip: makeTooltipText(editor, btnTooltip$2, systemFont),\n        text: Optional.some(systemFont),\n        icon: Optional.none(),\n        isSelectedFor,\n        getCurrentValue,\n        getPreviewFor,\n        onAction,\n        updateText: updateSelectMenuText,\n        dataset,\n        shouldHide: false,\n        isInvalid: never\n      };\n    };\n    const createFontFamilyButton = (editor, backstage) => createSelectButton(editor, backstage, getSpec$2(editor), btnTooltip$2, 'FontFamilyTextUpdate');\n    const createFontFamilyMenu = (editor, backstage) => {\n      const menuItems = createMenuItems(editor, backstage, getSpec$2(editor));\n      editor.ui.registry.addNestedMenuItem('fontfamily', {\n        text: backstage.shared.providers.translate(menuTitle$2),\n        onSetup: onSetupEditableToggle(editor),\n        getSubmenuItems: () => menuItems.items.validateItems(menuItems.getStyleItems())\n      });\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    const normalise = (input, accepted) => parse(input, accepted).map(({value, unit}) => value + unit);\n\n    const Keys = {\n      tab: constant$1(9),\n      escape: constant$1(27),\n      enter: constant$1(13),\n      backspace: constant$1(8),\n      delete: constant$1(46),\n      left: constant$1(37),\n      up: constant$1(38),\n      right: constant$1(39),\n      down: constant$1(40),\n      space: constant$1(32),\n      home: constant$1(36),\n      end: constant$1(35),\n      pageUp: constant$1(33),\n      pageDown: constant$1(34)\n    };\n\n    const createBespokeNumberInput = (editor, backstage, spec) => {\n      let currentComp = Optional.none();\n      const getValueFromCurrentComp = comp => comp.map(alloyComp => Representing.getValue(alloyComp)).getOr('');\n      const onSetup = onSetupEvent(editor, 'NodeChange SwitchMode', api => {\n        const comp = api.getComponent();\n        currentComp = Optional.some(comp);\n        spec.updateInputValue(comp);\n        Disabling.set(comp, !editor.selection.isEditable());\n      });\n      const getApi = comp => ({ getComponent: constant$1(comp) });\n      const editorOffCell = Cell(noop);\n      const customEvents = generate$6('custom-number-input-events');\n      const changeValue = (f, fromInput, focusBack) => {\n        const text = getValueFromCurrentComp(currentComp);\n        const newValue = spec.getNewValue(text, f);\n        const lenghtDelta = text.length - `${ newValue }`.length;\n        const oldStart = currentComp.map(comp => comp.element.dom.selectionStart - lenghtDelta);\n        const oldEnd = currentComp.map(comp => comp.element.dom.selectionEnd - lenghtDelta);\n        spec.onAction(newValue, focusBack);\n        currentComp.each(comp => {\n          Representing.setValue(comp, newValue);\n          if (fromInput) {\n            oldStart.each(oldStart => comp.element.dom.selectionStart = oldStart);\n            oldEnd.each(oldEnd => comp.element.dom.selectionEnd = oldEnd);\n          }\n        });\n      };\n      const decrease = (fromInput, focusBack) => changeValue((n, s) => n - s, fromInput, focusBack);\n      const increase = (fromInput, focusBack) => changeValue((n, s) => n + s, fromInput, focusBack);\n      const goToParent = comp => parentElement(comp.element).fold(Optional.none, parent => {\n        focus$3(parent);\n        return Optional.some(true);\n      });\n      const focusInput = comp => {\n        if (hasFocus(comp.element)) {\n          firstChild(comp.element).each(input => focus$3(input));\n          return Optional.some(true);\n        } else {\n          return Optional.none();\n        }\n      };\n      const makeStepperButton = (action, title, tooltip, classes) => {\n        const editorOffCellStepButton = Cell(noop);\n        const translatedTooltip = backstage.shared.providers.translate(tooltip);\n        const altExecuting = generate$6('altExecuting');\n        const onSetup = onSetupEvent(editor, 'NodeChange SwitchMode', api => {\n          Disabling.set(api.getComponent(), !editor.selection.isEditable());\n        });\n        const onClick = comp => {\n          if (!Disabling.isDisabled(comp)) {\n            action(true);\n          }\n        };\n        return Button.sketch({\n          dom: {\n            tag: 'button',\n            attributes: {\n              'title': translatedTooltip,\n              'aria-label': translatedTooltip\n            },\n            classes: classes.concat(title)\n          },\n          components: [renderIconFromPack$1(title, backstage.shared.providers.icons)],\n          buttonBehaviours: derive$1([\n            Disabling.config({}),\n            config(altExecuting, [\n              onControlAttached({\n                onSetup,\n                getApi\n              }, editorOffCellStepButton),\n              onControlDetached({ getApi }, editorOffCellStepButton),\n              run$1(keydown(), (comp, se) => {\n                if (se.event.raw.keyCode === Keys.space() || se.event.raw.keyCode === Keys.enter()) {\n                  if (!Disabling.isDisabled(comp)) {\n                    action(false);\n                  }\n                }\n              }),\n              run$1(click(), onClick),\n              run$1(touchend(), onClick)\n            ])\n          ]),\n          eventOrder: {\n            [keydown()]: [\n              altExecuting,\n              'keying'\n            ],\n            [click()]: [\n              altExecuting,\n              'alloy.base.behaviour'\n            ],\n            [touchend()]: [\n              altExecuting,\n              'alloy.base.behaviour'\n            ]\n          }\n        });\n      };\n      const memMinus = record(makeStepperButton(focusBack => decrease(false, focusBack), 'minus', 'Decrease font size', []));\n      const memPlus = record(makeStepperButton(focusBack => increase(false, focusBack), 'plus', 'Increase font size', []));\n      const memInput = record({\n        dom: {\n          tag: 'div',\n          classes: ['tox-input-wrapper']\n        },\n        components: [Input.sketch({\n            inputBehaviours: derive$1([\n              Disabling.config({}),\n              config(customEvents, [\n                onControlAttached({\n                  onSetup,\n                  getApi\n                }, editorOffCell),\n                onControlDetached({ getApi }, editorOffCell)\n              ]),\n              config('input-update-display-text', [\n                run$1(updateMenuText, (comp, se) => {\n                  Representing.setValue(comp, se.event.text);\n                }),\n                run$1(focusout(), comp => {\n                  spec.onAction(Representing.getValue(comp));\n                }),\n                run$1(change(), comp => {\n                  spec.onAction(Representing.getValue(comp));\n                })\n              ]),\n              Keying.config({\n                mode: 'special',\n                onEnter: _comp => {\n                  changeValue(identity, true, true);\n                  return Optional.some(true);\n                },\n                onEscape: goToParent,\n                onUp: _comp => {\n                  increase(true, false);\n                  return Optional.some(true);\n                },\n                onDown: _comp => {\n                  decrease(true, false);\n                  return Optional.some(true);\n                },\n                onLeft: (_comp, se) => {\n                  se.cut();\n                  return Optional.none();\n                },\n                onRight: (_comp, se) => {\n                  se.cut();\n                  return Optional.none();\n                }\n              })\n            ])\n          })],\n        behaviours: derive$1([\n          Focusing.config({}),\n          Keying.config({\n            mode: 'special',\n            onEnter: focusInput,\n            onSpace: focusInput,\n            onEscape: goToParent\n          }),\n          config('input-wrapper-events', [run$1(mouseover(), comp => {\n              each$1([\n                memMinus,\n                memPlus\n              ], button => {\n                const buttonNode = SugarElement.fromDom(button.get(comp).element.dom);\n                if (hasFocus(buttonNode)) {\n                  blur$1(buttonNode);\n                }\n              });\n            })])\n        ])\n      });\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-number-input']\n        },\n        components: [\n          memMinus.asSpec(),\n          memInput.asSpec(),\n          memPlus.asSpec()\n        ],\n        behaviours: derive$1([\n          Focusing.config({}),\n          Keying.config({\n            mode: 'flow',\n            focusInside: FocusInsideModes.OnEnterOrSpaceMode,\n            cycles: false,\n            selector: 'button, .tox-input-wrapper',\n            onEscape: wrapperComp => {\n              if (hasFocus(wrapperComp.element)) {\n                return Optional.none();\n              } else {\n                focus$3(wrapperComp.element);\n                return Optional.some(true);\n              }\n            }\n          })\n        ])\n      };\n    };\n\n    const menuTitle$1 = 'Font sizes';\n    const btnTooltip$1 = 'Font size {0}';\n    const fallbackFontSize = '12pt';\n    const legacyFontSizes = {\n      '8pt': '1',\n      '10pt': '2',\n      '12pt': '3',\n      '14pt': '4',\n      '18pt': '5',\n      '24pt': '6',\n      '36pt': '7'\n    };\n    const keywordFontSizes = {\n      'xx-small': '7pt',\n      'x-small': '8pt',\n      'small': '10pt',\n      'medium': '12pt',\n      'large': '14pt',\n      'x-large': '18pt',\n      'xx-large': '24pt'\n    };\n    const round = (number, precision) => {\n      const factor = Math.pow(10, precision);\n      return Math.round(number * factor) / factor;\n    };\n    const toPt = (fontSize, precision) => {\n      if (/[0-9.]+px$/.test(fontSize)) {\n        return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';\n      } else {\n        return get$g(keywordFontSizes, fontSize).getOr(fontSize);\n      }\n    };\n    const toLegacy = fontSize => get$g(legacyFontSizes, fontSize).getOr('');\n    const getSpec$1 = editor => {\n      const getMatchingValue = () => {\n        let matchOpt = Optional.none();\n        const items = dataset.data;\n        const fontSize = editor.queryCommandValue('FontSize');\n        if (fontSize) {\n          for (let precision = 3; matchOpt.isNone() && precision >= 0; precision--) {\n            const pt = toPt(fontSize, precision);\n            const legacy = toLegacy(pt);\n            matchOpt = find$5(items, item => item.format === fontSize || item.format === pt || item.format === legacy);\n          }\n        }\n        return {\n          matchOpt,\n          size: fontSize\n        };\n      };\n      const isSelectedFor = item => valueOpt => valueOpt.exists(value => value.format === item);\n      const getCurrentValue = () => {\n        const {matchOpt} = getMatchingValue();\n        return matchOpt;\n      };\n      const getPreviewFor = constant$1(Optional.none);\n      const onAction = rawItem => () => {\n        editor.undoManager.transact(() => {\n          editor.focus();\n          editor.execCommand('FontSize', false, rawItem.format);\n        });\n      };\n      const updateSelectMenuText = comp => {\n        const {matchOpt, size} = getMatchingValue();\n        const text = matchOpt.fold(constant$1(size), match => match.title);\n        emitWith(comp, updateMenuText, { text });\n        fireFontSizeTextUpdate(editor, { value: text });\n      };\n      const dataset = buildBasicSettingsDataset(editor, 'font_size_formats', Delimiter.Space);\n      return {\n        tooltip: makeTooltipText(editor, btnTooltip$1, fallbackFontSize),\n        text: Optional.some(fallbackFontSize),\n        icon: Optional.none(),\n        isSelectedFor,\n        getPreviewFor,\n        getCurrentValue,\n        onAction,\n        updateText: updateSelectMenuText,\n        dataset,\n        shouldHide: false,\n        isInvalid: never\n      };\n    };\n    const createFontSizeButton = (editor, backstage) => createSelectButton(editor, backstage, getSpec$1(editor), btnTooltip$1, 'FontSizeTextUpdate');\n    const getConfigFromUnit = unit => {\n      var _a;\n      const baseConfig = { step: 1 };\n      const configs = {\n        em: { step: 0.1 },\n        cm: { step: 0.1 },\n        in: { step: 0.1 },\n        pc: { step: 0.1 },\n        ch: { step: 0.1 },\n        rem: { step: 0.1 }\n      };\n      return (_a = configs[unit]) !== null && _a !== void 0 ? _a : baseConfig;\n    };\n    const defaultValue = 16;\n    const isValidValue = value => value >= 0;\n    const getNumberInputSpec = editor => {\n      const getCurrentValue = () => editor.queryCommandValue('FontSize');\n      const updateInputValue = comp => emitWith(comp, updateMenuText, { text: getCurrentValue() });\n      return {\n        updateInputValue,\n        onAction: (format, focusBack) => editor.execCommand('FontSize', false, format, { skip_focus: !focusBack }),\n        getNewValue: (text, updateFunction) => {\n          parse(text, [\n            'unsupportedLength',\n            'empty'\n          ]);\n          const currentValue = getCurrentValue();\n          const parsedText = parse(text, [\n            'unsupportedLength',\n            'empty'\n          ]).or(parse(currentValue, [\n            'unsupportedLength',\n            'empty'\n          ]));\n          const value = parsedText.map(res => res.value).getOr(defaultValue);\n          const defaultUnit = getFontSizeInputDefaultUnit(editor);\n          const unit = parsedText.map(res => res.unit).filter(u => u !== '').getOr(defaultUnit);\n          const newValue = updateFunction(value, getConfigFromUnit(unit).step);\n          const res = `${ isValidValue(newValue) ? newValue : value }${ unit }`;\n          if (res !== currentValue) {\n            fireFontSizeInputTextUpdate(editor, { value: res });\n          }\n          return res;\n        }\n      };\n    };\n    const createFontSizeInputButton = (editor, backstage) => createBespokeNumberInput(editor, backstage, getNumberInputSpec(editor));\n    const createFontSizeMenu = (editor, backstage) => {\n      const menuItems = createMenuItems(editor, backstage, getSpec$1(editor));\n      editor.ui.registry.addNestedMenuItem('fontsize', {\n        text: menuTitle$1,\n        onSetup: onSetupEditableToggle(editor),\n        getSubmenuItems: () => menuItems.items.validateItems(menuItems.getStyleItems())\n      });\n    };\n\n    const menuTitle = 'Formats';\n    const btnTooltip = 'Format {0}';\n    const getSpec = (editor, dataset) => {\n      const fallbackFormat = 'Paragraph';\n      const isSelectedFor = format => () => editor.formatter.match(format);\n      const getPreviewFor = format => () => {\n        const fmt = editor.formatter.get(format);\n        return fmt !== undefined ? Optional.some({\n          tag: fmt.length > 0 ? fmt[0].inline || fmt[0].block || 'div' : 'div',\n          styles: editor.dom.parseStyle(editor.formatter.getCssText(format))\n        }) : Optional.none();\n      };\n      const updateSelectMenuText = comp => {\n        const getFormatItems = fmt => {\n          if (isNestedFormat(fmt)) {\n            return bind$3(fmt.items, getFormatItems);\n          } else if (isFormatReference(fmt)) {\n            return [{\n                title: fmt.title,\n                format: fmt.format\n              }];\n          } else {\n            return [];\n          }\n        };\n        const flattenedItems = bind$3(getStyleFormats(editor), getFormatItems);\n        const detectedFormat = findNearest(editor, constant$1(flattenedItems));\n        const text = detectedFormat.fold(constant$1(fallbackFormat), fmt => fmt.title);\n        emitWith(comp, updateMenuText, { text });\n        fireStylesTextUpdate(editor, { value: text });\n      };\n      return {\n        tooltip: makeTooltipText(editor, btnTooltip, fallbackFormat),\n        text: Optional.some(fallbackFormat),\n        icon: Optional.none(),\n        isSelectedFor,\n        getCurrentValue: Optional.none,\n        getPreviewFor,\n        onAction: onActionToggleFormat$1(editor),\n        updateText: updateSelectMenuText,\n        shouldHide: shouldAutoHideStyleFormats(editor),\n        isInvalid: item => !editor.formatter.canApply(item.format),\n        dataset\n      };\n    };\n    const createStylesButton = (editor, backstage) => {\n      const dataset = {\n        type: 'advanced',\n        ...backstage.styles\n      };\n      return createSelectButton(editor, backstage, getSpec(editor, dataset), btnTooltip, 'StylesTextUpdate');\n    };\n    const createStylesMenu = (editor, backstage) => {\n      const dataset = {\n        type: 'advanced',\n        ...backstage.styles\n      };\n      const menuItems = createMenuItems(editor, backstage, getSpec(editor, dataset));\n      editor.ui.registry.addNestedMenuItem('styles', {\n        text: menuTitle,\n        onSetup: onSetupEditableToggle(editor),\n        getSubmenuItems: () => menuItems.items.validateItems(menuItems.getStyleItems())\n      });\n    };\n\n    const schema$7 = constant$1([\n      required$1('toggleClass'),\n      required$1('fetch'),\n      onStrictHandler('onExecute'),\n      defaulted('getHotspot', Optional.some),\n      defaulted('getAnchorOverrides', constant$1({})),\n      schema$y(),\n      onStrictHandler('onItemExecute'),\n      option$3('lazySink'),\n      required$1('dom'),\n      onHandler('onOpen'),\n      field('splitDropdownBehaviours', [\n        Coupling,\n        Keying,\n        Focusing\n      ]),\n      defaulted('matchWidth', false),\n      defaulted('useMinWidth', false),\n      defaulted('eventOrder', {}),\n      option$3('role')\n    ].concat(sandboxFields()));\n    const arrowPart = required({\n      factory: Button,\n      schema: [required$1('dom')],\n      name: 'arrow',\n      defaults: () => {\n        return { buttonBehaviours: derive$1([Focusing.revoke()]) };\n      },\n      overrides: detail => {\n        return {\n          dom: {\n            tag: 'span',\n            attributes: { role: 'presentation' }\n          },\n          action: arrow => {\n            arrow.getSystem().getByUid(detail.uid).each(emitExecute);\n          },\n          buttonBehaviours: derive$1([Toggling.config({\n              toggleOnExecute: false,\n              toggleClass: detail.toggleClass\n            })])\n        };\n      }\n    });\n    const buttonPart = required({\n      factory: Button,\n      schema: [required$1('dom')],\n      name: 'button',\n      defaults: () => {\n        return { buttonBehaviours: derive$1([Focusing.revoke()]) };\n      },\n      overrides: detail => {\n        return {\n          dom: {\n            tag: 'span',\n            attributes: { role: 'presentation' }\n          },\n          action: btn => {\n            btn.getSystem().getByUid(detail.uid).each(splitDropdown => {\n              detail.onExecute(splitDropdown, btn);\n            });\n          }\n        };\n      }\n    });\n    const parts$3 = constant$1([\n      arrowPart,\n      buttonPart,\n      optional({\n        factory: {\n          sketch: spec => {\n            return {\n              uid: spec.uid,\n              dom: {\n                tag: 'span',\n                styles: { display: 'none' },\n                attributes: { 'aria-hidden': 'true' },\n                innerHtml: spec.text\n              }\n            };\n          }\n        },\n        schema: [required$1('text')],\n        name: 'aria-descriptor'\n      }),\n      external({\n        schema: [tieredMenuMarkers()],\n        name: 'menu',\n        defaults: detail => {\n          return {\n            onExecute: (tmenu, item) => {\n              tmenu.getSystem().getByUid(detail.uid).each(splitDropdown => {\n                detail.onItemExecute(splitDropdown, tmenu, item);\n              });\n            }\n          };\n        }\n      }),\n      partType$1()\n    ]);\n\n    const factory$5 = (detail, components, spec, externals) => {\n      const switchToMenu = sandbox => {\n        Composing.getCurrent(sandbox).each(current => {\n          Highlighting.highlightFirst(current);\n          Keying.focusIn(current);\n        });\n      };\n      const action = component => {\n        const onOpenSync = switchToMenu;\n        togglePopup(detail, identity, component, externals, onOpenSync, HighlightOnOpen.HighlightMenuAndItem).get(noop);\n      };\n      const openMenu = comp => {\n        action(comp);\n        return Optional.some(true);\n      };\n      const executeOnButton = comp => {\n        const button = getPartOrDie(comp, detail, 'button');\n        emitExecute(button);\n        return Optional.some(true);\n      };\n      const buttonEvents = {\n        ...derive$2([runOnAttached((component, _simulatedEvent) => {\n            const ariaDescriptor = getPart(component, detail, 'aria-descriptor');\n            ariaDescriptor.each(descriptor => {\n              const descriptorId = generate$6('aria');\n              set$9(descriptor.element, 'id', descriptorId);\n              set$9(component.element, 'aria-describedby', descriptorId);\n            });\n          })]),\n        ...events$a(Optional.some(action))\n      };\n      const apis = {\n        repositionMenus: comp => {\n          if (Toggling.isOn(comp)) {\n            repositionMenus(comp);\n          }\n        }\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components,\n        apis,\n        eventOrder: {\n          ...detail.eventOrder,\n          [execute$5()]: [\n            'disabling',\n            'toggling',\n            'alloy.base.behaviour'\n          ]\n        },\n        events: buttonEvents,\n        behaviours: augment(detail.splitDropdownBehaviours, [\n          Coupling.config({\n            others: {\n              sandbox: hotspot => {\n                const arrow = getPartOrDie(hotspot, detail, 'arrow');\n                const extras = {\n                  onOpen: () => {\n                    Toggling.on(arrow);\n                    Toggling.on(hotspot);\n                  },\n                  onClose: () => {\n                    Toggling.off(arrow);\n                    Toggling.off(hotspot);\n                  }\n                };\n                return makeSandbox$1(detail, hotspot, extras);\n              }\n            }\n          }),\n          Keying.config({\n            mode: 'special',\n            onSpace: executeOnButton,\n            onEnter: executeOnButton,\n            onDown: openMenu\n          }),\n          Focusing.config({}),\n          Toggling.config({\n            toggleOnExecute: false,\n            aria: { mode: 'expanded' }\n          })\n        ]),\n        domModification: {\n          attributes: {\n            'role': detail.role.getOr('button'),\n            'aria-haspopup': true\n          }\n        }\n      };\n    };\n    const SplitDropdown = composite({\n      name: 'SplitDropdown',\n      configFields: schema$7(),\n      partFields: parts$3(),\n      factory: factory$5,\n      apis: { repositionMenus: (apis, comp) => apis.repositionMenus(comp) }\n    });\n\n    const getButtonApi = component => ({\n      isEnabled: () => !Disabling.isDisabled(component),\n      setEnabled: state => Disabling.set(component, !state),\n      setText: text => emitWith(component, updateMenuText, { text }),\n      setIcon: icon => emitWith(component, updateMenuIcon, { icon })\n    });\n    const getToggleApi = component => ({\n      setActive: state => {\n        Toggling.set(component, state);\n      },\n      isActive: () => Toggling.isOn(component),\n      isEnabled: () => !Disabling.isDisabled(component),\n      setEnabled: state => Disabling.set(component, !state),\n      setText: text => emitWith(component, updateMenuText, { text }),\n      setIcon: icon => emitWith(component, updateMenuIcon, { icon })\n    });\n    const getTooltipAttributes = (tooltip, providersBackstage) => tooltip.map(tooltip => ({\n      'aria-label': providersBackstage.translate(tooltip),\n      'title': providersBackstage.translate(tooltip)\n    })).getOr({});\n    const focusButtonEvent = generate$6('focus-button');\n    const renderCommonStructure = (optIcon, optText, tooltip, behaviours, providersBackstage) => {\n      const optMemDisplayText = optText.map(text => record(renderLabel$1(text, 'tox-tbtn', providersBackstage)));\n      const optMemDisplayIcon = optIcon.map(icon => record(renderReplaceableIconFromPack(icon, providersBackstage.icons)));\n      return {\n        dom: {\n          tag: 'button',\n          classes: ['tox-tbtn'].concat(optText.isSome() ? ['tox-tbtn--select'] : []),\n          attributes: getTooltipAttributes(tooltip, providersBackstage)\n        },\n        components: componentRenderPipeline([\n          optMemDisplayIcon.map(mem => mem.asSpec()),\n          optMemDisplayText.map(mem => mem.asSpec())\n        ]),\n        eventOrder: {\n          [mousedown()]: [\n            'focusing',\n            'alloy.base.behaviour',\n            commonButtonDisplayEvent\n          ],\n          [attachedToDom()]: [\n            commonButtonDisplayEvent,\n            'toolbar-group-button-events'\n          ]\n        },\n        buttonBehaviours: derive$1([\n          DisablingConfigs.toolbarButton(providersBackstage.isDisabled),\n          receivingConfig(),\n          config(commonButtonDisplayEvent, [\n            runOnAttached((comp, _se) => forceInitialSize(comp)),\n            run$1(updateMenuText, (comp, se) => {\n              optMemDisplayText.bind(mem => mem.getOpt(comp)).each(displayText => {\n                Replacing.set(displayText, [text$2(providersBackstage.translate(se.event.text))]);\n              });\n            }),\n            run$1(updateMenuIcon, (comp, se) => {\n              optMemDisplayIcon.bind(mem => mem.getOpt(comp)).each(displayIcon => {\n                Replacing.set(displayIcon, [renderReplaceableIconFromPack(se.event.icon, providersBackstage.icons)]);\n              });\n            }),\n            run$1(mousedown(), (button, se) => {\n              se.event.prevent();\n              emit(button, focusButtonEvent);\n            })\n          ])\n        ].concat(behaviours.getOr([])))\n      };\n    };\n    const renderFloatingToolbarButton = (spec, backstage, identifyButtons, attributes) => {\n      const sharedBackstage = backstage.shared;\n      const editorOffCell = Cell(noop);\n      const specialisation = {\n        toolbarButtonBehaviours: [],\n        getApi: getButtonApi,\n        onSetup: spec.onSetup\n      };\n      const behaviours = [config('toolbar-group-button-events', [\n          onControlAttached(specialisation, editorOffCell),\n          onControlDetached(specialisation, editorOffCell)\n        ])];\n      return FloatingToolbarButton.sketch({\n        lazySink: sharedBackstage.getSink,\n        fetch: () => Future.nu(resolve => {\n          resolve(map$2(identifyButtons(spec.items), renderToolbarGroup));\n        }),\n        markers: { toggledClass: 'tox-tbtn--enabled' },\n        parts: {\n          button: renderCommonStructure(spec.icon, spec.text, spec.tooltip, Optional.some(behaviours), sharedBackstage.providers),\n          toolbar: {\n            dom: {\n              tag: 'div',\n              classes: ['tox-toolbar__overflow'],\n              attributes\n            }\n          }\n        }\n      });\n    };\n    const renderCommonToolbarButton = (spec, specialisation, providersBackstage) => {\n      var _d;\n      const editorOffCell = Cell(noop);\n      const structure = renderCommonStructure(spec.icon, spec.text, spec.tooltip, Optional.none(), providersBackstage);\n      return Button.sketch({\n        dom: structure.dom,\n        components: structure.components,\n        eventOrder: toolbarButtonEventOrder,\n        buttonBehaviours: {\n          ...derive$1([\n            config('toolbar-button-events', [\n              onToolbarButtonExecute({\n                onAction: spec.onAction,\n                getApi: specialisation.getApi\n              }),\n              onControlAttached(specialisation, editorOffCell),\n              onControlDetached(specialisation, editorOffCell)\n            ]),\n            DisablingConfigs.toolbarButton(() => !spec.enabled || providersBackstage.isDisabled()),\n            receivingConfig()\n          ].concat(specialisation.toolbarButtonBehaviours)),\n          [commonButtonDisplayEvent]: (_d = structure.buttonBehaviours) === null || _d === void 0 ? void 0 : _d[commonButtonDisplayEvent]\n        }\n      });\n    };\n    const renderToolbarButton = (spec, providersBackstage) => renderToolbarButtonWith(spec, providersBackstage, []);\n    const renderToolbarButtonWith = (spec, providersBackstage, bonusEvents) => renderCommonToolbarButton(spec, {\n      toolbarButtonBehaviours: bonusEvents.length > 0 ? [config('toolbarButtonWith', bonusEvents)] : [],\n      getApi: getButtonApi,\n      onSetup: spec.onSetup\n    }, providersBackstage);\n    const renderToolbarToggleButton = (spec, providersBackstage) => renderToolbarToggleButtonWith(spec, providersBackstage, []);\n    const renderToolbarToggleButtonWith = (spec, providersBackstage, bonusEvents) => renderCommonToolbarButton(spec, {\n      toolbarButtonBehaviours: [\n        Replacing.config({}),\n        Toggling.config({\n          toggleClass: 'tox-tbtn--enabled',\n          aria: { mode: 'pressed' },\n          toggleOnExecute: false\n        })\n      ].concat(bonusEvents.length > 0 ? [config('toolbarToggleButtonWith', bonusEvents)] : []),\n      getApi: getToggleApi,\n      onSetup: spec.onSetup\n    }, providersBackstage);\n    const fetchChoices = (getApi, spec, providersBackstage) => comp => Future.nu(callback => spec.fetch(callback)).map(items => Optional.from(createTieredDataFrom(deepMerge(createPartialChoiceMenu(generate$6('menu-value'), items, value => {\n      spec.onItemAction(getApi(comp), value);\n    }, spec.columns, spec.presets, ItemResponse$1.CLOSE_ON_EXECUTE, spec.select.getOr(never), providersBackstage), {\n      movement: deriveMenuMovement(spec.columns, spec.presets),\n      menuBehaviours: SimpleBehaviours.unnamedEvents(spec.columns !== 'auto' ? [] : [runOnAttached((comp, _se) => {\n          detectSize(comp, 4, classForPreset(spec.presets)).each(({numRows, numColumns}) => {\n            Keying.setGridSize(comp, numRows, numColumns);\n          });\n        })])\n    }))));\n    const renderSplitButton = (spec, sharedBackstage) => {\n      const getApi = comp => ({\n        isEnabled: () => !Disabling.isDisabled(comp),\n        setEnabled: state => Disabling.set(comp, !state),\n        setIconFill: (id, value) => {\n          descendant(comp.element, `svg path[class=\"${ id }\"], rect[class=\"${ id }\"]`).each(underlinePath => {\n            set$9(underlinePath, 'fill', value);\n          });\n        },\n        setActive: state => {\n          set$9(comp.element, 'aria-pressed', state);\n          descendant(comp.element, 'span').each(button => {\n            comp.getSystem().getByDom(button).each(buttonComp => Toggling.set(buttonComp, state));\n          });\n        },\n        isActive: () => descendant(comp.element, 'span').exists(button => comp.getSystem().getByDom(button).exists(Toggling.isOn)),\n        setText: text => descendant(comp.element, 'span').each(button => comp.getSystem().getByDom(button).each(buttonComp => emitWith(buttonComp, updateMenuText, { text }))),\n        setIcon: icon => descendant(comp.element, 'span').each(button => comp.getSystem().getByDom(button).each(buttonComp => emitWith(buttonComp, updateMenuIcon, { icon }))),\n        setTooltip: tooltip => {\n          const translatedTooltip = sharedBackstage.providers.translate(tooltip);\n          setAll$1(comp.element, {\n            'aria-label': translatedTooltip,\n            'title': translatedTooltip\n          });\n        }\n      });\n      const editorOffCell = Cell(noop);\n      const specialisation = {\n        getApi,\n        onSetup: spec.onSetup\n      };\n      return SplitDropdown.sketch({\n        dom: {\n          tag: 'div',\n          classes: ['tox-split-button'],\n          attributes: {\n            'aria-pressed': false,\n            ...getTooltipAttributes(spec.tooltip, sharedBackstage.providers)\n          }\n        },\n        onExecute: button => {\n          const api = getApi(button);\n          if (api.isEnabled()) {\n            spec.onAction(api);\n          }\n        },\n        onItemExecute: (_a, _b, _c) => {\n        },\n        splitDropdownBehaviours: derive$1([\n          DisablingConfigs.splitButton(sharedBackstage.providers.isDisabled),\n          receivingConfig(),\n          config('split-dropdown-events', [\n            runOnAttached((comp, _se) => forceInitialSize(comp)),\n            run$1(focusButtonEvent, Focusing.focus),\n            onControlAttached(specialisation, editorOffCell),\n            onControlDetached(specialisation, editorOffCell)\n          ]),\n          Unselecting.config({})\n        ]),\n        eventOrder: {\n          [attachedToDom()]: [\n            'alloy.base.behaviour',\n            'split-dropdown-events'\n          ]\n        },\n        toggleClass: 'tox-tbtn--enabled',\n        lazySink: sharedBackstage.getSink,\n        fetch: fetchChoices(getApi, spec, sharedBackstage.providers),\n        parts: { menu: part(false, spec.columns, spec.presets) },\n        components: [\n          SplitDropdown.parts.button(renderCommonStructure(spec.icon, spec.text, Optional.none(), Optional.some([Toggling.config({\n              toggleClass: 'tox-tbtn--enabled',\n              toggleOnExecute: false\n            })]), sharedBackstage.providers)),\n          SplitDropdown.parts.arrow({\n            dom: {\n              tag: 'button',\n              classes: [\n                'tox-tbtn',\n                'tox-split-button__chevron'\n              ],\n              innerHtml: get$2('chevron-down', sharedBackstage.providers.icons)\n            },\n            buttonBehaviours: derive$1([\n              DisablingConfigs.splitButton(sharedBackstage.providers.isDisabled),\n              receivingConfig(),\n              addFocusableBehaviour()\n            ])\n          }),\n          SplitDropdown.parts['aria-descriptor']({ text: sharedBackstage.providers.translate('To open the popup, press Shift+Enter') })\n        ]\n      });\n    };\n\n    const defaultToolbar = [\n      {\n        name: 'history',\n        items: [\n          'undo',\n          'redo'\n        ]\n      },\n      {\n        name: 'ai',\n        items: [\n          'aidialog',\n          'aishortcuts'\n        ]\n      },\n      {\n        name: 'styles',\n        items: ['styles']\n      },\n      {\n        name: 'formatting',\n        items: [\n          'bold',\n          'italic'\n        ]\n      },\n      {\n        name: 'alignment',\n        items: [\n          'alignleft',\n          'aligncenter',\n          'alignright',\n          'alignjustify'\n        ]\n      },\n      {\n        name: 'indentation',\n        items: [\n          'outdent',\n          'indent'\n        ]\n      },\n      {\n        name: 'permanent pen',\n        items: ['permanentpen']\n      },\n      {\n        name: 'comments',\n        items: ['addcomment']\n      }\n    ];\n    const renderFromBridge = (bridgeBuilder, render) => (spec, backstage, editor) => {\n      const internal = bridgeBuilder(spec).mapError(errInfo => formatError(errInfo)).getOrDie();\n      return render(internal, backstage, editor);\n    };\n    const types = {\n      button: renderFromBridge(createToolbarButton, (s, backstage) => renderToolbarButton(s, backstage.shared.providers)),\n      togglebutton: renderFromBridge(createToggleButton, (s, backstage) => renderToolbarToggleButton(s, backstage.shared.providers)),\n      menubutton: renderFromBridge(createMenuButton, (s, backstage) => renderMenuButton(s, 'tox-tbtn', backstage, Optional.none(), false)),\n      splitbutton: renderFromBridge(createSplitButton, (s, backstage) => renderSplitButton(s, backstage.shared)),\n      grouptoolbarbutton: renderFromBridge(createGroupToolbarButton, (s, backstage, editor) => {\n        const buttons = editor.ui.registry.getAll().buttons;\n        const identify = toolbar => identifyButtons(editor, {\n          buttons,\n          toolbar,\n          allowToolbarGroups: false\n        }, backstage, Optional.none());\n        const attributes = { [Attribute]: backstage.shared.header.isPositionedAtTop() ? AttributeValue.TopToBottom : AttributeValue.BottomToTop };\n        switch (getToolbarMode(editor)) {\n        case ToolbarMode$1.floating:\n          return renderFloatingToolbarButton(s, backstage, identify, attributes);\n        default:\n          throw new Error('Toolbar groups are only supported when using floating toolbar mode');\n        }\n      })\n    };\n    const extractFrom = (spec, backstage, editor) => get$g(types, spec.type).fold(() => {\n      console.error('skipping button defined by', spec);\n      return Optional.none();\n    }, render => Optional.some(render(spec, backstage, editor)));\n    const bespokeButtons = {\n      styles: createStylesButton,\n      fontsize: createFontSizeButton,\n      fontsizeinput: createFontSizeInputButton,\n      fontfamily: createFontFamilyButton,\n      blocks: createBlocksButton,\n      align: createAlignButton\n    };\n    const removeUnusedDefaults = buttons => {\n      const filteredItemGroups = map$2(defaultToolbar, group => {\n        const items = filter$2(group.items, subItem => has$2(buttons, subItem) || has$2(bespokeButtons, subItem));\n        return {\n          name: group.name,\n          items\n        };\n      });\n      return filter$2(filteredItemGroups, group => group.items.length > 0);\n    };\n    const convertStringToolbar = strToolbar => {\n      const groupsStrings = strToolbar.split('|');\n      return map$2(groupsStrings, g => ({ items: g.trim().split(' ') }));\n    };\n    const isToolbarGroupSettingArray = toolbar => isArrayOf(toolbar, t => has$2(t, 'name') && has$2(t, 'items'));\n    const createToolbar = toolbarConfig => {\n      const toolbar = toolbarConfig.toolbar;\n      const buttons = toolbarConfig.buttons;\n      if (toolbar === false) {\n        return [];\n      } else if (toolbar === undefined || toolbar === true) {\n        return removeUnusedDefaults(buttons);\n      } else if (isString(toolbar)) {\n        return convertStringToolbar(toolbar);\n      } else if (isToolbarGroupSettingArray(toolbar)) {\n        return toolbar;\n      } else {\n        console.error('Toolbar type should be string, string[], boolean or ToolbarGroup[]');\n        return [];\n      }\n    };\n    const lookupButton = (editor, buttons, toolbarItem, allowToolbarGroups, backstage, prefixes) => get$g(buttons, toolbarItem.toLowerCase()).orThunk(() => prefixes.bind(ps => findMap(ps, prefix => get$g(buttons, prefix + toolbarItem.toLowerCase())))).fold(() => get$g(bespokeButtons, toolbarItem.toLowerCase()).map(r => r(editor, backstage)), spec => {\n      if (spec.type === 'grouptoolbarbutton' && !allowToolbarGroups) {\n        console.warn(`Ignoring the '${ toolbarItem }' toolbar button. Group toolbar buttons are only supported when using floating toolbar mode and cannot be nested.`);\n        return Optional.none();\n      } else {\n        return extractFrom(spec, backstage, editor);\n      }\n    });\n    const identifyButtons = (editor, toolbarConfig, backstage, prefixes) => {\n      const toolbarGroups = createToolbar(toolbarConfig);\n      const groups = map$2(toolbarGroups, group => {\n        const items = bind$3(group.items, toolbarItem => {\n          return toolbarItem.trim().length === 0 ? [] : lookupButton(editor, toolbarConfig.buttons, toolbarItem, toolbarConfig.allowToolbarGroups, backstage, prefixes).toArray();\n        });\n        return {\n          title: Optional.from(editor.translate(group.name)),\n          items\n        };\n      });\n      return filter$2(groups, group => group.items.length > 0);\n    };\n\n    const setToolbar = (editor, uiRefs, rawUiConfig, backstage) => {\n      const outerContainer = uiRefs.mainUi.outerContainer;\n      const toolbarConfig = rawUiConfig.toolbar;\n      const toolbarButtonsConfig = rawUiConfig.buttons;\n      if (isArrayOf(toolbarConfig, isString)) {\n        const toolbars = toolbarConfig.map(t => {\n          const config = {\n            toolbar: t,\n            buttons: toolbarButtonsConfig,\n            allowToolbarGroups: rawUiConfig.allowToolbarGroups\n          };\n          return identifyButtons(editor, config, backstage, Optional.none());\n        });\n        OuterContainer.setToolbars(outerContainer, toolbars);\n      } else {\n        OuterContainer.setToolbar(outerContainer, identifyButtons(editor, rawUiConfig, backstage, Optional.none()));\n      }\n    };\n\n    const detection = detect$2();\n    const isiOS12 = detection.os.isiOS() && detection.os.version.major <= 12;\n    const setupEvents$1 = (editor, uiRefs) => {\n      const {uiMotherships} = uiRefs;\n      const dom = editor.dom;\n      let contentWindow = editor.getWin();\n      const initialDocEle = editor.getDoc().documentElement;\n      const lastWindowDimensions = Cell(SugarPosition(contentWindow.innerWidth, contentWindow.innerHeight));\n      const lastDocumentDimensions = Cell(SugarPosition(initialDocEle.offsetWidth, initialDocEle.offsetHeight));\n      const resizeWindow = () => {\n        const outer = lastWindowDimensions.get();\n        if (outer.left !== contentWindow.innerWidth || outer.top !== contentWindow.innerHeight) {\n          lastWindowDimensions.set(SugarPosition(contentWindow.innerWidth, contentWindow.innerHeight));\n          fireResizeContent(editor);\n        }\n      };\n      const resizeDocument = () => {\n        const docEle = editor.getDoc().documentElement;\n        const inner = lastDocumentDimensions.get();\n        if (inner.left !== docEle.offsetWidth || inner.top !== docEle.offsetHeight) {\n          lastDocumentDimensions.set(SugarPosition(docEle.offsetWidth, docEle.offsetHeight));\n          fireResizeContent(editor);\n        }\n      };\n      const scroll = e => {\n        fireScrollContent(editor, e);\n      };\n      dom.bind(contentWindow, 'resize', resizeWindow);\n      dom.bind(contentWindow, 'scroll', scroll);\n      const elementLoad = capture(SugarElement.fromDom(editor.getBody()), 'load', resizeDocument);\n      editor.on('hide', () => {\n        each$1(uiMotherships, m => {\n          set$8(m.element, 'display', 'none');\n        });\n      });\n      editor.on('show', () => {\n        each$1(uiMotherships, m => {\n          remove$6(m.element, 'display');\n        });\n      });\n      editor.on('NodeChange', resizeDocument);\n      editor.on('remove', () => {\n        elementLoad.unbind();\n        dom.unbind(contentWindow, 'resize', resizeWindow);\n        dom.unbind(contentWindow, 'scroll', scroll);\n        contentWindow = null;\n      });\n    };\n    const attachUiMotherships = (editor, uiRoot, uiRefs) => {\n      if (isSplitUiMode(editor)) {\n        attachSystemAfter(uiRefs.mainUi.mothership.element, uiRefs.popupUi.mothership);\n      }\n      attachSystem(uiRoot, uiRefs.dialogUi.mothership);\n    };\n    const render$1 = (editor, uiRefs, rawUiConfig, backstage, args) => {\n      const {mainUi, uiMotherships} = uiRefs;\n      const lastToolbarWidth = Cell(0);\n      const outerContainer = mainUi.outerContainer;\n      iframe(editor);\n      const eTargetNode = SugarElement.fromDom(args.targetNode);\n      const uiRoot = getContentContainer(getRootNode(eTargetNode));\n      attachSystemAfter(eTargetNode, mainUi.mothership);\n      attachUiMotherships(editor, uiRoot, uiRefs);\n      editor.on('SkinLoaded', () => {\n        OuterContainer.setSidebar(outerContainer, rawUiConfig.sidebar, getSidebarShow(editor));\n        setToolbar(editor, uiRefs, rawUiConfig, backstage);\n        lastToolbarWidth.set(editor.getWin().innerWidth);\n        OuterContainer.setMenubar(outerContainer, identifyMenus(editor, rawUiConfig));\n        OuterContainer.setViews(outerContainer, rawUiConfig.views);\n        setupEvents$1(editor, uiRefs);\n      });\n      const socket = OuterContainer.getSocket(outerContainer).getOrDie('Could not find expected socket element');\n      if (isiOS12) {\n        setAll(socket.element, {\n          'overflow': 'scroll',\n          '-webkit-overflow-scrolling': 'touch'\n        });\n        const limit = first(() => {\n          editor.dispatch('ScrollContent');\n        }, 20);\n        const unbinder = bind(socket.element, 'scroll', limit.throttle);\n        editor.on('remove', unbinder.unbind);\n      }\n      setupReadonlyModeSwitch(editor, uiRefs);\n      editor.addCommand('ToggleSidebar', (_ui, value) => {\n        OuterContainer.toggleSidebar(outerContainer, value);\n        editor.dispatch('ToggleSidebar');\n      });\n      editor.addQueryValueHandler('ToggleSidebar', () => {\n        var _a;\n        return (_a = OuterContainer.whichSidebar(outerContainer)) !== null && _a !== void 0 ? _a : '';\n      });\n      editor.addCommand('ToggleView', (_ui, value) => {\n        if (OuterContainer.toggleView(outerContainer, value)) {\n          const target = outerContainer.element;\n          mainUi.mothership.broadcastOn([dismissPopups()], { target });\n          each$1(uiMotherships, m => {\n            m.broadcastOn([dismissPopups()], { target });\n          });\n          if (isNull(OuterContainer.whichView(outerContainer))) {\n            editor.focus();\n            editor.nodeChanged();\n            OuterContainer.refreshToolbar(outerContainer);\n          }\n        }\n      });\n      editor.addQueryValueHandler('ToggleView', () => {\n        var _a;\n        return (_a = OuterContainer.whichView(outerContainer)) !== null && _a !== void 0 ? _a : '';\n      });\n      const toolbarMode = getToolbarMode(editor);\n      const refreshDrawer = () => {\n        OuterContainer.refreshToolbar(uiRefs.mainUi.outerContainer);\n      };\n      if (toolbarMode === ToolbarMode$1.sliding || toolbarMode === ToolbarMode$1.floating) {\n        editor.on('ResizeWindow ResizeEditor ResizeContent', () => {\n          const width = editor.getWin().innerWidth;\n          if (width !== lastToolbarWidth.get()) {\n            refreshDrawer();\n            lastToolbarWidth.set(width);\n          }\n        });\n      }\n      const api = {\n        setEnabled: state => {\n          broadcastReadonly(uiRefs, !state);\n        },\n        isEnabled: () => !Disabling.isDisabled(outerContainer)\n      };\n      return {\n        iframeContainer: socket.element.dom,\n        editorContainer: outerContainer.element.dom,\n        api\n      };\n    };\n\n    var Iframe = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        render: render$1\n    });\n\n    const parseToInt = val => {\n      const re = /^[0-9\\.]+(|px)$/i;\n      if (re.test('' + val)) {\n        return Optional.some(parseInt('' + val, 10));\n      }\n      return Optional.none();\n    };\n    const numToPx = val => isNumber(val) ? val + 'px' : val;\n    const calcCappedSize = (size, minSize, maxSize) => {\n      const minOverride = minSize.filter(min => size < min);\n      const maxOverride = maxSize.filter(max => size > max);\n      return minOverride.or(maxOverride).getOr(size);\n    };\n\n    const getHeight = editor => {\n      const baseHeight = getHeightOption(editor);\n      const minHeight = getMinHeightOption(editor);\n      const maxHeight = getMaxHeightOption(editor);\n      return parseToInt(baseHeight).map(height => calcCappedSize(height, minHeight, maxHeight));\n    };\n    const getHeightWithFallback = editor => {\n      const height = getHeight(editor);\n      return height.getOr(getHeightOption(editor));\n    };\n    const getWidth = editor => {\n      const baseWidth = getWidthOption(editor);\n      const minWidth = getMinWidthOption(editor);\n      const maxWidth = getMaxWidthOption(editor);\n      return parseToInt(baseWidth).map(width => calcCappedSize(width, minWidth, maxWidth));\n    };\n    const getWidthWithFallback = editor => {\n      const width = getWidth(editor);\n      return width.getOr(getWidthOption(editor));\n    };\n\n    const {ToolbarLocation, ToolbarMode} = Options;\n    const maximumDistanceToEdge = 40;\n    const InlineHeader = (editor, targetElm, uiRefs, backstage, floatContainer) => {\n      const {mainUi, uiMotherships} = uiRefs;\n      const DOM = global$7.DOM;\n      const useFixedToolbarContainer = useFixedContainer(editor);\n      const isSticky = isStickyToolbar(editor);\n      const editorMaxWidthOpt = getMaxWidthOption(editor).or(getWidth(editor));\n      const headerBackstage = backstage.shared.header;\n      const isPositionedAtTop = headerBackstage.isPositionedAtTop;\n      const toolbarMode = getToolbarMode(editor);\n      const isSplitToolbar = toolbarMode === ToolbarMode.sliding || toolbarMode === ToolbarMode.floating;\n      const visible = Cell(false);\n      const isVisible = () => visible.get() && !editor.removed;\n      const calcToolbarOffset = toolbar => isSplitToolbar ? toolbar.fold(constant$1(0), tbar => tbar.components().length > 1 ? get$d(tbar.components()[1].element) : 0) : 0;\n      const calcMode = container => {\n        switch (getToolbarLocation(editor)) {\n        case ToolbarLocation.auto:\n          const toolbar = OuterContainer.getToolbar(mainUi.outerContainer);\n          const offset = calcToolbarOffset(toolbar);\n          const toolbarHeight = get$d(container.element) - offset;\n          const targetBounds = box$1(targetElm);\n          const roomAtTop = targetBounds.y > toolbarHeight;\n          if (roomAtTop) {\n            return 'top';\n          } else {\n            const doc = documentElement(targetElm);\n            const docHeight = Math.max(doc.dom.scrollHeight, get$d(doc));\n            const roomAtBottom = targetBounds.bottom < docHeight - toolbarHeight;\n            if (roomAtBottom) {\n              return 'bottom';\n            } else {\n              const winBounds = win();\n              const isRoomAtBottomViewport = winBounds.bottom < targetBounds.bottom - toolbarHeight;\n              return isRoomAtBottomViewport ? 'bottom' : 'top';\n            }\n          }\n        case ToolbarLocation.bottom:\n          return 'bottom';\n        case ToolbarLocation.top:\n        default:\n          return 'top';\n        }\n      };\n      const setupMode = mode => {\n        floatContainer.on(container => {\n          Docking.setModes(container, [mode]);\n          headerBackstage.setDockingMode(mode);\n          const verticalDir = isPositionedAtTop() ? AttributeValue.TopToBottom : AttributeValue.BottomToTop;\n          set$9(container.element, Attribute, verticalDir);\n        });\n      };\n      const updateChromeWidth = () => {\n        floatContainer.on(container => {\n          const maxWidth = editorMaxWidthOpt.getOrThunk(() => {\n            const bodyMargin = parseToInt(get$e(body(), 'margin-left')).getOr(0);\n            return get$c(body()) - absolute$3(targetElm).left + bodyMargin;\n          });\n          set$8(container.element, 'max-width', maxWidth + 'px');\n        });\n      };\n      const updateChromePosition = optToolbarWidth => {\n        floatContainer.on(container => {\n          const toolbar = OuterContainer.getToolbar(mainUi.outerContainer);\n          const offset = calcToolbarOffset(toolbar);\n          const targetBounds = box$1(targetElm);\n          const {top, left} = getOffsetParent$1(editor, mainUi.outerContainer.element).fold(() => {\n            return {\n              top: isPositionedAtTop() ? Math.max(targetBounds.y - get$d(container.element) + offset, 0) : targetBounds.bottom,\n              left: targetBounds.x\n            };\n          }, offsetParent => {\n            var _a;\n            const offsetBox = box$1(offsetParent);\n            const scrollDelta = (_a = offsetParent.dom.scrollTop) !== null && _a !== void 0 ? _a : 0;\n            const isOffsetParentBody = eq(offsetParent, body());\n            const topValue = isOffsetParentBody ? Math.max(targetBounds.y - get$d(container.element) + offset, 0) : targetBounds.y - offsetBox.y + scrollDelta - get$d(container.element) + offset;\n            return {\n              top: isPositionedAtTop() ? topValue : targetBounds.bottom,\n              left: isOffsetParentBody ? targetBounds.x : targetBounds.x - offsetBox.x\n            };\n          });\n          const baseProperties = {\n            position: 'absolute',\n            left: Math.round(left) + 'px',\n            top: Math.round(top) + 'px'\n          };\n          const widthProperties = optToolbarWidth.map(toolbarWidth => {\n            const scroll = get$b();\n            const minimumToolbarWidth = 150;\n            const availableWidth = window.innerWidth - (left - scroll.left);\n            const width = Math.max(Math.min(toolbarWidth, availableWidth), minimumToolbarWidth);\n            return { width: width + 'px' };\n          }).getOr({});\n          setAll(mainUi.outerContainer.element, {\n            ...baseProperties,\n            ...widthProperties\n          });\n        });\n      };\n      const getOffsetParent$1 = (editor, element) => isSplitUiMode(editor) ? getOffsetParent(element) : Optional.none();\n      const repositionPopups$1 = () => {\n        each$1(uiMotherships, m => {\n          m.broadcastOn([repositionPopups()], {});\n        });\n      };\n      const restoreAndGetCompleteOuterContainerWidth = () => {\n        if (!useFixedToolbarContainer) {\n          const toolbarCurrentRightsidePosition = absolute$3(mainUi.outerContainer.element).left + getOuter$1(mainUi.outerContainer.element);\n          if (toolbarCurrentRightsidePosition >= window.innerWidth - maximumDistanceToEdge || getRaw(mainUi.outerContainer.element, 'width').isSome()) {\n            set$8(mainUi.outerContainer.element, 'position', 'absolute');\n            set$8(mainUi.outerContainer.element, 'left', '0px');\n            remove$6(mainUi.outerContainer.element, 'width');\n            const w = getOuter$1(mainUi.outerContainer.element);\n            return Optional.some(w);\n          } else {\n            return Optional.none();\n          }\n        } else {\n          return Optional.none();\n        }\n      };\n      const update = stickyAction => {\n        if (!isVisible()) {\n          return;\n        }\n        if (!useFixedToolbarContainer) {\n          updateChromeWidth();\n        }\n        const optToolbarWidth = useFixedToolbarContainer ? Optional.none() : restoreAndGetCompleteOuterContainerWidth();\n        if (isSplitToolbar) {\n          OuterContainer.refreshToolbar(mainUi.outerContainer);\n        }\n        if (!useFixedToolbarContainer) {\n          updateChromePosition(optToolbarWidth);\n        }\n        if (isSticky) {\n          floatContainer.on(stickyAction);\n        }\n        repositionPopups$1();\n      };\n      const doUpdateMode = () => {\n        if (useFixedToolbarContainer || !isSticky || !isVisible()) {\n          return false;\n        }\n        return floatContainer.get().exists(fc => {\n          const currentMode = headerBackstage.getDockingMode();\n          const newMode = calcMode(fc);\n          if (newMode !== currentMode) {\n            setupMode(newMode);\n            return true;\n          } else {\n            return false;\n          }\n        });\n      };\n      const show = () => {\n        visible.set(true);\n        set$8(mainUi.outerContainer.element, 'display', 'flex');\n        DOM.addClass(editor.getBody(), 'mce-edit-focus');\n        each$1(uiMotherships, m => {\n          remove$6(m.element, 'display');\n        });\n        doUpdateMode();\n        if (isSplitUiMode(editor)) {\n          update(elem => Docking.isDocked(elem) ? Docking.reset(elem) : Docking.refresh(elem));\n        } else {\n          update(Docking.refresh);\n        }\n      };\n      const hide = () => {\n        visible.set(false);\n        set$8(mainUi.outerContainer.element, 'display', 'none');\n        DOM.removeClass(editor.getBody(), 'mce-edit-focus');\n        each$1(uiMotherships, m => {\n          set$8(m.element, 'display', 'none');\n        });\n      };\n      const updateMode = () => {\n        const changedMode = doUpdateMode();\n        if (changedMode) {\n          update(Docking.reset);\n        }\n      };\n      return {\n        isVisible,\n        isPositionedAtTop,\n        show,\n        hide,\n        update,\n        updateMode,\n        repositionPopups: repositionPopups$1\n      };\n    };\n\n    const getTargetPosAndBounds = (targetElm, isToolbarTop) => {\n      const bounds = box$1(targetElm);\n      return {\n        pos: isToolbarTop ? bounds.y : bounds.bottom,\n        bounds\n      };\n    };\n    const setupEvents = (editor, targetElm, ui, toolbarPersist) => {\n      const prevPosAndBounds = Cell(getTargetPosAndBounds(targetElm, ui.isPositionedAtTop()));\n      const resizeContent = e => {\n        const {pos, bounds} = getTargetPosAndBounds(targetElm, ui.isPositionedAtTop());\n        const {\n          pos: prevPos,\n          bounds: prevBounds\n        } = prevPosAndBounds.get();\n        const hasResized = bounds.height !== prevBounds.height || bounds.width !== prevBounds.width;\n        prevPosAndBounds.set({\n          pos,\n          bounds\n        });\n        if (hasResized) {\n          fireResizeContent(editor, e);\n        }\n        if (ui.isVisible()) {\n          if (prevPos !== pos) {\n            ui.update(Docking.reset);\n          } else if (hasResized) {\n            ui.updateMode();\n            ui.repositionPopups();\n          }\n        }\n      };\n      if (!toolbarPersist) {\n        editor.on('activate', ui.show);\n        editor.on('deactivate', ui.hide);\n      }\n      editor.on('SkinLoaded ResizeWindow', () => ui.update(Docking.reset));\n      editor.on('NodeChange keydown', e => {\n        requestAnimationFrame(() => resizeContent(e));\n      });\n      let lastScrollX = 0;\n      const updateUi = last(() => ui.update(Docking.refresh), 33);\n      editor.on('ScrollWindow', () => {\n        const newScrollX = get$b().left;\n        if (newScrollX !== lastScrollX) {\n          lastScrollX = newScrollX;\n          updateUi.throttle();\n        }\n        ui.updateMode();\n      });\n      if (isSplitUiMode(editor)) {\n        editor.on('ElementScroll', _args => {\n          ui.update(Docking.refresh);\n        });\n      }\n      const elementLoad = unbindable();\n      elementLoad.set(capture(SugarElement.fromDom(editor.getBody()), 'load', e => resizeContent(e.raw)));\n      editor.on('remove', () => {\n        elementLoad.clear();\n      });\n    };\n    const render = (editor, uiRefs, rawUiConfig, backstage, args) => {\n      const {mainUi} = uiRefs;\n      const floatContainer = value$2();\n      const targetElm = SugarElement.fromDom(args.targetNode);\n      const ui = InlineHeader(editor, targetElm, uiRefs, backstage, floatContainer);\n      const toolbarPersist = isToolbarPersist(editor);\n      inline(editor);\n      const render = () => {\n        if (floatContainer.isSet()) {\n          ui.show();\n          return;\n        }\n        floatContainer.set(OuterContainer.getHeader(mainUi.outerContainer).getOrDie());\n        const uiContainer = getUiContainer(editor);\n        if (isSplitUiMode(editor)) {\n          attachSystemAfter(targetElm, mainUi.mothership);\n          attachSystemAfter(targetElm, uiRefs.popupUi.mothership);\n        } else {\n          attachSystem(uiContainer, mainUi.mothership);\n        }\n        attachSystem(uiContainer, uiRefs.dialogUi.mothership);\n        setToolbar(editor, uiRefs, rawUiConfig, backstage);\n        OuterContainer.setMenubar(mainUi.outerContainer, identifyMenus(editor, rawUiConfig));\n        ui.show();\n        setupEvents(editor, targetElm, ui, toolbarPersist);\n        editor.nodeChanged();\n      };\n      editor.on('show', render);\n      editor.on('hide', ui.hide);\n      if (!toolbarPersist) {\n        editor.on('focus', render);\n        editor.on('blur', ui.hide);\n      }\n      editor.on('init', () => {\n        if (editor.hasFocus() || toolbarPersist) {\n          render();\n        }\n      });\n      setupReadonlyModeSwitch(editor, uiRefs);\n      const api = {\n        show: render,\n        hide: ui.hide,\n        setEnabled: state => {\n          broadcastReadonly(uiRefs, !state);\n        },\n        isEnabled: () => !Disabling.isDisabled(mainUi.outerContainer)\n      };\n      return {\n        editorContainer: mainUi.outerContainer.element.dom,\n        api\n      };\n    };\n\n    var Inline = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        render: render\n    });\n\n    const LazyUiReferences = () => {\n      const dialogUi = value$2();\n      const popupUi = value$2();\n      const mainUi = value$2();\n      const lazyGetInOuterOrDie = (label, f) => () => mainUi.get().bind(oc => f(oc.outerContainer)).getOrDie(`Could not find ${ label } element in OuterContainer`);\n      const getUiMotherships = () => {\n        const optDialogMothership = dialogUi.get().map(ui => ui.mothership);\n        const optPopupMothership = popupUi.get().map(ui => ui.mothership);\n        return optDialogMothership.fold(() => optPopupMothership.toArray(), dm => optPopupMothership.fold(() => [dm], pm => eq(dm.element, pm.element) ? [dm] : [\n          dm,\n          pm\n        ]));\n      };\n      return {\n        dialogUi,\n        popupUi,\n        mainUi,\n        getUiMotherships,\n        lazyGetInOuterOrDie\n      };\n    };\n\n    const showContextToolbarEvent = 'contexttoolbar-show';\n    const hideContextToolbarEvent = 'contexttoolbar-hide';\n\n    const getFormApi = input => ({\n      hide: () => emit(input, sandboxClose()),\n      getValue: () => Representing.getValue(input)\n    });\n    const runOnExecute = (memInput, original) => run$1(internalToolbarButtonExecute, (comp, se) => {\n      const input = memInput.get(comp);\n      const formApi = getFormApi(input);\n      original.onAction(formApi, se.event.buttonApi);\n    });\n    const renderContextButton = (memInput, button, providers) => {\n      const {primary, ...rest} = button.original;\n      const bridged = getOrDie(createToolbarButton({\n        ...rest,\n        type: 'button',\n        onAction: noop\n      }));\n      return renderToolbarButtonWith(bridged, providers, [runOnExecute(memInput, button)]);\n    };\n    const renderContextToggleButton = (memInput, button, providers) => {\n      const {primary, ...rest} = button.original;\n      const bridged = getOrDie(createToggleButton({\n        ...rest,\n        type: 'togglebutton',\n        onAction: noop\n      }));\n      return renderToolbarToggleButtonWith(bridged, providers, [runOnExecute(memInput, button)]);\n    };\n    const isToggleButton = button => button.type === 'contextformtogglebutton';\n    const generateOne = (memInput, button, providersBackstage) => {\n      if (isToggleButton(button)) {\n        return renderContextToggleButton(memInput, button, providersBackstage);\n      } else {\n        return renderContextButton(memInput, button, providersBackstage);\n      }\n    };\n    const generate = (memInput, buttons, providersBackstage) => {\n      const mementos = map$2(buttons, button => record(generateOne(memInput, button, providersBackstage)));\n      const asSpecs = () => map$2(mementos, mem => mem.asSpec());\n      const findPrimary = compInSystem => findMap(buttons, (button, i) => {\n        if (button.primary) {\n          return Optional.from(mementos[i]).bind(mem => mem.getOpt(compInSystem)).filter(not(Disabling.isDisabled));\n        } else {\n          return Optional.none();\n        }\n      });\n      return {\n        asSpecs,\n        findPrimary\n      };\n    };\n\n    const buildInitGroups = (ctx, providers) => {\n      const inputAttributes = ctx.label.fold(() => ({}), label => ({ 'aria-label': label }));\n      const memInput = record(Input.sketch({\n        inputClasses: [\n          'tox-toolbar-textfield',\n          'tox-toolbar-nav-js'\n        ],\n        data: ctx.initValue(),\n        inputAttributes,\n        selectOnFocus: true,\n        inputBehaviours: derive$1([Keying.config({\n            mode: 'special',\n            onEnter: input => commands.findPrimary(input).map(primary => {\n              emitExecute(primary);\n              return true;\n            }),\n            onLeft: (comp, se) => {\n              se.cut();\n              return Optional.none();\n            },\n            onRight: (comp, se) => {\n              se.cut();\n              return Optional.none();\n            }\n          })])\n      }));\n      const commands = generate(memInput, ctx.commands, providers);\n      return [\n        {\n          title: Optional.none(),\n          items: [memInput.asSpec()]\n        },\n        {\n          title: Optional.none(),\n          items: commands.asSpecs()\n        }\n      ];\n    };\n    const renderContextForm = (toolbarType, ctx, providers) => renderToolbar({\n      type: toolbarType,\n      uid: generate$6('context-toolbar'),\n      initGroups: buildInitGroups(ctx, providers),\n      onEscape: Optional.none,\n      cyclicKeying: true,\n      providers\n    });\n    const ContextForm = {\n      renderContextForm,\n      buildInitGroups\n    };\n\n    const isVerticalOverlap = (a, b, threshold) => b.bottom - a.y >= threshold && a.bottom - b.y >= threshold;\n    const getRangeRect = rng => {\n      const rect = rng.getBoundingClientRect();\n      if (rect.height <= 0 && rect.width <= 0) {\n        const leaf$1 = leaf(SugarElement.fromDom(rng.startContainer), rng.startOffset).element;\n        const elm = isText(leaf$1) ? parent(leaf$1) : Optional.some(leaf$1);\n        return elm.filter(isElement$1).map(e => e.dom.getBoundingClientRect()).getOr(rect);\n      } else {\n        return rect;\n      }\n    };\n    const getSelectionBounds = editor => {\n      const rng = editor.selection.getRng();\n      const rect = getRangeRect(rng);\n      if (editor.inline) {\n        const scroll = get$b();\n        return bounds(scroll.left + rect.left, scroll.top + rect.top, rect.width, rect.height);\n      } else {\n        const bodyPos = absolute$2(SugarElement.fromDom(editor.getBody()));\n        return bounds(bodyPos.x + rect.left, bodyPos.y + rect.top, rect.width, rect.height);\n      }\n    };\n    const getAnchorElementBounds = (editor, lastElement) => lastElement.filter(elem => inBody(elem) && isHTMLElement(elem)).map(absolute$2).getOrThunk(() => getSelectionBounds(editor));\n    const getHorizontalBounds = (contentAreaBox, viewportBounds, margin) => {\n      const x = Math.max(contentAreaBox.x + margin, viewportBounds.x);\n      const right = Math.min(contentAreaBox.right - margin, viewportBounds.right);\n      return {\n        x,\n        width: right - x\n      };\n    };\n    const getVerticalBounds = (editor, contentAreaBox, viewportBounds, isToolbarLocationTop, toolbarType, margin) => {\n      const container = SugarElement.fromDom(editor.getContainer());\n      const header = descendant(container, '.tox-editor-header').getOr(container);\n      const headerBox = box$1(header);\n      const isToolbarBelowContentArea = headerBox.y >= contentAreaBox.bottom;\n      const isToolbarAbove = isToolbarLocationTop && !isToolbarBelowContentArea;\n      if (editor.inline && isToolbarAbove) {\n        return {\n          y: Math.max(headerBox.bottom + margin, viewportBounds.y),\n          bottom: viewportBounds.bottom\n        };\n      }\n      if (editor.inline && !isToolbarAbove) {\n        return {\n          y: viewportBounds.y,\n          bottom: Math.min(headerBox.y - margin, viewportBounds.bottom)\n        };\n      }\n      const containerBounds = toolbarType === 'line' ? box$1(container) : contentAreaBox;\n      if (isToolbarAbove) {\n        return {\n          y: Math.max(headerBox.bottom + margin, viewportBounds.y),\n          bottom: Math.min(containerBounds.bottom - margin, viewportBounds.bottom)\n        };\n      }\n      return {\n        y: Math.max(containerBounds.y + margin, viewportBounds.y),\n        bottom: Math.min(headerBox.y - margin, viewportBounds.bottom)\n      };\n    };\n    const getContextToolbarBounds = (editor, sharedBackstage, toolbarType, margin = 0) => {\n      const viewportBounds = getBounds$3(window);\n      const contentAreaBox = box$1(SugarElement.fromDom(editor.getContentAreaContainer()));\n      const toolbarOrMenubarEnabled = isMenubarEnabled(editor) || isToolbarEnabled(editor) || isMultipleToolbars(editor);\n      const {x, width} = getHorizontalBounds(contentAreaBox, viewportBounds, margin);\n      if (editor.inline && !toolbarOrMenubarEnabled) {\n        return bounds(x, viewportBounds.y, width, viewportBounds.height);\n      } else {\n        const isToolbarTop = sharedBackstage.header.isPositionedAtTop();\n        const {y, bottom} = getVerticalBounds(editor, contentAreaBox, viewportBounds, isToolbarTop, toolbarType, margin);\n        return bounds(x, y, width, bottom - y);\n      }\n    };\n\n    const bubbleSize$1 = 12;\n    const bubbleAlignments$1 = {\n      valignCentre: [],\n      alignCentre: [],\n      alignLeft: ['tox-pop--align-left'],\n      alignRight: ['tox-pop--align-right'],\n      right: ['tox-pop--right'],\n      left: ['tox-pop--left'],\n      bottom: ['tox-pop--bottom'],\n      top: ['tox-pop--top'],\n      inset: ['tox-pop--inset']\n    };\n    const anchorOverrides = {\n      maxHeightFunction: expandable$1(),\n      maxWidthFunction: expandable()\n    };\n    const isEntireElementSelected = (editor, elem) => {\n      const rng = editor.selection.getRng();\n      const leaf$1 = leaf(SugarElement.fromDom(rng.startContainer), rng.startOffset);\n      return rng.startContainer === rng.endContainer && rng.startOffset === rng.endOffset - 1 && eq(leaf$1.element, elem);\n    };\n    const preservePosition = (elem, position, f) => {\n      const currentPosition = getRaw(elem, 'position');\n      set$8(elem, 'position', position);\n      const result = f(elem);\n      currentPosition.each(pos => set$8(elem, 'position', pos));\n      return result;\n    };\n    const shouldUseInsetLayouts = position => position === 'node';\n    const determineInsetLayout = (editor, contextbar, elem, data, bounds) => {\n      const selectionBounds = getSelectionBounds(editor);\n      const isSameAnchorElement = data.lastElement().exists(prev => eq(elem, prev));\n      if (isEntireElementSelected(editor, elem)) {\n        return isSameAnchorElement ? preserve : north;\n      } else if (isSameAnchorElement) {\n        return preservePosition(contextbar, data.getMode(), () => {\n          const isOverlapping = isVerticalOverlap(selectionBounds, box$1(contextbar), -20);\n          return isOverlapping && !data.isReposition() ? flip : preserve;\n        });\n      } else {\n        const yBounds = data.getMode() === 'fixed' ? bounds.y + get$b().top : bounds.y;\n        const contextbarHeight = get$d(contextbar) + bubbleSize$1;\n        return yBounds + contextbarHeight <= selectionBounds.y ? north : south;\n      }\n    };\n    const getAnchorSpec$2 = (editor, mobile, data, position) => {\n      const smartInsetLayout = elem => (anchor, element, bubbles, placee, bounds) => {\n        const layout = determineInsetLayout(editor, placee, elem, data, bounds);\n        const newAnchor = {\n          ...anchor,\n          y: bounds.y,\n          height: bounds.height\n        };\n        return {\n          ...layout(newAnchor, element, bubbles, placee, bounds),\n          alwaysFit: true\n        };\n      };\n      const getInsetLayouts = elem => shouldUseInsetLayouts(position) ? [smartInsetLayout(elem)] : [];\n      const desktopAnchorSpecLayouts = {\n        onLtr: elem => [\n          north$2,\n          south$2,\n          northeast$2,\n          southeast$2,\n          northwest$2,\n          southwest$2\n        ].concat(getInsetLayouts(elem)),\n        onRtl: elem => [\n          north$2,\n          south$2,\n          northwest$2,\n          southwest$2,\n          northeast$2,\n          southeast$2\n        ].concat(getInsetLayouts(elem))\n      };\n      const mobileAnchorSpecLayouts = {\n        onLtr: elem => [\n          south$2,\n          southeast$2,\n          southwest$2,\n          northeast$2,\n          northwest$2,\n          north$2\n        ].concat(getInsetLayouts(elem)),\n        onRtl: elem => [\n          south$2,\n          southwest$2,\n          southeast$2,\n          northwest$2,\n          northeast$2,\n          north$2\n        ].concat(getInsetLayouts(elem))\n      };\n      return mobile ? mobileAnchorSpecLayouts : desktopAnchorSpecLayouts;\n    };\n    const getAnchorLayout = (editor, position, isTouch, data) => {\n      if (position === 'line') {\n        return {\n          bubble: nu$5(bubbleSize$1, 0, bubbleAlignments$1),\n          layouts: {\n            onLtr: () => [east$2],\n            onRtl: () => [west$2]\n          },\n          overrides: anchorOverrides\n        };\n      } else {\n        return {\n          bubble: nu$5(0, bubbleSize$1, bubbleAlignments$1, 1 / bubbleSize$1),\n          layouts: getAnchorSpec$2(editor, isTouch, data, position),\n          overrides: anchorOverrides\n        };\n      }\n    };\n\n    const matchTargetWith = (elem, candidates) => {\n      const ctxs = filter$2(candidates, toolbarApi => toolbarApi.predicate(elem.dom));\n      const {pass, fail} = partition$3(ctxs, t => t.type === 'contexttoolbar');\n      return {\n        contextToolbars: pass,\n        contextForms: fail\n      };\n    };\n    const filterByPositionForStartNode = toolbars => {\n      if (toolbars.length <= 1) {\n        return toolbars;\n      } else {\n        const doesPositionExist = value => exists(toolbars, t => t.position === value);\n        const filterToolbarsByPosition = value => filter$2(toolbars, t => t.position === value);\n        const hasSelectionToolbars = doesPositionExist('selection');\n        const hasNodeToolbars = doesPositionExist('node');\n        if (hasSelectionToolbars || hasNodeToolbars) {\n          if (hasNodeToolbars && hasSelectionToolbars) {\n            const nodeToolbars = filterToolbarsByPosition('node');\n            const selectionToolbars = map$2(filterToolbarsByPosition('selection'), t => ({\n              ...t,\n              position: 'node'\n            }));\n            return nodeToolbars.concat(selectionToolbars);\n          } else {\n            return hasSelectionToolbars ? filterToolbarsByPosition('selection') : filterToolbarsByPosition('node');\n          }\n        } else {\n          return filterToolbarsByPosition('line');\n        }\n      }\n    };\n    const filterByPositionForAncestorNode = toolbars => {\n      if (toolbars.length <= 1) {\n        return toolbars;\n      } else {\n        const findPosition = value => find$5(toolbars, t => t.position === value);\n        const basePosition = findPosition('selection').orThunk(() => findPosition('node')).orThunk(() => findPosition('line')).map(t => t.position);\n        return basePosition.fold(() => [], pos => filter$2(toolbars, t => t.position === pos));\n      }\n    };\n    const matchStartNode = (elem, nodeCandidates, editorCandidates) => {\n      const nodeMatches = matchTargetWith(elem, nodeCandidates);\n      if (nodeMatches.contextForms.length > 0) {\n        return Optional.some({\n          elem,\n          toolbars: [nodeMatches.contextForms[0]]\n        });\n      } else {\n        const editorMatches = matchTargetWith(elem, editorCandidates);\n        if (editorMatches.contextForms.length > 0) {\n          return Optional.some({\n            elem,\n            toolbars: [editorMatches.contextForms[0]]\n          });\n        } else if (nodeMatches.contextToolbars.length > 0 || editorMatches.contextToolbars.length > 0) {\n          const toolbars = filterByPositionForStartNode(nodeMatches.contextToolbars.concat(editorMatches.contextToolbars));\n          return Optional.some({\n            elem,\n            toolbars\n          });\n        } else {\n          return Optional.none();\n        }\n      }\n    };\n    const matchAncestor = (isRoot, startNode, scopes) => {\n      if (isRoot(startNode)) {\n        return Optional.none();\n      } else {\n        return ancestor$2(startNode, ancestorElem => {\n          if (isElement$1(ancestorElem)) {\n            const {contextToolbars, contextForms} = matchTargetWith(ancestorElem, scopes.inNodeScope);\n            const toolbars = contextForms.length > 0 ? contextForms : filterByPositionForAncestorNode(contextToolbars);\n            return toolbars.length > 0 ? Optional.some({\n              elem: ancestorElem,\n              toolbars\n            }) : Optional.none();\n          } else {\n            return Optional.none();\n          }\n        }, isRoot);\n      }\n    };\n    const lookup$1 = (scopes, editor) => {\n      const rootElem = SugarElement.fromDom(editor.getBody());\n      const isRoot = elem => eq(elem, rootElem);\n      const isOutsideRoot = startNode => !isRoot(startNode) && !contains(rootElem, startNode);\n      const startNode = SugarElement.fromDom(editor.selection.getNode());\n      if (isOutsideRoot(startNode)) {\n        return Optional.none();\n      }\n      return matchStartNode(startNode, scopes.inNodeScope, scopes.inEditorScope).orThunk(() => matchAncestor(isRoot, startNode, scopes));\n    };\n\n    const categorise = (contextToolbars, navigate) => {\n      const forms = {};\n      const inNodeScope = [];\n      const inEditorScope = [];\n      const formNavigators = {};\n      const lookupTable = {};\n      const registerForm = (key, toolbarSpec) => {\n        const contextForm = getOrDie(createContextForm(toolbarSpec));\n        forms[key] = contextForm;\n        contextForm.launch.map(launch => {\n          formNavigators['form:' + key + ''] = {\n            ...toolbarSpec.launch,\n            type: launch.type === 'contextformtogglebutton' ? 'togglebutton' : 'button',\n            onAction: () => {\n              navigate(contextForm);\n            }\n          };\n        });\n        if (contextForm.scope === 'editor') {\n          inEditorScope.push(contextForm);\n        } else {\n          inNodeScope.push(contextForm);\n        }\n        lookupTable[key] = contextForm;\n      };\n      const registerToolbar = (key, toolbarSpec) => {\n        createContextToolbar(toolbarSpec).each(contextToolbar => {\n          if (toolbarSpec.scope === 'editor') {\n            inEditorScope.push(contextToolbar);\n          } else {\n            inNodeScope.push(contextToolbar);\n          }\n          lookupTable[key] = contextToolbar;\n        });\n      };\n      const keys$1 = keys(contextToolbars);\n      each$1(keys$1, key => {\n        const toolbarApi = contextToolbars[key];\n        if (toolbarApi.type === 'contextform') {\n          registerForm(key, toolbarApi);\n        } else if (toolbarApi.type === 'contexttoolbar') {\n          registerToolbar(key, toolbarApi);\n        }\n      });\n      return {\n        forms,\n        inNodeScope,\n        inEditorScope,\n        lookupTable,\n        formNavigators\n      };\n    };\n\n    const forwardSlideEvent = generate$6('forward-slide');\n    const backSlideEvent = generate$6('backward-slide');\n    const changeSlideEvent = generate$6('change-slide-event');\n    const resizingClass = 'tox-pop--resizing';\n    const renderContextToolbar = spec => {\n      const stack = Cell([]);\n      return InlineView.sketch({\n        dom: {\n          tag: 'div',\n          classes: ['tox-pop']\n        },\n        fireDismissalEventInstead: { event: 'doNotDismissYet' },\n        onShow: comp => {\n          stack.set([]);\n          InlineView.getContent(comp).each(c => {\n            remove$6(c.element, 'visibility');\n          });\n          remove$2(comp.element, resizingClass);\n          remove$6(comp.element, 'width');\n        },\n        inlineBehaviours: derive$1([\n          config('context-toolbar-events', [\n            runOnSource(transitionend(), (comp, se) => {\n              if (se.event.raw.propertyName === 'width') {\n                remove$2(comp.element, resizingClass);\n                remove$6(comp.element, 'width');\n              }\n            }),\n            run$1(changeSlideEvent, (comp, se) => {\n              const elem = comp.element;\n              remove$6(elem, 'width');\n              const currentWidth = get$c(elem);\n              InlineView.setContent(comp, se.event.contents);\n              add$2(elem, resizingClass);\n              const newWidth = get$c(elem);\n              set$8(elem, 'width', currentWidth + 'px');\n              InlineView.getContent(comp).each(newContents => {\n                se.event.focus.bind(f => {\n                  focus$3(f);\n                  return search(elem);\n                }).orThunk(() => {\n                  Keying.focusIn(newContents);\n                  return active$1(getRootNode(elem));\n                });\n              });\n              setTimeout(() => {\n                set$8(comp.element, 'width', newWidth + 'px');\n              }, 0);\n            }),\n            run$1(forwardSlideEvent, (comp, se) => {\n              InlineView.getContent(comp).each(oldContents => {\n                stack.set(stack.get().concat([{\n                    bar: oldContents,\n                    focus: active$1(getRootNode(comp.element))\n                  }]));\n              });\n              emitWith(comp, changeSlideEvent, {\n                contents: se.event.forwardContents,\n                focus: Optional.none()\n              });\n            }),\n            run$1(backSlideEvent, (comp, _se) => {\n              last$1(stack.get()).each(last => {\n                stack.set(stack.get().slice(0, stack.get().length - 1));\n                emitWith(comp, changeSlideEvent, {\n                  contents: premade(last.bar),\n                  focus: last.focus\n                });\n              });\n            })\n          ]),\n          Keying.config({\n            mode: 'special',\n            onEscape: comp => last$1(stack.get()).fold(() => spec.onEscape(), _ => {\n              emit(comp, backSlideEvent);\n              return Optional.some(true);\n            })\n          })\n        ]),\n        lazySink: () => Result.value(spec.sink)\n      });\n    };\n\n    const transitionClass = 'tox-pop--transition';\n    const register$9 = (editor, registryContextToolbars, sink, extras) => {\n      const backstage = extras.backstage;\n      const sharedBackstage = backstage.shared;\n      const isTouch = detect$2().deviceType.isTouch;\n      const lastElement = value$2();\n      const lastTrigger = value$2();\n      const lastContextPosition = value$2();\n      const contextbar = build$1(renderContextToolbar({\n        sink,\n        onEscape: () => {\n          editor.focus();\n          return Optional.some(true);\n        }\n      }));\n      const getBounds = () => {\n        const position = lastContextPosition.get().getOr('node');\n        const margin = shouldUseInsetLayouts(position) ? 1 : 0;\n        return getContextToolbarBounds(editor, sharedBackstage, position, margin);\n      };\n      const canLaunchToolbar = () => {\n        return !editor.removed && !(isTouch() && backstage.isContextMenuOpen());\n      };\n      const isSameLaunchElement = elem => is$1(lift2(elem, lastElement.get(), eq), true);\n      const shouldContextToolbarHide = () => {\n        if (!canLaunchToolbar()) {\n          return true;\n        } else {\n          const contextToolbarBounds = getBounds();\n          const anchorBounds = is$1(lastContextPosition.get(), 'node') ? getAnchorElementBounds(editor, lastElement.get()) : getSelectionBounds(editor);\n          return contextToolbarBounds.height <= 0 || !isVerticalOverlap(anchorBounds, contextToolbarBounds, 0.01);\n        }\n      };\n      const close = () => {\n        lastElement.clear();\n        lastTrigger.clear();\n        lastContextPosition.clear();\n        InlineView.hide(contextbar);\n      };\n      const hideOrRepositionIfNecessary = () => {\n        if (InlineView.isOpen(contextbar)) {\n          const contextBarEle = contextbar.element;\n          remove$6(contextBarEle, 'display');\n          if (shouldContextToolbarHide()) {\n            set$8(contextBarEle, 'display', 'none');\n          } else {\n            lastTrigger.set(0);\n            InlineView.reposition(contextbar);\n          }\n        }\n      };\n      const wrapInPopDialog = toolbarSpec => ({\n        dom: {\n          tag: 'div',\n          classes: ['tox-pop__dialog']\n        },\n        components: [toolbarSpec],\n        behaviours: derive$1([\n          Keying.config({ mode: 'acyclic' }),\n          config('pop-dialog-wrap-events', [\n            runOnAttached(comp => {\n              editor.shortcuts.add('ctrl+F9', 'focus statusbar', () => Keying.focusIn(comp));\n            }),\n            runOnDetached(_comp => {\n              editor.shortcuts.remove('ctrl+F9');\n            })\n          ])\n        ])\n      });\n      const getScopes = cached(() => categorise(registryContextToolbars, toolbarApi => {\n        const alloySpec = buildToolbar([toolbarApi]);\n        emitWith(contextbar, forwardSlideEvent, { forwardContents: wrapInPopDialog(alloySpec) });\n      }));\n      const buildContextToolbarGroups = (allButtons, ctx) => identifyButtons(editor, {\n        buttons: allButtons,\n        toolbar: ctx.items,\n        allowToolbarGroups: false\n      }, extras.backstage, Optional.some(['form:']));\n      const buildContextFormGroups = (ctx, providers) => ContextForm.buildInitGroups(ctx, providers);\n      const buildToolbar = toolbars => {\n        const {buttons} = editor.ui.registry.getAll();\n        const scopes = getScopes();\n        const allButtons = {\n          ...buttons,\n          ...scopes.formNavigators\n        };\n        const toolbarType = getToolbarMode(editor) === ToolbarMode$1.scrolling ? ToolbarMode$1.scrolling : ToolbarMode$1.default;\n        const initGroups = flatten(map$2(toolbars, ctx => ctx.type === 'contexttoolbar' ? buildContextToolbarGroups(allButtons, ctx) : buildContextFormGroups(ctx, sharedBackstage.providers)));\n        return renderToolbar({\n          type: toolbarType,\n          uid: generate$6('context-toolbar'),\n          initGroups,\n          onEscape: Optional.none,\n          cyclicKeying: true,\n          providers: sharedBackstage.providers\n        });\n      };\n      const getAnchor = (position, element) => {\n        const anchorage = position === 'node' ? sharedBackstage.anchors.node(element) : sharedBackstage.anchors.cursor();\n        const anchorLayout = getAnchorLayout(editor, position, isTouch(), {\n          lastElement: lastElement.get,\n          isReposition: () => is$1(lastTrigger.get(), 0),\n          getMode: () => Positioning.getMode(sink)\n        });\n        return deepMerge(anchorage, anchorLayout);\n      };\n      const launchContext = (toolbarApi, elem) => {\n        launchContextToolbar.cancel();\n        if (!canLaunchToolbar()) {\n          return;\n        }\n        const toolbarSpec = buildToolbar(toolbarApi);\n        const position = toolbarApi[0].position;\n        const anchor = getAnchor(position, elem);\n        lastContextPosition.set(position);\n        lastTrigger.set(1);\n        const contextBarEle = contextbar.element;\n        remove$6(contextBarEle, 'display');\n        if (!isSameLaunchElement(elem)) {\n          remove$2(contextBarEle, transitionClass);\n          Positioning.reset(sink, contextbar);\n        }\n        InlineView.showWithinBounds(contextbar, wrapInPopDialog(toolbarSpec), {\n          anchor,\n          transition: {\n            classes: [transitionClass],\n            mode: 'placement'\n          }\n        }, () => Optional.some(getBounds()));\n        elem.fold(lastElement.clear, lastElement.set);\n        if (shouldContextToolbarHide()) {\n          set$8(contextBarEle, 'display', 'none');\n        }\n      };\n      let isDragging = false;\n      const launchContextToolbar = last(() => {\n        if (!editor.hasFocus() || editor.removed || isDragging) {\n          return;\n        }\n        if (has(contextbar.element, transitionClass)) {\n          launchContextToolbar.throttle();\n        } else {\n          const scopes = getScopes();\n          lookup$1(scopes, editor).fold(close, info => {\n            launchContext(info.toolbars, Optional.some(info.elem));\n          });\n        }\n      }, 17);\n      editor.on('init', () => {\n        editor.on('remove', close);\n        editor.on('ScrollContent ScrollWindow ObjectResized ResizeEditor longpress', hideOrRepositionIfNecessary);\n        editor.on('click keyup focus SetContent', launchContextToolbar.throttle);\n        editor.on(hideContextToolbarEvent, close);\n        editor.on(showContextToolbarEvent, e => {\n          const scopes = getScopes();\n          get$g(scopes.lookupTable, e.toolbarKey).each(ctx => {\n            launchContext([ctx], someIf(e.target !== editor, e.target));\n            InlineView.getContent(contextbar).each(Keying.focusIn);\n          });\n        });\n        editor.on('focusout', _e => {\n          global$9.setEditorTimeout(editor, () => {\n            if (search(sink.element).isNone() && search(contextbar.element).isNone()) {\n              close();\n            }\n          }, 0);\n        });\n        editor.on('SwitchMode', () => {\n          if (editor.mode.isReadOnly()) {\n            close();\n          }\n        });\n        editor.on('AfterProgressState', event => {\n          if (event.state) {\n            close();\n          } else if (editor.hasFocus()) {\n            launchContextToolbar.throttle();\n          }\n        });\n        editor.on('dragstart', () => {\n          isDragging = true;\n        });\n        editor.on('dragend drop', () => {\n          isDragging = false;\n        });\n        editor.on('NodeChange', _e => {\n          search(contextbar.element).fold(launchContextToolbar.throttle, noop);\n        });\n      });\n    };\n\n    const register$8 = editor => {\n      const alignToolbarButtons = [\n        {\n          name: 'alignleft',\n          text: 'Align left',\n          cmd: 'JustifyLeft',\n          icon: 'align-left'\n        },\n        {\n          name: 'aligncenter',\n          text: 'Align center',\n          cmd: 'JustifyCenter',\n          icon: 'align-center'\n        },\n        {\n          name: 'alignright',\n          text: 'Align right',\n          cmd: 'JustifyRight',\n          icon: 'align-right'\n        },\n        {\n          name: 'alignjustify',\n          text: 'Justify',\n          cmd: 'JustifyFull',\n          icon: 'align-justify'\n        }\n      ];\n      each$1(alignToolbarButtons, item => {\n        editor.ui.registry.addToggleButton(item.name, {\n          tooltip: item.text,\n          icon: item.icon,\n          onAction: onActionExecCommand(editor, item.cmd),\n          onSetup: onSetupStateToggle(editor, item.name)\n        });\n      });\n      editor.ui.registry.addButton('alignnone', {\n        tooltip: 'No alignment',\n        icon: 'align-none',\n        onSetup: onSetupEditableToggle(editor),\n        onAction: onActionExecCommand(editor, 'JustifyNone')\n      });\n    };\n\n    const registerController = (editor, spec) => {\n      const getMenuItems = () => {\n        const options = spec.getOptions(editor);\n        const initial = spec.getCurrent(editor).map(spec.hash);\n        const current = value$2();\n        return map$2(options, value => ({\n          type: 'togglemenuitem',\n          text: spec.display(value),\n          onSetup: api => {\n            const setActive = active => {\n              if (active) {\n                current.on(oldApi => oldApi.setActive(false));\n                current.set(api);\n              }\n              api.setActive(active);\n            };\n            setActive(is$1(initial, spec.hash(value)));\n            const unbindWatcher = spec.watcher(editor, value, setActive);\n            return () => {\n              current.clear();\n              unbindWatcher();\n            };\n          },\n          onAction: () => spec.setCurrent(editor, value)\n        }));\n      };\n      editor.ui.registry.addMenuButton(spec.name, {\n        tooltip: spec.text,\n        icon: spec.icon,\n        fetch: callback => callback(getMenuItems()),\n        onSetup: spec.onToolbarSetup\n      });\n      editor.ui.registry.addNestedMenuItem(spec.name, {\n        type: 'nestedmenuitem',\n        text: spec.text,\n        getSubmenuItems: getMenuItems,\n        onSetup: spec.onMenuSetup\n      });\n    };\n    const lineHeightSpec = editor => ({\n      name: 'lineheight',\n      text: 'Line height',\n      icon: 'line-height',\n      getOptions: getLineHeightFormats,\n      hash: input => normalise(input, [\n        'fixed',\n        'relative',\n        'empty'\n      ]).getOr(input),\n      display: identity,\n      watcher: (editor, value, callback) => editor.formatter.formatChanged('lineheight', callback, false, { value }).unbind,\n      getCurrent: editor => Optional.from(editor.queryCommandValue('LineHeight')),\n      setCurrent: (editor, value) => editor.execCommand('LineHeight', false, value),\n      onToolbarSetup: onSetupEditableToggle(editor),\n      onMenuSetup: onSetupEditableToggle(editor)\n    });\n    const languageSpec = editor => {\n      const settingsOpt = Optional.from(getContentLanguages(editor));\n      return settingsOpt.map(settings => ({\n        name: 'language',\n        text: 'Language',\n        icon: 'language',\n        getOptions: constant$1(settings),\n        hash: input => isUndefined(input.customCode) ? input.code : `${ input.code }/${ input.customCode }`,\n        display: input => input.title,\n        watcher: (editor, value, callback) => {\n          var _a;\n          return editor.formatter.formatChanged('lang', callback, false, {\n            value: value.code,\n            customValue: (_a = value.customCode) !== null && _a !== void 0 ? _a : null\n          }).unbind;\n        },\n        getCurrent: editor => {\n          const node = SugarElement.fromDom(editor.selection.getNode());\n          return closest$4(node, n => Optional.some(n).filter(isElement$1).bind(ele => {\n            const codeOpt = getOpt(ele, 'lang');\n            return codeOpt.map(code => {\n              const customCode = getOpt(ele, 'data-mce-lang').getOrUndefined();\n              return {\n                code,\n                customCode,\n                title: ''\n              };\n            });\n          }));\n        },\n        setCurrent: (editor, lang) => editor.execCommand('Lang', false, lang),\n        onToolbarSetup: api => {\n          const unbinder = unbindable();\n          api.setActive(editor.formatter.match('lang', {}, undefined, true));\n          unbinder.set(editor.formatter.formatChanged('lang', api.setActive, true));\n          return composeUnbinders(unbinder.clear, onSetupEditableToggle(editor)(api));\n        },\n        onMenuSetup: onSetupEditableToggle(editor)\n      }));\n    };\n    const register$7 = editor => {\n      registerController(editor, lineHeightSpec(editor));\n      languageSpec(editor).each(spec => registerController(editor, spec));\n    };\n\n    const register$6 = (editor, backstage) => {\n      createAlignMenu(editor, backstage);\n      createFontFamilyMenu(editor, backstage);\n      createStylesMenu(editor, backstage);\n      createBlocksMenu(editor, backstage);\n      createFontSizeMenu(editor, backstage);\n    };\n\n    const onSetupOutdentState = editor => onSetupEvent(editor, 'NodeChange', api => {\n      api.setEnabled(editor.queryCommandState('outdent') && editor.selection.isEditable());\n    });\n    const registerButtons$2 = editor => {\n      editor.ui.registry.addButton('outdent', {\n        tooltip: 'Decrease indent',\n        icon: 'outdent',\n        onSetup: onSetupOutdentState(editor),\n        onAction: onActionExecCommand(editor, 'outdent')\n      });\n      editor.ui.registry.addButton('indent', {\n        tooltip: 'Increase indent',\n        icon: 'indent',\n        onSetup: onSetupEditableToggle(editor),\n        onAction: onActionExecCommand(editor, 'indent')\n      });\n    };\n    const register$5 = editor => {\n      registerButtons$2(editor);\n    };\n\n    const makeSetupHandler = (editor, pasteAsText) => api => {\n      api.setActive(pasteAsText.get());\n      const pastePlainTextToggleHandler = e => {\n        pasteAsText.set(e.state);\n        api.setActive(e.state);\n      };\n      editor.on('PastePlainTextToggle', pastePlainTextToggleHandler);\n      return composeUnbinders(() => editor.off('PastePlainTextToggle', pastePlainTextToggleHandler), onSetupEditableToggle(editor)(api));\n    };\n    const register$4 = editor => {\n      const pasteAsText = Cell(getPasteAsText(editor));\n      const onAction = () => editor.execCommand('mceTogglePlainTextPaste');\n      editor.ui.registry.addToggleButton('pastetext', {\n        active: false,\n        icon: 'paste-text',\n        tooltip: 'Paste as text',\n        onAction,\n        onSetup: makeSetupHandler(editor, pasteAsText)\n      });\n      editor.ui.registry.addToggleMenuItem('pastetext', {\n        text: 'Paste as text',\n        icon: 'paste-text',\n        onAction,\n        onSetup: makeSetupHandler(editor, pasteAsText)\n      });\n    };\n\n    const onActionToggleFormat = (editor, fmt) => () => {\n      editor.execCommand('mceToggleFormat', false, fmt);\n    };\n    const registerFormatButtons = editor => {\n      global$1.each([\n        {\n          name: 'bold',\n          text: 'Bold',\n          icon: 'bold'\n        },\n        {\n          name: 'italic',\n          text: 'Italic',\n          icon: 'italic'\n        },\n        {\n          name: 'underline',\n          text: 'Underline',\n          icon: 'underline'\n        },\n        {\n          name: 'strikethrough',\n          text: 'Strikethrough',\n          icon: 'strike-through'\n        },\n        {\n          name: 'subscript',\n          text: 'Subscript',\n          icon: 'subscript'\n        },\n        {\n          name: 'superscript',\n          text: 'Superscript',\n          icon: 'superscript'\n        }\n      ], (btn, _idx) => {\n        editor.ui.registry.addToggleButton(btn.name, {\n          tooltip: btn.text,\n          icon: btn.icon,\n          onSetup: onSetupStateToggle(editor, btn.name),\n          onAction: onActionToggleFormat(editor, btn.name)\n        });\n      });\n      for (let i = 1; i <= 6; i++) {\n        const name = 'h' + i;\n        editor.ui.registry.addToggleButton(name, {\n          text: name.toUpperCase(),\n          tooltip: 'Heading ' + i,\n          onSetup: onSetupStateToggle(editor, name),\n          onAction: onActionToggleFormat(editor, name)\n        });\n      }\n    };\n    const registerCommandButtons = editor => {\n      global$1.each([\n        {\n          name: 'copy',\n          text: 'Copy',\n          action: 'Copy',\n          icon: 'copy'\n        },\n        {\n          name: 'help',\n          text: 'Help',\n          action: 'mceHelp',\n          icon: 'help'\n        },\n        {\n          name: 'selectall',\n          text: 'Select all',\n          action: 'SelectAll',\n          icon: 'select-all'\n        },\n        {\n          name: 'newdocument',\n          text: 'New document',\n          action: 'mceNewDocument',\n          icon: 'new-document'\n        },\n        {\n          name: 'print',\n          text: 'Print',\n          action: 'mcePrint',\n          icon: 'print'\n        }\n      ], btn => {\n        editor.ui.registry.addButton(btn.name, {\n          tooltip: btn.text,\n          icon: btn.icon,\n          onAction: onActionExecCommand(editor, btn.action)\n        });\n      });\n      global$1.each([\n        {\n          name: 'cut',\n          text: 'Cut',\n          action: 'Cut',\n          icon: 'cut'\n        },\n        {\n          name: 'paste',\n          text: 'Paste',\n          action: 'Paste',\n          icon: 'paste'\n        },\n        {\n          name: 'removeformat',\n          text: 'Clear formatting',\n          action: 'RemoveFormat',\n          icon: 'remove-formatting'\n        },\n        {\n          name: 'remove',\n          text: 'Remove',\n          action: 'Delete',\n          icon: 'remove'\n        },\n        {\n          name: 'hr',\n          text: 'Horizontal line',\n          action: 'InsertHorizontalRule',\n          icon: 'horizontal-rule'\n        }\n      ], btn => {\n        editor.ui.registry.addButton(btn.name, {\n          tooltip: btn.text,\n          icon: btn.icon,\n          onSetup: onSetupEditableToggle(editor),\n          onAction: onActionExecCommand(editor, btn.action)\n        });\n      });\n    };\n    const registerCommandToggleButtons = editor => {\n      global$1.each([{\n          name: 'blockquote',\n          text: 'Blockquote',\n          action: 'mceBlockQuote',\n          icon: 'quote'\n        }], btn => {\n        editor.ui.registry.addToggleButton(btn.name, {\n          tooltip: btn.text,\n          icon: btn.icon,\n          onAction: onActionExecCommand(editor, btn.action),\n          onSetup: onSetupStateToggle(editor, btn.name)\n        });\n      });\n    };\n    const registerButtons$1 = editor => {\n      registerFormatButtons(editor);\n      registerCommandButtons(editor);\n      registerCommandToggleButtons(editor);\n    };\n    const registerMenuItems$2 = editor => {\n      global$1.each([\n        {\n          name: 'newdocument',\n          text: 'New document',\n          action: 'mceNewDocument',\n          icon: 'new-document'\n        },\n        {\n          name: 'copy',\n          text: 'Copy',\n          action: 'Copy',\n          icon: 'copy',\n          shortcut: 'Meta+C'\n        },\n        {\n          name: 'selectall',\n          text: 'Select all',\n          action: 'SelectAll',\n          icon: 'select-all',\n          shortcut: 'Meta+A'\n        },\n        {\n          name: 'print',\n          text: 'Print...',\n          action: 'mcePrint',\n          icon: 'print',\n          shortcut: 'Meta+P'\n        }\n      ], menuitem => {\n        editor.ui.registry.addMenuItem(menuitem.name, {\n          text: menuitem.text,\n          icon: menuitem.icon,\n          shortcut: menuitem.shortcut,\n          onAction: onActionExecCommand(editor, menuitem.action)\n        });\n      });\n      global$1.each([\n        {\n          name: 'bold',\n          text: 'Bold',\n          action: 'Bold',\n          icon: 'bold',\n          shortcut: 'Meta+B'\n        },\n        {\n          name: 'italic',\n          text: 'Italic',\n          action: 'Italic',\n          icon: 'italic',\n          shortcut: 'Meta+I'\n        },\n        {\n          name: 'underline',\n          text: 'Underline',\n          action: 'Underline',\n          icon: 'underline',\n          shortcut: 'Meta+U'\n        },\n        {\n          name: 'strikethrough',\n          text: 'Strikethrough',\n          action: 'Strikethrough',\n          icon: 'strike-through'\n        },\n        {\n          name: 'subscript',\n          text: 'Subscript',\n          action: 'Subscript',\n          icon: 'subscript'\n        },\n        {\n          name: 'superscript',\n          text: 'Superscript',\n          action: 'Superscript',\n          icon: 'superscript'\n        },\n        {\n          name: 'removeformat',\n          text: 'Clear formatting',\n          action: 'RemoveFormat',\n          icon: 'remove-formatting'\n        },\n        {\n          name: 'cut',\n          text: 'Cut',\n          action: 'Cut',\n          icon: 'cut',\n          shortcut: 'Meta+X'\n        },\n        {\n          name: 'paste',\n          text: 'Paste',\n          action: 'Paste',\n          icon: 'paste',\n          shortcut: 'Meta+V'\n        },\n        {\n          name: 'hr',\n          text: 'Horizontal line',\n          action: 'InsertHorizontalRule',\n          icon: 'horizontal-rule'\n        }\n      ], menuitem => {\n        editor.ui.registry.addMenuItem(menuitem.name, {\n          text: menuitem.text,\n          icon: menuitem.icon,\n          shortcut: menuitem.shortcut,\n          onSetup: onSetupEditableToggle(editor),\n          onAction: onActionExecCommand(editor, menuitem.action)\n        });\n      });\n      editor.ui.registry.addMenuItem('codeformat', {\n        text: 'Code',\n        icon: 'sourcecode',\n        onSetup: onSetupEditableToggle(editor),\n        onAction: onActionToggleFormat(editor, 'code')\n      });\n    };\n    const register$3 = editor => {\n      registerButtons$1(editor);\n      registerMenuItems$2(editor);\n    };\n\n    const onSetupUndoRedoState = (editor, type) => onSetupEvent(editor, 'Undo Redo AddUndo TypingUndo ClearUndos SwitchMode', api => {\n      api.setEnabled(!editor.mode.isReadOnly() && editor.undoManager[type]());\n    });\n    const registerMenuItems$1 = editor => {\n      editor.ui.registry.addMenuItem('undo', {\n        text: 'Undo',\n        icon: 'undo',\n        shortcut: 'Meta+Z',\n        onSetup: onSetupUndoRedoState(editor, 'hasUndo'),\n        onAction: onActionExecCommand(editor, 'undo')\n      });\n      editor.ui.registry.addMenuItem('redo', {\n        text: 'Redo',\n        icon: 'redo',\n        shortcut: 'Meta+Y',\n        onSetup: onSetupUndoRedoState(editor, 'hasRedo'),\n        onAction: onActionExecCommand(editor, 'redo')\n      });\n    };\n    const registerButtons = editor => {\n      editor.ui.registry.addButton('undo', {\n        tooltip: 'Undo',\n        icon: 'undo',\n        enabled: false,\n        onSetup: onSetupUndoRedoState(editor, 'hasUndo'),\n        onAction: onActionExecCommand(editor, 'undo')\n      });\n      editor.ui.registry.addButton('redo', {\n        tooltip: 'Redo',\n        icon: 'redo',\n        enabled: false,\n        onSetup: onSetupUndoRedoState(editor, 'hasRedo'),\n        onAction: onActionExecCommand(editor, 'redo')\n      });\n    };\n    const register$2 = editor => {\n      registerMenuItems$1(editor);\n      registerButtons(editor);\n    };\n\n    const onSetupVisualAidState = editor => onSetupEvent(editor, 'VisualAid', api => {\n      api.setActive(editor.hasVisual);\n    });\n    const registerMenuItems = editor => {\n      editor.ui.registry.addToggleMenuItem('visualaid', {\n        text: 'Visual aids',\n        onSetup: onSetupVisualAidState(editor),\n        onAction: onActionExecCommand(editor, 'mceToggleVisualAid')\n      });\n    };\n    const registerToolbarButton = editor => {\n      editor.ui.registry.addButton('visualaid', {\n        tooltip: 'Visual aids',\n        text: 'Visual aids',\n        onAction: onActionExecCommand(editor, 'mceToggleVisualAid')\n      });\n    };\n    const register$1 = editor => {\n      registerToolbarButton(editor);\n      registerMenuItems(editor);\n    };\n\n    const setup$6 = (editor, backstage) => {\n      register$8(editor);\n      register$3(editor);\n      register$6(editor, backstage);\n      register$2(editor);\n      register$c(editor);\n      register$1(editor);\n      register$5(editor);\n      register$7(editor);\n      register$4(editor);\n    };\n\n    const patchPipeConfig = config => isString(config) ? config.split(/[ ,]/) : config;\n    const option = name => editor => editor.options.get(name);\n    const register = editor => {\n      const registerOption = editor.options.register;\n      registerOption('contextmenu_avoid_overlap', {\n        processor: 'string',\n        default: ''\n      });\n      registerOption('contextmenu_never_use_native', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('contextmenu', {\n        processor: value => {\n          if (value === false) {\n            return {\n              value: [],\n              valid: true\n            };\n          } else if (isString(value) || isArrayOf(value, isString)) {\n            return {\n              value: patchPipeConfig(value),\n              valid: true\n            };\n          } else {\n            return {\n              valid: false,\n              message: 'Must be false or a string.'\n            };\n          }\n        },\n        default: 'link linkchecker image editimage table spellchecker configurepermanentpen'\n      });\n    };\n    const shouldNeverUseNative = option('contextmenu_never_use_native');\n    const getAvoidOverlapSelector = option('contextmenu_avoid_overlap');\n    const isContextMenuDisabled = editor => getContextMenu(editor).length === 0;\n    const getContextMenu = editor => {\n      const contextMenus = editor.ui.registry.getAll().contextMenus;\n      const contextMenu = editor.options.get('contextmenu');\n      if (editor.options.isSet('contextmenu')) {\n        return contextMenu;\n      } else {\n        return filter$2(contextMenu, item => has$2(contextMenus, item));\n      }\n    };\n\n    const nu = (x, y) => ({\n      type: 'makeshift',\n      x,\n      y\n    });\n    const transpose = (pos, dx, dy) => {\n      return nu(pos.x + dx, pos.y + dy);\n    };\n    const isTouchEvent$1 = e => e.type === 'longpress' || e.type.indexOf('touch') === 0;\n    const fromPageXY = e => {\n      if (isTouchEvent$1(e)) {\n        const touch = e.touches[0];\n        return nu(touch.pageX, touch.pageY);\n      } else {\n        return nu(e.pageX, e.pageY);\n      }\n    };\n    const fromClientXY = e => {\n      if (isTouchEvent$1(e)) {\n        const touch = e.touches[0];\n        return nu(touch.clientX, touch.clientY);\n      } else {\n        return nu(e.clientX, e.clientY);\n      }\n    };\n    const transposeContentAreaContainer = (element, pos) => {\n      const containerPos = global$7.DOM.getPos(element);\n      return transpose(pos, containerPos.x, containerPos.y);\n    };\n    const getPointAnchor = (editor, e) => {\n      if (e.type === 'contextmenu' || e.type === 'longpress') {\n        if (editor.inline) {\n          return fromPageXY(e);\n        } else {\n          return transposeContentAreaContainer(editor.getContentAreaContainer(), fromClientXY(e));\n        }\n      } else {\n        return getSelectionAnchor(editor);\n      }\n    };\n    const getSelectionAnchor = editor => {\n      return {\n        type: 'selection',\n        root: SugarElement.fromDom(editor.selection.getNode())\n      };\n    };\n    const getNodeAnchor = editor => ({\n      type: 'node',\n      node: Optional.some(SugarElement.fromDom(editor.selection.getNode())),\n      root: SugarElement.fromDom(editor.getBody())\n    });\n    const getAnchorSpec$1 = (editor, e, anchorType) => {\n      switch (anchorType) {\n      case 'node':\n        return getNodeAnchor(editor);\n      case 'point':\n        return getPointAnchor(editor, e);\n      case 'selection':\n        return getSelectionAnchor(editor);\n      }\n    };\n\n    const initAndShow$1 = (editor, e, buildMenu, backstage, contextmenu, anchorType) => {\n      const items = buildMenu();\n      const anchorSpec = getAnchorSpec$1(editor, e, anchorType);\n      build(items, ItemResponse$1.CLOSE_ON_EXECUTE, backstage, {\n        isHorizontalMenu: false,\n        search: Optional.none()\n      }).map(menuData => {\n        e.preventDefault();\n        InlineView.showMenuAt(contextmenu, { anchor: anchorSpec }, {\n          menu: { markers: markers('normal') },\n          data: menuData\n        });\n      });\n    };\n\n    const layouts = {\n      onLtr: () => [\n        south$2,\n        southeast$2,\n        southwest$2,\n        northeast$2,\n        northwest$2,\n        north$2,\n        north,\n        south,\n        northeast,\n        southeast,\n        northwest,\n        southwest\n      ],\n      onRtl: () => [\n        south$2,\n        southwest$2,\n        southeast$2,\n        northwest$2,\n        northeast$2,\n        north$2,\n        north,\n        south,\n        northwest,\n        southwest,\n        northeast,\n        southeast\n      ]\n    };\n    const bubbleSize = 12;\n    const bubbleAlignments = {\n      valignCentre: [],\n      alignCentre: [],\n      alignLeft: ['tox-pop--align-left'],\n      alignRight: ['tox-pop--align-right'],\n      right: ['tox-pop--right'],\n      left: ['tox-pop--left'],\n      bottom: ['tox-pop--bottom'],\n      top: ['tox-pop--top']\n    };\n    const isTouchWithinSelection = (editor, e) => {\n      const selection = editor.selection;\n      if (selection.isCollapsed() || e.touches.length < 1) {\n        return false;\n      } else {\n        const touch = e.touches[0];\n        const rng = selection.getRng();\n        const rngRectOpt = getFirstRect(editor.getWin(), SimSelection.domRange(rng));\n        return rngRectOpt.exists(rngRect => rngRect.left <= touch.clientX && rngRect.right >= touch.clientX && rngRect.top <= touch.clientY && rngRect.bottom >= touch.clientY);\n      }\n    };\n    const setupiOSOverrides = editor => {\n      const originalSelection = editor.selection.getRng();\n      const selectionReset = () => {\n        global$9.setEditorTimeout(editor, () => {\n          editor.selection.setRng(originalSelection);\n        }, 10);\n        unbindEventListeners();\n      };\n      editor.once('touchend', selectionReset);\n      const preventMousedown = e => {\n        e.preventDefault();\n        e.stopImmediatePropagation();\n      };\n      editor.on('mousedown', preventMousedown, true);\n      const clearSelectionReset = () => unbindEventListeners();\n      editor.once('longpresscancel', clearSelectionReset);\n      const unbindEventListeners = () => {\n        editor.off('touchend', selectionReset);\n        editor.off('longpresscancel', clearSelectionReset);\n        editor.off('mousedown', preventMousedown);\n      };\n    };\n    const getAnchorSpec = (editor, e, anchorType) => {\n      const anchorSpec = getAnchorSpec$1(editor, e, anchorType);\n      const bubbleYOffset = anchorType === 'point' ? bubbleSize : 0;\n      return {\n        bubble: nu$5(0, bubbleYOffset, bubbleAlignments),\n        layouts,\n        overrides: {\n          maxWidthFunction: expandable(),\n          maxHeightFunction: expandable$1()\n        },\n        ...anchorSpec\n      };\n    };\n    const show = (editor, e, items, backstage, contextmenu, anchorType, highlightImmediately) => {\n      const anchorSpec = getAnchorSpec(editor, e, anchorType);\n      build(items, ItemResponse$1.CLOSE_ON_EXECUTE, backstage, {\n        isHorizontalMenu: true,\n        search: Optional.none()\n      }).map(menuData => {\n        e.preventDefault();\n        const highlightOnOpen = highlightImmediately ? HighlightOnOpen.HighlightMenuAndItem : HighlightOnOpen.HighlightNone;\n        InlineView.showMenuWithinBounds(contextmenu, { anchor: anchorSpec }, {\n          menu: {\n            markers: markers('normal'),\n            highlightOnOpen\n          },\n          data: menuData,\n          type: 'horizontal'\n        }, () => Optional.some(getContextToolbarBounds(editor, backstage.shared, anchorType === 'node' ? 'node' : 'selection')));\n        editor.dispatch(hideContextToolbarEvent);\n      });\n    };\n    const initAndShow = (editor, e, buildMenu, backstage, contextmenu, anchorType) => {\n      const detection = detect$2();\n      const isiOS = detection.os.isiOS();\n      const isMacOS = detection.os.isMacOS();\n      const isAndroid = detection.os.isAndroid();\n      const isTouch = detection.deviceType.isTouch();\n      const shouldHighlightImmediately = () => !(isAndroid || isiOS || isMacOS && isTouch);\n      const open = () => {\n        const items = buildMenu();\n        show(editor, e, items, backstage, contextmenu, anchorType, shouldHighlightImmediately());\n      };\n      if ((isMacOS || isiOS) && anchorType !== 'node') {\n        const openiOS = () => {\n          setupiOSOverrides(editor);\n          open();\n        };\n        if (isTouchWithinSelection(editor, e)) {\n          openiOS();\n        } else {\n          editor.once('selectionchange', openiOS);\n          editor.once('touchend', () => editor.off('selectionchange', openiOS));\n        }\n      } else {\n        open();\n      }\n    };\n\n    const isSeparator = item => isString(item) ? item === '|' : item.type === 'separator';\n    const separator = { type: 'separator' };\n    const makeContextItem = item => {\n      const commonMenuItem = item => ({\n        text: item.text,\n        icon: item.icon,\n        enabled: item.enabled,\n        shortcut: item.shortcut\n      });\n      if (isString(item)) {\n        return item;\n      } else {\n        switch (item.type) {\n        case 'separator':\n          return separator;\n        case 'submenu':\n          return {\n            type: 'nestedmenuitem',\n            ...commonMenuItem(item),\n            getSubmenuItems: () => {\n              const items = item.getSubmenuItems();\n              if (isString(items)) {\n                return items;\n              } else {\n                return map$2(items, makeContextItem);\n              }\n            }\n          };\n        default:\n          const commonItem = item;\n          return {\n            type: 'menuitem',\n            ...commonMenuItem(commonItem),\n            onAction: noarg(commonItem.onAction)\n          };\n        }\n      }\n    };\n    const addContextMenuGroup = (xs, groupItems) => {\n      if (groupItems.length === 0) {\n        return xs;\n      }\n      const lastMenuItem = last$1(xs).filter(item => !isSeparator(item));\n      const before = lastMenuItem.fold(() => [], _ => [separator]);\n      return xs.concat(before).concat(groupItems).concat([separator]);\n    };\n    const generateContextMenu = (contextMenus, menuConfig, selectedElement) => {\n      const sections = foldl(menuConfig, (acc, name) => {\n        return get$g(contextMenus, name.toLowerCase()).map(menu => {\n          const items = menu.update(selectedElement);\n          if (isString(items) && isNotEmpty(trim$1(items))) {\n            return addContextMenuGroup(acc, items.split(' '));\n          } else if (isArray(items) && items.length > 0) {\n            const allItems = map$2(items, makeContextItem);\n            return addContextMenuGroup(acc, allItems);\n          } else {\n            return acc;\n          }\n        }).getOrThunk(() => acc.concat([name]));\n      }, []);\n      if (sections.length > 0 && isSeparator(sections[sections.length - 1])) {\n        sections.pop();\n      }\n      return sections;\n    };\n    const isNativeOverrideKeyEvent = (editor, e) => e.ctrlKey && !shouldNeverUseNative(editor);\n    const isTouchEvent = e => e.type === 'longpress' || has$2(e, 'touches');\n    const isTriggeredByKeyboard = (editor, e) => !isTouchEvent(e) && (e.button !== 2 || e.target === editor.getBody() && e.pointerType === '');\n    const getSelectedElement = (editor, e) => isTriggeredByKeyboard(editor, e) ? editor.selection.getStart(true) : e.target;\n    const getAnchorType = (editor, e) => {\n      const selector = getAvoidOverlapSelector(editor);\n      const anchorType = isTriggeredByKeyboard(editor, e) ? 'selection' : 'point';\n      if (isNotEmpty(selector)) {\n        const target = getSelectedElement(editor, e);\n        const selectorExists = closest(SugarElement.fromDom(target), selector);\n        return selectorExists ? 'node' : anchorType;\n      } else {\n        return anchorType;\n      }\n    };\n    const setup$5 = (editor, lazySink, backstage) => {\n      const detection = detect$2();\n      const isTouch = detection.deviceType.isTouch;\n      const contextmenu = build$1(InlineView.sketch({\n        dom: { tag: 'div' },\n        lazySink,\n        onEscape: () => editor.focus(),\n        onShow: () => backstage.setContextMenuState(true),\n        onHide: () => backstage.setContextMenuState(false),\n        fireDismissalEventInstead: {},\n        inlineBehaviours: derive$1([config('dismissContextMenu', [run$1(dismissRequested(), (comp, _se) => {\n              Sandboxing.close(comp);\n              editor.focus();\n            })])])\n      }));\n      const hideContextMenu = () => InlineView.hide(contextmenu);\n      const showContextMenu = e => {\n        if (shouldNeverUseNative(editor)) {\n          e.preventDefault();\n        }\n        if (isNativeOverrideKeyEvent(editor, e) || isContextMenuDisabled(editor)) {\n          return;\n        }\n        const anchorType = getAnchorType(editor, e);\n        const buildMenu = () => {\n          const selectedElement = getSelectedElement(editor, e);\n          const registry = editor.ui.registry.getAll();\n          const menuConfig = getContextMenu(editor);\n          return generateContextMenu(registry.contextMenus, menuConfig, selectedElement);\n        };\n        const initAndShow$2 = isTouch() ? initAndShow : initAndShow$1;\n        initAndShow$2(editor, e, buildMenu, backstage, contextmenu, anchorType);\n      };\n      editor.on('init', () => {\n        const hideEvents = 'ResizeEditor ScrollContent ScrollWindow longpresscancel' + (isTouch() ? '' : ' ResizeWindow');\n        editor.on(hideEvents, hideContextMenu);\n        editor.on('longpress contextmenu', showContextMenu);\n      });\n    };\n\n    const adt = Adt.generate([\n      {\n        offset: [\n          'x',\n          'y'\n        ]\n      },\n      {\n        absolute: [\n          'x',\n          'y'\n        ]\n      },\n      {\n        fixed: [\n          'x',\n          'y'\n        ]\n      }\n    ]);\n    const subtract = change => point => point.translate(-change.left, -change.top);\n    const add = change => point => point.translate(change.left, change.top);\n    const transform = changes => (x, y) => foldl(changes, (rest, f) => f(rest), SugarPosition(x, y));\n    const asFixed = (coord, scroll, origin) => coord.fold(transform([\n      add(origin),\n      subtract(scroll)\n    ]), transform([subtract(scroll)]), transform([]));\n    const asAbsolute = (coord, scroll, origin) => coord.fold(transform([add(origin)]), transform([]), transform([add(scroll)]));\n    const asOffset = (coord, scroll, origin) => coord.fold(transform([]), transform([subtract(origin)]), transform([\n      add(scroll),\n      subtract(origin)\n    ]));\n    const withinRange = (coord1, coord2, xRange, yRange, scroll, origin) => {\n      const a1 = asAbsolute(coord1, scroll, origin);\n      const a2 = asAbsolute(coord2, scroll, origin);\n      return Math.abs(a1.left - a2.left) <= xRange && Math.abs(a1.top - a2.top) <= yRange;\n    };\n    const getDeltas = (coord1, coord2, xRange, yRange, scroll, origin) => {\n      const a1 = asAbsolute(coord1, scroll, origin);\n      const a2 = asAbsolute(coord2, scroll, origin);\n      const left = Math.abs(a1.left - a2.left);\n      const top = Math.abs(a1.top - a2.top);\n      return SugarPosition(left, top);\n    };\n    const toStyles = (coord, scroll, origin) => {\n      const stylesOpt = coord.fold((x, y) => ({\n        position: Optional.some('absolute'),\n        left: Optional.some(x + 'px'),\n        top: Optional.some(y + 'px')\n      }), (x, y) => ({\n        position: Optional.some('absolute'),\n        left: Optional.some(x - origin.left + 'px'),\n        top: Optional.some(y - origin.top + 'px')\n      }), (x, y) => ({\n        position: Optional.some('fixed'),\n        left: Optional.some(x + 'px'),\n        top: Optional.some(y + 'px')\n      }));\n      return {\n        right: Optional.none(),\n        bottom: Optional.none(),\n        ...stylesOpt\n      };\n    };\n    const translate = (coord, deltaX, deltaY) => coord.fold((x, y) => offset(x + deltaX, y + deltaY), (x, y) => absolute(x + deltaX, y + deltaY), (x, y) => fixed(x + deltaX, y + deltaY));\n    const absorb = (partialCoord, originalCoord, scroll, origin) => {\n      const absorbOne = (stencil, nu) => (optX, optY) => {\n        const original = stencil(originalCoord, scroll, origin);\n        return nu(optX.getOr(original.left), optY.getOr(original.top));\n      };\n      return partialCoord.fold(absorbOne(asOffset, offset), absorbOne(asAbsolute, absolute), absorbOne(asFixed, fixed));\n    };\n    const offset = adt.offset;\n    const absolute = adt.absolute;\n    const fixed = adt.fixed;\n\n    const parseAttrToInt = (element, name) => {\n      const value = get$f(element, name);\n      return isUndefined(value) ? NaN : parseInt(value, 10);\n    };\n    const get = (component, snapsInfo) => {\n      const element = component.element;\n      const x = parseAttrToInt(element, snapsInfo.leftAttr);\n      const y = parseAttrToInt(element, snapsInfo.topAttr);\n      return isNaN(x) || isNaN(y) ? Optional.none() : Optional.some(SugarPosition(x, y));\n    };\n    const set = (component, snapsInfo, pt) => {\n      const element = component.element;\n      set$9(element, snapsInfo.leftAttr, pt.left + 'px');\n      set$9(element, snapsInfo.topAttr, pt.top + 'px');\n    };\n    const clear = (component, snapsInfo) => {\n      const element = component.element;\n      remove$7(element, snapsInfo.leftAttr);\n      remove$7(element, snapsInfo.topAttr);\n    };\n\n    const getCoords = (component, snapInfo, coord, delta) => get(component, snapInfo).fold(() => coord, fixed$1 => fixed(fixed$1.left + delta.left, fixed$1.top + delta.top));\n    const moveOrSnap = (component, snapInfo, coord, delta, scroll, origin) => {\n      const newCoord = getCoords(component, snapInfo, coord, delta);\n      const snap = snapInfo.mustSnap ? findClosestSnap(component, snapInfo, newCoord, scroll, origin) : findSnap(component, snapInfo, newCoord, scroll, origin);\n      const fixedCoord = asFixed(newCoord, scroll, origin);\n      set(component, snapInfo, fixedCoord);\n      return snap.fold(() => ({\n        coord: fixed(fixedCoord.left, fixedCoord.top),\n        extra: Optional.none()\n      }), spanned => ({\n        coord: spanned.output,\n        extra: spanned.extra\n      }));\n    };\n    const stopDrag = (component, snapInfo) => {\n      clear(component, snapInfo);\n    };\n    const findMatchingSnap = (snaps, newCoord, scroll, origin) => findMap(snaps, snap => {\n      const sensor = snap.sensor;\n      const inRange = withinRange(newCoord, sensor, snap.range.left, snap.range.top, scroll, origin);\n      return inRange ? Optional.some({\n        output: absorb(snap.output, newCoord, scroll, origin),\n        extra: snap.extra\n      }) : Optional.none();\n    });\n    const findClosestSnap = (component, snapInfo, newCoord, scroll, origin) => {\n      const snaps = snapInfo.getSnapPoints(component);\n      const matchSnap = findMatchingSnap(snaps, newCoord, scroll, origin);\n      return matchSnap.orThunk(() => {\n        const bestSnap = foldl(snaps, (acc, snap) => {\n          const sensor = snap.sensor;\n          const deltas = getDeltas(newCoord, sensor, snap.range.left, snap.range.top, scroll, origin);\n          return acc.deltas.fold(() => ({\n            deltas: Optional.some(deltas),\n            snap: Optional.some(snap)\n          }), bestDeltas => {\n            const currAvg = (deltas.left + deltas.top) / 2;\n            const bestAvg = (bestDeltas.left + bestDeltas.top) / 2;\n            if (currAvg <= bestAvg) {\n              return {\n                deltas: Optional.some(deltas),\n                snap: Optional.some(snap)\n              };\n            } else {\n              return acc;\n            }\n          });\n        }, {\n          deltas: Optional.none(),\n          snap: Optional.none()\n        });\n        return bestSnap.snap.map(snap => ({\n          output: absorb(snap.output, newCoord, scroll, origin),\n          extra: snap.extra\n        }));\n      });\n    };\n    const findSnap = (component, snapInfo, newCoord, scroll, origin) => {\n      const snaps = snapInfo.getSnapPoints(component);\n      return findMatchingSnap(snaps, newCoord, scroll, origin);\n    };\n    const snapTo$1 = (snap, scroll, origin) => ({\n      coord: absorb(snap.output, snap.output, scroll, origin),\n      extra: snap.extra\n    });\n\n    const snapTo = (component, dragConfig, _state, snap) => {\n      const target = dragConfig.getTarget(component.element);\n      if (dragConfig.repositionTarget) {\n        const doc = owner$4(component.element);\n        const scroll = get$b(doc);\n        const origin = getOrigin(target);\n        const snapPin = snapTo$1(snap, scroll, origin);\n        const styles = toStyles(snapPin.coord, scroll, origin);\n        setOptions(target, styles);\n      }\n    };\n\n    var DraggingApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        snapTo: snapTo\n    });\n\n    const initialAttribute = 'data-initial-z-index';\n    const resetZIndex = blocker => {\n      parent(blocker.element).filter(isElement$1).each(root => {\n        getOpt(root, initialAttribute).fold(() => remove$6(root, 'z-index'), zIndex => set$8(root, 'z-index', zIndex));\n        remove$7(root, initialAttribute);\n      });\n    };\n    const changeZIndex = blocker => {\n      parent(blocker.element).filter(isElement$1).each(root => {\n        getRaw(root, 'z-index').each(zindex => {\n          set$9(root, initialAttribute, zindex);\n        });\n        set$8(root, 'z-index', get$e(blocker.element, 'z-index'));\n      });\n    };\n    const instigate = (anyComponent, blocker) => {\n      anyComponent.getSystem().addToGui(blocker);\n      changeZIndex(blocker);\n    };\n    const discard = blocker => {\n      resetZIndex(blocker);\n      blocker.getSystem().removeFromGui(blocker);\n    };\n    const createComponent = (component, blockerClass, blockerEvents) => component.getSystem().build(Container.sketch({\n      dom: {\n        styles: {\n          'left': '0px',\n          'top': '0px',\n          'width': '100%',\n          'height': '100%',\n          'position': 'fixed',\n          'z-index': '1000000000000000'\n        },\n        classes: [blockerClass]\n      },\n      events: blockerEvents\n    }));\n\n    var SnapSchema = optionObjOf('snaps', [\n      required$1('getSnapPoints'),\n      onHandler('onSensor'),\n      required$1('leftAttr'),\n      required$1('topAttr'),\n      defaulted('lazyViewport', win),\n      defaulted('mustSnap', false)\n    ]);\n\n    const schema$6 = [\n      defaulted('useFixed', never),\n      required$1('blockerClass'),\n      defaulted('getTarget', identity),\n      defaulted('onDrag', noop),\n      defaulted('repositionTarget', true),\n      defaulted('onDrop', noop),\n      defaultedFunction('getBounds', win),\n      SnapSchema\n    ];\n\n    const getCurrentCoord = target => lift3(getRaw(target, 'left'), getRaw(target, 'top'), getRaw(target, 'position'), (left, top, position) => {\n      const nu = position === 'fixed' ? fixed : offset;\n      return nu(parseInt(left, 10), parseInt(top, 10));\n    }).getOrThunk(() => {\n      const location = absolute$3(target);\n      return absolute(location.left, location.top);\n    });\n    const clampCoords = (component, coords, scroll, origin, startData) => {\n      const bounds = startData.bounds;\n      const absoluteCoord = asAbsolute(coords, scroll, origin);\n      const newX = clamp(absoluteCoord.left, bounds.x, bounds.x + bounds.width - startData.width);\n      const newY = clamp(absoluteCoord.top, bounds.y, bounds.y + bounds.height - startData.height);\n      const newCoords = absolute(newX, newY);\n      return coords.fold(() => {\n        const offset$1 = asOffset(newCoords, scroll, origin);\n        return offset(offset$1.left, offset$1.top);\n      }, constant$1(newCoords), () => {\n        const fixed$1 = asFixed(newCoords, scroll, origin);\n        return fixed(fixed$1.left, fixed$1.top);\n      });\n    };\n    const calcNewCoord = (component, optSnaps, currentCoord, scroll, origin, delta, startData) => {\n      const newCoord = optSnaps.fold(() => {\n        const translated = translate(currentCoord, delta.left, delta.top);\n        const fixedCoord = asFixed(translated, scroll, origin);\n        return fixed(fixedCoord.left, fixedCoord.top);\n      }, snapInfo => {\n        const snapping = moveOrSnap(component, snapInfo, currentCoord, delta, scroll, origin);\n        snapping.extra.each(extra => {\n          snapInfo.onSensor(component, extra);\n        });\n        return snapping.coord;\n      });\n      return clampCoords(component, newCoord, scroll, origin, startData);\n    };\n    const dragBy = (component, dragConfig, startData, delta) => {\n      const target = dragConfig.getTarget(component.element);\n      if (dragConfig.repositionTarget) {\n        const doc = owner$4(component.element);\n        const scroll = get$b(doc);\n        const origin = getOrigin(target);\n        const currentCoord = getCurrentCoord(target);\n        const newCoord = calcNewCoord(component, dragConfig.snaps, currentCoord, scroll, origin, delta, startData);\n        const styles = toStyles(newCoord, scroll, origin);\n        setOptions(target, styles);\n      }\n      dragConfig.onDrag(component, target, delta);\n    };\n\n    const calcStartData = (dragConfig, comp) => ({\n      bounds: dragConfig.getBounds(),\n      height: getOuter$2(comp.element),\n      width: getOuter$1(comp.element)\n    });\n    const move = (component, dragConfig, dragState, dragMode, event) => {\n      const delta = dragState.update(dragMode, event);\n      const dragStartData = dragState.getStartData().getOrThunk(() => calcStartData(dragConfig, component));\n      delta.each(dlt => {\n        dragBy(component, dragConfig, dragStartData, dlt);\n      });\n    };\n    const stop = (component, blocker, dragConfig, dragState) => {\n      blocker.each(discard);\n      dragConfig.snaps.each(snapInfo => {\n        stopDrag(component, snapInfo);\n      });\n      const target = dragConfig.getTarget(component.element);\n      dragState.reset();\n      dragConfig.onDrop(component, target);\n    };\n    const handlers = events => (dragConfig, dragState) => {\n      const updateStartState = comp => {\n        dragState.setStartData(calcStartData(dragConfig, comp));\n      };\n      return derive$2([\n        run$1(windowScroll(), comp => {\n          dragState.getStartData().each(() => updateStartState(comp));\n        }),\n        ...events(dragConfig, dragState, updateStartState)\n      ]);\n    };\n\n    const init$3 = dragApi => derive$2([\n      run$1(mousedown(), dragApi.forceDrop),\n      run$1(mouseup(), dragApi.drop),\n      run$1(mousemove(), (comp, simulatedEvent) => {\n        dragApi.move(simulatedEvent.event);\n      }),\n      run$1(mouseout(), dragApi.delayDrop)\n    ]);\n\n    const getData$1 = event => Optional.from(SugarPosition(event.x, event.y));\n    const getDelta$1 = (old, nu) => SugarPosition(nu.left - old.left, nu.top - old.top);\n\n    var MouseData = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        getData: getData$1,\n        getDelta: getDelta$1\n    });\n\n    const events$3 = (dragConfig, dragState, updateStartState) => [run$1(mousedown(), (component, simulatedEvent) => {\n        const raw = simulatedEvent.event.raw;\n        if (raw.button !== 0) {\n          return;\n        }\n        simulatedEvent.stop();\n        const stop$1 = () => stop(component, Optional.some(blocker), dragConfig, dragState);\n        const delayDrop = DelayedFunction(stop$1, 200);\n        const dragApi = {\n          drop: stop$1,\n          delayDrop: delayDrop.schedule,\n          forceDrop: stop$1,\n          move: event => {\n            delayDrop.cancel();\n            move(component, dragConfig, dragState, MouseData, event);\n          }\n        };\n        const blocker = createComponent(component, dragConfig.blockerClass, init$3(dragApi));\n        const start = () => {\n          updateStartState(component);\n          instigate(component, blocker);\n        };\n        start();\n      })];\n    const schema$5 = [\n      ...schema$6,\n      output$1('dragger', { handlers: handlers(events$3) })\n    ];\n\n    const init$2 = dragApi => derive$2([\n      run$1(touchstart(), dragApi.forceDrop),\n      run$1(touchend(), dragApi.drop),\n      run$1(touchcancel(), dragApi.drop),\n      run$1(touchmove(), (comp, simulatedEvent) => {\n        dragApi.move(simulatedEvent.event);\n      })\n    ]);\n\n    const getDataFrom = touches => {\n      const touch = touches[0];\n      return Optional.some(SugarPosition(touch.clientX, touch.clientY));\n    };\n    const getData = event => {\n      const raw = event.raw;\n      const touches = raw.touches;\n      return touches.length === 1 ? getDataFrom(touches) : Optional.none();\n    };\n    const getDelta = (old, nu) => SugarPosition(nu.left - old.left, nu.top - old.top);\n\n    var TouchData = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        getData: getData,\n        getDelta: getDelta\n    });\n\n    const events$2 = (dragConfig, dragState, updateStartState) => {\n      const blockerSingleton = value$2();\n      const stopBlocking = component => {\n        stop(component, blockerSingleton.get(), dragConfig, dragState);\n        blockerSingleton.clear();\n      };\n      return [\n        run$1(touchstart(), (component, simulatedEvent) => {\n          simulatedEvent.stop();\n          const stop = () => stopBlocking(component);\n          const dragApi = {\n            drop: stop,\n            delayDrop: noop,\n            forceDrop: stop,\n            move: event => {\n              move(component, dragConfig, dragState, TouchData, event);\n            }\n          };\n          const blocker = createComponent(component, dragConfig.blockerClass, init$2(dragApi));\n          blockerSingleton.set(blocker);\n          const start = () => {\n            updateStartState(component);\n            instigate(component, blocker);\n          };\n          start();\n        }),\n        run$1(touchmove(), (component, simulatedEvent) => {\n          simulatedEvent.stop();\n          move(component, dragConfig, dragState, TouchData, simulatedEvent.event);\n        }),\n        run$1(touchend(), (component, simulatedEvent) => {\n          simulatedEvent.stop();\n          stopBlocking(component);\n        }),\n        run$1(touchcancel(), stopBlocking)\n      ];\n    };\n    const schema$4 = [\n      ...schema$6,\n      output$1('dragger', { handlers: handlers(events$2) })\n    ];\n\n    const events$1 = (dragConfig, dragState, updateStartState) => [\n      ...events$3(dragConfig, dragState, updateStartState),\n      ...events$2(dragConfig, dragState, updateStartState)\n    ];\n    const schema$3 = [\n      ...schema$6,\n      output$1('dragger', { handlers: handlers(events$1) })\n    ];\n\n    const mouse = schema$5;\n    const touch = schema$4;\n    const mouseOrTouch = schema$3;\n\n    var DraggingBranches = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        mouse: mouse,\n        touch: touch,\n        mouseOrTouch: mouseOrTouch\n    });\n\n    const init$1 = () => {\n      let previous = Optional.none();\n      let startData = Optional.none();\n      const reset = () => {\n        previous = Optional.none();\n        startData = Optional.none();\n      };\n      const calculateDelta = (mode, nu) => {\n        const result = previous.map(old => mode.getDelta(old, nu));\n        previous = Optional.some(nu);\n        return result;\n      };\n      const update = (mode, dragEvent) => mode.getData(dragEvent).bind(nuData => calculateDelta(mode, nuData));\n      const setStartData = data => {\n        startData = Optional.some(data);\n      };\n      const getStartData = () => startData;\n      const readState = constant$1({});\n      return nu$8({\n        readState,\n        reset,\n        update,\n        getStartData,\n        setStartData\n      });\n    };\n\n    var DragState = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        init: init$1\n    });\n\n    const Dragging = createModes({\n      branchKey: 'mode',\n      branches: DraggingBranches,\n      name: 'dragging',\n      active: {\n        events: (dragConfig, dragState) => {\n          const dragger = dragConfig.dragger;\n          return dragger.handlers(dragConfig, dragState);\n        }\n      },\n      extra: {\n        snap: sConfig => ({\n          sensor: sConfig.sensor,\n          range: sConfig.range,\n          output: sConfig.output,\n          extra: Optional.from(sConfig.extra)\n        })\n      },\n      state: DragState,\n      apis: DraggingApis\n    });\n\n    const snapWidth = 40;\n    const snapOffset = snapWidth / 2;\n    const calcSnap = (selectorOpt, td, x, y, width, height) => selectorOpt.fold(() => Dragging.snap({\n      sensor: absolute(x - snapOffset, y - snapOffset),\n      range: SugarPosition(width, height),\n      output: absolute(Optional.some(x), Optional.some(y)),\n      extra: { td }\n    }), selectorHandle => {\n      const sensorLeft = x - snapOffset;\n      const sensorTop = y - snapOffset;\n      const sensorWidth = snapWidth;\n      const sensorHeight = snapWidth;\n      const rect = selectorHandle.element.dom.getBoundingClientRect();\n      return Dragging.snap({\n        sensor: absolute(sensorLeft, sensorTop),\n        range: SugarPosition(sensorWidth, sensorHeight),\n        output: absolute(Optional.some(x - rect.width / 2), Optional.some(y - rect.height / 2)),\n        extra: { td }\n      });\n    });\n    const getSnapsConfig = (getSnapPoints, cell, onChange) => {\n      const isSameCell = (cellOpt, td) => cellOpt.exists(currentTd => eq(currentTd, td));\n      return {\n        getSnapPoints,\n        leftAttr: 'data-drag-left',\n        topAttr: 'data-drag-top',\n        onSensor: (component, extra) => {\n          const td = extra.td;\n          if (!isSameCell(cell.get(), td)) {\n            cell.set(td);\n            onChange(td);\n          }\n        },\n        mustSnap: true\n      };\n    };\n    const createSelector = snaps => record(Button.sketch({\n      dom: {\n        tag: 'div',\n        classes: ['tox-selector']\n      },\n      buttonBehaviours: derive$1([\n        Dragging.config({\n          mode: 'mouseOrTouch',\n          blockerClass: 'blocker',\n          snaps\n        }),\n        Unselecting.config({})\n      ]),\n      eventOrder: {\n        mousedown: [\n          'dragging',\n          'alloy.base.behaviour'\n        ],\n        touchstart: [\n          'dragging',\n          'alloy.base.behaviour'\n        ]\n      }\n    }));\n    const setup$4 = (editor, sink) => {\n      const tlTds = Cell([]);\n      const brTds = Cell([]);\n      const isVisible = Cell(false);\n      const startCell = value$2();\n      const finishCell = value$2();\n      const getTopLeftSnap = td => {\n        const box = absolute$2(td);\n        return calcSnap(memTopLeft.getOpt(sink), td, box.x, box.y, box.width, box.height);\n      };\n      const getTopLeftSnaps = () => map$2(tlTds.get(), td => getTopLeftSnap(td));\n      const getBottomRightSnap = td => {\n        const box = absolute$2(td);\n        return calcSnap(memBottomRight.getOpt(sink), td, box.right, box.bottom, box.width, box.height);\n      };\n      const getBottomRightSnaps = () => map$2(brTds.get(), td => getBottomRightSnap(td));\n      const topLeftSnaps = getSnapsConfig(getTopLeftSnaps, startCell, start => {\n        finishCell.get().each(finish => {\n          editor.dispatch('TableSelectorChange', {\n            start,\n            finish\n          });\n        });\n      });\n      const bottomRightSnaps = getSnapsConfig(getBottomRightSnaps, finishCell, finish => {\n        startCell.get().each(start => {\n          editor.dispatch('TableSelectorChange', {\n            start,\n            finish\n          });\n        });\n      });\n      const memTopLeft = createSelector(topLeftSnaps);\n      const memBottomRight = createSelector(bottomRightSnaps);\n      const topLeft = build$1(memTopLeft.asSpec());\n      const bottomRight = build$1(memBottomRight.asSpec());\n      const showOrHideHandle = (selector, cell, isAbove, isBelow) => {\n        const cellRect = cell.dom.getBoundingClientRect();\n        remove$6(selector.element, 'display');\n        const viewportHeight = defaultView(SugarElement.fromDom(editor.getBody())).dom.innerHeight;\n        const aboveViewport = isAbove(cellRect);\n        const belowViewport = isBelow(cellRect, viewportHeight);\n        if (aboveViewport || belowViewport) {\n          set$8(selector.element, 'display', 'none');\n        }\n      };\n      const snapTo = (selector, cell, getSnapConfig, pos) => {\n        const snap = getSnapConfig(cell);\n        Dragging.snapTo(selector, snap);\n        const isAbove = rect => rect[pos] < 0;\n        const isBelow = (rect, viewportHeight) => rect[pos] > viewportHeight;\n        showOrHideHandle(selector, cell, isAbove, isBelow);\n      };\n      const snapTopLeft = cell => snapTo(topLeft, cell, getTopLeftSnap, 'top');\n      const snapLastTopLeft = () => startCell.get().each(snapTopLeft);\n      const snapBottomRight = cell => snapTo(bottomRight, cell, getBottomRightSnap, 'bottom');\n      const snapLastBottomRight = () => finishCell.get().each(snapBottomRight);\n      if (detect$2().deviceType.isTouch()) {\n        editor.on('TableSelectionChange', e => {\n          if (!isVisible.get()) {\n            attach(sink, topLeft);\n            attach(sink, bottomRight);\n            isVisible.set(true);\n          }\n          startCell.set(e.start);\n          finishCell.set(e.finish);\n          e.otherCells.each(otherCells => {\n            tlTds.set(otherCells.upOrLeftCells);\n            brTds.set(otherCells.downOrRightCells);\n            snapTopLeft(e.start);\n            snapBottomRight(e.finish);\n          });\n        });\n        editor.on('ResizeEditor ResizeWindow ScrollContent', () => {\n          snapLastTopLeft();\n          snapLastBottomRight();\n        });\n        editor.on('TableSelectionClear', () => {\n          if (isVisible.get()) {\n            detach(topLeft);\n            detach(bottomRight);\n            isVisible.set(false);\n          }\n          startCell.clear();\n          finishCell.clear();\n        });\n      }\n    };\n\n    var Logo = \"<svg width=\\\"50px\\\" height=\\\"16px\\\" viewBox=\\\"0 0 50 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n  <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M10.143 0c2.608.015 5.186 2.178 5.186 5.331 0 0 .077 3.812-.084 4.87-.361 2.41-2.164 4.074-4.65 4.496-1.453.284-2.523.49-3.212.623-.373.071-.634.122-.785.152-.184.038-.997.145-1.35.145-2.732 0-5.21-2.04-5.248-5.33 0 0 0-3.514.03-4.442.093-2.4 1.758-4.342 4.926-4.963 0 0 3.875-.752 4.036-.782.368-.07.775-.1 1.15-.1Zm1.826 2.8L5.83 3.989v2.393l-2.455.475v5.968l6.137-1.189V9.243l2.456-.476V2.8ZM5.83 6.382l3.682-.713v3.574l-3.682.713V6.382Zm27.173-1.64-.084-1.066h-2.226v9.132h2.456V7.743c-.008-1.151.998-2.064 2.149-2.072 1.15-.008 1.987.92 1.995 2.072v5.065h2.455V7.359c-.015-2.18-1.657-3.929-3.837-3.913a3.993 3.993 0 0 0-2.908 1.296Zm-6.3-4.266L29.16 0v2.387l-2.456.475V.476Zm0 3.2v9.132h2.456V3.676h-2.456Zm18.179 11.787L49.11 3.676H46.58l-1.612 4.527-.46 1.382-.384-1.382-1.611-4.527H39.98l3.3 9.132L42.15 16l2.732-.537ZM22.867 9.738c0 .752.568 1.075.921 1.075.353 0 .668-.047.998-.154l.537 1.765c-.23.154-.92.537-2.225.537-1.305 0-2.655-.997-2.686-2.686a136.877 136.877 0 0 1 0-4.374H18.8V3.676h1.612v-1.98l2.455-.476v2.456h2.302V5.9h-2.302v3.837Z\\\"/>\\n</svg>\\n\";\n\n    const isHidden = elm => elm.nodeName === 'BR' || !!elm.getAttribute('data-mce-bogus') || elm.getAttribute('data-mce-type') === 'bookmark';\n    const renderElementPath = (editor, settings, providersBackstage) => {\n      var _a;\n      const delimiter = (_a = settings.delimiter) !== null && _a !== void 0 ? _a : '\\u203A';\n      const renderElement = (name, element, index) => Button.sketch({\n        dom: {\n          tag: 'div',\n          classes: ['tox-statusbar__path-item'],\n          attributes: {\n            'data-index': index,\n            'aria-level': index + 1\n          }\n        },\n        components: [text$2(name)],\n        action: _btn => {\n          editor.focus();\n          editor.selection.select(element);\n          editor.nodeChanged();\n        },\n        buttonBehaviours: derive$1([\n          DisablingConfigs.button(providersBackstage.isDisabled),\n          receivingConfig()\n        ])\n      });\n      const renderDivider = () => ({\n        dom: {\n          tag: 'div',\n          classes: ['tox-statusbar__path-divider'],\n          attributes: { 'aria-hidden': true }\n        },\n        components: [text$2(` ${ delimiter } `)]\n      });\n      const renderPathData = data => foldl(data, (acc, path, index) => {\n        const element = renderElement(path.name, path.element, index);\n        if (index === 0) {\n          return acc.concat([element]);\n        } else {\n          return acc.concat([\n            renderDivider(),\n            element\n          ]);\n        }\n      }, []);\n      const updatePath = parents => {\n        const newPath = [];\n        let i = parents.length;\n        while (i-- > 0) {\n          const parent = parents[i];\n          if (parent.nodeType === 1 && !isHidden(parent)) {\n            const args = fireResolveName(editor, parent);\n            if (!args.isDefaultPrevented()) {\n              newPath.push({\n                name: args.name,\n                element: parent\n              });\n            }\n            if (args.isPropagationStopped()) {\n              break;\n            }\n          }\n        }\n        return newPath;\n      };\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-statusbar__path'],\n          attributes: { role: 'navigation' }\n        },\n        behaviours: derive$1([\n          Keying.config({\n            mode: 'flow',\n            selector: 'div[role=button]'\n          }),\n          Disabling.config({ disabled: providersBackstage.isDisabled }),\n          receivingConfig(),\n          Tabstopping.config({}),\n          Replacing.config({}),\n          config('elementPathEvents', [runOnAttached((comp, _e) => {\n              editor.shortcuts.add('alt+F11', 'focus statusbar elementpath', () => Keying.focusIn(comp));\n              editor.on('NodeChange', e => {\n                const newPath = updatePath(e.parents);\n                const newChildren = newPath.length > 0 ? renderPathData(newPath) : [];\n                Replacing.set(comp, newChildren);\n              });\n            })])\n        ]),\n        components: []\n      };\n    };\n\n    var ResizeTypes;\n    (function (ResizeTypes) {\n      ResizeTypes[ResizeTypes['None'] = 0] = 'None';\n      ResizeTypes[ResizeTypes['Both'] = 1] = 'Both';\n      ResizeTypes[ResizeTypes['Vertical'] = 2] = 'Vertical';\n    }(ResizeTypes || (ResizeTypes = {})));\n    const getDimensions = (editor, deltas, resizeType, originalHeight, originalWidth) => {\n      const dimensions = { height: calcCappedSize(originalHeight + deltas.top, getMinHeightOption(editor), getMaxHeightOption(editor)) };\n      if (resizeType === ResizeTypes.Both) {\n        dimensions.width = calcCappedSize(originalWidth + deltas.left, getMinWidthOption(editor), getMaxWidthOption(editor));\n      }\n      return dimensions;\n    };\n    const resize = (editor, deltas, resizeType) => {\n      const container = SugarElement.fromDom(editor.getContainer());\n      const dimensions = getDimensions(editor, deltas, resizeType, get$d(container), get$c(container));\n      each(dimensions, (val, dim) => {\n        if (isNumber(val)) {\n          set$8(container, dim, numToPx(val));\n        }\n      });\n      fireResizeEditor(editor);\n    };\n\n    const getResizeType = editor => {\n      const resize = getResize(editor);\n      if (resize === false) {\n        return ResizeTypes.None;\n      } else if (resize === 'both') {\n        return ResizeTypes.Both;\n      } else {\n        return ResizeTypes.Vertical;\n      }\n    };\n    const keyboardHandler = (editor, resizeType, x, y) => {\n      const scale = 20;\n      const delta = SugarPosition(x * scale, y * scale);\n      resize(editor, delta, resizeType);\n      return Optional.some(true);\n    };\n    const renderResizeHandler = (editor, providersBackstage) => {\n      const resizeType = getResizeType(editor);\n      if (resizeType === ResizeTypes.None) {\n        return Optional.none();\n      }\n      const resizeLabel = resizeType === ResizeTypes.Both ? 'Press the arrow keys to resize the editor.' : 'Press the Up and Down arrow keys to resize the editor.';\n      return Optional.some(render$3('resize-handle', {\n        tag: 'div',\n        classes: ['tox-statusbar__resize-handle'],\n        attributes: {\n          'title': providersBackstage.translate('Resize'),\n          'aria-label': providersBackstage.translate(resizeLabel)\n        },\n        behaviours: [\n          Dragging.config({\n            mode: 'mouse',\n            repositionTarget: false,\n            onDrag: (_comp, _target, delta) => resize(editor, delta, resizeType),\n            blockerClass: 'tox-blocker'\n          }),\n          Keying.config({\n            mode: 'special',\n            onLeft: () => keyboardHandler(editor, resizeType, -1, 0),\n            onRight: () => keyboardHandler(editor, resizeType, 1, 0),\n            onUp: () => keyboardHandler(editor, resizeType, 0, -1),\n            onDown: () => keyboardHandler(editor, resizeType, 0, 1)\n          }),\n          Tabstopping.config({}),\n          Focusing.config({})\n        ]\n      }, providersBackstage.icons));\n    };\n\n    const renderWordCount = (editor, providersBackstage) => {\n      const replaceCountText = (comp, count, mode) => Replacing.set(comp, [text$2(providersBackstage.translate([\n          '{0} ' + mode,\n          count[mode]\n        ]))]);\n      return Button.sketch({\n        dom: {\n          tag: 'button',\n          classes: ['tox-statusbar__wordcount']\n        },\n        components: [],\n        buttonBehaviours: derive$1([\n          DisablingConfigs.button(providersBackstage.isDisabled),\n          receivingConfig(),\n          Tabstopping.config({}),\n          Replacing.config({}),\n          Representing.config({\n            store: {\n              mode: 'memory',\n              initialValue: {\n                mode: 'words',\n                count: {\n                  words: 0,\n                  characters: 0\n                }\n              }\n            }\n          }),\n          config('wordcount-events', [\n            runOnExecute$1(comp => {\n              const currentVal = Representing.getValue(comp);\n              const newMode = currentVal.mode === 'words' ? 'characters' : 'words';\n              Representing.setValue(comp, {\n                mode: newMode,\n                count: currentVal.count\n              });\n              replaceCountText(comp, currentVal.count, newMode);\n            }),\n            runOnAttached(comp => {\n              editor.on('wordCountUpdate', e => {\n                const {mode} = Representing.getValue(comp);\n                Representing.setValue(comp, {\n                  mode,\n                  count: e.wordCount\n                });\n                replaceCountText(comp, e.wordCount, mode);\n              });\n            })\n          ])\n        ]),\n        eventOrder: {\n          [execute$5()]: [\n            'disabling',\n            'alloy.base.behaviour',\n            'wordcount-events'\n          ]\n        }\n      });\n    };\n\n    const renderStatusbar = (editor, providersBackstage) => {\n      const renderBranding = () => {\n        return {\n          dom: {\n            tag: 'span',\n            classes: ['tox-statusbar__branding']\n          },\n          components: [{\n              dom: {\n                tag: 'a',\n                attributes: {\n                  'href': 'https://www.tiny.cloud/powered-by-tiny?utm_campaign=poweredby&utm_source=tiny&utm_medium=referral&utm_content=v6',\n                  'rel': 'noopener',\n                  'target': '_blank',\n                  'aria-label': global$8.translate([\n                    'Powered by {0}',\n                    'Tiny'\n                  ])\n                },\n                innerHtml: Logo.trim()\n              },\n              behaviours: derive$1([Focusing.config({})])\n            }]\n        };\n      };\n      const renderHelpAccessibility = () => {\n        const shortcutText = convertText('Alt+0');\n        const text = `Press {0} for help`;\n        return {\n          dom: {\n            tag: 'div',\n            classes: ['tox-statusbar__help-text']\n          },\n          components: [text$2(global$8.translate([\n              text,\n              shortcutText\n            ]))]\n        };\n      };\n      const renderRightContainer = () => {\n        const components = [];\n        if (editor.hasPlugin('wordcount')) {\n          components.push(renderWordCount(editor, providersBackstage));\n        }\n        if (useBranding(editor)) {\n          components.push(renderBranding());\n        }\n        return {\n          dom: {\n            tag: 'div',\n            classes: ['tox-statusbar__right-container']\n          },\n          components\n        };\n      };\n      const getTextComponents = () => {\n        const components = [];\n        const shouldRenderHelp = useHelpAccessibility(editor);\n        const shouldRenderElementPath = useElementPath(editor);\n        const shouldRenderRightContainer = useBranding(editor) || editor.hasPlugin('wordcount');\n        const getTextComponentClasses = () => {\n          const flexStart = 'tox-statusbar__text-container--flex-start';\n          const flexEnd = 'tox-statusbar__text-container--flex-end';\n          const spaceAround = 'tox-statusbar__text-container--space-around';\n          if (shouldRenderHelp) {\n            const container3Columns = 'tox-statusbar__text-container-3-cols';\n            if (!shouldRenderRightContainer && !shouldRenderElementPath) {\n              return [\n                container3Columns,\n                spaceAround\n              ];\n            }\n            if (shouldRenderRightContainer && !shouldRenderElementPath) {\n              return [\n                container3Columns,\n                flexEnd\n              ];\n            }\n            return [\n              container3Columns,\n              flexStart\n            ];\n          }\n          return [shouldRenderRightContainer && !shouldRenderElementPath ? flexEnd : flexStart];\n        };\n        if (shouldRenderElementPath) {\n          components.push(renderElementPath(editor, {}, providersBackstage));\n        }\n        if (shouldRenderHelp) {\n          components.push(renderHelpAccessibility());\n        }\n        if (shouldRenderRightContainer) {\n          components.push(renderRightContainer());\n        }\n        if (components.length > 0) {\n          return [{\n              dom: {\n                tag: 'div',\n                classes: [\n                  'tox-statusbar__text-container',\n                  ...getTextComponentClasses()\n                ]\n              },\n              components\n            }];\n        }\n        return [];\n      };\n      const getComponents = () => {\n        const components = getTextComponents();\n        const resizeHandler = renderResizeHandler(editor, providersBackstage);\n        return components.concat(resizeHandler.toArray());\n      };\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-statusbar']\n        },\n        components: getComponents()\n      };\n    };\n\n    const getLazyMothership = (label, singleton) => singleton.get().getOrDie(`UI for ${ label } has not been rendered`);\n    const setup$3 = (editor, setupForTheme) => {\n      const isInline = editor.inline;\n      const mode = isInline ? Inline : Iframe;\n      const header = isStickyToolbar(editor) ? StickyHeader : StaticHeader;\n      const lazyUiRefs = LazyUiReferences();\n      const lazyMothership = value$2();\n      const lazyDialogMothership = value$2();\n      const lazyPopupMothership = value$2();\n      const platform = detect$2();\n      const isTouch = platform.deviceType.isTouch();\n      const touchPlatformClass = 'tox-platform-touch';\n      const deviceClasses = isTouch ? [touchPlatformClass] : [];\n      const isToolbarBottom = isToolbarLocationBottom(editor);\n      const toolbarMode = getToolbarMode(editor);\n      const memAnchorBar = record({\n        dom: {\n          tag: 'div',\n          classes: ['tox-anchorbar']\n        }\n      });\n      const memBottomAnchorBar = record({\n        dom: {\n          tag: 'div',\n          classes: ['tox-bottom-anchorbar']\n        }\n      });\n      const lazyHeader = () => lazyUiRefs.mainUi.get().map(ui => ui.outerContainer).bind(OuterContainer.getHeader);\n      const lazyDialogSinkResult = () => Result.fromOption(lazyUiRefs.dialogUi.get().map(ui => ui.sink), 'UI has not been rendered');\n      const lazyPopupSinkResult = () => Result.fromOption(lazyUiRefs.popupUi.get().map(ui => ui.sink), '(popup) UI has not been rendered');\n      const lazyAnchorBar = lazyUiRefs.lazyGetInOuterOrDie('anchor bar', memAnchorBar.getOpt);\n      const lazyBottomAnchorBar = lazyUiRefs.lazyGetInOuterOrDie('bottom anchor bar', memBottomAnchorBar.getOpt);\n      const lazyToolbar = lazyUiRefs.lazyGetInOuterOrDie('toolbar', OuterContainer.getToolbar);\n      const lazyThrobber = lazyUiRefs.lazyGetInOuterOrDie('throbber', OuterContainer.getThrobber);\n      const backstages = init$6({\n        popup: lazyPopupSinkResult,\n        dialog: lazyDialogSinkResult\n      }, editor, lazyAnchorBar, lazyBottomAnchorBar);\n      const makeHeaderPart = () => {\n        const verticalDirAttributes = { attributes: { [Attribute]: isToolbarBottom ? AttributeValue.BottomToTop : AttributeValue.TopToBottom } };\n        const partMenubar = OuterContainer.parts.menubar({\n          dom: {\n            tag: 'div',\n            classes: ['tox-menubar']\n          },\n          backstage: backstages.popup,\n          onEscape: () => {\n            editor.focus();\n          }\n        });\n        const partToolbar = OuterContainer.parts.toolbar({\n          dom: {\n            tag: 'div',\n            classes: ['tox-toolbar']\n          },\n          getSink: backstages.popup.shared.getSink,\n          providers: backstages.popup.shared.providers,\n          onEscape: () => {\n            editor.focus();\n          },\n          onToolbarToggled: state => {\n            fireToggleToolbarDrawer(editor, state);\n          },\n          type: toolbarMode,\n          lazyToolbar,\n          lazyHeader: () => lazyHeader().getOrDie('Could not find header element'),\n          ...verticalDirAttributes\n        });\n        const partMultipleToolbar = OuterContainer.parts['multiple-toolbar']({\n          dom: {\n            tag: 'div',\n            classes: ['tox-toolbar-overlord']\n          },\n          providers: backstages.popup.shared.providers,\n          onEscape: () => {\n            editor.focus();\n          },\n          type: toolbarMode\n        });\n        const hasMultipleToolbar = isMultipleToolbars(editor);\n        const hasToolbar = isToolbarEnabled(editor);\n        const hasMenubar = isMenubarEnabled(editor);\n        const shouldHavePromotion = promotionEnabled(editor);\n        const partPromotion = makePromotion();\n        const hasAnyContents = hasMultipleToolbar || hasToolbar || hasMenubar;\n        const getPartToolbar = () => {\n          if (hasMultipleToolbar) {\n            return [partMultipleToolbar];\n          } else if (hasToolbar) {\n            return [partToolbar];\n          } else {\n            return [];\n          }\n        };\n        const menubarCollection = shouldHavePromotion ? [\n          partPromotion,\n          partMenubar\n        ] : [partMenubar];\n        return OuterContainer.parts.header({\n          dom: {\n            tag: 'div',\n            classes: ['tox-editor-header'].concat(hasAnyContents ? [] : ['tox-editor-header--empty']),\n            ...verticalDirAttributes\n          },\n          components: flatten([\n            hasMenubar ? menubarCollection : [],\n            getPartToolbar(),\n            useFixedContainer(editor) ? [] : [memAnchorBar.asSpec()]\n          ]),\n          sticky: isStickyToolbar(editor),\n          editor,\n          sharedBackstage: backstages.popup.shared\n        });\n      };\n      const makePromotion = () => {\n        return OuterContainer.parts.promotion({\n          dom: {\n            tag: 'div',\n            classes: ['tox-promotion']\n          }\n        });\n      };\n      const makeSidebarDefinition = () => {\n        const partSocket = OuterContainer.parts.socket({\n          dom: {\n            tag: 'div',\n            classes: ['tox-edit-area']\n          }\n        });\n        const partSidebar = OuterContainer.parts.sidebar({\n          dom: {\n            tag: 'div',\n            classes: ['tox-sidebar']\n          }\n        });\n        return {\n          dom: {\n            tag: 'div',\n            classes: ['tox-sidebar-wrap']\n          },\n          components: [\n            partSocket,\n            partSidebar\n          ]\n        };\n      };\n      const renderDialogUi = () => {\n        const uiContainer = getUiContainer(editor);\n        const isGridUiContainer = eq(body(), uiContainer) && get$e(uiContainer, 'display') === 'grid';\n        const sinkSpec = {\n          dom: {\n            tag: 'div',\n            classes: [\n              'tox',\n              'tox-silver-sink',\n              'tox-tinymce-aux'\n            ].concat(deviceClasses),\n            attributes: { ...global$8.isRtl() ? { dir: 'rtl' } : {} }\n          },\n          behaviours: derive$1([Positioning.config({ useFixed: () => header.isDocked(lazyHeader) })])\n        };\n        const reactiveWidthSpec = {\n          dom: { styles: { width: document.body.clientWidth + 'px' } },\n          events: derive$2([run$1(windowResize(), comp => {\n              set$8(comp.element, 'width', document.body.clientWidth + 'px');\n            })])\n        };\n        const sink = build$1(deepMerge(sinkSpec, isGridUiContainer ? reactiveWidthSpec : {}));\n        const uiMothership = takeover(sink);\n        lazyDialogMothership.set(uiMothership);\n        return {\n          sink,\n          mothership: uiMothership\n        };\n      };\n      const renderPopupUi = () => {\n        const sinkSpec = {\n          dom: {\n            tag: 'div',\n            classes: [\n              'tox',\n              'tox-silver-sink',\n              'tox-silver-popup-sink',\n              'tox-tinymce-aux'\n            ].concat(deviceClasses),\n            attributes: { ...global$8.isRtl() ? { dir: 'rtl' } : {} }\n          },\n          behaviours: derive$1([Positioning.config({\n              useFixed: () => header.isDocked(lazyHeader),\n              getBounds: () => setupForTheme.getPopupSinkBounds()\n            })])\n        };\n        const sink = build$1(sinkSpec);\n        const uiMothership = takeover(sink);\n        lazyPopupMothership.set(uiMothership);\n        return {\n          sink,\n          mothership: uiMothership\n        };\n      };\n      const renderMainUi = () => {\n        const partHeader = makeHeaderPart();\n        const sidebarContainer = makeSidebarDefinition();\n        const partThrobber = OuterContainer.parts.throbber({\n          dom: {\n            tag: 'div',\n            classes: ['tox-throbber']\n          },\n          backstage: backstages.popup\n        });\n        const partViewWrapper = OuterContainer.parts.viewWrapper({ backstage: backstages.popup });\n        const statusbar = useStatusBar(editor) && !isInline ? Optional.some(renderStatusbar(editor, backstages.popup.shared.providers)) : Optional.none();\n        const editorComponents = flatten([\n          isToolbarBottom ? [] : [partHeader],\n          isInline ? [] : [sidebarContainer],\n          isToolbarBottom ? [partHeader] : []\n        ]);\n        const editorContainer = OuterContainer.parts.editorContainer({\n          components: flatten([\n            editorComponents,\n            isInline ? [] : [\n              memBottomAnchorBar.asSpec(),\n              ...statusbar.toArray()\n            ]\n          ])\n        });\n        const isHidden = isDistractionFree(editor);\n        const attributes = {\n          role: 'application',\n          ...global$8.isRtl() ? { dir: 'rtl' } : {},\n          ...isHidden ? { 'aria-hidden': 'true' } : {}\n        };\n        const outerContainer = build$1(OuterContainer.sketch({\n          dom: {\n            tag: 'div',\n            classes: [\n              'tox',\n              'tox-tinymce'\n            ].concat(isInline ? ['tox-tinymce-inline'] : []).concat(isToolbarBottom ? ['tox-tinymce--toolbar-bottom'] : []).concat(deviceClasses),\n            styles: {\n              visibility: 'hidden',\n              ...isHidden ? {\n                opacity: '0',\n                border: '0'\n              } : {}\n            },\n            attributes\n          },\n          components: [\n            editorContainer,\n            ...isInline ? [] : [partViewWrapper],\n            partThrobber\n          ],\n          behaviours: derive$1([\n            receivingConfig(),\n            Disabling.config({ disableClass: 'tox-tinymce--disabled' }),\n            Keying.config({\n              mode: 'cyclic',\n              selector: '.tox-menubar, .tox-toolbar, .tox-toolbar__primary, .tox-toolbar__overflow--open, .tox-sidebar__overflow--open, .tox-statusbar__path, .tox-statusbar__wordcount, .tox-statusbar__branding a, .tox-statusbar__resize-handle'\n            })\n          ])\n        }));\n        const mothership = takeover(outerContainer);\n        lazyMothership.set(mothership);\n        return {\n          mothership,\n          outerContainer\n        };\n      };\n      const setEditorSize = outerContainer => {\n        const parsedHeight = numToPx(getHeightWithFallback(editor));\n        const parsedWidth = numToPx(getWidthWithFallback(editor));\n        if (!editor.inline) {\n          if (isValidValue$1('div', 'width', parsedWidth)) {\n            set$8(outerContainer.element, 'width', parsedWidth);\n          }\n          if (isValidValue$1('div', 'height', parsedHeight)) {\n            set$8(outerContainer.element, 'height', parsedHeight);\n          } else {\n            set$8(outerContainer.element, 'height', '400px');\n          }\n        }\n        return parsedHeight;\n      };\n      const setupShortcutsAndCommands = outerContainer => {\n        editor.addShortcut('alt+F9', 'focus menubar', () => {\n          OuterContainer.focusMenubar(outerContainer);\n        });\n        editor.addShortcut('alt+F10', 'focus toolbar', () => {\n          OuterContainer.focusToolbar(outerContainer);\n        });\n        editor.addCommand('ToggleToolbarDrawer', (_ui, options) => {\n          if (options === null || options === void 0 ? void 0 : options.skipFocus) {\n            OuterContainer.toggleToolbarDrawerWithoutFocusing(outerContainer);\n          } else {\n            OuterContainer.toggleToolbarDrawer(outerContainer);\n          }\n        });\n        editor.addQueryStateHandler('ToggleToolbarDrawer', () => OuterContainer.isToolbarDrawerToggled(outerContainer));\n      };\n      const renderUIWithRefs = uiRefs => {\n        const {mainUi, popupUi, uiMotherships} = uiRefs;\n        map$1(getToolbarGroups(editor), (toolbarGroupButtonConfig, name) => {\n          editor.ui.registry.addGroupToolbarButton(name, toolbarGroupButtonConfig);\n        });\n        const {buttons, menuItems, contextToolbars, sidebars, views} = editor.ui.registry.getAll();\n        const toolbarOpt = getMultipleToolbarsOption(editor);\n        const rawUiConfig = {\n          menuItems,\n          menus: getMenus(editor),\n          menubar: getMenubar(editor),\n          toolbar: toolbarOpt.getOrThunk(() => getToolbar(editor)),\n          allowToolbarGroups: toolbarMode === ToolbarMode$1.floating,\n          buttons,\n          sidebar: sidebars,\n          views\n        };\n        setupShortcutsAndCommands(mainUi.outerContainer);\n        setup$b(editor, mainUi.mothership, uiMotherships);\n        header.setup(editor, backstages.popup.shared, lazyHeader);\n        setup$6(editor, backstages.popup);\n        setup$5(editor, backstages.popup.shared.getSink, backstages.popup);\n        setup$8(editor);\n        setup$7(editor, lazyThrobber, backstages.popup.shared);\n        register$9(editor, contextToolbars, popupUi.sink, { backstage: backstages.popup });\n        setup$4(editor, popupUi.sink);\n        const elm = editor.getElement();\n        const height = setEditorSize(mainUi.outerContainer);\n        const args = {\n          targetNode: elm,\n          height\n        };\n        return mode.render(editor, uiRefs, rawUiConfig, backstages.popup, args);\n      };\n      const reuseDialogUiForPopuUi = dialogUi => {\n        lazyPopupMothership.set(dialogUi.mothership);\n        return dialogUi;\n      };\n      const renderUI = () => {\n        const mainUi = renderMainUi();\n        const dialogUi = renderDialogUi();\n        const popupUi = isSplitUiMode(editor) ? renderPopupUi() : reuseDialogUiForPopuUi(dialogUi);\n        lazyUiRefs.dialogUi.set(dialogUi);\n        lazyUiRefs.popupUi.set(popupUi);\n        lazyUiRefs.mainUi.set(mainUi);\n        const uiRefs = {\n          popupUi,\n          dialogUi,\n          mainUi,\n          uiMotherships: lazyUiRefs.getUiMotherships()\n        };\n        return renderUIWithRefs(uiRefs);\n      };\n      return {\n        popups: {\n          backstage: backstages.popup,\n          getMothership: () => getLazyMothership('popups', lazyPopupMothership)\n        },\n        dialogs: {\n          backstage: backstages.dialog,\n          getMothership: () => getLazyMothership('dialogs', lazyDialogMothership)\n        },\n        renderUI\n      };\n    };\n\n    const labelledBy = (labelledElement, labelElement) => {\n      const labelId = getOpt(labelledElement, 'id').fold(() => {\n        const id = generate$6('dialog-label');\n        set$9(labelElement, 'id', id);\n        return id;\n      }, identity);\n      set$9(labelledElement, 'aria-labelledby', labelId);\n    };\n\n    const schema$2 = constant$1([\n      required$1('lazySink'),\n      option$3('dragBlockClass'),\n      defaultedFunction('getBounds', win),\n      defaulted('useTabstopAt', always),\n      defaulted('firstTabstop', 0),\n      defaulted('eventOrder', {}),\n      field('modalBehaviours', [Keying]),\n      onKeyboardHandler('onExecute'),\n      onStrictKeyboardHandler('onEscape')\n    ]);\n    const basic = { sketch: identity };\n    const parts$2 = constant$1([\n      optional({\n        name: 'draghandle',\n        overrides: (detail, spec) => {\n          return {\n            behaviours: derive$1([Dragging.config({\n                mode: 'mouse',\n                getTarget: handle => {\n                  return ancestor(handle, '[role=\"dialog\"]').getOr(handle);\n                },\n                blockerClass: detail.dragBlockClass.getOrDie(new Error('The drag blocker class was not specified for a dialog with a drag handle: \\n' + JSON.stringify(spec, null, 2)).message),\n                getBounds: detail.getDragBounds\n              })])\n          };\n        }\n      }),\n      required({\n        schema: [required$1('dom')],\n        name: 'title'\n      }),\n      required({\n        factory: basic,\n        schema: [required$1('dom')],\n        name: 'close'\n      }),\n      required({\n        factory: basic,\n        schema: [required$1('dom')],\n        name: 'body'\n      }),\n      optional({\n        factory: basic,\n        schema: [required$1('dom')],\n        name: 'footer'\n      }),\n      external({\n        factory: {\n          sketch: (spec, detail) => ({\n            ...spec,\n            dom: detail.dom,\n            components: detail.components\n          })\n        },\n        schema: [\n          defaulted('dom', {\n            tag: 'div',\n            styles: {\n              position: 'fixed',\n              left: '0px',\n              top: '0px',\n              right: '0px',\n              bottom: '0px'\n            }\n          }),\n          defaulted('components', [])\n        ],\n        name: 'blocker'\n      })\n    ]);\n\n    const factory$4 = (detail, components, spec, externals) => {\n      const dialogComp = value$2();\n      const showDialog = dialog => {\n        dialogComp.set(dialog);\n        const sink = detail.lazySink(dialog).getOrDie();\n        const externalBlocker = externals.blocker();\n        const blocker = sink.getSystem().build({\n          ...externalBlocker,\n          components: externalBlocker.components.concat([premade(dialog)]),\n          behaviours: derive$1([\n            Focusing.config({}),\n            config('dialog-blocker-events', [runOnSource(focusin(), () => {\n                Blocking.isBlocked(dialog) ? noop() : Keying.focusIn(dialog);\n              })])\n          ])\n        });\n        attach(sink, blocker);\n        Keying.focusIn(dialog);\n      };\n      const hideDialog = dialog => {\n        dialogComp.clear();\n        parent(dialog.element).each(blockerDom => {\n          dialog.getSystem().getByDom(blockerDom).each(blocker => {\n            detach(blocker);\n          });\n        });\n      };\n      const getDialogBody = dialog => getPartOrDie(dialog, detail, 'body');\n      const getDialogFooter = dialog => getPart(dialog, detail, 'footer');\n      const setBusy = (dialog, getBusySpec) => {\n        Blocking.block(dialog, getBusySpec);\n      };\n      const setIdle = dialog => {\n        Blocking.unblock(dialog);\n      };\n      const modalEventsId = generate$6('modal-events');\n      const eventOrder = {\n        ...detail.eventOrder,\n        [attachedToDom()]: [modalEventsId].concat(detail.eventOrder['alloy.system.attached'] || [])\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components,\n        apis: {\n          show: showDialog,\n          hide: hideDialog,\n          getBody: getDialogBody,\n          getFooter: getDialogFooter,\n          setIdle,\n          setBusy\n        },\n        eventOrder,\n        domModification: {\n          attributes: {\n            'role': 'dialog',\n            'aria-modal': 'true'\n          }\n        },\n        behaviours: augment(detail.modalBehaviours, [\n          Replacing.config({}),\n          Keying.config({\n            mode: 'cyclic',\n            onEnter: detail.onExecute,\n            onEscape: detail.onEscape,\n            useTabstopAt: detail.useTabstopAt,\n            firstTabstop: detail.firstTabstop\n          }),\n          Blocking.config({ getRoot: dialogComp.get }),\n          config(modalEventsId, [runOnAttached(c => {\n              labelledBy(c.element, getPartOrDie(c, detail, 'title').element);\n            })])\n        ])\n      };\n    };\n    const ModalDialog = composite({\n      name: 'ModalDialog',\n      configFields: schema$2(),\n      partFields: parts$2(),\n      factory: factory$4,\n      apis: {\n        show: (apis, dialog) => {\n          apis.show(dialog);\n        },\n        hide: (apis, dialog) => {\n          apis.hide(dialog);\n        },\n        getBody: (apis, dialog) => apis.getBody(dialog),\n        getFooter: (apis, dialog) => apis.getFooter(dialog),\n        setBusy: (apis, dialog, getBusySpec) => {\n          apis.setBusy(dialog, getBusySpec);\n        },\n        setIdle: (apis, dialog) => {\n          apis.setIdle(dialog);\n        }\n      }\n    });\n\n    const dialogToggleMenuItemSchema = objOf([\n      type,\n      name$1\n    ].concat(commonMenuItemFields));\n    const dialogToggleMenuItemDataProcessor = boolean;\n\n    const baseFooterButtonFields = [\n      generatedName('button'),\n      optionalIcon,\n      defaultedStringEnum('align', 'end', [\n        'start',\n        'end'\n      ]),\n      primary,\n      enabled,\n      optionStringEnum('buttonType', [\n        'primary',\n        'secondary'\n      ])\n    ];\n    const dialogFooterButtonFields = [\n      ...baseFooterButtonFields,\n      text\n    ];\n    const normalFooterButtonFields = [\n      requiredStringEnum('type', [\n        'submit',\n        'cancel',\n        'custom'\n      ]),\n      ...dialogFooterButtonFields\n    ];\n    const menuFooterButtonFields = [\n      requiredStringEnum('type', ['menu']),\n      optionalText,\n      optionalTooltip,\n      optionalIcon,\n      requiredArrayOf('items', dialogToggleMenuItemSchema),\n      ...baseFooterButtonFields\n    ];\n    const toggleButtonSpecFields = [\n      ...baseFooterButtonFields,\n      requiredStringEnum('type', ['togglebutton']),\n      requiredString('tooltip'),\n      optionalIcon,\n      optionalText,\n      defaultedBoolean('active', false)\n    ];\n    const dialogFooterButtonSchema = choose$1('type', {\n      submit: normalFooterButtonFields,\n      cancel: normalFooterButtonFields,\n      custom: normalFooterButtonFields,\n      menu: menuFooterButtonFields,\n      togglebutton: toggleButtonSpecFields\n    });\n\n    const alertBannerFields = [\n      type,\n      text,\n      requiredStringEnum('level', [\n        'info',\n        'warn',\n        'error',\n        'success'\n      ]),\n      icon,\n      defaulted('url', '')\n    ];\n    const alertBannerSchema = objOf(alertBannerFields);\n\n    const createBarFields = itemsField => [\n      type,\n      itemsField\n    ];\n\n    const buttonFields = [\n      type,\n      text,\n      enabled,\n      generatedName('button'),\n      optionalIcon,\n      borderless,\n      optionStringEnum('buttonType', [\n        'primary',\n        'secondary',\n        'toolbar'\n      ]),\n      primary\n    ];\n    const buttonSchema = objOf(buttonFields);\n\n    const formComponentFields = [\n      type,\n      name$1\n    ];\n    const formComponentWithLabelFields = formComponentFields.concat([optionalLabel]);\n\n    const checkboxFields = formComponentFields.concat([\n      label,\n      enabled\n    ]);\n    const checkboxSchema = objOf(checkboxFields);\n    const checkboxDataProcessor = boolean;\n\n    const collectionFields = formComponentWithLabelFields.concat([defaultedColumns('auto')]);\n    const collectionSchema = objOf(collectionFields);\n    const collectionDataProcessor = arrOfObj([\n      value$1,\n      text,\n      icon\n    ]);\n\n    const colorInputFields = formComponentWithLabelFields.concat([defaultedString('storageKey', 'default')]);\n    const colorInputSchema = objOf(colorInputFields);\n    const colorInputDataProcessor = string;\n\n    const colorPickerFields = formComponentWithLabelFields;\n    const colorPickerSchema = objOf(colorPickerFields);\n    const colorPickerDataProcessor = string;\n\n    const customEditorFields = formComponentFields.concat([\n      defaultedString('tag', 'textarea'),\n      requiredString('scriptId'),\n      requiredString('scriptUrl'),\n      defaultedPostMsg('settings', undefined)\n    ]);\n    const customEditorFieldsOld = formComponentFields.concat([\n      defaultedString('tag', 'textarea'),\n      requiredFunction('init')\n    ]);\n    const customEditorSchema = valueOf(v => asRaw('customeditor.old', objOfOnly(customEditorFieldsOld), v).orThunk(() => asRaw('customeditor.new', objOfOnly(customEditorFields), v)));\n    const customEditorDataProcessor = string;\n\n    const dropZoneFields = formComponentWithLabelFields;\n    const dropZoneSchema = objOf(dropZoneFields);\n    const dropZoneDataProcessor = arrOfVal();\n\n    const createGridFields = itemsField => [\n      type,\n      requiredNumber('columns'),\n      itemsField\n    ];\n\n    const htmlPanelFields = [\n      type,\n      requiredString('html'),\n      defaultedStringEnum('presets', 'presentation', [\n        'presentation',\n        'document'\n      ])\n    ];\n    const htmlPanelSchema = objOf(htmlPanelFields);\n\n    const iframeFields = formComponentWithLabelFields.concat([\n      defaultedBoolean('border', false),\n      defaultedBoolean('sandboxed', true),\n      defaultedBoolean('streamContent', false),\n      defaultedBoolean('transparent', true)\n    ]);\n    const iframeSchema = objOf(iframeFields);\n    const iframeDataProcessor = string;\n\n    const imagePreviewSchema = objOf(formComponentFields.concat([optionString('height')]));\n    const imagePreviewDataProcessor = objOf([\n      requiredString('url'),\n      optionNumber('zoom'),\n      optionNumber('cachedWidth'),\n      optionNumber('cachedHeight')\n    ]);\n\n    const inputFields = formComponentWithLabelFields.concat([\n      optionString('inputMode'),\n      optionString('placeholder'),\n      defaultedBoolean('maximized', false),\n      enabled\n    ]);\n    const inputSchema = objOf(inputFields);\n    const inputDataProcessor = string;\n\n    const createLabelFields = itemsField => [\n      type,\n      label,\n      itemsField,\n      defaultedStringEnum('align', 'start', [\n        'start',\n        'center',\n        'end'\n      ])\n    ];\n\n    const listBoxSingleItemFields = [\n      text,\n      value$1\n    ];\n    const listBoxNestedItemFields = [\n      text,\n      requiredArrayOf('items', thunkOf('items', () => listBoxItemSchema))\n    ];\n    const listBoxItemSchema = oneOf([\n      objOf(listBoxSingleItemFields),\n      objOf(listBoxNestedItemFields)\n    ]);\n    const listBoxFields = formComponentWithLabelFields.concat([\n      requiredArrayOf('items', listBoxItemSchema),\n      enabled\n    ]);\n    const listBoxSchema = objOf(listBoxFields);\n    const listBoxDataProcessor = string;\n\n    const selectBoxFields = formComponentWithLabelFields.concat([\n      requiredArrayOfObj('items', [\n        text,\n        value$1\n      ]),\n      defaultedNumber('size', 1),\n      enabled\n    ]);\n    const selectBoxSchema = objOf(selectBoxFields);\n    const selectBoxDataProcessor = string;\n\n    const sizeInputFields = formComponentWithLabelFields.concat([\n      defaultedBoolean('constrain', true),\n      enabled\n    ]);\n    const sizeInputSchema = objOf(sizeInputFields);\n    const sizeInputDataProcessor = objOf([\n      requiredString('width'),\n      requiredString('height')\n    ]);\n\n    const sliderFields = formComponentFields.concat([\n      label,\n      defaultedNumber('min', 0),\n      defaultedNumber('max', 0)\n    ]);\n    const sliderSchema = objOf(sliderFields);\n    const sliderInputDataProcessor = number;\n\n    const tableFields = [\n      type,\n      requiredArrayOf('header', string),\n      requiredArrayOf('cells', arrOf(string))\n    ];\n    const tableSchema = objOf(tableFields);\n\n    const textAreaFields = formComponentWithLabelFields.concat([\n      optionString('placeholder'),\n      defaultedBoolean('maximized', false),\n      enabled\n    ]);\n    const textAreaSchema = objOf(textAreaFields);\n    const textAreaDataProcessor = string;\n\n    const baseTreeItemFields = [\n      requiredStringEnum('type', [\n        'directory',\n        'leaf'\n      ]),\n      title,\n      requiredString('id'),\n      optionOf('menu', MenuButtonSchema)\n    ];\n    const treeItemLeafFields = baseTreeItemFields;\n    const treeItemLeafSchema = objOf(treeItemLeafFields);\n    const treeItemDirectoryFields = baseTreeItemFields.concat([requiredArrayOf('children', thunkOf('children', () => {\n        return choose$2('type', {\n          directory: treeItemDirectorySchema,\n          leaf: treeItemLeafSchema\n        });\n      }))]);\n    const treeItemDirectorySchema = objOf(treeItemDirectoryFields);\n    const treeItemSchema = choose$2('type', {\n      directory: treeItemDirectorySchema,\n      leaf: treeItemLeafSchema\n    });\n    const treeFields = [\n      type,\n      requiredArrayOf('items', treeItemSchema),\n      optionFunction('onLeafAction'),\n      optionFunction('onToggleExpand'),\n      defaultedArrayOf('defaultExpandedIds', [], string),\n      optionString('defaultSelectedId')\n    ];\n    const treeSchema = objOf(treeFields);\n\n    const urlInputFields = formComponentWithLabelFields.concat([\n      defaultedStringEnum('filetype', 'file', [\n        'image',\n        'media',\n        'file'\n      ]),\n      enabled,\n      optionString('picker_text')\n    ]);\n    const urlInputSchema = objOf(urlInputFields);\n    const urlInputDataProcessor = objOf([\n      value$1,\n      defaultedMeta\n    ]);\n\n    const createItemsField = name => field$1('items', 'items', required$2(), arrOf(valueOf(v => asRaw(`Checking item of ${ name }`, itemSchema, v).fold(sErr => Result.error(formatError(sErr)), passValue => Result.value(passValue)))));\n    const itemSchema = valueThunk(() => choose$2('type', {\n      alertbanner: alertBannerSchema,\n      bar: objOf(createBarFields(createItemsField('bar'))),\n      button: buttonSchema,\n      checkbox: checkboxSchema,\n      colorinput: colorInputSchema,\n      colorpicker: colorPickerSchema,\n      dropzone: dropZoneSchema,\n      grid: objOf(createGridFields(createItemsField('grid'))),\n      iframe: iframeSchema,\n      input: inputSchema,\n      listbox: listBoxSchema,\n      selectbox: selectBoxSchema,\n      sizeinput: sizeInputSchema,\n      slider: sliderSchema,\n      textarea: textAreaSchema,\n      urlinput: urlInputSchema,\n      customeditor: customEditorSchema,\n      htmlpanel: htmlPanelSchema,\n      imagepreview: imagePreviewSchema,\n      collection: collectionSchema,\n      label: objOf(createLabelFields(createItemsField('label'))),\n      table: tableSchema,\n      tree: treeSchema,\n      panel: panelSchema\n    }));\n    const panelFields = [\n      type,\n      defaulted('classes', []),\n      requiredArrayOf('items', itemSchema)\n    ];\n    const panelSchema = objOf(panelFields);\n\n    const tabFields = [\n      generatedName('tab'),\n      title,\n      requiredArrayOf('items', itemSchema)\n    ];\n    const tabPanelFields = [\n      type,\n      requiredArrayOfObj('tabs', tabFields)\n    ];\n    const tabPanelSchema = objOf(tabPanelFields);\n\n    const dialogButtonFields = dialogFooterButtonFields;\n    const dialogButtonSchema = dialogFooterButtonSchema;\n    const dialogSchema = objOf([\n      requiredString('title'),\n      requiredOf('body', choose$2('type', {\n        panel: panelSchema,\n        tabpanel: tabPanelSchema\n      })),\n      defaultedString('size', 'normal'),\n      defaultedArrayOf('buttons', [], dialogButtonSchema),\n      defaulted('initialData', {}),\n      defaultedFunction('onAction', noop),\n      defaultedFunction('onChange', noop),\n      defaultedFunction('onSubmit', noop),\n      defaultedFunction('onClose', noop),\n      defaultedFunction('onCancel', noop),\n      defaultedFunction('onTabChange', noop)\n    ]);\n    const createDialog = spec => asRaw('dialog', dialogSchema, spec);\n\n    const urlDialogButtonSchema = objOf([\n      requiredStringEnum('type', [\n        'cancel',\n        'custom'\n      ]),\n      ...dialogButtonFields\n    ]);\n    const urlDialogSchema = objOf([\n      requiredString('title'),\n      requiredString('url'),\n      optionNumber('height'),\n      optionNumber('width'),\n      optionArrayOf('buttons', urlDialogButtonSchema),\n      defaultedFunction('onAction', noop),\n      defaultedFunction('onCancel', noop),\n      defaultedFunction('onClose', noop),\n      defaultedFunction('onMessage', noop)\n    ]);\n    const createUrlDialog = spec => asRaw('dialog', urlDialogSchema, spec);\n\n    const getAllObjects = obj => {\n      if (isObject(obj)) {\n        return [obj].concat(bind$3(values(obj), getAllObjects));\n      } else if (isArray(obj)) {\n        return bind$3(obj, getAllObjects);\n      } else {\n        return [];\n      }\n    };\n\n    const isNamedItem = obj => isString(obj.type) && isString(obj.name);\n    const dataProcessors = {\n      checkbox: checkboxDataProcessor,\n      colorinput: colorInputDataProcessor,\n      colorpicker: colorPickerDataProcessor,\n      dropzone: dropZoneDataProcessor,\n      input: inputDataProcessor,\n      iframe: iframeDataProcessor,\n      imagepreview: imagePreviewDataProcessor,\n      selectbox: selectBoxDataProcessor,\n      sizeinput: sizeInputDataProcessor,\n      slider: sliderInputDataProcessor,\n      listbox: listBoxDataProcessor,\n      size: sizeInputDataProcessor,\n      textarea: textAreaDataProcessor,\n      urlinput: urlInputDataProcessor,\n      customeditor: customEditorDataProcessor,\n      collection: collectionDataProcessor,\n      togglemenuitem: dialogToggleMenuItemDataProcessor\n    };\n    const getDataProcessor = item => Optional.from(dataProcessors[item.type]);\n    const getNamedItems = structure => filter$2(getAllObjects(structure), isNamedItem);\n\n    const createDataValidator = structure => {\n      const namedItems = getNamedItems(structure);\n      const fields = bind$3(namedItems, item => getDataProcessor(item).fold(() => [], schema => [requiredOf(item.name, schema)]));\n      return objOf(fields);\n    };\n\n    const extract = structure => {\n      var _a;\n      const internalDialog = getOrDie(createDialog(structure));\n      const dataValidator = createDataValidator(structure);\n      const initialData = (_a = structure.initialData) !== null && _a !== void 0 ? _a : {};\n      return {\n        internalDialog,\n        dataValidator,\n        initialData\n      };\n    };\n    const DialogManager = {\n      open: (factory, structure) => {\n        const extraction = extract(structure);\n        return factory(extraction.internalDialog, extraction.initialData, extraction.dataValidator);\n      },\n      openUrl: (factory, structure) => {\n        const internalDialog = getOrDie(createUrlDialog(structure));\n        return factory(internalDialog);\n      },\n      redial: structure => extract(structure)\n    };\n\n    const events = (reflectingConfig, reflectingState) => {\n      const update = (component, data) => {\n        reflectingConfig.updateState.each(updateState => {\n          const newState = updateState(component, data);\n          reflectingState.set(newState);\n        });\n        reflectingConfig.renderComponents.each(renderComponents => {\n          const newComponents = renderComponents(data, reflectingState.get());\n          const replacer = reflectingConfig.reuseDom ? withReuse : withoutReuse;\n          replacer(component, newComponents);\n        });\n      };\n      return derive$2([\n        run$1(receive(), (component, message) => {\n          const receivingData = message;\n          if (!receivingData.universal) {\n            const channel = reflectingConfig.channel;\n            if (contains$2(receivingData.channels, channel)) {\n              update(component, receivingData.data);\n            }\n          }\n        }),\n        runOnAttached((comp, _se) => {\n          reflectingConfig.initialData.each(rawData => {\n            update(comp, rawData);\n          });\n        })\n      ]);\n    };\n\n    var ActiveReflecting = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        events: events\n    });\n\n    const getState = (component, replaceConfig, reflectState) => reflectState;\n\n    var ReflectingApis = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        getState: getState\n    });\n\n    var ReflectingSchema = [\n      required$1('channel'),\n      option$3('renderComponents'),\n      option$3('updateState'),\n      option$3('initialData'),\n      defaultedBoolean('reuseDom', true)\n    ];\n\n    const init = () => {\n      const cell = Cell(Optional.none());\n      const clear = () => cell.set(Optional.none());\n      const readState = () => cell.get().getOr('none');\n      return {\n        readState,\n        get: cell.get,\n        set: cell.set,\n        clear\n      };\n    };\n\n    var ReflectingState = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        init: init\n    });\n\n    const Reflecting = create$4({\n      fields: ReflectingSchema,\n      name: 'reflecting',\n      active: ActiveReflecting,\n      apis: ReflectingApis,\n      state: ReflectingState\n    });\n\n    const toValidValues = values => {\n      const errors = [];\n      const result = {};\n      each(values, (value, name) => {\n        value.fold(() => {\n          errors.push(name);\n        }, v => {\n          result[name] = v;\n        });\n      });\n      return errors.length > 0 ? Result.error(errors) : Result.value(result);\n    };\n\n    const renderBodyPanel = (spec, dialogData, backstage) => {\n      const memForm = record(Form.sketch(parts => ({\n        dom: {\n          tag: 'div',\n          classes: ['tox-form'].concat(spec.classes)\n        },\n        components: map$2(spec.items, item => interpretInForm(parts, item, dialogData, backstage))\n      })));\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-dialog__body']\n        },\n        components: [{\n            dom: {\n              tag: 'div',\n              classes: ['tox-dialog__body-content']\n            },\n            components: [memForm.asSpec()]\n          }],\n        behaviours: derive$1([\n          Keying.config({\n            mode: 'acyclic',\n            useTabstopAt: not(isPseudoStop)\n          }),\n          ComposingConfigs.memento(memForm),\n          memento(memForm, {\n            postprocess: formValue => toValidValues(formValue).fold(err => {\n              console.error(err);\n              return {};\n            }, identity)\n          }),\n          config('dialog-body-panel', [run$1(focusin(), (comp, se) => {\n              comp.getSystem().broadcastOn([dialogFocusShiftedChannel], { newFocus: Optional.some(se.event.target) });\n            })])\n        ])\n      };\n    };\n\n    const factory$3 = (detail, _spec) => ({\n      uid: detail.uid,\n      dom: detail.dom,\n      components: detail.components,\n      events: events$a(detail.action),\n      behaviours: augment(detail.tabButtonBehaviours, [\n        Focusing.config({}),\n        Keying.config({\n          mode: 'execution',\n          useSpace: true,\n          useEnter: true\n        }),\n        Representing.config({\n          store: {\n            mode: 'memory',\n            initialValue: detail.value\n          }\n        })\n      ]),\n      domModification: detail.domModification\n    });\n    const TabButton = single({\n      name: 'TabButton',\n      configFields: [\n        defaulted('uid', undefined),\n        required$1('value'),\n        field$1('dom', 'dom', mergeWithThunk(() => ({\n          attributes: {\n            'role': 'tab',\n            'id': generate$6('aria'),\n            'aria-selected': 'false'\n          }\n        })), anyValue()),\n        option$3('action'),\n        defaulted('domModification', {}),\n        field('tabButtonBehaviours', [\n          Focusing,\n          Keying,\n          Representing\n        ]),\n        required$1('view')\n      ],\n      factory: factory$3\n    });\n\n    const schema$1 = constant$1([\n      required$1('tabs'),\n      required$1('dom'),\n      defaulted('clickToDismiss', false),\n      field('tabbarBehaviours', [\n        Highlighting,\n        Keying\n      ]),\n      markers$1([\n        'tabClass',\n        'selectedClass'\n      ])\n    ]);\n    const tabsPart = group({\n      factory: TabButton,\n      name: 'tabs',\n      unit: 'tab',\n      overrides: barDetail => {\n        const dismissTab$1 = (tabbar, button) => {\n          Highlighting.dehighlight(tabbar, button);\n          emitWith(tabbar, dismissTab(), {\n            tabbar,\n            button\n          });\n        };\n        const changeTab$1 = (tabbar, button) => {\n          Highlighting.highlight(tabbar, button);\n          emitWith(tabbar, changeTab(), {\n            tabbar,\n            button\n          });\n        };\n        return {\n          action: button => {\n            const tabbar = button.getSystem().getByUid(barDetail.uid).getOrDie();\n            const activeButton = Highlighting.isHighlighted(tabbar, button);\n            const response = (() => {\n              if (activeButton && barDetail.clickToDismiss) {\n                return dismissTab$1;\n              } else if (!activeButton) {\n                return changeTab$1;\n              } else {\n                return noop;\n              }\n            })();\n            response(tabbar, button);\n          },\n          domModification: { classes: [barDetail.markers.tabClass] }\n        };\n      }\n    });\n    const parts$1 = constant$1([tabsPart]);\n\n    const factory$2 = (detail, components, _spec, _externals) => ({\n      'uid': detail.uid,\n      'dom': detail.dom,\n      components,\n      'debug.sketcher': 'Tabbar',\n      'domModification': { attributes: { role: 'tablist' } },\n      'behaviours': augment(detail.tabbarBehaviours, [\n        Highlighting.config({\n          highlightClass: detail.markers.selectedClass,\n          itemClass: detail.markers.tabClass,\n          onHighlight: (tabbar, tab) => {\n            set$9(tab.element, 'aria-selected', 'true');\n          },\n          onDehighlight: (tabbar, tab) => {\n            set$9(tab.element, 'aria-selected', 'false');\n          }\n        }),\n        Keying.config({\n          mode: 'flow',\n          getInitial: tabbar => {\n            return Highlighting.getHighlighted(tabbar).map(tab => tab.element);\n          },\n          selector: '.' + detail.markers.tabClass,\n          executeOnMove: true\n        })\n      ])\n    });\n    const Tabbar = composite({\n      name: 'Tabbar',\n      configFields: schema$1(),\n      partFields: parts$1(),\n      factory: factory$2\n    });\n\n    const factory$1 = (detail, _spec) => ({\n      uid: detail.uid,\n      dom: detail.dom,\n      behaviours: augment(detail.tabviewBehaviours, [Replacing.config({})]),\n      domModification: { attributes: { role: 'tabpanel' } }\n    });\n    const Tabview = single({\n      name: 'Tabview',\n      configFields: [field('tabviewBehaviours', [Replacing])],\n      factory: factory$1\n    });\n\n    const schema = constant$1([\n      defaulted('selectFirst', true),\n      onHandler('onChangeTab'),\n      onHandler('onDismissTab'),\n      defaulted('tabs', []),\n      field('tabSectionBehaviours', [])\n    ]);\n    const barPart = required({\n      factory: Tabbar,\n      schema: [\n        required$1('dom'),\n        requiredObjOf('markers', [\n          required$1('tabClass'),\n          required$1('selectedClass')\n        ])\n      ],\n      name: 'tabbar',\n      defaults: detail => {\n        return { tabs: detail.tabs };\n      }\n    });\n    const viewPart = required({\n      factory: Tabview,\n      name: 'tabview'\n    });\n    const parts = constant$1([\n      barPart,\n      viewPart\n    ]);\n\n    const factory = (detail, components, _spec, _externals) => {\n      const changeTab$1 = button => {\n        const tabValue = Representing.getValue(button);\n        getPart(button, detail, 'tabview').each(tabview => {\n          const tabWithValue = find$5(detail.tabs, t => t.value === tabValue);\n          tabWithValue.each(tabData => {\n            const panel = tabData.view();\n            getOpt(button.element, 'id').each(id => {\n              set$9(tabview.element, 'aria-labelledby', id);\n            });\n            Replacing.set(tabview, panel);\n            detail.onChangeTab(tabview, button, panel);\n          });\n        });\n      };\n      const changeTabBy = (section, byPred) => {\n        getPart(section, detail, 'tabbar').each(tabbar => {\n          byPred(tabbar).each(emitExecute);\n        });\n      };\n      return {\n        uid: detail.uid,\n        dom: detail.dom,\n        components,\n        behaviours: get$3(detail.tabSectionBehaviours),\n        events: derive$2(flatten([\n          detail.selectFirst ? [runOnAttached((section, _simulatedEvent) => {\n              changeTabBy(section, Highlighting.getFirst);\n            })] : [],\n          [\n            run$1(changeTab(), (section, simulatedEvent) => {\n              const button = simulatedEvent.event.button;\n              changeTab$1(button);\n            }),\n            run$1(dismissTab(), (section, simulatedEvent) => {\n              const button = simulatedEvent.event.button;\n              detail.onDismissTab(section, button);\n            })\n          ]\n        ])),\n        apis: {\n          getViewItems: section => {\n            return getPart(section, detail, 'tabview').map(tabview => Replacing.contents(tabview)).getOr([]);\n          },\n          showTab: (section, tabKey) => {\n            const getTabIfNotActive = tabbar => {\n              const candidates = Highlighting.getCandidates(tabbar);\n              const optTab = find$5(candidates, c => Representing.getValue(c) === tabKey);\n              return optTab.filter(tab => !Highlighting.isHighlighted(tabbar, tab));\n            };\n            changeTabBy(section, getTabIfNotActive);\n          }\n        }\n      };\n    };\n    const TabSection = composite({\n      name: 'TabSection',\n      configFields: schema(),\n      partFields: parts(),\n      factory,\n      apis: {\n        getViewItems: (apis, component) => apis.getViewItems(component),\n        showTab: (apis, component, tabKey) => {\n          apis.showTab(component, tabKey);\n        }\n      }\n    });\n\n    const measureHeights = (allTabs, tabview, tabviewComp) => map$2(allTabs, (_tab, i) => {\n      Replacing.set(tabviewComp, allTabs[i].view());\n      const rect = tabview.dom.getBoundingClientRect();\n      Replacing.set(tabviewComp, []);\n      return rect.height;\n    });\n    const getMaxHeight = heights => head(sort(heights, (a, b) => {\n      if (a > b) {\n        return -1;\n      } else if (a < b) {\n        return +1;\n      } else {\n        return 0;\n      }\n    }));\n    const getMaxTabviewHeight = (dialog, tabview, tablist) => {\n      const documentElement$1 = documentElement(dialog).dom;\n      const rootElm = ancestor(dialog, '.tox-dialog-wrap').getOr(dialog);\n      const isFixed = get$e(rootElm, 'position') === 'fixed';\n      let maxHeight;\n      if (isFixed) {\n        maxHeight = Math.max(documentElement$1.clientHeight, window.innerHeight);\n      } else {\n        maxHeight = Math.max(documentElement$1.offsetHeight, documentElement$1.scrollHeight);\n      }\n      const tabviewHeight = get$d(tabview);\n      const isTabListBeside = tabview.dom.offsetLeft >= tablist.dom.offsetLeft + get$c(tablist);\n      const currentTabHeight = isTabListBeside ? Math.max(get$d(tablist), tabviewHeight) : tabviewHeight;\n      const dialogTopMargin = parseInt(get$e(dialog, 'margin-top'), 10) || 0;\n      const dialogBottomMargin = parseInt(get$e(dialog, 'margin-bottom'), 10) || 0;\n      const dialogHeight = get$d(dialog) + dialogTopMargin + dialogBottomMargin;\n      const chromeHeight = dialogHeight - currentTabHeight;\n      return maxHeight - chromeHeight;\n    };\n    const showTab = (allTabs, comp) => {\n      head(allTabs).each(tab => TabSection.showTab(comp, tab.value));\n    };\n    const setTabviewHeight = (tabview, height) => {\n      set$8(tabview, 'height', height + 'px');\n      set$8(tabview, 'flex-basis', height + 'px');\n    };\n    const updateTabviewHeight = (dialogBody, tabview, maxTabHeight) => {\n      ancestor(dialogBody, '[role=\"dialog\"]').each(dialog => {\n        descendant(dialog, '[role=\"tablist\"]').each(tablist => {\n          maxTabHeight.get().map(height => {\n            set$8(tabview, 'height', '0');\n            set$8(tabview, 'flex-basis', '0');\n            return Math.min(height, getMaxTabviewHeight(dialog, tabview, tablist));\n          }).each(height => {\n            setTabviewHeight(tabview, height);\n          });\n        });\n      });\n    };\n    const getTabview = dialog => descendant(dialog, '[role=\"tabpanel\"]');\n    const smartMode = allTabs => {\n      const maxTabHeight = value$2();\n      const extraEvents = [\n        runOnAttached(comp => {\n          const dialog = comp.element;\n          getTabview(dialog).each(tabview => {\n            set$8(tabview, 'visibility', 'hidden');\n            comp.getSystem().getByDom(tabview).toOptional().each(tabviewComp => {\n              const heights = measureHeights(allTabs, tabview, tabviewComp);\n              const maxTabHeightOpt = getMaxHeight(heights);\n              maxTabHeightOpt.fold(maxTabHeight.clear, maxTabHeight.set);\n            });\n            updateTabviewHeight(dialog, tabview, maxTabHeight);\n            remove$6(tabview, 'visibility');\n            showTab(allTabs, comp);\n            requestAnimationFrame(() => {\n              updateTabviewHeight(dialog, tabview, maxTabHeight);\n            });\n          });\n        }),\n        run$1(windowResize(), comp => {\n          const dialog = comp.element;\n          getTabview(dialog).each(tabview => {\n            updateTabviewHeight(dialog, tabview, maxTabHeight);\n          });\n        }),\n        run$1(formResizeEvent, (comp, _se) => {\n          const dialog = comp.element;\n          getTabview(dialog).each(tabview => {\n            const oldFocus = active$1(getRootNode(tabview));\n            set$8(tabview, 'visibility', 'hidden');\n            const oldHeight = getRaw(tabview, 'height').map(h => parseInt(h, 10));\n            remove$6(tabview, 'height');\n            remove$6(tabview, 'flex-basis');\n            const newHeight = tabview.dom.getBoundingClientRect().height;\n            const hasGrown = oldHeight.forall(h => newHeight > h);\n            if (hasGrown) {\n              maxTabHeight.set(newHeight);\n              updateTabviewHeight(dialog, tabview, maxTabHeight);\n            } else {\n              oldHeight.each(h => {\n                setTabviewHeight(tabview, h);\n              });\n            }\n            remove$6(tabview, 'visibility');\n            oldFocus.each(focus$3);\n          });\n        })\n      ];\n      const selectFirst = false;\n      return {\n        extraEvents,\n        selectFirst\n      };\n    };\n\n    const SendDataToSectionChannel = 'send-data-to-section';\n    const SendDataToViewChannel = 'send-data-to-view';\n    const renderTabPanel = (spec, dialogData, backstage) => {\n      const storedValue = Cell({});\n      const updateDataWithForm = form => {\n        const formData = Representing.getValue(form);\n        const validData = toValidValues(formData).getOr({});\n        const currentData = storedValue.get();\n        const newData = deepMerge(currentData, validData);\n        storedValue.set(newData);\n      };\n      const setDataOnForm = form => {\n        const tabData = storedValue.get();\n        Representing.setValue(form, tabData);\n      };\n      const oldTab = Cell(null);\n      const allTabs = map$2(spec.tabs, tab => {\n        return {\n          value: tab.name,\n          dom: {\n            tag: 'div',\n            classes: ['tox-dialog__body-nav-item']\n          },\n          components: [text$2(backstage.shared.providers.translate(tab.title))],\n          view: () => {\n            return [Form.sketch(parts => ({\n                dom: {\n                  tag: 'div',\n                  classes: ['tox-form']\n                },\n                components: map$2(tab.items, item => interpretInForm(parts, item, dialogData, backstage)),\n                formBehaviours: derive$1([\n                  Keying.config({\n                    mode: 'acyclic',\n                    useTabstopAt: not(isPseudoStop)\n                  }),\n                  config('TabView.form.events', [\n                    runOnAttached(setDataOnForm),\n                    runOnDetached(updateDataWithForm)\n                  ]),\n                  Receiving.config({\n                    channels: wrapAll([\n                      {\n                        key: SendDataToSectionChannel,\n                        value: { onReceive: updateDataWithForm }\n                      },\n                      {\n                        key: SendDataToViewChannel,\n                        value: { onReceive: setDataOnForm }\n                      }\n                    ])\n                  })\n                ])\n              }))];\n          }\n        };\n      });\n      const tabMode = smartMode(allTabs);\n      return TabSection.sketch({\n        dom: {\n          tag: 'div',\n          classes: ['tox-dialog__body']\n        },\n        onChangeTab: (section, button, _viewItems) => {\n          const name = Representing.getValue(button);\n          emitWith(section, formTabChangeEvent, {\n            name,\n            oldName: oldTab.get()\n          });\n          oldTab.set(name);\n        },\n        tabs: allTabs,\n        components: [\n          TabSection.parts.tabbar({\n            dom: {\n              tag: 'div',\n              classes: ['tox-dialog__body-nav']\n            },\n            components: [Tabbar.parts.tabs({})],\n            markers: {\n              tabClass: 'tox-tab',\n              selectedClass: 'tox-dialog__body-nav-item--active'\n            },\n            tabbarBehaviours: derive$1([Tabstopping.config({})])\n          }),\n          TabSection.parts.tabview({\n            dom: {\n              tag: 'div',\n              classes: ['tox-dialog__body-content']\n            }\n          })\n        ],\n        selectFirst: tabMode.selectFirst,\n        tabSectionBehaviours: derive$1([\n          config('tabpanel', tabMode.extraEvents),\n          Keying.config({ mode: 'acyclic' }),\n          Composing.config({ find: comp => head(TabSection.getViewItems(comp)) }),\n          withComp(Optional.none(), tsection => {\n            tsection.getSystem().broadcastOn([SendDataToSectionChannel], {});\n            return storedValue.get();\n          }, (tsection, value) => {\n            storedValue.set(value);\n            tsection.getSystem().broadcastOn([SendDataToViewChannel], {});\n          })\n        ])\n      });\n    };\n\n    const renderBody = (spec, dialogId, contentId, backstage, ariaAttrs) => {\n      const renderComponents = incoming => {\n        const body = incoming.body;\n        switch (body.type) {\n        case 'tabpanel': {\n            return [renderTabPanel(body, incoming.initialData, backstage)];\n          }\n        default: {\n            return [renderBodyPanel(body, incoming.initialData, backstage)];\n          }\n        }\n      };\n      const updateState = (_comp, incoming) => Optional.some({ isTabPanel: () => incoming.body.type === 'tabpanel' });\n      const ariaAttributes = { 'aria-live': 'polite' };\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-dialog__content-js'],\n          attributes: {\n            ...contentId.map(x => ({ id: x })).getOr({}),\n            ...ariaAttrs ? ariaAttributes : {}\n          }\n        },\n        components: [],\n        behaviours: derive$1([\n          ComposingConfigs.childAt(0),\n          Reflecting.config({\n            channel: `${ bodyChannel }-${ dialogId }`,\n            updateState,\n            renderComponents,\n            initialData: spec\n          })\n        ])\n      };\n    };\n    const renderInlineBody = (spec, dialogId, contentId, backstage, ariaAttrs) => renderBody(spec, dialogId, Optional.some(contentId), backstage, ariaAttrs);\n    const renderModalBody = (spec, dialogId, backstage) => {\n      const bodySpec = renderBody(spec, dialogId, Optional.none(), backstage, false);\n      return ModalDialog.parts.body(bodySpec);\n    };\n    const renderIframeBody = spec => {\n      const bodySpec = {\n        dom: {\n          tag: 'div',\n          classes: ['tox-dialog__content-js']\n        },\n        components: [{\n            dom: {\n              tag: 'div',\n              classes: ['tox-dialog__body-iframe']\n            },\n            components: [craft(Optional.none(), {\n                dom: {\n                  tag: 'iframe',\n                  attributes: { src: spec.url }\n                },\n                behaviours: derive$1([\n                  Tabstopping.config({}),\n                  Focusing.config({})\n                ])\n              })]\n          }],\n        behaviours: derive$1([Keying.config({\n            mode: 'acyclic',\n            useTabstopAt: not(isPseudoStop)\n          })])\n      };\n      return ModalDialog.parts.body(bodySpec);\n    };\n\n    const isTouch = global$5.deviceType.isTouch();\n    const hiddenHeader = (title, close) => ({\n      dom: {\n        tag: 'div',\n        styles: { display: 'none' },\n        classes: ['tox-dialog__header']\n      },\n      components: [\n        title,\n        close\n      ]\n    });\n    const pClose = (onClose, providersBackstage) => ModalDialog.parts.close(Button.sketch({\n      dom: {\n        tag: 'button',\n        classes: [\n          'tox-button',\n          'tox-button--icon',\n          'tox-button--naked'\n        ],\n        attributes: {\n          'type': 'button',\n          'aria-label': providersBackstage.translate('Close')\n        }\n      },\n      action: onClose,\n      buttonBehaviours: derive$1([Tabstopping.config({})])\n    }));\n    const pUntitled = () => ModalDialog.parts.title({\n      dom: {\n        tag: 'div',\n        classes: ['tox-dialog__title'],\n        innerHtml: '',\n        styles: { display: 'none' }\n      }\n    });\n    const pBodyMessage = (message, providersBackstage) => ModalDialog.parts.body({\n      dom: {\n        tag: 'div',\n        classes: ['tox-dialog__body']\n      },\n      components: [{\n          dom: {\n            tag: 'div',\n            classes: ['tox-dialog__body-content']\n          },\n          components: [{ dom: fromHtml(`<p>${ sanitizeHtmlString(providersBackstage.translate(message)) }</p>`) }]\n        }]\n    });\n    const pFooter = buttons => ModalDialog.parts.footer({\n      dom: {\n        tag: 'div',\n        classes: ['tox-dialog__footer']\n      },\n      components: buttons\n    });\n    const pFooterGroup = (startButtons, endButtons) => [\n      Container.sketch({\n        dom: {\n          tag: 'div',\n          classes: ['tox-dialog__footer-start']\n        },\n        components: startButtons\n      }),\n      Container.sketch({\n        dom: {\n          tag: 'div',\n          classes: ['tox-dialog__footer-end']\n        },\n        components: endButtons\n      })\n    ];\n    const renderDialog$1 = spec => {\n      const dialogClass = 'tox-dialog';\n      const blockerClass = dialogClass + '-wrap';\n      const blockerBackdropClass = blockerClass + '__backdrop';\n      const scrollLockClass = dialogClass + '__disable-scroll';\n      return ModalDialog.sketch({\n        lazySink: spec.lazySink,\n        onEscape: comp => {\n          spec.onEscape(comp);\n          return Optional.some(true);\n        },\n        useTabstopAt: elem => !isPseudoStop(elem),\n        firstTabstop: spec.firstTabstop,\n        dom: {\n          tag: 'div',\n          classes: [dialogClass].concat(spec.extraClasses),\n          styles: {\n            position: 'relative',\n            ...spec.extraStyles\n          }\n        },\n        components: [\n          spec.header,\n          spec.body,\n          ...spec.footer.toArray()\n        ],\n        parts: {\n          blocker: {\n            dom: fromHtml(`<div class=\"${ blockerClass }\"></div>`),\n            components: [{\n                dom: {\n                  tag: 'div',\n                  classes: isTouch ? [\n                    blockerBackdropClass,\n                    blockerBackdropClass + '--opaque'\n                  ] : [blockerBackdropClass]\n                }\n              }]\n          }\n        },\n        dragBlockClass: blockerClass,\n        modalBehaviours: derive$1([\n          Focusing.config({}),\n          config('dialog-events', spec.dialogEvents.concat([\n            runOnSource(focusin(), (comp, _se) => {\n              Blocking.isBlocked(comp) ? noop() : Keying.focusIn(comp);\n            }),\n            run$1(focusShifted(), (comp, se) => {\n              comp.getSystem().broadcastOn([dialogFocusShiftedChannel], { newFocus: se.event.newFocus });\n            })\n          ])),\n          config('scroll-lock', [\n            runOnAttached(() => {\n              add$2(body(), scrollLockClass);\n            }),\n            runOnDetached(() => {\n              remove$2(body(), scrollLockClass);\n            })\n          ]),\n          ...spec.extraBehaviours\n        ]),\n        eventOrder: {\n          [execute$5()]: ['dialog-events'],\n          [attachedToDom()]: [\n            'scroll-lock',\n            'dialog-events',\n            'alloy.base.behaviour'\n          ],\n          [detachedFromDom()]: [\n            'alloy.base.behaviour',\n            'dialog-events',\n            'scroll-lock'\n          ],\n          ...spec.eventOrder\n        }\n      });\n    };\n\n    const renderClose = providersBackstage => Button.sketch({\n      dom: {\n        tag: 'button',\n        classes: [\n          'tox-button',\n          'tox-button--icon',\n          'tox-button--naked'\n        ],\n        attributes: {\n          'type': 'button',\n          'aria-label': providersBackstage.translate('Close'),\n          'title': providersBackstage.translate('Close')\n        }\n      },\n      buttonBehaviours: derive$1([Tabstopping.config({})]),\n      components: [render$3('close', {\n          tag: 'span',\n          classes: ['tox-icon']\n        }, providersBackstage.icons)],\n      action: comp => {\n        emit(comp, formCancelEvent);\n      }\n    });\n    const renderTitle = (spec, dialogId, titleId, providersBackstage) => {\n      const renderComponents = data => [text$2(providersBackstage.translate(data.title))];\n      return {\n        dom: {\n          tag: 'div',\n          classes: ['tox-dialog__title'],\n          attributes: { ...titleId.map(x => ({ id: x })).getOr({}) }\n        },\n        components: [],\n        behaviours: derive$1([Reflecting.config({\n            channel: `${ titleChannel }-${ dialogId }`,\n            initialData: spec,\n            renderComponents\n          })])\n      };\n    };\n    const renderDragHandle = () => ({ dom: fromHtml('<div class=\"tox-dialog__draghandle\"></div>') });\n    const renderInlineHeader = (spec, dialogId, titleId, providersBackstage) => Container.sketch({\n      dom: fromHtml('<div class=\"tox-dialog__header\"></div>'),\n      components: [\n        renderTitle(spec, dialogId, Optional.some(titleId), providersBackstage),\n        renderDragHandle(),\n        renderClose(providersBackstage)\n      ],\n      containerBehaviours: derive$1([Dragging.config({\n          mode: 'mouse',\n          blockerClass: 'blocker',\n          getTarget: handle => {\n            return closest$1(handle, '[role=\"dialog\"]').getOrDie();\n          },\n          snaps: {\n            getSnapPoints: () => [],\n            leftAttr: 'data-drag-left',\n            topAttr: 'data-drag-top'\n          }\n        })])\n    });\n    const renderModalHeader = (spec, dialogId, providersBackstage) => {\n      const pTitle = ModalDialog.parts.title(renderTitle(spec, dialogId, Optional.none(), providersBackstage));\n      const pHandle = ModalDialog.parts.draghandle(renderDragHandle());\n      const pClose = ModalDialog.parts.close(renderClose(providersBackstage));\n      const components = [pTitle].concat(spec.draggable ? [pHandle] : []).concat([pClose]);\n      return Container.sketch({\n        dom: fromHtml('<div class=\"tox-dialog__header\"></div>'),\n        components\n      });\n    };\n\n    const getHeader = (title, dialogId, backstage) => renderModalHeader({\n      title: backstage.shared.providers.translate(title),\n      draggable: backstage.dialog.isDraggableModal()\n    }, dialogId, backstage.shared.providers);\n    const getBusySpec = (message, bs, providers, headerHeight) => ({\n      dom: {\n        tag: 'div',\n        classes: ['tox-dialog__busy-spinner'],\n        attributes: { 'aria-label': providers.translate(message) },\n        styles: {\n          left: '0px',\n          right: '0px',\n          bottom: '0px',\n          top: `${ headerHeight.getOr(0) }px`,\n          position: 'absolute'\n        }\n      },\n      behaviours: bs,\n      components: [{ dom: fromHtml('<div class=\"tox-spinner\"><div></div><div></div><div></div></div>') }]\n    });\n    const getEventExtras = (lazyDialog, providers, extra) => ({\n      onClose: () => extra.closeWindow(),\n      onBlock: blockEvent => {\n        const headerHeight = descendant(lazyDialog().element, '.tox-dialog__header').map(header => get$d(header));\n        ModalDialog.setBusy(lazyDialog(), (_comp, bs) => getBusySpec(blockEvent.message, bs, providers, headerHeight));\n      },\n      onUnblock: () => {\n        ModalDialog.setIdle(lazyDialog());\n      }\n    });\n    const fullscreenClass = 'tox-dialog--fullscreen';\n    const largeDialogClass = 'tox-dialog--width-lg';\n    const mediumDialogClass = 'tox-dialog--width-md';\n    const getDialogSizeClass = size => {\n      switch (size) {\n      case 'large':\n        return Optional.some(largeDialogClass);\n      case 'medium':\n        return Optional.some(mediumDialogClass);\n      default:\n        return Optional.none();\n      }\n    };\n    const updateDialogSizeClass = (size, component) => {\n      const dialogBody = SugarElement.fromDom(component.element.dom);\n      if (!has(dialogBody, fullscreenClass)) {\n        remove$1(dialogBody, [\n          largeDialogClass,\n          mediumDialogClass\n        ]);\n        getDialogSizeClass(size).each(dialogSizeClass => add$2(dialogBody, dialogSizeClass));\n      }\n    };\n    const toggleFullscreen = (comp, currentSize) => {\n      const dialogBody = SugarElement.fromDom(comp.element.dom);\n      const classes = get$7(dialogBody);\n      const currentSizeClass = find$5(classes, c => c === largeDialogClass || c === mediumDialogClass).or(getDialogSizeClass(currentSize));\n      toggle$3(dialogBody, [\n        fullscreenClass,\n        ...currentSizeClass.toArray()\n      ]);\n    };\n    const renderModalDialog = (spec, dialogEvents, backstage) => build$1(renderDialog$1({\n      ...spec,\n      firstTabstop: 1,\n      lazySink: backstage.shared.getSink,\n      extraBehaviours: [\n        memory({}),\n        ...spec.extraBehaviours\n      ],\n      onEscape: comp => {\n        emit(comp, formCancelEvent);\n      },\n      dialogEvents,\n      eventOrder: {\n        [receive()]: [\n          Reflecting.name(),\n          Receiving.name()\n        ],\n        [attachedToDom()]: [\n          'scroll-lock',\n          Reflecting.name(),\n          'messages',\n          'dialog-events',\n          'alloy.base.behaviour'\n        ],\n        [detachedFromDom()]: [\n          'alloy.base.behaviour',\n          'dialog-events',\n          'messages',\n          Reflecting.name(),\n          'scroll-lock'\n        ]\n      }\n    }));\n    const mapMenuButtons = (buttons, menuItemStates = {}) => {\n      const mapItems = button => {\n        const items = map$2(button.items, item => {\n          const cell = get$g(menuItemStates, item.name).getOr(Cell(false));\n          return {\n            ...item,\n            storage: cell\n          };\n        });\n        return {\n          ...button,\n          items\n        };\n      };\n      return map$2(buttons, button => {\n        return button.type === 'menu' ? mapItems(button) : button;\n      });\n    };\n    const extractCellsToObject = buttons => foldl(buttons, (acc, button) => {\n      if (button.type === 'menu') {\n        const menuButton = button;\n        return foldl(menuButton.items, (innerAcc, item) => {\n          innerAcc[item.name] = item.storage;\n          return innerAcc;\n        }, acc);\n      }\n      return acc;\n    }, {});\n\n    const initCommonEvents = (fireApiEvent, extras) => [\n      runWithTarget(focusin(), onFocus),\n      fireApiEvent(formCloseEvent, (_api, spec, _event, self) => {\n        active$1(getRootNode(self.element)).fold(noop, blur$1);\n        extras.onClose();\n        spec.onClose();\n      }),\n      fireApiEvent(formCancelEvent, (api, spec, _event, self) => {\n        spec.onCancel(api);\n        emit(self, formCloseEvent);\n      }),\n      run$1(formUnblockEvent, (_c, _se) => extras.onUnblock()),\n      run$1(formBlockEvent, (_c, se) => extras.onBlock(se.event))\n    ];\n    const initUrlDialog = (getInstanceApi, extras) => {\n      const fireApiEvent = (eventName, f) => run$1(eventName, (c, se) => {\n        withSpec(c, (spec, _c) => {\n          f(getInstanceApi(), spec, se.event, c);\n        });\n      });\n      const withSpec = (c, f) => {\n        Reflecting.getState(c).get().each(currentDialog => {\n          f(currentDialog, c);\n        });\n      };\n      return [\n        ...initCommonEvents(fireApiEvent, extras),\n        fireApiEvent(formActionEvent, (api, spec, event) => {\n          spec.onAction(api, { name: event.name });\n        })\n      ];\n    };\n    const initDialog = (getInstanceApi, extras, getSink) => {\n      const fireApiEvent = (eventName, f) => run$1(eventName, (c, se) => {\n        withSpec(c, (spec, _c) => {\n          f(getInstanceApi(), spec, se.event, c);\n        });\n      });\n      const withSpec = (c, f) => {\n        Reflecting.getState(c).get().each(currentDialogInit => {\n          f(currentDialogInit.internalDialog, c);\n        });\n      };\n      return [\n        ...initCommonEvents(fireApiEvent, extras),\n        fireApiEvent(formSubmitEvent, (api, spec) => spec.onSubmit(api)),\n        fireApiEvent(formChangeEvent, (api, spec, event) => {\n          spec.onChange(api, { name: event.name });\n        }),\n        fireApiEvent(formActionEvent, (api, spec, event, component) => {\n          const focusIn = () => component.getSystem().isConnected() ? Keying.focusIn(component) : undefined;\n          const isDisabled = focused => has$1(focused, 'disabled') || getOpt(focused, 'aria-disabled').exists(val => val === 'true');\n          const rootNode = getRootNode(component.element);\n          const current = active$1(rootNode);\n          spec.onAction(api, {\n            name: event.name,\n            value: event.value\n          });\n          active$1(rootNode).fold(focusIn, focused => {\n            if (isDisabled(focused)) {\n              focusIn();\n            } else if (current.exists(cur => contains(focused, cur) && isDisabled(cur))) {\n              focusIn();\n            } else {\n              getSink().toOptional().filter(sink => !contains(sink.element, focused)).each(focusIn);\n            }\n          });\n        }),\n        fireApiEvent(formTabChangeEvent, (api, spec, event) => {\n          spec.onTabChange(api, {\n            newTabName: event.name,\n            oldTabName: event.oldName\n          });\n        }),\n        runOnDetached(component => {\n          const api = getInstanceApi();\n          Representing.setValue(component, api.getData());\n        })\n      ];\n    };\n\n    const makeButton = (button, backstage) => renderFooterButton(button, button.type, backstage);\n    const lookup = (compInSystem, footerButtons, buttonName) => find$5(footerButtons, button => button.name === buttonName).bind(memButton => memButton.memento.getOpt(compInSystem));\n    const renderComponents = (_data, state) => {\n      const footerButtons = state.map(s => s.footerButtons).getOr([]);\n      const buttonGroups = partition$3(footerButtons, button => button.align === 'start');\n      const makeGroup = (edge, buttons) => Container.sketch({\n        dom: {\n          tag: 'div',\n          classes: [`tox-dialog__footer-${ edge }`]\n        },\n        components: map$2(buttons, button => button.memento.asSpec())\n      });\n      const startButtons = makeGroup('start', buttonGroups.pass);\n      const endButtons = makeGroup('end', buttonGroups.fail);\n      return [\n        startButtons,\n        endButtons\n      ];\n    };\n    const renderFooter = (initSpec, dialogId, backstage) => {\n      const updateState = (comp, data) => {\n        const footerButtons = map$2(data.buttons, button => {\n          const memButton = record(makeButton(button, backstage));\n          return {\n            name: button.name,\n            align: button.align,\n            memento: memButton\n          };\n        });\n        const lookupByName = buttonName => lookup(comp, footerButtons, buttonName);\n        return Optional.some({\n          lookupByName,\n          footerButtons\n        });\n      };\n      return {\n        dom: fromHtml('<div class=\"tox-dialog__footer\"></div>'),\n        components: [],\n        behaviours: derive$1([Reflecting.config({\n            channel: `${ footerChannel }-${ dialogId }`,\n            initialData: initSpec,\n            updateState,\n            renderComponents\n          })])\n      };\n    };\n    const renderInlineFooter = (initSpec, dialogId, backstage) => renderFooter(initSpec, dialogId, backstage);\n    const renderModalFooter = (initSpec, dialogId, backstage) => ModalDialog.parts.footer(renderFooter(initSpec, dialogId, backstage));\n\n    const getCompByName = (access, name) => {\n      const root = access.getRoot();\n      if (root.getSystem().isConnected()) {\n        const form = Composing.getCurrent(access.getFormWrapper()).getOr(access.getFormWrapper());\n        return Form.getField(form, name).orThunk(() => {\n          const footer = access.getFooter();\n          const footerState = footer.bind(f => Reflecting.getState(f).get());\n          return footerState.bind(f => f.lookupByName(name));\n        });\n      } else {\n        return Optional.none();\n      }\n    };\n    const validateData$1 = (access, data) => {\n      const root = access.getRoot();\n      return Reflecting.getState(root).get().map(dialogState => getOrDie(asRaw('data', dialogState.dataValidator, data))).getOr(data);\n    };\n    const getDialogApi = (access, doRedial, menuItemStates) => {\n      const withRoot = f => {\n        const root = access.getRoot();\n        if (root.getSystem().isConnected()) {\n          f(root);\n        }\n      };\n      const getData = () => {\n        const root = access.getRoot();\n        const valueComp = root.getSystem().isConnected() ? access.getFormWrapper() : root;\n        const representedValues = Representing.getValue(valueComp);\n        const menuItemCurrentState = map$1(menuItemStates, cell => cell.get());\n        return {\n          ...representedValues,\n          ...menuItemCurrentState\n        };\n      };\n      const setData = newData => {\n        withRoot(_ => {\n          const prevData = instanceApi.getData();\n          const mergedData = deepMerge(prevData, newData);\n          const newInternalData = validateData$1(access, mergedData);\n          const form = access.getFormWrapper();\n          Representing.setValue(form, newInternalData);\n          each(menuItemStates, (v, k) => {\n            if (has$2(mergedData, k)) {\n              v.set(mergedData[k]);\n            }\n          });\n        });\n      };\n      const setEnabled = (name, state) => {\n        getCompByName(access, name).each(state ? Disabling.enable : Disabling.disable);\n      };\n      const focus = name => {\n        getCompByName(access, name).each(Focusing.focus);\n      };\n      const block = message => {\n        if (!isString(message)) {\n          throw new Error('The dialogInstanceAPI.block function should be passed a blocking message of type string as an argument');\n        }\n        withRoot(root => {\n          emitWith(root, formBlockEvent, { message });\n        });\n      };\n      const unblock = () => {\n        withRoot(root => {\n          emit(root, formUnblockEvent);\n        });\n      };\n      const showTab = name => {\n        withRoot(_ => {\n          const body = access.getBody();\n          const bodyState = Reflecting.getState(body);\n          if (bodyState.get().exists(b => b.isTabPanel())) {\n            Composing.getCurrent(body).each(tabSection => {\n              TabSection.showTab(tabSection, name);\n            });\n          }\n        });\n      };\n      const redial = d => {\n        withRoot(root => {\n          const id = access.getId();\n          const dialogInit = doRedial(d);\n          const storedMenuButtons = mapMenuButtons(dialogInit.internalDialog.buttons, menuItemStates);\n          root.getSystem().broadcastOn([`${ dialogChannel }-${ id }`], dialogInit);\n          root.getSystem().broadcastOn([`${ titleChannel }-${ id }`], dialogInit.internalDialog);\n          root.getSystem().broadcastOn([`${ bodyChannel }-${ id }`], dialogInit.internalDialog);\n          root.getSystem().broadcastOn([`${ footerChannel }-${ id }`], {\n            ...dialogInit.internalDialog,\n            buttons: storedMenuButtons\n          });\n          instanceApi.setData(dialogInit.initialData);\n        });\n      };\n      const close = () => {\n        withRoot(root => {\n          emit(root, formCloseEvent);\n        });\n      };\n      const instanceApi = {\n        getData,\n        setData,\n        setEnabled,\n        focus,\n        block,\n        unblock,\n        showTab,\n        redial,\n        close,\n        toggleFullscreen: access.toggleFullscreen\n      };\n      return instanceApi;\n    };\n\n    const renderDialog = (dialogInit, extra, backstage) => {\n      const dialogId = generate$6('dialog');\n      const internalDialog = dialogInit.internalDialog;\n      const header = getHeader(internalDialog.title, dialogId, backstage);\n      const dialogSize = Cell(internalDialog.size);\n      const dialogSizeClasses = getDialogSizeClass(dialogSize.get()).toArray();\n      const updateState = (comp, incoming) => {\n        dialogSize.set(incoming.internalDialog.size);\n        updateDialogSizeClass(incoming.internalDialog.size, comp);\n        return Optional.some(incoming);\n      };\n      const body = renderModalBody({\n        body: internalDialog.body,\n        initialData: internalDialog.initialData\n      }, dialogId, backstage);\n      const storedMenuButtons = mapMenuButtons(internalDialog.buttons);\n      const objOfCells = extractCellsToObject(storedMenuButtons);\n      const footer = someIf(storedMenuButtons.length !== 0, renderModalFooter({ buttons: storedMenuButtons }, dialogId, backstage));\n      const dialogEvents = initDialog(() => instanceApi, getEventExtras(() => dialog, backstage.shared.providers, extra), backstage.shared.getSink);\n      const spec = {\n        id: dialogId,\n        header,\n        body,\n        footer,\n        extraClasses: dialogSizeClasses,\n        extraBehaviours: [Reflecting.config({\n            channel: `${ dialogChannel }-${ dialogId }`,\n            updateState,\n            initialData: dialogInit\n          })],\n        extraStyles: {}\n      };\n      const dialog = renderModalDialog(spec, dialogEvents, backstage);\n      const modalAccess = (() => {\n        const getForm = () => {\n          const outerForm = ModalDialog.getBody(dialog);\n          return Composing.getCurrent(outerForm).getOr(outerForm);\n        };\n        const toggleFullscreen$1 = () => {\n          toggleFullscreen(dialog, dialogSize.get());\n        };\n        return {\n          getId: constant$1(dialogId),\n          getRoot: constant$1(dialog),\n          getBody: () => ModalDialog.getBody(dialog),\n          getFooter: () => ModalDialog.getFooter(dialog),\n          getFormWrapper: getForm,\n          toggleFullscreen: toggleFullscreen$1\n        };\n      })();\n      const instanceApi = getDialogApi(modalAccess, extra.redial, objOfCells);\n      return {\n        dialog,\n        instanceApi\n      };\n    };\n\n    const renderInlineDialog = (dialogInit, extra, backstage, ariaAttrs = false, refreshDocking) => {\n      const dialogId = generate$6('dialog');\n      const dialogLabelId = generate$6('dialog-label');\n      const dialogContentId = generate$6('dialog-content');\n      const internalDialog = dialogInit.internalDialog;\n      const dialogSize = Cell(internalDialog.size);\n      const dialogSizeClass = getDialogSizeClass(dialogSize.get()).toArray();\n      const updateState = (comp, incoming) => {\n        dialogSize.set(incoming.internalDialog.size);\n        updateDialogSizeClass(incoming.internalDialog.size, comp);\n        refreshDocking();\n        return Optional.some(incoming);\n      };\n      const memHeader = record(renderInlineHeader({\n        title: internalDialog.title,\n        draggable: true\n      }, dialogId, dialogLabelId, backstage.shared.providers));\n      const memBody = record(renderInlineBody({\n        body: internalDialog.body,\n        initialData: internalDialog.initialData\n      }, dialogId, dialogContentId, backstage, ariaAttrs));\n      const storagedMenuButtons = mapMenuButtons(internalDialog.buttons);\n      const objOfCells = extractCellsToObject(storagedMenuButtons);\n      const optMemFooter = someIf(storagedMenuButtons.length !== 0, record(renderInlineFooter({ buttons: storagedMenuButtons }, dialogId, backstage)));\n      const dialogEvents = initDialog(() => instanceApi, {\n        onBlock: event => {\n          Blocking.block(dialog, (_comp, bs) => {\n            const headerHeight = memHeader.getOpt(dialog).map(dialog => get$d(dialog.element));\n            return getBusySpec(event.message, bs, backstage.shared.providers, headerHeight);\n          });\n        },\n        onUnblock: () => {\n          Blocking.unblock(dialog);\n        },\n        onClose: () => extra.closeWindow()\n      }, backstage.shared.getSink);\n      const inlineClass = 'tox-dialog-inline';\n      const dialog = build$1({\n        dom: {\n          tag: 'div',\n          classes: [\n            'tox-dialog',\n            inlineClass,\n            ...dialogSizeClass\n          ],\n          attributes: {\n            role: 'dialog',\n            ['aria-labelledby']: dialogLabelId\n          }\n        },\n        eventOrder: {\n          [receive()]: [\n            Reflecting.name(),\n            Receiving.name()\n          ],\n          [execute$5()]: ['execute-on-form'],\n          [attachedToDom()]: [\n            'reflecting',\n            'execute-on-form'\n          ]\n        },\n        behaviours: derive$1([\n          Keying.config({\n            mode: 'cyclic',\n            onEscape: c => {\n              emit(c, formCloseEvent);\n              return Optional.some(true);\n            },\n            useTabstopAt: elem => !isPseudoStop(elem) && (name$3(elem) !== 'button' || get$f(elem, 'disabled') !== 'disabled'),\n            firstTabstop: 1\n          }),\n          Reflecting.config({\n            channel: `${ dialogChannel }-${ dialogId }`,\n            updateState,\n            initialData: dialogInit\n          }),\n          Focusing.config({}),\n          config('execute-on-form', dialogEvents.concat([\n            runOnSource(focusin(), (comp, _se) => {\n              Keying.focusIn(comp);\n            }),\n            run$1(focusShifted(), (comp, se) => {\n              comp.getSystem().broadcastOn([dialogFocusShiftedChannel], { newFocus: se.event.newFocus });\n            })\n          ])),\n          Blocking.config({ getRoot: () => Optional.some(dialog) }),\n          Replacing.config({}),\n          memory({})\n        ]),\n        components: [\n          memHeader.asSpec(),\n          memBody.asSpec(),\n          ...optMemFooter.map(memFooter => memFooter.asSpec()).toArray()\n        ]\n      });\n      const toggleFullscreen$1 = () => {\n        toggleFullscreen(dialog, dialogSize.get());\n      };\n      const instanceApi = getDialogApi({\n        getId: constant$1(dialogId),\n        getRoot: constant$1(dialog),\n        getFooter: () => optMemFooter.map(memFooter => memFooter.get(dialog)),\n        getBody: () => memBody.get(dialog),\n        getFormWrapper: () => {\n          const body = memBody.get(dialog);\n          return Composing.getCurrent(body).getOr(body);\n        },\n        toggleFullscreen: toggleFullscreen$1\n      }, extra.redial, objOfCells);\n      return {\n        dialog,\n        instanceApi\n      };\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.URI');\n\n    const getUrlDialogApi = root => {\n      const withRoot = f => {\n        if (root.getSystem().isConnected()) {\n          f(root);\n        }\n      };\n      const block = message => {\n        if (!isString(message)) {\n          throw new Error('The urlDialogInstanceAPI.block function should be passed a blocking message of type string as an argument');\n        }\n        withRoot(root => {\n          emitWith(root, formBlockEvent, { message });\n        });\n      };\n      const unblock = () => {\n        withRoot(root => {\n          emit(root, formUnblockEvent);\n        });\n      };\n      const close = () => {\n        withRoot(root => {\n          emit(root, formCloseEvent);\n        });\n      };\n      const sendMessage = data => {\n        withRoot(root => {\n          root.getSystem().broadcastOn([bodySendMessageChannel], data);\n        });\n      };\n      return {\n        block,\n        unblock,\n        close,\n        sendMessage\n      };\n    };\n\n    const SUPPORTED_MESSAGE_ACTIONS = [\n      'insertContent',\n      'setContent',\n      'execCommand',\n      'close',\n      'block',\n      'unblock'\n    ];\n    const isSupportedMessage = data => isObject(data) && SUPPORTED_MESSAGE_ACTIONS.indexOf(data.mceAction) !== -1;\n    const isCustomMessage = data => !isSupportedMessage(data) && isObject(data) && has$2(data, 'mceAction');\n    const handleMessage = (editor, api, data) => {\n      switch (data.mceAction) {\n      case 'insertContent':\n        editor.insertContent(data.content);\n        break;\n      case 'setContent':\n        editor.setContent(data.content);\n        break;\n      case 'execCommand':\n        const ui = isBoolean(data.ui) ? data.ui : false;\n        editor.execCommand(data.cmd, ui, data.value);\n        break;\n      case 'close':\n        api.close();\n        break;\n      case 'block':\n        api.block(data.message);\n        break;\n      case 'unblock':\n        api.unblock();\n        break;\n      }\n    };\n    const renderUrlDialog = (internalDialog, extra, editor, backstage) => {\n      const dialogId = generate$6('dialog');\n      const header = getHeader(internalDialog.title, dialogId, backstage);\n      const body = renderIframeBody(internalDialog);\n      const footer = internalDialog.buttons.bind(buttons => {\n        if (buttons.length === 0) {\n          return Optional.none();\n        } else {\n          return Optional.some(renderModalFooter({ buttons }, dialogId, backstage));\n        }\n      });\n      const dialogEvents = initUrlDialog(() => instanceApi, getEventExtras(() => dialog, backstage.shared.providers, extra));\n      const styles = {\n        ...internalDialog.height.fold(() => ({}), height => ({\n          'height': height + 'px',\n          'max-height': height + 'px'\n        })),\n        ...internalDialog.width.fold(() => ({}), width => ({\n          'width': width + 'px',\n          'max-width': width + 'px'\n        }))\n      };\n      const classes = internalDialog.width.isNone() && internalDialog.height.isNone() ? ['tox-dialog--width-lg'] : [];\n      const iframeUri = new global(internalDialog.url, { base_uri: new global(window.location.href) });\n      const iframeDomain = `${ iframeUri.protocol }://${ iframeUri.host }${ iframeUri.port ? ':' + iframeUri.port : '' }`;\n      const messageHandlerUnbinder = unbindable();\n      const updateState = (_comp, incoming) => Optional.some(incoming);\n      const extraBehaviours = [\n        Reflecting.config({\n          channel: `${ dialogChannel }-${ dialogId }`,\n          updateState,\n          initialData: internalDialog\n        }),\n        config('messages', [\n          runOnAttached(() => {\n            const unbind = bind(SugarElement.fromDom(window), 'message', e => {\n              if (iframeUri.isSameOrigin(new global(e.raw.origin))) {\n                const data = e.raw.data;\n                if (isSupportedMessage(data)) {\n                  handleMessage(editor, instanceApi, data);\n                } else if (isCustomMessage(data)) {\n                  internalDialog.onMessage(instanceApi, data);\n                }\n              }\n            });\n            messageHandlerUnbinder.set(unbind);\n          }),\n          runOnDetached(messageHandlerUnbinder.clear)\n        ]),\n        Receiving.config({\n          channels: {\n            [bodySendMessageChannel]: {\n              onReceive: (comp, data) => {\n                descendant(comp.element, 'iframe').each(iframeEle => {\n                  const iframeWin = iframeEle.dom.contentWindow;\n                  if (isNonNullable(iframeWin)) {\n                    iframeWin.postMessage(data, iframeDomain);\n                  }\n                });\n              }\n            }\n          }\n        })\n      ];\n      const spec = {\n        id: dialogId,\n        header,\n        body,\n        footer,\n        extraClasses: classes,\n        extraBehaviours,\n        extraStyles: styles\n      };\n      const dialog = renderModalDialog(spec, dialogEvents, backstage);\n      const instanceApi = getUrlDialogApi(dialog);\n      return {\n        dialog,\n        instanceApi\n      };\n    };\n\n    const setup$2 = backstage => {\n      const sharedBackstage = backstage.shared;\n      const open = (message, callback) => {\n        const closeDialog = () => {\n          ModalDialog.hide(alertDialog);\n          callback();\n        };\n        const memFooterClose = record(renderFooterButton({\n          name: 'close-alert',\n          text: 'OK',\n          primary: true,\n          buttonType: Optional.some('primary'),\n          align: 'end',\n          enabled: true,\n          icon: Optional.none()\n        }, 'cancel', backstage));\n        const titleSpec = pUntitled();\n        const closeSpec = pClose(closeDialog, sharedBackstage.providers);\n        const alertDialog = build$1(renderDialog$1({\n          lazySink: () => sharedBackstage.getSink(),\n          header: hiddenHeader(titleSpec, closeSpec),\n          body: pBodyMessage(message, sharedBackstage.providers),\n          footer: Optional.some(pFooter(pFooterGroup([], [memFooterClose.asSpec()]))),\n          onEscape: closeDialog,\n          extraClasses: ['tox-alert-dialog'],\n          extraBehaviours: [],\n          extraStyles: {},\n          dialogEvents: [run$1(formCancelEvent, closeDialog)],\n          eventOrder: {}\n        }));\n        ModalDialog.show(alertDialog);\n        const footerCloseButton = memFooterClose.get(alertDialog);\n        Focusing.focus(footerCloseButton);\n      };\n      return { open };\n    };\n\n    const setup$1 = backstage => {\n      const sharedBackstage = backstage.shared;\n      const open = (message, callback) => {\n        const closeDialog = state => {\n          ModalDialog.hide(confirmDialog);\n          callback(state);\n        };\n        const memFooterYes = record(renderFooterButton({\n          name: 'yes',\n          text: 'Yes',\n          primary: true,\n          buttonType: Optional.some('primary'),\n          align: 'end',\n          enabled: true,\n          icon: Optional.none()\n        }, 'submit', backstage));\n        const footerNo = renderFooterButton({\n          name: 'no',\n          text: 'No',\n          primary: false,\n          buttonType: Optional.some('secondary'),\n          align: 'end',\n          enabled: true,\n          icon: Optional.none()\n        }, 'cancel', backstage);\n        const titleSpec = pUntitled();\n        const closeSpec = pClose(() => closeDialog(false), sharedBackstage.providers);\n        const confirmDialog = build$1(renderDialog$1({\n          lazySink: () => sharedBackstage.getSink(),\n          header: hiddenHeader(titleSpec, closeSpec),\n          body: pBodyMessage(message, sharedBackstage.providers),\n          footer: Optional.some(pFooter(pFooterGroup([], [\n            footerNo,\n            memFooterYes.asSpec()\n          ]))),\n          onEscape: () => closeDialog(false),\n          extraClasses: ['tox-confirm-dialog'],\n          extraBehaviours: [],\n          extraStyles: {},\n          dialogEvents: [\n            run$1(formCancelEvent, () => closeDialog(false)),\n            run$1(formSubmitEvent, () => closeDialog(true))\n          ],\n          eventOrder: {}\n        }));\n        ModalDialog.show(confirmDialog);\n        const footerYesButton = memFooterYes.get(confirmDialog);\n        Focusing.focus(footerYesButton);\n      };\n      return { open };\n    };\n\n    const validateData = (data, validator) => getOrDie(asRaw('data', validator, data));\n    const isAlertOrConfirmDialog = target => closest(target, '.tox-alert-dialog') || closest(target, '.tox-confirm-dialog');\n    const inlineAdditionalBehaviours = (editor, isStickyToolbar, isToolbarLocationTop) => {\n      if (isStickyToolbar && isToolbarLocationTop) {\n        return [];\n      } else {\n        return [Docking.config({\n            contextual: {\n              lazyContext: () => Optional.some(box$1(SugarElement.fromDom(editor.getContentAreaContainer()))),\n              fadeInClass: 'tox-dialog-dock-fadein',\n              fadeOutClass: 'tox-dialog-dock-fadeout',\n              transitionClass: 'tox-dialog-dock-transition'\n            },\n            modes: ['top'],\n            lazyViewport: comp => {\n              const optScrollingContext = detectWhenSplitUiMode(editor, comp.element);\n              return optScrollingContext.map(sc => {\n                const combinedBounds = getBoundsFrom(sc);\n                return {\n                  bounds: combinedBounds,\n                  optScrollEnv: Optional.some({\n                    currentScrollTop: sc.element.dom.scrollTop,\n                    scrollElmTop: absolute$3(sc.element).top\n                  })\n                };\n              }).getOrThunk(() => ({\n                bounds: win(),\n                optScrollEnv: Optional.none()\n              }));\n            }\n          })];\n      }\n    };\n    const setup = extras => {\n      const editor = extras.editor;\n      const isStickyToolbar$1 = isStickyToolbar(editor);\n      const alertDialog = setup$2(extras.backstages.dialog);\n      const confirmDialog = setup$1(extras.backstages.dialog);\n      const open = (config, params, closeWindow) => {\n        if (!isUndefined(params)) {\n          if (params.inline === 'toolbar') {\n            return openInlineDialog(config, extras.backstages.popup.shared.anchors.inlineDialog(), closeWindow, params);\n          } else if (params.inline === 'bottom') {\n            return openBottomInlineDialog(config, extras.backstages.popup.shared.anchors.inlineBottomDialog(), closeWindow, params);\n          } else if (params.inline === 'cursor') {\n            return openInlineDialog(config, extras.backstages.popup.shared.anchors.cursor(), closeWindow, params);\n          }\n        }\n        return openModalDialog(config, closeWindow);\n      };\n      const openUrl = (config, closeWindow) => openModalUrlDialog(config, closeWindow);\n      const openModalUrlDialog = (config, closeWindow) => {\n        const factory = contents => {\n          const dialog = renderUrlDialog(contents, {\n            closeWindow: () => {\n              ModalDialog.hide(dialog.dialog);\n              closeWindow(dialog.instanceApi);\n            }\n          }, editor, extras.backstages.dialog);\n          ModalDialog.show(dialog.dialog);\n          return dialog.instanceApi;\n        };\n        return DialogManager.openUrl(factory, config);\n      };\n      const openModalDialog = (config, closeWindow) => {\n        const factory = (contents, internalInitialData, dataValidator) => {\n          const initialData = internalInitialData;\n          const dialogInit = {\n            dataValidator,\n            initialData,\n            internalDialog: contents\n          };\n          const dialog = renderDialog(dialogInit, {\n            redial: DialogManager.redial,\n            closeWindow: () => {\n              ModalDialog.hide(dialog.dialog);\n              closeWindow(dialog.instanceApi);\n            }\n          }, extras.backstages.dialog);\n          ModalDialog.show(dialog.dialog);\n          dialog.instanceApi.setData(initialData);\n          return dialog.instanceApi;\n        };\n        return DialogManager.open(factory, config);\n      };\n      const openInlineDialog = (config$1, anchor, closeWindow, windowParams) => {\n        const factory = (contents, internalInitialData, dataValidator) => {\n          const initialData = validateData(internalInitialData, dataValidator);\n          const inlineDialog = value$2();\n          const isToolbarLocationTop = extras.backstages.popup.shared.header.isPositionedAtTop();\n          const dialogInit = {\n            dataValidator,\n            initialData,\n            internalDialog: contents\n          };\n          const refreshDocking = () => inlineDialog.on(dialog => {\n            InlineView.reposition(dialog);\n            if (!isStickyToolbar$1 || !isToolbarLocationTop) {\n              Docking.refresh(dialog);\n            }\n          });\n          const dialogUi = renderInlineDialog(dialogInit, {\n            redial: DialogManager.redial,\n            closeWindow: () => {\n              inlineDialog.on(InlineView.hide);\n              editor.off('ResizeEditor', refreshDocking);\n              inlineDialog.clear();\n              closeWindow(dialogUi.instanceApi);\n            }\n          }, extras.backstages.popup, windowParams.ariaAttrs, refreshDocking);\n          const inlineDialogComp = build$1(InlineView.sketch({\n            lazySink: extras.backstages.popup.shared.getSink,\n            dom: {\n              tag: 'div',\n              classes: []\n            },\n            fireDismissalEventInstead: windowParams.persistent ? { event: 'doNotDismissYet' } : {},\n            ...isToolbarLocationTop ? {} : { fireRepositionEventInstead: {} },\n            inlineBehaviours: derive$1([\n              config('window-manager-inline-events', [run$1(dismissRequested(), (_comp, _se) => {\n                  emit(dialogUi.dialog, formCancelEvent);\n                })]),\n              ...inlineAdditionalBehaviours(editor, isStickyToolbar$1, isToolbarLocationTop)\n            ]),\n            isExtraPart: (_comp, target) => isAlertOrConfirmDialog(target)\n          }));\n          inlineDialog.set(inlineDialogComp);\n          const getInlineDialogBounds = () => {\n            const elem = editor.inline ? body() : SugarElement.fromDom(editor.getContainer());\n            const bounds = box$1(elem);\n            return Optional.some(bounds);\n          };\n          InlineView.showWithinBounds(inlineDialogComp, premade(dialogUi.dialog), { anchor }, getInlineDialogBounds);\n          if (!isStickyToolbar$1 || !isToolbarLocationTop) {\n            Docking.refresh(inlineDialogComp);\n            editor.on('ResizeEditor', refreshDocking);\n          }\n          dialogUi.instanceApi.setData(initialData);\n          Keying.focusIn(dialogUi.dialog);\n          return dialogUi.instanceApi;\n        };\n        return DialogManager.open(factory, config$1);\n      };\n      const openBottomInlineDialog = (config$1, anchor, closeWindow, windowParams) => {\n        const factory = (contents, internalInitialData, dataValidator) => {\n          const initialData = validateData(internalInitialData, dataValidator);\n          const inlineDialog = value$2();\n          const isToolbarLocationTop = extras.backstages.popup.shared.header.isPositionedAtTop();\n          const dialogInit = {\n            dataValidator,\n            initialData,\n            internalDialog: contents\n          };\n          const refreshDocking = () => inlineDialog.on(dialog => {\n            InlineView.reposition(dialog);\n            Docking.refresh(dialog);\n          });\n          const dialogUi = renderInlineDialog(dialogInit, {\n            redial: DialogManager.redial,\n            closeWindow: () => {\n              inlineDialog.on(InlineView.hide);\n              editor.off('ResizeEditor ScrollWindow ElementScroll', refreshDocking);\n              inlineDialog.clear();\n              closeWindow(dialogUi.instanceApi);\n            }\n          }, extras.backstages.popup, windowParams.ariaAttrs, refreshDocking);\n          const inlineDialogComp = build$1(InlineView.sketch({\n            lazySink: extras.backstages.popup.shared.getSink,\n            dom: {\n              tag: 'div',\n              classes: []\n            },\n            fireDismissalEventInstead: windowParams.persistent ? { event: 'doNotDismissYet' } : {},\n            ...isToolbarLocationTop ? {} : { fireRepositionEventInstead: {} },\n            inlineBehaviours: derive$1([\n              config('window-manager-inline-events', [run$1(dismissRequested(), (_comp, _se) => {\n                  emit(dialogUi.dialog, formCancelEvent);\n                })]),\n              Docking.config({\n                contextual: {\n                  lazyContext: () => Optional.some(box$1(SugarElement.fromDom(editor.getContentAreaContainer()))),\n                  fadeInClass: 'tox-dialog-dock-fadein',\n                  fadeOutClass: 'tox-dialog-dock-fadeout',\n                  transitionClass: 'tox-dialog-dock-transition'\n                },\n                modes: [\n                  'top',\n                  'bottom'\n                ],\n                lazyViewport: comp => {\n                  const optScrollingContext = detectWhenSplitUiMode(editor, comp.element);\n                  return optScrollingContext.map(sc => {\n                    const combinedBounds = getBoundsFrom(sc);\n                    return {\n                      bounds: combinedBounds,\n                      optScrollEnv: Optional.some({\n                        currentScrollTop: sc.element.dom.scrollTop,\n                        scrollElmTop: absolute$3(sc.element).top\n                      })\n                    };\n                  }).getOrThunk(() => ({\n                    bounds: win(),\n                    optScrollEnv: Optional.none()\n                  }));\n                }\n              })\n            ]),\n            isExtraPart: (_comp, target) => isAlertOrConfirmDialog(target)\n          }));\n          inlineDialog.set(inlineDialogComp);\n          const getInlineDialogBounds = () => {\n            return extras.backstages.popup.shared.getSink().toOptional().bind(s => {\n              const optScrollingContext = detectWhenSplitUiMode(editor, s.element);\n              const margin = 15;\n              const bounds$1 = optScrollingContext.map(sc => getBoundsFrom(sc)).getOr(win());\n              const contentAreaContainer = box$1(SugarElement.fromDom(editor.getContentAreaContainer()));\n              const constrainedBounds = constrain(contentAreaContainer, bounds$1);\n              return Optional.some(bounds(constrainedBounds.x, constrainedBounds.y, constrainedBounds.width, constrainedBounds.height - margin));\n            });\n          };\n          InlineView.showWithinBounds(inlineDialogComp, premade(dialogUi.dialog), { anchor }, getInlineDialogBounds);\n          Docking.refresh(inlineDialogComp);\n          editor.on('ResizeEditor ScrollWindow ElementScroll ResizeWindow', refreshDocking);\n          dialogUi.instanceApi.setData(initialData);\n          Keying.focusIn(dialogUi.dialog);\n          return dialogUi.instanceApi;\n        };\n        return DialogManager.open(factory, config$1);\n      };\n      const confirm = (message, callback) => {\n        confirmDialog.open(message, callback);\n      };\n      const alert = (message, callback) => {\n        alertDialog.open(message, callback);\n      };\n      const close = instanceApi => {\n        instanceApi.close();\n      };\n      return {\n        open,\n        openUrl,\n        alert,\n        close,\n        confirm\n      };\n    };\n\n    const registerOptions = editor => {\n      register$e(editor);\n      register$d(editor);\n      register(editor);\n    };\n    var Theme = () => {\n      global$a.add('silver', editor => {\n        registerOptions(editor);\n        let popupSinkBounds = () => win();\n        const {\n          dialogs,\n          popups,\n          renderUI: renderModeUI\n        } = setup$3(editor, { getPopupSinkBounds: () => popupSinkBounds() });\n        const renderUI = () => {\n          const renderResult = renderModeUI();\n          const optScrollingContext = detectWhenSplitUiMode(editor, popups.getMothership().element);\n          optScrollingContext.each(sc => {\n            popupSinkBounds = () => {\n              return getBoundsFrom(sc);\n            };\n          });\n          return renderResult;\n        };\n        Autocompleter.register(editor, popups.backstage.shared);\n        const windowMgr = setup({\n          editor,\n          backstages: {\n            popup: popups.backstage,\n            dialog: dialogs.backstage\n          }\n        });\n        const getNotificationManagerImpl = () => NotificationManagerImpl(editor, { backstage: popups.backstage }, popups.getMothership());\n        return {\n          renderUI,\n          getWindowManagerImpl: constant$1(windowMgr),\n          getNotificationManagerImpl\n        };\n      });\n    };\n\n    Theme();\n\n})();\n", "/**\n * TinyMCE version 6.8.6 (TBD)\n */\n\n(function () {\n  'use strict';\n\n  var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n  const link = () => /(?:[A-Za-z][A-Za-z\\d.+-]{0,14}:\\/\\/(?:[-.~*+=!&;:'%@?^${}(),\\w]+@)?|www\\.|[-;:&=+$,.\\w]+@)[A-Za-z\\d-]+(?:\\.[A-Za-z\\d-]+)*(?::\\d+)?(?:\\/(?:[-.~*+=!;:'%@$(),\\/\\w]*[-~*+=%@$()\\/\\w])?)?(?:\\?(?:[-.~*+=!&;:'%@?^${}(),\\/\\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\\/\\w]+))?/g;\n\n  const option = name => editor => editor.options.get(name);\n  const register = editor => {\n    const registerOption = editor.options.register;\n    registerOption('autolink_pattern', {\n      processor: 'regexp',\n      default: new RegExp('^' + link().source + '$', 'i')\n    });\n    registerOption('link_default_target', { processor: 'string' });\n    registerOption('link_default_protocol', {\n      processor: 'string',\n      default: 'https'\n    });\n  };\n  const getAutoLinkPattern = option('autolink_pattern');\n  const getDefaultLinkTarget = option('link_default_target');\n  const getDefaultLinkProtocol = option('link_default_protocol');\n  const allowUnsafeLinkTarget = option('allow_unsafe_link_target');\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 = type => value => typeOf(value) === type;\n  const eq = t => a => t === a;\n  const isString = isType('string');\n  const isUndefined = eq(undefined);\n  const isNullable = a => a === null || a === undefined;\n  const isNonNullable = a => !isNullable(a);\n\n  const not = f => t => !f(t);\n\n  const hasOwnProperty = Object.hasOwnProperty;\n  const has = (obj, key) => hasOwnProperty.call(obj, key);\n\n  const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;\n  const contains = (str, substr, start = 0, end) => {\n    const idx = str.indexOf(substr, start);\n    if (idx !== -1) {\n      return isUndefined(end) ? true : idx + substr.length <= end;\n    } else {\n      return false;\n    }\n  };\n  const startsWith = (str, prefix) => {\n    return checkRange(str, prefix, 0);\n  };\n\n  const zeroWidth = '\\uFEFF';\n  const isZwsp = char => char === zeroWidth;\n  const removeZwsp = s => s.replace(/\\uFEFF/g, '');\n\n  var global = tinymce.util.Tools.resolve('tinymce.dom.TextSeeker');\n\n  const isTextNode = node => node.nodeType === 3;\n  const isElement = node => node.nodeType === 1;\n  const isBracketOrSpace = char => /^[(\\[{ \\u00a0]$/.test(char);\n  const hasProtocol = url => /^([A-Za-z][A-Za-z\\d.+-]*:\\/\\/)|mailto:/.test(url);\n  const isPunctuation = char => /[?!,.;:]/.test(char);\n  const findChar = (text, index, predicate) => {\n    for (let i = index - 1; i >= 0; i--) {\n      const char = text.charAt(i);\n      if (!isZwsp(char) && predicate(char)) {\n        return i;\n      }\n    }\n    return -1;\n  };\n  const freefallRtl = (container, offset) => {\n    let tempNode = container;\n    let tempOffset = offset;\n    while (isElement(tempNode) && tempNode.childNodes[tempOffset]) {\n      tempNode = tempNode.childNodes[tempOffset];\n      tempOffset = isTextNode(tempNode) ? tempNode.data.length : tempNode.childNodes.length;\n    }\n    return {\n      container: tempNode,\n      offset: tempOffset\n    };\n  };\n\n  const parseCurrentLine = (editor, offset) => {\n    var _a;\n    const voidElements = editor.schema.getVoidElements();\n    const autoLinkPattern = getAutoLinkPattern(editor);\n    const {dom, selection} = editor;\n    if (dom.getParent(selection.getNode(), 'a[href]') !== null) {\n      return null;\n    }\n    const rng = selection.getRng();\n    const textSeeker = global(dom, node => {\n      return dom.isBlock(node) || has(voidElements, node.nodeName.toLowerCase()) || dom.getContentEditable(node) === 'false';\n    });\n    const {\n      container: endContainer,\n      offset: endOffset\n    } = freefallRtl(rng.endContainer, rng.endOffset);\n    const root = (_a = dom.getParent(endContainer, dom.isBlock)) !== null && _a !== void 0 ? _a : dom.getRoot();\n    const endSpot = textSeeker.backwards(endContainer, endOffset + offset, (node, offset) => {\n      const text = node.data;\n      const idx = findChar(text, offset, not(isBracketOrSpace));\n      return idx === -1 || isPunctuation(text[idx]) ? idx : idx + 1;\n    }, root);\n    if (!endSpot) {\n      return null;\n    }\n    let lastTextNode = endSpot.container;\n    const startSpot = textSeeker.backwards(endSpot.container, endSpot.offset, (node, offset) => {\n      lastTextNode = node;\n      const idx = findChar(node.data, offset, isBracketOrSpace);\n      return idx === -1 ? idx : idx + 1;\n    }, root);\n    const newRng = dom.createRng();\n    if (!startSpot) {\n      newRng.setStart(lastTextNode, 0);\n    } else {\n      newRng.setStart(startSpot.container, startSpot.offset);\n    }\n    newRng.setEnd(endSpot.container, endSpot.offset);\n    const rngText = removeZwsp(newRng.toString());\n    const matches = rngText.match(autoLinkPattern);\n    if (matches) {\n      let url = matches[0];\n      if (startsWith(url, 'www.')) {\n        const protocol = getDefaultLinkProtocol(editor);\n        url = protocol + '://' + url;\n      } else if (contains(url, '@') && !hasProtocol(url)) {\n        url = 'mailto:' + url;\n      }\n      return {\n        rng: newRng,\n        url\n      };\n    } else {\n      return null;\n    }\n  };\n  const convertToLink = (editor, result) => {\n    const {dom, selection} = editor;\n    const {rng, url} = result;\n    const bookmark = selection.getBookmark();\n    selection.setRng(rng);\n    const command = 'createlink';\n    const args = {\n      command,\n      ui: false,\n      value: url\n    };\n    const beforeExecEvent = editor.dispatch('BeforeExecCommand', args);\n    if (!beforeExecEvent.isDefaultPrevented()) {\n      editor.getDoc().execCommand(command, false, url);\n      editor.dispatch('ExecCommand', args);\n      const defaultLinkTarget = getDefaultLinkTarget(editor);\n      if (isString(defaultLinkTarget)) {\n        const anchor = selection.getNode();\n        dom.setAttrib(anchor, 'target', defaultLinkTarget);\n        if (defaultLinkTarget === '_blank' && !allowUnsafeLinkTarget(editor)) {\n          dom.setAttrib(anchor, 'rel', 'noopener');\n        }\n      }\n    }\n    selection.moveToBookmark(bookmark);\n    editor.nodeChanged();\n  };\n  const handleSpacebar = editor => {\n    const result = parseCurrentLine(editor, -1);\n    if (isNonNullable(result)) {\n      convertToLink(editor, result);\n    }\n  };\n  const handleBracket = handleSpacebar;\n  const handleEnter = editor => {\n    const result = parseCurrentLine(editor, 0);\n    if (isNonNullable(result)) {\n      convertToLink(editor, result);\n    }\n  };\n  const setup = editor => {\n    editor.on('keydown', e => {\n      if (e.keyCode === 13 && !e.isDefaultPrevented()) {\n        handleEnter(editor);\n      }\n    });\n    editor.on('keyup', e => {\n      if (e.keyCode === 32) {\n        handleSpacebar(editor);\n      } else if (e.keyCode === 48 && e.shiftKey || e.keyCode === 221) {\n        handleBracket(editor);\n      }\n    });\n  };\n\n  var Plugin = () => {\n    global$1.add('autolink', editor => {\n      register(editor);\n      setup(editor);\n    });\n  };\n\n  Plugin();\n\n})();\n", "/**\n * TinyMCE version 6.8.6 (TBD)\n */\n\n(function () {\n    'use strict';\n\n    var global$5 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const eq = t => a => t === a;\n    const isString = isType('string');\n    const isObject = isType('object');\n    const isArray = isType('array');\n    const isNull = eq(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 isArrayOf = (value, pred) => {\n      if (isArray(value)) {\n        for (let i = 0, len = value.length; i < len; ++i) {\n          if (!pred(value[i])) {\n            return false;\n          }\n        }\n        return true;\n      }\n      return false;\n    };\n\n    const noop = () => {\n    };\n    const constant = value => {\n      return () => {\n        return value;\n      };\n    };\n    const tripleEquals = (a, b) => {\n      return a === b;\n    };\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 nativeIndexOf = Array.prototype.indexOf;\n    const nativePush = Array.prototype.push;\n    const rawIndexOf = (ts, t) => nativeIndexOf.call(ts, t);\n    const contains = (xs, x) => rawIndexOf(xs, x) > -1;\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each$1 = (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 foldl = (xs, f, acc) => {\n      each$1(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\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 = (xs, f) => flatten(map(xs, f));\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 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 someIf = (b, a) => b ? Optional.some(a) : Optional.none();\n\n    const option = name => editor => editor.options.get(name);\n    const register$1 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('link_assume_external_targets', {\n        processor: value => {\n          const valid = isString(value) || isBoolean(value);\n          if (valid) {\n            if (value === true) {\n              return {\n                value: 1,\n                valid\n              };\n            } else if (value === 'http' || value === 'https') {\n              return {\n                value,\n                valid\n              };\n            } else {\n              return {\n                value: 0,\n                valid\n              };\n            }\n          } else {\n            return {\n              valid: false,\n              message: 'Must be a string or a boolean.'\n            };\n          }\n        },\n        default: false\n      });\n      registerOption('link_context_toolbar', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('link_list', { processor: value => isString(value) || isFunction(value) || isArrayOf(value, isObject) });\n      registerOption('link_default_target', { processor: 'string' });\n      registerOption('link_default_protocol', {\n        processor: 'string',\n        default: 'https'\n      });\n      registerOption('link_target_list', {\n        processor: value => isBoolean(value) || isArrayOf(value, isObject),\n        default: true\n      });\n      registerOption('link_rel_list', {\n        processor: 'object[]',\n        default: []\n      });\n      registerOption('link_class_list', {\n        processor: 'object[]',\n        default: []\n      });\n      registerOption('link_title', {\n        processor: 'boolean',\n        default: true\n      });\n      registerOption('allow_unsafe_link_target', {\n        processor: 'boolean',\n        default: false\n      });\n      registerOption('link_quicklink', {\n        processor: 'boolean',\n        default: false\n      });\n    };\n    const assumeExternalTargets = option('link_assume_external_targets');\n    const hasContextToolbar = option('link_context_toolbar');\n    const getLinkList = option('link_list');\n    const getDefaultLinkTarget = option('link_default_target');\n    const getDefaultLinkProtocol = option('link_default_protocol');\n    const getTargetList = option('link_target_list');\n    const getRelList = option('link_rel_list');\n    const getLinkClassList = option('link_class_list');\n    const shouldShowLinkTitle = option('link_title');\n    const allowUnsafeLinkTarget = option('allow_unsafe_link_target');\n    const useQuickLink = option('link_quicklink');\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const getValue = item => isString(item.value) ? item.value : '';\n    const getText = item => {\n      if (isString(item.text)) {\n        return item.text;\n      } else if (isString(item.title)) {\n        return item.title;\n      } else {\n        return '';\n      }\n    };\n    const sanitizeList = (list, extractValue) => {\n      const out = [];\n      global$4.each(list, item => {\n        const text = getText(item);\n        if (item.menu !== undefined) {\n          const items = sanitizeList(item.menu, extractValue);\n          out.push({\n            text,\n            items\n          });\n        } else {\n          const value = extractValue(item);\n          out.push({\n            text,\n            value\n          });\n        }\n      });\n      return out;\n    };\n    const sanitizeWith = (extracter = getValue) => list => Optional.from(list).map(list => sanitizeList(list, extracter));\n    const sanitize = list => sanitizeWith(getValue)(list);\n    const createUi = (name, label) => items => ({\n      name,\n      type: 'listbox',\n      label,\n      items\n    });\n    const ListOptions = {\n      sanitize,\n      sanitizeWith,\n      createUi,\n      getValue\n    };\n\n    const keys = Object.keys;\n    const hasOwnProperty = Object.hasOwnProperty;\n    const each = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n    const objAcc = r => (x, i) => {\n      r[i] = x;\n    };\n    const internalFilter = (obj, pred, onTrue, onFalse) => {\n      each(obj, (x, i) => {\n        (pred(x, i) ? onTrue : onFalse)(x, i);\n      });\n    };\n    const filter = (obj, pred) => {\n      const t = {};\n      internalFilter(obj, pred, objAcc(t), noop);\n      return t;\n    };\n    const has = (obj, key) => hasOwnProperty.call(obj, key);\n    const hasNonNullableKey = (obj, key) => has(obj, key) && obj[key] !== undefined && obj[key] !== null;\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.util.URI');\n\n    const isAnchor = elm => isNonNullable(elm) && elm.nodeName.toLowerCase() === 'a';\n    const isLink = elm => isAnchor(elm) && !!getHref(elm);\n    const collectNodesInRange = (rng, predicate) => {\n      if (rng.collapsed) {\n        return [];\n      } else {\n        const contents = rng.cloneContents();\n        const firstChild = contents.firstChild;\n        const walker = new global$3(firstChild, contents);\n        const elements = [];\n        let current = firstChild;\n        do {\n          if (predicate(current)) {\n            elements.push(current);\n          }\n        } while (current = walker.next());\n        return elements;\n      }\n    };\n    const hasProtocol = url => /^\\w+:/i.test(url);\n    const getHref = elm => {\n      var _a, _b;\n      return (_b = (_a = elm.getAttribute('data-mce-href')) !== null && _a !== void 0 ? _a : elm.getAttribute('href')) !== null && _b !== void 0 ? _b : '';\n    };\n    const applyRelTargetRules = (rel, isUnsafe) => {\n      const rules = ['noopener'];\n      const rels = rel ? rel.split(/\\s+/) : [];\n      const toString = rels => global$4.trim(rels.sort().join(' '));\n      const addTargetRules = rels => {\n        rels = removeTargetRules(rels);\n        return rels.length > 0 ? rels.concat(rules) : rules;\n      };\n      const removeTargetRules = rels => rels.filter(val => global$4.inArray(rules, val) === -1);\n      const newRels = isUnsafe ? addTargetRules(rels) : removeTargetRules(rels);\n      return newRels.length > 0 ? toString(newRels) : '';\n    };\n    const trimCaretContainers = text => text.replace(/\\uFEFF/g, '');\n    const getAnchorElement = (editor, selectedElm) => {\n      selectedElm = selectedElm || getLinksInSelection(editor.selection.getRng())[0] || editor.selection.getNode();\n      if (isImageFigure(selectedElm)) {\n        return Optional.from(editor.dom.select('a[href]', selectedElm)[0]);\n      } else {\n        return Optional.from(editor.dom.getParent(selectedElm, 'a[href]'));\n      }\n    };\n    const isInAnchor = (editor, selectedElm) => getAnchorElement(editor, selectedElm).isSome();\n    const getAnchorText = (selection, anchorElm) => {\n      const text = anchorElm.fold(() => selection.getContent({ format: 'text' }), anchorElm => anchorElm.innerText || anchorElm.textContent || '');\n      return trimCaretContainers(text);\n    };\n    const getLinksInSelection = rng => collectNodesInRange(rng, isLink);\n    const getLinks$1 = elements => global$4.grep(elements, isLink);\n    const hasLinks = elements => getLinks$1(elements).length > 0;\n    const hasLinksInSelection = rng => getLinksInSelection(rng).length > 0;\n    const isOnlyTextSelected = editor => {\n      const inlineTextElements = editor.schema.getTextInlineElements();\n      const isElement = elm => elm.nodeType === 1 && !isAnchor(elm) && !has(inlineTextElements, elm.nodeName.toLowerCase());\n      const isInBlockAnchor = getAnchorElement(editor).exists(anchor => anchor.hasAttribute('data-mce-block'));\n      if (isInBlockAnchor) {\n        return false;\n      }\n      const rng = editor.selection.getRng();\n      if (!rng.collapsed) {\n        const elements = collectNodesInRange(rng, isElement);\n        return elements.length === 0;\n      } else {\n        return true;\n      }\n    };\n    const isImageFigure = elm => isNonNullable(elm) && elm.nodeName === 'FIGURE' && /\\bimage\\b/i.test(elm.className);\n    const getLinkAttrs = data => {\n      const attrs = [\n        'title',\n        'rel',\n        'class',\n        'target'\n      ];\n      return foldl(attrs, (acc, key) => {\n        data[key].each(value => {\n          acc[key] = value.length > 0 ? value : null;\n        });\n        return acc;\n      }, { href: data.href });\n    };\n    const handleExternalTargets = (href, assumeExternalTargets) => {\n      if ((assumeExternalTargets === 'http' || assumeExternalTargets === 'https') && !hasProtocol(href)) {\n        return assumeExternalTargets + '://' + href;\n      }\n      return href;\n    };\n    const applyLinkOverrides = (editor, linkAttrs) => {\n      const newLinkAttrs = { ...linkAttrs };\n      if (getRelList(editor).length === 0 && !allowUnsafeLinkTarget(editor)) {\n        const newRel = applyRelTargetRules(newLinkAttrs.rel, newLinkAttrs.target === '_blank');\n        newLinkAttrs.rel = newRel ? newRel : null;\n      }\n      if (Optional.from(newLinkAttrs.target).isNone() && getTargetList(editor) === false) {\n        newLinkAttrs.target = getDefaultLinkTarget(editor);\n      }\n      newLinkAttrs.href = handleExternalTargets(newLinkAttrs.href, assumeExternalTargets(editor));\n      return newLinkAttrs;\n    };\n    const updateLink = (editor, anchorElm, text, linkAttrs) => {\n      text.each(text => {\n        if (has(anchorElm, 'innerText')) {\n          anchorElm.innerText = text;\n        } else {\n          anchorElm.textContent = text;\n        }\n      });\n      editor.dom.setAttribs(anchorElm, linkAttrs);\n      editor.selection.select(anchorElm);\n    };\n    const createLink = (editor, selectedElm, text, linkAttrs) => {\n      const dom = editor.dom;\n      if (isImageFigure(selectedElm)) {\n        linkImageFigure(dom, selectedElm, linkAttrs);\n      } else {\n        text.fold(() => {\n          editor.execCommand('mceInsertLink', false, linkAttrs);\n        }, text => {\n          editor.insertContent(dom.createHTML('a', linkAttrs, dom.encode(text)));\n        });\n      }\n    };\n    const linkDomMutation = (editor, attachState, data) => {\n      const selectedElm = editor.selection.getNode();\n      const anchorElm = getAnchorElement(editor, selectedElm);\n      const linkAttrs = applyLinkOverrides(editor, getLinkAttrs(data));\n      editor.undoManager.transact(() => {\n        if (data.href === attachState.href) {\n          attachState.attach();\n        }\n        anchorElm.fold(() => {\n          createLink(editor, selectedElm, data.text, linkAttrs);\n        }, elm => {\n          editor.focus();\n          updateLink(editor, elm, data.text, linkAttrs);\n        });\n      });\n    };\n    const unlinkSelection = editor => {\n      const dom = editor.dom, selection = editor.selection;\n      const bookmark = selection.getBookmark();\n      const rng = selection.getRng().cloneRange();\n      const startAnchorElm = dom.getParent(rng.startContainer, 'a[href]', editor.getBody());\n      const endAnchorElm = dom.getParent(rng.endContainer, 'a[href]', editor.getBody());\n      if (startAnchorElm) {\n        rng.setStartBefore(startAnchorElm);\n      }\n      if (endAnchorElm) {\n        rng.setEndAfter(endAnchorElm);\n      }\n      selection.setRng(rng);\n      editor.execCommand('unlink');\n      selection.moveToBookmark(bookmark);\n    };\n    const unlinkDomMutation = editor => {\n      editor.undoManager.transact(() => {\n        const node = editor.selection.getNode();\n        if (isImageFigure(node)) {\n          unlinkImageFigure(editor, node);\n        } else {\n          unlinkSelection(editor);\n        }\n        editor.focus();\n      });\n    };\n    const unwrapOptions = data => {\n      const {\n        class: cls,\n        href,\n        rel,\n        target,\n        text,\n        title\n      } = data;\n      return filter({\n        class: cls.getOrNull(),\n        href,\n        rel: rel.getOrNull(),\n        target: target.getOrNull(),\n        text: text.getOrNull(),\n        title: title.getOrNull()\n      }, (v, _k) => isNull(v) === false);\n    };\n    const sanitizeData = (editor, data) => {\n      const getOption = editor.options.get;\n      const uriOptions = {\n        allow_html_data_urls: getOption('allow_html_data_urls'),\n        allow_script_urls: getOption('allow_script_urls'),\n        allow_svg_data_urls: getOption('allow_svg_data_urls')\n      };\n      const href = data.href;\n      return {\n        ...data,\n        href: global$2.isDomSafe(href, 'a', uriOptions) ? href : ''\n      };\n    };\n    const link = (editor, attachState, data) => {\n      const sanitizedData = sanitizeData(editor, data);\n      editor.hasPlugin('rtc', true) ? editor.execCommand('createlink', false, unwrapOptions(sanitizedData)) : linkDomMutation(editor, attachState, sanitizedData);\n    };\n    const unlink = editor => {\n      editor.hasPlugin('rtc', true) ? editor.execCommand('unlink') : unlinkDomMutation(editor);\n    };\n    const unlinkImageFigure = (editor, fig) => {\n      var _a;\n      const img = editor.dom.select('img', fig)[0];\n      if (img) {\n        const a = editor.dom.getParents(img, 'a[href]', fig)[0];\n        if (a) {\n          (_a = a.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(img, a);\n          editor.dom.remove(a);\n        }\n      }\n    };\n    const linkImageFigure = (dom, fig, attrs) => {\n      var _a;\n      const img = dom.select('img', fig)[0];\n      if (img) {\n        const a = dom.create('a', attrs);\n        (_a = img.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(a, img);\n        a.appendChild(img);\n      }\n    };\n\n    const isListGroup = item => hasNonNullableKey(item, 'items');\n    const findTextByValue = (value, catalog) => findMap(catalog, item => {\n      if (isListGroup(item)) {\n        return findTextByValue(value, item.items);\n      } else {\n        return someIf(item.value === value, item);\n      }\n    });\n    const getDelta = (persistentText, fieldName, catalog, data) => {\n      const value = data[fieldName];\n      const hasPersistentText = persistentText.length > 0;\n      return value !== undefined ? findTextByValue(value, catalog).map(i => ({\n        url: {\n          value: i.value,\n          meta: {\n            text: hasPersistentText ? persistentText : i.text,\n            attach: noop\n          }\n        },\n        text: hasPersistentText ? persistentText : i.text\n      })) : Optional.none();\n    };\n    const findCatalog = (catalogs, fieldName) => {\n      if (fieldName === 'link') {\n        return catalogs.link;\n      } else if (fieldName === 'anchor') {\n        return catalogs.anchor;\n      } else {\n        return Optional.none();\n      }\n    };\n    const init = (initialData, linkCatalog) => {\n      const persistentData = {\n        text: initialData.text,\n        title: initialData.title\n      };\n      const getTitleFromUrlChange = url => {\n        var _a;\n        return someIf(persistentData.title.length <= 0, Optional.from((_a = url.meta) === null || _a === void 0 ? void 0 : _a.title).getOr(''));\n      };\n      const getTextFromUrlChange = url => {\n        var _a;\n        return someIf(persistentData.text.length <= 0, Optional.from((_a = url.meta) === null || _a === void 0 ? void 0 : _a.text).getOr(url.value));\n      };\n      const onUrlChange = data => {\n        const text = getTextFromUrlChange(data.url);\n        const title = getTitleFromUrlChange(data.url);\n        if (text.isSome() || title.isSome()) {\n          return Optional.some({\n            ...text.map(text => ({ text })).getOr({}),\n            ...title.map(title => ({ title })).getOr({})\n          });\n        } else {\n          return Optional.none();\n        }\n      };\n      const onCatalogChange = (data, change) => {\n        const catalog = findCatalog(linkCatalog, change).getOr([]);\n        return getDelta(persistentData.text, change, catalog, data);\n      };\n      const onChange = (getData, change) => {\n        const name = change.name;\n        if (name === 'url') {\n          return onUrlChange(getData());\n        } else if (contains([\n            'anchor',\n            'link'\n          ], name)) {\n          return onCatalogChange(getData(), name);\n        } else if (name === 'text' || name === 'title') {\n          persistentData[name] = getData()[name];\n          return Optional.none();\n        } else {\n          return Optional.none();\n        }\n      };\n      return { onChange };\n    };\n    const DialogChanges = {\n      init,\n      getDelta\n    };\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n    const delayedConfirm = (editor, message, callback) => {\n      const rng = editor.selection.getRng();\n      global$1.setEditorTimeout(editor, () => {\n        editor.windowManager.confirm(message, state => {\n          editor.selection.setRng(rng);\n          callback(state);\n        });\n      });\n    };\n    const tryEmailTransform = data => {\n      const url = data.href;\n      const suggestMailTo = url.indexOf('@') > 0 && url.indexOf('/') === -1 && url.indexOf('mailto:') === -1;\n      return suggestMailTo ? Optional.some({\n        message: 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?',\n        preprocess: oldData => ({\n          ...oldData,\n          href: 'mailto:' + url\n        })\n      }) : Optional.none();\n    };\n    const tryProtocolTransform = (assumeExternalTargets, defaultLinkProtocol) => data => {\n      const url = data.href;\n      const suggestProtocol = assumeExternalTargets === 1 && !hasProtocol(url) || assumeExternalTargets === 0 && /^\\s*www(\\.|\\d\\.)/i.test(url);\n      return suggestProtocol ? Optional.some({\n        message: `The URL you entered seems to be an external link. Do you want to add the required ${ defaultLinkProtocol }:// prefix?`,\n        preprocess: oldData => ({\n          ...oldData,\n          href: defaultLinkProtocol + '://' + url\n        })\n      }) : Optional.none();\n    };\n    const preprocess = (editor, data) => findMap([\n      tryEmailTransform,\n      tryProtocolTransform(assumeExternalTargets(editor), getDefaultLinkProtocol(editor))\n    ], f => f(data)).fold(() => Promise.resolve(data), transform => new Promise(callback => {\n      delayedConfirm(editor, transform.message, state => {\n        callback(state ? transform.preprocess(data) : data);\n      });\n    }));\n    const DialogConfirms = { preprocess };\n\n    const getAnchors = editor => {\n      const anchorNodes = editor.dom.select('a:not([href])');\n      const anchors = bind(anchorNodes, anchor => {\n        const id = anchor.name || anchor.id;\n        return id ? [{\n            text: id,\n            value: '#' + id\n          }] : [];\n      });\n      return anchors.length > 0 ? Optional.some([{\n          text: 'None',\n          value: ''\n        }].concat(anchors)) : Optional.none();\n    };\n    const AnchorListOptions = { getAnchors };\n\n    const getClasses = editor => {\n      const list = getLinkClassList(editor);\n      if (list.length > 0) {\n        return ListOptions.sanitize(list);\n      }\n      return Optional.none();\n    };\n    const ClassListOptions = { getClasses };\n\n    const parseJson = text => {\n      try {\n        return Optional.some(JSON.parse(text));\n      } catch (err) {\n        return Optional.none();\n      }\n    };\n    const getLinks = editor => {\n      const extractor = item => editor.convertURL(item.value || item.url || '', 'href');\n      const linkList = getLinkList(editor);\n      return new Promise(resolve => {\n        if (isString(linkList)) {\n          fetch(linkList).then(res => res.ok ? res.text().then(parseJson) : Promise.reject()).then(resolve, () => resolve(Optional.none()));\n        } else if (isFunction(linkList)) {\n          linkList(output => resolve(Optional.some(output)));\n        } else {\n          resolve(Optional.from(linkList));\n        }\n      }).then(optItems => optItems.bind(ListOptions.sanitizeWith(extractor)).map(items => {\n        if (items.length > 0) {\n          const noneItem = [{\n              text: 'None',\n              value: ''\n            }];\n          return noneItem.concat(items);\n        } else {\n          return items;\n        }\n      }));\n    };\n    const LinkListOptions = { getLinks };\n\n    const getRels = (editor, initialTarget) => {\n      const list = getRelList(editor);\n      if (list.length > 0) {\n        const isTargetBlank = is(initialTarget, '_blank');\n        const enforceSafe = allowUnsafeLinkTarget(editor) === false;\n        const safeRelExtractor = item => applyRelTargetRules(ListOptions.getValue(item), isTargetBlank);\n        const sanitizer = enforceSafe ? ListOptions.sanitizeWith(safeRelExtractor) : ListOptions.sanitize;\n        return sanitizer(list);\n      }\n      return Optional.none();\n    };\n    const RelOptions = { getRels };\n\n    const fallbacks = [\n      {\n        text: 'Current window',\n        value: ''\n      },\n      {\n        text: 'New window',\n        value: '_blank'\n      }\n    ];\n    const getTargets = editor => {\n      const list = getTargetList(editor);\n      if (isArray(list)) {\n        return ListOptions.sanitize(list).orThunk(() => Optional.some(fallbacks));\n      } else if (list === false) {\n        return Optional.none();\n      }\n      return Optional.some(fallbacks);\n    };\n    const TargetOptions = { getTargets };\n\n    const nonEmptyAttr = (dom, elem, name) => {\n      const val = dom.getAttrib(elem, name);\n      return val !== null && val.length > 0 ? Optional.some(val) : Optional.none();\n    };\n    const extractFromAnchor = (editor, anchor) => {\n      const dom = editor.dom;\n      const onlyText = isOnlyTextSelected(editor);\n      const text = onlyText ? Optional.some(getAnchorText(editor.selection, anchor)) : Optional.none();\n      const url = anchor.bind(anchorElm => Optional.from(dom.getAttrib(anchorElm, 'href')));\n      const target = anchor.bind(anchorElm => Optional.from(dom.getAttrib(anchorElm, 'target')));\n      const rel = anchor.bind(anchorElm => nonEmptyAttr(dom, anchorElm, 'rel'));\n      const linkClass = anchor.bind(anchorElm => nonEmptyAttr(dom, anchorElm, 'class'));\n      const title = anchor.bind(anchorElm => nonEmptyAttr(dom, anchorElm, 'title'));\n      return {\n        url,\n        text,\n        title,\n        target,\n        rel,\n        linkClass\n      };\n    };\n    const collect = (editor, linkNode) => LinkListOptions.getLinks(editor).then(links => {\n      const anchor = extractFromAnchor(editor, linkNode);\n      return {\n        anchor,\n        catalogs: {\n          targets: TargetOptions.getTargets(editor),\n          rels: RelOptions.getRels(editor, anchor.target),\n          classes: ClassListOptions.getClasses(editor),\n          anchor: AnchorListOptions.getAnchors(editor),\n          link: links\n        },\n        optNode: linkNode,\n        flags: { titleEnabled: shouldShowLinkTitle(editor) }\n      };\n    });\n    const DialogInfo = { collect };\n\n    const handleSubmit = (editor, info) => api => {\n      const data = api.getData();\n      if (!data.url.value) {\n        unlink(editor);\n        api.close();\n        return;\n      }\n      const getChangedValue = key => Optional.from(data[key]).filter(value => !is(info.anchor[key], value));\n      const changedData = {\n        href: data.url.value,\n        text: getChangedValue('text'),\n        target: getChangedValue('target'),\n        rel: getChangedValue('rel'),\n        class: getChangedValue('linkClass'),\n        title: getChangedValue('title')\n      };\n      const attachState = {\n        href: data.url.value,\n        attach: data.url.meta !== undefined && data.url.meta.attach ? data.url.meta.attach : noop\n      };\n      DialogConfirms.preprocess(editor, changedData).then(pData => {\n        link(editor, attachState, pData);\n      });\n      api.close();\n    };\n    const collectData = editor => {\n      const anchorNode = getAnchorElement(editor);\n      return DialogInfo.collect(editor, anchorNode);\n    };\n    const getInitialData = (info, defaultTarget) => {\n      const anchor = info.anchor;\n      const url = anchor.url.getOr('');\n      return {\n        url: {\n          value: url,\n          meta: { original: { value: url } }\n        },\n        text: anchor.text.getOr(''),\n        title: anchor.title.getOr(''),\n        anchor: url,\n        link: url,\n        rel: anchor.rel.getOr(''),\n        target: anchor.target.or(defaultTarget).getOr(''),\n        linkClass: anchor.linkClass.getOr('')\n      };\n    };\n    const makeDialog = (settings, onSubmit, editor) => {\n      const urlInput = [{\n          name: 'url',\n          type: 'urlinput',\n          filetype: 'file',\n          label: 'URL',\n          picker_text: 'Browse links'\n        }];\n      const displayText = settings.anchor.text.map(() => ({\n        name: 'text',\n        type: 'input',\n        label: 'Text to display'\n      })).toArray();\n      const titleText = settings.flags.titleEnabled ? [{\n          name: 'title',\n          type: 'input',\n          label: 'Title'\n        }] : [];\n      const defaultTarget = Optional.from(getDefaultLinkTarget(editor));\n      const initialData = getInitialData(settings, defaultTarget);\n      const catalogs = settings.catalogs;\n      const dialogDelta = DialogChanges.init(initialData, catalogs);\n      const body = {\n        type: 'panel',\n        items: flatten([\n          urlInput,\n          displayText,\n          titleText,\n          cat([\n            catalogs.anchor.map(ListOptions.createUi('anchor', 'Anchors')),\n            catalogs.rels.map(ListOptions.createUi('rel', 'Rel')),\n            catalogs.targets.map(ListOptions.createUi('target', 'Open link in...')),\n            catalogs.link.map(ListOptions.createUi('link', 'Link list')),\n            catalogs.classes.map(ListOptions.createUi('linkClass', 'Class'))\n          ])\n        ])\n      };\n      return {\n        title: 'Insert/Edit Link',\n        size: 'normal',\n        body,\n        buttons: [\n          {\n            type: 'cancel',\n            name: 'cancel',\n            text: 'Cancel'\n          },\n          {\n            type: 'submit',\n            name: 'save',\n            text: 'Save',\n            primary: true\n          }\n        ],\n        initialData,\n        onChange: (api, {name}) => {\n          dialogDelta.onChange(api.getData, { name }).each(newData => {\n            api.setData(newData);\n          });\n        },\n        onSubmit\n      };\n    };\n    const open$1 = editor => {\n      const data = collectData(editor);\n      data.then(info => {\n        const onSubmit = handleSubmit(editor, info);\n        return makeDialog(info, onSubmit, editor);\n      }).then(spec => {\n        editor.windowManager.open(spec);\n      });\n    };\n\n    const register = editor => {\n      editor.addCommand('mceLink', (_ui, value) => {\n        if ((value === null || value === void 0 ? void 0 : value.dialog) === true || !useQuickLink(editor)) {\n          open$1(editor);\n        } else {\n          editor.dispatch('contexttoolbar-show', { toolbarKey: 'quicklink' });\n        }\n      });\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n    const appendClickRemove = (link, evt) => {\n      document.body.appendChild(link);\n      link.dispatchEvent(evt);\n      document.body.removeChild(link);\n    };\n    const open = url => {\n      const link = document.createElement('a');\n      link.target = '_blank';\n      link.href = url;\n      link.rel = 'noreferrer noopener';\n      const evt = document.createEvent('MouseEvents');\n      evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n      appendClickRemove(link, evt);\n    };\n\n    const getLink = (editor, elm) => editor.dom.getParent(elm, 'a[href]');\n    const getSelectedLink = editor => getLink(editor, editor.selection.getStart());\n    const hasOnlyAltModifier = e => {\n      return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false;\n    };\n    const gotoLink = (editor, a) => {\n      if (a) {\n        const href = getHref(a);\n        if (/^#/.test(href)) {\n          const targetEl = editor.dom.select(href);\n          if (targetEl.length) {\n            editor.selection.scrollIntoView(targetEl[0], true);\n          }\n        } else {\n          open(a.href);\n        }\n      }\n    };\n    const openDialog = editor => () => {\n      editor.execCommand('mceLink', false, { dialog: true });\n    };\n    const gotoSelectedLink = editor => () => {\n      gotoLink(editor, getSelectedLink(editor));\n    };\n    const setupGotoLinks = editor => {\n      editor.on('click', e => {\n        const link = getLink(editor, e.target);\n        if (link && global.metaKeyPressed(e)) {\n          e.preventDefault();\n          gotoLink(editor, link);\n        }\n      });\n      editor.on('keydown', e => {\n        if (!e.isDefaultPrevented() && e.keyCode === 13 && hasOnlyAltModifier(e)) {\n          const link = getSelectedLink(editor);\n          if (link) {\n            e.preventDefault();\n            gotoLink(editor, link);\n          }\n        }\n      });\n    };\n    const toggleState = (editor, toggler) => {\n      editor.on('NodeChange', toggler);\n      return () => editor.off('NodeChange', toggler);\n    };\n    const toggleLinkState = editor => api => {\n      const updateState = () => {\n        api.setActive(!editor.mode.isReadOnly() && isInAnchor(editor, editor.selection.getNode()));\n        api.setEnabled(editor.selection.isEditable());\n      };\n      updateState();\n      return toggleState(editor, updateState);\n    };\n    const toggleLinkMenuState = editor => api => {\n      const updateState = () => {\n        api.setEnabled(editor.selection.isEditable());\n      };\n      updateState();\n      return toggleState(editor, updateState);\n    };\n    const hasExactlyOneLinkInSelection = editor => {\n      const links = editor.selection.isCollapsed() ? getLinks$1(editor.dom.getParents(editor.selection.getStart())) : getLinksInSelection(editor.selection.getRng());\n      return links.length === 1;\n    };\n    const toggleGotoLinkState = editor => api => {\n      const updateState = () => api.setEnabled(hasExactlyOneLinkInSelection(editor));\n      updateState();\n      return toggleState(editor, updateState);\n    };\n    const toggleUnlinkState = editor => api => {\n      const hasLinks$1 = parents => hasLinks(parents) || hasLinksInSelection(editor.selection.getRng());\n      const parents = editor.dom.getParents(editor.selection.getStart());\n      const updateEnabled = parents => {\n        api.setEnabled(hasLinks$1(parents) && editor.selection.isEditable());\n      };\n      updateEnabled(parents);\n      return toggleState(editor, e => updateEnabled(e.parents));\n    };\n\n    const setup = editor => {\n      editor.addShortcut('Meta+K', '', () => {\n        editor.execCommand('mceLink');\n      });\n    };\n\n    const setupButtons = editor => {\n      editor.ui.registry.addToggleButton('link', {\n        icon: 'link',\n        tooltip: 'Insert/edit link',\n        onAction: openDialog(editor),\n        onSetup: toggleLinkState(editor)\n      });\n      editor.ui.registry.addButton('openlink', {\n        icon: 'new-tab',\n        tooltip: 'Open link',\n        onAction: gotoSelectedLink(editor),\n        onSetup: toggleGotoLinkState(editor)\n      });\n      editor.ui.registry.addButton('unlink', {\n        icon: 'unlink',\n        tooltip: 'Remove link',\n        onAction: () => unlink(editor),\n        onSetup: toggleUnlinkState(editor)\n      });\n    };\n    const setupMenuItems = editor => {\n      editor.ui.registry.addMenuItem('openlink', {\n        text: 'Open link',\n        icon: 'new-tab',\n        onAction: gotoSelectedLink(editor),\n        onSetup: toggleGotoLinkState(editor)\n      });\n      editor.ui.registry.addMenuItem('link', {\n        icon: 'link',\n        text: 'Link...',\n        shortcut: 'Meta+K',\n        onSetup: toggleLinkMenuState(editor),\n        onAction: openDialog(editor)\n      });\n      editor.ui.registry.addMenuItem('unlink', {\n        icon: 'unlink',\n        text: 'Remove link',\n        onAction: () => unlink(editor),\n        onSetup: toggleUnlinkState(editor)\n      });\n    };\n    const setupContextMenu = editor => {\n      const inLink = 'link unlink openlink';\n      const noLink = 'link';\n      editor.ui.registry.addContextMenu('link', {\n        update: element => {\n          const isEditable = editor.dom.isEditable(element);\n          if (!isEditable) {\n            return '';\n          }\n          return hasLinks(editor.dom.getParents(element, 'a')) ? inLink : noLink;\n        }\n      });\n    };\n    const setupContextToolbars = editor => {\n      const collapseSelectionToEnd = editor => {\n        editor.selection.collapse(false);\n      };\n      const onSetupLink = buttonApi => {\n        const node = editor.selection.getNode();\n        buttonApi.setEnabled(isInAnchor(editor, node));\n        return noop;\n      };\n      const getLinkText = value => {\n        const anchor = getAnchorElement(editor);\n        const onlyText = isOnlyTextSelected(editor);\n        if (anchor.isNone() && onlyText) {\n          const text = getAnchorText(editor.selection, anchor);\n          return someIf(text.length === 0, value);\n        } else {\n          return Optional.none();\n        }\n      };\n      editor.ui.registry.addContextForm('quicklink', {\n        launch: {\n          type: 'contextformtogglebutton',\n          icon: 'link',\n          tooltip: 'Link',\n          onSetup: toggleLinkState(editor)\n        },\n        label: 'Link',\n        predicate: node => hasContextToolbar(editor) && isInAnchor(editor, node),\n        initValue: () => {\n          const elm = getAnchorElement(editor);\n          return elm.fold(constant(''), getHref);\n        },\n        commands: [\n          {\n            type: 'contextformtogglebutton',\n            icon: 'link',\n            tooltip: 'Link',\n            primary: true,\n            onSetup: buttonApi => {\n              const node = editor.selection.getNode();\n              buttonApi.setActive(isInAnchor(editor, node));\n              return toggleLinkState(editor)(buttonApi);\n            },\n            onAction: formApi => {\n              const value = formApi.getValue();\n              const text = getLinkText(value);\n              const attachState = {\n                href: value,\n                attach: noop\n              };\n              link(editor, attachState, {\n                href: value,\n                text,\n                title: Optional.none(),\n                rel: Optional.none(),\n                target: Optional.none(),\n                class: Optional.none()\n              });\n              collapseSelectionToEnd(editor);\n              formApi.hide();\n            }\n          },\n          {\n            type: 'contextformbutton',\n            icon: 'unlink',\n            tooltip: 'Remove link',\n            onSetup: onSetupLink,\n            onAction: formApi => {\n              unlink(editor);\n              formApi.hide();\n            }\n          },\n          {\n            type: 'contextformbutton',\n            icon: 'new-tab',\n            tooltip: 'Open link',\n            onSetup: onSetupLink,\n            onAction: formApi => {\n              gotoSelectedLink(editor)();\n              formApi.hide();\n            }\n          }\n        ]\n      });\n    };\n\n    var Plugin = () => {\n      global$5.add('link', editor => {\n        register$1(editor);\n        setupButtons(editor);\n        setupMenuItems(editor);\n        setupContextMenu(editor);\n        setupContextToolbars(editor);\n        setupGotoLinks(editor);\n        register(editor);\n        setup(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n", "/**\n * TinyMCE version 6.8.6 (TBD)\n */\n\n(function () {\n    'use strict';\n\n    var global$7 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const hasProto = (v, constructor, predicate) => {\n      var _a;\n      if (predicate(v, constructor.prototype)) {\n        return true;\n      } else {\n        return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;\n      }\n    };\n    const typeOf = x => {\n      const t = typeof x;\n      if (x === null) {\n        return 'null';\n      } else if (t === 'object' && Array.isArray(x)) {\n        return 'array';\n      } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {\n        return 'string';\n      } else {\n        return t;\n      }\n    };\n    const isType$1 = type => value => typeOf(value) === type;\n    const isSimpleType = type => value => typeof value === type;\n    const isString = isType$1('string');\n    const isObject = isType$1('object');\n    const isArray = isType$1('array');\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 compose1 = (fbc, fab) => a => fbc(fab(a));\n    const constant = value => {\n      return () => {\n        return value;\n      };\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 never = constant(false);\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$1 = (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 map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each$1 = (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 filter$1 = (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 groupBy = (xs, f) => {\n      if (xs.length === 0) {\n        return [];\n      } else {\n        let wasType = f(xs[0]);\n        const r = [];\n        let group = [];\n        for (let i = 0, len = xs.length; i < len; i++) {\n          const x = xs[i];\n          const type = f(x);\n          if (type !== wasType) {\n            r.push(group);\n            group = [];\n          }\n          wasType = type;\n          group.push(x);\n        }\n        if (group.length !== 0) {\n          r.push(group);\n        }\n        return r;\n      }\n    };\n    const foldl = (xs, f, acc) => {\n      each$1(xs, (x, i) => {\n        acc = f(acc, x, i);\n      });\n      return acc;\n    };\n    const findUntil = (xs, pred, until) => {\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          return Optional.some(x);\n        } else if (until(x, i)) {\n          break;\n        }\n      }\n      return Optional.none();\n    };\n    const find = (xs, pred) => {\n      return findUntil(xs, pred, never);\n    };\n    const flatten = xs => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; ++i) {\n        if (!isArray(xs[i])) {\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        }\n        nativePush.apply(r, xs[i]);\n      }\n      return r;\n    };\n    const bind = (xs, f) => flatten(map(xs, f));\n    const reverse = xs => {\n      const r = nativeSlice.call(xs, 0);\n      r.reverse();\n      return r;\n    };\n    const get$1 = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();\n    const head = xs => get$1(xs, 0);\n    const last = xs => get$1(xs, xs.length - 1);\n    const unique = (xs, comparator) => {\n      const r = [];\n      const isDuplicated = isFunction(comparator) ? x => exists(r, i => comparator(i, x)) : x => contains$1(r, x);\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (!isDuplicated(x)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n\n    const is$2 = (lhs, rhs, comparator = tripleEquals) => lhs.exists(left => comparator(left, rhs));\n    const equals = (lhs, rhs, comparator = tripleEquals) => lift2(lhs, rhs, comparator).getOr(lhs.isNone() && rhs.isNone());\n    const lift2 = (oa, ob, f) => oa.isSome() && ob.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie())) : Optional.none();\n\n    const COMMENT = 8;\n    const DOCUMENT = 9;\n    const DOCUMENT_FRAGMENT = 11;\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom$1(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom$1(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom$1(node);\n    };\n    const fromDom$1 = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return { dom: node };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom$1);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom: fromDom$1,\n      fromPoint\n    };\n\n    const is$1 = (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\n    const eq = (e1, e2) => e1.dom === e2.dom;\n    const contains = (e1, e2) => {\n      const d1 = e1.dom;\n      const d2 = e2.dom;\n      return d1 === d2 ? false : d1.contains(d2);\n    };\n    const is = is$1;\n\n    const Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const path = (parts, scope) => {\n      let o = scope !== undefined && scope !== null ? scope : Global;\n      for (let i = 0; i < parts.length && o !== undefined && o !== null; ++i) {\n        o = o[parts[i]];\n      }\n      return o;\n    };\n    const resolve = (p, scope) => {\n      const parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    const unsafe = (name, scope) => {\n      return resolve(name, scope);\n    };\n    const getOrDie = (name, scope) => {\n      const actual = unsafe(name, scope);\n      if (actual === undefined || actual === null) {\n        throw new Error(name + ' not available on this browser');\n      }\n      return actual;\n    };\n\n    const getPrototypeOf = Object.getPrototypeOf;\n    const sandHTMLElement = scope => {\n      return getOrDie('HTMLElement', scope);\n    };\n    const isPrototypeOf = x => {\n      const scope = resolve('ownerDocument.defaultView', x);\n      return isObject(x) && (sandHTMLElement(scope).prototype.isPrototypeOf(x) || /^HTML\\w*Element$/.test(getPrototypeOf(x).constructor.name));\n    };\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 isHTMLElement = element => isElement$1(element) && isPrototypeOf(element.dom);\n    const isElement$1 = isType(ELEMENT);\n    const isText = isType(TEXT);\n    const isDocument = isType(DOCUMENT);\n    const isDocumentFragment = isType(DOCUMENT_FRAGMENT);\n    const isTag = tag => e => isElement$1(e) && name(e) === tag;\n\n    const owner = element => SugarElement.fromDom(element.dom.ownerDocument);\n    const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);\n    const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);\n    const parentElement = element => Optional.from(element.dom.parentElement).map(SugarElement.fromDom);\n    const nextSibling = element => Optional.from(element.dom.nextSibling).map(SugarElement.fromDom);\n    const children = element => map(element.dom.childNodes, SugarElement.fromDom);\n    const child = (element, index) => {\n      const cs = element.dom.childNodes;\n      return Optional.from(cs[index]).map(SugarElement.fromDom);\n    };\n    const firstChild = element => child(element, 0);\n    const lastChild = element => child(element, element.dom.childNodes.length - 1);\n\n    const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);\n    const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);\n    const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;\n    const getShadowRoot = e => {\n      const r = getRootNode(e);\n      return isShadowRoot(r) ? Optional.some(r) : Optional.none();\n    };\n    const getShadowHost = e => SugarElement.fromDom(e.dom.host);\n\n    const inBody = element => {\n      const dom = isText(element) ? element.dom.parentNode : element.dom;\n      if (dom === undefined || dom === null || dom.ownerDocument === null) {\n        return false;\n      }\n      const doc = dom.ownerDocument;\n      return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost));\n    };\n\n    var ClosestOrAncestor = (is, ancestor, scope, a, isRoot) => {\n      if (is(scope, a)) {\n        return Optional.some(scope);\n      } else if (isFunction(isRoot) && isRoot(scope)) {\n        return Optional.none();\n      } else {\n        return ancestor(scope, a, isRoot);\n      }\n    };\n\n    const ancestor$3 = (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$3, scope, predicate, isRoot);\n    };\n\n    const ancestor$2 = (scope, selector, isRoot) => ancestor$3(scope, e => is$1(e, selector), isRoot);\n    const closest$1 = (scope, selector, isRoot) => {\n      const is = (element, selector) => is$1(element, selector);\n      return ClosestOrAncestor(is, ancestor$2, scope, selector, isRoot);\n    };\n\n    const closest = target => closest$1(target, '[contenteditable]');\n    const isEditable = (element, assumeEditable = false) => {\n      if (inBody(element)) {\n        return element.dom.isContentEditable;\n      } else {\n        return closest(element).fold(constant(assumeEditable), editable => getRaw(editable) === 'true');\n      }\n    };\n    const getRaw = element => element.dom.contentEditable;\n\n    const before$1 = (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 = (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$1(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\n    const before = (marker, elements) => {\n      each$1(elements, x => {\n        before$1(marker, x);\n      });\n    };\n    const append = (parent, elements) => {\n      each$1(elements, x => {\n        append$1(parent, x);\n      });\n    };\n\n    const empty = element => {\n      element.dom.textContent = '';\n      each$1(children(element), rogue => {\n        remove(rogue);\n      });\n    };\n    const remove = element => {\n      const dom = element.dom;\n      if (dom.parentNode !== null) {\n        dom.parentNode.removeChild(dom);\n      }\n    };\n\n    var global$6 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');\n\n    var global$5 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n    const fromDom = nodes => map(nodes, SugarElement.fromDom);\n\n    const keys = Object.keys;\n    const each = (obj, f) => {\n      const props = keys(obj);\n      for (let k = 0, len = props.length; k < len; k++) {\n        const i = props[k];\n        const x = obj[i];\n        f(x, i);\n      }\n    };\n    const objAcc = r => (x, i) => {\n      r[i] = x;\n    };\n    const internalFilter = (obj, pred, onTrue, onFalse) => {\n      each(obj, (x, i) => {\n        (pred(x, i) ? onTrue : onFalse)(x, i);\n      });\n    };\n    const filter = (obj, pred) => {\n      const t = {};\n      internalFilter(obj, pred, objAcc(t), noop);\n      return t;\n    };\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 setAll = (element, attrs) => {\n      const dom = element.dom;\n      each(attrs, (v, k) => {\n        rawSet(dom, k, v);\n      });\n    };\n    const clone$1 = element => foldl(element.dom.attributes, (acc, attr) => {\n      acc[attr.name] = attr.value;\n      return acc;\n    }, {});\n\n    const clone = (original, isDeep) => SugarElement.fromDom(original.dom.cloneNode(isDeep));\n    const deep = original => clone(original, true);\n    const shallowAs = (original, tag) => {\n      const nu = SugarElement.fromTag(tag);\n      const attributes = clone$1(original);\n      setAll(nu, attributes);\n      return nu;\n    };\n    const mutate = (original, tag) => {\n      const nu = shallowAs(original, tag);\n      after(original, nu);\n      const children$1 = children(original);\n      append(nu, children$1);\n      remove(original);\n      return nu;\n    };\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    const matchNodeName = name => node => isNonNullable(node) && node.nodeName.toLowerCase() === name;\n    const matchNodeNames = regex => node => isNonNullable(node) && regex.test(node.nodeName);\n    const isTextNode$1 = node => isNonNullable(node) && node.nodeType === 3;\n    const isElement = node => isNonNullable(node) && node.nodeType === 1;\n    const isListNode = matchNodeNames(/^(OL|UL|DL)$/);\n    const isOlUlNode = matchNodeNames(/^(OL|UL)$/);\n    const isOlNode = matchNodeName('ol');\n    const isListItemNode = matchNodeNames(/^(LI|DT|DD)$/);\n    const isDlItemNode = matchNodeNames(/^(DT|DD)$/);\n    const isTableCellNode = matchNodeNames(/^(TH|TD)$/);\n    const isBr = matchNodeName('br');\n    const isFirstChild = node => {\n      var _a;\n      return ((_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.firstChild) === node;\n    };\n    const isTextBlock = (editor, node) => isNonNullable(node) && node.nodeName in editor.schema.getTextBlockElements();\n    const isBlock = (node, blockElements) => isNonNullable(node) && node.nodeName in blockElements;\n    const isVoid = (editor, node) => isNonNullable(node) && node.nodeName in editor.schema.getVoidElements();\n    const isBogusBr = (dom, node) => {\n      if (!isBr(node)) {\n        return false;\n      }\n      return dom.isBlock(node.nextSibling) && !isBr(node.previousSibling);\n    };\n    const isEmpty$2 = (dom, elm, keepBookmarks) => {\n      const empty = dom.isEmpty(elm);\n      if (keepBookmarks && dom.select('span[data-mce-type=bookmark]', elm).length > 0) {\n        return false;\n      }\n      return empty;\n    };\n    const isChildOfBody = (dom, elm) => dom.isChildOf(elm, dom.getRoot());\n\n    const option = name => editor => editor.options.get(name);\n    const register$3 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('lists_indent_on_tab', {\n        processor: 'boolean',\n        default: true\n      });\n    };\n    const shouldIndentOnTab = option('lists_indent_on_tab');\n    const getForcedRootBlock = option('forced_root_block');\n    const getForcedRootBlockAttrs = option('forced_root_block_attrs');\n\n    const createTextBlock = (editor, contentNode) => {\n      const dom = editor.dom;\n      const blockElements = editor.schema.getBlockElements();\n      const fragment = dom.createFragment();\n      const blockName = getForcedRootBlock(editor);\n      const blockAttrs = getForcedRootBlockAttrs(editor);\n      let node;\n      let textBlock;\n      let hasContentNode = false;\n      textBlock = dom.create(blockName, blockAttrs);\n      if (!isBlock(contentNode.firstChild, blockElements)) {\n        fragment.appendChild(textBlock);\n      }\n      while (node = contentNode.firstChild) {\n        const nodeName = node.nodeName;\n        if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) {\n          hasContentNode = true;\n        }\n        if (isBlock(node, blockElements)) {\n          fragment.appendChild(node);\n          textBlock = null;\n        } else {\n          if (!textBlock) {\n            textBlock = dom.create(blockName, blockAttrs);\n            fragment.appendChild(textBlock);\n          }\n          textBlock.appendChild(node);\n        }\n      }\n      if (!hasContentNode && textBlock) {\n        textBlock.appendChild(dom.create('br', { 'data-mce-bogus': '1' }));\n      }\n      return fragment;\n    };\n\n    const DOM$2 = global$3.DOM;\n    const splitList = (editor, list, li) => {\n      const removeAndKeepBookmarks = targetNode => {\n        const parent = targetNode.parentNode;\n        if (parent) {\n          global$2.each(bookmarks, node => {\n            parent.insertBefore(node, li.parentNode);\n          });\n        }\n        DOM$2.remove(targetNode);\n      };\n      const bookmarks = DOM$2.select('span[data-mce-type=\"bookmark\"]', list);\n      const newBlock = createTextBlock(editor, li);\n      const tmpRng = DOM$2.createRng();\n      tmpRng.setStartAfter(li);\n      tmpRng.setEndAfter(list);\n      const fragment = tmpRng.extractContents();\n      for (let node = fragment.firstChild; node; node = node.firstChild) {\n        if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) {\n          DOM$2.remove(node);\n          break;\n        }\n      }\n      if (!editor.dom.isEmpty(fragment)) {\n        DOM$2.insertAfter(fragment, list);\n      }\n      DOM$2.insertAfter(newBlock, list);\n      const parent = li.parentElement;\n      if (parent && isEmpty$2(editor.dom, parent)) {\n        removeAndKeepBookmarks(parent);\n      }\n      DOM$2.remove(li);\n      if (isEmpty$2(editor.dom, list)) {\n        DOM$2.remove(list);\n      }\n    };\n\n    const isDescriptionDetail = isTag('dd');\n    const isDescriptionTerm = isTag('dt');\n    const outdentDlItem = (editor, item) => {\n      if (isDescriptionDetail(item)) {\n        mutate(item, 'dt');\n      } else if (isDescriptionTerm(item)) {\n        parentElement(item).each(dl => splitList(editor, dl.dom, item.dom));\n      }\n    };\n    const indentDlItem = item => {\n      if (isDescriptionTerm(item)) {\n        mutate(item, 'dd');\n      }\n    };\n    const dlIndentation = (editor, indentation, dlItems) => {\n      if (indentation === 'Indent') {\n        each$1(dlItems, indentDlItem);\n      } else {\n        each$1(dlItems, item => outdentDlItem(editor, item));\n      }\n    };\n\n    const getNormalizedPoint = (container, offset) => {\n      if (isTextNode$1(container)) {\n        return {\n          container,\n          offset\n        };\n      }\n      const node = global$6.getNode(container, offset);\n      if (isTextNode$1(node)) {\n        return {\n          container: node,\n          offset: offset >= container.childNodes.length ? node.data.length : 0\n        };\n      } else if (node.previousSibling && isTextNode$1(node.previousSibling)) {\n        return {\n          container: node.previousSibling,\n          offset: node.previousSibling.data.length\n        };\n      } else if (node.nextSibling && isTextNode$1(node.nextSibling)) {\n        return {\n          container: node.nextSibling,\n          offset: 0\n        };\n      }\n      return {\n        container,\n        offset\n      };\n    };\n    const normalizeRange = rng => {\n      const outRng = rng.cloneRange();\n      const rangeStart = getNormalizedPoint(rng.startContainer, rng.startOffset);\n      outRng.setStart(rangeStart.container, rangeStart.offset);\n      const rangeEnd = getNormalizedPoint(rng.endContainer, rng.endOffset);\n      outRng.setEnd(rangeEnd.container, rangeEnd.offset);\n      return outRng;\n    };\n\n    const listNames = [\n      'OL',\n      'UL',\n      'DL'\n    ];\n    const listSelector = listNames.join(',');\n    const getParentList = (editor, node) => {\n      const selectionStart = node || editor.selection.getStart(true);\n      return editor.dom.getParent(selectionStart, listSelector, getClosestListHost(editor, selectionStart));\n    };\n    const isParentListSelected = (parentList, selectedBlocks) => isNonNullable(parentList) && selectedBlocks.length === 1 && selectedBlocks[0] === parentList;\n    const findSubLists = parentList => filter$1(parentList.querySelectorAll(listSelector), isListNode);\n    const getSelectedSubLists = editor => {\n      const parentList = getParentList(editor);\n      const selectedBlocks = editor.selection.getSelectedBlocks();\n      if (isParentListSelected(parentList, selectedBlocks)) {\n        return findSubLists(parentList);\n      } else {\n        return filter$1(selectedBlocks, elm => {\n          return isListNode(elm) && parentList !== elm;\n        });\n      }\n    };\n    const findParentListItemsNodes = (editor, elms) => {\n      const listItemsElms = global$2.map(elms, elm => {\n        const parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListHost(editor, elm));\n        return parentLi ? parentLi : elm;\n      });\n      return unique(listItemsElms);\n    };\n    const getSelectedListItems = editor => {\n      const selectedBlocks = editor.selection.getSelectedBlocks();\n      return filter$1(findParentListItemsNodes(editor, selectedBlocks), isListItemNode);\n    };\n    const getSelectedDlItems = editor => filter$1(getSelectedListItems(editor), isDlItemNode);\n    const getClosestEditingHost = (editor, elm) => {\n      const parentTableCell = editor.dom.getParents(elm, 'TD,TH');\n      return parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody();\n    };\n    const isListHost = (schema, node) => !isListNode(node) && !isListItemNode(node) && exists(listNames, listName => schema.isValidChild(node.nodeName, listName));\n    const getClosestListHost = (editor, elm) => {\n      const parentBlocks = editor.dom.getParents(elm, editor.dom.isBlock);\n      const parentBlock = find(parentBlocks, elm => isListHost(editor.schema, elm));\n      return parentBlock.getOr(editor.getBody());\n    };\n    const isListInsideAnLiWithFirstAndLastNotListElement = list => parent(list).exists(parent => isListItemNode(parent.dom) && firstChild(parent).exists(firstChild => !isListNode(firstChild.dom)) && lastChild(parent).exists(lastChild => !isListNode(lastChild.dom)));\n    const findLastParentListNode = (editor, elm) => {\n      const parentLists = editor.dom.getParents(elm, 'ol,ul', getClosestListHost(editor, elm));\n      return last(parentLists);\n    };\n    const getSelectedLists = editor => {\n      const firstList = findLastParentListNode(editor, editor.selection.getStart());\n      const subsequentLists = filter$1(editor.selection.getSelectedBlocks(), isOlUlNode);\n      return firstList.toArray().concat(subsequentLists);\n    };\n    const getParentLists = editor => {\n      const elm = editor.selection.getStart();\n      return editor.dom.getParents(elm, 'ol,ul', getClosestListHost(editor, elm));\n    };\n    const getSelectedListRoots = editor => {\n      const selectedLists = getSelectedLists(editor);\n      const parentLists = getParentLists(editor);\n      return find(parentLists, p => isListInsideAnLiWithFirstAndLastNotListElement(SugarElement.fromDom(p))).fold(() => getUniqueListRoots(editor, selectedLists), l => [l]);\n    };\n    const getUniqueListRoots = (editor, lists) => {\n      const listRoots = map(lists, list => findLastParentListNode(editor, list).getOr(list));\n      return unique(listRoots);\n    };\n\n    const isCustomList = list => /\\btox\\-/.test(list.className);\n    const inList = (parents, listName) => findUntil(parents, isListNode, isTableCellNode).exists(list => list.nodeName === listName && !isCustomList(list));\n    const isWithinNonEditable = (editor, element) => element !== null && !editor.dom.isEditable(element);\n    const selectionIsWithinNonEditableList = editor => {\n      const parentList = getParentList(editor);\n      return isWithinNonEditable(editor, parentList);\n    };\n    const isWithinNonEditableList = (editor, element) => {\n      const parentList = editor.dom.getParent(element, 'ol,ul,dl');\n      return isWithinNonEditable(editor, parentList);\n    };\n    const setNodeChangeHandler = (editor, nodeChangeHandler) => {\n      const initialNode = editor.selection.getNode();\n      nodeChangeHandler({\n        parents: editor.dom.getParents(initialNode),\n        element: initialNode\n      });\n      editor.on('NodeChange', nodeChangeHandler);\n      return () => editor.off('NodeChange', nodeChangeHandler);\n    };\n\n    const fromElements = (elements, scope) => {\n      const doc = scope || document;\n      const fragment = doc.createDocumentFragment();\n      each$1(elements, element => {\n        fragment.appendChild(element.dom);\n      });\n      return SugarElement.fromDom(fragment);\n    };\n\n    const fireListEvent = (editor, action, element) => editor.dispatch('ListMutation', {\n      action,\n      element\n    });\n\n    const blank = r => s => s.replace(r, '');\n    const trim = blank(/^\\s+|\\s+$/g);\n    const isNotEmpty = s => s.length > 0;\n    const isEmpty$1 = s => !isNotEmpty(s);\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 set = (element, property, value) => {\n      const dom = element.dom;\n      internalSet(dom, property, value);\n    };\n\n    const isList = el => is(el, 'OL,UL');\n    const isListItem = el => is(el, 'LI');\n    const hasFirstChildList = el => firstChild(el).exists(isList);\n    const hasLastChildList = el => lastChild(el).exists(isList);\n\n    const isEntryList = entry => 'listAttributes' in entry;\n    const isEntryComment = entry => 'isComment' in entry;\n    const isEntryFragment = entry => 'isFragment' in entry;\n    const isIndented = entry => entry.depth > 0;\n    const isSelected = entry => entry.isSelected;\n    const cloneItemContent = li => {\n      const children$1 = children(li);\n      const content = hasLastChildList(li) ? children$1.slice(0, -1) : children$1;\n      return map(content, deep);\n    };\n    const createEntry = (li, depth, isSelected) => parent(li).filter(isElement$1).map(list => ({\n      depth,\n      dirty: false,\n      isSelected,\n      content: cloneItemContent(li),\n      itemAttributes: clone$1(li),\n      listAttributes: clone$1(list),\n      listType: name(list),\n      isInPreviousLi: false\n    }));\n\n    const joinSegment = (parent, child) => {\n      append$1(parent.item, child.list);\n    };\n    const joinSegments = segments => {\n      for (let i = 1; i < segments.length; i++) {\n        joinSegment(segments[i - 1], segments[i]);\n      }\n    };\n    const appendSegments = (head$1, tail) => {\n      lift2(last(head$1), head(tail), joinSegment);\n    };\n    const createSegment = (scope, listType) => {\n      const segment = {\n        list: SugarElement.fromTag(listType, scope),\n        item: SugarElement.fromTag('li', scope)\n      };\n      append$1(segment.list, segment.item);\n      return segment;\n    };\n    const createSegments = (scope, entry, size) => {\n      const segments = [];\n      for (let i = 0; i < size; i++) {\n        segments.push(createSegment(scope, isEntryList(entry) ? entry.listType : entry.parentListType));\n      }\n      return segments;\n    };\n    const populateSegments = (segments, entry) => {\n      for (let i = 0; i < segments.length - 1; i++) {\n        set(segments[i].item, 'list-style-type', 'none');\n      }\n      last(segments).each(segment => {\n        if (isEntryList(entry)) {\n          setAll(segment.list, entry.listAttributes);\n          setAll(segment.item, entry.itemAttributes);\n        }\n        append(segment.item, entry.content);\n      });\n    };\n    const normalizeSegment = (segment, entry) => {\n      if (name(segment.list) !== entry.listType) {\n        segment.list = mutate(segment.list, entry.listType);\n      }\n      setAll(segment.list, entry.listAttributes);\n    };\n    const createItem = (scope, attr, content) => {\n      const item = SugarElement.fromTag('li', scope);\n      setAll(item, attr);\n      append(item, content);\n      return item;\n    };\n    const appendItem = (segment, item) => {\n      append$1(segment.list, item);\n      segment.item = item;\n    };\n    const writeShallow = (scope, cast, entry) => {\n      const newCast = cast.slice(0, entry.depth);\n      last(newCast).each(segment => {\n        if (isEntryList(entry)) {\n          const item = createItem(scope, entry.itemAttributes, entry.content);\n          appendItem(segment, item);\n          normalizeSegment(segment, entry);\n        } else if (isEntryFragment(entry)) {\n          append(segment.item, entry.content);\n        } else {\n          const item = SugarElement.fromHtml(`<!--${ entry.content }-->`);\n          append$1(segment.list, item);\n        }\n      });\n      return newCast;\n    };\n    const writeDeep = (scope, cast, entry) => {\n      const segments = createSegments(scope, entry, entry.depth - cast.length);\n      joinSegments(segments);\n      populateSegments(segments, entry);\n      appendSegments(cast, segments);\n      return cast.concat(segments);\n    };\n    const composeList = (scope, entries) => {\n      let firstCommentEntryOpt = Optional.none();\n      const cast = foldl(entries, (cast, entry, i) => {\n        if (!isEntryComment(entry)) {\n          return entry.depth > cast.length ? writeDeep(scope, cast, entry) : writeShallow(scope, cast, entry);\n        } else {\n          if (i === 0) {\n            firstCommentEntryOpt = Optional.some(entry);\n            return cast;\n          }\n          return writeShallow(scope, cast, entry);\n        }\n      }, []);\n      firstCommentEntryOpt.each(firstCommentEntry => {\n        const item = SugarElement.fromHtml(`<!--${ firstCommentEntry.content }-->`);\n        head(cast).each(fistCast => {\n          prepend(fistCast.list, item);\n        });\n      });\n      return head(cast).map(segment => segment.list);\n    };\n\n    const indentEntry = (indentation, entry) => {\n      switch (indentation) {\n      case 'Indent':\n        entry.depth++;\n        break;\n      case 'Outdent':\n        entry.depth--;\n        break;\n      case 'Flatten':\n        entry.depth = 0;\n      }\n      entry.dirty = true;\n    };\n\n    const cloneListProperties = (target, source) => {\n      if (isEntryList(target) && isEntryList(source)) {\n        target.listType = source.listType;\n        target.listAttributes = { ...source.listAttributes };\n      }\n    };\n    const cleanListProperties = entry => {\n      entry.listAttributes = filter(entry.listAttributes, (_value, key) => key !== 'start');\n    };\n    const closestSiblingEntry = (entries, start) => {\n      const depth = entries[start].depth;\n      const matches = entry => entry.depth === depth && !entry.dirty;\n      const until = entry => entry.depth < depth;\n      return findUntil(reverse(entries.slice(0, start)), matches, until).orThunk(() => findUntil(entries.slice(start + 1), matches, until));\n    };\n    const normalizeEntries = entries => {\n      each$1(entries, (entry, i) => {\n        closestSiblingEntry(entries, i).fold(() => {\n          if (entry.dirty && isEntryList(entry)) {\n            cleanListProperties(entry);\n          }\n        }, matchingEntry => cloneListProperties(entry, matchingEntry));\n      });\n      return entries;\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 parseSingleItem = (depth, itemSelection, selectionState, item) => {\n      var _a;\n      if (isComment(item)) {\n        return [{\n            depth: depth + 1,\n            content: (_a = item.dom.nodeValue) !== null && _a !== void 0 ? _a : '',\n            dirty: false,\n            isSelected: false,\n            isComment: true\n          }];\n      }\n      itemSelection.each(selection => {\n        if (eq(selection.start, item)) {\n          selectionState.set(true);\n        }\n      });\n      const currentItemEntry = createEntry(item, depth, selectionState.get());\n      itemSelection.each(selection => {\n        if (eq(selection.end, item)) {\n          selectionState.set(false);\n        }\n      });\n      const childListEntries = lastChild(item).filter(isList).map(list => parseList(depth, itemSelection, selectionState, list)).getOr([]);\n      return currentItemEntry.toArray().concat(childListEntries);\n    };\n    const parseItem = (depth, itemSelection, selectionState, item) => firstChild(item).filter(isList).fold(() => parseSingleItem(depth, itemSelection, selectionState, item), list => {\n      const parsedSiblings = foldl(children(item), (acc, liChild, i) => {\n        if (i === 0) {\n          return acc;\n        } else {\n          if (isListItem(liChild)) {\n            return acc.concat(parseSingleItem(depth, itemSelection, selectionState, liChild));\n          } else {\n            const fragment = {\n              isFragment: true,\n              depth,\n              content: [liChild],\n              isSelected: false,\n              dirty: false,\n              parentListType: name(list)\n            };\n            return acc.concat(fragment);\n          }\n        }\n      }, []);\n      return parseList(depth, itemSelection, selectionState, list).concat(parsedSiblings);\n    });\n    const parseList = (depth, itemSelection, selectionState, list) => bind(children(list), element => {\n      const parser = isList(element) ? parseList : parseItem;\n      const newDepth = depth + 1;\n      return parser(newDepth, itemSelection, selectionState, element);\n    });\n    const parseLists = (lists, itemSelection) => {\n      const selectionState = Cell(false);\n      const initialDepth = 0;\n      return map(lists, list => ({\n        sourceList: list,\n        entries: parseList(initialDepth, itemSelection, selectionState, list)\n      }));\n    };\n\n    const outdentedComposer = (editor, entries) => {\n      const normalizedEntries = normalizeEntries(entries);\n      return map(normalizedEntries, entry => {\n        const content = !isEntryComment(entry) ? fromElements(entry.content) : fromElements([SugarElement.fromHtml(`<!--${ entry.content }-->`)]);\n        return SugarElement.fromDom(createTextBlock(editor, content.dom));\n      });\n    };\n    const indentedComposer = (editor, entries) => {\n      const normalizedEntries = normalizeEntries(entries);\n      return composeList(editor.contentDocument, normalizedEntries).toArray();\n    };\n    const composeEntries = (editor, entries) => bind(groupBy(entries, isIndented), entries => {\n      const groupIsIndented = head(entries).exists(isIndented);\n      return groupIsIndented ? indentedComposer(editor, entries) : outdentedComposer(editor, entries);\n    });\n    const indentSelectedEntries = (entries, indentation) => {\n      each$1(filter$1(entries, isSelected), entry => indentEntry(indentation, entry));\n    };\n    const getItemSelection = editor => {\n      const selectedListItems = map(getSelectedListItems(editor), SugarElement.fromDom);\n      return lift2(find(selectedListItems, not(hasFirstChildList)), find(reverse(selectedListItems), not(hasFirstChildList)), (start, end) => ({\n        start,\n        end\n      }));\n    };\n    const listIndentation = (editor, lists, indentation) => {\n      const entrySets = parseLists(lists, getItemSelection(editor));\n      each$1(entrySets, entrySet => {\n        indentSelectedEntries(entrySet.entries, indentation);\n        const composedLists = composeEntries(editor, entrySet.entries);\n        each$1(composedLists, composedList => {\n          fireListEvent(editor, indentation === 'Indent' ? 'IndentList' : 'OutdentList', composedList.dom);\n        });\n        before(entrySet.sourceList, composedLists);\n        remove(entrySet.sourceList);\n      });\n    };\n\n    const selectionIndentation = (editor, indentation) => {\n      const lists = fromDom(getSelectedListRoots(editor));\n      const dlItems = fromDom(getSelectedDlItems(editor));\n      let isHandled = false;\n      if (lists.length || dlItems.length) {\n        const bookmark = editor.selection.getBookmark();\n        listIndentation(editor, lists, indentation);\n        dlIndentation(editor, indentation, dlItems);\n        editor.selection.moveToBookmark(bookmark);\n        editor.selection.setRng(normalizeRange(editor.selection.getRng()));\n        editor.nodeChanged();\n        isHandled = true;\n      }\n      return isHandled;\n    };\n    const handleIndentation = (editor, indentation) => !selectionIsWithinNonEditableList(editor) && selectionIndentation(editor, indentation);\n    const indentListSelection = editor => handleIndentation(editor, 'Indent');\n    const outdentListSelection = editor => handleIndentation(editor, 'Outdent');\n    const flattenListSelection = editor => handleIndentation(editor, 'Flatten');\n\n    const zeroWidth = '\\uFEFF';\n    const isZwsp = char => char === zeroWidth;\n\n    const ancestor$1 = (scope, predicate, isRoot) => ancestor$3(scope, predicate, isRoot).isSome();\n\n    const ancestor = (element, target) => ancestor$1(element, curry(eq, target));\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.BookmarkManager');\n\n    const DOM$1 = global$3.DOM;\n    const createBookmark = rng => {\n      const bookmark = {};\n      const setupEndPoint = start => {\n        let container = rng[start ? 'startContainer' : 'endContainer'];\n        let offset = rng[start ? 'startOffset' : 'endOffset'];\n        if (isElement(container)) {\n          const offsetNode = DOM$1.create('span', { 'data-mce-type': 'bookmark' });\n          if (container.hasChildNodes()) {\n            offset = Math.min(offset, container.childNodes.length - 1);\n            if (start) {\n              container.insertBefore(offsetNode, container.childNodes[offset]);\n            } else {\n              DOM$1.insertAfter(offsetNode, container.childNodes[offset]);\n            }\n          } else {\n            container.appendChild(offsetNode);\n          }\n          container = offsetNode;\n          offset = 0;\n        }\n        bookmark[start ? 'startContainer' : 'endContainer'] = container;\n        bookmark[start ? 'startOffset' : 'endOffset'] = offset;\n      };\n      setupEndPoint(true);\n      if (!rng.collapsed) {\n        setupEndPoint();\n      }\n      return bookmark;\n    };\n    const resolveBookmark = bookmark => {\n      const restoreEndPoint = start => {\n        const nodeIndex = container => {\n          var _a;\n          let node = (_a = container.parentNode) === null || _a === void 0 ? void 0 : _a.firstChild;\n          let idx = 0;\n          while (node) {\n            if (node === container) {\n              return idx;\n            }\n            if (!isElement(node) || node.getAttribute('data-mce-type') !== 'bookmark') {\n              idx++;\n            }\n            node = node.nextSibling;\n          }\n          return -1;\n        };\n        let container = bookmark[start ? 'startContainer' : 'endContainer'];\n        let offset = bookmark[start ? 'startOffset' : 'endOffset'];\n        if (!container) {\n          return;\n        }\n        if (isElement(container) && container.parentNode) {\n          const node = container;\n          offset = nodeIndex(container);\n          container = container.parentNode;\n          DOM$1.remove(node);\n          if (!container.hasChildNodes() && DOM$1.isBlock(container)) {\n            container.appendChild(DOM$1.create('br'));\n          }\n        }\n        bookmark[start ? 'startContainer' : 'endContainer'] = container;\n        bookmark[start ? 'startOffset' : 'endOffset'] = offset;\n      };\n      restoreEndPoint(true);\n      restoreEndPoint();\n      const rng = DOM$1.createRng();\n      rng.setStart(bookmark.startContainer, bookmark.startOffset);\n      if (bookmark.endContainer) {\n        rng.setEnd(bookmark.endContainer, bookmark.endOffset);\n      }\n      return normalizeRange(rng);\n    };\n\n    const listToggleActionFromListName = listName => {\n      switch (listName) {\n      case 'UL':\n        return 'ToggleUlList';\n      case 'OL':\n        return 'ToggleOlList';\n      case 'DL':\n        return 'ToggleDLList';\n      }\n    };\n\n    const updateListStyle = (dom, el, detail) => {\n      const type = detail['list-style-type'] ? detail['list-style-type'] : null;\n      dom.setStyle(el, 'list-style-type', type);\n    };\n    const setAttribs = (elm, attrs) => {\n      global$2.each(attrs, (value, key) => {\n        elm.setAttribute(key, value);\n      });\n    };\n    const updateListAttrs = (dom, el, detail) => {\n      setAttribs(el, detail['list-attributes']);\n      global$2.each(dom.select('li', el), li => {\n        setAttribs(li, detail['list-item-attributes']);\n      });\n    };\n    const updateListWithDetails = (dom, el, detail) => {\n      updateListStyle(dom, el, detail);\n      updateListAttrs(dom, el, detail);\n    };\n    const removeStyles = (dom, element, styles) => {\n      global$2.each(styles, style => dom.setStyle(element, style, ''));\n    };\n    const isInline = (editor, node) => isNonNullable(node) && !isBlock(node, editor.schema.getBlockElements());\n    const getEndPointNode = (editor, rng, start, root) => {\n      let container = rng[start ? 'startContainer' : 'endContainer'];\n      const offset = rng[start ? 'startOffset' : 'endOffset'];\n      if (isElement(container)) {\n        container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n      }\n      if (!start && isBr(container.nextSibling)) {\n        container = container.nextSibling;\n      }\n      const findBlockAncestor = node => {\n        while (!editor.dom.isBlock(node) && node.parentNode && root !== node) {\n          node = node.parentNode;\n        }\n        return node;\n      };\n      const findBetterContainer = (container, forward) => {\n        var _a;\n        const walker = new global$5(container, findBlockAncestor(container));\n        const dir = forward ? 'next' : 'prev';\n        let node;\n        while (node = walker[dir]()) {\n          if (!(isVoid(editor, node) || isZwsp(node.textContent) || ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.length) === 0)) {\n            return Optional.some(node);\n          }\n        }\n        return Optional.none();\n      };\n      if (start && isTextNode$1(container)) {\n        if (isZwsp(container.textContent)) {\n          container = findBetterContainer(container, false).getOr(container);\n        } else {\n          if (container.parentNode !== null && isInline(editor, container.parentNode)) {\n            container = container.parentNode;\n          }\n          while (container.previousSibling !== null && (isInline(editor, container.previousSibling) || isTextNode$1(container.previousSibling))) {\n            container = container.previousSibling;\n          }\n        }\n      }\n      if (!start && isTextNode$1(container)) {\n        if (isZwsp(container.textContent)) {\n          container = findBetterContainer(container, true).getOr(container);\n        } else {\n          if (container.parentNode !== null && isInline(editor, container.parentNode)) {\n            container = container.parentNode;\n          }\n          while (container.nextSibling !== null && (isInline(editor, container.nextSibling) || isTextNode$1(container.nextSibling))) {\n            container = container.nextSibling;\n          }\n        }\n      }\n      while (container.parentNode !== root) {\n        const parent = container.parentNode;\n        if (isTextBlock(editor, container)) {\n          return container;\n        }\n        if (/^(TD|TH)$/.test(parent.nodeName)) {\n          return container;\n        }\n        container = parent;\n      }\n      return container;\n    };\n    const getSelectedTextBlocks = (editor, rng, root) => {\n      const textBlocks = [];\n      const dom = editor.dom;\n      const startNode = getEndPointNode(editor, rng, true, root);\n      const endNode = getEndPointNode(editor, rng, false, root);\n      let block;\n      const siblings = [];\n      for (let node = startNode; node; node = node.nextSibling) {\n        siblings.push(node);\n        if (node === endNode) {\n          break;\n        }\n      }\n      global$2.each(siblings, node => {\n        var _a;\n        if (isTextBlock(editor, node)) {\n          textBlocks.push(node);\n          block = null;\n          return;\n        }\n        if (dom.isBlock(node) || isBr(node)) {\n          if (isBr(node)) {\n            dom.remove(node);\n          }\n          block = null;\n          return;\n        }\n        const nextSibling = node.nextSibling;\n        if (global$1.isBookmarkNode(node)) {\n          if (isListNode(nextSibling) || isTextBlock(editor, nextSibling) || !nextSibling && node.parentNode === root) {\n            block = null;\n            return;\n          }\n        }\n        if (!block) {\n          block = dom.create('p');\n          (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(block, node);\n          textBlocks.push(block);\n        }\n        block.appendChild(node);\n      });\n      return textBlocks;\n    };\n    const hasCompatibleStyle = (dom, sib, detail) => {\n      const sibStyle = dom.getStyle(sib, 'list-style-type');\n      let detailStyle = detail ? detail['list-style-type'] : '';\n      detailStyle = detailStyle === null ? '' : detailStyle;\n      return sibStyle === detailStyle;\n    };\n    const getRootSearchStart = (editor, range) => {\n      const start = editor.selection.getStart(true);\n      const startPoint = getEndPointNode(editor, range, true, editor.getBody());\n      if (ancestor(SugarElement.fromDom(startPoint), SugarElement.fromDom(range.commonAncestorContainer))) {\n        return range.commonAncestorContainer;\n      } else {\n        return start;\n      }\n    };\n    const applyList = (editor, listName, detail) => {\n      const rng = editor.selection.getRng();\n      let listItemName = 'LI';\n      const root = getClosestListHost(editor, getRootSearchStart(editor, rng));\n      const dom = editor.dom;\n      if (dom.getContentEditable(editor.selection.getNode()) === 'false') {\n        return;\n      }\n      listName = listName.toUpperCase();\n      if (listName === 'DL') {\n        listItemName = 'DT';\n      }\n      const bookmark = createBookmark(rng);\n      const selectedTextBlocks = filter$1(getSelectedTextBlocks(editor, rng, root), editor.dom.isEditable);\n      global$2.each(selectedTextBlocks, block => {\n        let listBlock;\n        const sibling = block.previousSibling;\n        const parent = block.parentNode;\n        if (!isListItemNode(parent)) {\n          if (sibling && isListNode(sibling) && sibling.nodeName === listName && hasCompatibleStyle(dom, sibling, detail)) {\n            listBlock = sibling;\n            block = dom.rename(block, listItemName);\n            sibling.appendChild(block);\n          } else {\n            listBlock = dom.create(listName);\n            parent.insertBefore(listBlock, block);\n            listBlock.appendChild(block);\n            block = dom.rename(block, listItemName);\n          }\n          removeStyles(dom, block, [\n            'margin',\n            'margin-right',\n            'margin-bottom',\n            'margin-left',\n            'margin-top',\n            'padding',\n            'padding-right',\n            'padding-bottom',\n            'padding-left',\n            'padding-top'\n          ]);\n          updateListWithDetails(dom, listBlock, detail);\n          mergeWithAdjacentLists(editor.dom, listBlock);\n        }\n      });\n      editor.selection.setRng(resolveBookmark(bookmark));\n    };\n    const isValidLists = (list1, list2) => {\n      return isListNode(list1) && list1.nodeName === (list2 === null || list2 === void 0 ? void 0 : list2.nodeName);\n    };\n    const hasSameListStyle = (dom, list1, list2) => {\n      const targetStyle = dom.getStyle(list1, 'list-style-type', true);\n      const style = dom.getStyle(list2, 'list-style-type', true);\n      return targetStyle === style;\n    };\n    const hasSameClasses = (elm1, elm2) => {\n      return elm1.className === elm2.className;\n    };\n    const shouldMerge = (dom, list1, list2) => {\n      return isValidLists(list1, list2) && hasSameListStyle(dom, list1, list2) && hasSameClasses(list1, list2);\n    };\n    const mergeWithAdjacentLists = (dom, listBlock) => {\n      let node;\n      let sibling = listBlock.nextSibling;\n      if (shouldMerge(dom, listBlock, sibling)) {\n        const liSibling = sibling;\n        while (node = liSibling.firstChild) {\n          listBlock.appendChild(node);\n        }\n        dom.remove(liSibling);\n      }\n      sibling = listBlock.previousSibling;\n      if (shouldMerge(dom, listBlock, sibling)) {\n        const liSibling = sibling;\n        while (node = liSibling.lastChild) {\n          listBlock.insertBefore(node, listBlock.firstChild);\n        }\n        dom.remove(liSibling);\n      }\n    };\n    const updateList$1 = (editor, list, listName, detail) => {\n      if (list.nodeName !== listName) {\n        const newList = editor.dom.rename(list, listName);\n        updateListWithDetails(editor.dom, newList, detail);\n        fireListEvent(editor, listToggleActionFromListName(listName), newList);\n      } else {\n        updateListWithDetails(editor.dom, list, detail);\n        fireListEvent(editor, listToggleActionFromListName(listName), list);\n      }\n    };\n    const updateCustomList = (editor, list, listName, detail) => {\n      list.classList.forEach((cls, _, classList) => {\n        if (cls.startsWith('tox-')) {\n          classList.remove(cls);\n          if (classList.length === 0) {\n            list.removeAttribute('class');\n          }\n        }\n      });\n      if (list.nodeName !== listName) {\n        const newList = editor.dom.rename(list, listName);\n        updateListWithDetails(editor.dom, newList, detail);\n        fireListEvent(editor, listToggleActionFromListName(listName), newList);\n      } else {\n        updateListWithDetails(editor.dom, list, detail);\n        fireListEvent(editor, listToggleActionFromListName(listName), list);\n      }\n    };\n    const toggleMultipleLists = (editor, parentList, lists, listName, detail) => {\n      const parentIsList = isListNode(parentList);\n      if (parentIsList && parentList.nodeName === listName && !hasListStyleDetail(detail) && !isCustomList(parentList)) {\n        flattenListSelection(editor);\n      } else {\n        applyList(editor, listName, detail);\n        const bookmark = createBookmark(editor.selection.getRng());\n        const allLists = parentIsList ? [\n          parentList,\n          ...lists\n        ] : lists;\n        const updateFunction = parentIsList && isCustomList(parentList) ? updateCustomList : updateList$1;\n        global$2.each(allLists, elm => {\n          updateFunction(editor, elm, listName, detail);\n        });\n        editor.selection.setRng(resolveBookmark(bookmark));\n      }\n    };\n    const hasListStyleDetail = detail => {\n      return 'list-style-type' in detail;\n    };\n    const toggleSingleList = (editor, parentList, listName, detail) => {\n      if (parentList === editor.getBody()) {\n        return;\n      }\n      if (parentList) {\n        if (parentList.nodeName === listName && !hasListStyleDetail(detail) && !isCustomList(parentList)) {\n          flattenListSelection(editor);\n        } else {\n          const bookmark = createBookmark(editor.selection.getRng());\n          if (isCustomList(parentList)) {\n            parentList.classList.forEach((cls, _, classList) => {\n              if (cls.startsWith('tox-')) {\n                classList.remove(cls);\n                if (classList.length === 0) {\n                  parentList.removeAttribute('class');\n                }\n              }\n            });\n          }\n          updateListWithDetails(editor.dom, parentList, detail);\n          const newList = editor.dom.rename(parentList, listName);\n          mergeWithAdjacentLists(editor.dom, newList);\n          editor.selection.setRng(resolveBookmark(bookmark));\n          applyList(editor, listName, detail);\n          fireListEvent(editor, listToggleActionFromListName(listName), newList);\n        }\n      } else {\n        applyList(editor, listName, detail);\n        fireListEvent(editor, listToggleActionFromListName(listName), parentList);\n      }\n    };\n    const toggleList = (editor, listName, _detail) => {\n      const parentList = getParentList(editor);\n      if (isWithinNonEditableList(editor, parentList)) {\n        return;\n      }\n      const selectedSubLists = getSelectedSubLists(editor);\n      const detail = isObject(_detail) ? _detail : {};\n      if (selectedSubLists.length > 0) {\n        toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail);\n      } else {\n        toggleSingleList(editor, parentList, listName, detail);\n      }\n    };\n\n    const DOM = global$3.DOM;\n    const normalizeList = (dom, list) => {\n      const parentNode = list.parentElement;\n      if (parentNode && parentNode.nodeName === 'LI' && parentNode.firstChild === list) {\n        const sibling = parentNode.previousSibling;\n        if (sibling && sibling.nodeName === 'LI') {\n          sibling.appendChild(list);\n          if (isEmpty$2(dom, parentNode)) {\n            DOM.remove(parentNode);\n          }\n        } else {\n          DOM.setStyle(parentNode, 'listStyleType', 'none');\n        }\n      }\n      if (isListNode(parentNode)) {\n        const sibling = parentNode.previousSibling;\n        if (sibling && sibling.nodeName === 'LI') {\n          sibling.appendChild(list);\n        }\n      }\n    };\n    const normalizeLists = (dom, element) => {\n      const lists = global$2.grep(dom.select('ol,ul', element));\n      global$2.each(lists, list => {\n        normalizeList(dom, list);\n      });\n    };\n\n    const findNextCaretContainer = (editor, rng, isForward, root) => {\n      let node = rng.startContainer;\n      const offset = rng.startOffset;\n      if (isTextNode$1(node) && (isForward ? offset < node.data.length : offset > 0)) {\n        return node;\n      }\n      const nonEmptyBlocks = editor.schema.getNonEmptyElements();\n      if (isElement(node)) {\n        node = global$6.getNode(node, offset);\n      }\n      const walker = new global$5(node, root);\n      if (isForward) {\n        if (isBogusBr(editor.dom, node)) {\n          walker.next();\n        }\n      }\n      const walkFn = isForward ? walker.next.bind(walker) : walker.prev2.bind(walker);\n      while (node = walkFn()) {\n        if (node.nodeName === 'LI' && !node.hasChildNodes()) {\n          return node;\n        }\n        if (nonEmptyBlocks[node.nodeName]) {\n          return node;\n        }\n        if (isTextNode$1(node) && node.data.length > 0) {\n          return node;\n        }\n      }\n      return null;\n    };\n    const hasOnlyOneBlockChild = (dom, elm) => {\n      const childNodes = elm.childNodes;\n      return childNodes.length === 1 && !isListNode(childNodes[0]) && dom.isBlock(childNodes[0]);\n    };\n    const isUnwrappable = node => Optional.from(node).map(SugarElement.fromDom).filter(isHTMLElement).exists(el => isEditable(el) && !contains$1(['details'], name(el)));\n    const unwrapSingleBlockChild = (dom, elm) => {\n      if (hasOnlyOneBlockChild(dom, elm) && isUnwrappable(elm.firstChild)) {\n        dom.remove(elm.firstChild, true);\n      }\n    };\n    const moveChildren = (dom, fromElm, toElm) => {\n      let node;\n      const targetElm = hasOnlyOneBlockChild(dom, toElm) ? toElm.firstChild : toElm;\n      unwrapSingleBlockChild(dom, fromElm);\n      if (!isEmpty$2(dom, fromElm, true)) {\n        while (node = fromElm.firstChild) {\n          targetElm.appendChild(node);\n        }\n      }\n    };\n    const mergeLiElements = (dom, fromElm, toElm) => {\n      let listNode;\n      const ul = fromElm.parentNode;\n      if (!isChildOfBody(dom, fromElm) || !isChildOfBody(dom, toElm)) {\n        return;\n      }\n      if (isListNode(toElm.lastChild)) {\n        listNode = toElm.lastChild;\n      }\n      if (ul === toElm.lastChild) {\n        if (isBr(ul.previousSibling)) {\n          dom.remove(ul.previousSibling);\n        }\n      }\n      const node = toElm.lastChild;\n      if (node && isBr(node) && fromElm.hasChildNodes()) {\n        dom.remove(node);\n      }\n      if (isEmpty$2(dom, toElm, true)) {\n        empty(SugarElement.fromDom(toElm));\n      }\n      moveChildren(dom, fromElm, toElm);\n      if (listNode) {\n        toElm.appendChild(listNode);\n      }\n      const contains$1 = contains(SugarElement.fromDom(toElm), SugarElement.fromDom(fromElm));\n      const nestedLists = contains$1 ? dom.getParents(fromElm, isListNode, toElm) : [];\n      dom.remove(fromElm);\n      each$1(nestedLists, list => {\n        if (isEmpty$2(dom, list) && list !== dom.getRoot()) {\n          dom.remove(list);\n        }\n      });\n    };\n    const mergeIntoEmptyLi = (editor, fromLi, toLi) => {\n      empty(SugarElement.fromDom(toLi));\n      mergeLiElements(editor.dom, fromLi, toLi);\n      editor.selection.setCursorLocation(toLi, 0);\n    };\n    const mergeForward = (editor, rng, fromLi, toLi) => {\n      const dom = editor.dom;\n      if (dom.isEmpty(toLi)) {\n        mergeIntoEmptyLi(editor, fromLi, toLi);\n      } else {\n        const bookmark = createBookmark(rng);\n        mergeLiElements(dom, fromLi, toLi);\n        editor.selection.setRng(resolveBookmark(bookmark));\n      }\n    };\n    const mergeBackward = (editor, rng, fromLi, toLi) => {\n      const bookmark = createBookmark(rng);\n      mergeLiElements(editor.dom, fromLi, toLi);\n      const resolvedBookmark = resolveBookmark(bookmark);\n      editor.selection.setRng(resolvedBookmark);\n    };\n    const backspaceDeleteFromListToListCaret = (editor, isForward) => {\n      const dom = editor.dom, selection = editor.selection;\n      const selectionStartElm = selection.getStart();\n      const root = getClosestEditingHost(editor, selectionStartElm);\n      const li = dom.getParent(selection.getStart(), 'LI', root);\n      if (li) {\n        const ul = li.parentElement;\n        if (ul === editor.getBody() && isEmpty$2(dom, ul)) {\n          return true;\n        }\n        const rng = normalizeRange(selection.getRng());\n        const otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);\n        const willMergeParentIntoChild = otherLi && (isForward ? dom.isChildOf(li, otherLi) : dom.isChildOf(otherLi, li));\n        if (otherLi && otherLi !== li && !willMergeParentIntoChild) {\n          editor.undoManager.transact(() => {\n            if (isForward) {\n              mergeForward(editor, rng, otherLi, li);\n            } else {\n              if (isFirstChild(li)) {\n                outdentListSelection(editor);\n              } else {\n                mergeBackward(editor, rng, li, otherLi);\n              }\n            }\n          });\n          return true;\n        } else if (willMergeParentIntoChild && !isForward && otherLi !== li) {\n          editor.undoManager.transact(() => {\n            if (rng.commonAncestorContainer.parentElement) {\n              const bookmark = createBookmark(rng);\n              const oldParentElRef = rng.commonAncestorContainer.parentElement;\n              moveChildren(dom, rng.commonAncestorContainer.parentElement, otherLi);\n              oldParentElRef.remove();\n              const resolvedBookmark = resolveBookmark(bookmark);\n              editor.selection.setRng(resolvedBookmark);\n            }\n          });\n          return true;\n        } else if (!otherLi) {\n          if (!isForward && rng.startOffset === 0 && rng.endOffset === 0) {\n            editor.undoManager.transact(() => {\n              flattenListSelection(editor);\n            });\n            return true;\n          }\n        }\n      }\n      return false;\n    };\n    const removeBlock = (dom, block, root) => {\n      const parentBlock = dom.getParent(block.parentNode, dom.isBlock, root);\n      dom.remove(block);\n      if (parentBlock && dom.isEmpty(parentBlock)) {\n        dom.remove(parentBlock);\n      }\n    };\n    const backspaceDeleteIntoListCaret = (editor, isForward) => {\n      const dom = editor.dom;\n      const selectionStartElm = editor.selection.getStart();\n      const root = getClosestEditingHost(editor, selectionStartElm);\n      const block = dom.getParent(selectionStartElm, dom.isBlock, root);\n      if (block && dom.isEmpty(block)) {\n        const rng = normalizeRange(editor.selection.getRng());\n        const otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);\n        if (otherLi) {\n          const findValidElement = element => contains$1([\n            'td',\n            'th',\n            'caption'\n          ], name(element));\n          const findRoot = node => node.dom === root;\n          const otherLiCell = closest$2(SugarElement.fromDom(otherLi), findValidElement, findRoot);\n          const caretCell = closest$2(SugarElement.fromDom(rng.startContainer), findValidElement, findRoot);\n          if (!equals(otherLiCell, caretCell, eq)) {\n            return false;\n          }\n          editor.undoManager.transact(() => {\n            const parentNode = otherLi.parentNode;\n            removeBlock(dom, block, root);\n            mergeWithAdjacentLists(dom, parentNode);\n            editor.selection.select(otherLi, true);\n            editor.selection.collapse(isForward);\n          });\n          return true;\n        }\n      }\n      return false;\n    };\n    const backspaceDeleteCaret = (editor, isForward) => {\n      return backspaceDeleteFromListToListCaret(editor, isForward) || backspaceDeleteIntoListCaret(editor, isForward);\n    };\n    const hasListSelection = editor => {\n      const selectionStartElm = editor.selection.getStart();\n      const root = getClosestEditingHost(editor, selectionStartElm);\n      const startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root);\n      return startListParent || getSelectedListItems(editor).length > 0;\n    };\n    const backspaceDeleteRange = editor => {\n      if (hasListSelection(editor)) {\n        editor.undoManager.transact(() => {\n          editor.execCommand('Delete');\n          normalizeLists(editor.dom, editor.getBody());\n        });\n        return true;\n      }\n      return false;\n    };\n    const backspaceDelete = (editor, isForward) => {\n      const selection = editor.selection;\n      return !isWithinNonEditableList(editor, selection.getNode()) && (selection.isCollapsed() ? backspaceDeleteCaret(editor, isForward) : backspaceDeleteRange(editor));\n    };\n    const setup$2 = editor => {\n      editor.on('ExecCommand', e => {\n        const cmd = e.command.toLowerCase();\n        if ((cmd === 'delete' || cmd === 'forwarddelete') && hasListSelection(editor)) {\n          normalizeLists(editor.dom, editor.getBody());\n        }\n      });\n      editor.on('keydown', e => {\n        if (e.keyCode === global$4.BACKSPACE) {\n          if (backspaceDelete(editor, false)) {\n            e.preventDefault();\n          }\n        } else if (e.keyCode === global$4.DELETE) {\n          if (backspaceDelete(editor, true)) {\n            e.preventDefault();\n          }\n        }\n      });\n    };\n\n    const get = editor => ({\n      backspaceDelete: isForward => {\n        backspaceDelete(editor, isForward);\n      }\n    });\n\n    const updateList = (editor, update) => {\n      const parentList = getParentList(editor);\n      if (parentList === null || isWithinNonEditableList(editor, parentList)) {\n        return;\n      }\n      editor.undoManager.transact(() => {\n        if (isObject(update.styles)) {\n          editor.dom.setStyles(parentList, update.styles);\n        }\n        if (isObject(update.attrs)) {\n          each(update.attrs, (v, k) => editor.dom.setAttrib(parentList, k, v));\n        }\n      });\n    };\n\n    const parseAlphabeticBase26 = str => {\n      const chars = reverse(trim(str).split(''));\n      const values = map(chars, (char, i) => {\n        const charValue = char.toUpperCase().charCodeAt(0) - 'A'.charCodeAt(0) + 1;\n        return Math.pow(26, i) * charValue;\n      });\n      return foldl(values, (sum, v) => sum + v, 0);\n    };\n    const composeAlphabeticBase26 = value => {\n      value--;\n      if (value < 0) {\n        return '';\n      } else {\n        const remainder = value % 26;\n        const quotient = Math.floor(value / 26);\n        const rest = composeAlphabeticBase26(quotient);\n        const char = String.fromCharCode('A'.charCodeAt(0) + remainder);\n        return rest + char;\n      }\n    };\n    const isUppercase = str => /^[A-Z]+$/.test(str);\n    const isLowercase = str => /^[a-z]+$/.test(str);\n    const isNumeric = str => /^[0-9]+$/.test(str);\n    const deduceListType = start => {\n      if (isNumeric(start)) {\n        return 2;\n      } else if (isUppercase(start)) {\n        return 0;\n      } else if (isLowercase(start)) {\n        return 1;\n      } else if (isEmpty$1(start)) {\n        return 3;\n      } else {\n        return 4;\n      }\n    };\n    const parseStartValue = start => {\n      switch (deduceListType(start)) {\n      case 2:\n        return Optional.some({\n          listStyleType: Optional.none(),\n          start\n        });\n      case 0:\n        return Optional.some({\n          listStyleType: Optional.some('upper-alpha'),\n          start: parseAlphabeticBase26(start).toString()\n        });\n      case 1:\n        return Optional.some({\n          listStyleType: Optional.some('lower-alpha'),\n          start: parseAlphabeticBase26(start).toString()\n        });\n      case 3:\n        return Optional.some({\n          listStyleType: Optional.none(),\n          start: ''\n        });\n      case 4:\n        return Optional.none();\n      }\n    };\n    const parseDetail = detail => {\n      const start = parseInt(detail.start, 10);\n      if (is$2(detail.listStyleType, 'upper-alpha')) {\n        return composeAlphabeticBase26(start);\n      } else if (is$2(detail.listStyleType, 'lower-alpha')) {\n        return composeAlphabeticBase26(start).toLowerCase();\n      } else {\n        return detail.start;\n      }\n    };\n\n    const open = editor => {\n      const currentList = getParentList(editor);\n      if (!isOlNode(currentList) || isWithinNonEditableList(editor, currentList)) {\n        return;\n      }\n      editor.windowManager.open({\n        title: 'List Properties',\n        body: {\n          type: 'panel',\n          items: [{\n              type: 'input',\n              name: 'start',\n              label: 'Start list at number',\n              inputMode: 'numeric'\n            }]\n        },\n        initialData: {\n          start: parseDetail({\n            start: editor.dom.getAttrib(currentList, 'start', '1'),\n            listStyleType: Optional.from(editor.dom.getStyle(currentList, 'list-style-type'))\n          })\n        },\n        buttons: [\n          {\n            type: 'cancel',\n            name: 'cancel',\n            text: 'Cancel'\n          },\n          {\n            type: 'submit',\n            name: 'save',\n            text: 'Save',\n            primary: true\n          }\n        ],\n        onSubmit: api => {\n          const data = api.getData();\n          parseStartValue(data.start).each(detail => {\n            editor.execCommand('mceListUpdate', false, {\n              attrs: { start: detail.start === '1' ? '' : detail.start },\n              styles: { 'list-style-type': detail.listStyleType.getOr('') }\n            });\n          });\n          api.close();\n        }\n      });\n    };\n\n    const queryListCommandState = (editor, listName) => () => {\n      const parentList = getParentList(editor);\n      return isNonNullable(parentList) && parentList.nodeName === listName;\n    };\n    const registerDialog = editor => {\n      editor.addCommand('mceListProps', () => {\n        open(editor);\n      });\n    };\n    const register$2 = editor => {\n      editor.on('BeforeExecCommand', e => {\n        const cmd = e.command.toLowerCase();\n        if (cmd === 'indent') {\n          indentListSelection(editor);\n        } else if (cmd === 'outdent') {\n          outdentListSelection(editor);\n        }\n      });\n      editor.addCommand('InsertUnorderedList', (ui, detail) => {\n        toggleList(editor, 'UL', detail);\n      });\n      editor.addCommand('InsertOrderedList', (ui, detail) => {\n        toggleList(editor, 'OL', detail);\n      });\n      editor.addCommand('InsertDefinitionList', (ui, detail) => {\n        toggleList(editor, 'DL', detail);\n      });\n      editor.addCommand('RemoveList', () => {\n        flattenListSelection(editor);\n      });\n      registerDialog(editor);\n      editor.addCommand('mceListUpdate', (ui, detail) => {\n        if (isObject(detail)) {\n          updateList(editor, detail);\n        }\n      });\n      editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL'));\n      editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL'));\n      editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL'));\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.html.Node');\n\n    const isTextNode = node => node.type === 3;\n    const isEmpty = nodeBuffer => nodeBuffer.length === 0;\n    const wrapInvalidChildren = list => {\n      const insertListItem = (buffer, refNode) => {\n        const li = global.create('li');\n        each$1(buffer, node => li.append(node));\n        if (refNode) {\n          list.insert(li, refNode, true);\n        } else {\n          list.append(li);\n        }\n      };\n      const reducer = (buffer, node) => {\n        if (isTextNode(node)) {\n          return [\n            ...buffer,\n            node\n          ];\n        } else if (!isEmpty(buffer) && !isTextNode(node)) {\n          insertListItem(buffer, node);\n          return [];\n        } else {\n          return buffer;\n        }\n      };\n      const restBuffer = foldl(list.children(), reducer, []);\n      if (!isEmpty(restBuffer)) {\n        insertListItem(restBuffer);\n      }\n    };\n    const setup$1 = editor => {\n      editor.on('PreInit', () => {\n        const {parser} = editor;\n        parser.addNodeFilter('ul,ol', nodes => each$1(nodes, wrapInvalidChildren));\n      });\n    };\n\n    const setupTabKey = editor => {\n      editor.on('keydown', e => {\n        if (e.keyCode !== global$4.TAB || global$4.metaKeyPressed(e)) {\n          return;\n        }\n        editor.undoManager.transact(() => {\n          if (e.shiftKey ? outdentListSelection(editor) : indentListSelection(editor)) {\n            e.preventDefault();\n          }\n        });\n      });\n    };\n    const setup = editor => {\n      if (shouldIndentOnTab(editor)) {\n        setupTabKey(editor);\n      }\n      setup$2(editor);\n    };\n\n    const setupToggleButtonHandler = (editor, listName) => api => {\n      const toggleButtonHandler = e => {\n        api.setActive(inList(e.parents, listName));\n        api.setEnabled(!isWithinNonEditableList(editor, e.element) && editor.selection.isEditable());\n      };\n      api.setEnabled(editor.selection.isEditable());\n      return setNodeChangeHandler(editor, toggleButtonHandler);\n    };\n    const register$1 = editor => {\n      const exec = command => () => editor.execCommand(command);\n      if (!editor.hasPlugin('advlist')) {\n        editor.ui.registry.addToggleButton('numlist', {\n          icon: 'ordered-list',\n          active: false,\n          tooltip: 'Numbered list',\n          onAction: exec('InsertOrderedList'),\n          onSetup: setupToggleButtonHandler(editor, 'OL')\n        });\n        editor.ui.registry.addToggleButton('bullist', {\n          icon: 'unordered-list',\n          active: false,\n          tooltip: 'Bullet list',\n          onAction: exec('InsertUnorderedList'),\n          onSetup: setupToggleButtonHandler(editor, 'UL')\n        });\n      }\n    };\n\n    const setupMenuButtonHandler = (editor, listName) => api => {\n      const menuButtonHandler = e => api.setEnabled(inList(e.parents, listName) && !isWithinNonEditableList(editor, e.element));\n      return setNodeChangeHandler(editor, menuButtonHandler);\n    };\n    const register = editor => {\n      const listProperties = {\n        text: 'List properties...',\n        icon: 'ordered-list',\n        onAction: () => editor.execCommand('mceListProps'),\n        onSetup: setupMenuButtonHandler(editor, 'OL')\n      };\n      editor.ui.registry.addMenuItem('listprops', listProperties);\n      editor.ui.registry.addContextMenu('lists', {\n        update: node => {\n          const parentList = getParentList(editor, node);\n          return isOlNode(parentList) ? ['listprops'] : [];\n        }\n      });\n    };\n\n    var Plugin = () => {\n      global$7.add('lists', editor => {\n        register$3(editor);\n        setup$1(editor);\n        if (!editor.hasPlugin('rtc', true)) {\n          setup(editor);\n          register$2(editor);\n        } else {\n          registerDialog(editor);\n        }\n        register$1(editor);\n        register(editor);\n        return get(editor);\n      });\n    };\n\n    Plugin();\n\n})();\n", "/**\n * TinyMCE version 6.8.6 (TBD)\n */\n\n(function () {\n    'use strict';\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    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const get$2 = toggleState => {\n      const isEnabled = () => {\n        return toggleState.get();\n      };\n      return { isEnabled };\n    };\n\n    const fireVisualChars = (editor, state) => {\n      return editor.dispatch('VisualChars', { state });\n    };\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 = t => a => t === a;\n    const isString = isType$1('string');\n    const isObject = isType$1('object');\n    const isNull = eq(null);\n    const isBoolean = isSimpleType('boolean');\n    const isNullable = a => a === null || a === undefined;\n    const isNonNullable = a => !isNullable(a);\n    const isNumber = isSimpleType('number');\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 map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n    const each$1 = (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 filter = (xs, pred) => {\n      const r = [];\n      for (let i = 0, len = xs.length; i < len; i++) {\n        const x = xs[i];\n        if (pred(x, i)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n\n    const keys = Object.keys;\n    const each = (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\n    const Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    const path = (parts, scope) => {\n      let o = scope !== undefined && scope !== null ? scope : Global;\n      for (let i = 0; i < parts.length && o !== undefined && o !== null; ++i) {\n        o = o[parts[i]];\n      }\n      return o;\n    };\n    const resolve = (p, scope) => {\n      const parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    const unsafe = (name, scope) => {\n      return resolve(name, scope);\n    };\n    const getOrDie = (name, scope) => {\n      const actual = unsafe(name, scope);\n      if (actual === undefined || actual === null) {\n        throw new Error(name + ' not available on this browser');\n      }\n      return actual;\n    };\n\n    const getPrototypeOf = Object.getPrototypeOf;\n    const sandHTMLElement = scope => {\n      return getOrDie('HTMLElement', scope);\n    };\n    const isPrototypeOf = x => {\n      const scope = resolve('ownerDocument.defaultView', x);\n      return isObject(x) && (sandHTMLElement(scope).prototype.isPrototypeOf(x) || /^HTML\\w*Element$/.test(getPrototypeOf(x).constructor.name));\n    };\n\n    const ELEMENT = 1;\n    const TEXT = 3;\n\n    const type = element => element.dom.nodeType;\n    const value = element => element.dom.nodeValue;\n    const isType = t => element => type(element) === t;\n    const isHTMLElement = element => isElement(element) && isPrototypeOf(element.dom);\n    const isElement = isType(ELEMENT);\n    const isText = isType(TEXT);\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 = (element, key, value) => {\n      rawSet(element.dom, key, value);\n    };\n    const get$1 = (element, key) => {\n      const v = element.dom.getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    const remove$3 = (element, key) => {\n      element.dom.removeAttribute(key);\n    };\n\n    const read = (element, attr) => {\n      const value = get$1(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(element, attr, nu.join(' '));\n      return true;\n    };\n    const remove$2 = (element, attr, id) => {\n      const nu = filter(read(element, attr), v => v !== id);\n      if (nu.length > 0) {\n        set(element, attr, nu.join(' '));\n      } else {\n        remove$3(element, attr);\n      }\n      return false;\n    };\n\n    const supports = element => element.dom.classList !== undefined;\n    const get = element => read(element, 'class');\n    const add$1 = (element, clazz) => add$2(element, 'class', clazz);\n    const remove$1 = (element, clazz) => remove$2(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(element);\n      if (classList.length === 0) {\n        remove$3(element, 'class');\n      }\n    };\n    const remove = (element, clazz) => {\n      if (supports(element)) {\n        const classList = element.dom.classList;\n        classList.remove(clazz);\n      } else {\n        remove$1(element, clazz);\n      }\n      cleanClass(element);\n    };\n\n    const fromHtml = (html, scope) => {\n      const doc = scope || document;\n      const div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        const message = 'HTML does not have a single root node';\n        console.error(message, html);\n        throw new Error(message);\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    const fromTag = (tag, scope) => {\n      const doc = scope || document;\n      const node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    const fromText = (text, scope) => {\n      const doc = scope || document;\n      const node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    const fromDom = node => {\n      if (node === null || node === undefined) {\n        throw new Error('Node cannot be null or undefined');\n      }\n      return { dom: node };\n    };\n    const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);\n    const SugarElement = {\n      fromHtml,\n      fromTag,\n      fromText,\n      fromDom,\n      fromPoint\n    };\n\n    const charMap = {\n      '\\xA0': 'nbsp',\n      '\\xAD': 'shy'\n    };\n    const charMapToRegExp = (charMap, global) => {\n      let regExp = '';\n      each(charMap, (_value, key) => {\n        regExp += key;\n      });\n      return new RegExp('[' + regExp + ']', global ? 'g' : '');\n    };\n    const charMapToSelector = charMap => {\n      let selector = '';\n      each(charMap, value => {\n        if (selector) {\n          selector += ',';\n        }\n        selector += 'span.mce-' + value;\n      });\n      return selector;\n    };\n    const regExp = charMapToRegExp(charMap);\n    const regExpGlobal = charMapToRegExp(charMap, true);\n    const selector = charMapToSelector(charMap);\n    const nbspClass = 'mce-nbsp';\n\n    const getRaw = element => element.dom.contentEditable;\n\n    const wrapCharWithSpan = value => '<span data-mce-bogus=\"1\" class=\"mce-' + charMap[value] + '\">' + value + '</span>';\n\n    const isWrappedNbsp = node => node.nodeName.toLowerCase() === 'span' && node.classList.contains('mce-nbsp-wrap');\n    const isMatch = n => {\n      const value$1 = value(n);\n      return isText(n) && isString(value$1) && regExp.test(value$1);\n    };\n    const isContentEditableFalse = node => isHTMLElement(node) && getRaw(node) === 'false';\n    const isChildEditable = (node, currentState) => {\n      if (isHTMLElement(node) && !isWrappedNbsp(node.dom)) {\n        const value = getRaw(node);\n        if (value === 'true') {\n          return true;\n        } else if (value === 'false') {\n          return false;\n        }\n      }\n      return currentState;\n    };\n    const filterEditableDescendants = (scope, predicate, editable) => {\n      let result = [];\n      const dom = scope.dom;\n      const children = map(dom.childNodes, SugarElement.fromDom);\n      const isEditable = node => isWrappedNbsp(node.dom) || !isContentEditableFalse(node);\n      each$1(children, x => {\n        if (editable && isEditable(x) && predicate(x)) {\n          result = result.concat([x]);\n        }\n        result = result.concat(filterEditableDescendants(x, predicate, isChildEditable(x, editable)));\n      });\n      return result;\n    };\n    const findParentElm = (elm, rootElm) => {\n      while (elm.parentNode) {\n        if (elm.parentNode === rootElm) {\n          return rootElm;\n        }\n        elm = elm.parentNode;\n      }\n      return undefined;\n    };\n    const replaceWithSpans = text => text.replace(regExpGlobal, wrapCharWithSpan);\n\n    const show = (editor, rootElm) => {\n      const dom = editor.dom;\n      const nodeList = filterEditableDescendants(SugarElement.fromDom(rootElm), isMatch, editor.dom.isEditable(rootElm));\n      each$1(nodeList, n => {\n        var _a;\n        const parent = n.dom.parentNode;\n        if (isWrappedNbsp(parent)) {\n          add(SugarElement.fromDom(parent), nbspClass);\n        } else {\n          const withSpans = replaceWithSpans(dom.encode((_a = value(n)) !== null && _a !== void 0 ? _a : ''));\n          const div = dom.create('div', {}, withSpans);\n          let node;\n          while (node = div.lastChild) {\n            dom.insertAfter(node, n.dom);\n          }\n          editor.dom.remove(n.dom);\n        }\n      });\n    };\n    const hide = (editor, rootElm) => {\n      const nodeList = editor.dom.select(selector, rootElm);\n      each$1(nodeList, node => {\n        if (isWrappedNbsp(node)) {\n          remove(SugarElement.fromDom(node), nbspClass);\n        } else {\n          editor.dom.remove(node, true);\n        }\n      });\n    };\n    const toggle = editor => {\n      const body = editor.getBody();\n      const bookmark = editor.selection.getBookmark();\n      let parentNode = findParentElm(editor.selection.getNode(), body);\n      parentNode = parentNode !== undefined ? parentNode : body;\n      hide(editor, parentNode);\n      show(editor, parentNode);\n      editor.selection.moveToBookmark(bookmark);\n    };\n\n    const applyVisualChars = (editor, toggleState) => {\n      fireVisualChars(editor, toggleState.get());\n      const body = editor.getBody();\n      if (toggleState.get() === true) {\n        show(editor, body);\n      } else {\n        hide(editor, body);\n      }\n    };\n    const toggleVisualChars = (editor, toggleState) => {\n      toggleState.set(!toggleState.get());\n      const bookmark = editor.selection.getBookmark();\n      applyVisualChars(editor, toggleState);\n      editor.selection.moveToBookmark(bookmark);\n    };\n\n    const register$2 = (editor, toggleState) => {\n      editor.addCommand('mceVisualChars', () => {\n        toggleVisualChars(editor, toggleState);\n      });\n    };\n\n    const option = name => editor => editor.options.get(name);\n    const register$1 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('visualchars_default_state', {\n        processor: 'boolean',\n        default: false\n      });\n    };\n    const isEnabledByDefault = option('visualchars_default_state');\n\n    const setup$1 = (editor, toggleState) => {\n      editor.on('init', () => {\n        applyVisualChars(editor, toggleState);\n      });\n    };\n\n    const first = (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        if (isNull(timer)) {\n          timer = setTimeout(() => {\n            timer = null;\n            fn.apply(null, args);\n          }, rate);\n        }\n      };\n      return {\n        cancel,\n        throttle\n      };\n    };\n\n    const setup = (editor, toggleState) => {\n      const debouncedToggle = first(() => {\n        toggle(editor);\n      }, 300);\n      editor.on('keydown', e => {\n        if (toggleState.get() === true) {\n          e.keyCode === 13 ? toggle(editor) : debouncedToggle.throttle();\n        }\n      });\n      editor.on('remove', debouncedToggle.cancel);\n    };\n\n    const toggleActiveState = (editor, enabledStated) => api => {\n      api.setActive(enabledStated.get());\n      const editorEventCallback = e => api.setActive(e.state);\n      editor.on('VisualChars', editorEventCallback);\n      return () => editor.off('VisualChars', editorEventCallback);\n    };\n    const register = (editor, toggleState) => {\n      const onAction = () => editor.execCommand('mceVisualChars');\n      editor.ui.registry.addToggleButton('visualchars', {\n        tooltip: 'Show invisible characters',\n        icon: 'visualchars',\n        onAction,\n        onSetup: toggleActiveState(editor, toggleState)\n      });\n      editor.ui.registry.addToggleMenuItem('visualchars', {\n        text: 'Show invisible characters',\n        icon: 'visualchars',\n        onAction,\n        onSetup: toggleActiveState(editor, toggleState)\n      });\n    };\n\n    var Plugin = () => {\n      global.add('visualchars', editor => {\n        register$1(editor);\n        const toggleState = Cell(isEnabledByDefault(editor));\n        register$2(editor, toggleState);\n        register(editor, toggleState);\n        setup(editor, toggleState);\n        setup$1(editor, toggleState);\n        return get$2(toggleState);\n      });\n    };\n\n    Plugin();\n\n})();\n", "/**\n * TinyMCE version 6.8.6 (TBD)\n */\n\n(function () {\n    'use strict';\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    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const fireVisualBlocks = (editor, state) => {\n      editor.dispatch('VisualBlocks', { state });\n    };\n\n    const toggleVisualBlocks = (editor, pluginUrl, enabledState) => {\n      const dom = editor.dom;\n      dom.toggleClass(editor.getBody(), 'mce-visualblocks');\n      enabledState.set(!enabledState.get());\n      fireVisualBlocks(editor, enabledState.get());\n    };\n\n    const register$2 = (editor, pluginUrl, enabledState) => {\n      editor.addCommand('mceVisualBlocks', () => {\n        toggleVisualBlocks(editor, pluginUrl, enabledState);\n      });\n    };\n\n    const option = name => editor => editor.options.get(name);\n    const register$1 = editor => {\n      const registerOption = editor.options.register;\n      registerOption('visualblocks_default_state', {\n        processor: 'boolean',\n        default: false\n      });\n    };\n    const isEnabledByDefault = option('visualblocks_default_state');\n\n    const setup = (editor, pluginUrl, enabledState) => {\n      editor.on('PreviewFormats AfterPreviewFormats', e => {\n        if (enabledState.get()) {\n          editor.dom.toggleClass(editor.getBody(), 'mce-visualblocks', e.type === 'afterpreviewformats');\n        }\n      });\n      editor.on('init', () => {\n        if (isEnabledByDefault(editor)) {\n          toggleVisualBlocks(editor, pluginUrl, enabledState);\n        }\n      });\n    };\n\n    const toggleActiveState = (editor, enabledState) => api => {\n      api.setActive(enabledState.get());\n      const editorEventCallback = e => api.setActive(e.state);\n      editor.on('VisualBlocks', editorEventCallback);\n      return () => editor.off('VisualBlocks', editorEventCallback);\n    };\n    const register = (editor, enabledState) => {\n      const onAction = () => editor.execCommand('mceVisualBlocks');\n      editor.ui.registry.addToggleButton('visualblocks', {\n        icon: 'visualblocks',\n        tooltip: 'Show blocks',\n        onAction,\n        onSetup: toggleActiveState(editor, enabledState)\n      });\n      editor.ui.registry.addToggleMenuItem('visualblocks', {\n        text: 'Show blocks',\n        icon: 'visualblocks',\n        onAction,\n        onSetup: toggleActiveState(editor, enabledState)\n      });\n    };\n\n    var Plugin = () => {\n      global.add('visualblocks', (editor, pluginUrl) => {\n        register$1(editor);\n        const enabledState = Cell(false);\n        register$2(editor, pluginUrl, enabledState);\n        register(editor, enabledState);\n        setup(editor, pluginUrl, enabledState);\n      });\n    };\n\n    Plugin();\n\n})();\n", "/**\n * TinyMCE version 6.8.6 (TBD)\n */\n\n(function () {\n    'use strict';\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    const eq = t => a => t === a;\n    const isNull = eq(null);\n\n    const identity = x => {\n      return x;\n    };\n\n    const map = (xs, f) => {\n      const len = xs.length;\n      const r = new Array(len);\n      for (let i = 0; i < len; i++) {\n        const x = xs[i];\n        r[i] = f(x, i);\n      }\n      return r;\n    };\n\n    const punctuationStr = `[~\\u2116|!-*+-\\\\/:;?@\\\\[-\\`{}\\u00A1\\u00AB\\u00B7\\u00BB\\u00BF;\\u00B7\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1361-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u3008\\u3009\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30\\u2E31\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]`;\n    const regExps = {\n      aletter: '[A-Za-z\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05F3\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u10a0-\\u10c5\\u10d0-\\u10fa\\u10fc\\u1100-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1a00-\\u1a16\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bc0-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u24B6-\\u24E9\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2d00-\\u2d25\\u2d30-\\u2d65\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005\\u303b\\u303c\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790\\ua791\\ua7a0-\\ua7a9\\ua7fa-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uffa0-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]',\n      midnumlet: `[-'\\\\.\\u2018\\u2019\\u2024\\uFE52\\uFF07\\uFF0E]`,\n      midletter: '[:\\xB7\\xB7\\u05F4\\u2027\\uFE13\\uFE55\\uFF1A]',\n      midnum: '[\\xB1+*/,;;\\u0589\\u060C\\u060D\\u066C\\u07F8\\u2044\\uFE10\\uFE14\\uFE50\\uFE54\\uFF0C\\uFF1B]',\n      numeric: '[0-9\\u0660-\\u0669\\u066B\\u06f0-\\u06f9\\u07c0-\\u07c9\\u0966-\\u096f\\u09e6-\\u09ef\\u0a66-\\u0a6f\\u0ae6-\\u0aef\\u0b66-\\u0b6f\\u0be6-\\u0bef\\u0c66-\\u0c6f\\u0ce6-\\u0cef\\u0d66-\\u0d6f\\u0e50-\\u0e59\\u0ed0-\\u0ed9\\u0f20-\\u0f29\\u1040-\\u1049\\u1090-\\u1099\\u17e0-\\u17e9\\u1810-\\u1819\\u1946-\\u194f\\u19d0-\\u19d9\\u1a80-\\u1a89\\u1a90-\\u1a99\\u1b50-\\u1b59\\u1bb0-\\u1bb9\\u1c40-\\u1c49\\u1c50-\\u1c59\\ua620-\\ua629\\ua8d0-\\ua8d9\\ua900-\\ua909\\ua9d0-\\ua9d9\\uaa50-\\uaa59\\uabf0-\\uabf9]',\n      cr: '\\\\r',\n      lf: '\\\\n',\n      newline: '[\\x0B\\f\\x85\\u2028\\u2029]',\n      extend: '[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065f\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0c01-\\u0c03\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d02\\u0d03\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f\\u109a-\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b6-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u19b0-\\u19c0\\u19c8\\u19c9\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1baa\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf2\\u1dc0-\\u1de6\\u1dfc-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\uA672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua880\\ua881\\ua8b4-\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa7b\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe3-\\uabea\\uabec\\uabed\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]',\n      format: '[\\xAD\\u0600-\\u0603\\u06DD\\u070F\\u17b4\\u17b5\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\uFEFF\\uFFF9-\\uFFFB]',\n      katakana: '[\\u3031-\\u3035\\u309B\\u309C\\u30A0-\\u30fa\\u30fc-\\u30ff\\u31f0-\\u31ff\\u32D0-\\u32FE\\u3300-\\u3357\\uff66-\\uff9d]',\n      extendnumlet: '[=_\\u203f\\u2040\\u2054\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff3f\\u2200-\\u22FF<>]',\n      punctuation: punctuationStr\n    };\n    const characterIndices = {\n      ALETTER: 0,\n      MIDNUMLET: 1,\n      MIDLETTER: 2,\n      MIDNUM: 3,\n      NUMERIC: 4,\n      CR: 5,\n      LF: 6,\n      NEWLINE: 7,\n      EXTEND: 8,\n      FORMAT: 9,\n      KATAKANA: 10,\n      EXTENDNUMLET: 11,\n      AT: 12,\n      OTHER: 13\n    };\n    const SETS$1 = [\n      new RegExp(regExps.aletter),\n      new RegExp(regExps.midnumlet),\n      new RegExp(regExps.midletter),\n      new RegExp(regExps.midnum),\n      new RegExp(regExps.numeric),\n      new RegExp(regExps.cr),\n      new RegExp(regExps.lf),\n      new RegExp(regExps.newline),\n      new RegExp(regExps.extend),\n      new RegExp(regExps.format),\n      new RegExp(regExps.katakana),\n      new RegExp(regExps.extendnumlet),\n      new RegExp('@')\n    ];\n    const EMPTY_STRING$1 = '';\n    const PUNCTUATION$1 = new RegExp('^' + regExps.punctuation + '$');\n    const WHITESPACE$1 = /^\\s+$/;\n\n    const SETS = SETS$1;\n    const OTHER = characterIndices.OTHER;\n    const getType = char => {\n      let type = OTHER;\n      const setsLength = SETS.length;\n      for (let j = 0; j < setsLength; ++j) {\n        const set = SETS[j];\n        if (set && set.test(char)) {\n          type = j;\n          break;\n        }\n      }\n      return type;\n    };\n    const memoize = func => {\n      const cache = {};\n      return char => {\n        if (cache[char]) {\n          return cache[char];\n        } else {\n          const result = func(char);\n          cache[char] = result;\n          return result;\n        }\n      };\n    };\n    const classify = characters => {\n      const memoized = memoize(getType);\n      return map(characters, memoized);\n    };\n\n    const isWordBoundary = (map, index) => {\n      const type = map[index];\n      const nextType = map[index + 1];\n      if (index < 0 || index > map.length - 1 && index !== 0) {\n        return false;\n      }\n      if (type === characterIndices.ALETTER && nextType === characterIndices.ALETTER) {\n        return false;\n      }\n      const nextNextType = map[index + 2];\n      if (type === characterIndices.ALETTER && (nextType === characterIndices.MIDLETTER || nextType === characterIndices.MIDNUMLET || nextType === characterIndices.AT) && nextNextType === characterIndices.ALETTER) {\n        return false;\n      }\n      const prevType = map[index - 1];\n      if ((type === characterIndices.MIDLETTER || type === characterIndices.MIDNUMLET || nextType === characterIndices.AT) && nextType === characterIndices.ALETTER && prevType === characterIndices.ALETTER) {\n        return false;\n      }\n      if ((type === characterIndices.NUMERIC || type === characterIndices.ALETTER) && (nextType === characterIndices.NUMERIC || nextType === characterIndices.ALETTER)) {\n        return false;\n      }\n      if ((type === characterIndices.MIDNUM || type === characterIndices.MIDNUMLET) && nextType === characterIndices.NUMERIC && prevType === characterIndices.NUMERIC) {\n        return false;\n      }\n      if (type === characterIndices.NUMERIC && (nextType === characterIndices.MIDNUM || nextType === characterIndices.MIDNUMLET) && nextNextType === characterIndices.NUMERIC) {\n        return false;\n      }\n      if ((type === characterIndices.EXTEND || type === characterIndices.FORMAT) && (nextType === characterIndices.ALETTER || nextType === characterIndices.NUMERIC || nextType === characterIndices.KATAKANA || nextType === characterIndices.EXTEND || nextType === characterIndices.FORMAT) || (nextType === characterIndices.EXTEND || nextType === characterIndices.FORMAT && (nextNextType === characterIndices.ALETTER || nextNextType === characterIndices.NUMERIC || nextNextType === characterIndices.KATAKANA || nextNextType === characterIndices.EXTEND || nextNextType === characterIndices.FORMAT)) && (type === characterIndices.ALETTER || type === characterIndices.NUMERIC || type === characterIndices.KATAKANA || type === characterIndices.EXTEND || type === characterIndices.FORMAT)) {\n        return false;\n      }\n      if (type === characterIndices.CR && nextType === characterIndices.LF) {\n        return false;\n      }\n      if (type === characterIndices.NEWLINE || type === characterIndices.CR || type === characterIndices.LF) {\n        return true;\n      }\n      if (nextType === characterIndices.NEWLINE || nextType === characterIndices.CR || nextType === characterIndices.LF) {\n        return true;\n      }\n      if (type === characterIndices.KATAKANA && nextType === characterIndices.KATAKANA) {\n        return false;\n      }\n      if (nextType === characterIndices.EXTENDNUMLET && (type === characterIndices.ALETTER || type === characterIndices.NUMERIC || type === characterIndices.KATAKANA || type === characterIndices.EXTENDNUMLET)) {\n        return false;\n      }\n      if (type === characterIndices.EXTENDNUMLET && (nextType === characterIndices.ALETTER || nextType === characterIndices.NUMERIC || nextType === characterIndices.KATAKANA)) {\n        return false;\n      }\n      if (type === characterIndices.AT) {\n        return false;\n      }\n      return true;\n    };\n\n    const EMPTY_STRING = EMPTY_STRING$1;\n    const WHITESPACE = WHITESPACE$1;\n    const PUNCTUATION = PUNCTUATION$1;\n    const isProtocol = str => str === 'http' || str === 'https';\n    const findWordEnd = (characters, startIndex) => {\n      let i;\n      for (i = startIndex; i < characters.length; i++) {\n        if (WHITESPACE.test(characters[i])) {\n          break;\n        }\n      }\n      return i;\n    };\n    const findUrlEnd = (characters, startIndex) => {\n      const endIndex = findWordEnd(characters, startIndex + 1);\n      const peakedWord = characters.slice(startIndex + 1, endIndex).join(EMPTY_STRING);\n      return peakedWord.substr(0, 3) === '://' ? endIndex : startIndex;\n    };\n    const findWordsWithIndices = (chars, sChars, characterMap, options) => {\n      const words = [];\n      const indices = [];\n      let word = [];\n      for (let i = 0; i < characterMap.length; ++i) {\n        word.push(chars[i]);\n        if (isWordBoundary(characterMap, i)) {\n          const ch = sChars[i];\n          if ((options.includeWhitespace || !WHITESPACE.test(ch)) && (options.includePunctuation || !PUNCTUATION.test(ch))) {\n            const startOfWord = i - word.length + 1;\n            const endOfWord = i + 1;\n            const str = sChars.slice(startOfWord, endOfWord).join(EMPTY_STRING);\n            if (isProtocol(str)) {\n              const endOfUrl = findUrlEnd(sChars, i);\n              const url = chars.slice(endOfWord, endOfUrl);\n              Array.prototype.push.apply(word, url);\n              i = endOfUrl;\n            }\n            words.push(word);\n            indices.push({\n              start: startOfWord,\n              end: endOfWord\n            });\n          }\n          word = [];\n        }\n      }\n      return {\n        words,\n        indices\n      };\n    };\n    const getDefaultOptions = () => ({\n      includeWhitespace: false,\n      includePunctuation: false\n    });\n    const getWordsWithIndices = (chars, extract, options) => {\n      options = {\n        ...getDefaultOptions(),\n        ...options\n      };\n      const extractedChars = map(chars, extract);\n      const characterMap = classify(extractedChars);\n      return findWordsWithIndices(chars, extractedChars, characterMap, options);\n    };\n    const getWords$1 = (chars, extract, options) => getWordsWithIndices(chars, extract, options).words;\n\n    const getWords = getWords$1;\n\n    const removeZwsp$1 = s => s.replace(/\\uFEFF/g, '');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\n\n    const getText = (node, schema) => {\n      const blockElements = schema.getBlockElements();\n      const voidElements = schema.getVoidElements();\n      const isNewline = node => blockElements[node.nodeName] || voidElements[node.nodeName];\n      const textBlocks = [];\n      let txt = '';\n      const treeWalker = new global$1(node, node);\n      let tempNode;\n      while (tempNode = treeWalker.next()) {\n        if (tempNode.nodeType === 3) {\n          txt += removeZwsp$1(tempNode.data);\n        } else if (isNewline(tempNode) && txt.length) {\n          textBlocks.push(txt);\n          txt = '';\n        }\n      }\n      if (txt.length) {\n        textBlocks.push(txt);\n      }\n      return textBlocks;\n    };\n\n    const removeZwsp = text => text.replace(/\\u200B/g, '');\n    const strLen = str => str.replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, '_').length;\n    const countWords = (node, schema) => {\n      const text = removeZwsp(getText(node, schema).join('\\n'));\n      return getWords(text.split(''), identity).length;\n    };\n    const countCharacters = (node, schema) => {\n      const text = getText(node, schema).join('');\n      return strLen(text);\n    };\n    const countCharactersWithoutSpaces = (node, schema) => {\n      const text = getText(node, schema).join('').replace(/\\s/g, '');\n      return strLen(text);\n    };\n\n    const createBodyCounter = (editor, count) => () => count(editor.getBody(), editor.schema);\n    const createSelectionCounter = (editor, count) => () => count(editor.selection.getRng().cloneContents(), editor.schema);\n    const createBodyWordCounter = editor => createBodyCounter(editor, countWords);\n    const get = editor => ({\n      body: {\n        getWordCount: createBodyWordCounter(editor),\n        getCharacterCount: createBodyCounter(editor, countCharacters),\n        getCharacterCountWithoutSpaces: createBodyCounter(editor, countCharactersWithoutSpaces)\n      },\n      selection: {\n        getWordCount: createSelectionCounter(editor, countWords),\n        getCharacterCount: createSelectionCounter(editor, countCharacters),\n        getCharacterCountWithoutSpaces: createSelectionCounter(editor, countCharactersWithoutSpaces)\n      },\n      getCount: createBodyWordCounter(editor)\n    });\n\n    const open = (editor, api) => {\n      editor.windowManager.open({\n        title: 'Word Count',\n        body: {\n          type: 'panel',\n          items: [{\n              type: 'table',\n              header: [\n                'Count',\n                'Document',\n                'Selection'\n              ],\n              cells: [\n                [\n                  'Words',\n                  String(api.body.getWordCount()),\n                  String(api.selection.getWordCount())\n                ],\n                [\n                  'Characters (no spaces)',\n                  String(api.body.getCharacterCountWithoutSpaces()),\n                  String(api.selection.getCharacterCountWithoutSpaces())\n                ],\n                [\n                  'Characters',\n                  String(api.body.getCharacterCount()),\n                  String(api.selection.getCharacterCount())\n                ]\n              ]\n            }]\n        },\n        buttons: [{\n            type: 'cancel',\n            name: 'close',\n            text: 'Close',\n            primary: true\n          }]\n      });\n    };\n\n    const register$1 = (editor, api) => {\n      editor.addCommand('mceWordCount', () => open(editor, api));\n    };\n\n    const first = (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        if (isNull(timer)) {\n          timer = setTimeout(() => {\n            timer = null;\n            fn.apply(null, args);\n          }, rate);\n        }\n      };\n      return {\n        cancel,\n        throttle\n      };\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n    const fireWordCountUpdate = (editor, api) => {\n      editor.dispatch('wordCountUpdate', {\n        wordCount: {\n          words: api.body.getWordCount(),\n          characters: api.body.getCharacterCount(),\n          charactersWithoutSpaces: api.body.getCharacterCountWithoutSpaces()\n        }\n      });\n    };\n\n    const updateCount = (editor, api) => {\n      fireWordCountUpdate(editor, api);\n    };\n    const setup = (editor, api, delay) => {\n      const debouncedUpdate = first(() => updateCount(editor, api), delay);\n      editor.on('init', () => {\n        updateCount(editor, api);\n        global.setEditorTimeout(editor, () => {\n          editor.on('SetContent BeforeAddUndo Undo Redo ViewUpdate keyup', debouncedUpdate.throttle);\n        }, 0);\n        editor.on('remove', debouncedUpdate.cancel);\n      });\n    };\n\n    const register = editor => {\n      const onAction = () => editor.execCommand('mceWordCount');\n      editor.ui.registry.addButton('wordcount', {\n        tooltip: 'Word count',\n        icon: 'character-count',\n        onAction\n      });\n      editor.ui.registry.addMenuItem('wordcount', {\n        text: 'Word count',\n        icon: 'character-count',\n        onAction\n      });\n    };\n\n    var Plugin = (delay = 300) => {\n      global$2.add('wordcount', editor => {\n        const api = get(editor);\n        register$1(editor, api);\n        register(editor);\n        setup(editor, api, delay);\n        return api;\n      });\n    };\n\n    Plugin();\n\n})();\n", "/*\nTurbo 7.3.0\nCopyright \u00A9 2023 37signals LLC\n */\n(function () {\n    if (window.Reflect === undefined ||\n        window.customElements === undefined ||\n        window.customElements.polyfillWrapFlushCallback) {\n        return;\n    }\n    const BuiltInHTMLElement = HTMLElement;\n    const wrapperForTheName = {\n        HTMLElement: function HTMLElement() {\n            return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n        },\n    };\n    window.HTMLElement = wrapperForTheName[\"HTMLElement\"];\n    HTMLElement.prototype = BuiltInHTMLElement.prototype;\n    HTMLElement.prototype.constructor = HTMLElement;\n    Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n  if (typeof prototype.requestSubmit == \"function\") return\n\n  prototype.requestSubmit = function(submitter) {\n    if (submitter) {\n      validateSubmitter(submitter, this);\n      submitter.click();\n    } else {\n      submitter = document.createElement(\"input\");\n      submitter.type = \"submit\";\n      submitter.hidden = true;\n      this.appendChild(submitter);\n      submitter.click();\n      this.removeChild(submitter);\n    }\n  };\n\n  function validateSubmitter(submitter, form) {\n    submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n    submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n    submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n  }\n\n  function raise(errorConstructor, message, name) {\n    throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n  }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n    const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n    const candidate = element ? element.closest(\"input, button\") : null;\n    return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n    const submitter = findSubmitterFromClickTarget(event.target);\n    if (submitter && submitter.form) {\n        submittersByForm.set(submitter.form, submitter);\n    }\n}\n(function () {\n    if (\"submitter\" in Event.prototype)\n        return;\n    let prototype = window.Event.prototype;\n    if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n        prototype = window.SubmitEvent.prototype;\n    }\n    else if (\"SubmitEvent\" in window) {\n        return;\n    }\n    addEventListener(\"click\", clickCaptured, true);\n    Object.defineProperty(prototype, \"submitter\", {\n        get() {\n            if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n                return submittersByForm.get(this.target);\n            }\n        },\n    });\n})();\n\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n    FrameLoadingStyle[\"eager\"] = \"eager\";\n    FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n    static get observedAttributes() {\n        return [\"disabled\", \"complete\", \"loading\", \"src\"];\n    }\n    constructor() {\n        super();\n        this.loaded = Promise.resolve();\n        this.delegate = new FrameElement.delegateConstructor(this);\n    }\n    connectedCallback() {\n        this.delegate.connect();\n    }\n    disconnectedCallback() {\n        this.delegate.disconnect();\n    }\n    reload() {\n        return this.delegate.sourceURLReloaded();\n    }\n    attributeChangedCallback(name) {\n        if (name == \"loading\") {\n            this.delegate.loadingStyleChanged();\n        }\n        else if (name == \"complete\") {\n            this.delegate.completeChanged();\n        }\n        else if (name == \"src\") {\n            this.delegate.sourceURLChanged();\n        }\n        else {\n            this.delegate.disabledChanged();\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\");\n    }\n    set src(value) {\n        if (value) {\n            this.setAttribute(\"src\", value);\n        }\n        else {\n            this.removeAttribute(\"src\");\n        }\n    }\n    get loading() {\n        return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n    }\n    set loading(value) {\n        if (value) {\n            this.setAttribute(\"loading\", value);\n        }\n        else {\n            this.removeAttribute(\"loading\");\n        }\n    }\n    get disabled() {\n        return this.hasAttribute(\"disabled\");\n    }\n    set disabled(value) {\n        if (value) {\n            this.setAttribute(\"disabled\", \"\");\n        }\n        else {\n            this.removeAttribute(\"disabled\");\n        }\n    }\n    get autoscroll() {\n        return this.hasAttribute(\"autoscroll\");\n    }\n    set autoscroll(value) {\n        if (value) {\n            this.setAttribute(\"autoscroll\", \"\");\n        }\n        else {\n            this.removeAttribute(\"autoscroll\");\n        }\n    }\n    get complete() {\n        return !this.delegate.isLoading;\n    }\n    get isActive() {\n        return this.ownerDocument === document && !this.isPreview;\n    }\n    get isPreview() {\n        var _a, _b;\n        return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n    }\n}\nfunction frameLoadingStyleFromString(style) {\n    switch (style.toLowerCase()) {\n        case \"lazy\":\n            return FrameLoadingStyle.lazy;\n        default:\n            return FrameLoadingStyle.eager;\n    }\n}\n\nfunction expandURL(locatable) {\n    return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n    let anchorMatch;\n    if (url.hash) {\n        return url.hash.slice(1);\n    }\n    else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n        return anchorMatch[1];\n    }\n}\nfunction getAction(form, submitter) {\n    const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n    return expandURL(action);\n}\nfunction getExtension(url) {\n    return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n    return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n    const prefix = getPrefix(url);\n    return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n    return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n    const anchor = getAnchor(url);\n    return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n    return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n    return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n    return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n    return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n    return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n    return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n    constructor(response) {\n        this.response = response;\n    }\n    get succeeded() {\n        return this.response.ok;\n    }\n    get failed() {\n        return !this.succeeded;\n    }\n    get clientError() {\n        return this.statusCode >= 400 && this.statusCode <= 499;\n    }\n    get serverError() {\n        return this.statusCode >= 500 && this.statusCode <= 599;\n    }\n    get redirected() {\n        return this.response.redirected;\n    }\n    get location() {\n        return expandURL(this.response.url);\n    }\n    get isHTML() {\n        return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n    }\n    get statusCode() {\n        return this.response.status;\n    }\n    get contentType() {\n        return this.header(\"Content-Type\");\n    }\n    get responseText() {\n        return this.response.clone().text();\n    }\n    get responseHTML() {\n        if (this.isHTML) {\n            return this.response.clone().text();\n        }\n        else {\n            return Promise.resolve(undefined);\n        }\n    }\n    header(name) {\n        return this.response.headers.get(name);\n    }\n}\n\nfunction activateScriptElement(element) {\n    if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n        return element;\n    }\n    else {\n        const createdScriptElement = document.createElement(\"script\");\n        const cspNonce = getMetaContent(\"csp-nonce\");\n        if (cspNonce) {\n            createdScriptElement.nonce = cspNonce;\n        }\n        createdScriptElement.textContent = element.textContent;\n        createdScriptElement.async = false;\n        copyElementAttributes(createdScriptElement, element);\n        return createdScriptElement;\n    }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n    for (const { name, value } of sourceElement.attributes) {\n        destinationElement.setAttribute(name, value);\n    }\n}\nfunction createDocumentFragment(html) {\n    const template = document.createElement(\"template\");\n    template.innerHTML = html;\n    return template.content;\n}\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n    const event = new CustomEvent(eventName, {\n        cancelable,\n        bubbles: true,\n        composed: true,\n        detail,\n    });\n    if (target && target.isConnected) {\n        target.dispatchEvent(event);\n    }\n    else {\n        document.documentElement.dispatchEvent(event);\n    }\n    return event;\n}\nfunction nextAnimationFrame() {\n    return new Promise((resolve) => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n    return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n    return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n    return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n    const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n    const match = lines[0].match(/^\\s+/);\n    const indent = match ? match[0].length : 0;\n    return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n    return strings.reduce((result, string, i) => {\n        const value = values[i] == undefined ? \"\" : values[i];\n        return result + string + value;\n    }, \"\");\n}\nfunction uuid() {\n    return Array.from({ length: 36 })\n        .map((_, i) => {\n        if (i == 8 || i == 13 || i == 18 || i == 23) {\n            return \"-\";\n        }\n        else if (i == 14) {\n            return \"4\";\n        }\n        else if (i == 19) {\n            return (Math.floor(Math.random() * 4) + 8).toString(16);\n        }\n        else {\n            return Math.floor(Math.random() * 15).toString(16);\n        }\n    })\n        .join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n    for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n        if (typeof value == \"string\")\n            return value;\n    }\n    return null;\n}\nfunction hasAttribute(attributeName, ...elements) {\n    return elements.some((element) => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.setAttribute(\"busy\", \"\");\n        }\n        element.setAttribute(\"aria-busy\", \"true\");\n    }\n}\nfunction clearBusyState(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.removeAttribute(\"busy\");\n        }\n        element.removeAttribute(\"aria-busy\");\n    }\n}\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n    return new Promise((resolve) => {\n        const onComplete = () => {\n            element.removeEventListener(\"error\", onComplete);\n            element.removeEventListener(\"load\", onComplete);\n            resolve();\n        };\n        element.addEventListener(\"load\", onComplete, { once: true });\n        element.addEventListener(\"error\", onComplete, { once: true });\n        setTimeout(resolve, timeoutInMilliseconds);\n    });\n}\nfunction getHistoryMethodForAction(action) {\n    switch (action) {\n        case \"replace\":\n            return history.replaceState;\n        case \"advance\":\n        case \"restore\":\n            return history.pushState;\n    }\n}\nfunction isAction(action) {\n    return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\nfunction getVisitAction(...elements) {\n    const action = getAttribute(\"data-turbo-action\", ...elements);\n    return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n    return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n    const element = getMetaElement(name);\n    return element && element.content;\n}\nfunction setMetaContent(name, content) {\n    let element = getMetaElement(name);\n    if (!element) {\n        element = document.createElement(\"meta\");\n        element.setAttribute(\"name\", name);\n        document.head.appendChild(element);\n    }\n    element.setAttribute(\"content\", content);\n    return element;\n}\nfunction findClosestRecursively(element, selector) {\n    var _a;\n    if (element instanceof Element) {\n        return (element.closest(selector) ||\n            findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector));\n    }\n}\n\nvar FetchMethod;\n(function (FetchMethod) {\n    FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n    FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n    FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n    FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n    FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n    switch (method.toLowerCase()) {\n        case \"get\":\n            return FetchMethod.get;\n        case \"post\":\n            return FetchMethod.post;\n        case \"put\":\n            return FetchMethod.put;\n        case \"patch\":\n            return FetchMethod.patch;\n        case \"delete\":\n            return FetchMethod.delete;\n    }\n}\nclass FetchRequest {\n    constructor(delegate, method, location, body = new URLSearchParams(), target = null) {\n        this.abortController = new AbortController();\n        this.resolveRequestPromise = (_value) => { };\n        this.delegate = delegate;\n        this.method = method;\n        this.headers = this.defaultHeaders;\n        this.body = body;\n        this.url = location;\n        this.target = target;\n    }\n    get location() {\n        return this.url;\n    }\n    get params() {\n        return this.url.searchParams;\n    }\n    get entries() {\n        return this.body ? Array.from(this.body.entries()) : [];\n    }\n    cancel() {\n        this.abortController.abort();\n    }\n    async perform() {\n        const { fetchOptions } = this;\n        this.delegate.prepareRequest(this);\n        await this.allowRequestToBeIntercepted(fetchOptions);\n        try {\n            this.delegate.requestStarted(this);\n            const response = await fetch(this.url.href, fetchOptions);\n            return await this.receive(response);\n        }\n        catch (error) {\n            if (error.name !== \"AbortError\") {\n                if (this.willDelegateErrorHandling(error)) {\n                    this.delegate.requestErrored(this, error);\n                }\n                throw error;\n            }\n        }\n        finally {\n            this.delegate.requestFinished(this);\n        }\n    }\n    async receive(response) {\n        const fetchResponse = new FetchResponse(response);\n        const event = dispatch(\"turbo:before-fetch-response\", {\n            cancelable: true,\n            detail: { fetchResponse },\n            target: this.target,\n        });\n        if (event.defaultPrevented) {\n            this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n        }\n        else if (fetchResponse.succeeded) {\n            this.delegate.requestSucceededWithResponse(this, fetchResponse);\n        }\n        else {\n            this.delegate.requestFailedWithResponse(this, fetchResponse);\n        }\n        return fetchResponse;\n    }\n    get fetchOptions() {\n        var _a;\n        return {\n            method: FetchMethod[this.method].toUpperCase(),\n            credentials: \"same-origin\",\n            headers: this.headers,\n            redirect: \"follow\",\n            body: this.isSafe ? null : this.body,\n            signal: this.abortSignal,\n            referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href,\n        };\n    }\n    get defaultHeaders() {\n        return {\n            Accept: \"text/html, application/xhtml+xml\",\n        };\n    }\n    get isSafe() {\n        return this.method === FetchMethod.get;\n    }\n    get abortSignal() {\n        return this.abortController.signal;\n    }\n    acceptResponseType(mimeType) {\n        this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n    }\n    async allowRequestToBeIntercepted(fetchOptions) {\n        const requestInterception = new Promise((resolve) => (this.resolveRequestPromise = resolve));\n        const event = dispatch(\"turbo:before-fetch-request\", {\n            cancelable: true,\n            detail: {\n                fetchOptions,\n                url: this.url,\n                resume: this.resolveRequestPromise,\n            },\n            target: this.target,\n        });\n        if (event.defaultPrevented)\n            await requestInterception;\n    }\n    willDelegateErrorHandling(error) {\n        const event = dispatch(\"turbo:fetch-request-error\", {\n            target: this.target,\n            cancelable: true,\n            detail: { request: this, error: error },\n        });\n        return !event.defaultPrevented;\n    }\n}\n\nclass AppearanceObserver {\n    constructor(delegate, element) {\n        this.started = false;\n        this.intersect = (entries) => {\n            const lastEntry = entries.slice(-1)[0];\n            if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n                this.delegate.elementAppearedInViewport(this.element);\n            }\n        };\n        this.delegate = delegate;\n        this.element = element;\n        this.intersectionObserver = new IntersectionObserver(this.intersect);\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.intersectionObserver.observe(this.element);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.intersectionObserver.unobserve(this.element);\n        }\n    }\n}\n\nclass StreamMessage {\n    static wrap(message) {\n        if (typeof message == \"string\") {\n            return new this(createDocumentFragment(message));\n        }\n        else {\n            return message;\n        }\n    }\n    constructor(fragment) {\n        this.fragment = importStreamElements(fragment);\n    }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n    for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n        const streamElement = document.importNode(element, true);\n        for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n            inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n        }\n        element.replaceWith(streamElement);\n    }\n    return fragment;\n}\n\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n    FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n    FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n    FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n    FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n    FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n    FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n    FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n    FormEnctype[\"multipart\"] = \"multipart/form-data\";\n    FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n    switch (encoding.toLowerCase()) {\n        case FormEnctype.multipart:\n            return FormEnctype.multipart;\n        case FormEnctype.plain:\n            return FormEnctype.plain;\n        default:\n            return FormEnctype.urlEncoded;\n    }\n}\nclass FormSubmission {\n    static confirmMethod(message, _element, _submitter) {\n        return Promise.resolve(confirm(message));\n    }\n    constructor(delegate, formElement, submitter, mustRedirect = false) {\n        this.state = FormSubmissionState.initialized;\n        this.delegate = delegate;\n        this.formElement = formElement;\n        this.submitter = submitter;\n        this.formData = buildFormData(formElement, submitter);\n        this.location = expandURL(this.action);\n        if (this.method == FetchMethod.get) {\n            mergeFormDataEntries(this.location, [...this.body.entries()]);\n        }\n        this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n        this.mustRedirect = mustRedirect;\n    }\n    get method() {\n        var _a;\n        const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n        return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n    }\n    get action() {\n        var _a;\n        const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n        if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n            return this.submitter.getAttribute(\"formaction\") || \"\";\n        }\n        else {\n            return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n        }\n    }\n    get body() {\n        if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n            return new URLSearchParams(this.stringFormData);\n        }\n        else {\n            return this.formData;\n        }\n    }\n    get enctype() {\n        var _a;\n        return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n    }\n    get isSafe() {\n        return this.fetchRequest.isSafe;\n    }\n    get stringFormData() {\n        return [...this.formData].reduce((entries, [name, value]) => {\n            return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n        }, []);\n    }\n    async start() {\n        const { initialized, requesting } = FormSubmissionState;\n        const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n        if (typeof confirmationMessage === \"string\") {\n            const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n            if (!answer) {\n                return;\n            }\n        }\n        if (this.state == initialized) {\n            this.state = requesting;\n            return this.fetchRequest.perform();\n        }\n    }\n    stop() {\n        const { stopping, stopped } = FormSubmissionState;\n        if (this.state != stopping && this.state != stopped) {\n            this.state = stopping;\n            this.fetchRequest.cancel();\n            return true;\n        }\n    }\n    prepareRequest(request) {\n        if (!request.isSafe) {\n            const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n            if (token) {\n                request.headers[\"X-CSRF-Token\"] = token;\n            }\n        }\n        if (this.requestAcceptsTurboStreamResponse(request)) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        var _a;\n        this.state = FormSubmissionState.waiting;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n        this.setSubmitsWith();\n        dispatch(\"turbo:submit-start\", {\n            target: this.formElement,\n            detail: { formSubmission: this },\n        });\n        this.delegate.formSubmissionStarted(this);\n    }\n    requestPreventedHandlingResponse(request, response) {\n        this.result = { success: response.succeeded, fetchResponse: response };\n    }\n    requestSucceededWithResponse(request, response) {\n        if (response.clientError || response.serverError) {\n            this.delegate.formSubmissionFailedWithResponse(this, response);\n        }\n        else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n            const error = new Error(\"Form responses must redirect to another location\");\n            this.delegate.formSubmissionErrored(this, error);\n        }\n        else {\n            this.state = FormSubmissionState.receiving;\n            this.result = { success: true, fetchResponse: response };\n            this.delegate.formSubmissionSucceededWithResponse(this, response);\n        }\n    }\n    requestFailedWithResponse(request, response) {\n        this.result = { success: false, fetchResponse: response };\n        this.delegate.formSubmissionFailedWithResponse(this, response);\n    }\n    requestErrored(request, error) {\n        this.result = { success: false, error };\n        this.delegate.formSubmissionErrored(this, error);\n    }\n    requestFinished(_request) {\n        var _a;\n        this.state = FormSubmissionState.stopped;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n        this.resetSubmitterText();\n        dispatch(\"turbo:submit-end\", {\n            target: this.formElement,\n            detail: Object.assign({ formSubmission: this }, this.result),\n        });\n        this.delegate.formSubmissionFinished(this);\n    }\n    setSubmitsWith() {\n        if (!this.submitter || !this.submitsWith)\n            return;\n        if (this.submitter.matches(\"button\")) {\n            this.originalSubmitText = this.submitter.innerHTML;\n            this.submitter.innerHTML = this.submitsWith;\n        }\n        else if (this.submitter.matches(\"input\")) {\n            const input = this.submitter;\n            this.originalSubmitText = input.value;\n            input.value = this.submitsWith;\n        }\n    }\n    resetSubmitterText() {\n        if (!this.submitter || !this.originalSubmitText)\n            return;\n        if (this.submitter.matches(\"button\")) {\n            this.submitter.innerHTML = this.originalSubmitText;\n        }\n        else if (this.submitter.matches(\"input\")) {\n            const input = this.submitter;\n            input.value = this.originalSubmitText;\n        }\n    }\n    requestMustRedirect(request) {\n        return !request.isSafe && this.mustRedirect;\n    }\n    requestAcceptsTurboStreamResponse(request) {\n        return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n    }\n    get submitsWith() {\n        var _a;\n        return (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"data-turbo-submits-with\");\n    }\n}\nfunction buildFormData(formElement, submitter) {\n    const formData = new FormData(formElement);\n    const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n    const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n    if (name) {\n        formData.append(name, value || \"\");\n    }\n    return formData;\n}\nfunction getCookieValue(cookieName) {\n    if (cookieName != null) {\n        const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n        const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n        if (cookie) {\n            const value = cookie.split(\"=\").slice(1).join(\"=\");\n            return value ? decodeURIComponent(value) : undefined;\n        }\n    }\n}\nfunction responseSucceededWithoutRedirect(response) {\n    return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n    const searchParams = new URLSearchParams();\n    for (const [name, value] of entries) {\n        if (value instanceof File)\n            continue;\n        searchParams.append(name, value);\n    }\n    url.search = searchParams.toString();\n    return url;\n}\n\nclass Snapshot {\n    constructor(element) {\n        this.element = element;\n    }\n    get activeElement() {\n        return this.element.ownerDocument.activeElement;\n    }\n    get children() {\n        return [...this.element.children];\n    }\n    hasAnchor(anchor) {\n        return this.getElementForAnchor(anchor) != null;\n    }\n    getElementForAnchor(anchor) {\n        return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n    }\n    get isConnected() {\n        return this.element.isConnected;\n    }\n    get firstAutofocusableElement() {\n        const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n        for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n            if (element.closest(inertDisabledOrHidden) == null)\n                return element;\n            else\n                continue;\n        }\n        return null;\n    }\n    get permanentElements() {\n        return queryPermanentElementsAll(this.element);\n    }\n    getPermanentElementById(id) {\n        return getPermanentElementById(this.element, id);\n    }\n    getPermanentElementMapForSnapshot(snapshot) {\n        const permanentElementMap = {};\n        for (const currentPermanentElement of this.permanentElements) {\n            const { id } = currentPermanentElement;\n            const newPermanentElement = snapshot.getPermanentElementById(id);\n            if (newPermanentElement) {\n                permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n            }\n        }\n        return permanentElementMap;\n    }\n}\nfunction getPermanentElementById(node, id) {\n    return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n    return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\n\nclass FormSubmitObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.submitCaptured = () => {\n            this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n            this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n        };\n        this.submitBubbled = ((event) => {\n            if (!event.defaultPrevented) {\n                const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n                const submitter = event.submitter || undefined;\n                if (form &&\n                    submissionDoesNotDismissDialog(form, submitter) &&\n                    submissionDoesNotTargetIFrame(form, submitter) &&\n                    this.delegate.willSubmitForm(form, submitter)) {\n                    event.preventDefault();\n                    event.stopImmediatePropagation();\n                    this.delegate.formSubmitted(form, submitter);\n                }\n            }\n        });\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n            this.started = false;\n        }\n    }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n    const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n    return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n    if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute(\"formtarget\")) || form.hasAttribute(\"target\")) {\n        const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n        for (const element of document.getElementsByName(target)) {\n            if (element instanceof HTMLIFrameElement)\n                return false;\n        }\n        return true;\n    }\n    else {\n        return true;\n    }\n}\n\nclass View {\n    constructor(delegate, element) {\n        this.resolveRenderPromise = (_value) => { };\n        this.resolveInterceptionPromise = (_value) => { };\n        this.delegate = delegate;\n        this.element = element;\n    }\n    scrollToAnchor(anchor) {\n        const element = this.snapshot.getElementForAnchor(anchor);\n        if (element) {\n            this.scrollToElement(element);\n            this.focusElement(element);\n        }\n        else {\n            this.scrollToPosition({ x: 0, y: 0 });\n        }\n    }\n    scrollToAnchorFromLocation(location) {\n        this.scrollToAnchor(getAnchor(location));\n    }\n    scrollToElement(element) {\n        element.scrollIntoView();\n    }\n    focusElement(element) {\n        if (element instanceof HTMLElement) {\n            if (element.hasAttribute(\"tabindex\")) {\n                element.focus();\n            }\n            else {\n                element.setAttribute(\"tabindex\", \"-1\");\n                element.focus();\n                element.removeAttribute(\"tabindex\");\n            }\n        }\n    }\n    scrollToPosition({ x, y }) {\n        this.scrollRoot.scrollTo(x, y);\n    }\n    scrollToTop() {\n        this.scrollToPosition({ x: 0, y: 0 });\n    }\n    get scrollRoot() {\n        return window;\n    }\n    async render(renderer) {\n        const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n        if (shouldRender) {\n            try {\n                this.renderPromise = new Promise((resolve) => (this.resolveRenderPromise = resolve));\n                this.renderer = renderer;\n                await this.prepareToRenderSnapshot(renderer);\n                const renderInterception = new Promise((resolve) => (this.resolveInterceptionPromise = resolve));\n                const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement };\n                const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n                if (!immediateRender)\n                    await renderInterception;\n                await this.renderSnapshot(renderer);\n                this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n                this.delegate.preloadOnLoadLinksForView(this.element);\n                this.finishRenderingSnapshot(renderer);\n            }\n            finally {\n                delete this.renderer;\n                this.resolveRenderPromise(undefined);\n                delete this.renderPromise;\n            }\n        }\n        else {\n            this.invalidate(renderer.reloadReason);\n        }\n    }\n    invalidate(reason) {\n        this.delegate.viewInvalidated(reason);\n    }\n    async prepareToRenderSnapshot(renderer) {\n        this.markAsPreview(renderer.isPreview);\n        await renderer.prepareToRender();\n    }\n    markAsPreview(isPreview) {\n        if (isPreview) {\n            this.element.setAttribute(\"data-turbo-preview\", \"\");\n        }\n        else {\n            this.element.removeAttribute(\"data-turbo-preview\");\n        }\n    }\n    async renderSnapshot(renderer) {\n        await renderer.render();\n    }\n    finishRenderingSnapshot(renderer) {\n        renderer.finishRendering();\n    }\n}\n\nclass FrameView extends View {\n    missing() {\n        this.element.innerHTML = `<strong class=\"turbo-frame-error\">Content missing</strong>`;\n    }\n    get snapshot() {\n        return new Snapshot(this.element);\n    }\n}\n\nclass LinkInterceptor {\n    constructor(delegate, element) {\n        this.clickBubbled = (event) => {\n            if (this.respondsToEventTarget(event.target)) {\n                this.clickEvent = event;\n            }\n            else {\n                delete this.clickEvent;\n            }\n        };\n        this.linkClicked = ((event) => {\n            if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n                if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n                    this.clickEvent.preventDefault();\n                    event.preventDefault();\n                    this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n                }\n            }\n            delete this.clickEvent;\n        });\n        this.willVisit = ((_event) => {\n            delete this.clickEvent;\n        });\n        this.delegate = delegate;\n        this.element = element;\n    }\n    start() {\n        this.element.addEventListener(\"click\", this.clickBubbled);\n        document.addEventListener(\"turbo:click\", this.linkClicked);\n        document.addEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n    stop() {\n        this.element.removeEventListener(\"click\", this.clickBubbled);\n        document.removeEventListener(\"turbo:click\", this.linkClicked);\n        document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n    respondsToEventTarget(target) {\n        const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n        return element && element.closest(\"turbo-frame, html\") == this.element;\n    }\n}\n\nclass LinkClickObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.clickCaptured = () => {\n            this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n            this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n        };\n        this.clickBubbled = (event) => {\n            if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n                const target = (event.composedPath && event.composedPath()[0]) || event.target;\n                const link = this.findLinkFromClickTarget(target);\n                if (link && doesNotTargetIFrame(link)) {\n                    const location = this.getLocationForLink(link);\n                    if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n                        event.preventDefault();\n                        this.delegate.followedLinkToLocation(link, location);\n                    }\n                }\n            }\n        };\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n            this.started = false;\n        }\n    }\n    clickEventIsSignificant(event) {\n        return !((event.target && event.target.isContentEditable) ||\n            event.defaultPrevented ||\n            event.which > 1 ||\n            event.altKey ||\n            event.ctrlKey ||\n            event.metaKey ||\n            event.shiftKey);\n    }\n    findLinkFromClickTarget(target) {\n        return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\");\n    }\n    getLocationForLink(link) {\n        return expandURL(link.getAttribute(\"href\") || \"\");\n    }\n}\nfunction doesNotTargetIFrame(anchor) {\n    if (anchor.hasAttribute(\"target\")) {\n        for (const element of document.getElementsByName(anchor.target)) {\n            if (element instanceof HTMLIFrameElement)\n                return false;\n        }\n        return true;\n    }\n    else {\n        return true;\n    }\n}\n\nclass FormLinkClickObserver {\n    constructor(delegate, element) {\n        this.delegate = delegate;\n        this.linkInterceptor = new LinkClickObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n    }\n    willFollowLinkToLocation(link, location, originalEvent) {\n        return (this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n            link.hasAttribute(\"data-turbo-method\"));\n    }\n    followedLinkToLocation(link, location) {\n        const form = document.createElement(\"form\");\n        const type = \"hidden\";\n        for (const [name, value] of location.searchParams) {\n            form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n        }\n        const action = Object.assign(location, { search: \"\" });\n        form.setAttribute(\"data-turbo\", \"true\");\n        form.setAttribute(\"action\", action.href);\n        form.setAttribute(\"hidden\", \"\");\n        const method = link.getAttribute(\"data-turbo-method\");\n        if (method)\n            form.setAttribute(\"method\", method);\n        const turboFrame = link.getAttribute(\"data-turbo-frame\");\n        if (turboFrame)\n            form.setAttribute(\"data-turbo-frame\", turboFrame);\n        const turboAction = getVisitAction(link);\n        if (turboAction)\n            form.setAttribute(\"data-turbo-action\", turboAction);\n        const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n        if (turboConfirm)\n            form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n        const turboStream = link.hasAttribute(\"data-turbo-stream\");\n        if (turboStream)\n            form.setAttribute(\"data-turbo-stream\", \"\");\n        this.delegate.submittedFormLinkToLocation(link, location, form);\n        document.body.appendChild(form);\n        form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n        requestAnimationFrame(() => form.requestSubmit());\n    }\n}\n\nclass Bardo {\n    static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n        const bardo = new this(delegate, permanentElementMap);\n        bardo.enter();\n        await callback();\n        bardo.leave();\n    }\n    constructor(delegate, permanentElementMap) {\n        this.delegate = delegate;\n        this.permanentElementMap = permanentElementMap;\n    }\n    enter() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n            this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n            this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n        }\n    }\n    leave() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement] = this.permanentElementMap[id];\n            this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n            this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n            this.delegate.leavingBardo(currentPermanentElement);\n        }\n    }\n    replaceNewPermanentElementWithPlaceholder(permanentElement) {\n        const placeholder = createPlaceholderForPermanentElement(permanentElement);\n        permanentElement.replaceWith(placeholder);\n    }\n    replaceCurrentPermanentElementWithClone(permanentElement) {\n        const clone = permanentElement.cloneNode(true);\n        permanentElement.replaceWith(clone);\n    }\n    replacePlaceholderWithPermanentElement(permanentElement) {\n        const placeholder = this.getPlaceholderById(permanentElement.id);\n        placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n    }\n    getPlaceholderById(id) {\n        return this.placeholders.find((element) => element.content == id);\n    }\n    get placeholders() {\n        return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n    }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n    const element = document.createElement(\"meta\");\n    element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n    element.setAttribute(\"content\", permanentElement.id);\n    return element;\n}\n\nclass Renderer {\n    constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        this.activeElement = null;\n        this.currentSnapshot = currentSnapshot;\n        this.newSnapshot = newSnapshot;\n        this.isPreview = isPreview;\n        this.willRender = willRender;\n        this.renderElement = renderElement;\n        this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n    }\n    get shouldRender() {\n        return true;\n    }\n    get reloadReason() {\n        return;\n    }\n    prepareToRender() {\n        return;\n    }\n    finishRendering() {\n        if (this.resolvingFunctions) {\n            this.resolvingFunctions.resolve();\n            delete this.resolvingFunctions;\n        }\n    }\n    async preservingPermanentElements(callback) {\n        await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n    }\n    focusFirstAutofocusableElement() {\n        const element = this.connectedSnapshot.firstAutofocusableElement;\n        if (elementIsFocusable(element)) {\n            element.focus();\n        }\n    }\n    enteringBardo(currentPermanentElement) {\n        if (this.activeElement)\n            return;\n        if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n            this.activeElement = this.currentSnapshot.activeElement;\n        }\n    }\n    leavingBardo(currentPermanentElement) {\n        if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n            this.activeElement.focus();\n            this.activeElement = null;\n        }\n    }\n    get connectedSnapshot() {\n        return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n    }\n    get currentElement() {\n        return this.currentSnapshot.element;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    get permanentElementMap() {\n        return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n    }\n}\nfunction elementIsFocusable(element) {\n    return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        var _a;\n        const destinationRange = document.createRange();\n        destinationRange.selectNodeContents(currentElement);\n        destinationRange.deleteContents();\n        const frameElement = newElement;\n        const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n        if (sourceRange) {\n            sourceRange.selectNodeContents(frameElement);\n            currentElement.appendChild(sourceRange.extractContents());\n        }\n    }\n    constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n        this.delegate = delegate;\n    }\n    get shouldRender() {\n        return true;\n    }\n    async render() {\n        await nextAnimationFrame();\n        this.preservingPermanentElements(() => {\n            this.loadFrameElement();\n        });\n        this.scrollFrameIntoView();\n        await nextAnimationFrame();\n        this.focusFirstAutofocusableElement();\n        await nextAnimationFrame();\n        this.activateScriptElements();\n    }\n    loadFrameElement() {\n        this.delegate.willRenderFrame(this.currentElement, this.newElement);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    scrollFrameIntoView() {\n        if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n            const element = this.currentElement.firstElementChild;\n            const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n            const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n            if (element) {\n                element.scrollIntoView({ block, behavior });\n                return true;\n            }\n        }\n        return false;\n    }\n    activateScriptElements() {\n        for (const inertScriptElement of this.newScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    get newScriptElements() {\n        return this.currentElement.querySelectorAll(\"script\");\n    }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n    if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\nfunction readScrollBehavior(value, defaultValue) {\n    if (value == \"auto\" || value == \"smooth\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\n\nclass ProgressBar {\n    static get defaultCSS() {\n        return unindent `\n      .turbo-progress-bar {\n        position: fixed;\n        display: block;\n        top: 0;\n        left: 0;\n        height: 3px;\n        background: #0076ff;\n        z-index: 2147483647;\n        transition:\n          width ${ProgressBar.animationDuration}ms ease-out,\n          opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n        transform: translate3d(0, 0, 0);\n      }\n    `;\n    }\n    constructor() {\n        this.hiding = false;\n        this.value = 0;\n        this.visible = false;\n        this.trickle = () => {\n            this.setValue(this.value + Math.random() / 100);\n        };\n        this.stylesheetElement = this.createStylesheetElement();\n        this.progressElement = this.createProgressElement();\n        this.installStylesheetElement();\n        this.setValue(0);\n    }\n    show() {\n        if (!this.visible) {\n            this.visible = true;\n            this.installProgressElement();\n            this.startTrickling();\n        }\n    }\n    hide() {\n        if (this.visible && !this.hiding) {\n            this.hiding = true;\n            this.fadeProgressElement(() => {\n                this.uninstallProgressElement();\n                this.stopTrickling();\n                this.visible = false;\n                this.hiding = false;\n            });\n        }\n    }\n    setValue(value) {\n        this.value = value;\n        this.refresh();\n    }\n    installStylesheetElement() {\n        document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n    }\n    installProgressElement() {\n        this.progressElement.style.width = \"0\";\n        this.progressElement.style.opacity = \"1\";\n        document.documentElement.insertBefore(this.progressElement, document.body);\n        this.refresh();\n    }\n    fadeProgressElement(callback) {\n        this.progressElement.style.opacity = \"0\";\n        setTimeout(callback, ProgressBar.animationDuration * 1.5);\n    }\n    uninstallProgressElement() {\n        if (this.progressElement.parentNode) {\n            document.documentElement.removeChild(this.progressElement);\n        }\n    }\n    startTrickling() {\n        if (!this.trickleInterval) {\n            this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n        }\n    }\n    stopTrickling() {\n        window.clearInterval(this.trickleInterval);\n        delete this.trickleInterval;\n    }\n    refresh() {\n        requestAnimationFrame(() => {\n            this.progressElement.style.width = `${10 + this.value * 90}%`;\n        });\n    }\n    createStylesheetElement() {\n        const element = document.createElement(\"style\");\n        element.type = \"text/css\";\n        element.textContent = ProgressBar.defaultCSS;\n        if (this.cspNonce) {\n            element.nonce = this.cspNonce;\n        }\n        return element;\n    }\n    createProgressElement() {\n        const element = document.createElement(\"div\");\n        element.className = \"turbo-progress-bar\";\n        return element;\n    }\n    get cspNonce() {\n        return getMetaContent(\"csp-nonce\");\n    }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n    constructor() {\n        super(...arguments);\n        this.detailsByOuterHTML = this.children\n            .filter((element) => !elementIsNoscript(element))\n            .map((element) => elementWithoutNonce(element))\n            .reduce((result, element) => {\n            const { outerHTML } = element;\n            const details = outerHTML in result\n                ? result[outerHTML]\n                : {\n                    type: elementType(element),\n                    tracked: elementIsTracked(element),\n                    elements: [],\n                };\n            return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n        }, {});\n    }\n    get trackedElementSignature() {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n            .join(\"\");\n    }\n    getScriptElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n    }\n    getStylesheetElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n    }\n    getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n            .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n            .filter(({ type }) => type == matchedType)\n            .map(({ elements: [element] }) => element);\n    }\n    get provisionalElements() {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n            if (type == null && !tracked) {\n                return [...result, ...elements];\n            }\n            else if (elements.length > 1) {\n                return [...result, ...elements.slice(1)];\n            }\n            else {\n                return result;\n            }\n        }, []);\n    }\n    getMetaValue(name) {\n        const element = this.findMetaElementByName(name);\n        return element ? element.getAttribute(\"content\") : null;\n    }\n    findMetaElementByName(name) {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { elements: [element], } = this.detailsByOuterHTML[outerHTML];\n            return elementIsMetaElementWithName(element, name) ? element : result;\n        }, undefined);\n    }\n}\nfunction elementType(element) {\n    if (elementIsScript(element)) {\n        return \"script\";\n    }\n    else if (elementIsStylesheet(element)) {\n        return \"stylesheet\";\n    }\n}\nfunction elementIsTracked(element) {\n    return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n    const tagName = element.localName;\n    return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n    const tagName = element.localName;\n    return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n    const tagName = element.localName;\n    return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n    const tagName = element.localName;\n    return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n    if (element.hasAttribute(\"nonce\")) {\n        element.setAttribute(\"nonce\", \"\");\n    }\n    return element;\n}\n\nclass PageSnapshot extends Snapshot {\n    static fromHTMLString(html = \"\") {\n        return this.fromDocument(parseHTMLDocument(html));\n    }\n    static fromElement(element) {\n        return this.fromDocument(element.ownerDocument);\n    }\n    static fromDocument({ head, body }) {\n        return new this(body, new HeadSnapshot(head));\n    }\n    constructor(element, headSnapshot) {\n        super(element);\n        this.headSnapshot = headSnapshot;\n    }\n    clone() {\n        const clonedElement = this.element.cloneNode(true);\n        const selectElements = this.element.querySelectorAll(\"select\");\n        const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n        for (const [index, source] of selectElements.entries()) {\n            const clone = clonedSelectElements[index];\n            for (const option of clone.selectedOptions)\n                option.selected = false;\n            for (const option of source.selectedOptions)\n                clone.options[option.index].selected = true;\n        }\n        for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n            clonedPasswordInput.value = \"\";\n        }\n        return new PageSnapshot(clonedElement, this.headSnapshot);\n    }\n    get headElement() {\n        return this.headSnapshot.element;\n    }\n    get rootLocation() {\n        var _a;\n        const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    get cacheControlValue() {\n        return this.getSetting(\"cache-control\");\n    }\n    get isPreviewable() {\n        return this.cacheControlValue != \"no-preview\";\n    }\n    get isCacheable() {\n        return this.cacheControlValue != \"no-cache\";\n    }\n    get isVisitable() {\n        return this.getSetting(\"visit-control\") != \"reload\";\n    }\n    getSetting(name) {\n        return this.headSnapshot.getMetaValue(`turbo-${name}`);\n    }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n    TimingMetric[\"visitStart\"] = \"visitStart\";\n    TimingMetric[\"requestStart\"] = \"requestStart\";\n    TimingMetric[\"requestEnd\"] = \"requestEnd\";\n    TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n    VisitState[\"initialized\"] = \"initialized\";\n    VisitState[\"started\"] = \"started\";\n    VisitState[\"canceled\"] = \"canceled\";\n    VisitState[\"failed\"] = \"failed\";\n    VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n    action: \"advance\",\n    historyChanged: false,\n    visitCachedSnapshot: () => { },\n    willRender: true,\n    updateHistory: true,\n    shouldCacheSnapshot: true,\n    acceptsStreamResponse: false,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n    SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n    SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n    SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n    constructor(delegate, location, restorationIdentifier, options = {}) {\n        this.identifier = uuid();\n        this.timingMetrics = {};\n        this.followedRedirect = false;\n        this.historyChanged = false;\n        this.scrolled = false;\n        this.shouldCacheSnapshot = true;\n        this.acceptsStreamResponse = false;\n        this.snapshotCached = false;\n        this.state = VisitState.initialized;\n        this.delegate = delegate;\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier || uuid();\n        const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse, } = Object.assign(Object.assign({}, defaultOptions), options);\n        this.action = action;\n        this.historyChanged = historyChanged;\n        this.referrer = referrer;\n        this.snapshot = snapshot;\n        this.snapshotHTML = snapshotHTML;\n        this.response = response;\n        this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n        this.visitCachedSnapshot = visitCachedSnapshot;\n        this.willRender = willRender;\n        this.updateHistory = updateHistory;\n        this.scrolled = !willRender;\n        this.shouldCacheSnapshot = shouldCacheSnapshot;\n        this.acceptsStreamResponse = acceptsStreamResponse;\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    get restorationData() {\n        return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n    }\n    get silent() {\n        return this.isSamePage;\n    }\n    start() {\n        if (this.state == VisitState.initialized) {\n            this.recordTimingMetric(TimingMetric.visitStart);\n            this.state = VisitState.started;\n            this.adapter.visitStarted(this);\n            this.delegate.visitStarted(this);\n        }\n    }\n    cancel() {\n        if (this.state == VisitState.started) {\n            if (this.request) {\n                this.request.cancel();\n            }\n            this.cancelRender();\n            this.state = VisitState.canceled;\n        }\n    }\n    complete() {\n        if (this.state == VisitState.started) {\n            this.recordTimingMetric(TimingMetric.visitEnd);\n            this.state = VisitState.completed;\n            this.followRedirect();\n            if (!this.followedRedirect) {\n                this.adapter.visitCompleted(this);\n                this.delegate.visitCompleted(this);\n            }\n        }\n    }\n    fail() {\n        if (this.state == VisitState.started) {\n            this.state = VisitState.failed;\n            this.adapter.visitFailed(this);\n        }\n    }\n    changeHistory() {\n        var _a;\n        if (!this.historyChanged && this.updateHistory) {\n            const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n            const method = getHistoryMethodForAction(actionForHistory);\n            this.history.update(method, this.location, this.restorationIdentifier);\n            this.historyChanged = true;\n        }\n    }\n    issueRequest() {\n        if (this.hasPreloadedResponse()) {\n            this.simulateRequest();\n        }\n        else if (this.shouldIssueRequest() && !this.request) {\n            this.request = new FetchRequest(this, FetchMethod.get, this.location);\n            this.request.perform();\n        }\n    }\n    simulateRequest() {\n        if (this.response) {\n            this.startRequest();\n            this.recordResponse();\n            this.finishRequest();\n        }\n    }\n    startRequest() {\n        this.recordTimingMetric(TimingMetric.requestStart);\n        this.adapter.visitRequestStarted(this);\n    }\n    recordResponse(response = this.response) {\n        this.response = response;\n        if (response) {\n            const { statusCode } = response;\n            if (isSuccessful(statusCode)) {\n                this.adapter.visitRequestCompleted(this);\n            }\n            else {\n                this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n            }\n        }\n    }\n    finishRequest() {\n        this.recordTimingMetric(TimingMetric.requestEnd);\n        this.adapter.visitRequestFinished(this);\n    }\n    loadResponse() {\n        if (this.response) {\n            const { statusCode, responseHTML } = this.response;\n            this.render(async () => {\n                if (this.shouldCacheSnapshot)\n                    this.cacheSnapshot();\n                if (this.view.renderPromise)\n                    await this.view.renderPromise;\n                if (isSuccessful(statusCode) && responseHTML != null) {\n                    await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    this.complete();\n                }\n                else {\n                    await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n                    this.adapter.visitRendered(this);\n                    this.fail();\n                }\n            });\n        }\n    }\n    getCachedSnapshot() {\n        const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n        if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n            if (this.action == \"restore\" || snapshot.isPreviewable) {\n                return snapshot;\n            }\n        }\n    }\n    getPreloadedSnapshot() {\n        if (this.snapshotHTML) {\n            return PageSnapshot.fromHTMLString(this.snapshotHTML);\n        }\n    }\n    hasCachedSnapshot() {\n        return this.getCachedSnapshot() != null;\n    }\n    loadCachedSnapshot() {\n        const snapshot = this.getCachedSnapshot();\n        if (snapshot) {\n            const isPreview = this.shouldIssueRequest();\n            this.render(async () => {\n                this.cacheSnapshot();\n                if (this.isSamePage) {\n                    this.adapter.visitRendered(this);\n                }\n                else {\n                    if (this.view.renderPromise)\n                        await this.view.renderPromise;\n                    await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    if (!isPreview) {\n                        this.complete();\n                    }\n                }\n            });\n        }\n    }\n    followRedirect() {\n        var _a;\n        if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n            this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n                action: \"replace\",\n                response: this.response,\n                shouldCacheSnapshot: false,\n                willRender: false,\n            });\n            this.followedRedirect = true;\n        }\n    }\n    goToSamePageAnchor() {\n        if (this.isSamePage) {\n            this.render(async () => {\n                this.cacheSnapshot();\n                this.performScroll();\n                this.changeHistory();\n                this.adapter.visitRendered(this);\n            });\n        }\n    }\n    prepareRequest(request) {\n        if (this.acceptsStreamResponse) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted() {\n        this.startRequest();\n    }\n    requestPreventedHandlingResponse(_request, _response) { }\n    async requestSucceededWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.redirectedToLocation = response.redirected ? response.location : undefined;\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    async requestFailedWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    requestErrored(_request, _error) {\n        this.recordResponse({\n            statusCode: SystemStatusCode.networkFailure,\n            redirected: false,\n        });\n    }\n    requestFinished() {\n        this.finishRequest();\n    }\n    performScroll() {\n        if (!this.scrolled && !this.view.forceReloaded) {\n            if (this.action == \"restore\") {\n                this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            else {\n                this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            if (this.isSamePage) {\n                this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n            }\n            this.scrolled = true;\n        }\n    }\n    scrollToRestoredPosition() {\n        const { scrollPosition } = this.restorationData;\n        if (scrollPosition) {\n            this.view.scrollToPosition(scrollPosition);\n            return true;\n        }\n    }\n    scrollToAnchor() {\n        const anchor = getAnchor(this.location);\n        if (anchor != null) {\n            this.view.scrollToAnchor(anchor);\n            return true;\n        }\n    }\n    recordTimingMetric(metric) {\n        this.timingMetrics[metric] = new Date().getTime();\n    }\n    getTimingMetrics() {\n        return Object.assign({}, this.timingMetrics);\n    }\n    getHistoryMethodForAction(action) {\n        switch (action) {\n            case \"replace\":\n                return history.replaceState;\n            case \"advance\":\n            case \"restore\":\n                return history.pushState;\n        }\n    }\n    hasPreloadedResponse() {\n        return typeof this.response == \"object\";\n    }\n    shouldIssueRequest() {\n        if (this.isSamePage) {\n            return false;\n        }\n        else if (this.action == \"restore\") {\n            return !this.hasCachedSnapshot();\n        }\n        else {\n            return this.willRender;\n        }\n    }\n    cacheSnapshot() {\n        if (!this.snapshotCached) {\n            this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n            this.snapshotCached = true;\n        }\n    }\n    async render(callback) {\n        this.cancelRender();\n        await new Promise((resolve) => {\n            this.frame = requestAnimationFrame(() => resolve());\n        });\n        await callback();\n        delete this.frame;\n    }\n    cancelRender() {\n        if (this.frame) {\n            cancelAnimationFrame(this.frame);\n            delete this.frame;\n        }\n    }\n}\nfunction isSuccessful(statusCode) {\n    return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n    constructor(session) {\n        this.progressBar = new ProgressBar();\n        this.showProgressBar = () => {\n            this.progressBar.show();\n        };\n        this.session = session;\n    }\n    visitProposedToLocation(location, options) {\n        this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n    }\n    visitStarted(visit) {\n        this.location = visit.location;\n        visit.loadCachedSnapshot();\n        visit.issueRequest();\n        visit.goToSamePageAnchor();\n    }\n    visitRequestStarted(visit) {\n        this.progressBar.setValue(0);\n        if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n            this.showVisitProgressBarAfterDelay();\n        }\n        else {\n            this.showProgressBar();\n        }\n    }\n    visitRequestCompleted(visit) {\n        visit.loadResponse();\n    }\n    visitRequestFailedWithStatusCode(visit, statusCode) {\n        switch (statusCode) {\n            case SystemStatusCode.networkFailure:\n            case SystemStatusCode.timeoutFailure:\n            case SystemStatusCode.contentTypeMismatch:\n                return this.reload({\n                    reason: \"request_failed\",\n                    context: {\n                        statusCode,\n                    },\n                });\n            default:\n                return visit.loadResponse();\n        }\n    }\n    visitRequestFinished(_visit) {\n        this.progressBar.setValue(1);\n        this.hideVisitProgressBar();\n    }\n    visitCompleted(_visit) { }\n    pageInvalidated(reason) {\n        this.reload(reason);\n    }\n    visitFailed(_visit) { }\n    visitRendered(_visit) { }\n    formSubmissionStarted(_formSubmission) {\n        this.progressBar.setValue(0);\n        this.showFormProgressBarAfterDelay();\n    }\n    formSubmissionFinished(_formSubmission) {\n        this.progressBar.setValue(1);\n        this.hideFormProgressBar();\n    }\n    showVisitProgressBarAfterDelay() {\n        this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n    }\n    hideVisitProgressBar() {\n        this.progressBar.hide();\n        if (this.visitProgressBarTimeout != null) {\n            window.clearTimeout(this.visitProgressBarTimeout);\n            delete this.visitProgressBarTimeout;\n        }\n    }\n    showFormProgressBarAfterDelay() {\n        if (this.formProgressBarTimeout == null) {\n            this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n        }\n    }\n    hideFormProgressBar() {\n        this.progressBar.hide();\n        if (this.formProgressBarTimeout != null) {\n            window.clearTimeout(this.formProgressBarTimeout);\n            delete this.formProgressBarTimeout;\n        }\n    }\n    reload(reason) {\n        var _a;\n        dispatch(\"turbo:reload\", { detail: reason });\n        window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n    }\n    get navigator() {\n        return this.session.navigator;\n    }\n}\n\nclass CacheObserver {\n    constructor() {\n        this.selector = \"[data-turbo-temporary]\";\n        this.deprecatedSelector = \"[data-turbo-cache=false]\";\n        this.started = false;\n        this.removeTemporaryElements = ((_event) => {\n            for (const element of this.temporaryElements) {\n                element.remove();\n            }\n        });\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n        }\n    }\n    get temporaryElements() {\n        return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation];\n    }\n    get temporaryElementsWithDeprecation() {\n        const elements = document.querySelectorAll(this.deprecatedSelector);\n        if (elements.length) {\n            console.warn(`The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`);\n        }\n        return [...elements];\n    }\n}\n\nclass FrameRedirector {\n    constructor(session, element) {\n        this.session = session;\n        this.element = element;\n        this.linkInterceptor = new LinkInterceptor(this, element);\n        this.formSubmitObserver = new FormSubmitObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n        this.formSubmitObserver.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n        this.formSubmitObserver.stop();\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldRedirect(element);\n    }\n    linkClickIntercepted(element, url, event) {\n        const frame = this.findFrameElement(element);\n        if (frame) {\n            frame.delegate.linkClickIntercepted(element, url, event);\n        }\n    }\n    willSubmitForm(element, submitter) {\n        return (element.closest(\"turbo-frame\") == null &&\n            this.shouldSubmit(element, submitter) &&\n            this.shouldRedirect(element, submitter));\n    }\n    formSubmitted(element, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        if (frame) {\n            frame.delegate.formSubmitted(element, submitter);\n        }\n    }\n    shouldSubmit(form, submitter) {\n        var _a;\n        const action = getAction(form, submitter);\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n        return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n    }\n    shouldRedirect(element, submitter) {\n        const isNavigatable = element instanceof HTMLFormElement\n            ? this.session.submissionIsNavigatable(element, submitter)\n            : this.session.elementIsNavigatable(element);\n        if (isNavigatable) {\n            const frame = this.findFrameElement(element, submitter);\n            return frame ? frame != element.closest(\"turbo-frame\") : false;\n        }\n        else {\n            return false;\n        }\n    }\n    findFrameElement(element, submitter) {\n        const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n        if (id && id != \"_top\") {\n            const frame = this.element.querySelector(`#${id}:not([disabled])`);\n            if (frame instanceof FrameElement) {\n                return frame;\n            }\n        }\n    }\n}\n\nclass History {\n    constructor(delegate) {\n        this.restorationIdentifier = uuid();\n        this.restorationData = {};\n        this.started = false;\n        this.pageLoaded = false;\n        this.onPopState = (event) => {\n            if (this.shouldHandlePopState()) {\n                const { turbo } = event.state || {};\n                if (turbo) {\n                    this.location = new URL(window.location.href);\n                    const { restorationIdentifier } = turbo;\n                    this.restorationIdentifier = restorationIdentifier;\n                    this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n                }\n            }\n        };\n        this.onPageLoad = async (_event) => {\n            await nextMicrotask();\n            this.pageLoaded = true;\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"popstate\", this.onPopState, false);\n            addEventListener(\"load\", this.onPageLoad, false);\n            this.started = true;\n            this.replace(new URL(window.location.href));\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"popstate\", this.onPopState, false);\n            removeEventListener(\"load\", this.onPageLoad, false);\n            this.started = false;\n        }\n    }\n    push(location, restorationIdentifier) {\n        this.update(history.pushState, location, restorationIdentifier);\n    }\n    replace(location, restorationIdentifier) {\n        this.update(history.replaceState, location, restorationIdentifier);\n    }\n    update(method, location, restorationIdentifier = uuid()) {\n        const state = { turbo: { restorationIdentifier } };\n        method.call(history, state, \"\", location.href);\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier;\n    }\n    getRestorationDataForIdentifier(restorationIdentifier) {\n        return this.restorationData[restorationIdentifier] || {};\n    }\n    updateRestorationData(additionalData) {\n        const { restorationIdentifier } = this;\n        const restorationData = this.restorationData[restorationIdentifier];\n        this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n    }\n    assumeControlOfScrollRestoration() {\n        var _a;\n        if (!this.previousScrollRestoration) {\n            this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n            history.scrollRestoration = \"manual\";\n        }\n    }\n    relinquishControlOfScrollRestoration() {\n        if (this.previousScrollRestoration) {\n            history.scrollRestoration = this.previousScrollRestoration;\n            delete this.previousScrollRestoration;\n        }\n    }\n    shouldHandlePopState() {\n        return this.pageIsLoaded();\n    }\n    pageIsLoaded() {\n        return this.pageLoaded || document.readyState == \"complete\";\n    }\n}\n\nclass Navigator {\n    constructor(delegate) {\n        this.delegate = delegate;\n    }\n    proposeVisit(location, options = {}) {\n        if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n            if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n                this.delegate.visitProposedToLocation(location, options);\n            }\n            else {\n                window.location.href = location.toString();\n            }\n        }\n    }\n    startVisit(locatable, restorationIdentifier, options = {}) {\n        this.stop();\n        this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n        this.currentVisit.start();\n    }\n    submitForm(form, submitter) {\n        this.stop();\n        this.formSubmission = new FormSubmission(this, form, submitter, true);\n        this.formSubmission.start();\n    }\n    stop() {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n            delete this.formSubmission;\n        }\n        if (this.currentVisit) {\n            this.currentVisit.cancel();\n            delete this.currentVisit;\n        }\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    formSubmissionStarted(formSubmission) {\n        if (typeof this.adapter.formSubmissionStarted === \"function\") {\n            this.adapter.formSubmissionStarted(formSubmission);\n        }\n    }\n    async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n        if (formSubmission == this.formSubmission) {\n            const responseHTML = await fetchResponse.responseHTML;\n            if (responseHTML) {\n                const shouldCacheSnapshot = formSubmission.isSafe;\n                if (!shouldCacheSnapshot) {\n                    this.view.clearSnapshotCache();\n                }\n                const { statusCode, redirected } = fetchResponse;\n                const action = this.getActionForFormSubmission(formSubmission);\n                const visitOptions = {\n                    action,\n                    shouldCacheSnapshot,\n                    response: { statusCode, responseHTML, redirected },\n                };\n                this.proposeVisit(fetchResponse.location, visitOptions);\n            }\n        }\n    }\n    async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        const responseHTML = await fetchResponse.responseHTML;\n        if (responseHTML) {\n            const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n            if (fetchResponse.serverError) {\n                await this.view.renderError(snapshot, this.currentVisit);\n            }\n            else {\n                await this.view.renderPage(snapshot, false, true, this.currentVisit);\n            }\n            this.view.scrollToTop();\n            this.view.clearSnapshotCache();\n        }\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished(formSubmission) {\n        if (typeof this.adapter.formSubmissionFinished === \"function\") {\n            this.adapter.formSubmissionFinished(formSubmission);\n        }\n    }\n    visitStarted(visit) {\n        this.delegate.visitStarted(visit);\n    }\n    visitCompleted(visit) {\n        this.delegate.visitCompleted(visit);\n    }\n    locationWithActionIsSamePage(location, action) {\n        const anchor = getAnchor(location);\n        const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n        const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n        return (action !== \"replace\" &&\n            getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n            (isRestorationToTop || (anchor != null && anchor !== currentAnchor)));\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    getActionForFormSubmission({ submitter, formElement }) {\n        return getVisitAction(submitter, formElement) || \"advance\";\n    }\n}\n\nvar PageStage;\n(function (PageStage) {\n    PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n    PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n    PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n    PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n    constructor(delegate) {\n        this.stage = PageStage.initial;\n        this.started = false;\n        this.interpretReadyState = () => {\n            const { readyState } = this;\n            if (readyState == \"interactive\") {\n                this.pageIsInteractive();\n            }\n            else if (readyState == \"complete\") {\n                this.pageIsComplete();\n            }\n        };\n        this.pageWillUnload = () => {\n            this.delegate.pageWillUnload();\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            if (this.stage == PageStage.initial) {\n                this.stage = PageStage.loading;\n            }\n            document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n            addEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n            removeEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = false;\n        }\n    }\n    pageIsInteractive() {\n        if (this.stage == PageStage.loading) {\n            this.stage = PageStage.interactive;\n            this.delegate.pageBecameInteractive();\n        }\n    }\n    pageIsComplete() {\n        this.pageIsInteractive();\n        if (this.stage == PageStage.interactive) {\n            this.stage = PageStage.complete;\n            this.delegate.pageLoaded();\n        }\n    }\n    get readyState() {\n        return document.readyState;\n    }\n}\n\nclass ScrollObserver {\n    constructor(delegate) {\n        this.started = false;\n        this.onScroll = () => {\n            this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"scroll\", this.onScroll, false);\n            this.onScroll();\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"scroll\", this.onScroll, false);\n            this.started = false;\n        }\n    }\n    updatePosition(position) {\n        this.delegate.scrollPositionChanged(position);\n    }\n}\n\nclass StreamMessageRenderer {\n    render({ fragment }) {\n        Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n    }\n    enteringBardo(currentPermanentElement, newPermanentElement) {\n        newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n    }\n    leavingBardo() { }\n}\nfunction getPermanentElementMapForFragment(fragment) {\n    const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n    const permanentElementMap = {};\n    for (const permanentElementInDocument of permanentElementsInDocument) {\n        const { id } = permanentElementInDocument;\n        for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n            const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n            if (elementInStream) {\n                permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n            }\n        }\n    }\n    return permanentElementMap;\n}\n\nclass StreamObserver {\n    constructor(delegate) {\n        this.sources = new Set();\n        this.started = false;\n        this.inspectFetchResponse = ((event) => {\n            const response = fetchResponseFromEvent(event);\n            if (response && fetchResponseIsStream(response)) {\n                event.preventDefault();\n                this.receiveMessageResponse(response);\n            }\n        });\n        this.receiveMessageEvent = (event) => {\n            if (this.started && typeof event.data == \"string\") {\n                this.receiveMessageHTML(event.data);\n            }\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    connectStreamSource(source) {\n        if (!this.streamSourceIsConnected(source)) {\n            this.sources.add(source);\n            source.addEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    disconnectStreamSource(source) {\n        if (this.streamSourceIsConnected(source)) {\n            this.sources.delete(source);\n            source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    streamSourceIsConnected(source) {\n        return this.sources.has(source);\n    }\n    async receiveMessageResponse(response) {\n        const html = await response.responseHTML;\n        if (html) {\n            this.receiveMessageHTML(html);\n        }\n    }\n    receiveMessageHTML(html) {\n        this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n    }\n}\nfunction fetchResponseFromEvent(event) {\n    var _a;\n    const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n    if (fetchResponse instanceof FetchResponse) {\n        return fetchResponse;\n    }\n}\nfunction fetchResponseIsStream(response) {\n    var _a;\n    const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n    return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        const { documentElement, body } = document;\n        documentElement.replaceChild(newElement, body);\n    }\n    async render() {\n        this.replaceHeadAndBody();\n        this.activateScriptElements();\n    }\n    replaceHeadAndBody() {\n        const { documentElement, head } = document;\n        documentElement.replaceChild(this.newHead, head);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    activateScriptElements() {\n        for (const replaceableElement of this.scriptElements) {\n            const parentNode = replaceableElement.parentNode;\n            if (parentNode) {\n                const element = activateScriptElement(replaceableElement);\n                parentNode.replaceChild(element, replaceableElement);\n            }\n        }\n    }\n    get newHead() {\n        return this.newSnapshot.headSnapshot.element;\n    }\n    get scriptElements() {\n        return document.documentElement.querySelectorAll(\"script\");\n    }\n}\n\nclass PageRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        if (document.body && newElement instanceof HTMLBodyElement) {\n            document.body.replaceWith(newElement);\n        }\n        else {\n            document.documentElement.appendChild(newElement);\n        }\n    }\n    get shouldRender() {\n        return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n    }\n    get reloadReason() {\n        if (!this.newSnapshot.isVisitable) {\n            return {\n                reason: \"turbo_visit_control_is_reload\",\n            };\n        }\n        if (!this.trackedElementsAreIdentical) {\n            return {\n                reason: \"tracked_element_mismatch\",\n            };\n        }\n    }\n    async prepareToRender() {\n        await this.mergeHead();\n    }\n    async render() {\n        if (this.willRender) {\n            await this.replaceBody();\n        }\n    }\n    finishRendering() {\n        super.finishRendering();\n        if (!this.isPreview) {\n            this.focusFirstAutofocusableElement();\n        }\n    }\n    get currentHeadSnapshot() {\n        return this.currentSnapshot.headSnapshot;\n    }\n    get newHeadSnapshot() {\n        return this.newSnapshot.headSnapshot;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    async mergeHead() {\n        const mergedHeadElements = this.mergeProvisionalElements();\n        const newStylesheetElements = this.copyNewHeadStylesheetElements();\n        this.copyNewHeadScriptElements();\n        await mergedHeadElements;\n        await newStylesheetElements;\n    }\n    async replaceBody() {\n        await this.preservingPermanentElements(async () => {\n            this.activateNewBody();\n            await this.assignNewBody();\n        });\n    }\n    get trackedElementsAreIdentical() {\n        return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n    }\n    async copyNewHeadStylesheetElements() {\n        const loadingElements = [];\n        for (const element of this.newHeadStylesheetElements) {\n            loadingElements.push(waitForLoad(element));\n            document.head.appendChild(element);\n        }\n        await Promise.all(loadingElements);\n    }\n    copyNewHeadScriptElements() {\n        for (const element of this.newHeadScriptElements) {\n            document.head.appendChild(activateScriptElement(element));\n        }\n    }\n    async mergeProvisionalElements() {\n        const newHeadElements = [...this.newHeadProvisionalElements];\n        for (const element of this.currentHeadProvisionalElements) {\n            if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n                document.head.removeChild(element);\n            }\n        }\n        for (const element of newHeadElements) {\n            document.head.appendChild(element);\n        }\n    }\n    isCurrentElementInElementList(element, elementList) {\n        for (const [index, newElement] of elementList.entries()) {\n            if (element.tagName == \"TITLE\") {\n                if (newElement.tagName != \"TITLE\") {\n                    continue;\n                }\n                if (element.innerHTML == newElement.innerHTML) {\n                    elementList.splice(index, 1);\n                    return true;\n                }\n            }\n            if (newElement.isEqualNode(element)) {\n                elementList.splice(index, 1);\n                return true;\n            }\n        }\n        return false;\n    }\n    removeCurrentHeadProvisionalElements() {\n        for (const element of this.currentHeadProvisionalElements) {\n            document.head.removeChild(element);\n        }\n    }\n    copyNewHeadProvisionalElements() {\n        for (const element of this.newHeadProvisionalElements) {\n            document.head.appendChild(element);\n        }\n    }\n    activateNewBody() {\n        document.adoptNode(this.newElement);\n        this.activateNewBodyScriptElements();\n    }\n    activateNewBodyScriptElements() {\n        for (const inertScriptElement of this.newBodyScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    async assignNewBody() {\n        await this.renderElement(this.currentElement, this.newElement);\n    }\n    get newHeadStylesheetElements() {\n        return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get newHeadScriptElements() {\n        return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get currentHeadProvisionalElements() {\n        return this.currentHeadSnapshot.provisionalElements;\n    }\n    get newHeadProvisionalElements() {\n        return this.newHeadSnapshot.provisionalElements;\n    }\n    get newBodyScriptElements() {\n        return this.newElement.querySelectorAll(\"script\");\n    }\n}\n\nclass SnapshotCache {\n    constructor(size) {\n        this.keys = [];\n        this.snapshots = {};\n        this.size = size;\n    }\n    has(location) {\n        return toCacheKey(location) in this.snapshots;\n    }\n    get(location) {\n        if (this.has(location)) {\n            const snapshot = this.read(location);\n            this.touch(location);\n            return snapshot;\n        }\n    }\n    put(location, snapshot) {\n        this.write(location, snapshot);\n        this.touch(location);\n        return snapshot;\n    }\n    clear() {\n        this.snapshots = {};\n    }\n    read(location) {\n        return this.snapshots[toCacheKey(location)];\n    }\n    write(location, snapshot) {\n        this.snapshots[toCacheKey(location)] = snapshot;\n    }\n    touch(location) {\n        const key = toCacheKey(location);\n        const index = this.keys.indexOf(key);\n        if (index > -1)\n            this.keys.splice(index, 1);\n        this.keys.unshift(key);\n        this.trim();\n    }\n    trim() {\n        for (const key of this.keys.splice(this.size)) {\n            delete this.snapshots[key];\n        }\n    }\n}\n\nclass PageView extends View {\n    constructor() {\n        super(...arguments);\n        this.snapshotCache = new SnapshotCache(10);\n        this.lastRenderedLocation = new URL(location.href);\n        this.forceReloaded = false;\n    }\n    renderPage(snapshot, isPreview = false, willRender = true, visit) {\n        const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n        if (!renderer.shouldRender) {\n            this.forceReloaded = true;\n        }\n        else {\n            visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        }\n        return this.render(renderer);\n    }\n    renderError(snapshot, visit) {\n        visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n        return this.render(renderer);\n    }\n    clearSnapshotCache() {\n        this.snapshotCache.clear();\n    }\n    async cacheSnapshot(snapshot = this.snapshot) {\n        if (snapshot.isCacheable) {\n            this.delegate.viewWillCacheSnapshot();\n            const { lastRenderedLocation: location } = this;\n            await nextEventLoopTick();\n            const cachedSnapshot = snapshot.clone();\n            this.snapshotCache.put(location, cachedSnapshot);\n            return cachedSnapshot;\n        }\n    }\n    getCachedSnapshotForLocation(location) {\n        return this.snapshotCache.get(location);\n    }\n    get snapshot() {\n        return PageSnapshot.fromElement(this.element);\n    }\n}\n\nclass Preloader {\n    constructor(delegate) {\n        this.selector = \"a[data-turbo-preload]\";\n        this.delegate = delegate;\n    }\n    get snapshotCache() {\n        return this.delegate.navigator.view.snapshotCache;\n    }\n    start() {\n        if (document.readyState === \"loading\") {\n            return document.addEventListener(\"DOMContentLoaded\", () => {\n                this.preloadOnLoadLinksForView(document.body);\n            });\n        }\n        else {\n            this.preloadOnLoadLinksForView(document.body);\n        }\n    }\n    preloadOnLoadLinksForView(element) {\n        for (const link of element.querySelectorAll(this.selector)) {\n            this.preloadURL(link);\n        }\n    }\n    async preloadURL(link) {\n        const location = new URL(link.href);\n        if (this.snapshotCache.has(location)) {\n            return;\n        }\n        try {\n            const response = await fetch(location.toString(), { headers: { \"VND.PREFETCH\": \"true\", Accept: \"text/html\" } });\n            const responseText = await response.text();\n            const snapshot = PageSnapshot.fromHTMLString(responseText);\n            this.snapshotCache.put(location, snapshot);\n        }\n        catch (_) {\n        }\n    }\n}\n\nclass Session {\n    constructor() {\n        this.navigator = new Navigator(this);\n        this.history = new History(this);\n        this.preloader = new Preloader(this);\n        this.view = new PageView(this, document.documentElement);\n        this.adapter = new BrowserAdapter(this);\n        this.pageObserver = new PageObserver(this);\n        this.cacheObserver = new CacheObserver();\n        this.linkClickObserver = new LinkClickObserver(this, window);\n        this.formSubmitObserver = new FormSubmitObserver(this, document);\n        this.scrollObserver = new ScrollObserver(this);\n        this.streamObserver = new StreamObserver(this);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n        this.frameRedirector = new FrameRedirector(this, document.documentElement);\n        this.streamMessageRenderer = new StreamMessageRenderer();\n        this.drive = true;\n        this.enabled = true;\n        this.progressBarDelay = 500;\n        this.started = false;\n        this.formMode = \"on\";\n    }\n    start() {\n        if (!this.started) {\n            this.pageObserver.start();\n            this.cacheObserver.start();\n            this.formLinkClickObserver.start();\n            this.linkClickObserver.start();\n            this.formSubmitObserver.start();\n            this.scrollObserver.start();\n            this.streamObserver.start();\n            this.frameRedirector.start();\n            this.history.start();\n            this.preloader.start();\n            this.started = true;\n            this.enabled = true;\n        }\n    }\n    disable() {\n        this.enabled = false;\n    }\n    stop() {\n        if (this.started) {\n            this.pageObserver.stop();\n            this.cacheObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkClickObserver.stop();\n            this.formSubmitObserver.stop();\n            this.scrollObserver.stop();\n            this.streamObserver.stop();\n            this.frameRedirector.stop();\n            this.history.stop();\n            this.started = false;\n        }\n    }\n    registerAdapter(adapter) {\n        this.adapter = adapter;\n    }\n    visit(location, options = {}) {\n        const frameElement = options.frame ? document.getElementById(options.frame) : null;\n        if (frameElement instanceof FrameElement) {\n            frameElement.src = location.toString();\n            frameElement.loaded;\n        }\n        else {\n            this.navigator.proposeVisit(expandURL(location), options);\n        }\n    }\n    connectStreamSource(source) {\n        this.streamObserver.connectStreamSource(source);\n    }\n    disconnectStreamSource(source) {\n        this.streamObserver.disconnectStreamSource(source);\n    }\n    renderStreamMessage(message) {\n        this.streamMessageRenderer.render(StreamMessage.wrap(message));\n    }\n    clearCache() {\n        this.view.clearSnapshotCache();\n    }\n    setProgressBarDelay(delay) {\n        this.progressBarDelay = delay;\n    }\n    setFormMode(mode) {\n        this.formMode = mode;\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n        if (this.enabled) {\n            this.navigator.startVisit(location, restorationIdentifier, {\n                action: \"restore\",\n                historyChanged: true,\n            });\n        }\n        else {\n            this.adapter.pageInvalidated({\n                reason: \"turbo_disabled\",\n            });\n        }\n    }\n    scrollPositionChanged(position) {\n        this.history.updateRestorationData({ scrollPosition: position });\n    }\n    willSubmitFormLinkToLocation(link, location) {\n        return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n    }\n    submittedFormLinkToLocation() { }\n    willFollowLinkToLocation(link, location, event) {\n        return (this.elementIsNavigatable(link) &&\n            locationIsVisitable(location, this.snapshot.rootLocation) &&\n            this.applicationAllowsFollowingLinkToLocation(link, location, event));\n    }\n    followedLinkToLocation(link, location) {\n        const action = this.getActionForLink(link);\n        const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n        this.visit(location.href, { action, acceptsStreamResponse });\n    }\n    allowsVisitingLocationWithAction(location, action) {\n        return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n    }\n    visitProposedToLocation(location, options) {\n        extendURLWithDeprecatedProperties(location);\n        this.adapter.visitProposedToLocation(location, options);\n    }\n    visitStarted(visit) {\n        if (!visit.acceptsStreamResponse) {\n            markAsBusy(document.documentElement);\n        }\n        extendURLWithDeprecatedProperties(visit.location);\n        if (!visit.silent) {\n            this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n        }\n    }\n    visitCompleted(visit) {\n        clearBusyState(document.documentElement);\n        this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n    }\n    locationWithActionIsSamePage(location, action) {\n        return this.navigator.locationWithActionIsSamePage(location, action);\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n    }\n    willSubmitForm(form, submitter) {\n        const action = getAction(form, submitter);\n        return (this.submissionIsNavigatable(form, submitter) &&\n            locationIsVisitable(expandURL(action), this.snapshot.rootLocation));\n    }\n    formSubmitted(form, submitter) {\n        this.navigator.submitForm(form, submitter);\n    }\n    pageBecameInteractive() {\n        this.view.lastRenderedLocation = this.location;\n        this.notifyApplicationAfterPageLoad();\n    }\n    pageLoaded() {\n        this.history.assumeControlOfScrollRestoration();\n    }\n    pageWillUnload() {\n        this.history.relinquishControlOfScrollRestoration();\n    }\n    receivedMessageFromStream(message) {\n        this.renderStreamMessage(message);\n    }\n    viewWillCacheSnapshot() {\n        var _a;\n        if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n            this.notifyApplicationBeforeCachingSnapshot();\n        }\n    }\n    allowsImmediateRender({ element }, options) {\n        const event = this.notifyApplicationBeforeRender(element, options);\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) {\n        this.view.lastRenderedLocation = this.history.location;\n        this.notifyApplicationAfterRender();\n    }\n    preloadOnLoadLinksForView(element) {\n        this.preloader.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated(reason) {\n        this.adapter.pageInvalidated(reason);\n    }\n    frameLoaded(frame) {\n        this.notifyApplicationAfterFrameLoad(frame);\n    }\n    frameRendered(fetchResponse, frame) {\n        this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n    }\n    applicationAllowsFollowingLinkToLocation(link, location, ev) {\n        const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n        return !event.defaultPrevented;\n    }\n    applicationAllowsVisitingLocation(location) {\n        const event = this.notifyApplicationBeforeVisitingLocation(location);\n        return !event.defaultPrevented;\n    }\n    notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n        return dispatch(\"turbo:click\", {\n            target: link,\n            detail: { url: location.href, originalEvent: event },\n            cancelable: true,\n        });\n    }\n    notifyApplicationBeforeVisitingLocation(location) {\n        return dispatch(\"turbo:before-visit\", {\n            detail: { url: location.href },\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterVisitingLocation(location, action) {\n        return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n    }\n    notifyApplicationBeforeCachingSnapshot() {\n        return dispatch(\"turbo:before-cache\");\n    }\n    notifyApplicationBeforeRender(newBody, options) {\n        return dispatch(\"turbo:before-render\", {\n            detail: Object.assign({ newBody }, options),\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterRender() {\n        return dispatch(\"turbo:render\");\n    }\n    notifyApplicationAfterPageLoad(timing = {}) {\n        return dispatch(\"turbo:load\", {\n            detail: { url: this.location.href, timing },\n        });\n    }\n    notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n        dispatchEvent(new HashChangeEvent(\"hashchange\", {\n            oldURL: oldURL.toString(),\n            newURL: newURL.toString(),\n        }));\n    }\n    notifyApplicationAfterFrameLoad(frame) {\n        return dispatch(\"turbo:frame-load\", { target: frame });\n    }\n    notifyApplicationAfterFrameRender(fetchResponse, frame) {\n        return dispatch(\"turbo:frame-render\", {\n            detail: { fetchResponse },\n            target: frame,\n            cancelable: true,\n        });\n    }\n    submissionIsNavigatable(form, submitter) {\n        if (this.formMode == \"off\") {\n            return false;\n        }\n        else {\n            const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n            if (this.formMode == \"optin\") {\n                return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n            }\n            else {\n                return submitterIsNavigatable && this.elementIsNavigatable(form);\n            }\n        }\n    }\n    elementIsNavigatable(element) {\n        const container = findClosestRecursively(element, \"[data-turbo]\");\n        const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n        if (this.drive || withinFrame) {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") != \"false\";\n            }\n            else {\n                return true;\n            }\n        }\n        else {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") == \"true\";\n            }\n            else {\n                return false;\n            }\n        }\n    }\n    getActionForLink(link) {\n        return getVisitAction(link) || \"advance\";\n    }\n    get snapshot() {\n        return this.view.snapshot;\n    }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n    Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n    absoluteURL: {\n        get() {\n            return this.toString();\n        },\n    },\n};\n\nclass Cache {\n    constructor(session) {\n        this.session = session;\n    }\n    clear() {\n        this.session.clearCache();\n    }\n    resetCacheControl() {\n        this.setCacheControl(\"\");\n    }\n    exemptPageFromCache() {\n        this.setCacheControl(\"no-cache\");\n    }\n    exemptPageFromPreview() {\n        this.setCacheControl(\"no-preview\");\n    }\n    setCacheControl(value) {\n        setMetaContent(\"turbo-cache-control\", value);\n    }\n}\n\nconst StreamActions = {\n    after() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n    },\n    append() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.append(this.templateContent));\n    },\n    before() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n    },\n    prepend() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.prepend(this.templateContent));\n    },\n    remove() {\n        this.targetElements.forEach((e) => e.remove());\n    },\n    replace() {\n        this.targetElements.forEach((e) => e.replaceWith(this.templateContent));\n    },\n    update() {\n        this.targetElements.forEach((targetElement) => {\n            targetElement.innerHTML = \"\";\n            targetElement.append(this.templateContent);\n        });\n    },\n};\n\nconst session = new Session();\nconst cache = new Cache(session);\nconst { navigator: navigator$1 } = session;\nfunction start() {\n    session.start();\n}\nfunction registerAdapter(adapter) {\n    session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n    session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n    session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n    session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n    session.renderStreamMessage(message);\n}\nfunction clearCache() {\n    console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n    session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n    session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n    FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n    session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    navigator: navigator$1,\n    session: session,\n    cache: cache,\n    PageRenderer: PageRenderer,\n    PageSnapshot: PageSnapshot,\n    FrameRenderer: FrameRenderer,\n    start: start,\n    registerAdapter: registerAdapter,\n    visit: visit,\n    connectStreamSource: connectStreamSource,\n    disconnectStreamSource: disconnectStreamSource,\n    renderStreamMessage: renderStreamMessage,\n    clearCache: clearCache,\n    setProgressBarDelay: setProgressBarDelay,\n    setConfirmMethod: setConfirmMethod,\n    setFormMode: setFormMode,\n    StreamActions: StreamActions\n});\n\nclass TurboFrameMissingError extends Error {\n}\n\nclass FrameController {\n    constructor(element) {\n        this.fetchResponseLoaded = (_fetchResponse) => { };\n        this.currentFetchRequest = null;\n        this.resolveVisitPromise = () => { };\n        this.connected = false;\n        this.hasBeenLoaded = false;\n        this.ignoredAttributes = new Set();\n        this.action = null;\n        this.visitCachedSnapshot = ({ element }) => {\n            const frame = element.querySelector(\"#\" + this.element.id);\n            if (frame && this.previousFrameElement) {\n                frame.replaceChildren(...this.previousFrameElement.children);\n            }\n            delete this.previousFrameElement;\n        };\n        this.element = element;\n        this.view = new FrameView(this, this.element);\n        this.appearanceObserver = new AppearanceObserver(this, this.element);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n        this.linkInterceptor = new LinkInterceptor(this, this.element);\n        this.restorationIdentifier = uuid();\n        this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n    }\n    connect() {\n        if (!this.connected) {\n            this.connected = true;\n            if (this.loadingStyle == FrameLoadingStyle.lazy) {\n                this.appearanceObserver.start();\n            }\n            else {\n                this.loadSourceURL();\n            }\n            this.formLinkClickObserver.start();\n            this.linkInterceptor.start();\n            this.formSubmitObserver.start();\n        }\n    }\n    disconnect() {\n        if (this.connected) {\n            this.connected = false;\n            this.appearanceObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkInterceptor.stop();\n            this.formSubmitObserver.stop();\n        }\n    }\n    disabledChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.eager) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLChanged() {\n        if (this.isIgnoringChangesTo(\"src\"))\n            return;\n        if (this.element.isConnected) {\n            this.complete = false;\n        }\n        if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLReloaded() {\n        const { src } = this.element;\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            this.element.removeAttribute(\"complete\");\n        });\n        this.element.src = null;\n        this.element.src = src;\n        return this.element.loaded;\n    }\n    completeChanged() {\n        if (this.isIgnoringChangesTo(\"complete\"))\n            return;\n        this.loadSourceURL();\n    }\n    loadingStyleChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.lazy) {\n            this.appearanceObserver.start();\n        }\n        else {\n            this.appearanceObserver.stop();\n            this.loadSourceURL();\n        }\n    }\n    async loadSourceURL() {\n        if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n            this.element.loaded = this.visit(expandURL(this.sourceURL));\n            this.appearanceObserver.stop();\n            await this.element.loaded;\n            this.hasBeenLoaded = true;\n        }\n    }\n    async loadResponse(fetchResponse) {\n        if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n            this.sourceURL = fetchResponse.response.url;\n        }\n        try {\n            const html = await fetchResponse.responseHTML;\n            if (html) {\n                const document = parseHTMLDocument(html);\n                const pageSnapshot = PageSnapshot.fromDocument(document);\n                if (pageSnapshot.isVisitable) {\n                    await this.loadFrameResponse(fetchResponse, document);\n                }\n                else {\n                    await this.handleUnvisitableFrameResponse(fetchResponse);\n                }\n            }\n        }\n        finally {\n            this.fetchResponseLoaded = () => { };\n        }\n    }\n    elementAppearedInViewport(element) {\n        this.proposeVisitIfNavigatedWithAction(element, element);\n        this.loadSourceURL();\n    }\n    willSubmitFormLinkToLocation(link) {\n        return this.shouldInterceptNavigation(link);\n    }\n    submittedFormLinkToLocation(link, _location, form) {\n        const frame = this.findFrameElement(link);\n        if (frame)\n            form.setAttribute(\"data-turbo-frame\", frame.id);\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldInterceptNavigation(element);\n    }\n    linkClickIntercepted(element, location) {\n        this.navigateFrame(element, location);\n    }\n    willSubmitForm(element, submitter) {\n        return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n    }\n    formSubmitted(element, submitter) {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n        }\n        this.formSubmission = new FormSubmission(this, element, submitter);\n        const { fetchRequest } = this.formSubmission;\n        this.prepareRequest(fetchRequest);\n        this.formSubmission.start();\n    }\n    prepareRequest(request) {\n        var _a;\n        request.headers[\"Turbo-Frame\"] = this.id;\n        if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        markAsBusy(this.element);\n    }\n    requestPreventedHandlingResponse(_request, _response) {\n        this.resolveVisitPromise();\n    }\n    async requestSucceededWithResponse(request, response) {\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    async requestFailedWithResponse(request, response) {\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    requestErrored(request, error) {\n        console.error(error);\n        this.resolveVisitPromise();\n    }\n    requestFinished(_request) {\n        clearBusyState(this.element);\n    }\n    formSubmissionStarted({ formElement }) {\n        markAsBusy(formElement, this.findFrameElement(formElement));\n    }\n    formSubmissionSucceededWithResponse(formSubmission, response) {\n        const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.loadResponse(response);\n        if (!formSubmission.isSafe) {\n            session.clearCache();\n        }\n    }\n    formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        this.element.delegate.loadResponse(fetchResponse);\n        session.clearCache();\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished({ formElement }) {\n        clearBusyState(formElement, this.findFrameElement(formElement));\n    }\n    allowsImmediateRender({ element: newFrame }, options) {\n        const event = dispatch(\"turbo:before-frame-render\", {\n            target: this.element,\n            detail: Object.assign({ newFrame }, options),\n            cancelable: true,\n        });\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) { }\n    preloadOnLoadLinksForView(element) {\n        session.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated() { }\n    willRenderFrame(currentElement, _newElement) {\n        this.previousFrameElement = currentElement.cloneNode(true);\n    }\n    async loadFrameResponse(fetchResponse, document) {\n        const newFrameElement = await this.extractForeignFrameElement(document.body);\n        if (newFrameElement) {\n            const snapshot = new Snapshot(newFrameElement);\n            const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n            if (this.view.renderPromise)\n                await this.view.renderPromise;\n            this.changeHistory();\n            await this.view.render(renderer);\n            this.complete = true;\n            session.frameRendered(fetchResponse, this.element);\n            session.frameLoaded(this.element);\n            this.fetchResponseLoaded(fetchResponse);\n        }\n        else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n            this.handleFrameMissingFromResponse(fetchResponse);\n        }\n    }\n    async visit(url) {\n        var _a;\n        const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n        (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n        this.currentFetchRequest = request;\n        return new Promise((resolve) => {\n            this.resolveVisitPromise = () => {\n                this.resolveVisitPromise = () => { };\n                this.currentFetchRequest = null;\n                resolve();\n            };\n            request.perform();\n        });\n    }\n    navigateFrame(element, url, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n        this.withCurrentNavigationElement(element, () => {\n            frame.src = url;\n        });\n    }\n    proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n        this.action = getVisitAction(submitter, element, frame);\n        if (this.action) {\n            const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n            const { visitCachedSnapshot } = frame.delegate;\n            frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n                if (frame.src) {\n                    const { statusCode, redirected } = fetchResponse;\n                    const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n                    const response = { statusCode, redirected, responseHTML };\n                    const options = {\n                        response,\n                        visitCachedSnapshot,\n                        willRender: false,\n                        updateHistory: false,\n                        restorationIdentifier: this.restorationIdentifier,\n                        snapshot: pageSnapshot,\n                    };\n                    if (this.action)\n                        options.action = this.action;\n                    session.visit(frame.src, options);\n                }\n            };\n        }\n    }\n    changeHistory() {\n        if (this.action) {\n            const method = getHistoryMethodForAction(this.action);\n            session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n        }\n    }\n    async handleUnvisitableFrameResponse(fetchResponse) {\n        console.warn(`The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`);\n        await this.visitResponse(fetchResponse.response);\n    }\n    willHandleFrameMissingFromResponse(fetchResponse) {\n        this.element.setAttribute(\"complete\", \"\");\n        const response = fetchResponse.response;\n        const visit = async (url, options = {}) => {\n            if (url instanceof Response) {\n                this.visitResponse(url);\n            }\n            else {\n                session.visit(url, options);\n            }\n        };\n        const event = dispatch(\"turbo:frame-missing\", {\n            target: this.element,\n            detail: { response, visit },\n            cancelable: true,\n        });\n        return !event.defaultPrevented;\n    }\n    handleFrameMissingFromResponse(fetchResponse) {\n        this.view.missing();\n        this.throwFrameMissingError(fetchResponse);\n    }\n    throwFrameMissingError(fetchResponse) {\n        const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id=\"${this.element.id}\"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n        throw new TurboFrameMissingError(message);\n    }\n    async visitResponse(response) {\n        const wrapped = new FetchResponse(response);\n        const responseHTML = await wrapped.responseHTML;\n        const { location, redirected, statusCode } = wrapped;\n        return session.visit(location, { response: { redirected, statusCode, responseHTML } });\n    }\n    findFrameElement(element, submitter) {\n        var _a;\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n    }\n    async extractForeignFrameElement(container) {\n        let element;\n        const id = CSS.escape(this.id);\n        try {\n            element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n            if (element) {\n                return element;\n            }\n            element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n            if (element) {\n                await element.loaded;\n                return await this.extractForeignFrameElement(element);\n            }\n        }\n        catch (error) {\n            console.error(error);\n            return new FrameElement();\n        }\n        return null;\n    }\n    formActionIsVisitable(form, submitter) {\n        const action = getAction(form, submitter);\n        return locationIsVisitable(expandURL(action), this.rootLocation);\n    }\n    shouldInterceptNavigation(element, submitter) {\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n            return false;\n        }\n        if (!this.enabled || id == \"_top\") {\n            return false;\n        }\n        if (id) {\n            const frameElement = getFrameElementById(id);\n            if (frameElement) {\n                return !frameElement.disabled;\n            }\n        }\n        if (!session.elementIsNavigatable(element)) {\n            return false;\n        }\n        if (submitter && !session.elementIsNavigatable(submitter)) {\n            return false;\n        }\n        return true;\n    }\n    get id() {\n        return this.element.id;\n    }\n    get enabled() {\n        return !this.element.disabled;\n    }\n    get sourceURL() {\n        if (this.element.src) {\n            return this.element.src;\n        }\n    }\n    set sourceURL(sourceURL) {\n        this.ignoringChangesToAttribute(\"src\", () => {\n            this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n        });\n    }\n    get loadingStyle() {\n        return this.element.loading;\n    }\n    get isLoading() {\n        return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n    }\n    get complete() {\n        return this.element.hasAttribute(\"complete\");\n    }\n    set complete(value) {\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            if (value) {\n                this.element.setAttribute(\"complete\", \"\");\n            }\n            else {\n                this.element.removeAttribute(\"complete\");\n            }\n        });\n    }\n    get isActive() {\n        return this.element.isActive && this.connected;\n    }\n    get rootLocation() {\n        var _a;\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    isIgnoringChangesTo(attributeName) {\n        return this.ignoredAttributes.has(attributeName);\n    }\n    ignoringChangesToAttribute(attributeName, callback) {\n        this.ignoredAttributes.add(attributeName);\n        callback();\n        this.ignoredAttributes.delete(attributeName);\n    }\n    withCurrentNavigationElement(element, callback) {\n        this.currentNavigationElement = element;\n        callback();\n        delete this.currentNavigationElement;\n    }\n}\nfunction getFrameElementById(id) {\n    if (id != null) {\n        const element = document.getElementById(id);\n        if (element instanceof FrameElement) {\n            return element;\n        }\n    }\n}\nfunction activateElement(element, currentURL) {\n    if (element) {\n        const src = element.getAttribute(\"src\");\n        if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n            throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`);\n        }\n        if (element.ownerDocument !== document) {\n            element = document.importNode(element, true);\n        }\n        if (element instanceof FrameElement) {\n            element.connectedCallback();\n            element.disconnectedCallback();\n            return element;\n        }\n    }\n}\n\nclass StreamElement extends HTMLElement {\n    static async renderElement(newElement) {\n        await newElement.performAction();\n    }\n    async connectedCallback() {\n        try {\n            await this.render();\n        }\n        catch (error) {\n            console.error(error);\n        }\n        finally {\n            this.disconnect();\n        }\n    }\n    async render() {\n        var _a;\n        return ((_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n            const event = this.beforeRenderEvent;\n            if (this.dispatchEvent(event)) {\n                await nextAnimationFrame();\n                await event.detail.render(this);\n            }\n        })()));\n    }\n    disconnect() {\n        try {\n            this.remove();\n        }\n        catch (_a) { }\n    }\n    removeDuplicateTargetChildren() {\n        this.duplicateChildren.forEach((c) => c.remove());\n    }\n    get duplicateChildren() {\n        var _a;\n        const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n        const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter((c) => !!c.id).map((c) => c.id);\n        return existingChildren.filter((c) => newChildrenIds.includes(c.id));\n    }\n    get performAction() {\n        if (this.action) {\n            const actionFunction = StreamActions[this.action];\n            if (actionFunction) {\n                return actionFunction;\n            }\n            this.raise(\"unknown action\");\n        }\n        this.raise(\"action attribute is missing\");\n    }\n    get targetElements() {\n        if (this.target) {\n            return this.targetElementsById;\n        }\n        else if (this.targets) {\n            return this.targetElementsByQuery;\n        }\n        else {\n            this.raise(\"target or targets attribute is missing\");\n        }\n    }\n    get templateContent() {\n        return this.templateElement.content.cloneNode(true);\n    }\n    get templateElement() {\n        if (this.firstElementChild === null) {\n            const template = this.ownerDocument.createElement(\"template\");\n            this.appendChild(template);\n            return template;\n        }\n        else if (this.firstElementChild instanceof HTMLTemplateElement) {\n            return this.firstElementChild;\n        }\n        this.raise(\"first child element must be a <template> element\");\n    }\n    get action() {\n        return this.getAttribute(\"action\");\n    }\n    get target() {\n        return this.getAttribute(\"target\");\n    }\n    get targets() {\n        return this.getAttribute(\"targets\");\n    }\n    raise(message) {\n        throw new Error(`${this.description}: ${message}`);\n    }\n    get description() {\n        var _a, _b;\n        return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : \"<turbo-stream>\";\n    }\n    get beforeRenderEvent() {\n        return new CustomEvent(\"turbo:before-stream-render\", {\n            bubbles: true,\n            cancelable: true,\n            detail: { newStream: this, render: StreamElement.renderElement },\n        });\n    }\n    get targetElementsById() {\n        var _a;\n        const element = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target);\n        if (element !== null) {\n            return [element];\n        }\n        else {\n            return [];\n        }\n    }\n    get targetElementsByQuery() {\n        var _a;\n        const elements = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.targets);\n        if (elements.length !== 0) {\n            return Array.prototype.slice.call(elements);\n        }\n        else {\n            return [];\n        }\n    }\n}\n\nclass StreamSourceElement extends HTMLElement {\n    constructor() {\n        super(...arguments);\n        this.streamSource = null;\n    }\n    connectedCallback() {\n        this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n        connectStreamSource(this.streamSource);\n    }\n    disconnectedCallback() {\n        if (this.streamSource) {\n            disconnectStreamSource(this.streamSource);\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\") || \"\";\n    }\n}\n\nFrameElement.delegateConstructor = FrameController;\nif (customElements.get(\"turbo-frame\") === undefined) {\n    customElements.define(\"turbo-frame\", FrameElement);\n}\nif (customElements.get(\"turbo-stream\") === undefined) {\n    customElements.define(\"turbo-stream\", StreamElement);\n}\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n    customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n    let element = document.currentScript;\n    if (!element)\n        return;\n    if (element.hasAttribute(\"data-turbo-suppress-warning\"))\n        return;\n    element = element.parentElement;\n    while (element) {\n        if (element == document.body) {\n            return console.warn(unindent `\n        You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n        Load your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n        For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n        \u2014\u2014\n        Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n      `, element.outerHTML);\n        }\n        element = element.parentElement;\n    }\n})();\n\nwindow.Turbo = Turbo;\nstart();\n\nexport { FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, connectStreamSource, disconnectStreamSource, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n  return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n  return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n  const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n  return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n  const { subscriptions } = await getConsumer()\n  return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n    if (!obj || typeof obj !== 'object') return obj;\n    if (obj instanceof Date || obj instanceof RegExp) return obj;\n    if (Array.isArray(obj)) return obj.map(walk);\n    return Object.keys(obj).reduce(function (acc, key) {\n        var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n            return '_' + x.toLowerCase();\n        });\n        acc[camel] = walk(obj[key]);\n        return acc;\n    }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n  async connectedCallback() {\n    connectStreamSource(this)\n    this.subscription = await subscribeTo(this.channel, {\n      received: this.dispatchMessageEvent.bind(this),\n      connected: this.subscriptionConnected.bind(this),\n      disconnected: this.subscriptionDisconnected.bind(this)\n    })\n  }\n\n  disconnectedCallback() {\n    disconnectStreamSource(this)\n    if (this.subscription) this.subscription.unsubscribe()\n  }\n\n  dispatchMessageEvent(data) {\n    const event = new MessageEvent(\"message\", { data })\n    return this.dispatchEvent(event)\n  }\n\n  subscriptionConnected() {\n    this.setAttribute(\"connected\", \"\")\n  }\n\n  subscriptionDisconnected() {\n    this.removeAttribute(\"connected\")\n  }\n\n  get channel() {\n    const channel = this.getAttribute(\"channel\")\n    const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n    return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n  }\n}\n\n\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n  customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n}\n", "export function encodeMethodIntoRequestBody(event) {\n  if (event.target instanceof HTMLFormElement) {\n    const { target: form, detail: { fetchOptions } } = event\n\n    form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n      const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams()\n      const method = determineFetchMethod(submitter, body, form)\n\n      if (!/get/i.test(method)) {\n        if (/post/i.test(method)) {\n          body.delete(\"_method\")\n        } else {\n          body.set(\"_method\", method)\n        }\n\n        fetchOptions.method = \"post\"\n      }\n    }, { once: true })\n  }\n}\n\nfunction determineFetchMethod(submitter, body, form) {\n  const formMethod = determineFormMethod(submitter)\n  const overrideMethod = body.get(\"_method\")\n  const method = form.getAttribute(\"method\") || \"get\"\n\n  if (typeof formMethod == \"string\") {\n    return formMethod\n  } else if (typeof overrideMethod == \"string\") {\n    return overrideMethod\n  } else {\n    return method\n  }\n}\n\nfunction determineFormMethod(submitter) {\n  if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n    if (submitter.hasAttribute(\"formmethod\")) {\n      return submitter.formMethod\n    } else {\n      return null\n    }\n  } else {\n    return null\n  }\n}\n\nfunction isBodyInit(body) {\n  return body instanceof FormData || body instanceof URLSearchParams\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "export * from \"./enums.js\";\nexport * from \"./modifiers/index.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { popperGenerator, detectOverflow, createPopper as createPopperBase } from \"./createPopper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper } from \"./popper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\";", "export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];", "export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}", "export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}", "import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };", "import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};", "import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}", "export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;", "export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}", "import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}", "import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}", "import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}", "import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}", "import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}", "import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}", "import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}", "import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}", "export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}", "import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}", "export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}", "import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}", "export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};", "export default function getVariation(placement) {\n  return placement.split('-')[1];\n}", "import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};", "import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};", "var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}", "var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}", "import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}", "import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}", "import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}", "import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}", "import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}", "import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}", "export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}", "import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}", "import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}", "import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}", "import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}", "import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases \u2013 research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};", "import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};", "import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};", "export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}", "import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};", "export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}", "import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}", "import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}", "export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}", "export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}", "import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update \u2013 it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update \u2013 it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  if (typeof object.jquery !== 'undefined') {\n    object = object[0]\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  // it's a jQuery object or a node element\n  if (isElement(object)) {\n    return object.jquery ? object[0] : object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n  if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return window.jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getjQuery,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  // TODO: tooltip passes `false` instead of selector, so we need to check\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n\n    let jQueryEvent = null\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && jQueryEvent) {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.8'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin,\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)', // TODO:v6 remove boolean support\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // FIXME TODO use `document.visibilityState`\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      // TODO: change tests that use empty divs to avoid this check\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Carousel.getOrCreateInstance(this, config)\n\n      if (typeof config === 'number') {\n        data.to(config)\n        return\n      }\n\n      if (typeof config === 'string') {\n        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin,\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    const _config = {}\n    if (typeof config === 'string' && /show|hide/.test(config)) {\n      _config.toggle = false\n    }\n\n    return this.each(function () {\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin,\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  display: 'dynamic',\n  offset: [0, 2],\n  popperConfig: null,\n  reference: 'toggle'\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  display: 'string',\n  offset: '(array|string|function)',\n  popperConfig: '(null|object|function)',\n  reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._popper = null\n    this._parent = this._element.parentNode // dropdown wrapper\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._createPopper()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper() {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org/docs/v2/)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._parent\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n      return PLACEMENT_TOPCENTER\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n      return PLACEMENT_BOTTOMCENTER\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(SELECTOR_NAVBAR) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display or Dropdown is in Navbar\n    if (this._inNavbar || this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...execute(this._config.popperConfig, [undefined, defaultBsPopperConfig])\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(context._menu)\n      if (\n        composedPath.includes(context._element) ||\n        (context._config.autoClose === 'inside' && !isMenuTarget) ||\n        (context._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: context._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not an UP | DOWN | ESCAPE key => not a dropdown command\n    // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n    if (!isUpOrDownEvent && !isEscapeEvent) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    event.preventDefault()\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (isUpOrDownEvent) {\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (instance._isShown()) { // else is escape and we check if it is shown\n      event.stopPropagation()\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n  execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  defineJQueryPlugin, isRTL, isVisible, reflow\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n  backdrop: true,\n  focus: true,\n  keyboard: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  focus: 'boolean',\n  keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._isTransitioning = true\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._backdrop.show(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    this._isTransitioning = true\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    EventHandler.off(window, EVENT_KEY)\n    EventHandler.off(this._dialog, EVENT_KEY)\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _showElement(relatedTarget) {\n    // try to append dynamic modal\n    if (!document.body.contains(this._element)) {\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      this._triggerBackdropTransition()\n    })\n\n    EventHandler.on(window, EVENT_RESIZE, () => {\n      if (this._isShown && !this._isTransitioning) {\n        this._adjustDialog()\n      }\n    })\n\n    EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n      // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n      EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n        if (this._element !== event.target || this._element !== event2.target) {\n          return\n        }\n\n        if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition()\n          return\n        }\n\n        if (this._config.backdrop) {\n          this.hide()\n        }\n      })\n    })\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const initialOverflowY = this._element.style.overflowY\n    // return if the following background transition hasn't yet completed\n    if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      this._element.style.overflowY = 'hidden'\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n      this._queueCallback(() => {\n        this._element.style.overflowY = initialOverflowY\n      }, this._dialog)\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  /**\n   * The following methods are used to handle overflowing modals\n   */\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if (isBodyOverflowing && !isModalOverflowing) {\n      const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n      this._element.style[property] = `${scrollbarWidth}px`\n    }\n\n    if (!isBodyOverflowing && isModalOverflowing) {\n      const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n      this._element.style[property] = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // avoid conflict when clicking modal toggler while another one is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen) {\n    Modal.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  defineJQueryPlugin,\n  isDisabled,\n  isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    })\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  popperConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  popperConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org/docs/v2/)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._popper = null\n    this._templateFactory = null\n    this._newContent = null\n\n    // Protected\n    this.tip = null\n\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposePopper()\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    // TODO: v6 remove this or make it optional\n    this._disposePopper()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    this._popper = this._createPopper(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposePopper()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    // TODO: remove this check in v6\n    if (!tip) {\n      return null\n    }\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    // TODO: v6 the following can be achieved with CSS only\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposePopper()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createPopper(tip) {\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    const attachment = AttachmentMap[placement.toUpperCase()]\n    return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'preSetPlacement',\n          enabled: true,\n          phase: 'beforeMain',\n          fn: data => {\n            // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n            // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n            this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n          }\n        }\n      ]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...execute(this._config.popperConfig, [undefined, defaultBsPopperConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposePopper() {\n    if (this._popper) {\n      this._popper.destroy()\n      this._popper = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin, getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n    config.target = getElement(config.target) || document.body\n\n    // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n    config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate dropdown parents\n    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleDropDown(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleDropDown(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleDropDown(element, open) {\n    const outerElem = this._getOuterElement(element)\n    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n      return\n    }\n\n    const toggle = (selector, className) => {\n      const element = SelectorEngine.findOne(selector, outerElem)\n      if (element) {\n        element.classList.toggle(className, open)\n      }\n    }\n\n    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n    outerElem.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin, reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2023 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    hasBindings() {\n        return this.unorderedBindings.size > 0;\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            },\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map();\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach((eventListener) => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding, clearEventListeners = false) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n        if (clearEventListeners)\n            this.clearEventListenersForBinding(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    clearEventListenersForBinding(binding) {\n        const eventListener = this.fetchEventListenerForBinding(binding);\n        if (!eventListener.hasBindings()) {\n            eventListener.disconnect();\n            this.removeMappedEventListenerFor(binding);\n        }\n    }\n    removeMappedEventListenerFor(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        eventListenerMap.delete(cacheKey);\n        if (eventListenerMap.size == 0)\n            this.eventListenerMaps.delete(eventTarget);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map();\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions)\n            .sort()\n            .forEach((key) => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst defaultActionDescriptorFilters = {\n    stop({ event, value }) {\n        if (value)\n            event.stopPropagation();\n        return true;\n    },\n    prevent({ event, value }) {\n        if (value)\n            event.preventDefault();\n        return true;\n    },\n    self({ event, value, element }) {\n        if (value) {\n            return element === event.target;\n        }\n        else {\n            return true;\n        }\n    },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    let eventName = matches[2];\n    let keyFilter = matches[3];\n    if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n        eventName += `.${keyFilter}`;\n        keyFilter = \"\";\n    }\n    return {\n        eventTarget: parseEventTarget(matches[4]),\n        eventName,\n        eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n        identifier: matches[5],\n        methodName: matches[6],\n        keyFilter: matches[1] || keyFilter,\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions\n        .split(\":\")\n        .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n    return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n    return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n    return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n    constructor(element, index, descriptor, schema) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n        this.keyFilter = descriptor.keyFilter || \"\";\n        this.schema = schema;\n    }\n    static forToken(token, schema) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n    }\n    toString() {\n        const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n        const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n    }\n    shouldIgnoreKeyboardEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = this.keyFilter.split(\"+\");\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n        if (!standardFilter) {\n            return false;\n        }\n        if (!hasProperty(this.keyMappings, standardFilter)) {\n            error(`contains unknown key filter: ${this.keyFilter}`);\n        }\n        return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n    }\n    shouldIgnoreMouseEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = [this.keyFilter];\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        return false;\n    }\n    get params() {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n        for (const { name, value } of Array.from(this.element.attributes)) {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                params[camelize(key)] = typecast(value);\n            }\n        }\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n    get keyMappings() {\n        return this.schema.keyMappings;\n    }\n    keyFilterDissatisfied(event, filters) {\n        const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n        return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n    }\n}\nconst defaultEventNames = {\n    a: () => \"click\",\n    button: () => \"click\",\n    form: () => \"submit\",\n    details: () => \"toggle\",\n    input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n    select: () => \"change\",\n    textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        const actionEvent = this.prepareActionEvent(event);\n        if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n            this.invokeWithEvent(actionEvent);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    applyEventModifiers(event) {\n        const { element } = this.action;\n        const { actionDescriptorFilters } = this.context.application;\n        const { controller } = this.context;\n        let passes = true;\n        for (const [name, value] of Object.entries(this.eventOptions)) {\n            if (name in actionDescriptorFilters) {\n                const filter = actionDescriptorFilters[name];\n                passes = passes && filter({ name, value, event, element, controller });\n            }\n            else {\n                continue;\n            }\n        }\n        return passes;\n    }\n    prepareActionEvent(event) {\n        return Object.assign(event, { params: this.action.params });\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            this.method.call(this.controller, event);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n            return false;\n        }\n        if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n            return false;\n        }\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.refresh();\n        }\n    }\n    pause(callback) {\n        if (this.started) {\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n        callback();\n        if (!this.started) {\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(element, attributeName) {\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some((set) => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([_key, values]) => values.has(value))\n            .map(([key, _values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map();\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass SelectorObserver {\n    constructor(element, selector, delegate, details) {\n        this._selector = selector;\n        this.details = details;\n        this.elementObserver = new ElementObserver(element, this);\n        this.delegate = delegate;\n        this.matchesByElement = new Multimap();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    get selector() {\n        return this._selector;\n    }\n    set selector(selector) {\n        this._selector = selector;\n        this.refresh();\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    matchElement(element) {\n        const { selector } = this;\n        if (selector) {\n            const matches = element.matches(selector);\n            if (this.delegate.selectorMatchElement) {\n                return matches && this.delegate.selectorMatchElement(element, this.details);\n            }\n            return matches;\n        }\n        else {\n            return false;\n        }\n    }\n    matchElementsInTree(tree) {\n        const { selector } = this;\n        if (selector) {\n            const match = this.matchElement(tree) ? [tree] : [];\n            const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n            return match.concat(matches);\n        }\n        else {\n            return [];\n        }\n    }\n    elementMatched(element) {\n        const { selector } = this;\n        if (selector) {\n            this.selectorMatched(element, selector);\n        }\n    }\n    elementUnmatched(element) {\n        const selectors = this.matchesByElement.getKeysForValue(element);\n        for (const selector of selectors) {\n            this.selectorUnmatched(element, selector);\n        }\n    }\n    elementAttributeChanged(element, _attributeName) {\n        const { selector } = this;\n        if (selector) {\n            const matches = this.matchElement(element);\n            const matchedBefore = this.matchesByElement.has(selector, element);\n            if (matches && !matchedBefore) {\n                this.selectorMatched(element, selector);\n            }\n            else if (!matches && matchedBefore) {\n                this.selectorUnmatched(element, selector);\n            }\n        }\n    }\n    selectorMatched(element, selector) {\n        this.delegate.selectorMatched(element, selector, this.details);\n        this.matchesByElement.add(selector, element);\n    }\n    selectorUnmatched(element, selector) {\n        this.delegate.selectorUnmatched(element, selector, this.details);\n        this.matchesByElement.delete(selector, element);\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map((attribute) => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap();\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    pause(callback) {\n        this.attributeObserver.pause(callback);\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach((token) => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach((token) => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString\n        .trim()\n        .split(/\\s+/)\n        .filter((content) => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap();\n        this.valuesByTokenByElement = new WeakMap();\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map();\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map();\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token, this.schema);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n    }\n    start() {\n        this.stringMapObserver.start();\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            try {\n                const value = descriptor.reader(rawValue);\n                let oldValue = rawOldValue;\n                if (rawOldValue) {\n                    oldValue = descriptor.reader(rawOldValue);\n                }\n                changedMethod.call(this.receiver, value, oldValue);\n            }\n            catch (error) {\n                if (error instanceof TypeError) {\n                    error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n                }\n                throw error;\n            }\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach((key) => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap();\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        var _a;\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n        }\n    }\n    disconnectTarget(element, name) {\n        var _a;\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n        return values;\n    }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n    constructor(context, delegate) {\n        this.started = false;\n        this.context = context;\n        this.delegate = delegate;\n        this.outletsByName = new Multimap();\n        this.outletElementsByName = new Multimap();\n        this.selectorObserverMap = new Map();\n        this.attributeObserverMap = new Map();\n    }\n    start() {\n        if (!this.started) {\n            this.outletDefinitions.forEach((outletName) => {\n                this.setupSelectorObserverForOutlet(outletName);\n                this.setupAttributeObserverForOutlet(outletName);\n            });\n            this.started = true;\n            this.dependentContexts.forEach((context) => context.refresh());\n        }\n    }\n    refresh() {\n        this.selectorObserverMap.forEach((observer) => observer.refresh());\n        this.attributeObserverMap.forEach((observer) => observer.refresh());\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.disconnectAllOutlets();\n            this.stopSelectorObservers();\n            this.stopAttributeObservers();\n        }\n    }\n    stopSelectorObservers() {\n        if (this.selectorObserverMap.size > 0) {\n            this.selectorObserverMap.forEach((observer) => observer.stop());\n            this.selectorObserverMap.clear();\n        }\n    }\n    stopAttributeObservers() {\n        if (this.attributeObserverMap.size > 0) {\n            this.attributeObserverMap.forEach((observer) => observer.stop());\n            this.attributeObserverMap.clear();\n        }\n    }\n    selectorMatched(element, _selector, { outletName }) {\n        const outlet = this.getOutlet(element, outletName);\n        if (outlet) {\n            this.connectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorUnmatched(element, _selector, { outletName }) {\n        const outlet = this.getOutletFromMap(element, outletName);\n        if (outlet) {\n            this.disconnectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorMatchElement(element, { outletName }) {\n        const selector = this.selector(outletName);\n        const hasOutlet = this.hasOutlet(element, outletName);\n        const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n        if (selector) {\n            return hasOutlet && hasOutletController && element.matches(selector);\n        }\n        else {\n            return false;\n        }\n    }\n    elementMatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementAttributeValueChanged(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementUnmatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    connectOutlet(outlet, element, outletName) {\n        var _a;\n        if (!this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.add(outletName, outlet);\n            this.outletElementsByName.add(outletName, element);\n            (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n        }\n    }\n    disconnectOutlet(outlet, element, outletName) {\n        var _a;\n        if (this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.delete(outletName, outlet);\n            this.outletElementsByName.delete(outletName, element);\n            (_a = this.selectorObserverMap\n                .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n        }\n    }\n    disconnectAllOutlets() {\n        for (const outletName of this.outletElementsByName.keys) {\n            for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n                for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n                    this.disconnectOutlet(outlet, element, outletName);\n                }\n            }\n        }\n    }\n    updateSelectorObserverForOutlet(outletName) {\n        const observer = this.selectorObserverMap.get(outletName);\n        if (observer) {\n            observer.selector = this.selector(outletName);\n        }\n    }\n    setupSelectorObserverForOutlet(outletName) {\n        const selector = this.selector(outletName);\n        const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n        this.selectorObserverMap.set(outletName, selectorObserver);\n        selectorObserver.start();\n    }\n    setupAttributeObserverForOutlet(outletName) {\n        const attributeName = this.attributeNameForOutletName(outletName);\n        const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n        this.attributeObserverMap.set(outletName, attributeObserver);\n        attributeObserver.start();\n    }\n    selector(outletName) {\n        return this.scope.outlets.getSelectorForOutletName(outletName);\n    }\n    attributeNameForOutletName(outletName) {\n        return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n    }\n    getOutletNameFromOutletAttributeName(attributeName) {\n        return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n    }\n    get outletDependencies() {\n        const dependencies = new Multimap();\n        this.router.modules.forEach((module) => {\n            const constructor = module.definition.controllerConstructor;\n            const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n            outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n        });\n        return dependencies;\n    }\n    get outletDefinitions() {\n        return this.outletDependencies.getKeysForValue(this.identifier);\n    }\n    get dependentControllerIdentifiers() {\n        return this.outletDependencies.getValuesForKey(this.identifier);\n    }\n    get dependentContexts() {\n        const identifiers = this.dependentControllerIdentifiers;\n        return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n    }\n    hasOutlet(element, outletName) {\n        return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n    }\n    getOutlet(element, outletName) {\n        return this.application.getControllerForElementAndIdentifier(element, outletName);\n    }\n    getOutletFromMap(element, outletName) {\n        return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get router() {\n        return this.application.router;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        this.outletObserver = new OutletObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        this.outletObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    refresh() {\n        this.outletObserver.refresh();\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.outletObserver.stop();\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    outletConnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n    }\n    outletDisconnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended },\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () {\n            this.a.call(this);\n        };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b();\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor),\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap();\n        this.connectedContexts = new Set();\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap();\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set();\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName),\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass OutletSet {\n    constructor(scope, controllerElement) {\n        this.scope = scope;\n        this.controllerElement = controllerElement;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(outletName) {\n        return this.find(outletName) != null;\n    }\n    find(...outletNames) {\n        return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n    }\n    findAll(...outletNames) {\n        return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n    }\n    getSelectorForOutletName(outletName) {\n        const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n        return this.controllerElement.getAttribute(attributeName);\n    }\n    findOutlet(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        if (selector)\n            return this.findElement(selector, outletName);\n    }\n    findAllOutlets(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        return selector ? this.findAllElements(selector, outletName) : [];\n    }\n    findElement(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n    }\n    findAllElements(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName));\n    }\n    matchesElement(element, selector, outletName) {\n        const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n        return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n        this.outlets = new OutletSet(this.documentScope, element);\n    }\n    findElement(selector) {\n        return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...(this.element.matches(selector) ? [this.element] : []),\n            ...this.queryElements(selector).filter(this.containsElement),\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n    get isDocumentScope() {\n        return this.element === document.documentElement;\n    }\n    get documentScope() {\n        return this.isDocumentScope\n            ? this\n            : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap();\n        this.scopeReferenceCounts = new WeakMap();\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        return this.parseValueForElementAndIdentifier(element, identifier);\n    }\n    parseValueForElementAndIdentifier(element, identifier) {\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map();\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap();\n        this.modulesByIdentifier = new Map();\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n        const afterLoad = definition.controllerConstructor.afterLoad;\n        if (afterLoad) {\n            afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n        }\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find((context) => context.element == element);\n        }\n    }\n    proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n        const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n        if (scope) {\n            this.scopeObserver.elementMatchedValue(scope.element, scope);\n        }\n        else {\n            console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n    outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n    keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n    return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n        this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n    }\n    static start(element, schema) {\n        const application = new this(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        this.load({ identifier, controllerConstructor });\n    }\n    registerActionOption(name, filter) {\n        this.actionDescriptorFilters[name] = filter;\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach((definition) => {\n            if (definition.controllerConstructor.shouldLoad) {\n                this.router.loadDefinition(definition);\n            }\n        });\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map((context) => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise((resolve) => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            },\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            },\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            },\n        },\n    };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n    const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n    return outlets.reduce((properties, outletDefinition) => {\n        return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n    }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n    return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n    let outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n    controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n    outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n    const camelizedName = namespaceCamelize(name);\n    return {\n        [`${camelizedName}Outlet`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                    if (outletController)\n                        return outletController;\n                    throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n                }\n                throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n            },\n        },\n        [`${camelizedName}Outlets`]: {\n            get() {\n                const outlets = this.outlets.findAll(name);\n                if (outlets.length > 0) {\n                    return outlets\n                        .map((outletElement) => {\n                        const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                        if (outletController)\n                            return outletController;\n                        console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n                    })\n                        .filter((controller) => controller);\n                }\n                return [];\n            },\n        },\n        [`${camelizedName}OutletElement`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    return outletElement;\n                }\n                else {\n                    throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n                }\n            },\n        },\n        [`${camelizedName}OutletElements`]: {\n            get() {\n                return this.outlets.findAll(name);\n            },\n        },\n        [`has${capitalize(camelizedName)}Outlet`]: {\n            get() {\n                return this.outlets.has(name);\n            },\n        },\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            },\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            },\n        },\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            },\n        },\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            },\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            },\n        },\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n    return valueDescriptorForTokenAndTypeDefinition({\n        controller,\n        token,\n        typeDefinition,\n    });\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array:\n            return \"array\";\n        case Boolean:\n            return \"boolean\";\n        case Number:\n            return \"number\";\n        case Object:\n            return \"object\";\n        case String:\n            return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\":\n            return \"boolean\";\n        case \"number\":\n            return \"number\";\n        case \"string\":\n            return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n    const { controller, token, typeObject } = payload;\n    const hasType = isSomething(typeObject.type);\n    const hasDefault = isSomething(typeObject.default);\n    const fullObject = hasType && hasDefault;\n    const onlyType = hasType && !hasDefault;\n    const onlyDefault = !hasType && hasDefault;\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n    if (onlyType)\n        return typeFromObject;\n    if (onlyDefault)\n        return typeFromDefaultValue;\n    if (typeFromObject !== typeFromDefaultValue) {\n        const propertyPath = controller ? `${controller}.${token}` : token;\n        throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n    }\n    if (fullObject)\n        return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n    const { controller, token, typeDefinition } = payload;\n    const typeObject = { controller, token, typeObject: typeDefinition };\n    const typeFromObject = parseValueTypeObject(typeObject);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n    throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const hasDefault = hasProperty(typeDefinition, \"default\");\n    const hasType = hasProperty(typeDefinition, \"type\");\n    const typeObject = typeDefinition;\n    if (hasDefault)\n        return typeObject.default;\n    if (hasType) {\n        const { type } = typeObject;\n        const constantFromType = parseValueTypeConstant(type);\n        if (constantFromType)\n            return defaultValuesByType[constantFromType];\n    }\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n    const { token, typeDefinition } = payload;\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(payload);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() {\n            return defaultValueForDefinition(typeDefinition);\n        },\n        get hasCustomDefaultValue() {\n            return parseValueTypeDefault(typeDefinition) !== undefined;\n        },\n        reader: readers[type],\n        writer: writers[type] || writers.default,\n    };\n}\nconst defaultValuesByType = {\n    get array() {\n        return [];\n    },\n    boolean: false,\n    number: 0,\n    get object() {\n        return {};\n    },\n    string: \"\",\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n    },\n    number(value) {\n        return Number(value.replace(/_/g, \"\"));\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    },\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON,\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    static afterLoad(_identifier, _application) {\n        return;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get outlets() {\n        return this.scope.outlets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [\n    ClassPropertiesBlessing,\n    TargetPropertiesBlessing,\n    ValuePropertiesBlessing,\n    OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus   = application\n\nexport { application }\n", "const t=(t,e=1e4)=>(t=parseFloat(t+\"\")||0,Math.round((t+Number.EPSILON)*e)/e),e=function(t){if(!(t&&t instanceof Element&&t.offsetParent))return!1;const e=t.scrollHeight>t.clientHeight,i=window.getComputedStyle(t).overflowY,n=-1!==i.indexOf(\"hidden\"),s=-1!==i.indexOf(\"visible\");return e&&!n&&!s},i=function(t,n=void 0){return!(!t||t===document.body||n&&t===n)&&(e(t)?t:i(t.parentElement,n))},n=function(t){var e=(new DOMParser).parseFromString(t,\"text/html\").body;if(e.childElementCount>1){for(var i=document.createElement(\"div\");e.firstChild;)i.appendChild(e.firstChild);return i}return e.firstChild},s=t=>`${t||\"\"}`.split(\" \").filter((t=>!!t)),o=(t,e,i)=>{t&&s(e).forEach((e=>{t.classList.toggle(e,i||!1)}))};class a{constructor(t){Object.defineProperty(this,\"pageX\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"pageY\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"clientX\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"clientY\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"id\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"time\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"nativePointer\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.nativePointer=t,this.pageX=t.pageX,this.pageY=t.pageY,this.clientX=t.clientX,this.clientY=t.clientY,this.id=self.Touch&&t instanceof Touch?t.identifier:-1,this.time=Date.now()}}const r={passive:!1};class l{constructor(t,{start:e=(()=>!0),move:i=(()=>{}),end:n=(()=>{})}){Object.defineProperty(this,\"element\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"startCallback\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"moveCallback\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"endCallback\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"currentPointers\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"startPointers\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),this.element=t,this.startCallback=e,this.moveCallback=i,this.endCallback=n;for(const t of[\"onPointerStart\",\"onTouchStart\",\"onMove\",\"onTouchEnd\",\"onPointerEnd\",\"onWindowBlur\"])this[t]=this[t].bind(this);this.element.addEventListener(\"mousedown\",this.onPointerStart,r),this.element.addEventListener(\"touchstart\",this.onTouchStart,r),this.element.addEventListener(\"touchmove\",this.onMove,r),this.element.addEventListener(\"touchend\",this.onTouchEnd),this.element.addEventListener(\"touchcancel\",this.onTouchEnd)}onPointerStart(t){if(!t.buttons||0!==t.button)return;const e=new a(t);this.currentPointers.some((t=>t.id===e.id))||this.triggerPointerStart(e,t)&&(window.addEventListener(\"mousemove\",this.onMove),window.addEventListener(\"mouseup\",this.onPointerEnd),window.addEventListener(\"blur\",this.onWindowBlur))}onTouchStart(t){for(const e of Array.from(t.changedTouches||[]))this.triggerPointerStart(new a(e),t);window.addEventListener(\"blur\",this.onWindowBlur)}onMove(t){const e=this.currentPointers.slice(),i=\"changedTouches\"in t?Array.from(t.changedTouches||[]).map((t=>new a(t))):[new a(t)],n=[];for(const t of i){const e=this.currentPointers.findIndex((e=>e.id===t.id));e<0||(n.push(t),this.currentPointers[e]=t)}n.length&&this.moveCallback(t,this.currentPointers.slice(),e)}onPointerEnd(t){t.buttons>0&&0!==t.button||(this.triggerPointerEnd(t,new a(t)),window.removeEventListener(\"mousemove\",this.onMove),window.removeEventListener(\"mouseup\",this.onPointerEnd),window.removeEventListener(\"blur\",this.onWindowBlur))}onTouchEnd(t){for(const e of Array.from(t.changedTouches||[]))this.triggerPointerEnd(t,new a(e))}triggerPointerStart(t,e){return!!this.startCallback(e,t,this.currentPointers.slice())&&(this.currentPointers.push(t),this.startPointers.push(t),!0)}triggerPointerEnd(t,e){const i=this.currentPointers.findIndex((t=>t.id===e.id));i<0||(this.currentPointers.splice(i,1),this.startPointers.splice(i,1),this.endCallback(t,e,this.currentPointers.slice()))}onWindowBlur(){this.clear()}clear(){for(;this.currentPointers.length;){const t=this.currentPointers[this.currentPointers.length-1];this.currentPointers.splice(this.currentPointers.length-1,1),this.startPointers.splice(this.currentPointers.length-1,1),this.endCallback(new Event(\"touchend\",{bubbles:!0,cancelable:!0,clientX:t.clientX,clientY:t.clientY}),t,this.currentPointers.slice())}}stop(){this.element.removeEventListener(\"mousedown\",this.onPointerStart,r),this.element.removeEventListener(\"touchstart\",this.onTouchStart,r),this.element.removeEventListener(\"touchmove\",this.onMove,r),this.element.removeEventListener(\"touchend\",this.onTouchEnd),this.element.removeEventListener(\"touchcancel\",this.onTouchEnd),window.removeEventListener(\"mousemove\",this.onMove),window.removeEventListener(\"mouseup\",this.onPointerEnd),window.removeEventListener(\"blur\",this.onWindowBlur)}}function c(t,e){return e?Math.sqrt(Math.pow(e.clientX-t.clientX,2)+Math.pow(e.clientY-t.clientY,2)):0}function h(t,e){return e?{clientX:(t.clientX+e.clientX)/2,clientY:(t.clientY+e.clientY)/2}:t}const d=t=>\"object\"==typeof t&&null!==t&&t.constructor===Object&&\"[object Object]\"===Object.prototype.toString.call(t),u=(t,...e)=>{const i=e.length;for(let n=0;n<i;n++){const i=e[n]||{};Object.entries(i).forEach((([e,i])=>{const n=Array.isArray(i)?[]:{};t[e]||Object.assign(t,{[e]:n}),d(i)?Object.assign(t[e],u(n,i)):Array.isArray(i)?Object.assign(t,{[e]:[...i]}):Object.assign(t,{[e]:i})}))}return t},p=function(t,e){return t.split(\".\").reduce(((t,e)=>\"object\"==typeof t?t[e]:void 0),e)};class f{constructor(t={}){Object.defineProperty(this,\"options\",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,\"events\",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),this.setOptions(t);for(const t of Object.getOwnPropertyNames(Object.getPrototypeOf(this)))t.startsWith(\"on\")&&\"function\"==typeof this[t]&&(this[t]=this[t].bind(this))}setOptions(t){this.options=t?u({},this.constructor.defaults,t):{};for(const[t,e]of Object.entries(this.option(\"on\")||{}))this.on(t,e)}option(t,...e){let i=p(t,this.options);return i&&\"function\"==typeof i&&(i=i.call(this,this,...e)),i}optionFor(t,e,i,...n){let s=p(e,t);var o;\"string\"!=typeof(o=s)||isNaN(o)||isNaN(parseFloat(o))||(s=parseFloat(s)),\"true\"===s&&(s=!0),\"false\"===s&&(s=!1),s&&\"function\"==typeof s&&(s=s.call(this,this,t,...n));let a=p(e,this.options);return a&&\"function\"==typeof a?s=a.call(this,this,t,...n,s):void 0===s&&(s=a),void 0===s?i:s}cn(t){const e=this.options.classes;return e&&e[t]||\"\"}localize(t,e=[]){t=String(t).replace(/\\{\\{(\\w+).?(\\w+)?\\}\\}/g,((t,e,i)=>{let n=\"\";return i?n=this.option(`${e[0]+e.toLowerCase().substring(1)}.l10n.${i}`):e&&(n=this.option(`l10n.${e}`)),n||(n=t),n}));for(let i=0;i<e.length;i++)t=t.split(e[i][0]).join(e[i][1]);return t=t.replace(/\\{\\{(.*?)\\}\\}/g,((t,e)=>e))}on(t,e){let i=[];\"string\"==typeof t?i=t.split(\" \"):Array.isArray(t)&&(i=t),this.events||(this.events=new Map),i.forEach((t=>{let i=this.events.get(t);i||(this.events.set(t,[]),i=[]),i.includes(e)||i.push(e),this.events.set(t,i)}))}off(t,e){let i=[];\"string\"==typeof t?i=t.split(\" \"):Array.isArray(t)&&(i=t),i.forEach((t=>{const i=this.events.get(t);if(Array.isArray(i)){const t=i.indexOf(e);t>-1&&i.splice(t,1)}}))}emit(t,...e){[...this.events.get(t)||[]].forEach((t=>t(this,...e))),\"*\"!==t&&this.emit(\"*\",t,...e)}}Object.defineProperty(f,\"version\",{enumerable:!0,configurable:!0,writable:!0,value:\"5.0.36\"}),Object.defineProperty(f,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{}});class g extends f{constructor(t={}){super(t),Object.defineProperty(this,\"plugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}})}attachPlugins(t={}){const e=new Map;for(const[i,n]of Object.entries(t)){const t=this.option(i),s=this.plugins[i];s||!1===t?s&&!1===t&&(s.detach(),delete this.plugins[i]):e.set(i,new n(this,t||{}))}for(const[t,i]of e)this.plugins[t]=i,i.attach()}detachPlugins(t){t=t||Object.keys(this.plugins);for(const e of t){const t=this.plugins[e];t&&t.detach(),delete this.plugins[e]}return this.emit(\"detachPlugins\"),this}}var m;!function(t){t[t.Init=0]=\"Init\",t[t.Error=1]=\"Error\",t[t.Ready=2]=\"Ready\",t[t.Panning=3]=\"Panning\",t[t.Mousemove=4]=\"Mousemove\",t[t.Destroy=5]=\"Destroy\"}(m||(m={}));const v=[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\"],b={PANUP:\"Move up\",PANDOWN:\"Move down\",PANLEFT:\"Move left\",PANRIGHT:\"Move right\",ZOOMIN:\"Zoom in\",ZOOMOUT:\"Zoom out\",TOGGLEZOOM:\"Toggle zoom level\",TOGGLE1TO1:\"Toggle zoom level\",ITERATEZOOM:\"Toggle zoom level\",ROTATECCW:\"Rotate counterclockwise\",ROTATECW:\"Rotate clockwise\",FLIPX:\"Flip horizontally\",FLIPY:\"Flip vertically\",FITX:\"Fit horizontally\",FITY:\"Fit vertically\",RESET:\"Reset\",TOGGLEFS:\"Toggle fullscreen\"},y={content:null,width:\"auto\",height:\"auto\",panMode:\"drag\",touch:!0,dragMinThreshold:3,lockAxis:!1,mouseMoveFactor:1,mouseMoveFriction:.12,zoom:!0,pinchToZoom:!0,panOnlyZoomed:\"auto\",minScale:1,maxScale:2,friction:.25,dragFriction:.35,decelFriction:.05,click:\"toggleZoom\",dblClick:!1,wheel:\"zoom\",wheelLimit:7,spinner:!0,bounds:\"auto\",infinite:!1,rubberband:!0,bounce:!0,maxVelocity:75,transformParent:!1,classes:{content:\"f-panzoom__content\",isLoading:\"is-loading\",canZoomIn:\"can-zoom_in\",canZoomOut:\"can-zoom_out\",isDraggable:\"is-draggable\",isDragging:\"is-dragging\",inFullscreen:\"in-fullscreen\",htmlHasFullscreen:\"with-panzoom-in-fullscreen\"},l10n:b},w='<circle cx=\"25\" cy=\"25\" r=\"20\"></circle>',x='<div class=\"f-spinner\"><svg viewBox=\"0 0 50 50\">'+w+w+\"</svg></div>\",E=t=>t&&null!==t&&t instanceof Element&&\"nodeType\"in t,S=(t,e)=>{t&&s(e).forEach((e=>{t.classList.remove(e)}))},P=(t,e)=>{t&&s(e).forEach((e=>{t.classList.add(e)}))},C={a:1,b:0,c:0,d:1,e:0,f:0},T=1e5,M=1e4,O=\"mousemove\",A=\"drag\",L=\"content\",z=\"auto\";let R=null,k=null;class I extends g{get fits(){return this.contentRect.width-this.contentRect.fitWidth<1&&this.contentRect.height-this.contentRect.fitHeight<1}get isTouchDevice(){return null===k&&(k=window.matchMedia(\"(hover: none)\").matches),k}get isMobile(){return null===R&&(R=/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)),R}get panMode(){return this.options.panMode!==O||this.isTouchDevice?A:O}get panOnlyZoomed(){const t=this.options.panOnlyZoomed;return t===z?this.isTouchDevice:t}get isInfinite(){return this.option(\"infinite\")}get angle(){return 180*Math.atan2(this.current.b,this.current.a)/Math.PI||0}get targetAngle(){return 180*Math.atan2(this.target.b,this.target.a)/Math.PI||0}get scale(){const{a:t,b:e}=this.current;return Math.sqrt(t*t+e*e)||1}get targetScale(){const{a:t,b:e}=this.target;return Math.sqrt(t*t+e*e)||1}get minScale(){return this.option(\"minScale\")||1}get fullScale(){const{contentRect:t}=this;return t.fullWidth/t.fitWidth||1}get maxScale(){return this.fullScale*(this.option(\"maxScale\")||1)||1}get coverScale(){const{containerRect:t,contentRect:e}=this,i=Math.max(t.height/e.fitHeight,t.width/e.fitWidth)||1;return Math.min(this.fullScale,i)}get isScaling(){return Math.abs(this.targetScale-this.scale)>1e-5&&!this.isResting}get isContentLoading(){const t=this.content;return!!(t&&t instanceof HTMLImageElement)&&!t.complete}get isResting(){if(this.isBouncingX||this.isBouncingY)return!1;for(const t of v){const e=\"e\"==t||\"f\"===t?1e-4:1e-5;if(Math.abs(this.target[t]-this.current[t])>e)return!1}return!(!this.ignoreBounds&&!this.checkBounds().inBounds)}constructor(t,e={},i={}){var s;if(super(e),Object.defineProperty(this,\"pointerTracker\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"resizeObserver\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"updateTimer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"clickTimer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"rAF\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"isTicking\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"ignoreBounds\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"isBouncingX\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"isBouncingY\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"clicks\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"trackingPoints\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"pwt\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"cwd\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"pmme\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"friction\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:m.Init}),Object.defineProperty(this,\"isDragging\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"content\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"spinner\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"containerRect\",{enumerable:!0,configurable:!0,writable:!0,value:{width:0,height:0,innerWidth:0,innerHeight:0}}),Object.defineProperty(this,\"contentRect\",{enumerable:!0,configurable:!0,writable:!0,value:{top:0,right:0,bottom:0,left:0,fullWidth:0,fullHeight:0,fitWidth:0,fitHeight:0,width:0,height:0}}),Object.defineProperty(this,\"dragStart\",{enumerable:!0,configurable:!0,writable:!0,value:{x:0,y:0,top:0,left:0,time:0}}),Object.defineProperty(this,\"dragOffset\",{enumerable:!0,configurable:!0,writable:!0,value:{x:0,y:0,time:0}}),Object.defineProperty(this,\"current\",{enumerable:!0,configurable:!0,writable:!0,value:Object.assign({},C)}),Object.defineProperty(this,\"target\",{enumerable:!0,configurable:!0,writable:!0,value:Object.assign({},C)}),Object.defineProperty(this,\"velocity\",{enumerable:!0,configurable:!0,writable:!0,value:{a:0,b:0,c:0,d:0,e:0,f:0}}),Object.defineProperty(this,\"lockedAxis\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),!t)throw new Error(\"Container Element Not Found\");this.container=t,this.initContent(),this.attachPlugins(Object.assign(Object.assign({},I.Plugins),i)),this.emit(\"attachPlugins\"),this.emit(\"init\");const o=this.content;if(o.addEventListener(\"load\",this.onLoad),o.addEventListener(\"error\",this.onError),this.isContentLoading){if(this.option(\"spinner\")){t.classList.add(this.cn(\"isLoading\"));const e=n(x);!t.contains(o)||o.parentElement instanceof HTMLPictureElement?this.spinner=t.appendChild(e):this.spinner=(null===(s=o.parentElement)||void 0===s?void 0:s.insertBefore(e,o))||null}this.emit(\"beforeLoad\")}else queueMicrotask((()=>{this.enable()}))}initContent(){const{container:t}=this,e=this.cn(L);let i=this.option(L)||t.querySelector(`.${e}`);if(i||(i=t.querySelector(\"img,picture\")||t.firstElementChild,i&&P(i,e)),i instanceof HTMLPictureElement&&(i=i.querySelector(\"img\")),!i)throw new Error(\"No content found\");this.content=i}onLoad(){const{spinner:t,container:e,state:i}=this;t&&(t.remove(),this.spinner=null),this.option(\"spinner\")&&e.classList.remove(this.cn(\"isLoading\")),this.emit(\"afterLoad\"),i===m.Init?this.enable():this.updateMetrics()}onError(){this.state!==m.Destroy&&(this.spinner&&(this.spinner.remove(),this.spinner=null),this.stop(),this.detachEvents(),this.state=m.Error,this.emit(\"error\"))}getNextScale(t){const{fullScale:e,targetScale:i,coverScale:n,maxScale:s,minScale:o}=this;let a=o;switch(t){case\"toggleMax\":a=i-o<.5*(s-o)?s:o;break;case\"toggleCover\":a=i-o<.5*(n-o)?n:o;break;case\"toggleZoom\":a=i-o<.5*(e-o)?e:o;break;case\"iterateZoom\":let t=[1,e,s].sort(((t,e)=>t-e)),r=t.findIndex((t=>t>i+1e-5));a=t[r]||1}return a}attachObserver(){var t;const e=()=>{const{container:t,containerRect:e}=this;return Math.abs(e.width-t.getBoundingClientRect().width)>.1||Math.abs(e.height-t.getBoundingClientRect().height)>.1};this.resizeObserver||void 0===window.ResizeObserver||(this.resizeObserver=new ResizeObserver((()=>{this.updateTimer||(e()?(this.onResize(),this.isMobile&&(this.updateTimer=setTimeout((()=>{e()&&this.onResize(),this.updateTimer=null}),500))):this.updateTimer&&(clearTimeout(this.updateTimer),this.updateTimer=null))}))),null===(t=this.resizeObserver)||void 0===t||t.observe(this.container)}detachObserver(){var t;null===(t=this.resizeObserver)||void 0===t||t.disconnect()}attachEvents(){const{container:t}=this;t.addEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),t.addEventListener(\"wheel\",this.onWheel,{passive:!1}),this.pointerTracker=new l(t,{start:this.onPointerDown,move:this.onPointerMove,end:this.onPointerUp}),document.addEventListener(O,this.onMouseMove)}detachEvents(){var t;const{container:e}=this;e.removeEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),e.removeEventListener(\"wheel\",this.onWheel,{passive:!1}),null===(t=this.pointerTracker)||void 0===t||t.stop(),this.pointerTracker=null,document.removeEventListener(O,this.onMouseMove),document.removeEventListener(\"keydown\",this.onKeydown,!0),this.clickTimer&&(clearTimeout(this.clickTimer),this.clickTimer=null),this.updateTimer&&(clearTimeout(this.updateTimer),this.updateTimer=null)}animate(){this.setTargetForce();const t=this.friction,e=this.option(\"maxVelocity\");for(const i of v)t?(this.velocity[i]*=1-t,e&&!this.isScaling&&(this.velocity[i]=Math.max(Math.min(this.velocity[i],e),-1*e)),this.current[i]+=this.velocity[i]):this.current[i]=this.target[i];this.setTransform(),this.setEdgeForce(),!this.isResting||this.isDragging?this.rAF=requestAnimationFrame((()=>this.animate())):this.stop(\"current\")}setTargetForce(){for(const t of v)\"e\"===t&&this.isBouncingX||\"f\"===t&&this.isBouncingY||(this.velocity[t]=(1/(1-this.friction)-1)*(this.target[t]-this.current[t]))}checkBounds(t=0,e=0){const{current:i}=this,n=i.e+t,s=i.f+e,o=this.getBounds(),{x:a,y:r}=o,l=a.min,c=a.max,h=r.min,d=r.max;let u=0,p=0;return l!==1/0&&n<l?u=l-n:c!==1/0&&n>c&&(u=c-n),h!==1/0&&s<h?p=h-s:d!==1/0&&s>d&&(p=d-s),Math.abs(u)<1e-4&&(u=0),Math.abs(p)<1e-4&&(p=0),Object.assign(Object.assign({},o),{xDiff:u,yDiff:p,inBounds:!u&&!p})}clampTargetBounds(){const{target:t}=this,{x:e,y:i}=this.getBounds();e.min!==1/0&&(t.e=Math.max(t.e,e.min)),e.max!==1/0&&(t.e=Math.min(t.e,e.max)),i.min!==1/0&&(t.f=Math.max(t.f,i.min)),i.max!==1/0&&(t.f=Math.min(t.f,i.max))}calculateContentDim(t=this.current){const{content:e,contentRect:i}=this,{fitWidth:n,fitHeight:s,fullWidth:o,fullHeight:a}=i;let r=o,l=a;if(this.option(\"zoom\")||0!==this.angle){const i=!(e instanceof HTMLImageElement)&&(\"none\"===window.getComputedStyle(e).maxWidth||\"none\"===window.getComputedStyle(e).maxHeight),c=i?o:n,h=i?a:s,d=this.getMatrix(t),u=new DOMPoint(0,0).matrixTransform(d),p=new DOMPoint(0+c,0).matrixTransform(d),f=new DOMPoint(0+c,0+h).matrixTransform(d),g=new DOMPoint(0,0+h).matrixTransform(d),m=Math.abs(f.x-u.x),v=Math.abs(f.y-u.y),b=Math.abs(g.x-p.x),y=Math.abs(g.y-p.y);r=Math.max(m,b),l=Math.max(v,y)}return{contentWidth:r,contentHeight:l}}setEdgeForce(){if(this.ignoreBounds||this.isDragging||this.panMode===O||this.targetScale<this.scale)return this.isBouncingX=!1,void(this.isBouncingY=!1);const{target:t}=this,{x:e,y:i,xDiff:n,yDiff:s}=this.checkBounds();const o=this.option(\"maxVelocity\");let a=this.velocity.e,r=this.velocity.f;0!==n?(this.isBouncingX=!0,n*a<=0?a+=.14*n:(a=.14*n,e.min!==1/0&&(this.target.e=Math.max(t.e,e.min)),e.max!==1/0&&(this.target.e=Math.min(t.e,e.max))),o&&(a=Math.max(Math.min(a,o),-1*o))):this.isBouncingX=!1,0!==s?(this.isBouncingY=!0,s*r<=0?r+=.14*s:(r=.14*s,i.min!==1/0&&(this.target.f=Math.max(t.f,i.min)),i.max!==1/0&&(this.target.f=Math.min(t.f,i.max))),o&&(r=Math.max(Math.min(r,o),-1*o))):this.isBouncingY=!1,this.isBouncingX&&(this.velocity.e=a),this.isBouncingY&&(this.velocity.f=r)}enable(){const{content:t}=this,e=new DOMMatrixReadOnly(window.getComputedStyle(t).transform);for(const t of v)this.current[t]=this.target[t]=e[t];this.updateMetrics(),this.attachObserver(),this.attachEvents(),this.state=m.Ready,this.emit(\"ready\")}onClick(t){var e;\"click\"===t.type&&0===t.detail&&(this.dragOffset.x=0,this.dragOffset.y=0),this.isDragging&&(null===(e=this.pointerTracker)||void 0===e||e.clear(),this.trackingPoints=[],this.startDecelAnim());const i=t.target;if(!i||t.defaultPrevented)return;if(i.hasAttribute(\"disabled\"))return t.preventDefault(),void t.stopPropagation();if((()=>{const t=window.getSelection();return t&&\"Range\"===t.type})()&&!i.closest(\"button\"))return;const n=i.closest(\"[data-panzoom-action]\"),s=i.closest(\"[data-panzoom-change]\"),o=n||s,a=o&&E(o)?o.dataset:null;if(a){const e=a.panzoomChange,i=a.panzoomAction;if((e||i)&&t.preventDefault(),e){let t={};try{t=JSON.parse(e)}catch(t){console&&console.warn(\"The given data was not valid JSON\")}return void this.applyChange(t)}if(i)return void(this[i]&&this[i]())}if(Math.abs(this.dragOffset.x)>3||Math.abs(this.dragOffset.y)>3)return t.preventDefault(),void t.stopPropagation();if(i.closest(\"[data-fancybox]\"))return;const r=this.content.getBoundingClientRect(),l=this.dragStart;if(l.time&&!this.canZoomOut()&&(Math.abs(r.x-l.x)>2||Math.abs(r.y-l.y)>2))return;this.dragStart.time=0;const c=e=>{this.option(\"zoom\",t)&&e&&\"string\"==typeof e&&/(iterateZoom)|(toggle(Zoom|Full|Cover|Max)|(zoomTo(Fit|Cover|Max)))/.test(e)&&\"function\"==typeof this[e]&&(t.preventDefault(),this[e]({event:t}))},h=this.option(\"click\",t),d=this.option(\"dblClick\",t);d?(this.clicks++,1==this.clicks&&(this.clickTimer=setTimeout((()=>{1===this.clicks?(this.emit(\"click\",t),!t.defaultPrevented&&h&&c(h)):(this.emit(\"dblClick\",t),t.defaultPrevented||c(d)),this.clicks=0,this.clickTimer=null}),350))):(this.emit(\"click\",t),!t.defaultPrevented&&h&&c(h))}addTrackingPoint(t){const e=this.trackingPoints.filter((t=>t.time>Date.now()-100));e.push(t),this.trackingPoints=e}onPointerDown(t,e,i){var n;if(!1===this.option(\"touch\",t))return!1;this.pwt=0,this.dragOffset={x:0,y:0,time:0},this.trackingPoints=[];const s=this.content.getBoundingClientRect();if(this.dragStart={x:s.x,y:s.y,top:s.top,left:s.left,time:Date.now()},this.clickTimer)return!1;if(this.panMode===O&&this.targetScale>1)return t.preventDefault(),t.stopPropagation(),!1;const o=t.composedPath()[0];if(!i.length){if([\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\",\"IFRAME\"].includes(o.nodeName)||o.closest(\"[contenteditable],[data-selectable],[data-draggable],[data-clickable],[data-panzoom-change],[data-panzoom-action]\"))return!1;null===(n=window.getSelection())||void 0===n||n.removeAllRanges()}if(\"mousedown\"===t.type)[\"A\",\"BUTTON\"].includes(o.nodeName)||t.preventDefault();else if(Math.abs(this.velocity.a)>.3)return!1;return this.target.e=this.current.e,this.target.f=this.current.f,this.stop(),this.isDragging||(this.isDragging=!0,this.addTrackingPoint(e),this.emit(\"touchStart\",t)),!0}onPointerMove(e,n,s){if(!1===this.option(\"touch\",e))return;if(!this.isDragging)return;if(n.length<2&&this.panOnlyZoomed&&t(this.targetScale)<=t(this.minScale))return;if(this.emit(\"touchMove\",e),e.defaultPrevented)return;this.addTrackingPoint(n[0]);const{content:o}=this,a=h(s[0],s[1]),r=h(n[0],n[1]);let l=0,d=0;if(n.length>1){const t=o.getBoundingClientRect();l=a.clientX-t.left-.5*t.width,d=a.clientY-t.top-.5*t.height}const u=c(s[0],s[1]),p=c(n[0],n[1]);let f=u?p/u:1,g=r.clientX-a.clientX,m=r.clientY-a.clientY;this.dragOffset.x+=g,this.dragOffset.y+=m,this.dragOffset.time=Date.now()-this.dragStart.time;let v=t(this.targetScale)===t(this.minScale)&&this.option(\"lockAxis\");if(v&&!this.lockedAxis)if(\"xy\"===v||\"y\"===v||\"touchmove\"===e.type){if(Math.abs(this.dragOffset.x)<6&&Math.abs(this.dragOffset.y)<6)return void e.preventDefault();const t=Math.abs(180*Math.atan2(this.dragOffset.y,this.dragOffset.x)/Math.PI);this.lockedAxis=t>45&&t<135?\"y\":\"x\",this.dragOffset.x=0,this.dragOffset.y=0,g=0,m=0}else this.lockedAxis=v;if(i(e.target,this.content)&&(v=\"x\",this.dragOffset.y=0),v&&\"xy\"!==v&&this.lockedAxis!==v&&t(this.targetScale)===t(this.minScale))return;e.cancelable&&e.preventDefault(),this.container.classList.add(this.cn(\"isDragging\"));const b=this.checkBounds(g,m);this.option(\"rubberband\")?(\"x\"!==this.isInfinite&&(b.xDiff>0&&g<0||b.xDiff<0&&g>0)&&(g*=Math.max(0,.5-Math.abs(.75/this.contentRect.fitWidth*b.xDiff))),\"y\"!==this.isInfinite&&(b.yDiff>0&&m<0||b.yDiff<0&&m>0)&&(m*=Math.max(0,.5-Math.abs(.75/this.contentRect.fitHeight*b.yDiff)))):(b.xDiff&&(g=0),b.yDiff&&(m=0));const y=this.targetScale,w=this.minScale,x=this.maxScale;y<.5*w&&(f=Math.max(f,w)),y>1.5*x&&(f=Math.min(f,x)),\"y\"===this.lockedAxis&&t(y)===t(w)&&(g=0),\"x\"===this.lockedAxis&&t(y)===t(w)&&(m=0),this.applyChange({originX:l,originY:d,panX:g,panY:m,scale:f,friction:this.option(\"dragFriction\"),ignoreBounds:!0})}onPointerUp(t,e,n){if(n.length)return this.dragOffset.x=0,this.dragOffset.y=0,void(this.trackingPoints=[]);this.container.classList.remove(this.cn(\"isDragging\")),this.isDragging&&(this.addTrackingPoint(e),this.panOnlyZoomed&&this.contentRect.width-this.contentRect.fitWidth<1&&this.contentRect.height-this.contentRect.fitHeight<1&&(this.trackingPoints=[]),i(t.target,this.content)&&\"y\"===this.lockedAxis&&(this.trackingPoints=[]),this.emit(\"touchEnd\",t),this.isDragging=!1,this.lockedAxis=!1,this.state!==m.Destroy&&(t.defaultPrevented||this.startDecelAnim()))}startDecelAnim(){var e;const i=this.isScaling;this.rAF&&(cancelAnimationFrame(this.rAF),this.rAF=null),this.isBouncingX=!1,this.isBouncingY=!1;for(const t of v)this.velocity[t]=0;this.target.e=this.current.e,this.target.f=this.current.f,S(this.container,\"is-scaling\"),S(this.container,\"is-animating\"),this.isTicking=!1;const{trackingPoints:n}=this,s=n[0],o=n[n.length-1];let a=0,r=0,l=0;o&&s&&(a=o.clientX-s.clientX,r=o.clientY-s.clientY,l=o.time-s.time);const c=(null===(e=window.visualViewport)||void 0===e?void 0:e.scale)||1;1!==c&&(a*=c,r*=c);let h=0,d=0,u=0,p=0,f=this.option(\"decelFriction\");const g=this.targetScale;if(l>0){u=Math.abs(a)>3?a/(l/30):0,p=Math.abs(r)>3?r/(l/30):0;const t=this.option(\"maxVelocity\");t&&(u=Math.max(Math.min(u,t),-1*t),p=Math.max(Math.min(p,t),-1*t))}u&&(h=u/(1/(1-f)-1)),p&&(d=p/(1/(1-f)-1)),(\"y\"===this.option(\"lockAxis\")||\"xy\"===this.option(\"lockAxis\")&&\"y\"===this.lockedAxis&&t(g)===this.minScale)&&(h=u=0),(\"x\"===this.option(\"lockAxis\")||\"xy\"===this.option(\"lockAxis\")&&\"x\"===this.lockedAxis&&t(g)===this.minScale)&&(d=p=0);const m=this.dragOffset.x,b=this.dragOffset.y,y=this.option(\"dragMinThreshold\")||0;Math.abs(m)<y&&Math.abs(b)<y&&(h=d=0,u=p=0),(this.option(\"zoom\")&&(g<this.minScale-1e-5||g>this.maxScale+1e-5)||i&&!h&&!d)&&(f=.35),this.applyChange({panX:h,panY:d,friction:f}),this.emit(\"decel\",u,p,m,b)}onWheel(t){var e=[-t.deltaX||0,-t.deltaY||0,-t.detail||0].reduce((function(t,e){return Math.abs(e)>Math.abs(t)?e:t}));const i=Math.max(-1,Math.min(1,e));if(this.emit(\"wheel\",t,i),this.panMode===O)return;if(t.defaultPrevented)return;const n=this.option(\"wheel\");\"pan\"===n?(t.preventDefault(),this.panOnlyZoomed&&!this.canZoomOut()||this.applyChange({panX:2*-t.deltaX,panY:2*-t.deltaY,bounce:!1})):\"zoom\"===n&&!1!==this.option(\"zoom\")&&this.zoomWithWheel(t)}onMouseMove(t){this.panWithMouse(t)}onKeydown(t){\"Escape\"===t.key&&this.toggleFS()}onResize(){this.updateMetrics(),this.checkBounds().inBounds||this.requestTick()}setTransform(){this.emit(\"beforeTransform\");const{current:e,target:i,content:n,contentRect:s}=this,o=Object.assign({},C);for(const n of v){const s=\"e\"==n||\"f\"===n?M:T;o[n]=t(e[n],s),Math.abs(i[n]-e[n])<(\"e\"==n||\"f\"===n?.51:.001)&&(e[n]=i[n])}let{a:a,b:r,c:l,d:c,e:h,f:d}=o,u=`matrix(${a}, ${r}, ${l}, ${c}, ${h}, ${d})`,p=n.parentElement instanceof HTMLPictureElement?n.parentElement:n;if(this.option(\"transformParent\")&&(p=p.parentElement||p),p.style.transform===u)return;p.style.transform=u;const{contentWidth:f,contentHeight:g}=this.calculateContentDim();s.width=f,s.height=g,this.emit(\"afterTransform\")}updateMetrics(e=!1){var i;if(!this||this.state===m.Destroy)return;if(this.isContentLoading)return;const n=Math.max(1,(null===(i=window.visualViewport)||void 0===i?void 0:i.scale)||1),{container:s,content:o}=this,a=o instanceof HTMLImageElement,r=s.getBoundingClientRect(),l=getComputedStyle(this.container);let c=r.width*n,h=r.height*n;const d=parseFloat(l.paddingTop)+parseFloat(l.paddingBottom),u=c-(parseFloat(l.paddingLeft)+parseFloat(l.paddingRight)),p=h-d;this.containerRect={width:c,height:h,innerWidth:u,innerHeight:p};const f=parseFloat(o.dataset.width||\"\")||(t=>{let e=0;return e=t instanceof HTMLImageElement?t.naturalWidth:t instanceof SVGElement?t.width.baseVal.value:Math.max(t.offsetWidth,t.scrollWidth),e||0})(o),g=parseFloat(o.dataset.height||\"\")||(t=>{let e=0;return e=t instanceof HTMLImageElement?t.naturalHeight:t instanceof SVGElement?t.height.baseVal.value:Math.max(t.offsetHeight,t.scrollHeight),e||0})(o);let v=this.option(\"width\",f)||z,b=this.option(\"height\",g)||z;const y=v===z,w=b===z;\"number\"!=typeof v&&(v=f),\"number\"!=typeof b&&(b=g),y&&(v=f*(b/g)),w&&(b=g/(f/v));let x=o.parentElement instanceof HTMLPictureElement?o.parentElement:o;this.option(\"transformParent\")&&(x=x.parentElement||x);const E=x.getAttribute(\"style\")||\"\";x.style.setProperty(\"transform\",\"none\",\"important\"),a&&(x.style.width=\"\",x.style.height=\"\"),x.offsetHeight;const S=o.getBoundingClientRect();let P=S.width*n,C=S.height*n,T=P,M=C;P=Math.min(P,v),C=Math.min(C,b),a?({width:P,height:C}=((t,e,i,n)=>{const s=i/t,o=n/e,a=Math.min(s,o);return{width:t*=a,height:e*=a}})(v,b,P,C)):(P=Math.min(P,v),C=Math.min(C,b));let O=.5*(M-C),A=.5*(T-P);this.contentRect=Object.assign(Object.assign({},this.contentRect),{top:S.top-r.top+O,bottom:r.bottom-S.bottom+O,left:S.left-r.left+A,right:r.right-S.right+A,fitWidth:P,fitHeight:C,width:P,height:C,fullWidth:v,fullHeight:b}),x.style.cssText=E,a&&(x.style.width=`${P}px`,x.style.height=`${C}px`),this.setTransform(),!0!==e&&this.emit(\"refresh\"),this.ignoreBounds||(t(this.targetScale)<t(this.minScale)?this.zoomTo(this.minScale,{friction:0}):this.targetScale>this.maxScale?this.zoomTo(this.maxScale,{friction:0}):this.state===m.Init||this.checkBounds().inBounds||this.requestTick()),this.updateControls()}calculateBounds(){const{contentWidth:e,contentHeight:i}=this.calculateContentDim(this.target),{targetScale:n,lockedAxis:s}=this,{fitWidth:o,fitHeight:a}=this.contentRect;let r=0,l=0,c=0,h=0;const d=this.option(\"infinite\");if(!0===d||s&&d===s)r=-1/0,c=1/0,l=-1/0,h=1/0;else{let{containerRect:s,contentRect:d}=this,u=t(o*n,M),p=t(a*n,M),{innerWidth:f,innerHeight:g}=s;if(s.width===u&&(f=s.width),s.width===p&&(g=s.height),e>f){c=.5*(e-f),r=-1*c;let t=.5*(d.right-d.left);r+=t,c+=t}if(o>f&&e<f&&(r-=.5*(o-f),c-=.5*(o-f)),i>g){h=.5*(i-g),l=-1*h;let t=.5*(d.bottom-d.top);l+=t,h+=t}a>g&&i<g&&(r-=.5*(a-g),c-=.5*(a-g))}return{x:{min:r,max:c},y:{min:l,max:h}}}getBounds(){const t=this.option(\"bounds\");return t!==z?t:this.calculateBounds()}updateControls(){const e=this,i=e.container,{panMode:n,contentRect:s,targetScale:a,minScale:r}=e;let l=r,c=e.option(\"click\")||!1;c&&(l=e.getNextScale(c));let h=e.canZoomIn(),d=e.canZoomOut(),u=n===A&&!!this.option(\"touch\"),p=d&&u;if(u&&(t(a)<t(r)&&!this.panOnlyZoomed&&(p=!0),(t(s.width,1)>t(s.fitWidth,1)||t(s.height,1)>t(s.fitHeight,1))&&(p=!0)),t(s.width*a,1)<t(s.fitWidth,1)&&(p=!1),n===O&&(p=!1),o(i,this.cn(\"isDraggable\"),p),!this.option(\"zoom\"))return;let f=h&&t(l)>t(a),g=!f&&!p&&d&&t(l)<t(a);o(i,this.cn(\"canZoomIn\"),f),o(i,this.cn(\"canZoomOut\"),g);for(const t of i.querySelectorAll(\"[data-panzoom-action]\")){let e=!1,i=!1;switch(t.dataset.panzoomAction){case\"zoomIn\":h?e=!0:i=!0;break;case\"zoomOut\":d?e=!0:i=!0;break;case\"toggleZoom\":case\"iterateZoom\":h||d?e=!0:i=!0;const n=t.querySelector(\"g\");n&&(n.style.display=h?\"\":\"none\")}e?(t.removeAttribute(\"disabled\"),t.removeAttribute(\"tabindex\")):i&&(t.setAttribute(\"disabled\",\"\"),t.setAttribute(\"tabindex\",\"-1\"))}}panTo({x:t=this.target.e,y:e=this.target.f,scale:i=this.targetScale,friction:n=this.option(\"friction\"),angle:s=0,originX:o=0,originY:a=0,flipX:r=!1,flipY:l=!1,ignoreBounds:c=!1}){this.state!==m.Destroy&&this.applyChange({panX:t-this.target.e,panY:e-this.target.f,scale:i/this.targetScale,angle:s,originX:o,originY:a,friction:n,flipX:r,flipY:l,ignoreBounds:c})}applyChange({panX:e=0,panY:i=0,scale:n=1,angle:s=0,originX:o=-this.current.e,originY:a=-this.current.f,friction:r=this.option(\"friction\"),flipX:l=!1,flipY:c=!1,ignoreBounds:h=!1,bounce:d=this.option(\"bounce\")}){const u=this.state;if(u===m.Destroy)return;this.rAF&&(cancelAnimationFrame(this.rAF),this.rAF=null),this.friction=r||0,this.ignoreBounds=h;const{current:p}=this,f=p.e,g=p.f,b=this.getMatrix(this.target);let y=(new DOMMatrix).translate(f,g).translate(o,a).translate(e,i);if(this.option(\"zoom\")){if(!h){const t=this.targetScale,e=this.minScale,i=this.maxScale;t*n<e&&(n=e/t),t*n>i&&(n=i/t)}y=y.scale(n)}y=y.translate(-o,-a).translate(-f,-g).multiply(b),s&&(y=y.rotate(s)),l&&(y=y.scale(-1,1)),c&&(y=y.scale(1,-1));for(const e of v)\"e\"!==e&&\"f\"!==e&&(y[e]>this.minScale+1e-5||y[e]<this.minScale-1e-5)?this.target[e]=y[e]:this.target[e]=t(y[e],M);(this.targetScale<this.scale||Math.abs(n-1)>.1||this.panMode===O||!1===d)&&!h&&this.clampTargetBounds(),u===m.Init?this.animate():this.isResting||(this.state=m.Panning,this.requestTick())}stop(t=!1){if(this.state===m.Init||this.state===m.Destroy)return;const e=this.isTicking;this.rAF&&(cancelAnimationFrame(this.rAF),this.rAF=null),this.isBouncingX=!1,this.isBouncingY=!1;for(const e of v)this.velocity[e]=0,\"current\"===t?this.current[e]=this.target[e]:\"target\"===t&&(this.target[e]=this.current[e]);this.setTransform(),S(this.container,\"is-scaling\"),S(this.container,\"is-animating\"),this.isTicking=!1,this.state=m.Ready,e&&(this.emit(\"endAnimation\"),this.updateControls())}requestTick(){this.isTicking||(this.emit(\"startAnimation\"),this.updateControls(),P(this.container,\"is-animating\"),this.isScaling&&P(this.container,\"is-scaling\")),this.isTicking=!0,this.rAF||(this.rAF=requestAnimationFrame((()=>this.animate())))}panWithMouse(e,i=this.option(\"mouseMoveFriction\")){if(this.pmme=e,this.panMode!==O||!e)return;if(t(this.targetScale)<=t(this.minScale))return;this.emit(\"mouseMove\",e);const{container:n,containerRect:s,contentRect:o}=this,a=s.width,r=s.height,l=n.getBoundingClientRect(),c=(e.clientX||0)-l.left,h=(e.clientY||0)-l.top;let{contentWidth:d,contentHeight:u}=this.calculateContentDim(this.target);const p=this.option(\"mouseMoveFactor\");p>1&&(d!==a&&(d*=p),u!==r&&(u*=p));let f=.5*(d-a)-c/a*100/100*(d-a);f+=.5*(o.right-o.left);let g=.5*(u-r)-h/r*100/100*(u-r);g+=.5*(o.bottom-o.top),this.applyChange({panX:f-this.target.e,panY:g-this.target.f,friction:i})}zoomWithWheel(e){if(this.state===m.Destroy||this.state===m.Init)return;const i=Date.now();if(i-this.pwt<45)return void e.preventDefault();this.pwt=i;var n=[-e.deltaX||0,-e.deltaY||0,-e.detail||0].reduce((function(t,e){return Math.abs(e)>Math.abs(t)?e:t}));const s=Math.max(-1,Math.min(1,n)),{targetScale:o,maxScale:a,minScale:r}=this;let l=o*(100+45*s)/100;t(l)<t(r)&&t(o)<=t(r)?(this.cwd+=Math.abs(s),l=r):t(l)>t(a)&&t(o)>=t(a)?(this.cwd+=Math.abs(s),l=a):(this.cwd=0,l=Math.max(Math.min(l,a),r)),this.cwd>this.option(\"wheelLimit\")||(e.preventDefault(),t(l)!==t(o)&&this.zoomTo(l,{event:e}))}canZoomIn(){return this.option(\"zoom\")&&(t(this.contentRect.width,1)<t(this.contentRect.fitWidth,1)||t(this.targetScale)<t(this.maxScale))}canZoomOut(){return this.option(\"zoom\")&&t(this.targetScale)>t(this.minScale)}zoomIn(t=1.25,e){this.zoomTo(this.targetScale*t,e)}zoomOut(t=.8,e){this.zoomTo(this.targetScale*t,e)}zoomToFit(t){this.zoomTo(\"fit\",t)}zoomToCover(t){this.zoomTo(\"cover\",t)}zoomToFull(t){this.zoomTo(\"full\",t)}zoomToMax(t){this.zoomTo(\"max\",t)}toggleZoom(t){this.zoomTo(this.getNextScale(\"toggleZoom\"),t)}toggleMax(t){this.zoomTo(this.getNextScale(\"toggleMax\"),t)}toggleCover(t){this.zoomTo(this.getNextScale(\"toggleCover\"),t)}iterateZoom(t){this.zoomTo(\"next\",t)}zoomTo(t=1,{friction:e=z,originX:i=z,originY:n=z,event:s}={}){if(this.isContentLoading||this.state===m.Destroy)return;const{targetScale:o,fullScale:a,maxScale:r,coverScale:l}=this;if(this.stop(),this.panMode===O&&(s=this.pmme||s),s||i===z||n===z){const t=this.content.getBoundingClientRect(),e=this.container.getBoundingClientRect(),o=s?s.clientX:e.left+.5*e.width,a=s?s.clientY:e.top+.5*e.height;i=o-t.left-.5*t.width,n=a-t.top-.5*t.height}let c=1;\"number\"==typeof t?c=t:\"full\"===t?c=a:\"cover\"===t?c=l:\"max\"===t?c=r:\"fit\"===t?c=1:\"next\"===t&&(c=this.getNextScale(\"iterateZoom\")),c=c/o||1,e=e===z?c>1?.15:.25:e,this.applyChange({scale:c,originX:i,originY:n,friction:e}),s&&this.panMode===O&&this.panWithMouse(s,e)}rotateCCW(){this.applyChange({angle:-90})}rotateCW(){this.applyChange({angle:90})}flipX(){this.applyChange({flipX:!0})}flipY(){this.applyChange({flipY:!0})}fitX(){this.stop(\"target\");const{containerRect:t,contentRect:e,target:i}=this;this.applyChange({panX:.5*t.width-(e.left+.5*e.fitWidth)-i.e,panY:.5*t.height-(e.top+.5*e.fitHeight)-i.f,scale:t.width/e.fitWidth/this.targetScale,originX:0,originY:0,ignoreBounds:!0})}fitY(){this.stop(\"target\");const{containerRect:t,contentRect:e,target:i}=this;this.applyChange({panX:.5*t.width-(e.left+.5*e.fitWidth)-i.e,panY:.5*t.innerHeight-(e.top+.5*e.fitHeight)-i.f,scale:t.height/e.fitHeight/this.targetScale,originX:0,originY:0,ignoreBounds:!0})}toggleFS(){const{container:t}=this,e=this.cn(\"inFullscreen\"),i=this.cn(\"htmlHasFullscreen\");t.classList.toggle(e);const n=t.classList.contains(e);n?(document.documentElement.classList.add(i),document.addEventListener(\"keydown\",this.onKeydown,!0)):(document.documentElement.classList.remove(i),document.removeEventListener(\"keydown\",this.onKeydown,!0)),this.updateMetrics(),this.emit(n?\"enterFS\":\"exitFS\")}getMatrix(t=this.current){const{a:e,b:i,c:n,d:s,e:o,f:a}=t;return new DOMMatrix([e,i,n,s,o,a])}reset(t){if(this.state!==m.Init&&this.state!==m.Destroy){this.stop(\"current\");for(const t of v)this.target[t]=C[t];this.target.a=this.minScale,this.target.d=this.minScale,this.clampTargetBounds(),this.isResting||(this.friction=void 0===t?this.option(\"friction\"):t,this.state=m.Panning,this.requestTick())}}destroy(){this.stop(),this.state=m.Destroy,this.detachEvents(),this.detachObserver();const{container:t,content:e}=this,i=this.option(\"classes\")||{};for(const e of Object.values(i))t.classList.remove(e+\"\");e&&(e.removeEventListener(\"load\",this.onLoad),e.removeEventListener(\"error\",this.onError)),this.detachPlugins()}}Object.defineProperty(I,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:y}),Object.defineProperty(I,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}});const D=function(t,e){let i=!0;return(...n)=>{i&&(i=!1,t(...n),setTimeout((()=>{i=!0}),e))}},F=(t,e)=>{let i=[];return t.childNodes.forEach((t=>{t.nodeType!==Node.ELEMENT_NODE||e&&!t.matches(e)||i.push(t)})),i},j={viewport:null,track:null,enabled:!0,slides:[],axis:\"x\",transition:\"fade\",preload:1,slidesPerPage:\"auto\",initialPage:0,friction:.12,Panzoom:{decelFriction:.12},center:!0,infinite:!0,fill:!0,dragFree:!1,adaptiveHeight:!1,direction:\"ltr\",classes:{container:\"f-carousel\",viewport:\"f-carousel__viewport\",track:\"f-carousel__track\",slide:\"f-carousel__slide\",isLTR:\"is-ltr\",isRTL:\"is-rtl\",isHorizontal:\"is-horizontal\",isVertical:\"is-vertical\",inTransition:\"in-transition\",isSelected:\"is-selected\"},l10n:{NEXT:\"Next slide\",PREV:\"Previous slide\",GOTO:\"Go to slide #%d\"}};var B;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Destroy=2]=\"Destroy\"}(B||(B={}));const H=t=>{if(\"string\"==typeof t||t instanceof HTMLElement)t={html:t};else{const e=t.thumb;void 0!==e&&(\"string\"==typeof e&&(t.thumbSrc=e),e instanceof HTMLImageElement&&(t.thumbEl=e,t.thumbElSrc=e.src,t.thumbSrc=e.src),delete t.thumb)}return Object.assign({html:\"\",el:null,isDom:!1,class:\"\",customClass:\"\",index:-1,dim:0,gap:0,pos:0,transition:!1},t)},N=(t={})=>Object.assign({index:-1,slides:[],dim:0,pos:-1},t);class _ extends f{constructor(t,e){super(e),Object.defineProperty(this,\"instance\",{enumerable:!0,configurable:!0,writable:!0,value:t})}attach(){}detach(){}}const $={classes:{list:\"f-carousel__dots\",isDynamic:\"is-dynamic\",hasDots:\"has-dots\",dot:\"f-carousel__dot\",isBeforePrev:\"is-before-prev\",isPrev:\"is-prev\",isCurrent:\"is-current\",isNext:\"is-next\",isAfterNext:\"is-after-next\"},dotTpl:'<button type=\"button\" data-carousel-page=\"%i\" aria-label=\"{{GOTO}}\"><span class=\"f-carousel__dot\" aria-hidden=\"true\"></span></button>',dynamicFrom:11,maxCount:1/0,minCount:2};class W extends _{constructor(){super(...arguments),Object.defineProperty(this,\"isDynamic\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"list\",{enumerable:!0,configurable:!0,writable:!0,value:null})}onRefresh(){this.refresh()}build(){let t=this.list;if(!t){t=document.createElement(\"ul\"),P(t,this.cn(\"list\")),t.setAttribute(\"role\",\"tablist\");const e=this.instance.container;e.appendChild(t),P(e,this.cn(\"hasDots\")),this.list=t}return t}refresh(){var t;const e=this.instance.pages.length,i=Math.min(2,this.option(\"minCount\")),n=Math.max(2e3,this.option(\"maxCount\")),s=this.option(\"dynamicFrom\");if(e<i||e>n)return void this.cleanup();const a=\"number\"==typeof s&&e>5&&e>=s,r=!this.list||this.isDynamic!==a||this.list.children.length!==e;r&&this.cleanup();const l=this.build();if(o(l,this.cn(\"isDynamic\"),!!a),r)for(let t=0;t<e;t++)l.append(this.createItem(t));let c,h=0;for(const e of[...l.children]){const i=h===this.instance.page;i&&(c=e),o(e,this.cn(\"isCurrent\"),i),null===(t=e.children[0])||void 0===t||t.setAttribute(\"aria-selected\",i?\"true\":\"false\");for(const t of[\"isBeforePrev\",\"isPrev\",\"isNext\",\"isAfterNext\"])S(e,this.cn(t));h++}if(c=c||l.firstChild,a&&c){const t=c.previousElementSibling,e=t&&t.previousElementSibling;P(t,this.cn(\"isPrev\")),P(e,this.cn(\"isBeforePrev\"));const i=c.nextElementSibling,n=i&&i.nextElementSibling;P(i,this.cn(\"isNext\")),P(n,this.cn(\"isAfterNext\"))}this.isDynamic=a}createItem(t=0){var e;const i=document.createElement(\"li\");i.setAttribute(\"role\",\"presentation\");const s=n(this.instance.localize(this.option(\"dotTpl\"),[[\"%d\",t+1]]).replace(/\\%i/g,t+\"\"));return i.appendChild(s),null===(e=i.children[0])||void 0===e||e.setAttribute(\"role\",\"tab\"),i}cleanup(){this.list&&(this.list.remove(),this.list=null),this.isDynamic=!1,S(this.instance.container,this.cn(\"hasDots\"))}attach(){this.instance.on([\"refresh\",\"change\"],this.onRefresh)}detach(){this.instance.off([\"refresh\",\"change\"],this.onRefresh),this.cleanup()}}Object.defineProperty(W,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:$});const X=\"disabled\",q=\"next\",Y=\"prev\";class V extends _{constructor(){super(...arguments),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"prev\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"next\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"isDom\",{enumerable:!0,configurable:!0,writable:!0,value:!1})}onRefresh(){const t=this.instance,e=t.pages.length,i=t.page;if(e<2)return void this.cleanup();this.build();let n=this.prev,s=this.next;n&&s&&(n.removeAttribute(X),s.removeAttribute(X),t.isInfinite||(i<=0&&n.setAttribute(X,\"\"),i>=e-1&&s.setAttribute(X,\"\")))}addBtn(t){var e;const i=this.instance,n=document.createElement(\"button\");n.setAttribute(\"tabindex\",\"0\"),n.setAttribute(\"title\",i.localize(`{{${t.toUpperCase()}}}`)),P(n,this.cn(\"button\")+\" \"+this.cn(t===q?\"isNext\":\"isPrev\"));const s=i.isRTL?t===q?Y:q:t;var o;return n.innerHTML=i.localize(this.option(`${s}Tpl`)),n.dataset[`carousel${o=t,o?o.match(\"^[a-z]\")?o.charAt(0).toUpperCase()+o.substring(1):o:\"\"}`]=\"true\",null===(e=this.container)||void 0===e||e.appendChild(n),n}build(){const t=this.instance.container,e=this.cn(\"container\");let{container:i,prev:n,next:s}=this;i||(i=t.querySelector(\".\"+e),this.isDom=!!i),i||(i=document.createElement(\"div\"),P(i,e),t.appendChild(i)),this.container=i,s||(s=i.querySelector(\"[data-carousel-next]\")),s||(s=this.addBtn(q)),this.next=s,n||(n=i.querySelector(\"[data-carousel-prev]\")),n||(n=this.addBtn(Y)),this.prev=n}cleanup(){this.isDom||(this.prev&&this.prev.remove(),this.next&&this.next.remove(),this.container&&this.container.remove()),this.prev=null,this.next=null,this.container=null,this.isDom=!1}attach(){this.instance.on([\"refresh\",\"change\"],this.onRefresh)}detach(){this.instance.off([\"refresh\",\"change\"],this.onRefresh),this.cleanup()}}Object.defineProperty(V,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{classes:{container:\"f-carousel__nav\",button:\"f-button\",isNext:\"is-next\",isPrev:\"is-prev\"},nextTpl:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" tabindex=\"-1\"><path d=\"M9 3l9 9-9 9\"/></svg>',prevTpl:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" tabindex=\"-1\"><path d=\"M15 3l-9 9 9 9\"/></svg>'}});class Z extends _{constructor(){super(...arguments),Object.defineProperty(this,\"selectedIndex\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"target\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"nav\",{enumerable:!0,configurable:!0,writable:!0,value:null})}addAsTargetFor(t){this.target=this.instance,this.nav=t,this.attachEvents()}addAsNavFor(t){this.nav=this.instance,this.target=t,this.attachEvents()}attachEvents(){const{nav:t,target:e}=this;t&&e&&(t.options.initialSlide=e.options.initialPage,t.state===B.Ready?this.onNavReady(t):t.on(\"ready\",this.onNavReady),e.state===B.Ready?this.onTargetReady(e):e.on(\"ready\",this.onTargetReady))}onNavReady(t){t.on(\"createSlide\",this.onNavCreateSlide),t.on(\"Panzoom.click\",this.onNavClick),t.on(\"Panzoom.touchEnd\",this.onNavTouch),this.onTargetChange()}onTargetReady(t){t.on(\"change\",this.onTargetChange),t.on(\"Panzoom.refresh\",this.onTargetChange),this.onTargetChange()}onNavClick(t,e,i){this.onNavTouch(t,t.panzoom,i)}onNavTouch(t,e,i){var n,s;if(Math.abs(e.dragOffset.x)>3||Math.abs(e.dragOffset.y)>3)return;const o=i.target,{nav:a,target:r}=this;if(!a||!r||!o)return;const l=o.closest(\"[data-index]\");if(i.stopPropagation(),i.preventDefault(),!l)return;const c=parseInt(l.dataset.index||\"\",10)||0,h=r.getPageForSlide(c),d=a.getPageForSlide(c);a.slideTo(d),r.slideTo(h,{friction:(null===(s=null===(n=this.nav)||void 0===n?void 0:n.plugins)||void 0===s?void 0:s.Sync.option(\"friction\"))||0}),this.markSelectedSlide(c)}onNavCreateSlide(t,e){e.index===this.selectedIndex&&this.markSelectedSlide(e.index)}onTargetChange(){var t,e;const{target:i,nav:n}=this;if(!i||!n)return;if(n.state!==B.Ready||i.state!==B.Ready)return;const s=null===(e=null===(t=i.pages[i.page])||void 0===t?void 0:t.slides[0])||void 0===e?void 0:e.index,o=n.getPageForSlide(s);this.markSelectedSlide(s),n.slideTo(o,null===n.prevPage&&null===i.prevPage?{friction:0}:void 0)}markSelectedSlide(t){const e=this.nav;e&&e.state===B.Ready&&(this.selectedIndex=t,[...e.slides].map((e=>{e.el&&e.el.classList[e.index===t?\"add\":\"remove\"](\"is-nav-selected\")})))}attach(){const t=this;let e=t.options.target,i=t.options.nav;e?t.addAsNavFor(e):i&&t.addAsTargetFor(i)}detach(){const t=this,e=t.nav,i=t.target;e&&(e.off(\"ready\",t.onNavReady),e.off(\"createSlide\",t.onNavCreateSlide),e.off(\"Panzoom.click\",t.onNavClick),e.off(\"Panzoom.touchEnd\",t.onNavTouch)),t.nav=null,i&&(i.off(\"ready\",t.onTargetReady),i.off(\"refresh\",t.onTargetChange),i.off(\"change\",t.onTargetChange)),t.target=null}}Object.defineProperty(Z,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{friction:.35}});const U={Navigation:V,Dots:W,Sync:Z},G=\"animationend\",K=\"isSelected\",J=\"slide\";class Q extends g{get axis(){return this.isHorizontal?\"e\":\"f\"}get isEnabled(){return this.state===B.Ready}get isInfinite(){let t=!1;const{contentDim:e,viewportDim:i,pages:n,slides:s}=this,o=s[0];return n.length>=2&&o&&e+o.dim>=i&&(t=this.option(\"infinite\")),t}get isRTL(){return\"rtl\"===this.option(\"direction\")}get isHorizontal(){return\"x\"===this.option(\"axis\")}constructor(t,e={},i={}){if(super(),Object.defineProperty(this,\"bp\",{enumerable:!0,configurable:!0,writable:!0,value:\"\"}),Object.defineProperty(this,\"lp\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"userOptions\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,\"userPlugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:B.Init}),Object.defineProperty(this,\"page\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"prevPage\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"viewport\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"track\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"slides\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"pages\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"panzoom\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"inTransition\",{enumerable:!0,configurable:!0,writable:!0,value:new Set}),Object.defineProperty(this,\"contentDim\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"viewportDim\",{enumerable:!0,configurable:!0,writable:!0,value:0}),\"string\"==typeof t&&(t=document.querySelector(t)),!t||!E(t))throw new Error(\"No Element found\");this.container=t,this.slideNext=D(this.slideNext.bind(this),150),this.slidePrev=D(this.slidePrev.bind(this),150),this.userOptions=e,this.userPlugins=i,queueMicrotask((()=>{this.processOptions()}))}processOptions(){var t,e;const i=u({},Q.defaults,this.userOptions);let n=\"\";const s=i.breakpoints;if(s&&d(s))for(const[t,e]of Object.entries(s))window.matchMedia(t).matches&&d(e)&&(n+=t,u(i,e));n===this.bp&&this.state!==B.Init||(this.bp=n,this.state===B.Ready&&(i.initialSlide=(null===(e=null===(t=this.pages[this.page])||void 0===t?void 0:t.slides[0])||void 0===e?void 0:e.index)||0),this.state!==B.Init&&this.destroy(),super.setOptions(i),!1===this.option(\"enabled\")?this.attachEvents():setTimeout((()=>{this.init()}),0))}init(){this.state=B.Init,this.emit(\"init\"),this.attachPlugins(Object.assign(Object.assign({},Q.Plugins),this.userPlugins)),this.emit(\"attachPlugins\"),this.initLayout(),this.initSlides(),this.updateMetrics(),this.setInitialPosition(),this.initPanzoom(),this.attachEvents(),this.state=B.Ready,this.emit(\"ready\")}initLayout(){const{container:t}=this,e=this.option(\"classes\");P(t,this.cn(\"container\")),o(t,e.isLTR,!this.isRTL),o(t,e.isRTL,this.isRTL),o(t,e.isVertical,!this.isHorizontal),o(t,e.isHorizontal,this.isHorizontal);let i=this.option(\"viewport\")||t.querySelector(`.${e.viewport}`);i||(i=document.createElement(\"div\"),P(i,e.viewport),i.append(...F(t,`.${e.slide}`)),t.prepend(i)),i.addEventListener(\"scroll\",this.onScroll);let n=this.option(\"track\")||t.querySelector(`.${e.track}`);n||(n=document.createElement(\"div\"),P(n,e.track),n.append(...Array.from(i.childNodes))),n.setAttribute(\"aria-live\",\"polite\"),i.contains(n)||i.prepend(n),this.viewport=i,this.track=n,this.emit(\"initLayout\")}initSlides(){const{track:t}=this;if(!t)return;const e=[...this.slides],i=[];[...F(t,`.${this.cn(J)}`)].forEach((t=>{if(E(t)){const e=H({el:t,isDom:!0,index:this.slides.length});i.push(e)}}));for(let t of[...this.option(\"slides\",[])||[],...e])i.push(H(t));this.slides=i;for(let t=0;t<this.slides.length;t++)this.slides[t].index=t;for(const t of i)this.emit(\"beforeInitSlide\",t,t.index),this.emit(\"initSlide\",t,t.index);this.emit(\"initSlides\")}setInitialPage(){const t=this.option(\"initialSlide\");this.page=\"number\"==typeof t?this.getPageForSlide(t):parseInt(this.option(\"initialPage\",0)+\"\",10)||0}setInitialPosition(){const{track:t,pages:e,isHorizontal:i}=this;if(!t||!e.length)return;let n=this.page;e[n]||(this.page=n=0);const s=(e[n].pos||0)*(this.isRTL&&i?1:-1),o=i?`${s}px`:\"0\",a=i?\"0\":`${s}px`;t.style.transform=`translate3d(${o}, ${a}, 0) scale(1)`,this.option(\"adaptiveHeight\")&&this.setViewportHeight()}initPanzoom(){this.panzoom&&(this.panzoom.destroy(),this.panzoom=null);const t=this.option(\"Panzoom\")||{};this.panzoom=new I(this.viewport,u({},{content:this.track,zoom:!1,panOnlyZoomed:!1,lockAxis:this.isHorizontal?\"x\":\"y\",infinite:this.isInfinite,click:!1,dblClick:!1,touch:t=>!(this.pages.length<2&&!t.options.infinite),bounds:()=>this.getBounds(),maxVelocity:t=>Math.abs(t.target[this.axis]-t.current[this.axis])<2*this.viewportDim?100:0},t)),this.panzoom.on(\"*\",((t,e,...i)=>{this.emit(`Panzoom.${e}`,t,...i)})),this.panzoom.on(\"decel\",this.onDecel),this.panzoom.on(\"refresh\",this.onRefresh),this.panzoom.on(\"beforeTransform\",this.onBeforeTransform),this.panzoom.on(\"endAnimation\",this.onEndAnimation)}attachEvents(){const t=this.container;t&&(t.addEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),t.addEventListener(\"slideTo\",this.onSlideTo)),window.addEventListener(\"resize\",this.onResize)}createPages(){let t=[];const{contentDim:e,viewportDim:i}=this;let n=this.option(\"slidesPerPage\");n=(\"auto\"===n||e<=i)&&!1!==this.option(\"fill\")?1/0:parseFloat(n+\"\");let s=0,o=0,a=0;for(const e of this.slides)(!t.length||o+e.dim-i>.05||a>=n)&&(t.push(N()),s=t.length-1,o=0,a=0),t[s].slides.push(e),o+=e.dim+e.gap,a++;return t}processPages(){const e=this.pages,{contentDim:i,viewportDim:n,isInfinite:s}=this,o=this.option(\"center\"),a=this.option(\"fill\"),r=a&&o&&i>n&&!s;if(e.forEach(((t,e)=>{var s;t.index=e,t.pos=(null===(s=t.slides[0])||void 0===s?void 0:s.pos)||0,t.dim=0;for(const[e,i]of t.slides.entries())t.dim+=i.dim,e<t.slides.length-1&&(t.dim+=i.gap);r&&t.pos+.5*t.dim<.5*n?t.pos=0:r&&t.pos+.5*t.dim>=i-.5*n?t.pos=i-n:o&&(t.pos+=-.5*(n-t.dim))})),e.forEach((e=>{a&&!s&&i>n&&(e.pos=Math.max(e.pos,0),e.pos=Math.min(e.pos,i-n)),e.pos=t(e.pos,1e3),e.dim=t(e.dim,1e3),Math.abs(e.pos)<=.1&&(e.pos=0)})),s)return e;const l=[];let c;return e.forEach((t=>{const e=Object.assign({},t);c&&e.pos===c.pos?(c.dim+=e.dim,c.slides=[...c.slides,...e.slides]):(e.index=l.length,c=e,l.push(e))})),l}getPageFromIndex(t=0){const e=this.pages.length;let i;return t=parseInt((t||0).toString())||0,i=this.isInfinite?(t%e+e)%e:Math.max(Math.min(t,e-1),0),i}getSlideMetrics(e){var i,n;const s=this.isHorizontal?\"width\":\"height\";let o=0,a=0,r=e.el;const l=!(!r||r.parentNode);if(r?o=parseFloat(r.dataset[s]||\"\")||0:(r=document.createElement(\"div\"),r.style.visibility=\"hidden\",(this.track||document.body).prepend(r)),P(r,this.cn(J)+\" \"+e.class+\" \"+e.customClass),o)r.style[s]=`${o}px`,r.style[\"width\"===s?\"height\":\"width\"]=\"\";else{l&&(this.track||document.body).prepend(r),o=r.getBoundingClientRect()[s]*Math.max(1,(null===(i=window.visualViewport)||void 0===i?void 0:i.scale)||1);let t=r[this.isHorizontal?\"offsetWidth\":\"offsetHeight\"];t-1>o&&(o=t)}const c=getComputedStyle(r);return\"content-box\"===c.boxSizing&&(this.isHorizontal?(o+=parseFloat(c.paddingLeft)||0,o+=parseFloat(c.paddingRight)||0):(o+=parseFloat(c.paddingTop)||0,o+=parseFloat(c.paddingBottom)||0)),a=parseFloat(c[this.isHorizontal?\"marginRight\":\"marginBottom\"])||0,l?null===(n=r.parentElement)||void 0===n||n.removeChild(r):e.el||r.remove(),{dim:t(o,1e3),gap:t(a,1e3)}}getBounds(){const{isInfinite:t,isRTL:e,isHorizontal:i,pages:n}=this;let s={min:0,max:0};if(t)s={min:-1/0,max:1/0};else if(n.length){const t=n[0].pos,o=n[n.length-1].pos;s=e&&i?{min:t,max:o}:{min:-1*o,max:-1*t}}return{x:i?s:{min:0,max:0},y:i?{min:0,max:0}:s}}repositionSlides(){let e,{isHorizontal:i,isRTL:n,isInfinite:s,viewport:o,viewportDim:a,contentDim:r,page:l,pages:c,slides:h,panzoom:d}=this,u=0,p=0,f=0,g=0;d?g=-1*d.current[this.axis]:c[l]&&(g=c[l].pos||0),e=i?n?\"right\":\"left\":\"top\",n&&i&&(g*=-1);for(const i of h){const n=i.el;n?(\"top\"===e?(n.style.right=\"\",n.style.left=\"\"):n.style.top=\"\",i.index!==u?n.style[e]=0===p?\"\":`${t(p,1e3)}px`:n.style[e]=\"\",f+=i.dim+i.gap,u++):p+=i.dim+i.gap}if(s&&f&&o){let n=getComputedStyle(o),s=\"padding\",l=i?\"Right\":\"Bottom\",c=parseFloat(n[s+(i?\"Left\":\"Top\")]);g-=c,a+=c,a+=parseFloat(n[s+l]);for(const i of h)i.el&&(t(i.pos)<t(a)&&t(i.pos+i.dim+i.gap)<t(g)&&t(g)>t(r-a)&&(i.el.style[e]=`${t(p+f,1e3)}px`),t(i.pos+i.gap)>=t(r-a)&&t(i.pos)>t(g+a)&&t(g)<t(a)&&(i.el.style[e]=`-${t(f,1e3)}px`))}let m,v,b=[...this.inTransition];if(b.length>1&&(m=c[b[0]],v=c[b[1]]),m&&v){let i=0;for(const n of h)n.el?this.inTransition.has(n.index)&&m.slides.indexOf(n)<0&&(n.el.style[e]=`${t(i+(m.pos-v.pos),1e3)}px`):i+=n.dim+n.gap}}createSlideEl(t){const{track:e,slides:i}=this;if(!e||!t)return;if(t.el&&t.el.parentNode)return;const n=t.el||document.createElement(\"div\");P(n,this.cn(J)),P(n,t.class),P(n,t.customClass);const s=t.html;s&&(s instanceof HTMLElement?n.appendChild(s):n.innerHTML=t.html+\"\");const o=[];i.forEach(((t,e)=>{t.el&&o.push(e)}));const a=t.index;let r=null;if(o.length){r=i[o.reduce(((t,e)=>Math.abs(e-a)<Math.abs(t-a)?e:t))]}const l=r&&r.el&&r.el.parentNode?r.index<t.index?r.el.nextSibling:r.el:null;e.insertBefore(n,e.contains(l)?l:null),t.el=n,this.emit(\"createSlide\",t)}removeSlideEl(t,e=!1){const i=null==t?void 0:t.el;if(!i||!i.parentNode)return;const n=this.cn(K);if(i.classList.contains(n)&&(S(i,n),this.emit(\"unselectSlide\",t)),t.isDom&&!e)return i.removeAttribute(\"aria-hidden\"),i.removeAttribute(\"data-index\"),void(i.style.left=\"\");this.emit(\"removeSlide\",t);const s=new CustomEvent(G);i.dispatchEvent(s),t.el&&(t.el.remove(),t.el=null)}transitionTo(t=0,e=this.option(\"transition\")){var i,n,s,o;if(!e)return!1;const a=this.page,{pages:r,panzoom:l}=this;t=parseInt((t||0).toString())||0;const c=this.getPageFromIndex(t);if(!l||!r[c]||r.length<2||Math.abs(((null===(n=null===(i=r[a])||void 0===i?void 0:i.slides[0])||void 0===n?void 0:n.dim)||0)-this.viewportDim)>1)return!1;let h=t>a?1:-1;this.isInfinite&&(0===a&&t===r.length-1&&(h=-1),a===r.length-1&&0===t&&(h=1));const d=r[c].pos*(this.isRTL?1:-1);if(a===c&&Math.abs(d-l.target[this.axis])<1)return!1;this.clearTransitions();const u=l.isResting;P(this.container,this.cn(\"inTransition\"));const p=(null===(s=r[a])||void 0===s?void 0:s.slides[0])||null,f=(null===(o=r[c])||void 0===o?void 0:o.slides[0])||null;this.inTransition.add(f.index),this.createSlideEl(f);let g=p.el,m=f.el;u||e===J||(e=\"fadeFast\",g=null);const v=this.isRTL?\"next\":\"prev\",b=this.isRTL?\"prev\":\"next\";return g&&(this.inTransition.add(p.index),p.transition=e,g.addEventListener(G,this.onAnimationEnd),g.classList.add(`f-${e}Out`,`to-${h>0?b:v}`)),m&&(f.transition=e,m.addEventListener(G,this.onAnimationEnd),m.classList.add(`f-${e}In`,`from-${h>0?v:b}`)),l.current[this.axis]=d,l.target[this.axis]=d,l.requestTick(),this.onChange(c),!0}manageSlideVisiblity(){const t=new Set,e=new Set,i=this.getVisibleSlides(parseFloat(this.option(\"preload\",0)+\"\")||0);for(const n of this.slides)i.has(n)?t.add(n):e.add(n);for(const e of this.inTransition)t.add(this.slides[e]);for(const e of t)this.createSlideEl(e),this.lazyLoadSlide(e);for(const i of e)t.has(i)||this.removeSlideEl(i);this.markSelectedSlides(),this.repositionSlides()}markSelectedSlides(){if(!this.pages[this.page]||!this.pages[this.page].slides)return;const t=\"aria-hidden\";let e=this.cn(K);if(e)for(const i of this.slides){const n=i.el;n&&(n.dataset.index=`${i.index}`,n.classList.contains(\"f-thumbs__slide\")?this.getVisibleSlides(0).has(i)?n.removeAttribute(t):n.setAttribute(t,\"true\"):this.pages[this.page].slides.includes(i)?(n.classList.contains(e)||(P(n,e),this.emit(\"selectSlide\",i)),n.removeAttribute(t)):(n.classList.contains(e)&&(S(n,e),this.emit(\"unselectSlide\",i)),n.setAttribute(t,\"true\")))}}flipInfiniteTrack(){const{axis:t,isHorizontal:e,isInfinite:i,isRTL:n,viewportDim:s,contentDim:o}=this,a=this.panzoom;if(!a||!i)return;let r=a.current[t],l=a.target[t]-r,c=0,h=.5*s;n&&e?(r<-h&&(c=-1,r+=o),r>o-h&&(c=1,r-=o)):(r>h&&(c=1,r-=o),r<-o+h&&(c=-1,r+=o)),c&&(a.current[t]=r,a.target[t]=r+l)}lazyLoadImg(t,e){const i=this,s=\"f-fadeIn\",o=\"is-preloading\";let a=!1,r=null;const l=()=>{a||(a=!0,r&&(r.remove(),r=null),S(e,o),e.complete&&(P(e,s),setTimeout((()=>{S(e,s)}),350)),this.option(\"adaptiveHeight\")&&t.el&&this.pages[this.page].slides.indexOf(t)>-1&&(i.updateMetrics(),i.setViewportHeight()),this.emit(\"load\",t))};P(e,o),e.src=e.dataset.lazySrcset||e.dataset.lazySrc||\"\",delete e.dataset.lazySrc,delete e.dataset.lazySrcset,e.addEventListener(\"error\",(()=>{l()})),e.addEventListener(\"load\",(()=>{l()})),setTimeout((()=>{const i=e.parentNode;i&&t.el&&(e.complete?l():a||(r=n(x),i.insertBefore(r,e)))}),300)}lazyLoadSlide(t){const e=t&&t.el;if(!e)return;const i=new Set;let n=Array.from(e.querySelectorAll(\"[data-lazy-src],[data-lazy-srcset]\"));e.dataset.lazySrc&&n.push(e),n.map((t=>{t instanceof HTMLImageElement?i.add(t):t instanceof HTMLElement&&t.dataset.lazySrc&&(t.style.backgroundImage=`url('${t.dataset.lazySrc}')`,delete t.dataset.lazySrc)}));for(const e of i)this.lazyLoadImg(t,e)}onAnimationEnd(t){var e;const i=t.target,n=i?parseInt(i.dataset.index||\"\",10)||0:-1,s=this.slides[n],o=t.animationName;if(!i||!s||!o)return;const a=!!this.inTransition.has(n)&&s.transition;a&&o.substring(0,a.length+2)===`f-${a}`&&this.inTransition.delete(n),this.inTransition.size||this.clearTransitions(),n===this.page&&(null===(e=this.panzoom)||void 0===e?void 0:e.isResting)&&this.emit(\"settle\")}onDecel(t,e=0,i=0,n=0,s=0){if(this.option(\"dragFree\"))return void this.setPageFromPosition();const{isRTL:o,isHorizontal:a,axis:r,pages:l}=this,c=l.length,h=Math.abs(Math.atan2(i,e)/(Math.PI/180));let d=0;if(d=h>45&&h<135?a?0:i:a?e:0,!c)return;let u=this.page,p=o&&a?1:-1;const f=t.current[r]*p;let{pageIndex:g}=this.getPageFromPosition(f);Math.abs(d)>5?(l[u].dim<document.documentElement[\"client\"+(this.isHorizontal?\"Width\":\"Height\")]-1&&(u=g),u=o&&a?d<0?u-1:u+1:d<0?u+1:u-1):u=0===n&&0===s?u:g,this.slideTo(u,{transition:!1,friction:t.option(\"decelFriction\")})}onClick(t){const e=t.target,i=e&&E(e)?e.dataset:null;let n,s;i&&(void 0!==i.carouselPage?(s=\"slideTo\",n=i.carouselPage):void 0!==i.carouselNext?s=\"slideNext\":void 0!==i.carouselPrev&&(s=\"slidePrev\")),s?(t.preventDefault(),t.stopPropagation(),e&&!e.hasAttribute(\"disabled\")&&this[s](n)):this.emit(\"click\",t)}onSlideTo(t){const e=t.detail||0;this.slideTo(this.getPageForSlide(e),{friction:0})}onChange(t,e=0){const i=this.page;this.prevPage=i,this.page=t,this.option(\"adaptiveHeight\")&&this.setViewportHeight(),t!==i&&(this.markSelectedSlides(),this.emit(\"change\",t,i,e))}onRefresh(){let t=this.contentDim,e=this.viewportDim;this.updateMetrics(),this.contentDim===t&&this.viewportDim===e||this.slideTo(this.page,{friction:0,transition:!1})}onScroll(){var t;null===(t=this.viewport)||void 0===t||t.scroll(0,0)}onResize(){this.option(\"breakpoints\")&&this.processOptions()}onBeforeTransform(t){this.lp!==t.current[this.axis]&&(this.flipInfiniteTrack(),this.manageSlideVisiblity()),this.lp=t.current.e}onEndAnimation(){this.inTransition.size||this.emit(\"settle\")}reInit(t=null,e=null){this.destroy(),this.state=B.Init,this.prevPage=null,this.userOptions=t||this.userOptions,this.userPlugins=e||this.userPlugins,this.processOptions()}slideTo(t=0,{friction:e=this.option(\"friction\"),transition:i=this.option(\"transition\")}={}){if(this.state===B.Destroy)return;t=parseInt((t||0).toString())||0;const n=this.getPageFromIndex(t),{axis:s,isHorizontal:o,isRTL:a,pages:r,panzoom:l}=this,c=r.length,h=a&&o?1:-1;if(!l||!c)return;if(this.page!==n){const e=new Event(\"beforeChange\",{bubbles:!0,cancelable:!0});if(this.emit(\"beforeChange\",e,t),e.defaultPrevented)return}if(this.transitionTo(t,i))return;let d=r[n].pos;if(this.isInfinite){const e=this.contentDim,i=l.target[s]*h;if(2===c)d+=e*Math.floor(parseFloat(t+\"\")/2);else{d=[d,d-e,d+e].reduce((function(t,e){return Math.abs(e-i)<Math.abs(t-i)?e:t}))}}d*=h,Math.abs(l.target[s]-d)<1||(l.panTo({x:o?d:0,y:o?0:d,friction:e}),this.onChange(n))}slideToClosest(t){if(this.panzoom){const{pageIndex:e}=this.getPageFromPosition();this.slideTo(e,t)}}slideNext(){this.slideTo(this.page+1)}slidePrev(){this.slideTo(this.page-1)}clearTransitions(){this.inTransition.clear(),S(this.container,this.cn(\"inTransition\"));const t=[\"to-prev\",\"to-next\",\"from-prev\",\"from-next\"];for(const e of this.slides){const i=e.el;if(i){i.removeEventListener(G,this.onAnimationEnd),i.classList.remove(...t);const n=e.transition;n&&i.classList.remove(`f-${n}Out`,`f-${n}In`)}}this.manageSlideVisiblity()}addSlide(t,e){var i,n,s,o;const a=this.panzoom,r=(null===(i=this.pages[this.page])||void 0===i?void 0:i.pos)||0,l=(null===(n=this.pages[this.page])||void 0===n?void 0:n.dim)||0,c=this.contentDim<this.viewportDim;let h=Array.isArray(e)?e:[e];const d=[];for(const t of h)d.push(H(t));this.slides.splice(t,0,...d);for(let t=0;t<this.slides.length;t++)this.slides[t].index=t;for(const t of d)this.emit(\"beforeInitSlide\",t,t.index);if(this.page>=t&&(this.page+=d.length),this.updateMetrics(),a){const e=(null===(s=this.pages[this.page])||void 0===s?void 0:s.pos)||0,i=(null===(o=this.pages[this.page])||void 0===o?void 0:o.dim)||0,n=this.pages.length||1,h=this.isRTL?l-i:i-l,d=this.isRTL?r-e:e-r;c&&1===n?(t<=this.page&&(a.current[this.axis]-=h,a.target[this.axis]-=h),a.panTo({[this.isHorizontal?\"x\":\"y\"]:-1*e})):d&&t<=this.page&&(a.target[this.axis]-=d,a.current[this.axis]-=d,a.requestTick())}for(const t of d)this.emit(\"initSlide\",t,t.index)}prependSlide(t){this.addSlide(0,t)}appendSlide(t){this.addSlide(this.slides.length,t)}removeSlide(t){const e=this.slides.length;t=(t%e+e)%e;const i=this.slides[t];if(i){this.removeSlideEl(i,!0),this.slides.splice(t,1);for(let t=0;t<this.slides.length;t++)this.slides[t].index=t;this.updateMetrics(),this.slideTo(this.page,{friction:0,transition:!1}),this.emit(\"destroySlide\",i)}}updateMetrics(){const{panzoom:e,viewport:i,track:n,slides:s,isHorizontal:o,isInfinite:a}=this;if(!n)return;const r=o?\"width\":\"height\",l=o?\"offsetWidth\":\"offsetHeight\";if(i){let e=Math.max(i[l],t(i.getBoundingClientRect()[r],1e3)),n=getComputedStyle(i),s=\"padding\",a=o?\"Right\":\"Bottom\";e-=parseFloat(n[s+(o?\"Left\":\"Top\")])+parseFloat(n[s+a]),this.viewportDim=e}let c,h=0;for(const[e,i]of s.entries()){let n=0,o=0;!i.el&&c?(n=c.dim,o=c.gap):(({dim:n,gap:o}=this.getSlideMetrics(i)),c=i),n=t(n,1e3),o=t(o,1e3),i.dim=n,i.gap=o,i.pos=h,h+=n,(a||e<s.length-1)&&(h+=o)}h=t(h,1e3),this.contentDim=h,e&&(e.contentRect[r]=h,e.contentRect[o?\"fullWidth\":\"fullHeight\"]=h),this.pages=this.createPages(),this.pages=this.processPages(),this.state===B.Init&&this.setInitialPage(),this.page=Math.max(0,Math.min(this.page,this.pages.length-1)),this.manageSlideVisiblity(),this.emit(\"refresh\")}getProgress(e,i=!1,n=!1){void 0===e&&(e=this.page);const s=this,o=s.panzoom,a=s.contentDim,r=s.pages[e]||0;if(!r||!o)return e>this.page?-1:1;let l=-1*o.current.e,c=t((l-r.pos)/(1*r.dim),1e3),h=c,d=c;this.isInfinite&&!0!==n&&(h=t((l-r.pos+a)/(1*r.dim),1e3),d=t((l-r.pos-a)/(1*r.dim),1e3));let u=[c,h,d].reduce((function(t,e){return Math.abs(e)<Math.abs(t)?e:t}));return i?u:u>1?1:u<-1?-1:u}setViewportHeight(){const{page:t,pages:e,viewport:i,isHorizontal:n}=this;if(!i||!e[t])return;let s=0;n&&this.track&&(this.track.style.height=\"auto\",e[t].slides.forEach((t=>{t.el&&(s=Math.max(s,t.el.offsetHeight))}))),i.style.height=s?`${s}px`:\"\"}getPageForSlide(t){for(const e of this.pages)for(const i of e.slides)if(i.index===t)return e.index;return-1}getVisibleSlides(t=0){var e;const i=new Set;let{panzoom:n,contentDim:s,viewportDim:o,pages:a,page:r}=this;if(o){s=s+(null===(e=this.slides[this.slides.length-1])||void 0===e?void 0:e.gap)||0;let l=0;l=n&&n.state!==m.Init&&n.state!==m.Destroy?-1*n.current[this.axis]:a[r]&&a[r].pos||0,this.isInfinite&&(l-=Math.floor(l/s)*s),this.isRTL&&this.isHorizontal&&(l*=-1);const c=l-o*t,h=l+o*(t+1),d=this.isInfinite?[-1,0,1]:[0];for(const t of this.slides)for(const e of d){const n=t.pos+e*s,o=n+t.dim+t.gap;n<h&&o>c&&i.add(t)}}return i}getPageFromPosition(t){const{viewportDim:e,contentDim:i,slides:n,pages:s,panzoom:o}=this,a=s.length,r=n.length,l=n[0],c=n[r-1],h=this.option(\"center\");let d=0,u=0,p=0,f=void 0===t?-1*((null==o?void 0:o.target[this.axis])||0):t;h&&(f+=.5*e),this.isInfinite?(f<l.pos-.5*c.gap&&(f-=i,p=-1),f>c.pos+c.dim+.5*c.gap&&(f-=i,p=1)):f=Math.max(l.pos||0,Math.min(f,c.pos));let g=c,m=n.find((t=>{const e=t.pos-.5*g.gap,i=t.pos+t.dim+.5*t.gap;return g=t,f>=e&&f<i}));return m||(m=c),u=this.getPageForSlide(m.index),d=u+p*a,{page:d,pageIndex:u}}setPageFromPosition(){const{pageIndex:t}=this.getPageFromPosition();this.onChange(t)}destroy(){if([B.Destroy].includes(this.state))return;this.state=B.Destroy;const{container:t,viewport:e,track:i,slides:n,panzoom:s}=this,o=this.option(\"classes\");t.removeEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),t.removeEventListener(\"slideTo\",this.onSlideTo),window.removeEventListener(\"resize\",this.onResize),s&&(s.destroy(),this.panzoom=null),n&&n.forEach((t=>{this.removeSlideEl(t)})),this.detachPlugins(),e&&(e.removeEventListener(\"scroll\",this.onScroll),e.offsetParent&&i&&i.offsetParent&&e.replaceWith(...i.childNodes));for(const[e,i]of Object.entries(o))\"container\"!==e&&i&&t.classList.remove(i);this.track=null,this.viewport=null,this.page=0,this.slides=[];const a=this.events.get(\"ready\");this.events=new Map,a&&this.events.set(\"ready\",a)}}Object.defineProperty(Q,\"Panzoom\",{enumerable:!0,configurable:!0,writable:!0,value:I}),Object.defineProperty(Q,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:j}),Object.defineProperty(Q,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:U});const tt=function(t){if(!E(t))return 0;const e=window.scrollY,i=window.innerHeight,n=e+i,s=t.getBoundingClientRect(),o=s.y+e,a=s.height,r=o+a;if(e>r||n<o)return 0;if(e<o&&n>r)return 100;if(o<e&&r>n)return 100;let l=a;o<e&&(l-=e-o),r>n&&(l-=r-n);const c=l/i*100;return Math.round(c)},et=!(\"undefined\"==typeof window||!window.document||!window.document.createElement);let it;const nt=[\"a[href]\",\"area[href]\",'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\"select:not([disabled]):not([aria-hidden])\",\"textarea:not([disabled]):not([aria-hidden])\",\"button:not([disabled]):not([aria-hidden]):not(.fancybox-focus-guard)\",\"iframe\",\"object\",\"embed\",\"video\",\"audio\",\"[contenteditable]\",'[tabindex]:not([tabindex^=\"-\"]):not([disabled]):not([aria-hidden])'].join(\",\"),st=t=>{if(t&&et){void 0===it&&document.createElement(\"div\").focus({get preventScroll(){return it=!0,!1}});try{if(it)t.focus({preventScroll:!0});else{const e=window.scrollY||document.body.scrollTop,i=window.scrollX||document.body.scrollLeft;t.focus(),document.body.scrollTo({top:e,left:i,behavior:\"auto\"})}}catch(t){}}},ot=()=>{const t=document;let e,i=\"\",n=\"\",s=\"\";return t.fullscreenEnabled?(i=\"requestFullscreen\",n=\"exitFullscreen\",s=\"fullscreenElement\"):t.webkitFullscreenEnabled&&(i=\"webkitRequestFullscreen\",n=\"webkitExitFullscreen\",s=\"webkitFullscreenElement\"),i&&(e={request:function(e=t.documentElement){return\"webkitRequestFullscreen\"===i?e[i](Element.ALLOW_KEYBOARD_INPUT):e[i]()},exit:function(){return t[s]&&t[n]()},isFullscreen:function(){return t[s]}}),e},at={animated:!0,autoFocus:!0,backdropClick:\"close\",Carousel:{classes:{container:\"fancybox__carousel\",viewport:\"fancybox__viewport\",track:\"fancybox__track\",slide:\"fancybox__slide\"}},closeButton:\"auto\",closeExisting:!1,commonCaption:!1,compact:()=>window.matchMedia(\"(max-width: 578px), (max-height: 578px)\").matches,contentClick:\"toggleZoom\",contentDblClick:!1,defaultType:\"image\",defaultDisplay:\"flex\",dragToClose:!0,Fullscreen:{autoStart:!1},groupAll:!1,groupAttr:\"data-fancybox\",hideClass:\"f-fadeOut\",hideScrollbar:!0,idle:3500,keyboard:{Escape:\"close\",Delete:\"close\",Backspace:\"close\",PageUp:\"next\",PageDown:\"prev\",ArrowUp:\"prev\",ArrowDown:\"next\",ArrowRight:\"next\",ArrowLeft:\"prev\"},l10n:Object.assign(Object.assign({},b),{CLOSE:\"Close\",NEXT:\"Next\",PREV:\"Previous\",MODAL:\"You can close this modal content with the ESC key\",ERROR:\"Something Went Wrong, Please Try Again Later\",IMAGE_ERROR:\"Image Not Found\",ELEMENT_NOT_FOUND:\"HTML Element Not Found\",AJAX_NOT_FOUND:\"Error Loading AJAX : Not Found\",AJAX_FORBIDDEN:\"Error Loading AJAX : Forbidden\",IFRAME_ERROR:\"Error Loading Page\",TOGGLE_ZOOM:\"Toggle zoom level\",TOGGLE_THUMBS:\"Toggle thumbnails\",TOGGLE_SLIDESHOW:\"Toggle slideshow\",TOGGLE_FULLSCREEN:\"Toggle full-screen mode\",DOWNLOAD:\"Download\"}),parentEl:null,placeFocusBack:!0,showClass:\"f-zoomInUp\",startIndex:0,tpl:{closeButton:'<button data-fancybox-close class=\"f-button is-close-btn\" title=\"{{CLOSE}}\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" tabindex=\"-1\"><path d=\"M20 20L4 4m16 0L4 20\"/></svg></button>',main:'<div class=\"fancybox__container\" role=\"dialog\" aria-modal=\"true\" aria-label=\"{{MODAL}}\" tabindex=\"-1\">\\n    <div class=\"fancybox__backdrop\"></div>\\n    <div class=\"fancybox__carousel\"></div>\\n    <div class=\"fancybox__footer\"></div>\\n  </div>'},trapFocus:!0,wheel:\"zoom\"};var rt,lt;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Closing=2]=\"Closing\",t[t.CustomClosing=3]=\"CustomClosing\",t[t.Destroy=4]=\"Destroy\"}(rt||(rt={})),function(t){t[t.Loading=0]=\"Loading\",t[t.Opening=1]=\"Opening\",t[t.Ready=2]=\"Ready\",t[t.Closing=3]=\"Closing\"}(lt||(lt={}));let ct=\"\",ht=!1,dt=!1,ut=null;const pt=()=>{let t=\"\",e=\"\";const i=Oe.getInstance();if(i){const n=i.carousel,s=i.getSlide();if(n&&s){let o=s.slug||void 0,a=s.triggerEl||void 0;e=o||(i.option(\"slug\")||\"\"),!e&&a&&a.dataset&&(e=a.dataset.fancybox||\"\"),e&&\"true\"!==e&&(t=\"#\"+e+(!o&&n.slides.length>1?\"-\"+(s.index+1):\"\"))}}return{hash:t,slug:e,index:1}},ft=()=>{const t=new URL(document.URL).hash,e=t.slice(1).split(\"-\"),i=e[e.length-1],n=i&&/^\\+?\\d+$/.test(i)&&parseInt(e.pop()||\"1\",10)||1;return{hash:t,slug:e.join(\"-\"),index:n}},gt=()=>{const{slug:t,index:e}=ft();if(!t)return;let i=document.querySelector(`[data-slug=\"${t}\"]`);if(i&&i.dispatchEvent(new CustomEvent(\"click\",{bubbles:!0,cancelable:!0})),Oe.getInstance())return;const n=document.querySelectorAll(`[data-fancybox=\"${t}\"]`);n.length&&(i=n[e-1],i&&i.dispatchEvent(new CustomEvent(\"click\",{bubbles:!0,cancelable:!0})))},mt=()=>{if(!1===Oe.defaults.Hash)return;const t=Oe.getInstance();if(!1===(null==t?void 0:t.options.Hash))return;const{slug:e,index:i}=ft(),{slug:n}=pt();t&&(e===n?t.jumpTo(i-1):(ht=!0,t.close())),gt()},vt=()=>{ut&&clearTimeout(ut),queueMicrotask((()=>{mt()}))},bt=()=>{window.addEventListener(\"hashchange\",vt,!1),setTimeout((()=>{mt()}),500)};et&&(/complete|interactive|loaded/.test(document.readyState)?bt():document.addEventListener(\"DOMContentLoaded\",bt));const yt=\"is-zooming-in\";class wt extends _{onCreateSlide(t,e,i){const n=this.instance.optionFor(i,\"src\")||\"\";i.el&&\"image\"===i.type&&\"string\"==typeof n&&this.setImage(i,n)}onRemoveSlide(t,e,i){i.panzoom&&i.panzoom.destroy(),i.panzoom=void 0,i.imageEl=void 0}onChange(t,e,i,n){S(this.instance.container,yt);for(const t of e.slides){const e=t.panzoom;e&&t.index!==i&&e.reset(.35)}}onClose(){var t;const e=this.instance,i=e.container,n=e.getSlide();if(!i||!i.parentElement||!n)return;const{el:s,contentEl:o,panzoom:a,thumbElSrc:r}=n;if(!s||!r||!o||!a||a.isContentLoading||a.state===m.Init||a.state===m.Destroy)return;a.updateMetrics();let l=this.getZoomInfo(n);if(!l)return;this.instance.state=rt.CustomClosing,i.classList.remove(yt),i.classList.add(\"is-zooming-out\"),o.style.backgroundImage=`url('${r}')`;const c=i.getBoundingClientRect();1===((null===(t=window.visualViewport)||void 0===t?void 0:t.scale)||1)&&Object.assign(i.style,{position:\"absolute\",top:`${i.offsetTop+window.scrollY}px`,left:`${i.offsetLeft+window.scrollX}px`,bottom:\"auto\",right:\"auto\",width:`${c.width}px`,height:`${c.height}px`,overflow:\"hidden\"});const{x:h,y:d,scale:u,opacity:p}=l;if(p){const t=((t,e,i,n)=>{const s=e-t,o=n-i;return e=>i+((e-t)/s*o||0)})(a.scale,u,1,0);a.on(\"afterTransform\",(()=>{o.style.opacity=t(a.scale)+\"\"}))}a.on(\"endAnimation\",(()=>{e.destroy()})),a.target.a=u,a.target.b=0,a.target.c=0,a.target.d=u,a.panTo({x:h,y:d,scale:u,friction:p?.2:.33,ignoreBounds:!0}),a.isResting&&e.destroy()}setImage(t,e){const i=this.instance;t.src=e,this.process(t,e).then((e=>{const{contentEl:n,imageEl:s,thumbElSrc:o,el:a}=t;if(i.isClosing()||!n||!s)return;n.offsetHeight;const r=!!i.isOpeningSlide(t)&&this.getZoomInfo(t);if(this.option(\"protected\")&&a){a.addEventListener(\"contextmenu\",(t=>{t.preventDefault()}));const t=document.createElement(\"div\");P(t,\"fancybox-protected\"),n.appendChild(t)}if(o&&r){const s=e.contentRect,a=Math.max(s.fullWidth,s.fullHeight);let c=null;!r.opacity&&a>1200&&(c=document.createElement(\"img\"),P(c,\"fancybox-ghost\"),c.src=o,n.appendChild(c));const h=()=>{c&&(P(c,\"f-fadeFastOut\"),setTimeout((()=>{c&&(c.remove(),c=null)}),200))};(l=o,new Promise(((t,e)=>{const i=new Image;i.onload=t,i.onerror=e,i.src=l}))).then((()=>{i.hideLoading(t),t.state=lt.Opening,this.instance.emit(\"reveal\",t),this.zoomIn(t).then((()=>{h(),this.instance.done(t)}),(()=>{})),c&&setTimeout((()=>{h()}),a>2500?800:200)}),(()=>{i.hideLoading(t),i.revealContent(t)}))}else{const n=this.optionFor(t,\"initialSize\"),s=this.optionFor(t,\"zoom\"),o={event:i.prevMouseMoveEvent||i.options.event,friction:s?.12:0};let a=i.optionFor(t,\"showClass\")||void 0,r=!0;i.isOpeningSlide(t)&&(\"full\"===n?e.zoomToFull(o):\"cover\"===n?e.zoomToCover(o):\"max\"===n?e.zoomToMax(o):r=!1,e.stop(\"current\")),r&&a&&(a=e.isDragging?\"f-fadeIn\":\"\"),i.hideLoading(t),i.revealContent(t,a)}var l}),(()=>{i.setError(t,\"{{IMAGE_ERROR}}\")}))}process(t,e){return new Promise(((i,s)=>{var o;const a=this.instance,r=t.el;a.clearContent(t),a.showLoading(t);let l=this.optionFor(t,\"content\");if(\"string\"==typeof l&&(l=n(l)),!l||!E(l)){if(l=document.createElement(\"img\"),l instanceof HTMLImageElement){let i=\"\",n=t.caption;i=\"string\"==typeof n&&n?n.replace(/<[^>]+>/gi,\"\").substring(0,1e3):`Image ${t.index+1} of ${(null===(o=a.carousel)||void 0===o?void 0:o.pages.length)||1}`,l.src=e||\"\",l.alt=i,l.draggable=!1,t.srcset&&l.setAttribute(\"srcset\",t.srcset),this.instance.isOpeningSlide(t)&&(l.fetchPriority=\"high\")}t.sizes&&l.setAttribute(\"sizes\",t.sizes)}P(l,\"fancybox-image\"),t.imageEl=l,a.setContent(t,l,!1);t.panzoom=new I(r,u({transformParent:!0},this.option(\"Panzoom\")||{},{content:l,width:(e,i)=>a.optionFor(t,\"width\",\"auto\",i)||\"auto\",height:(e,i)=>a.optionFor(t,\"height\",\"auto\",i)||\"auto\",wheel:()=>{const t=a.option(\"wheel\");return(\"zoom\"===t||\"pan\"==t)&&t},click:(e,i)=>{var n,s;if(a.isCompact||a.isClosing())return!1;if(t.index!==(null===(n=a.getSlide())||void 0===n?void 0:n.index))return!1;if(i){const t=i.composedPath()[0];if([\"A\",\"BUTTON\",\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\"].includes(t.nodeName))return!1}let o=!i||i.target&&(null===(s=t.contentEl)||void 0===s?void 0:s.contains(i.target));return a.option(o?\"contentClick\":\"backdropClick\")||!1},dblClick:()=>a.isCompact?\"toggleZoom\":a.option(\"contentDblClick\")||!1,spinner:!1,panOnlyZoomed:!0,wheelLimit:1/0,on:{ready:t=>{i(t)},error:()=>{s()},destroy:()=>{s()}}}))}))}zoomIn(t){return new Promise(((e,i)=>{const n=this.instance,s=n.container,{panzoom:o,contentEl:a,el:r}=t;o&&o.updateMetrics();const l=this.getZoomInfo(t);if(!(l&&r&&a&&o&&s))return void i();const{x:c,y:h,scale:d,opacity:u}=l,p=()=>{t.state!==lt.Closing&&(u&&(a.style.opacity=Math.max(Math.min(1,1-(1-o.scale)/(1-d)),0)+\"\"),o.scale>=1&&o.scale>o.targetScale-.1&&e(o))},f=t=>{(t.scale<.99||t.scale>1.01)&&!t.isDragging||(S(s,yt),a.style.opacity=\"\",t.off(\"endAnimation\",f),t.off(\"touchStart\",f),t.off(\"afterTransform\",p),e(t))};o.on(\"endAnimation\",f),o.on(\"touchStart\",f),o.on(\"afterTransform\",p),o.on([\"error\",\"destroy\"],(()=>{i()})),o.panTo({x:c,y:h,scale:d,friction:0,ignoreBounds:!0}),o.stop(\"current\");const g={event:\"mousemove\"===o.panMode?n.prevMouseMoveEvent||n.options.event:void 0},m=this.optionFor(t,\"initialSize\");P(s,yt),n.hideLoading(t),\"full\"===m?o.zoomToFull(g):\"cover\"===m?o.zoomToCover(g):\"max\"===m?o.zoomToMax(g):o.reset(.172)}))}getZoomInfo(t){const{el:e,imageEl:i,thumbEl:n,panzoom:s}=t,o=this.instance,a=o.container;if(!e||!i||!n||!s||tt(n)<3||!this.optionFor(t,\"zoom\")||!a||o.state===rt.Destroy)return!1;if(\"0\"===getComputedStyle(a).getPropertyValue(\"--f-images-zoom\"))return!1;const r=window.visualViewport||null;if(1!==(r?r.scale:1))return!1;let{top:l,left:c,width:h,height:d}=n.getBoundingClientRect(),{top:u,left:p,fitWidth:f,fitHeight:g}=s.contentRect;if(!(h&&d&&f&&g))return!1;const m=s.container.getBoundingClientRect();p+=m.left,u+=m.top;const v=-1*(p+.5*f-(c+.5*h)),b=-1*(u+.5*g-(l+.5*d)),y=h/f;let w=this.option(\"zoomOpacity\")||!1;return\"auto\"===w&&(w=Math.abs(h/d-f/g)>.1),{x:v,y:b,scale:y,opacity:w}}attach(){const t=this,e=t.instance;e.on(\"Carousel.change\",t.onChange),e.on(\"Carousel.createSlide\",t.onCreateSlide),e.on(\"Carousel.removeSlide\",t.onRemoveSlide),e.on(\"close\",t.onClose)}detach(){const t=this,e=t.instance;e.off(\"Carousel.change\",t.onChange),e.off(\"Carousel.createSlide\",t.onCreateSlide),e.off(\"Carousel.removeSlide\",t.onRemoveSlide),e.off(\"close\",t.onClose)}}Object.defineProperty(wt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{initialSize:\"fit\",Panzoom:{maxScale:1},protected:!1,zoom:!0,zoomOpacity:\"auto\"}}),\"function\"==typeof SuppressedError&&SuppressedError;const xt=\"html\",Et=\"image\",St=\"map\",Pt=\"youtube\",Ct=\"vimeo\",Tt=\"html5video\",Mt=(t,e={})=>{const i=new URL(t),n=new URLSearchParams(i.search),s=new URLSearchParams;for(const[t,i]of[...n,...Object.entries(e)]){let e=i+\"\";if(\"t\"===t){let t=e.match(/((\\d*)m)?(\\d*)s?/);t&&s.set(\"start\",60*parseInt(t[2]||\"0\")+parseInt(t[3]||\"0\")+\"\")}else s.set(t,e)}let o=s+\"\",a=t.match(/#t=((.*)?\\d+s)/);return a&&(o+=`#t=${a[1]}`),o},Ot={ajax:null,autoSize:!0,iframeAttr:{allow:\"autoplay; fullscreen\",scrolling:\"auto\"},preload:!0,videoAutoplay:!0,videoRatio:16/9,videoTpl:'<video class=\"fancybox__html5video\" playsinline controls controlsList=\"nodownload\" poster=\"{{poster}}\">\\n  <source src=\"{{src}}\" type=\"{{format}}\" />Sorry, your browser doesn\\'t support embedded videos.</video>',videoFormat:\"\",vimeo:{byline:1,color:\"00adef\",controls:1,dnt:1,muted:0},youtube:{controls:1,enablejsapi:1,nocookie:1,rel:0,fs:1}},At=[\"image\",\"html\",\"ajax\",\"inline\",\"clone\",\"iframe\",\"map\",\"pdf\",\"html5video\",\"youtube\",\"vimeo\"];class Lt extends _{onBeforeInitSlide(t,e,i){this.processType(i)}onCreateSlide(t,e,i){this.setContent(i)}onClearContent(t,e){e.xhr&&(e.xhr.abort(),e.xhr=null);const i=e.iframeEl;i&&(i.onload=i.onerror=null,i.src=\"//about:blank\",e.iframeEl=null);const n=e.contentEl,s=e.placeholderEl;if(\"inline\"===e.type&&n&&s)n.classList.remove(\"fancybox__content\"),\"none\"!==getComputedStyle(n).getPropertyValue(\"display\")&&(n.style.display=\"none\"),setTimeout((()=>{s&&(n&&s.parentNode&&s.parentNode.insertBefore(n,s),s.remove())}),0),e.contentEl=void 0,e.placeholderEl=void 0;else for(;e.el&&e.el.firstChild;)e.el.removeChild(e.el.firstChild)}onSelectSlide(t,e,i){i.state===lt.Ready&&this.playVideo()}onUnselectSlide(t,e,i){var n,s;if(i.type===Tt){try{null===(s=null===(n=i.el)||void 0===n?void 0:n.querySelector(\"video\"))||void 0===s||s.pause()}catch(t){}return}let o;i.type===Ct?o={method:\"pause\",value:\"true\"}:i.type===Pt&&(o={event:\"command\",func:\"pauseVideo\"}),o&&i.iframeEl&&i.iframeEl.contentWindow&&i.iframeEl.contentWindow.postMessage(JSON.stringify(o),\"*\"),i.poller&&clearTimeout(i.poller)}onDone(t,e){t.isCurrentSlide(e)&&!t.isClosing()&&this.playVideo()}onRefresh(t,e){e.slides.forEach((t=>{t.el&&(this.resizeIframe(t),this.setAspectRatio(t))}))}onMessage(t){try{let e=JSON.parse(t.data);if(\"https://player.vimeo.com\"===t.origin){if(\"ready\"===e.event)for(let e of Array.from(document.getElementsByClassName(\"fancybox__iframe\")))e instanceof HTMLIFrameElement&&e.contentWindow===t.source&&(e.dataset.ready=\"true\")}else if(t.origin.match(/^https:\\/\\/(www.)?youtube(-nocookie)?.com$/)&&\"onReady\"===e.event){const t=document.getElementById(e.id);t&&(t.dataset.ready=\"true\")}}catch(t){}}loadAjaxContent(t){const e=this.instance.optionFor(t,\"src\")||\"\";this.instance.showLoading(t);const i=this.instance,n=new XMLHttpRequest;i.showLoading(t),n.onreadystatechange=function(){n.readyState===XMLHttpRequest.DONE&&i.state===rt.Ready&&(i.hideLoading(t),200===n.status?i.setContent(t,n.responseText):i.setError(t,404===n.status?\"{{AJAX_NOT_FOUND}}\":\"{{AJAX_FORBIDDEN}}\"))};const s=t.ajax||null;n.open(s?\"POST\":\"GET\",e+\"\"),n.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),n.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),n.send(s),t.xhr=n}setInlineContent(t){let e=null;if(E(t.src))e=t.src;else if(\"string\"==typeof t.src){const i=t.src.split(\"#\",2).pop();e=i?document.getElementById(i):null}if(e){if(\"clone\"===t.type||e.closest(\".fancybox__slide\")){e=e.cloneNode(!0);const i=e.dataset.animationName;i&&(e.classList.remove(i),delete e.dataset.animationName);let n=e.getAttribute(\"id\");n=n?`${n}--clone`:`clone-${this.instance.id}-${t.index}`,e.setAttribute(\"id\",n)}else if(e.parentNode){const i=document.createElement(\"div\");i.classList.add(\"fancybox-placeholder\"),e.parentNode.insertBefore(i,e),t.placeholderEl=i}this.instance.setContent(t,e)}else this.instance.setError(t,\"{{ELEMENT_NOT_FOUND}}\")}setIframeContent(t){const{src:e,el:i}=t;if(!e||\"string\"!=typeof e||!i)return;i.classList.add(\"is-loading\");const n=this.instance,s=document.createElement(\"iframe\");s.className=\"fancybox__iframe\",s.setAttribute(\"id\",`fancybox__iframe_${n.id}_${t.index}`);for(const[e,i]of Object.entries(this.optionFor(t,\"iframeAttr\")||{}))s.setAttribute(e,i);s.onerror=()=>{n.setError(t,\"{{IFRAME_ERROR}}\")},t.iframeEl=s;const o=this.optionFor(t,\"preload\");if(\"iframe\"!==t.type||!1===o)return s.setAttribute(\"src\",t.src+\"\"),n.setContent(t,s,!1),this.resizeIframe(t),void n.revealContent(t);n.showLoading(t),s.onload=()=>{if(!s.src.length)return;const e=\"true\"!==s.dataset.ready;s.dataset.ready=\"true\",this.resizeIframe(t),e?n.revealContent(t):n.hideLoading(t)},s.setAttribute(\"src\",e),n.setContent(t,s,!1)}resizeIframe(t){const{type:e,iframeEl:i}=t;if(e===Pt||e===Ct)return;const n=null==i?void 0:i.parentElement;if(!i||!n)return;let s=t.autoSize;void 0===s&&(s=this.optionFor(t,\"autoSize\"));let o=t.width||0,a=t.height||0;o&&a&&(s=!1);const r=n&&n.style;if(!1!==t.preload&&!1!==s&&r)try{const t=window.getComputedStyle(n),e=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight),s=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom),l=i.contentWindow;if(l){const t=l.document,i=t.getElementsByTagName(xt)[0],n=t.body;r.width=\"\",n.style.overflow=\"hidden\",o=o||i.scrollWidth+e,r.width=`${o}px`,n.style.overflow=\"\",r.flex=\"0 0 auto\",r.height=`${n.scrollHeight}px`,a=i.scrollHeight+s}}catch(t){}if(o||a){const t={flex:\"0 1 auto\",width:\"\",height:\"\"};o&&\"auto\"!==o&&(t.width=`${o}px`),a&&\"auto\"!==a&&(t.height=`${a}px`),Object.assign(r,t)}}playVideo(){const t=this.instance.getSlide();if(!t)return;const{el:e}=t;if(!e||!e.offsetParent)return;if(!this.optionFor(t,\"videoAutoplay\"))return;if(t.type===Tt)try{const t=e.querySelector(\"video\");if(t){const e=t.play();void 0!==e&&e.then((()=>{})).catch((e=>{t.muted=!0,t.play()}))}}catch(t){}if(t.type!==Pt&&t.type!==Ct)return;const i=()=>{if(t.iframeEl&&t.iframeEl.contentWindow){let e;if(\"true\"===t.iframeEl.dataset.ready)return e=t.type===Pt?{event:\"command\",func:\"playVideo\"}:{method:\"play\",value:\"true\"},e&&t.iframeEl.contentWindow.postMessage(JSON.stringify(e),\"*\"),void(t.poller=void 0);t.type===Pt&&(e={event:\"listening\",id:t.iframeEl.getAttribute(\"id\")},t.iframeEl.contentWindow.postMessage(JSON.stringify(e),\"*\"))}t.poller=setTimeout(i,250)};i()}processType(t){if(t.html)return t.type=xt,t.src=t.html,void(t.html=\"\");const e=this.instance.optionFor(t,\"src\",\"\");if(!e||\"string\"!=typeof e)return;let i=t.type,n=null;if(n=e.match(/(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(?:watch\\?(?:.*&)?v=|v\\/|u\\/|shorts\\/|embed\\/?)?(videoseries\\?list=(?:.*)|[\\w-]{11}|\\?listType=(?:.*)&list=(?:.*))(?:.*)/i)){const s=this.optionFor(t,Pt),{nocookie:o}=s,a=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(t);s<n.length;s++)e.indexOf(n[s])<0&&Object.prototype.propertyIsEnumerable.call(t,n[s])&&(i[n[s]]=t[n[s]])}return i}(s,[\"nocookie\"]),r=`www.youtube${o?\"-nocookie\":\"\"}.com`,l=Mt(e,a),c=encodeURIComponent(n[2]);t.videoId=c,t.src=`https://${r}/embed/${c}?${l}`,t.thumbSrc=t.thumbSrc||`https://i.ytimg.com/vi/${c}/mqdefault.jpg`,i=Pt}else if(n=e.match(/^.+vimeo.com\\/(?:\\/)?([\\d]+)((\\/|\\?h=)([a-z0-9]+))?(.*)?/)){const s=Mt(e,this.optionFor(t,Ct)),o=encodeURIComponent(n[1]),a=n[4]||\"\";t.videoId=o,t.src=`https://player.vimeo.com/video/${o}?${a?`h=${a}${s?\"&\":\"\"}`:\"\"}${s}`,i=Ct}if(!i&&t.triggerEl){const e=t.triggerEl.dataset.type;At.includes(e)&&(i=e)}i||\"string\"==typeof e&&(\"#\"===e.charAt(0)?i=\"inline\":(n=e.match(/\\.(mp4|mov|ogv|webm)((\\?|#).*)?$/i))?(i=Tt,t.videoFormat=t.videoFormat||\"video/\"+(\"ogv\"===n[1]?\"ogg\":n[1])):e.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i)?i=Et:e.match(/\\.(pdf)((\\?|#).*)?$/i)&&(i=\"pdf\")),(n=e.match(/(?:maps\\.)?google\\.([a-z]{2,3}(?:\\.[a-z]{2})?)\\/(?:(?:(?:maps\\/(?:place\\/(?:.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(?:\\?ll=))(.*)?/i))?(t.src=`https://maps.google.${n[1]}/?ll=${(n[2]?n[2]+\"&z=\"+Math.floor(parseFloat(n[3]))+(n[4]?n[4].replace(/^\\//,\"&\"):\"\"):n[4]+\"\").replace(/\\?/,\"&\")}&output=${n[4]&&n[4].indexOf(\"layer=c\")>0?\"svembed\":\"embed\"}`,i=St):(n=e.match(/(?:maps\\.)?google\\.([a-z]{2,3}(?:\\.[a-z]{2})?)\\/(?:maps\\/search\\/)(.*)/i))&&(t.src=`https://maps.google.${n[1]}/maps?q=${n[2].replace(\"query=\",\"q=\").replace(\"api=1\",\"\")}&output=embed`,i=St),i=i||this.instance.option(\"defaultType\"),t.type=i,i===Et&&(t.thumbSrc=t.thumbSrc||t.src)}setContent(t){const e=this.instance.optionFor(t,\"src\")||\"\";if(t&&t.type&&e){switch(t.type){case xt:this.instance.setContent(t,e);break;case Tt:const i=this.option(\"videoTpl\");i&&this.instance.setContent(t,i.replace(/\\{\\{src\\}\\}/gi,e+\"\").replace(/\\{\\{format\\}\\}/gi,this.optionFor(t,\"videoFormat\")||\"\").replace(/\\{\\{poster\\}\\}/gi,t.poster||t.thumbSrc||\"\"));break;case\"inline\":case\"clone\":this.setInlineContent(t);break;case\"ajax\":this.loadAjaxContent(t);break;case\"pdf\":case St:case Pt:case Ct:t.preload=!1;case\"iframe\":this.setIframeContent(t)}this.setAspectRatio(t)}}setAspectRatio(t){const e=t.contentEl;if(!(t.el&&e&&t.type&&[Pt,Ct,Tt].includes(t.type)))return;let i,n=t.width||\"auto\",s=t.height||\"auto\";if(\"auto\"===n||\"auto\"===s){i=this.optionFor(t,\"videoRatio\");const e=(i+\"\").match(/(\\d+)\\s*\\/\\s?(\\d+)/);i=e&&e.length>2?parseFloat(e[1])/parseFloat(e[2]):parseFloat(i+\"\")}else n&&s&&(i=n/s);if(!i)return;e.style.aspectRatio=\"\",e.style.width=\"\",e.style.height=\"\",e.offsetHeight;const o=e.getBoundingClientRect(),a=o.width||1,r=o.height||1;e.style.aspectRatio=i+\"\",i<a/r?(s=\"auto\"===s?r:Math.min(r,s),e.style.width=\"auto\",e.style.height=`${s}px`):(n=\"auto\"===n?a:Math.min(a,n),e.style.width=`${n}px`,e.style.height=\"auto\")}attach(){const t=this,e=t.instance;e.on(\"Carousel.beforeInitSlide\",t.onBeforeInitSlide),e.on(\"Carousel.createSlide\",t.onCreateSlide),e.on(\"Carousel.selectSlide\",t.onSelectSlide),e.on(\"Carousel.unselectSlide\",t.onUnselectSlide),e.on(\"Carousel.Panzoom.refresh\",t.onRefresh),e.on(\"done\",t.onDone),e.on(\"clearContent\",t.onClearContent),window.addEventListener(\"message\",t.onMessage)}detach(){const t=this,e=t.instance;e.off(\"Carousel.beforeInitSlide\",t.onBeforeInitSlide),e.off(\"Carousel.createSlide\",t.onCreateSlide),e.off(\"Carousel.selectSlide\",t.onSelectSlide),e.off(\"Carousel.unselectSlide\",t.onUnselectSlide),e.off(\"Carousel.Panzoom.refresh\",t.onRefresh),e.off(\"done\",t.onDone),e.off(\"clearContent\",t.onClearContent),window.removeEventListener(\"message\",t.onMessage)}}Object.defineProperty(Lt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:Ot});const zt=\"play\",Rt=\"pause\",kt=\"ready\";class It extends _{constructor(){super(...arguments),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:kt}),Object.defineProperty(this,\"inHover\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"timer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"progressBar\",{enumerable:!0,configurable:!0,writable:!0,value:null})}get isActive(){return this.state!==kt}onReady(t){this.option(\"autoStart\")&&(t.isInfinite||t.page<t.pages.length-1)&&this.start()}onChange(){this.removeProgressBar(),this.pause()}onSettle(){this.resume()}onVisibilityChange(){\"visible\"===document.visibilityState?this.resume():this.pause()}onMouseEnter(){this.inHover=!0,this.pause()}onMouseLeave(){var t;this.inHover=!1,(null===(t=this.instance.panzoom)||void 0===t?void 0:t.isResting)&&this.resume()}onTimerEnd(){const t=this.instance;\"play\"===this.state&&(t.isInfinite||t.page!==t.pages.length-1?t.slideNext():t.slideTo(0))}removeProgressBar(){this.progressBar&&(this.progressBar.remove(),this.progressBar=null)}createProgressBar(){var t;if(!this.option(\"showProgress\"))return null;this.removeProgressBar();const e=this.instance,i=(null===(t=e.pages[e.page])||void 0===t?void 0:t.slides)||[];let n=this.option(\"progressParentEl\");if(n||(n=(1===i.length?i[0].el:null)||e.viewport),!n)return null;const s=document.createElement(\"div\");return P(s,\"f-progress\"),n.prepend(s),this.progressBar=s,s.offsetHeight,s}set(){const t=this,e=t.instance;if(e.pages.length<2)return;if(t.timer)return;const i=t.option(\"timeout\");t.state=zt,P(e.container,\"has-autoplay\");let n=t.createProgressBar();n&&(n.style.transitionDuration=`${i}ms`,n.style.transform=\"scaleX(1)\"),t.timer=setTimeout((()=>{t.timer=null,t.inHover||t.onTimerEnd()}),i),t.emit(\"set\")}clear(){const t=this;t.timer&&(clearTimeout(t.timer),t.timer=null),t.removeProgressBar()}start(){const t=this;if(t.set(),t.state!==kt){if(t.option(\"pauseOnHover\")){const e=t.instance.container;e.addEventListener(\"mouseenter\",t.onMouseEnter,!1),e.addEventListener(\"mouseleave\",t.onMouseLeave,!1)}document.addEventListener(\"visibilitychange\",t.onVisibilityChange,!1),t.emit(\"start\")}}stop(){const t=this,e=t.state,i=t.instance.container;t.clear(),t.state=kt,i.removeEventListener(\"mouseenter\",t.onMouseEnter,!1),i.removeEventListener(\"mouseleave\",t.onMouseLeave,!1),document.removeEventListener(\"visibilitychange\",t.onVisibilityChange,!1),S(i,\"has-autoplay\"),e!==kt&&t.emit(\"stop\")}pause(){const t=this;t.state===zt&&(t.state=Rt,t.clear(),t.emit(Rt))}resume(){const t=this,e=t.instance;if(e.isInfinite||e.page!==e.pages.length-1)if(t.state!==zt){if(t.state===Rt&&!t.inHover){const e=new Event(\"resume\",{bubbles:!0,cancelable:!0});t.emit(\"resume\",e),e.defaultPrevented||t.set()}}else t.set();else t.stop()}toggle(){this.state===zt||this.state===Rt?this.stop():this.start()}attach(){const t=this,e=t.instance;e.on(\"ready\",t.onReady),e.on(\"Panzoom.startAnimation\",t.onChange),e.on(\"Panzoom.endAnimation\",t.onSettle),e.on(\"Panzoom.touchMove\",t.onChange)}detach(){const t=this,e=t.instance;e.off(\"ready\",t.onReady),e.off(\"Panzoom.startAnimation\",t.onChange),e.off(\"Panzoom.endAnimation\",t.onSettle),e.off(\"Panzoom.touchMove\",t.onChange),t.stop()}}Object.defineProperty(It,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{autoStart:!0,pauseOnHover:!0,progressParentEl:null,showProgress:!0,timeout:3e3}});class Dt extends _{constructor(){super(...arguments),Object.defineProperty(this,\"ref\",{enumerable:!0,configurable:!0,writable:!0,value:null})}onPrepare(t){const e=t.carousel;if(!e)return;const i=t.container;i&&(e.options.Autoplay=u({autoStart:!1},this.option(\"Autoplay\")||{},{pauseOnHover:!1,timeout:this.option(\"timeout\"),progressParentEl:()=>this.option(\"progressParentEl\")||null,on:{start:()=>{t.emit(\"startSlideshow\")},set:e=>{var n;i.classList.add(\"has-slideshow\"),(null===(n=t.getSlide())||void 0===n?void 0:n.state)!==lt.Ready&&e.pause()},stop:()=>{i.classList.remove(\"has-slideshow\"),t.isCompact||t.endIdle(),t.emit(\"endSlideshow\")},resume:(e,i)=>{var n,s,o;!i||!i.cancelable||(null===(n=t.getSlide())||void 0===n?void 0:n.state)===lt.Ready&&(null===(o=null===(s=t.carousel)||void 0===s?void 0:s.panzoom)||void 0===o?void 0:o.isResting)||i.preventDefault()}}}),e.attachPlugins({Autoplay:It}),this.ref=e.plugins.Autoplay)}onReady(t){const e=t.carousel,i=this.ref;i&&e&&this.option(\"playOnStart\")&&(e.isInfinite||e.page<e.pages.length-1)&&i.start()}onDone(t,e){const i=this.ref,n=t.carousel;if(!i||!n)return;const s=e.panzoom;s&&s.on(\"startAnimation\",(()=>{t.isCurrentSlide(e)&&i.stop()})),t.isCurrentSlide(e)&&i.resume()}onKeydown(t,e){var i;const n=this.ref;n&&e===this.option(\"key\")&&\"BUTTON\"!==(null===(i=document.activeElement)||void 0===i?void 0:i.nodeName)&&n.toggle()}attach(){const t=this,e=t.instance;e.on(\"Carousel.init\",t.onPrepare),e.on(\"Carousel.ready\",t.onReady),e.on(\"done\",t.onDone),e.on(\"keydown\",t.onKeydown)}detach(){const t=this,e=t.instance;e.off(\"Carousel.init\",t.onPrepare),e.off(\"Carousel.ready\",t.onReady),e.off(\"done\",t.onDone),e.off(\"keydown\",t.onKeydown)}}Object.defineProperty(Dt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{key:\" \",playOnStart:!1,progressParentEl:t=>{var e;return(null===(e=t.instance.container)||void 0===e?void 0:e.querySelector(\".fancybox__toolbar [data-fancybox-toggle-slideshow]\"))||t.instance.container},timeout:3e3}});const Ft={classes:{container:\"f-thumbs f-carousel__thumbs\",viewport:\"f-thumbs__viewport\",track:\"f-thumbs__track\",slide:\"f-thumbs__slide\",isResting:\"is-resting\",isSelected:\"is-selected\",isLoading:\"is-loading\",hasThumbs:\"has-thumbs\"},minCount:2,parentEl:null,thumbTpl:'<button class=\"f-thumbs__slide__button\" tabindex=\"0\" type=\"button\" aria-label=\"{{GOTO}}\" data-carousel-index=\"%i\"><img class=\"f-thumbs__slide__img\" data-lazy-src=\"{{%s}}\" alt=\"\" /></button>',type:\"modern\"};var jt;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Hidden=2]=\"Hidden\"}(jt||(jt={}));const Bt=\"isResting\",Ht=\"thumbWidth\",Nt=\"thumbHeight\",_t=\"thumbClipWidth\";let $t=class extends _{constructor(){super(...arguments),Object.defineProperty(this,\"type\",{enumerable:!0,configurable:!0,writable:!0,value:\"modern\"}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"track\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"carousel\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"thumbWidth\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"thumbClipWidth\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"thumbHeight\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"thumbGap\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"thumbExtraGap\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:jt.Init})}get isModern(){return\"modern\"===this.type}onInitSlide(t,e){const i=e.el?e.el.dataset:void 0;i&&(e.thumbSrc=i.thumbSrc||e.thumbSrc||\"\",e[_t]=parseFloat(i[_t]||\"\")||e[_t]||0,e[Nt]=parseFloat(i.thumbHeight||\"\")||e[Nt]||0),this.addSlide(e)}onInitSlides(){this.build()}onChange(){var t;if(!this.isModern)return;const e=this.container,i=this.instance,n=i.panzoom,s=this.carousel,a=s?s.panzoom:null,r=i.page;if(n&&s&&a){if(n.isDragging){S(e,this.cn(Bt));let n=(null===(t=s.pages[r])||void 0===t?void 0:t.pos)||0;n+=i.getProgress(r)*(this[_t]+this.thumbGap);let o=a.getBounds();-1*n>o.x.min&&-1*n<o.x.max&&a.panTo({x:-1*n,friction:.12})}else o(e,this.cn(Bt),n.isResting);this.shiftModern()}}onRefresh(){this.updateProps();for(const t of this.instance.slides||[])this.resizeModernSlide(t);this.shiftModern()}isDisabled(){const t=this.option(\"minCount\")||0;if(t){const e=this.instance;let i=0;for(const t of e.slides||[])t.thumbSrc&&i++;if(i<t)return!0}const e=this.option(\"type\");return[\"modern\",\"classic\"].indexOf(e)<0}getThumb(t){const e=this.option(\"thumbTpl\")||\"\";return{html:this.instance.localize(e,[[\"%i\",t.index],[\"%d\",t.index+1],[\"%s\",t.thumbSrc||\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"]])}}addSlide(t){const e=this.carousel;e&&e.addSlide(t.index,this.getThumb(t))}getSlides(){const t=[];for(const e of this.instance.slides||[])t.push(this.getThumb(e));return t}resizeModernSlide(t){this.isModern&&(t[Ht]=t[_t]&&t[Nt]?Math.round(this[Nt]*(t[_t]/t[Nt])):this[Ht])}updateProps(){const t=this.container;if(!t)return;const e=e=>parseFloat(getComputedStyle(t).getPropertyValue(\"--f-thumb-\"+e))||0;this.thumbGap=e(\"gap\"),this.thumbExtraGap=e(\"extra-gap\"),this[Ht]=e(\"width\")||40,this[_t]=e(\"clip-width\")||40,this[Nt]=e(\"height\")||40}build(){const t=this;if(t.state!==jt.Init)return;if(t.isDisabled())return void t.emit(\"disabled\");const e=t.instance,i=e.container,n=t.getSlides(),s=t.option(\"type\");t.type=s;const o=t.option(\"parentEl\"),a=t.cn(\"container\"),r=t.cn(\"track\");let l=null==o?void 0:o.querySelector(\".\"+a);l||(l=document.createElement(\"div\"),P(l,a),o?o.appendChild(l):i.after(l)),P(l,`is-${s}`),P(i,t.cn(\"hasThumbs\")),t.container=l,t.updateProps();let c=l.querySelector(\".\"+r);c||(c=document.createElement(\"div\"),P(c,t.cn(\"track\")),l.appendChild(c)),t.track=c;const h=u({},{track:c,infinite:!1,center:!0,fill:\"classic\"===s,dragFree:!0,slidesPerPage:1,transition:!1,preload:.25,friction:.12,Panzoom:{maxVelocity:0},Dots:!1,Navigation:!1,classes:{container:\"f-thumbs\",viewport:\"f-thumbs__viewport\",track:\"f-thumbs__track\",slide:\"f-thumbs__slide\"}},t.option(\"Carousel\")||{},{Sync:{target:e},slides:n}),d=new e.constructor(l,h);d.on(\"createSlide\",((e,i)=>{t.setProps(i.index),t.emit(\"createSlide\",i,i.el)})),d.on(\"ready\",(()=>{t.shiftModern(),t.emit(\"ready\")})),d.on(\"refresh\",(()=>{t.shiftModern()})),d.on(\"Panzoom.click\",((e,i,n)=>{t.onClick(n)})),t.carousel=d,t.state=jt.Ready}onClick(t){t.preventDefault(),t.stopPropagation();const e=this.instance,{pages:i,page:n}=e,s=t=>{if(t){const e=t.closest(\"[data-carousel-index]\");if(e)return[parseInt(e.dataset.carouselIndex||\"\",10)||0,e]}return[-1,void 0]},o=(t,e)=>{const i=document.elementFromPoint(t,e);return i?s(i):[-1,void 0]};let[a,r]=s(t.target);if(a>-1)return;const l=this[_t],c=t.clientX,h=t.clientY;let[d,u]=o(c-l,h),[p,f]=o(c+l,h);u&&f?(a=Math.abs(c-u.getBoundingClientRect().right)<Math.abs(c-f.getBoundingClientRect().left)?d:p,a===n&&(a=a===d?p:d)):u?a=d:f&&(a=p),a>-1&&i[a]&&e.slideTo(a)}getShift(t){var e;const i=this,{instance:n}=i,s=i.carousel;if(!n||!s)return 0;const o=i[Ht],a=i[_t],r=i.thumbGap,l=i.thumbExtraGap;if(!(null===(e=s.slides[t])||void 0===e?void 0:e.el))return 0;const c=.5*(o-a),h=n.pages.length-1;let d=n.getProgress(0),u=n.getProgress(h),p=n.getProgress(t,!1,!0),f=0,g=c+l+r;const m=d<0&&d>-1,v=u>0&&u<1;return 0===t?(f=g*Math.abs(d),v&&1===d&&(f-=g*Math.abs(u))):t===h?(f=g*Math.abs(u)*-1,m&&-1===u&&(f+=g*Math.abs(d))):m||v?(f=-1*g,f+=g*Math.abs(d),f+=g*(1-Math.abs(u))):f=g*p,f}setProps(e){var i;const n=this;if(!n.isModern)return;const{instance:s}=n,o=n.carousel;if(s&&o){const a=null===(i=o.slides[e])||void 0===i?void 0:i.el;if(a&&a.childNodes.length){let i=t(1-Math.abs(s.getProgress(e))),o=t(n.getShift(e));a.style.setProperty(\"--progress\",i?i+\"\":\"\"),a.style.setProperty(\"--shift\",o+\"\")}}}shiftModern(){const t=this;if(!t.isModern)return;const{instance:e,track:i}=t,n=e.panzoom,s=t.carousel;if(!(e&&i&&n&&s))return;if(n.state===m.Init||n.state===m.Destroy)return;for(const i of e.slides)t.setProps(i.index);let o=(t[_t]+t.thumbGap)*(s.slides.length||0);i.style.setProperty(\"--width\",o+\"\")}cleanup(){const t=this;t.carousel&&t.carousel.destroy(),t.carousel=null,t.container&&t.container.remove(),t.container=null,t.track&&t.track.remove(),t.track=null,t.state=jt.Init,S(t.instance.container,t.cn(\"hasThumbs\"))}attach(){const t=this,e=t.instance;e.on(\"initSlide\",t.onInitSlide),e.state===B.Init?e.on(\"initSlides\",t.onInitSlides):t.onInitSlides(),e.on([\"change\",\"Panzoom.afterTransform\"],t.onChange),e.on(\"Panzoom.refresh\",t.onRefresh)}detach(){const t=this,e=t.instance;e.off(\"initSlide\",t.onInitSlide),e.off(\"initSlides\",t.onInitSlides),e.off([\"change\",\"Panzoom.afterTransform\"],t.onChange),e.off(\"Panzoom.refresh\",t.onRefresh),t.cleanup()}};Object.defineProperty($t,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:Ft});const Wt=Object.assign(Object.assign({},Ft),{key:\"t\",showOnStart:!0,parentEl:null}),Xt=\"is-masked\",qt=\"aria-hidden\";class Yt extends _{constructor(){super(...arguments),Object.defineProperty(this,\"ref\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"hidden\",{enumerable:!0,configurable:!0,writable:!0,value:!1})}get isEnabled(){const t=this.ref;return t&&!t.isDisabled()}get isHidden(){return this.hidden}onClick(t,e){e.stopPropagation()}onCreateSlide(t,e){var i,n,s;const o=(null===(s=null===(n=null===(i=this.instance)||void 0===i?void 0:i.carousel)||void 0===n?void 0:n.slides[e.index])||void 0===s?void 0:s.type)||\"\",a=e.el;if(a&&o){let t=`for-${o}`;[\"video\",\"youtube\",\"vimeo\",\"html5video\"].includes(o)&&(t+=\" for-video\"),P(a,t)}}onInit(){var t;const e=this,i=e.instance,n=i.carousel;if(e.ref||!n)return;const s=e.option(\"parentEl\")||i.footer||i.container;if(!s)return;const o=u({},e.options,{parentEl:s,classes:{container:\"f-thumbs fancybox__thumbs\"},Carousel:{Sync:{friction:i.option(\"Carousel.friction\")||0}},on:{ready:t=>{const i=t.container;i&&this.hidden&&(e.refresh(),i.style.transition=\"none\",e.hide(),i.offsetHeight,queueMicrotask((()=>{i.style.transition=\"\",e.show()})))}}});o.Carousel=o.Carousel||{},o.Carousel.on=u((null===(t=e.options.Carousel)||void 0===t?void 0:t.on)||{},{click:this.onClick,createSlide:this.onCreateSlide}),n.options.Thumbs=o,n.attachPlugins({Thumbs:$t}),e.ref=n.plugins.Thumbs,e.option(\"showOnStart\")||(e.ref.state=jt.Hidden,e.hidden=!0)}onResize(){var t;const e=null===(t=this.ref)||void 0===t?void 0:t.container;e&&(e.style.maxHeight=\"\")}onKeydown(t,e){const i=this.option(\"key\");i&&i===e&&this.toggle()}toggle(){const t=this.ref;if(t&&!t.isDisabled())return t.state===jt.Hidden?(t.state=jt.Init,void t.build()):void(this.hidden?this.show():this.hide())}show(){const t=this.ref;if(!t||t.isDisabled())return;const e=t.container;e&&(this.refresh(),e.offsetHeight,e.removeAttribute(qt),e.classList.remove(Xt),this.hidden=!1)}hide(){const t=this.ref,e=t&&t.container;e&&(this.refresh(),e.offsetHeight,e.classList.add(Xt),e.setAttribute(qt,\"true\")),this.hidden=!0}refresh(){const t=this.ref;if(!t||!t.state)return;const e=t.container,i=(null==e?void 0:e.firstChild)||null;e&&i&&i.childNodes.length&&(e.style.maxHeight=`${i.getBoundingClientRect().height}px`)}attach(){const t=this,e=t.instance;e.state===rt.Init?e.on(\"Carousel.init\",t.onInit):t.onInit(),e.on(\"resize\",t.onResize),e.on(\"keydown\",t.onKeydown)}detach(){var t;const e=this,i=e.instance;i.off(\"Carousel.init\",e.onInit),i.off(\"resize\",e.onResize),i.off(\"keydown\",e.onKeydown),null===(t=i.carousel)||void 0===t||t.detachPlugins([\"Thumbs\"]),e.ref=null}}Object.defineProperty(Yt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:Wt});const Vt={panLeft:{icon:'<svg><path d=\"M5 12h14M5 12l6 6M5 12l6-6\"/></svg>',change:{panX:-100}},panRight:{icon:'<svg><path d=\"M5 12h14M13 18l6-6M13 6l6 6\"/></svg>',change:{panX:100}},panUp:{icon:'<svg><path d=\"M12 5v14M18 11l-6-6M6 11l6-6\"/></svg>',change:{panY:-100}},panDown:{icon:'<svg><path d=\"M12 5v14M18 13l-6 6M6 13l6 6\"/></svg>',change:{panY:100}},zoomIn:{icon:'<svg><circle cx=\"11\" cy=\"11\" r=\"7.5\"/><path d=\"m21 21-4.35-4.35M11 8v6M8 11h6\"/></svg>',action:\"zoomIn\"},zoomOut:{icon:'<svg><circle cx=\"11\" cy=\"11\" r=\"7.5\"/><path d=\"m21 21-4.35-4.35M8 11h6\"/></svg>',action:\"zoomOut\"},toggle1to1:{icon:'<svg><path d=\"M3.51 3.07c5.74.02 11.48-.02 17.22.02 1.37.1 2.34 1.64 2.18 3.13 0 4.08.02 8.16 0 12.23-.1 1.54-1.47 2.64-2.79 2.46-5.61-.01-11.24.02-16.86-.01-1.36-.12-2.33-1.65-2.17-3.14 0-4.07-.02-8.16 0-12.23.1-1.36 1.22-2.48 2.42-2.46Z\"/><path d=\"M5.65 8.54h1.49v6.92m8.94-6.92h1.49v6.92M11.5 9.4v.02m0 5.18v0\"/></svg>',action:\"toggleZoom\"},toggleZoom:{icon:'<svg><g><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line></g><circle cx=\"11\" cy=\"11\" r=\"7.5\"/><path d=\"m21 21-4.35-4.35M8 11h6\"/></svg>',action:\"toggleZoom\"},iterateZoom:{icon:'<svg><g><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line></g><circle cx=\"11\" cy=\"11\" r=\"7.5\"/><path d=\"m21 21-4.35-4.35M8 11h6\"/></svg>',action:\"iterateZoom\"},rotateCCW:{icon:'<svg><path d=\"M15 4.55a8 8 0 0 0-6 14.9M9 15v5H4M18.37 7.16v.01M13 19.94v.01M16.84 18.37v.01M19.37 15.1v.01M19.94 11v.01\"/></svg>',action:\"rotateCCW\"},rotateCW:{icon:'<svg><path d=\"M9 4.55a8 8 0 0 1 6 14.9M15 15v5h5M5.63 7.16v.01M4.06 11v.01M4.63 15.1v.01M7.16 18.37v.01M11 19.94v.01\"/></svg>',action:\"rotateCW\"},flipX:{icon:'<svg style=\"stroke-width: 1.3\"><path d=\"M12 3v18M16 7v10h5L16 7M8 7v10H3L8 7\"/></svg>',action:\"flipX\"},flipY:{icon:'<svg style=\"stroke-width: 1.3\"><path d=\"M3 12h18M7 16h10L7 21v-5M7 8h10L7 3v5\"/></svg>',action:\"flipY\"},fitX:{icon:'<svg><path d=\"M4 12V6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v6M10 18H3M21 18h-7M6 15l-3 3 3 3M18 15l3 3-3 3\"/></svg>',action:\"fitX\"},fitY:{icon:'<svg><path d=\"M12 20H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h6M18 14v7M18 3v7M15 18l3 3 3-3M15 6l3-3 3 3\"/></svg>',action:\"fitY\"},reset:{icon:'<svg><path d=\"M20 11A8.1 8.1 0 0 0 4.5 9M4 5v4h4M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4\"/></svg>',action:\"reset\"},toggleFS:{icon:'<svg><g><path d=\"M14.5 9.5 21 3m0 0h-6m6 0v6M3 21l6.5-6.5M3 21v-6m0 6h6\"/></g><g><path d=\"m14 10 7-7m-7 7h6m-6 0V4M3 21l7-7m0 0v6m0-6H4\"/></g></svg>',action:\"toggleFS\"}};var Zt;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Disabled=2]=\"Disabled\"}(Zt||(Zt={}));const Ut={absolute:\"auto\",display:{left:[\"infobar\"],middle:[],right:[\"iterateZoom\",\"slideshow\",\"fullscreen\",\"thumbs\",\"close\"]},enabled:\"auto\",items:{infobar:{tpl:'<div class=\"fancybox__infobar\" tabindex=\"-1\"><span data-fancybox-current-index></span>/<span data-fancybox-count></span></div>'},download:{tpl:'<a class=\"f-button\" title=\"{{DOWNLOAD}}\" data-fancybox-download href=\"javasript:;\"><svg><path d=\"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2M7 11l5 5 5-5M12 4v12\"/></svg></a>'},prev:{tpl:'<button class=\"f-button\" title=\"{{PREV}}\" data-fancybox-prev><svg><path d=\"m15 6-6 6 6 6\"/></svg></button>'},next:{tpl:'<button class=\"f-button\" title=\"{{NEXT}}\" data-fancybox-next><svg><path d=\"m9 6 6 6-6 6\"/></svg></button>'},slideshow:{tpl:'<button class=\"f-button\" title=\"{{TOGGLE_SLIDESHOW}}\" data-fancybox-toggle-slideshow><svg><g><path d=\"M8 4v16l13 -8z\"></path></g><g><path d=\"M8 4v15M17 4v15\"/></g></svg></button>'},fullscreen:{tpl:'<button class=\"f-button\" title=\"{{TOGGLE_FULLSCREEN}}\" data-fancybox-toggle-fullscreen><svg><g><path d=\"M4 8V6a2 2 0 0 1 2-2h2M4 16v2a2 2 0 0 0 2 2h2M16 4h2a2 2 0 0 1 2 2v2M16 20h2a2 2 0 0 0 2-2v-2\"/></g><g><path d=\"M15 19v-2a2 2 0 0 1 2-2h2M15 5v2a2 2 0 0 0 2 2h2M5 15h2a2 2 0 0 1 2 2v2M5 9h2a2 2 0 0 0 2-2V5\"/></g></svg></button>'},thumbs:{tpl:'<button class=\"f-button\" title=\"{{TOGGLE_THUMBS}}\" data-fancybox-toggle-thumbs><svg><circle cx=\"5.5\" cy=\"5.5\" r=\"1\"/><circle cx=\"12\" cy=\"5.5\" r=\"1\"/><circle cx=\"18.5\" cy=\"5.5\" r=\"1\"/><circle cx=\"5.5\" cy=\"12\" r=\"1\"/><circle cx=\"12\" cy=\"12\" r=\"1\"/><circle cx=\"18.5\" cy=\"12\" r=\"1\"/><circle cx=\"5.5\" cy=\"18.5\" r=\"1\"/><circle cx=\"12\" cy=\"18.5\" r=\"1\"/><circle cx=\"18.5\" cy=\"18.5\" r=\"1\"/></svg></button>'},close:{tpl:'<button class=\"f-button\" title=\"{{CLOSE}}\" data-fancybox-close><svg><path d=\"m19.5 4.5-15 15M4.5 4.5l15 15\"/></svg></button>'}},parentEl:null},Gt={tabindex:\"-1\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",xmlns:\"http://www.w3.org/2000/svg\"},Kt=\"has-toolbar\",Jt=\"fancybox__toolbar\";class Qt extends _{constructor(){super(...arguments),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:Zt.Init}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:null})}onReady(t){var e;if(!t.carousel)return;let i=this.option(\"display\"),n=this.option(\"absolute\"),s=this.option(\"enabled\");if(\"auto\"===s){const t=this.instance.carousel;let e=0;if(t)for(const i of t.slides)(i.panzoom||\"image\"===i.type)&&e++;e||(s=!1)}s||(i=void 0);let o=0;const a={left:[],middle:[],right:[]};if(i)for(const t of[\"left\",\"middle\",\"right\"])for(const n of i[t]){const i=this.createEl(n);i&&(null===(e=a[t])||void 0===e||e.push(i),o++)}let r=null;if(o&&(r=this.createContainer()),r){for(const[t,e]of Object.entries(a)){const i=document.createElement(\"div\");P(i,Jt+\"__column is-\"+t);for(const t of e)i.appendChild(t);\"auto\"!==n||\"middle\"!==t||e.length||(n=!0),r.appendChild(i)}!0===n&&P(r,\"is-absolute\"),this.state=Zt.Ready,this.onRefresh()}else this.state=Zt.Disabled}onClick(t){var e,i;const n=this.instance,s=n.getSlide(),o=null==s?void 0:s.panzoom,a=t.target,r=a&&E(a)?a.dataset:null;if(!r)return;if(void 0!==r.fancyboxToggleThumbs)return t.preventDefault(),t.stopPropagation(),void(null===(e=n.plugins.Thumbs)||void 0===e||e.toggle());if(void 0!==r.fancyboxToggleFullscreen)return t.preventDefault(),t.stopPropagation(),void this.instance.toggleFullscreen();if(void 0!==r.fancyboxToggleSlideshow){t.preventDefault(),t.stopPropagation();const e=null===(i=n.carousel)||void 0===i?void 0:i.plugins.Autoplay;let s=e.isActive;return o&&\"mousemove\"===o.panMode&&!s&&o.reset(),void(s?e.stop():e.start())}const l=r.panzoomAction,c=r.panzoomChange;if((c||l)&&(t.preventDefault(),t.stopPropagation()),c){let t={};try{t=JSON.parse(c)}catch(t){}o&&o.applyChange(t)}else l&&o&&o[l]&&o[l]()}onChange(){this.onRefresh()}onRefresh(){if(this.instance.isClosing())return;const t=this.container;if(!t)return;const e=this.instance.getSlide();if(!e||e.state!==lt.Ready)return;const i=e&&!e.error&&e.panzoom;for(const e of t.querySelectorAll(\"[data-panzoom-action]\"))i?(e.removeAttribute(\"disabled\"),e.removeAttribute(\"tabindex\")):(e.setAttribute(\"disabled\",\"\"),e.setAttribute(\"tabindex\",\"-1\"));let n=i&&i.canZoomIn(),s=i&&i.canZoomOut();for(const e of t.querySelectorAll('[data-panzoom-action=\"zoomIn\"]'))n?(e.removeAttribute(\"disabled\"),e.removeAttribute(\"tabindex\")):(e.setAttribute(\"disabled\",\"\"),e.setAttribute(\"tabindex\",\"-1\"));for(const e of t.querySelectorAll('[data-panzoom-action=\"zoomOut\"]'))s?(e.removeAttribute(\"disabled\"),e.removeAttribute(\"tabindex\")):(e.setAttribute(\"disabled\",\"\"),e.setAttribute(\"tabindex\",\"-1\"));for(const e of t.querySelectorAll('[data-panzoom-action=\"toggleZoom\"],[data-panzoom-action=\"iterateZoom\"]')){s||n?(e.removeAttribute(\"disabled\"),e.removeAttribute(\"tabindex\")):(e.setAttribute(\"disabled\",\"\"),e.setAttribute(\"tabindex\",\"-1\"));const t=e.querySelector(\"g\");t&&(t.style.display=n?\"\":\"none\")}}onDone(t,e){var i;null===(i=e.panzoom)||void 0===i||i.on(\"afterTransform\",(()=>{this.instance.isCurrentSlide(e)&&this.onRefresh()})),this.instance.isCurrentSlide(e)&&this.onRefresh()}createContainer(){const t=this.instance.container;if(!t)return null;const e=this.option(\"parentEl\")||t;let i=e.querySelector(\".\"+Jt);return i||(i=document.createElement(\"div\"),P(i,Jt),e.prepend(i)),i.addEventListener(\"click\",this.onClick,{passive:!1,capture:!0}),t&&P(t,Kt),this.container=i,i}createEl(t){const e=this.instance,i=e.carousel;if(!i)return null;if(\"toggleFS\"===t)return null;if(\"fullscreen\"===t&&!ot())return null;let s=null;const o=i.slides.length||0;let a=0,r=0;for(const t of i.slides)(t.panzoom||\"image\"===t.type)&&a++,(\"image\"===t.type||t.downloadSrc)&&r++;if(o<2&&[\"infobar\",\"prev\",\"next\"].includes(t))return s;if(void 0!==Vt[t]&&!a)return null;if(\"download\"===t&&!r)return null;if(\"thumbs\"===t){const t=e.plugins.Thumbs;if(!t||!t.isEnabled)return null}if(\"slideshow\"===t){if(!i.plugins.Autoplay||o<2)return null}if(void 0!==Vt[t]){const e=Vt[t];s=document.createElement(\"button\"),s.setAttribute(\"title\",this.instance.localize(`{{${t.toUpperCase()}}}`)),P(s,\"f-button\"),e.action&&(s.dataset.panzoomAction=e.action),e.change&&(s.dataset.panzoomChange=JSON.stringify(e.change)),s.appendChild(n(this.instance.localize(e.icon)))}else{const e=(this.option(\"items\")||[])[t];e&&(s=n(this.instance.localize(e.tpl)),\"function\"==typeof e.click&&s.addEventListener(\"click\",(t=>{t.preventDefault(),t.stopPropagation(),\"function\"==typeof e.click&&e.click.call(this,this,t)})))}const l=null==s?void 0:s.querySelector(\"svg\");if(l)for(const[t,e]of Object.entries(Gt))l.getAttribute(t)||l.setAttribute(t,String(e));return s}removeContainer(){const t=this.container;t&&t.remove(),this.container=null,this.state=Zt.Disabled;const e=this.instance.container;e&&S(e,Kt)}attach(){const t=this,e=t.instance;e.on(\"Carousel.initSlides\",t.onReady),e.on(\"done\",t.onDone),e.on([\"reveal\",\"Carousel.change\"],t.onChange),t.onReady(t.instance)}detach(){const t=this,e=t.instance;e.off(\"Carousel.initSlides\",t.onReady),e.off(\"done\",t.onDone),e.off([\"reveal\",\"Carousel.change\"],t.onChange),t.removeContainer()}}Object.defineProperty(Qt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:Ut});const te={Hash:class extends _{onReady(){ht=!1}onChange(t){ut&&clearTimeout(ut);const{hash:e}=pt(),{hash:i}=ft(),n=t.isOpeningSlide(t.getSlide());n&&(ct=i===e?\"\":i),e&&e!==i&&(ut=setTimeout((()=>{try{if(t.state===rt.Ready){let t=\"replaceState\";n&&!dt&&(t=\"pushState\",dt=!0),window.history[t]({},document.title,window.location.pathname+window.location.search+e)}}catch(t){}}),300))}onClose(t){if(ut&&clearTimeout(ut),!ht&&dt)return dt=!1,ht=!1,void window.history.back();if(!ht)try{window.history.replaceState({},document.title,window.location.pathname+window.location.search+(ct||\"\"))}catch(t){}}attach(){const t=this.instance;t.on(\"ready\",this.onReady),t.on([\"Carousel.ready\",\"Carousel.change\"],this.onChange),t.on(\"close\",this.onClose)}detach(){const t=this.instance;t.off(\"ready\",this.onReady),t.off([\"Carousel.ready\",\"Carousel.change\"],this.onChange),t.off(\"close\",this.onClose)}static parseURL(){return ft()}static startFromUrl(){gt()}static destroy(){window.removeEventListener(\"hashchange\",vt,!1)}},Html:Lt,Images:wt,Slideshow:Dt,Thumbs:Yt,Toolbar:Qt},ee=\"with-fancybox\",ie=\"hide-scrollbar\",ne=\"--fancybox-scrollbar-compensate\",se=\"--fancybox-body-margin\",oe=\"aria-hidden\",ae=\"is-using-tab\",re=\"is-animated\",le=\"is-compact\",ce=\"is-loading\",he=\"is-opening\",de=\"has-caption\",ue=\"disabled\",pe=\"tabindex\",fe=\"download\",ge=\"href\",me=\"src\",ve=t=>\"string\"==typeof t,be=function(){var t=window.getSelection();return!!t&&\"Range\"===t.type};let ye,we=null,xe=null,Ee=0,Se=0,Pe=0,Ce=0;const Te=new Map;let Me=0;class Oe extends g{get isIdle(){return this.idle}get isCompact(){return this.option(\"compact\")}constructor(t=[],e={},i={}){super(e),Object.defineProperty(this,\"userSlides\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"userPlugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,\"idle\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"idleTimer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"clickTimer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"pwt\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"ignoreFocusChange\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"startedFs\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:rt.Init}),Object.defineProperty(this,\"id\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"caption\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"footer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"carousel\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"lastFocus\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"prevMouseMoveEvent\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),ye||(ye=ot()),this.id=e.id||++Me,Te.set(this.id,this),this.userSlides=t,this.userPlugins=i,queueMicrotask((()=>{this.init()}))}init(){if(this.state===rt.Destroy)return;this.state=rt.Init,this.attachPlugins(Object.assign(Object.assign({},Oe.Plugins),this.userPlugins)),this.emit(\"init\"),this.emit(\"attachPlugins\"),!0===this.option(\"hideScrollbar\")&&(()=>{if(!et)return;const t=document,e=t.body,i=t.documentElement;if(e.classList.contains(ie))return;let n=window.innerWidth-i.getBoundingClientRect().width;const s=parseFloat(window.getComputedStyle(e).marginRight);n<0&&(n=0),i.style.setProperty(ne,`${n}px`),s&&e.style.setProperty(se,`${s}px`),e.classList.add(ie)})(),this.initLayout(),this.scale();const t=()=>{this.initCarousel(this.userSlides),this.state=rt.Ready,this.attachEvents(),this.emit(\"ready\"),setTimeout((()=>{this.container&&this.container.setAttribute(oe,\"false\")}),16)};this.option(\"Fullscreen.autoStart\")&&ye&&!ye.isFullscreen()?ye.request().then((()=>{this.startedFs=!0,t()})).catch((()=>t())):t()}initLayout(){var t,e;const i=this.option(\"parentEl\")||document.body,s=n(this.localize(this.option(\"tpl.main\")||\"\"));if(s){if(s.setAttribute(\"id\",`fancybox-${this.id}`),s.setAttribute(\"aria-label\",this.localize(\"{{MODAL}}\")),s.classList.toggle(le,this.isCompact),P(s,this.option(\"mainClass\")||\"\"),P(s,he),this.container=s,this.footer=s.querySelector(\".fancybox__footer\"),i.appendChild(s),P(document.documentElement,ee),we&&xe||(we=document.createElement(\"span\"),P(we,\"fancybox-focus-guard\"),we.setAttribute(pe,\"0\"),we.setAttribute(oe,\"true\"),we.setAttribute(\"aria-label\",\"Focus guard\"),xe=we.cloneNode(),null===(t=s.parentElement)||void 0===t||t.insertBefore(we,s),null===(e=s.parentElement)||void 0===e||e.append(xe)),s.addEventListener(\"mousedown\",(t=>{Ee=t.pageX,Se=t.pageY,S(s,ae)})),this.option(\"closeExisting\"))for(const t of Te.values())t.id!==this.id&&t.close();else this.option(\"animated\")&&(P(s,re),setTimeout((()=>{this.isClosing()||S(s,re)}),350));this.emit(\"initLayout\")}}initCarousel(t){const i=this.container;if(!i)return;const n=i.querySelector(\".fancybox__carousel\");if(!n)return;const s=this.carousel=new Q(n,u({},{slides:t,transition:\"fade\",Panzoom:{lockAxis:this.option(\"dragToClose\")?\"xy\":\"x\",infinite:!!this.option(\"dragToClose\")&&\"y\"},Dots:!1,Navigation:{classes:{container:\"fancybox__nav\",button:\"f-button\",isNext:\"is-next\",isPrev:\"is-prev\"}},initialPage:this.option(\"startIndex\"),l10n:this.option(\"l10n\")},this.option(\"Carousel\")||{}));s.on(\"*\",((t,e,...i)=>{this.emit(`Carousel.${e}`,t,...i)})),s.on([\"ready\",\"change\"],(()=>{this.manageCaption()})),this.on(\"Carousel.removeSlide\",((t,e,i)=>{this.clearContent(i),i.state=void 0})),s.on(\"Panzoom.touchStart\",(()=>{var t,e;this.isCompact||this.endIdle(),(null===(t=document.activeElement)||void 0===t?void 0:t.closest(\".f-thumbs\"))&&(null===(e=this.container)||void 0===e||e.focus())})),s.on(\"settle\",(()=>{this.idleTimer||this.isCompact||!this.option(\"idle\")||this.setIdle(),this.option(\"autoFocus\")&&!this.isClosing&&this.checkFocus()})),this.option(\"dragToClose\")&&(s.on(\"Panzoom.afterTransform\",((t,i)=>{const n=this.getSlide();if(n&&e(n.el))return;const s=this.container;if(s){const t=Math.abs(i.current.f),e=t<1?\"\":Math.max(.5,Math.min(1,1-t/i.contentRect.fitHeight*1.5));s.style.setProperty(\"--fancybox-ts\",e?\"0s\":\"\"),s.style.setProperty(\"--fancybox-opacity\",e+\"\")}})),s.on(\"Panzoom.touchEnd\",((t,i,n)=>{var s;const o=this.getSlide();if(o&&e(o.el))return;if(i.isMobile&&document.activeElement&&-1!==[\"TEXTAREA\",\"INPUT\"].indexOf(null===(s=document.activeElement)||void 0===s?void 0:s.nodeName))return;const a=Math.abs(i.dragOffset.y);\"y\"===i.lockedAxis&&(a>=200||a>=50&&i.dragOffset.time<300)&&(n&&n.cancelable&&n.preventDefault(),this.close(n,\"f-throwOut\"+(i.current.f<0?\"Up\":\"Down\")))}))),s.on(\"change\",(t=>{var e;let i=null===(e=this.getSlide())||void 0===e?void 0:e.triggerEl;if(i){const e=new CustomEvent(\"slideTo\",{bubbles:!0,cancelable:!0,detail:t.page});i.dispatchEvent(e)}})),s.on([\"refresh\",\"change\"],(t=>{const e=this.container;if(!e)return;for(const i of e.querySelectorAll(\"[data-fancybox-current-index]\"))i.innerHTML=t.page+1;for(const i of e.querySelectorAll(\"[data-fancybox-count]\"))i.innerHTML=t.pages.length;if(!t.isInfinite){for(const i of e.querySelectorAll(\"[data-fancybox-next]\"))t.page<t.pages.length-1?(i.removeAttribute(ue),i.removeAttribute(pe)):(i.setAttribute(ue,\"\"),i.setAttribute(pe,\"-1\"));for(const i of e.querySelectorAll(\"[data-fancybox-prev]\"))t.page>0?(i.removeAttribute(ue),i.removeAttribute(pe)):(i.setAttribute(ue,\"\"),i.setAttribute(pe,\"-1\"))}const i=this.getSlide();if(!i)return;let n=i.downloadSrc||\"\";n||\"image\"!==i.type||i.error||!ve(i[me])||(n=i[me]);for(const t of e.querySelectorAll(\"[data-fancybox-download]\")){const e=i.downloadFilename;n?(t.removeAttribute(ue),t.removeAttribute(pe),t.setAttribute(ge,n),t.setAttribute(fe,e||n),t.setAttribute(\"target\",\"_blank\")):(t.setAttribute(ue,\"\"),t.setAttribute(pe,\"-1\"),t.removeAttribute(ge),t.removeAttribute(fe))}})),this.emit(\"initCarousel\")}attachEvents(){const t=this,e=t.container;if(!e)return;e.addEventListener(\"click\",t.onClick,{passive:!1,capture:!1}),e.addEventListener(\"wheel\",t.onWheel,{passive:!1,capture:!1}),document.addEventListener(\"keydown\",t.onKeydown,{passive:!1,capture:!0}),document.addEventListener(\"visibilitychange\",t.onVisibilityChange,!1),document.addEventListener(\"mousemove\",t.onMousemove),t.option(\"trapFocus\")&&document.addEventListener(\"focus\",t.onFocus,!0),window.addEventListener(\"resize\",t.onResize);const i=window.visualViewport;i&&(i.addEventListener(\"scroll\",t.onResize),i.addEventListener(\"resize\",t.onResize))}detachEvents(){const t=this,e=t.container;if(!e)return;document.removeEventListener(\"keydown\",t.onKeydown,{passive:!1,capture:!0}),e.removeEventListener(\"wheel\",t.onWheel,{passive:!1,capture:!1}),e.removeEventListener(\"click\",t.onClick,{passive:!1,capture:!1}),document.removeEventListener(\"mousemove\",t.onMousemove),window.removeEventListener(\"resize\",t.onResize);const i=window.visualViewport;i&&(i.removeEventListener(\"resize\",t.onResize),i.removeEventListener(\"scroll\",t.onResize)),document.removeEventListener(\"visibilitychange\",t.onVisibilityChange,!1),document.removeEventListener(\"focus\",t.onFocus,!0)}scale(){const t=this.container;if(!t)return;const e=window.visualViewport,i=Math.max(1,(null==e?void 0:e.scale)||1);let n=\"\",s=\"\",o=\"\";if(e&&i>1){let t=`${e.offsetLeft}px`,a=`${e.offsetTop}px`;n=e.width*i+\"px\",s=e.height*i+\"px\",o=`translate3d(${t}, ${a}, 0) scale(${1/i})`}t.style.transform=o,t.style.width=n,t.style.height=s}onClick(t){var e;const{container:i,isCompact:n}=this;if(!i||this.isClosing())return;!n&&this.option(\"idle\")&&this.resetIdle();const s=t.composedPath()[0];if(s.closest(\".fancybox-spinner\")||s.closest(\"[data-fancybox-close]\"))return t.preventDefault(),void this.close(t);if(s.closest(\"[data-fancybox-prev]\"))return t.preventDefault(),void this.prev();if(s.closest(\"[data-fancybox-next]\"))return t.preventDefault(),void this.next();if(\"click\"===t.type&&0===t.detail)return;if(Math.abs(t.pageX-Ee)>30||Math.abs(t.pageY-Se)>30)return;const o=document.activeElement;if(be()&&o&&i.contains(o))return;if(n&&\"image\"===(null===(e=this.getSlide())||void 0===e?void 0:e.type))return void(this.clickTimer?(clearTimeout(this.clickTimer),this.clickTimer=null):this.clickTimer=setTimeout((()=>{this.toggleIdle(),this.clickTimer=null}),350));if(this.emit(\"click\",t),t.defaultPrevented)return;let a=!1;if(s.closest(\".fancybox__content\")){if(o){if(o.closest(\"[contenteditable]\"))return;s.matches(nt)||o.blur()}if(be())return;a=this.option(\"contentClick\")}else s.closest(\".fancybox__carousel\")&&!s.matches(nt)&&(a=this.option(\"backdropClick\"));\"close\"===a?(t.preventDefault(),this.close(t)):\"next\"===a?(t.preventDefault(),this.next()):\"prev\"===a&&(t.preventDefault(),this.prev())}onWheel(t){const e=t.target;let n=this.option(\"wheel\",t);e.closest(\".fancybox__thumbs\")&&(n=\"slide\");const s=\"slide\"===n,o=[-t.deltaX||0,-t.deltaY||0,-t.detail||0].reduce((function(t,e){return Math.abs(e)>Math.abs(t)?e:t})),a=Math.max(-1,Math.min(1,o)),r=Date.now();this.pwt&&r-this.pwt<300?s&&t.preventDefault():(this.pwt=r,this.emit(\"wheel\",t,a),t.defaultPrevented||(\"close\"===n?(t.preventDefault(),this.close(t)):\"slide\"===n&&(i(e)||(t.preventDefault(),this[a>0?\"prev\":\"next\"]()))))}onScroll(){window.scrollTo(Pe,Ce)}onKeydown(t){if(!this.isTopmost())return;this.isCompact||!this.option(\"idle\")||this.isClosing()||this.resetIdle();const e=t.key,i=this.option(\"keyboard\");if(!i)return;const n=t.composedPath()[0],s=document.activeElement&&document.activeElement.classList,o=s&&s.contains(\"f-button\")||n.dataset.carouselPage||n.dataset.carouselIndex;if(\"Escape\"!==e&&!o&&E(n)){if(n.isContentEditable||-1!==[\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\"].indexOf(n.nodeName))return}if(\"Tab\"===t.key?P(this.container,ae):S(this.container,ae),t.ctrlKey||t.altKey||t.shiftKey)return;this.emit(\"keydown\",e,t);const a=i[e];a&&\"function\"==typeof this[a]&&(t.preventDefault(),this[a]())}onResize(){const t=this.container;if(!t)return;const e=this.isCompact;t.classList.toggle(le,e),this.manageCaption(this.getSlide()),this.isCompact?this.clearIdle():this.endIdle(),this.scale(),this.emit(\"resize\")}onFocus(t){this.isTopmost()&&this.checkFocus(t)}onMousemove(t){this.prevMouseMoveEvent=t,!this.isCompact&&this.option(\"idle\")&&this.resetIdle()}onVisibilityChange(){\"visible\"===document.visibilityState?this.checkFocus():this.endIdle()}manageCloseBtn(t){const e=this.optionFor(t,\"closeButton\")||!1;if(\"auto\"===e){const t=this.plugins.Toolbar;if(t&&t.state===Zt.Ready)return}if(!e)return;if(!t.contentEl||t.closeBtnEl)return;const i=this.option(\"tpl.closeButton\");if(i){const e=n(this.localize(i));t.closeBtnEl=t.contentEl.appendChild(e),t.el&&P(t.el,\"has-close-btn\")}}manageCaption(t=void 0){var e,i;const n=\"fancybox__caption\",s=this.container;if(!s)return;S(s,de);const o=this.isCompact||this.option(\"commonCaption\"),a=!o;if(this.caption&&this.stop(this.caption),a&&this.caption&&(this.caption.remove(),this.caption=null),o&&!this.caption)for(const t of(null===(e=this.carousel)||void 0===e?void 0:e.slides)||[])t.captionEl&&(t.captionEl.remove(),t.captionEl=void 0,S(t.el,de),null===(i=t.el)||void 0===i||i.removeAttribute(\"aria-labelledby\"));if(t||(t=this.getSlide()),!t||o&&!this.isCurrentSlide(t))return;const r=t.el;let l=this.optionFor(t,\"caption\",\"\");if(!l)return void(o&&this.caption&&this.animate(this.caption,\"f-fadeOut\",(()=>{this.caption&&(this.caption.innerHTML=\"\")})));let c=null;if(a){if(c=t.captionEl||null,r&&!c){const e=n+`_${this.id}_${t.index}`;c=document.createElement(\"div\"),P(c,n),c.setAttribute(\"id\",e),t.captionEl=r.appendChild(c),P(r,de),r.setAttribute(\"aria-labelledby\",e)}}else{if(c=this.caption,c||(c=s.querySelector(\".\"+n)),!c){c=document.createElement(\"div\"),c.dataset.fancyboxCaption=\"\",P(c,n);(this.footer||s).prepend(c)}P(s,de),this.caption=c}c&&(c.innerHTML=\"\",ve(l)||\"number\"==typeof l?c.innerHTML=l+\"\":l instanceof HTMLElement&&c.appendChild(l))}checkFocus(t){this.focus(t)}focus(t){var e;if(this.ignoreFocusChange)return;const i=document.activeElement||null,n=(null==t?void 0:t.target)||null,s=this.container,o=null===(e=this.carousel)||void 0===e?void 0:e.viewport;if(!s||!o)return;if(!t&&i&&s.contains(i))return;const a=this.getSlide(),r=a&&a.state===lt.Ready?a.el:null;if(!r||r.contains(i)||s===i)return;t&&t.cancelable&&t.preventDefault(),this.ignoreFocusChange=!0;const l=Array.from(s.querySelectorAll(nt));let c=[],h=null;for(let t of l){const e=!t.offsetParent||!!t.closest('[aria-hidden=\"true\"]'),i=r&&r.contains(t),n=!o.contains(t);if(t===s||(i||n)&&!e){c.push(t);const e=t.dataset.origTabindex;void 0!==e&&e&&(t.tabIndex=parseFloat(e)),t.removeAttribute(\"data-orig-tabindex\"),!t.hasAttribute(\"autoFocus\")&&h||(h=t)}else{const e=void 0===t.dataset.origTabindex?t.getAttribute(\"tabindex\")||\"\":t.dataset.origTabindex;e&&(t.dataset.origTabindex=e),t.tabIndex=-1}}let d=null;t?(!n||c.indexOf(n)<0)&&(d=h||s,c.length&&(i===xe?d=c[0]:this.lastFocus!==s&&i!==we||(d=c[c.length-1]))):d=a&&\"image\"===a.type?s:h||s,d&&st(d),this.lastFocus=document.activeElement,this.ignoreFocusChange=!1}next(){const t=this.carousel;t&&t.pages.length>1&&t.slideNext()}prev(){const t=this.carousel;t&&t.pages.length>1&&t.slidePrev()}jumpTo(...t){this.carousel&&this.carousel.slideTo(...t)}isTopmost(){var t;return(null===(t=Oe.getInstance())||void 0===t?void 0:t.id)==this.id}animate(t=null,e=\"\",i){if(!t||!e)return void(i&&i());this.stop(t);const n=s=>{s.target===t&&t.dataset.animationName&&(t.removeEventListener(\"animationend\",n),delete t.dataset.animationName,i&&i(),S(t,e))};t.dataset.animationName=e,t.addEventListener(\"animationend\",n),P(t,e)}stop(t){t&&t.dispatchEvent(new CustomEvent(\"animationend\",{bubbles:!1,cancelable:!0,currentTarget:t}))}setContent(t,e=\"\",i=!0){if(this.isClosing())return;const s=t.el;if(!s)return;let o=null;if(E(e)?o=e:(o=n(e+\"\"),E(o)||(o=document.createElement(\"div\"),o.innerHTML=e+\"\")),[\"img\",\"picture\",\"iframe\",\"video\",\"audio\"].includes(o.nodeName.toLowerCase())){const t=document.createElement(\"div\");t.appendChild(o),o=t}E(o)&&t.filter&&!t.error&&(o=o.querySelector(t.filter)),o&&E(o)?(P(o,\"fancybox__content\"),t.id&&o.setAttribute(\"id\",t.id),s.classList.add(`has-${t.error?\"error\":t.type||\"unknown\"}`),s.prepend(o),\"none\"===o.style.display&&(o.style.display=\"\"),\"none\"===getComputedStyle(o).getPropertyValue(\"display\")&&(o.style.display=t.display||this.option(\"defaultDisplay\")||\"flex\"),t.contentEl=o,i&&this.revealContent(t),this.manageCloseBtn(t),this.manageCaption(t)):this.setError(t,\"{{ELEMENT_NOT_FOUND}}\")}revealContent(t,e){const i=t.el,n=t.contentEl;i&&n&&(this.emit(\"reveal\",t),this.hideLoading(t),t.state=lt.Opening,(e=this.isOpeningSlide(t)?void 0===e?this.optionFor(t,\"showClass\"):e:\"f-fadeIn\")?this.animate(n,e,(()=>{this.done(t)})):this.done(t))}done(t){this.isClosing()||(t.state=lt.Ready,this.emit(\"done\",t),P(t.el,\"is-done\"),this.isCurrentSlide(t)&&this.option(\"autoFocus\")&&queueMicrotask((()=>{var e;null===(e=t.panzoom)||void 0===e||e.updateControls(),this.option(\"autoFocus\")&&this.focus()})),this.isOpeningSlide(t)&&(S(this.container,he),!this.isCompact&&this.option(\"idle\")&&this.setIdle()))}isCurrentSlide(t){const e=this.getSlide();return!(!t||!e)&&e.index===t.index}isOpeningSlide(t){var e,i;return null===(null===(e=this.carousel)||void 0===e?void 0:e.prevPage)&&t&&t.index===(null===(i=this.getSlide())||void 0===i?void 0:i.index)}showLoading(t){t.state=lt.Loading;const e=t.el;if(!e)return;P(e,ce),this.emit(\"loading\",t),t.spinnerEl||setTimeout((()=>{if(!this.isClosing()&&!t.spinnerEl&&t.state===lt.Loading){let i=n(x);P(i,\"fancybox-spinner\"),t.spinnerEl=i,e.prepend(i),this.animate(i,\"f-fadeIn\")}}),250)}hideLoading(t){const e=t.el;if(!e)return;const i=t.spinnerEl;this.isClosing()?null==i||i.remove():(S(e,ce),i&&this.animate(i,\"f-fadeOut\",(()=>{i.remove()})),t.state===lt.Loading&&(this.emit(\"loaded\",t),t.state=lt.Ready))}setError(t,e){if(this.isClosing())return;const i=new Event(\"error\",{bubbles:!0,cancelable:!0});if(this.emit(\"error\",i,t),i.defaultPrevented)return;t.error=e,this.hideLoading(t),this.clearContent(t);const n=document.createElement(\"div\");n.classList.add(\"fancybox-error\"),n.innerHTML=this.localize(e||\"<p>{{ERROR}}</p>\"),this.setContent(t,n)}clearContent(t){if(void 0===t.state)return;this.emit(\"clearContent\",t),t.contentEl&&(t.contentEl.remove(),t.contentEl=void 0);const e=t.el;e&&(S(e,\"has-error\"),S(e,\"has-unknown\"),S(e,`has-${t.type||\"unknown\"}`)),t.closeBtnEl&&t.closeBtnEl.remove(),t.closeBtnEl=void 0,t.captionEl&&t.captionEl.remove(),t.captionEl=void 0,t.spinnerEl&&t.spinnerEl.remove(),t.spinnerEl=void 0}getSlide(){var t;const e=this.carousel;return(null===(t=null==e?void 0:e.pages[null==e?void 0:e.page])||void 0===t?void 0:t.slides[0])||void 0}close(t,e){if(this.isClosing())return;const i=new Event(\"shouldClose\",{bubbles:!0,cancelable:!0});if(this.emit(\"shouldClose\",i,t),i.defaultPrevented)return;t&&t.cancelable&&(t.preventDefault(),t.stopPropagation());const n=()=>{this.proceedClose(t,e)};this.startedFs&&ye&&ye.isFullscreen()?Promise.resolve(ye.exit()).then((()=>n())):n()}clearIdle(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=null}setIdle(t=!1){const e=()=>{this.clearIdle(),this.idle=!0,P(this.container,\"is-idle\"),this.emit(\"setIdle\")};if(this.clearIdle(),!this.isClosing())if(t)e();else{const t=this.option(\"idle\");t&&(this.idleTimer=setTimeout(e,t))}}endIdle(){this.clearIdle(),this.idle&&!this.isClosing()&&(this.idle=!1,S(this.container,\"is-idle\"),this.emit(\"endIdle\"))}resetIdle(){this.endIdle(),this.setIdle()}toggleIdle(){this.idle?this.endIdle():this.setIdle(!0)}toggleFullscreen(){ye&&(ye.isFullscreen()?ye.exit():ye.request().then((()=>{this.startedFs=!0})))}isClosing(){return[rt.Closing,rt.CustomClosing,rt.Destroy].includes(this.state)}proceedClose(t,e){var i,n;this.state=rt.Closing,this.clearIdle(),this.detachEvents();const s=this.container,o=this.carousel,a=this.getSlide(),r=a&&this.option(\"placeFocusBack\")?a.triggerEl||this.option(\"triggerEl\"):null;if(r&&(tt(r)?st(r):r.focus()),s&&(S(s,he),P(s,\"is-closing\"),s.setAttribute(oe,\"true\"),this.option(\"animated\")&&P(s,re),s.style.pointerEvents=\"none\"),o){o.clearTransitions(),null===(i=o.panzoom)||void 0===i||i.destroy(),null===(n=o.plugins.Navigation)||void 0===n||n.detach();for(const t of o.slides){t.state=lt.Closing,this.hideLoading(t);const e=t.contentEl;e&&this.stop(e);const i=null==t?void 0:t.panzoom;i&&(i.stop(),i.detachEvents(),i.detachObserver()),this.isCurrentSlide(t)||o.emit(\"removeSlide\",t)}}Pe=window.scrollX,Ce=window.scrollY,window.addEventListener(\"scroll\",this.onScroll),this.emit(\"close\",t),this.state!==rt.CustomClosing?(void 0===e&&a&&(e=this.optionFor(a,\"hideClass\")),e&&a?(this.animate(a.contentEl,e,(()=>{o&&o.emit(\"removeSlide\",a)})),setTimeout((()=>{this.destroy()}),500)):this.destroy()):setTimeout((()=>{this.destroy()}),500)}destroy(){var t;if(this.state===rt.Destroy)return;window.removeEventListener(\"scroll\",this.onScroll),this.state=rt.Destroy,null===(t=this.carousel)||void 0===t||t.destroy();const e=this.container;e&&e.remove(),Te.delete(this.id);const i=Oe.getInstance();i?i.focus():(we&&(we.remove(),we=null),xe&&(xe.remove(),xe=null),S(document.documentElement,ee),(()=>{if(!et)return;const t=document,e=t.body;e.classList.remove(ie),e.style.setProperty(se,\"\"),t.documentElement.style.setProperty(ne,\"\")})(),this.emit(\"destroy\"))}static bind(t,e,i){if(!et)return;let n,s=\"\",o={};if(void 0===t?n=document.body:ve(t)?(n=document.body,s=t,\"object\"==typeof e&&(o=e||{})):(n=t,ve(e)&&(s=e),\"object\"==typeof i&&(o=i||{})),!n||!E(n))return;s=s||\"[data-fancybox]\";const a=Oe.openers.get(n)||new Map;a.set(s,o),Oe.openers.set(n,a),1===a.size&&n.addEventListener(\"click\",Oe.fromEvent)}static unbind(t,e){let i,n=\"\";if(ve(t)?(i=document.body,n=t):(i=t,ve(e)&&(n=e)),!i)return;const s=Oe.openers.get(i);s&&n&&s.delete(n),n&&s||(Oe.openers.delete(i),i.removeEventListener(\"click\",Oe.fromEvent))}static destroy(){let t;for(;t=Oe.getInstance();)t.destroy();for(const t of Oe.openers.keys())t.removeEventListener(\"click\",Oe.fromEvent);Oe.openers=new Map}static fromEvent(t){if(t.defaultPrevented)return;if(t.button&&0!==t.button)return;if(t.ctrlKey||t.metaKey||t.shiftKey)return;let e=t.composedPath()[0];const i=e.closest(\"[data-fancybox-trigger]\");if(i){const t=i.dataset.fancyboxTrigger||\"\",n=document.querySelectorAll(`[data-fancybox=\"${t}\"]`),s=parseInt(i.dataset.fancyboxIndex||\"\",10)||0;e=n[s]||e}if(!(e&&e instanceof Element))return;let n,s,o,a;if([...Oe.openers].reverse().find((([t,i])=>!(!t.contains(e)||![...i].reverse().find((([i,r])=>{let l=e.closest(i);return!!l&&(n=t,s=i,o=l,a=r,!0)}))))),!n||!s||!o)return;a=a||{},t.preventDefault(),e=o;let r=[],l=u({},at,a);l.event=t,l.triggerEl=e,l.delegate=i;const c=l.groupAll,h=l.groupAttr,d=h&&e?e.getAttribute(`${h}`):\"\";if((!e||d||c)&&(r=[].slice.call(n.querySelectorAll(s))),e&&!c&&(r=d?r.filter((t=>t.getAttribute(`${h}`)===d)):[e]),!r.length)return;const p=Oe.getInstance();return p&&p.options.triggerEl&&r.indexOf(p.options.triggerEl)>-1?void 0:(e&&(l.startIndex=r.indexOf(e)),Oe.fromNodes(r,l))}static fromSelector(t,e,i){let n=null,s=\"\",o={};if(ve(t)?(n=document.body,s=t,\"object\"==typeof e&&(o=e||{})):t instanceof HTMLElement&&ve(e)&&(n=t,s=e,\"object\"==typeof i&&(o=i||{})),!n||!s)return!1;const a=Oe.openers.get(n);return!!a&&(o=u({},a.get(s)||{},o),!!o&&Oe.fromNodes(Array.from(n.querySelectorAll(s)),o))}static fromNodes(t,e){e=u({},at,e||{});const i=[];for(const n of t){const t=n.dataset||{},s=t[me]||n.getAttribute(ge)||n.getAttribute(\"currentSrc\")||n.getAttribute(me)||void 0;let o;const a=e.delegate;let r;a&&i.length===e.startIndex&&(o=a instanceof HTMLImageElement?a:a.querySelector(\"img:not([aria-hidden])\")),o||(o=n instanceof HTMLImageElement?n:n.querySelector(\"img:not([aria-hidden])\")),o&&(r=o.currentSrc||o[me]||void 0,!r&&o.dataset&&(r=o.dataset.lazySrc||o.dataset[me]||void 0));const l={src:s,triggerEl:n,thumbEl:o,thumbElSrc:r,thumbSrc:r};for(const e in t){let i=t[e]+\"\";i=\"false\"!==i&&(\"true\"===i||i),l[e]=i}i.push(l)}return new Oe(i,e)}static getInstance(t){if(t)return Te.get(t);return Array.from(Te.values()).reverse().find((t=>!t.isClosing()&&t))||null}static getSlide(){var t;return(null===(t=Oe.getInstance())||void 0===t?void 0:t.getSlide())||null}static show(t=[],e={}){return new Oe(t,e)}static next(){const t=Oe.getInstance();t&&t.next()}static prev(){const t=Oe.getInstance();t&&t.prev()}static close(t=!0,...e){if(t)for(const t of Te.values())t.close(...e);else{const t=Oe.getInstance();t&&t.close(...e)}}}Object.defineProperty(Oe,\"version\",{enumerable:!0,configurable:!0,writable:!0,value:\"5.0.36\"}),Object.defineProperty(Oe,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:at}),Object.defineProperty(Oe,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:te}),Object.defineProperty(Oe,\"openers\",{enumerable:!0,configurable:!0,writable:!0,value:new Map});export{Q as Carousel,Oe as Fancybox,I as Panzoom};\n", "import { Controller } from \"@hotwired/stimulus\"\n\n//\n//== FANCYBOX\nimport { Fancybox } from \"@fancyapps/ui\";\n\nexport default class extends Controller {\n  connect () {\n    Fancybox.bind(\"[data-fancybox]\", {\n      Toolbar: {\n        display: {\n          middle: [\n            \"zoomIn\",\n            \"zoomOut\",\n            \"toggle1to1\",\n          ],\n          right: [\"slideshow\", \"close\"],\n        },\n      }\n    })\n  }\n\n  disconnect () {\n    Fancybox.destroy();\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Import TinyMCE\nimport tinymce from 'tinymce/tinymce'\nimport 'tinymce/models/dom'\n\n// Default icons are required\nimport 'tinymce/icons/default';\n\n// A theme is also required\nimport 'tinymce/themes/silver';\n\n// Any plugins you want to use has to be imported\nimport 'tinymce/plugins/autolink';\nimport 'tinymce/plugins/link';\nimport 'tinymce/plugins/lists';\nimport 'tinymce/plugins/visualchars';\nimport 'tinymce/plugins/visualblocks';\nimport 'tinymce/plugins/wordcount';\n\nexport default class extends Controller {\n  connect () {\n    this.tinymce = tinymce.init({\n      target: this.element,\n      relative_urls: false,\n      menubar: false,\n      height: 250,\n      plugins: 'autolink link lists wordcount visualchars visualblocks',\n      toolbar: 'bold italic | link | bullist',\n      link_rel_list: [\n        { title: 'None', value: '' },\n        { title: 'No Referrer', value: 'noreferrer' },\n        { title: 'External Link', value: 'external' },\n        { title: 'Nofollow', value: 'nofollow' }\n      ],\n      removeformat : [\n        { selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true }\n      ],\n      visualblocks_default_state: true,\n      visualchars_default_state: true,\n      end_container_on_empty_block: true,\n      paste_as_text: true,\n      valid_elements : \"a[href|target|title|class<link|id|rel<nofollow],\" +\n                        \"p,strong/b,u,i/em,br,ul,li,\"\n    })\n  }\n\n  disconnect () {\n    tinymce.remove()\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');", "// Exports the \"default\" icons for usage with module loaders\n// Usage:\n//   CommonJS:\n//     require('tinymce/icons/default')\n//   ES2015:\n//     import 'tinymce/icons/default'\nrequire('./icons.js');", "// Exports the \"silver\" theme for usage with module loaders\n// Usage:\n//   CommonJS:\n//     require('tinymce/themes/silver')\n//   ES2015:\n//     import 'tinymce/themes/silver'\nrequire('./theme.js');", "// Exports the \"autolink\" plugin for usage with module loaders\n// Usage:\n//   CommonJS:\n//     require('tinymce/plugins/autolink')\n//   ES2015:\n//     import 'tinymce/plugins/autolink'\nrequire('./plugin.js');", "// Exports the \"link\" plugin for usage with module loaders\n// Usage:\n//   CommonJS:\n//     require('tinymce/plugins/link')\n//   ES2015:\n//     import 'tinymce/plugins/link'\nrequire('./plugin.js');", "// Exports the \"lists\" plugin for usage with module loaders\n// Usage:\n//   CommonJS:\n//     require('tinymce/plugins/lists')\n//   ES2015:\n//     import 'tinymce/plugins/lists'\nrequire('./plugin.js');", "// Exports the \"visualchars\" plugin for usage with module loaders\n// Usage:\n//   CommonJS:\n//     require('tinymce/plugins/visualchars')\n//   ES2015:\n//     import 'tinymce/plugins/visualchars'\nrequire('./plugin.js');", "// Exports the \"visualblocks\" plugin for usage with module loaders\n// Usage:\n//   CommonJS:\n//     require('tinymce/plugins/visualblocks')\n//   ES2015:\n//     import 'tinymce/plugins/visualblocks'\nrequire('./plugin.js');", "// Exports the \"wordcount\" plugin for usage with module loaders\n// Usage:\n//   CommonJS:\n//     require('tinymce/plugins/wordcount')\n//   ES2015:\n//     import 'tinymce/plugins/wordcount'\nrequire('./plugin.js');", "// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from \"./application\"\n\nimport FancyboxController from \"./fancybox_controller.js\"\napplication.register(\"fancybox\", FancyboxController)\n\nimport TinymceController from \"./tinymce_controller.js\"\napplication.register(\"tinymce\", TinymceController)\n", "const options = {\n    hooks: {},\n    navbar: {\n        add: true,\n        title: 'Menu',\n        titleLink: 'parent'\n    },\n    slidingSubmenus: true\n};\nexport default options;\n", "const configs = {\n    classNames: {\n        divider: 'Divider',\n        nolistview: 'NoListview',\n        nopanel: 'NoPanel',\n        panel: 'Panel',\n        selected: 'Selected',\n        vertical: 'Vertical'\n    },\n    language: null,\n    panelNodetype: ['ul', 'ol', 'div'],\n    screenReader: {\n        closeSubmenu: 'Close submenu',\n        openSubmenu: 'Open submenu',\n        toggleSubmenu: 'Toggle submenu'\n    }\n};\nexport default configs;\n", "/**\n * Deep extend an object with the given defaults.\n * Note that the extended object is not a clone, meaning the original object will also be updated.\n *\n * @param \t{object}\torignl\tThe object to extend to.\n * @param \t{object}\tdfault\tThe object to extend from.\n * @return\t{object}\t\t\tThe extended \"orignl\" object.\n */\nexport const extend = (orignl, dfault) => {\n    if (type(orignl) != 'object') {\n        orignl = {};\n    }\n    if (type(dfault) != 'object') {\n        dfault = {};\n    }\n    for (let k in dfault) {\n        if (!dfault.hasOwnProperty(k)) {\n            continue;\n        }\n        if (typeof orignl[k] == 'undefined') {\n            orignl[k] = dfault[k];\n        }\n        else if (type(orignl[k]) == 'object') {\n            extend(orignl[k], dfault[k]);\n        }\n    }\n    return orignl;\n};\n/**\n * Detect the touch / dragging direction on a touch device.\n *\n * @param   {HTMLElement} surface   The element to monitor for touch events.\n * @return  {object}                Object with \"get\" function.\n */\nexport const touchDirection = (surface) => {\n    let direction = '';\n    let prevPosition = null;\n    surface.addEventListener('touchstart', (evnt) => {\n        if (evnt.touches.length === 1) {\n            direction = '';\n            prevPosition = evnt.touches[0].pageY;\n        }\n    });\n    surface.addEventListener('touchend', (evnt) => {\n        if (evnt.touches.length === 0) {\n            direction = '';\n            prevPosition = null;\n        }\n    });\n    surface.addEventListener('touchmove', (evnt) => {\n        direction = '';\n        if (prevPosition &&\n            evnt.touches.length === 1) {\n            const currentPosition = evnt.changedTouches[0].pageY;\n            if (currentPosition > prevPosition) {\n                direction = 'down';\n            }\n            else if (currentPosition < prevPosition) {\n                direction = 'up';\n            }\n            prevPosition = currentPosition;\n        }\n    });\n    return {\n        get: () => direction,\n    };\n};\n/**\n * Get the type of any given variable. Improvement of \"typeof\".\n *\n * @param \t{any}\t\tvariable\tThe variable.\n * @return\t{string}\t\t\t\tThe type of the variable in lowercase.\n */\nexport const type = (variable) => {\n    return {}.toString\n        .call(variable)\n        .match(/\\s([a-zA-Z]+)/)[1]\n        .toLowerCase();\n};\n/**\n * Get a (page wide) unique ID.\n */\nexport const uniqueId = () => {\n    return `mm-${__id++}`;\n};\nlet __id = 0;\n/**\n * Get a prefixed ID from a possibly orifinal ID.\n * @param id The possibly original ID.\n */\nexport const cloneId = (id) => {\n    if (id.slice(0, 9) == 'mm-clone-') {\n        return id;\n    }\n    return `mm-clone-${id}`;\n};\n/**\n * Get the original ID from a possibly prefixed ID.\n * @param id The possibly prefixed ID.\n */\nexport const originalId = (id) => {\n    if (id.slice(0, 9) == 'mm-clone-') {\n        return id.slice(9);\n    }\n    return id;\n};\n", "import { extend } from './helpers';\nconst translations = {};\n/**\n * Show all translations.\n * @return {object}\tThe translations.\n */\nexport const show = () => {\n    return translations;\n};\n/**\n * Add translations to a language.\n * @param {object}  text        Object of key/value translations.\n * @param {string}  language    The translated language.\n */\nexport const add = (text, language) => {\n    if (typeof translations[language] === 'undefined') {\n        translations[language] = {};\n    }\n    extend(translations[language], text);\n};\n/**\n * Find a translated text in a language.\n * @param   {string} text       The text to find the translation for.\n * @param   {string} language   The language to search in.\n * @return  {string}            The translated text.\n */\nexport const get = (text, language) => {\n    if (typeof language === 'string' &&\n        typeof translations[language] !== 'undefined') {\n        return translations[language][text] || text;\n    }\n    return text;\n};\n", "export default {\n    'Close submenu': 'Untermen\u00FC schlie\u00DFen',\n    'Menu': 'Men\u00FC',\n    'Open submenu': 'Untermen\u00FC \u00F6ffnen',\n    'Toggle submenu': 'Untermen\u00FC wechseln'\n};\n", "export default {\n    'Close submenu': '\u0628\u0633\u062A\u0646 \u0632\u06CC\u0631\u0645\u0646\u0648',\n    'Menu': '\u0645\u0646\u0648',\n    'Open submenu': '\u0628\u0627\u0632\u06A9\u0631\u062F\u0646 \u0632\u06CC\u0631\u0645\u0646\u0648',\n    'Toggle submenu': '\u0633\u0648\u06CC\u06CC\u0686 \u0632\u06CC\u0631\u0645\u0646\u0648'\n};\n", "export default {\n    'Close submenu': 'Submenu sluiten',\n    'Menu': 'Menu',\n    'Open submenu': 'Submenu openen',\n    'Toggle submenu': 'Submenu wisselen'\n};\n", "export default {\n    'Close submenu': 'Fechar submenu',\n    'Menu': 'Menu',\n    'Open submenu': 'Abrir submenu',\n    'Toggle submenu': 'Alternar submenu'\n};\n", "export default {\n    'Close submenu': '\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u043F\u043E\u0434\u043C\u0435\u043D\u044E',\n    'Menu': '\u041C\u0435\u043D\u044E',\n    'Open submenu': '\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043F\u043E\u0434\u043C\u0435\u043D\u044E',\n    'Toggle submenu': '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u043E\u0434\u043C\u0435\u043D\u044E'\n};\n", "export default {\n    'Close submenu': 'Zatvori\u0165 submenu',\n    'Menu': 'Menu',\n    'Open submenu': 'Otvori\u0165 submenu',\n    'Toggle submenu': 'Prepn\u00FA\u0165 submenu'\n};\n", "export default {\n    'Close submenu': '\u0417\u0430\u043A\u0440\u0438\u0442\u0438 \u043F\u0456\u0434\u043C\u0435\u043D\u044E',\n    'Menu': '\u041C\u0435\u043D\u044E',\n    'Open submenu': '\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u043F\u0456\u0434\u043C\u0435\u043D\u044E',\n    'Toggle submenu': '\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0456\u0434\u043C\u0435\u043D\u044E'\n};\n", "import { add } from '../../../_modules/i18n';\nimport de from './de';\nimport fa from './fa';\nimport nl from './nl';\nimport pt_br from './pt_br';\nimport ru from './ru';\nimport sk from './sk';\nimport uk from './uk';\nexport default function () {\n    add(de, 'de');\n    add(fa, 'fa');\n    add(nl, 'nl');\n    add(pt_br, 'pt_br');\n    add(ru, 'ru');\n    add(sk, 'sk');\n    add(uk, 'uk');\n}\n", "/**\n * Create an element with classname.\n *\n * @param \t{string}\t\tselector\tThe nodeName and classnames for the element to create.\n * @return\t{HTMLElement}\t\t\t\tThe created element.\n */\nexport const create = (selector) => {\n    const args = selector.split('.'), elem = document.createElement(args.shift());\n    elem.classList.add(...args);\n    return elem;\n};\n/**\n * Find all elements matching the selector.\n * Basically the same as element.querySelectorAll() but it returns an actuall array.\n *\n * @param \t{HTMLElement} \telement Element to search in.\n * @param \t{string}\t\tfilter\tThe filter to match.\n * @return\t{array}\t\t\t\t\tArray of elements that match the filter.\n */\nexport const find = (element, filter) => {\n    return filter.length ? [].slice.call(element.querySelectorAll(filter)) : [];\n};\n/**\n * Find all child elements matching the (optional) selector.\n *\n * @param \t{HTMLElement} \telement Element to search in.\n * @param \t{string}\t\tfilter\tThe filter to match.\n * @return\t{array}\t\t\t\t\tArray of child elements that match the filter.\n */\nexport const children = (element, filter) => {\n    const children = Array.prototype.slice.call(element.children);\n    return filter\n        ? children.filter((child) => child.matches(filter))\n        : children;\n};\n/**\n * Find all text from direct child element.\n *\n * @param \t{HTMLElement} \telement Element to search in.\n * @return\t{string}\t\t\t\tThe text.\n */\nexport const childText = (element) => {\n    return element\n        ? [].slice.call(element.childNodes)\n            .filter(node => node.nodeType === Node.TEXT_NODE)\n            .map(node => node.nodeValue.trim())\n            .join(' ')\n        : '';\n};\n/**\n * Find text excluding text from within child elements.\n * @param   {HTMLElement}   element Element to search in.\n * @return  {string}                The text.\n */\nexport const text = (element) => {\n    return [].slice.call(element.childNodes)\n        .filter((child) => !child.ariaHidden)\n        .map((child) => child.textContent)\n        .join(' ');\n};\n/**\n * Find all preceding elements matching the selector.\n *\n * @param \t{HTMLElement} \telement Element to start searching from.\n * @param \t{string}\t\tfilter\tThe filter to match.\n * @return\t{array}\t\t\t\t\tArray of preceding elements that match the selector.\n */\nexport const parents = (element, filter) => {\n    /** Array of preceding elements that match the selector. */\n    let parents = [];\n    /** Array of preceding elements that match the selector. */\n    let parent = element.parentElement;\n    while (parent) {\n        parents.push(parent);\n        parent = parent.parentElement;\n    }\n    return filter\n        ? parents.filter((parent) => parent.matches(filter))\n        : parents;\n};\n/**\n * Find all previous siblings matching the selecotr.\n *\n * @param \t{HTMLElement} \telement Element to start searching from.\n * @param \t{string}\t\tfilter\tThe filter to match.\n * @return\t{array}\t\t\t\t\tArray of previous siblings that match the selector.\n */\nexport const prevAll = (element, filter) => {\n    /** Array of previous siblings that match the selector. */\n    let previous = [];\n    /** Current element in the loop */\n    let current = element.previousElementSibling;\n    while (current) {\n        if (!filter || current.matches(filter)) {\n            previous.push(current);\n        }\n        current = current.previousElementSibling;\n    }\n    return previous;\n};\n/**\n * Get an element offset relative to the document.\n *\n * @param \t{HTMLElement}\t element \t\t\tElement to start measuring from.\n * @param \t{string}\t\t [direction=top] \tOffset top or left.\n * @return\t{number}\t\t\t\t\t\t\tThe element offset relative to the document.\n */\nexport const offset = (element, direction) => {\n    return (element.getBoundingClientRect()[direction] +\n        document.body[direction === 'left' ? 'scrollLeft' : 'scrollTop']);\n};\n/**\n * Filter out non-listitem listitems.\n * @param  {array} listitems \tElements to filter.\n * @return {array}\t\t\t\tThe filtered set of listitems.\n */\nexport const filterLI = (listitems) => {\n    return listitems.filter((listitem) => !listitem.matches('.mm-hidden'));\n};\n/**\n * Find anchors in listitems (excluding anchor that open a sub-panel).\n * @param  {array} \tlistitems \tElements to filter.\n * @return {array}\t\t\t\tThe found set of anchors.\n */\nexport const filterLIA = (listitems) => {\n    let anchors = [];\n    filterLI(listitems).forEach((listitem) => {\n        anchors.push(...children(listitem, 'a.mm-listitem__text'));\n    });\n    return anchors.filter((anchor) => !anchor.matches('.mm-btn--next'));\n};\n/**\n * Refactor a classname on multiple elements.\n * @param {HTMLElement} element \tElement to refactor.\n * @param {string}\t\toldClass \tClassname to remove.\n * @param {string}\t\tnewClass \tClassname to add.\n */\nexport const reClass = (element, oldClass, newClass) => {\n    if (element.matches('.' + oldClass)) {\n        element.classList.add(newClass);\n    }\n};\n", "/** Collection of callback functions for media querys. */\nlet listeners = {};\n/**\n * Bind functions to a matchMedia listener (subscriber).\n *\n * @param {string|number} \tquery \tMedia query to match or number for min-width.\n * @param {function} \t\tyes \tFunction to invoke when the media query matches.\n * @param {function} \t\tno \t\tFunction to invoke when the media query doesn't match.\n */\nexport const add = (query, yes, no) => {\n    if (typeof query == 'number') {\n        query = '(min-width: ' + query + 'px)';\n    }\n    listeners[query] = listeners[query] || [];\n    listeners[query].push({ yes, no });\n};\n/**\n * Initialize the matchMedia listener.\n */\nexport const watch = () => {\n    for (let query in listeners) {\n        let mqlist = window.matchMedia(query);\n        fire(query, mqlist);\n        mqlist.onchange = (evnt) => {\n            fire(query, mqlist);\n        };\n    }\n};\n/**\n * Invoke the \"yes\" or \"no\" function for a matchMedia listener (publisher).\n *\n * @param {string} \t\t\tquery \tMedia query to check for.\n * @param {MediaQueryList} \tmqlist \tMedia query list to check with.\n */\nexport const fire = (query, mqlist) => {\n    var fn = mqlist.matches ? 'yes' : 'no';\n    for (let m = 0; m < listeners[query].length; m++) {\n        listeners[query][m][fn]();\n    }\n};\n", "var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n    if (!privateMap.has(receiver)) {\n        throw new TypeError(\"attempted to set private field on non-instance\");\n    }\n    privateMap.set(receiver, value);\n    return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n    if (!privateMap.has(receiver)) {\n        throw new TypeError(\"attempted to get private field on non-instance\");\n    }\n    return privateMap.get(receiver);\n};\nvar _panelObserver, _listviewObserver, _listitemObserver;\nimport OPTIONS from './options';\nimport CONFIGS from './configs';\nimport translate from './translations';\nimport * as DOM from '../../_modules/dom';\nimport * as i18n from '../../_modules/i18n';\nimport * as media from '../../_modules/matchmedia';\nimport { extend, type, uniqueId, } from '../../_modules/helpers';\n//  Add the translations.\ntranslate();\n/**\n * Class for a mobile menu.\n */\nexport default class Mmenu {\n    /**\n     * Create a mobile menu.\n     * @param {HTMLElement|string} \tmenu\t\tThe menu node.\n     * @param {object} \t\t\t\t[option]\tOptions for the menu.\n     * @param {object} \t\t\t\t[configs]\tConfiguration options for the menu.\n     */\n    constructor(menu, options, configs) {\n        /** MutationObserver for adding a listview to a panel. */\n        _panelObserver.set(this, void 0);\n        /** MutationObserver for adding a listitem to a listview. */\n        _listviewObserver.set(this, void 0);\n        /** MutationObserver for adding a listview to a listitem. */\n        _listitemObserver.set(this, void 0);\n        //\tExtend options and configuration from defaults.\n        this.opts = extend(options, OPTIONS);\n        this.conf = extend(configs, CONFIGS);\n        //\tMethods to expose in the API.\n        this._api = [\n            'i18n',\n            'bind',\n            'openPanel',\n            'closePanel',\n            'setSelected',\n        ];\n        //\tStorage objects for nodes and hooks.\n        this.node = {};\n        this.hook = {};\n        //\tGet menu node from string or element.\n        this.node.menu =\n            typeof menu == 'string' ? document.querySelector(menu) : menu;\n        if (typeof this._deprecatedWarnings == 'function') {\n            this._deprecatedWarnings();\n        }\n        this.trigger('init:before');\n        this._initObservers();\n        this._initAddons();\n        this._initHooks();\n        this._initAPI();\n        this._initMenu();\n        this._initPanels();\n        this._initOpened();\n        media.watch();\n        this.trigger('init:after');\n        return this;\n    }\n    /**\n     * Open a panel.\n     * @param {HTMLElement} panel               Panel to open.\n     * @param {boolean}     [animation=true]    Whether or not to use an animation.\n     * @param {boolean}     [setfocus=true]     Whether or not to set focus to the panel.\n     */\n    openPanel(panel, animation = true, setfocus = true) {\n        //\tFind panel.\n        if (!panel) {\n            return;\n        }\n        panel = panel.closest('.mm-panel');\n        //\tInvoke \"before\" hook.\n        this.trigger('openPanel:before', [panel, {\n                animation,\n                setfocus\n            }]);\n        /** Wrapping listitem (for a vertical panel) */\n        const listitem = panel.closest('.mm-listitem--vertical');\n        //\tOpen a \"vertical\" panel.\n        if (listitem) {\n            listitem.classList.add('mm-listitem--opened');\n            /** The parent panel */\n            const parent = listitem.closest('.mm-panel');\n            this.openPanel(parent);\n            //\tOpen a \"horizontal\" panel.\n        }\n        else {\n            /** Currently opened panel. */\n            const current = DOM.children(this.node.pnls, '.mm-panel--opened')[0];\n            //  Ensure current panel stays on top while closing it.\n            if (panel.matches('.mm-panel--parent') && current) {\n                current.classList.add('mm-panel--highest');\n            }\n            //  Remove opened, parent, animation and highest classes from all panels.\n            const remove = ['mm-panel--opened', 'mm-panel--parent'];\n            const add = [];\n            if (animation) {\n                remove.push('mm-panel--noanimation');\n            }\n            else {\n                add.push('mm-panel--noanimation');\n            }\n            DOM.children(this.node.pnls, '.mm-panel').forEach(pnl => {\n                pnl.classList.add(...add);\n                pnl.classList.remove(...remove);\n                if (pnl !== current) {\n                    pnl.classList.remove('mm-panel--highest');\n                }\n                // Set inert attribute.\n                if (pnl === panel) {\n                    pnl.removeAttribute('inert');\n                }\n                else {\n                    pnl.setAttribute('inert', 'true');\n                }\n            });\n            //  Open new panel.\n            panel.classList.add('mm-panel--opened');\n            /** The parent panel */\n            let parent = DOM.find(this.node.pnls, `#${panel.dataset.mmParent}`)[0];\n            //\tSet parent panels as \"parent\".\n            while (parent) {\n                parent = parent.closest('.mm-panel');\n                parent.classList.add('mm-panel--parent');\n                parent = DOM.find(this.node.pnls, `#${parent.dataset.mmParent}`)[0];\n            }\n        }\n        //\tInvoke \"after\" hook.\n        this.trigger('openPanel:after', [panel, {\n                animation,\n                setfocus\n            }]);\n    }\n    /**\n     * Close a panel.\n     * @param {HTMLElement} panel               Panel to close.\n     * @param {boolean}     [animation=true]    Whether or not to use an animation.\n     * @param {boolean}     [setfocus=true]     Whether or not to set focus to the panel.\n     */\n    closePanel(panel, animation = true, setfocus = true) {\n        if (!panel) {\n            return;\n        }\n        if (!panel.matches('.mm-panel--opened') &&\n            !panel.parentElement.matches('.mm-listitem--opened')) {\n            return;\n        }\n        //\tInvoke \"before\" hook.\n        this.trigger('closePanel:before', [panel]);\n        //\tClose a \"vertical\" panel.\n        if (panel.parentElement.matches('.mm-listitem--vertical')) {\n            panel.parentElement.classList.remove('mm-listitem--opened');\n            //  Close a \"horizontal\" panel...\n        }\n        else {\n            //  ... open its parent...\n            if (panel.dataset.mmParent) {\n                const parent = DOM.find(this.node.pnls, `#${panel.dataset.mmParent}`)[0];\n                this.openPanel(parent, animation, setfocus);\n                // ... or the last opened\n            }\n            else {\n                const lastPanel = DOM.children(this.node.pnls, '.mm-panel--parent').pop();\n                if (lastPanel && lastPanel !== panel) {\n                    this.openPanel(lastPanel, animation, setfocus);\n                    // ... or the first panel.\n                }\n                else {\n                    const firstPanel = DOM.children(this.node.pnls, '.mm-panel')[0];\n                    if (firstPanel && firstPanel !== panel) {\n                        this.openPanel(firstPanel, animation, setfocus);\n                    }\n                }\n            }\n        }\n        //\tInvoke \"after\" hook.\n        this.trigger('closePanel:after', [panel]);\n    }\n    /**\n     * Toggle a panel opened/closed.\n     * @param {HTMLElement} panel Panel to open or close.\n     */\n    togglePanel(panel) {\n        const listitem = panel.parentElement;\n        /** The function to invoke (open or close). */\n        let fn = 'openPanel';\n        //\tToggle only works for \"vertical\" panels.\n        if (listitem.matches('.mm-listitem--opened') ||\n            panel.matches('.mm-panel--opened')) {\n            fn = 'closePanel';\n        }\n        this[fn](panel);\n    }\n    /**\n     * Display a listitem as being \"selected\".\n     * @param {HTMLElement} listitem Listitem to mark.\n     */\n    setSelected(listitem) {\n        //\tInvoke \"before\" hook.\n        this.trigger('setSelected:before', [listitem]);\n        //\tRemove the selected class from all listitems.\n        DOM.find(this.node.menu, '.mm-listitem--selected').forEach((li) => {\n            li.classList.remove('mm-listitem--selected');\n        });\n        //\tAdd the selected class to the provided listitem.\n        listitem.classList.add('mm-listitem--selected');\n        //\tInvoke \"after\" hook.\n        this.trigger('setSelected:after', [listitem]);\n    }\n    /**\n     * Bind functions to a hook (subscriber).\n     * @param {string} \t\thook The hook.\n     * @param {function} \tfunc The function.\n     */\n    bind(hook, func) {\n        //\tCreate an array for the hook if it does not yet excist.\n        this.hook[hook] = this.hook[hook] || [];\n        //\tPush the function to the array.\n        this.hook[hook].push(func);\n    }\n    /**\n     * Invoke the functions bound to a hook (publisher).\n     * @param {string} \thook  \tThe hook.\n     * @param {array}\t[args] \tArguments for the function.\n     */\n    trigger(hook, args) {\n        if (this.hook[hook]) {\n            for (var h = 0, l = this.hook[hook].length; h < l; h++) {\n                this.hook[hook][h].apply(this, args);\n            }\n        }\n    }\n    /**\n     * Create the observers.\n     */\n    _initObservers() {\n        __classPrivateFieldSet(this, _panelObserver, new MutationObserver((mutationsList) => {\n            mutationsList.forEach((mutation) => {\n                mutation.addedNodes.forEach((listview) => {\n                    if (listview.matches(this.conf.panelNodetype.join(', '))) {\n                        this._initListview(listview);\n                    }\n                });\n            });\n        }));\n        __classPrivateFieldSet(this, _listviewObserver, new MutationObserver((mutationsList) => {\n            mutationsList.forEach((mutation) => {\n                mutation.addedNodes.forEach((listitem) => {\n                    this._initListitem(listitem);\n                });\n            });\n        }));\n        __classPrivateFieldSet(this, _listitemObserver, new MutationObserver((mutationsList) => {\n            mutationsList.forEach((mutation) => {\n                mutation.addedNodes.forEach((subpanel) => {\n                    if (subpanel === null || subpanel === void 0 ? void 0 : subpanel.matches(this.conf.panelNodetype.join(', '))) {\n                        this._initSubPanel(subpanel);\n                    }\n                });\n            });\n        }));\n    }\n    /**\n     * Create the API.\n     */\n    _initAPI() {\n        //\tWe need this=that because:\n        //\t1) the \"arguments\" object can not be referenced in an arrow function in ES3 and ES5.\n        const that = this;\n        this.API = {};\n        this._api.forEach((fn) => {\n            this.API[fn] = function () {\n                return that[fn].apply(that, arguments); // 1)\n            };\n        });\n        //\tStore the API in the HTML node for external usage.\n        this.node.menu['mmApi'] = this.API;\n    }\n    /**\n     * Bind the hooks specified in the options (publisher).\n     */\n    _initHooks() {\n        for (let hook in this.opts.hooks) {\n            this.bind(hook, this.opts.hooks[hook]);\n        }\n    }\n    /**\n     * Initialize all available add-ons.\n     */\n    _initAddons() {\n        //\tInvoke \"before\" hook.\n        this.trigger('initAddons:before');\n        for (let addon in Mmenu.addons) {\n            Mmenu.addons[addon].call(this);\n        }\n        //\tInvoke \"after\" hook.\n        this.trigger('initAddons:after');\n    }\n    /**\n     * Initialize the menu.\n     */\n    _initMenu() {\n        //\tInvoke \"before\" hook.\n        this.trigger('initMenu:before');\n        //\tAdd class to the wrapper.\n        this.node.wrpr = this.node.wrpr || this.node.menu.parentElement;\n        this.node.wrpr.classList.add('mm-wrapper');\n        //\tAdd class to the menu.\n        this.node.menu.classList.add('mm-menu');\n        //\tAdd an ID to the menu if it does not yet have one.\n        this.node.menu.id = this.node.menu.id || uniqueId();\n        this.node.menu.setAttribute('aria-label', this.i18n(this.opts.navbar.title || 'Menu'));\n        this.node.menu.setAttribute('aria-modal', 'true');\n        this.node.menu.setAttribute('role', 'dialog');\n        /** All panel nodes in the menu. */\n        const panels = DOM.children(this.node.menu).filter((panel) => panel.matches(this.conf.panelNodetype.join(', ')));\n        //\tWrap the panels in a node.\n        this.node.pnls = DOM.create('div.mm-panels');\n        this.node.menu.append(this.node.pnls);\n        //  Initiate all panel like nodes\n        panels.forEach((panel) => {\n            this._initPanel(panel);\n        });\n        //\tInvoke \"after\" hook.\n        this.trigger('initMenu:after');\n    }\n    /**\n     * Initialize panels.\n     */\n    _initPanels() {\n        //\tInvoke \"before\" hook.\n        this.trigger('initPanels:before');\n        //\tOpen / close panels.\n        this.node.menu.addEventListener('click', event => {\n            var _a, _b;\n            /** The href attribute for the clicked anchor. */\n            const href = ((_b = (_a = event.target) === null || _a === void 0 ? void 0 : _a.closest('a[href]')) === null || _b === void 0 ? void 0 : _b.getAttribute('href')) || '';\n            if (href.slice(0, 1) === '#') {\n                try {\n                    /** The targeted panel */\n                    const panel = DOM.find(this.node.menu, href)[0];\n                    if (panel) {\n                        event.preventDefault();\n                        this.togglePanel(panel);\n                    }\n                }\n                catch (err) { }\n            }\n        }, {\n            // useCapture to ensure the logical order.\n            capture: true\n        });\n        //\tInvoke \"after\" hook.\n        this.trigger('initPanels:after');\n    }\n    /**\n     * Initialize a single panel.\n     * @param  {HTMLElement} \t\tpanel \tPanel to initialize.\n     * @return {HTMLElement|null} \t\t\tInitialized panel.\n     */\n    _initPanel(panel) {\n        var _a;\n        if (panel.matches('.mm-panel')) {\n            return;\n        }\n        //\tRefactor panel classnames\n        DOM.reClass(panel, this.conf.classNames.panel, 'mm-panel');\n        DOM.reClass(panel, this.conf.classNames.nopanel, 'mm-nopanel');\n        //\tStop if not supposed to be a panel.\n        if (panel.matches('.mm-nopanel')) {\n            return;\n        }\n        //\tInvoke \"before\" hook.\n        this.trigger('initPanel:before', [panel]);\n        //  Must have an ID\n        panel.id = panel.id || uniqueId();\n        //\tWrap UL/OL in DIV\n        if (panel.matches('ul, ol')) {\n            /** The panel. */\n            const wrapper = DOM.create('div');\n            //  Transport the ID\n            wrapper.id = panel.id;\n            panel.removeAttribute('id');\n            //  Transport \"mm-\" prefixed classnames.\n            [].slice\n                .call(panel.classList)\n                .filter((classname) => classname.slice(0, 3) === 'mm-')\n                .forEach((classname) => {\n                wrapper.classList.add(classname);\n                panel.classList.remove(classname);\n            });\n            //  Transport \"mm\" prefixed data attributes.\n            Object.keys(panel.dataset)\n                .filter((attr) => attr.slice(0, 2) === 'mm')\n                .forEach(attr => {\n                wrapper.dataset[attr] = panel.dataset[attr];\n                delete panel.dataset[attr];\n            });\n            //\tWrap the listview in the panel.\n            panel.before(wrapper);\n            wrapper.append(panel);\n            panel = wrapper;\n        }\n        panel.classList.add('mm-panel');\n        //  Append to the panels node if not vertically expanding\n        if (!((_a = panel.parentElement) === null || _a === void 0 ? void 0 : _a.matches('.mm-listitem--vertical'))) {\n            this.node.pnls.append(panel);\n        }\n        //  Initialize tha navbar.\n        this._initNavbar(panel);\n        //  Initialize the listview(s).\n        DOM.children(panel, 'ul, ol').forEach((listview) => {\n            this._initListview(listview);\n        });\n        // Observe the panel for added listviews.\n        __classPrivateFieldGet(this, _panelObserver).observe(panel, {\n            childList: true,\n        });\n        //\tInvoke \"after\" hook.\n        this.trigger('initPanel:after', [panel]);\n        return panel;\n    }\n    /**\n     * Initialize a navbar.\n     * @param {HTMLElement} panel Panel for the navbar.\n     */\n    _initNavbar(panel) {\n        //\tOnly one navbar per panel.\n        if (DOM.children(panel, '.mm-navbar').length) {\n            return;\n        }\n        /** The parent listitem. */\n        let parentListitem = null;\n        /** The parent panel. */\n        let parentPanel = null;\n        //  The parent listitem and parent panel\n        if (panel.dataset.mmParent) {\n            parentListitem = DOM.find(this.node.pnls, `#${panel.dataset.mmParent}`)[0];\n            parentPanel = parentListitem.closest('.mm-panel');\n            while (parentPanel.closest('.mm-listitem--vertical')) {\n                parentPanel = parentPanel.parentElement.closest('.mm-panel');\n            }\n        }\n        //  No navbar needed for vertical submenus.\n        if (parentListitem === null || parentListitem === void 0 ? void 0 : parentListitem.matches('.mm-listitem--vertical')) {\n            return;\n        }\n        //\tInvoke \"before\" hook.\n        this.trigger('initNavbar:before', [panel]);\n        /** The navbar element. */\n        const navbar = DOM.create('div.mm-navbar');\n        //  Hide navbar if specified in options.\n        if (!this.opts.navbar.add) {\n            navbar.classList.add('mm-hidden');\n        }\n        //  Add the back button.\n        if (parentPanel) {\n            /** The back button. */\n            const prev = DOM.create('a.mm-btn.mm-btn--prev.mm-navbar__btn');\n            prev.href = `#${parentPanel.id}`;\n            prev.setAttribute('aria-label', this.i18n(this.conf.screenReader.closeSubmenu));\n            navbar.append(prev);\n        }\n        /** The anchor that opens the panel. */\n        let opener = null;\n        //  The anchor is in a listitem.\n        if (parentListitem) {\n            opener = DOM.children(parentListitem, '.mm-listitem__text')[0];\n        }\n        //  The anchor is in a panel.\n        else if (parentPanel) {\n            opener = DOM.find(parentPanel, 'a[href=\"#' + panel.id + '\"]')[0];\n        }\n        //  Add the title.\n        /** The title */\n        const title = DOM.create('a.mm-navbar__title');\n        title.tabIndex = -1;\n        title.setAttribute('aria-hidden', 'true');\n        switch (this.opts.navbar.titleLink) {\n            case 'anchor':\n                if (opener) {\n                    title.href = opener.getAttribute('href');\n                }\n                break;\n            case 'parent':\n                if (parentPanel) {\n                    title.href = `#${parentPanel.id}`;\n                }\n                break;\n        }\n        /** Text in the title */\n        const titleText = DOM.create('span');\n        titleText.innerHTML =\n            panel.dataset.mmTitle ||\n                DOM.childText(opener) ||\n                this.i18n(this.opts.navbar.title || 'Menu');\n        //  Add to DOM\n        panel.prepend(navbar);\n        navbar.append(title);\n        title.append(titleText);\n        //\tInvoke \"after\" hook.\n        this.trigger('initNavbar:after', [panel]);\n    }\n    /**\n     * Initialize a listview.\n     * @param {HTMLElement} listview Listview to initialize.\n     */\n    _initListview(listview) {\n        //  Assert UL\n        if (!['htmlulistelement', 'htmlolistelement'].includes(type(listview))) {\n            return;\n        }\n        if (listview.matches('.mm-listview')) {\n            return;\n        }\n        DOM.reClass(listview, this.conf.classNames.nolistview, 'mm-nolistview');\n        if (listview.matches('.mm-nolistview')) {\n            return;\n        }\n        //\tInvoke \"before\" hook.\n        this.trigger('initListview:before', [listview]);\n        listview.classList.add('mm-listview');\n        //  Initiate the listitem(s).\n        DOM.children(listview).forEach((listitem) => {\n            this._initListitem(listitem);\n        });\n        // Observe the listview for added listitems.\n        __classPrivateFieldGet(this, _listviewObserver).observe(listview, {\n            childList: true,\n        });\n        //\tInvoke \"after\" hook.\n        this.trigger('initListview:after', [listview]);\n    }\n    /**\n     * Initialte a listitem.\n     * @param {HTMLElement} listitem Listitem to initiate.\n     */\n    _initListitem(listitem) {\n        //  Assert LI\n        if (!['htmllielement'].includes(type(listitem))) {\n            return;\n        }\n        if (listitem.matches('.mm-listitem')) {\n            return;\n        }\n        DOM.reClass(listitem, this.conf.classNames.divider, 'mm-divider');\n        if (listitem.matches('.mm-divider')) {\n            return;\n        }\n        //\tInvoke \"before\" hook.\n        this.trigger('initListitem:before', [listitem]);\n        listitem.classList.add('mm-listitem');\n        DOM.reClass(listitem, this.conf.classNames.selected, 'mm-listitem--selected');\n        DOM.children(listitem, 'a, span').forEach((text) => {\n            text.classList.add('mm-listitem__text');\n        });\n        //  Initiate the subpanel.\n        DOM.children(listitem, this.conf.panelNodetype.join(', ')).forEach((subpanel) => {\n            this._initSubPanel(subpanel);\n        });\n        // Observe the listitem for added listviews.\n        __classPrivateFieldGet(this, _listitemObserver).observe(listitem, {\n            childList: true,\n        });\n        //\tInvoke \"after\" hook.\n        this.trigger('initListitem:after', [listitem]);\n    }\n    /**\n     * Initiate a subpanel.\n     * @param {HTMLElement} subpanel Subpanel to initiate.\n     */\n    _initSubPanel(subpanel) {\n        if (subpanel.matches('.mm-panel')) {\n            return;\n        }\n        /** The parent element for the panel. */\n        const listitem = subpanel.parentElement;\n        /** Whether or not the listitem expands vertically */\n        const vertical = subpanel.matches('.' + this.conf.classNames.vertical) ||\n            !this.opts.slidingSubmenus;\n        // Make it expand vertically\n        if (vertical) {\n            listitem.classList.add('mm-listitem--vertical');\n        }\n        //  Force an ID\n        listitem.id = listitem.id || uniqueId();\n        subpanel.id = subpanel.id || uniqueId();\n        //  Store parent/child relation\n        listitem.dataset.mmChild = subpanel.id;\n        subpanel.dataset.mmParent = listitem.id;\n        /** The open link. */\n        let button = DOM.children(listitem, '.mm-btn')[0];\n        //  Init item text\n        if (!button) {\n            button = DOM.create('a.mm-btn.mm-btn--next.mm-listitem__btn');\n            DOM.children(listitem, 'a, span').forEach((text) => {\n                //  If the item has no link,\n                //      Replace the item with the open link.\n                if (text.matches('span')) {\n                    button.classList.add('mm-listitem__text');\n                    button.innerHTML = text.innerHTML;\n                    listitem.insertBefore(button, text.nextElementSibling);\n                    text.remove();\n                }\n                //  Otherwise, insert the button after the text.\n                else {\n                    listitem.insertBefore(button, text.nextElementSibling);\n                }\n            });\n            button.setAttribute('aria-label', this.i18n(this.conf.screenReader[listitem.matches('.mm-listitem--vertical')\n                ? 'toggleSubmenu'\n                : 'openSubmenu']));\n        }\n        button.href = `#${subpanel.id}`;\n        this._initPanel(subpanel);\n    }\n    /**\n     * Find and open the correct panel after creating the menu.\n     */\n    _initOpened() {\n        //\tInvoke \"before\" hook.\n        this.trigger('initOpened:before');\n        /** The selected listitem(s). */\n        const listitem = DOM.find(this.node.pnls, '.mm-listitem--selected').pop();\n        /**\tThe current opened panel. */\n        let panel = DOM.children(this.node.pnls, '.mm-panel')[0];\n        if (listitem) {\n            this.setSelected(listitem);\n            panel = listitem.closest('.mm-panel');\n        }\n        //\tOpen the current opened panel.\n        this.openPanel(panel, false, false);\n        //\tInvoke \"after\" hook.\n        this.trigger('initOpened:after');\n    }\n    /**\n     * Get the translation for a text.\n     * @param  {string}     text \tText to translate.\n     * @return {string}\t\t        The translated text.\n     */\n    i18n(text) {\n        return i18n.get(text, this.conf.language);\n    }\n    /**\n     * Get all translations for the given language.\n     * @return {object}\tThe translations.\n     */\n    static i18n(text = {}, language = '') {\n        if (text && language) {\n            i18n.add(text, language);\n        }\n        else {\n            return i18n.show();\n        }\n    }\n}\n_panelObserver = new WeakMap(), _listviewObserver = new WeakMap(), _listitemObserver = new WeakMap();\n/**\tAvailable add-ons for the plugin. */\nMmenu.addons = {};\n/**\tGlobally used HTML elements. */\nMmenu.node = {};\n/** Globally used v. */\nMmenu.vars = {};\n", "const options = {\n    use: true,\n    position: 'left'\n};\nexport default options;\n", "const configs = {\n    clone: false,\n    menu: {\n        insertMethod: 'append',\n        insertSelector: 'body'\n    },\n    page: {\n        nodetype: 'div',\n        selector: null,\n        noSelector: []\n    },\n    screenReader: {\n        closeMenu: 'Close menu',\n        openMenu: 'Open menu',\n    }\n};\nexport default configs;\n", "import Mmenu from './../oncanvas/mmenu.oncanvas';\nimport OPTIONS from './options';\nimport CONFIGS from './configs';\nimport * as DOM from '../../_modules/dom';\nimport { extend, uniqueId, cloneId, originalId, } from '../../_modules/helpers';\nconst possiblePositions = [\n    'left',\n    'left-front',\n    'right',\n    'right-front',\n    'top',\n    'bottom'\n];\nexport default function () {\n    this.opts.offCanvas = this.opts.offCanvas || {};\n    this.conf.offCanvas = this.conf.offCanvas || {};\n    //\tExtend options.\n    const options = extend(this.opts.offCanvas, OPTIONS);\n    const configs = extend(this.conf.offCanvas, CONFIGS);\n    if (!options.use) {\n        return;\n    }\n    if (!possiblePositions.includes(options.position)) {\n        options.position = possiblePositions[0];\n    }\n    //\tAdd methods to the API.\n    this._api.push('open', 'close', 'setPage', 'position');\n    //  Clone menu if needed.\n    if (configs.clone) {\n        //\tClone the original menu and store it.\n        this.node.menu = this.node.menu.cloneNode(true);\n        //\tPrefix all ID's in the cloned menu.\n        if (this.node.menu.id) {\n            this.node.menu.id = cloneId(this.node.menu.id);\n        }\n        DOM.find(this.node.menu, '[id]').forEach((elem) => {\n            elem.id = cloneId(elem.id);\n        });\n    }\n    //  Prepend the menu to the <body>.\n    this.bind('initMenu:before', () => {\n        this.node.wrpr = document.querySelector(configs.menu.insertSelector);\n        this.node.wrpr[configs.menu.insertMethod](this.node.menu);\n    });\n    //\tSetup the UI blocker.\n    if (!Mmenu.node.blck) {\n        this.bind('initMenu:before', () => {\n            /** The UI blocker node. */\n            const blocker = DOM.create('a.mm-wrapper__blocker.mm-blocker.mm-slideout');\n            blocker.id = uniqueId();\n            blocker.setAttribute('aria-label', this.i18n(configs.screenReader.closeMenu));\n            blocker.setAttribute('inert', 'true');\n            //\tAppend the blocker node to the body.\n            document.querySelector(configs.menu.insertSelector).append(blocker);\n            //\tStore the blocker node.\n            Mmenu.node.blck = blocker;\n        });\n    }\n    this.bind('initMenu:after', () => {\n        //\tSetup the page.\n        this.setPage(Mmenu.node.page);\n        //\tSetup the menu.\n        this.node.menu.classList.add('mm-menu--offcanvas');\n        this.node.menu.setAttribute('inert', 'true');\n        if (possiblePositions.includes(options.position)) {\n            this.node.wrpr.classList.add(`mm-wrapper--position-${options.position}`);\n            this.node.menu.classList.add(`mm-menu--position-${options.position}`);\n        }\n        //\tOpen if url hash equals menu id (usefull when user clicks the hamburger icon before the menu is created)\n        let hash = window.location.hash;\n        if (hash) {\n            let id = originalId(this.node.menu.id);\n            if (id && id == hash.slice(1)) {\n                setTimeout(() => {\n                    this.open();\n                }, 1000);\n            }\n        }\n    });\n    //\tOpen / close the menu.\n    document.addEventListener('click', event => {\n        var _a;\n        /** THe href attribute for the clicked anchor. */\n        const href = (_a = event.target.closest('a')) === null || _a === void 0 ? void 0 : _a.getAttribute('href');\n        switch (href) {\n            //\tOpen menu if the clicked anchor links to the menu.\n            case `#${originalId(this.node.menu.id)}`:\n                event.preventDefault();\n                this.open();\n                break;\n            //\tClose menu if the clicked anchor links to the page.\n            case `#${originalId(Mmenu.node.page.id)}`:\n                event.preventDefault();\n                this.close();\n                break;\n        }\n    });\n    //\tClose the menu with ESC key.\n    document.addEventListener('keyup', (event) => {\n        if (event.key == 'Escape') {\n            this.close();\n        }\n    });\n}\n/**\n * Open the menu.\n */\nMmenu.prototype.open = function () {\n    if (this.node.menu.matches('.mm-menu--opened')) {\n        return;\n    }\n    //\tInvoke \"before\" hook.\n    this.trigger('open:before');\n    //\tOpen\n    this.node.wrpr.classList.add('mm-wrapper--opened', `mm-wrapper--position-${this.opts.offCanvas.position}`);\n    this.node.menu.classList.add('mm-menu--opened');\n    this.node.menu.removeAttribute('inert');\n    Mmenu.node.blck.removeAttribute('inert');\n    Mmenu.node.page.setAttribute('inert', 'true');\n    //  Store the last focesed element.\n    this.node.open = document.activeElement;\n    //\tInvoke \"after\" hook.\n    this.trigger('open:after');\n};\n/**\n * Close the menu.\n */\nMmenu.prototype.close = function () {\n    var _a;\n    if (!this.node.menu.matches('.mm-menu--opened')) {\n        return;\n    }\n    //\tInvoke \"before\" hook.\n    this.trigger('close:before');\n    this.node.wrpr.classList.remove('mm-wrapper--opened', `mm-wrapper--position-${this.opts.offCanvas.position}`);\n    this.node.menu.classList.remove('mm-menu--opened');\n    this.node.menu.setAttribute('inert', 'true');\n    Mmenu.node.blck.setAttribute('inert', 'true');\n    Mmenu.node.page.removeAttribute('inert');\n    /** Element to focus. */\n    const focus = this.node.open || document.querySelector(`[href=\"#${this.node.menu.id}\"]`) || null;\n    (_a = focus) === null || _a === void 0 ? void 0 : _a.focus();\n    // Prevent html/body from scrolling due to focus.\n    document.body.scrollLeft = 0;\n    document.documentElement.scrollLeft = 0;\n    //\tInvoke \"after\" hook.\n    this.trigger('close:after');\n};\n/**\n * Set the \"page\" node.\n *\n * @param {HTMLElement} page Element to set as the page.\n */\nMmenu.prototype.setPage = function (page) {\n    /** Offcanvas config */\n    const configs = this.conf.offCanvas;\n    //\tIf no page was specified, find it.\n    if (!page) {\n        /** Array of elements that are / could be \"the page\". */\n        let pages = typeof configs.page.selector == 'string'\n            ? DOM.find(document.body, configs.page.selector)\n            : DOM.children(document.body, configs.page.nodetype);\n        //\tFilter out elements that are absolutely not \"the page\".\n        pages = pages.filter((page) => !page.matches('.mm-menu, .mm-wrapper__blocker'));\n        //\tFilter out elements that are configured to not be \"the page\".\n        if (configs.page.noSelector.length) {\n            pages = pages.filter((page) => !page.matches(configs.page.noSelector.join(', ')));\n        }\n        //\tWrap multiple pages in a single element.\n        if (pages.length > 1) {\n            let wrapper = DOM.create('div');\n            pages[0].before(wrapper);\n            pages.forEach((page) => {\n                wrapper.append(page);\n            });\n            pages = [wrapper];\n        }\n        page = pages[0];\n    }\n    //\tInvoke \"before\" hook.\n    this.trigger('setPage:before', [page]);\n    //  Set the classes\n    page.classList.add('mm-page', 'mm-slideout');\n    //  Set the ID.\n    page.id = page.id || uniqueId();\n    //\tSync the blocker to target the page.\n    Mmenu.node.blck.setAttribute('href', `#${page.id}`);\n    //\tStore the page node.\n    Mmenu.node.page = page;\n    //\tInvoke \"after\" hook.\n    this.trigger('setPage:after', [page]);\n};\n", "const options = {\n    fix: true\n};\nexport default options;\n", "/** Whether or not touch gestures are supported by the browser. */\nexport const touch = 'ontouchstart' in window ||\n    (navigator.msMaxTouchPoints ? true : false) ||\n    false;\n", "import OPTIONS from './options';\nimport * as DOM from '../../_modules/dom';\nimport * as support from '../../_modules/support';\nimport { extend, touchDirection } from '../../_modules/helpers';\nexport default function () {\n    //\tThe scrollBugFix add-on fixes a scrolling bug\n    //\t\t1) on touch devices\n    //\t\t2) in an off-canvas menu\n    if (!support.touch || // 1\n        !this.opts.offCanvas.use // 2\n    ) {\n        return;\n    }\n    this.opts.scrollBugFix = this.opts.scrollBugFix || {};\n    //\tExtend options.\n    const options = extend(this.opts.scrollBugFix, OPTIONS);\n    if (!options.fix) {\n        return;\n    }\n    /** The touch-direction instance. */\n    const touchDir = touchDirection(this.node.menu);\n    //  Prevent the page from scrolling when scrolling in the menu.\n    this.node.menu.addEventListener('scroll', evnt => {\n        evnt.preventDefault();\n        evnt.stopPropagation();\n    }, {\n        //  Make sure to tell the browser the event will be prevented.\n        passive: false,\n    });\n    //  Prevent the page from scrolling when dragging in the menu.\n    this.node.menu.addEventListener('touchmove', evnt => {\n        let wrapper = evnt.target.closest('.mm-panel, .mm-iconbar__top, .mm-iconbar__bottom');\n        if (wrapper && wrapper.closest('.mm-listitem--vertical')) {\n            wrapper = DOM.parents(wrapper, '.mm-panel').pop();\n        }\n        if (wrapper) {\n            //  When dragging a non-scrollable panel/iconbar,\n            //      we can simply stopPropagation.\n            if (wrapper.scrollHeight === wrapper.offsetHeight) {\n                evnt.stopPropagation();\n            }\n            //  When dragging a scrollable panel/iconbar,\n            //      that is fully scrolled up (or down).\n            //      It will not trigger the scroll event when dragging down (or up) (because you can't scroll up (or down)),\n            //      so we need to match the dragging direction with the scroll position before preventDefault and stopPropagation,\n            //      otherwise the panel would not scroll at all in any direction.\n            else if (\n            //  When scrolled up and dragging down\n            (wrapper.scrollTop == 0 && touchDir.get() == 'down') ||\n                //  When scrolled down and dragging up\n                (wrapper.scrollHeight ==\n                    wrapper.scrollTop + wrapper.offsetHeight &&\n                    touchDir.get() == 'up')) {\n                evnt.stopPropagation();\n            }\n            //  When dragging anything other than a panel/iconbar.\n        }\n        else {\n            evnt.stopPropagation();\n        }\n    }, {\n        //  Make sure to tell the browser the event can be prevented.\n        passive: false,\n    });\n    //  Some small additional improvements\n    //\tScroll the current opened panel to the top when opening the menu.\n    this.bind('open:after', () => {\n        var panel = DOM.children(this.node.pnls, '.mm-panel--opened')[0];\n        if (panel) {\n            panel.scrollTop = 0;\n        }\n    });\n    //\tFix issue after device rotation change.\n    window.addEventListener('orientationchange', (evnt) => {\n        var panel = DOM.children(this.node.pnls, '.mm-panel--opened')[0];\n        if (panel) {\n            panel.scrollTop = 0;\n            //\tApparently, changing the overflow-scrolling property triggers some event :)\n            panel.style['-webkit-overflow-scrolling'] = 'auto';\n            panel.style['-webkit-overflow-scrolling'] = 'touch';\n        }\n    });\n}\n", "const options = 'light';\nexport default options;\n", "import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport OPTIONS from './options';\n/** A list of available themes. */\nconst possibleThemes = [\n    'light',\n    'dark',\n    'white',\n    'black',\n    'light-contrast',\n    'dark-contrast',\n    'white-contrast',\n    'black-contrast'\n];\nexport default function () {\n    this.opts.theme = this.opts.theme || OPTIONS;\n    const theme = this.opts.theme;\n    if (!possibleThemes.includes(theme)) {\n        this.opts.theme = possibleThemes[0];\n    }\n    this._api.push('theme');\n    this.bind('initMenu:after', () => {\n        this.theme(this.opts.theme);\n    });\n}\n/**\n * Get or set the theme for the menu.\n *\n * @param {string} [position] The theme for the menu.\n */\nMmenu.prototype.theme = function (theme = null) {\n    /** The previously used theme */\n    const oldTheme = this.opts.theme;\n    if (theme) {\n        if (possibleThemes.includes(theme)) {\n            this.node.menu.classList.remove(`mm-menu--theme-${oldTheme}`);\n            this.node.menu.classList.add(`mm-menu--theme-${theme}`);\n            this.opts.theme = theme;\n        }\n    }\n    else {\n        return oldTheme;\n    }\n};\n", "const options = {\n    close: false,\n    open: false\n};\nexport default options;\n", "import OPTIONS from './options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n    this.opts.backButton = this.opts.backButton || {};\n    if (!this.opts.offCanvas.use) {\n        return;\n    }\n    //\tExtend options.\n    const options = extend(this.opts.backButton, OPTIONS);\n    const _menu = `#${this.node.menu.id}`;\n    //\tClose menu\n    if (options.close) {\n        let states = [];\n        const setStates = () => {\n            states = [_menu];\n            DOM.children(this.node.pnls, '.mm-panel--opened, .mm-panel--parent').forEach((panel) => {\n                states.push('#' + panel.id);\n            });\n        };\n        this.bind('open:after', () => {\n            history.pushState(null, '', location.pathname + location.search + _menu);\n        });\n        this.bind('open:after', setStates);\n        this.bind('openPanel:after', setStates);\n        this.bind('close:after', () => {\n            states = [];\n            history.back();\n            history.pushState(null, '', location.pathname + location.search);\n        });\n        window.addEventListener('popstate', () => {\n            if (this.node.menu.matches('.mm-menu--opened')) {\n                if (states.length) {\n                    states = states.slice(0, -1);\n                    const hash = states[states.length - 1];\n                    if (hash == _menu) {\n                        this.close();\n                    }\n                    else {\n                        this.openPanel(this.node.menu.querySelector(hash));\n                        history.pushState(null, '', location.pathname + location.search + _menu);\n                    }\n                }\n            }\n        });\n    }\n    if (options.open) {\n        window.addEventListener('popstate', (evnt) => {\n            if (!this.node.menu.matches('.mm-menu--opened') && location.hash == _menu) {\n                this.open();\n            }\n        });\n    }\n}\n", "const options = {\n    add: false\n};\nexport default options;\n", "import OPTIONS from './options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n    this.opts.counters = this.opts.counters || {};\n    //\tExtend options.\n    const options = extend(this.opts.counters, OPTIONS);\n    if (!options.add) {\n        return;\n    }\n    /**\n     * Counting the visible listitems and setting it to the counter element.\n     * @param {HTMLElement} panel Panel to count LIs in.\n     */\n    const count = (panel) => {\n        /** Parent panel for the mutated listitem. */\n        const parent = this.node.pnls.querySelector(`#${panel.dataset.mmParent}`);\n        if (!parent) {\n            return;\n        }\n        /** The counter for the listitem. */\n        const counter = parent.querySelector('.mm-counter');\n        if (!counter) {\n            return;\n        }\n        /** The listitems */\n        const listitems = [];\n        DOM.children(panel, '.mm-listview').forEach((listview) => {\n            listitems.push(...DOM.children(listview, '.mm-listitem'));\n        });\n        counter.innerHTML = DOM.filterLI(listitems).length.toString();\n    };\n    /** Mutation observer the the listitems. */\n    const listitemObserver = new MutationObserver((mutationsList) => {\n        mutationsList.forEach((mutation) => {\n            if (mutation.attributeName == 'class') {\n                count(mutation.target.closest('.mm-panel'));\n            }\n        });\n    });\n    //\tAdd the counters after a listview is initiated.\n    this.bind('initListview:after', (listview) => {\n        /** The panel where the listview is in. */\n        const panel = listview.closest('.mm-panel');\n        /** The parent LI for the panel */\n        const parent = this.node.pnls.querySelector(`#${panel.dataset.mmParent}`);\n        if (!parent) {\n            return;\n        }\n        /** The button inside the parent LI */\n        const button = DOM.children(parent, '.mm-btn')[0];\n        if (!button) {\n            return;\n        }\n        //\tCheck if no counter already excists.\n        if (!DOM.children(button, '.mm-counter').length) {\n            /** The counter for the listitem. */\n            const counter = DOM.create('span.mm-counter');\n            counter.setAttribute('aria-hidden', 'true');\n            button.prepend(counter);\n        }\n        //  Count immediately.\n        count(panel);\n    });\n    //  Count when LI classname changes.\n    this.bind('initListitem:after', (listitem) => {\n        /** The panel where the listitem is in. */\n        const panel = listitem.closest('.mm-panel');\n        if (!panel) {\n            return;\n        }\n        /** The parent LI for the panel. */\n        const parent = this.node.pnls.querySelector(`#${panel.dataset.mmParent}`);\n        if (!parent) {\n            return;\n        }\n        listitemObserver.observe(listitem, {\n            attributes: true\n        });\n    });\n}\n", "const options = {\n    use: false,\n    top: [],\n    bottom: [],\n    position: 'left',\n    type: 'default'\n};\nexport default options;\n", "import OPTIONS from './options';\nimport * as DOM from '../../_modules/dom';\nimport * as media from '../../_modules/matchmedia';\nimport { type, extend } from '../../_modules/helpers';\nexport default function () {\n    this.opts.iconbar = this.opts.iconbar || {};\n    //\tExtend options.\n    const options = extend(this.opts.iconbar, OPTIONS);\n    if (!options.use) {\n        return;\n    }\n    let iconbar;\n    ['top', 'bottom'].forEach((position, n) => {\n        let ctnt = options[position];\n        //\tExtend shorthand options\n        if (type(ctnt) != 'array') {\n            ctnt = [ctnt];\n        }\n        //\tCreate node\n        const part = DOM.create('div.mm-iconbar__' + position);\n        //\tAdd content\n        for (let c = 0, l = ctnt.length; c < l; c++) {\n            if (typeof ctnt[c] == 'string') {\n                part.innerHTML += ctnt[c];\n            }\n            else {\n                part.append(ctnt[c]);\n            }\n        }\n        if (part.children.length) {\n            if (!iconbar) {\n                iconbar = DOM.create('div.mm-iconbar');\n            }\n            iconbar.append(part);\n        }\n    });\n    //\tAdd to menu\n    if (iconbar) {\n        //\tAdd the iconbar.\n        this.bind('initMenu:after', () => {\n            this.node.menu.prepend(iconbar);\n        });\n        //\tEn-/disable the iconbar.\n        let classname = 'mm-menu--iconbar-' + options.position;\n        let enable = () => {\n            this.node.menu.classList.add(classname);\n        };\n        let disable = () => {\n            this.node.menu.classList.remove(classname);\n        };\n        if (typeof options.use == 'boolean') {\n            this.bind('initMenu:after', enable);\n        }\n        else {\n            media.add(options.use, enable, disable);\n        }\n        //\tTabs\n        if (options.type == 'tabs') {\n            iconbar.classList.add('mm-iconbar--tabs');\n            iconbar.addEventListener('click', (evnt) => {\n                const anchor = evnt.target.closest('.mm-iconbar__tab');\n                if (!anchor) {\n                    return;\n                }\n                if (anchor.matches('.mm-iconbar__tab--selected')) {\n                    evnt.stopImmediatePropagation();\n                    return;\n                }\n                try {\n                    const panel = DOM.find(this.node.menu, `${anchor.getAttribute('href')}.mm-panel`)[0];\n                    if (panel) {\n                        evnt.preventDefault();\n                        evnt.stopImmediatePropagation();\n                        this.openPanel(panel, false);\n                    }\n                }\n                catch (err) { }\n            });\n            const selectTab = (panel) => {\n                DOM.find(iconbar, 'a').forEach((anchor) => {\n                    anchor.classList.remove('mm-iconbar__tab--selected');\n                });\n                const anchor = DOM.find(iconbar, '[href=\"#' + panel.id + '\"]')[0];\n                if (anchor) {\n                    anchor.classList.add('mm-iconbar__tab--selected');\n                }\n                else {\n                    const parent = DOM.find(this.node.pnls, `#${panel.dataset.mmParent}`)[0];\n                    if (parent) {\n                        selectTab(parent.closest('.mm-panel'));\n                    }\n                }\n            };\n            this.bind('openPanel:before', selectTab);\n        }\n    }\n}\n", "const options = {\n    add: false,\n    blockPanel: true,\n    visible: 3\n};\nexport default options;\n", "import OPTIONS from './_options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n    this.opts.iconPanels = this.opts.iconPanels || {};\n    //\tExtend options.\n    const options = extend(this.opts.iconPanels, OPTIONS);\n    let keepFirst = false;\n    if (options.visible == 'first') {\n        keepFirst = true;\n        options.visible = 1;\n    }\n    options.visible = Math.min(3, Math.max(1, options.visible));\n    options.visible++;\n    //\tAdd the iconpanels\n    if (options.add) {\n        this.bind('initMenu:after', () => {\n            this.node.menu.classList.add('mm-menu--iconpanel');\n        });\n        /** The classnames that can be set to a panel */\n        const classnames = [\n            'mm-panel--iconpanel-0',\n            'mm-panel--iconpanel-1',\n            'mm-panel--iconpanel-2',\n            'mm-panel--iconpanel-3'\n        ];\n        //  Show only the main panel.\n        if (keepFirst) {\n            this.bind('initMenu:after', () => {\n                var _a;\n                (_a = DOM.children(this.node.pnls, '.mm-panel')[0]) === null || _a === void 0 ? void 0 : _a.classList.add('mm-panel--iconpanel-first');\n            });\n            //  Show parent panel(s).\n        }\n        else {\n            this.bind('openPanel:after', (panel) => {\n                //  Do nothing when opening a vertical submenu\n                if (panel.closest('.mm-listitem--vertical')) {\n                    return;\n                }\n                let panels = DOM.children(this.node.pnls, '.mm-panel');\n                //\tFilter out panels that are not opened.\n                panels = panels.filter((panel) => panel.matches('.mm-panel--parent'));\n                //\tAdd the current panel to the list.\n                panels.push(panel);\n                //\tSlice the opened panels to the max visible amount.\n                panels = panels.slice(-options.visible);\n                //\tAdd the \"iconpanel\" classnames.\n                panels.forEach((panel, p) => {\n                    panel.classList.remove('mm-panel--iconpanel-first', ...classnames);\n                    panel.classList.add(`mm-panel--iconpanel-${p}`);\n                });\n            });\n        }\n        // this.bind('initPanel:after', (panel: HTMLElement) => {\n        //     if (!panel.closest('.mm-listitem--vertical') &&\n        //         !DOM.children(panel, '.mm-panel__blocker')[0]\n        //     ) {\n        //         const blocker = DOM.create('div.mm-blocker.mm-panel__blocker') as HTMLElement;\n        //         panel.prepend(blocker);\n        //     }\n        // });\n    }\n}\n", "const configs = {\n    breadcrumbs: {\n        separator: '/',\n        removeFirst: false\n    }\n};\nexport default configs;\n", "/**\n * Extend shorthand options.\n *\n * @param  {object} options The options to extend.\n * @return {object}\t\t\tThe extended options.\n */\nexport function extendShorthandOptions(options) {\n    if (typeof options == 'boolean' && options) {\n        options = {};\n    }\n    if (typeof options != 'object') {\n        options = {};\n    }\n    if (typeof options.content == 'undefined') {\n        options.content = ['prev', 'title'];\n    }\n    if (!(options.content instanceof Array)) {\n        options.content = [options.content];\n    }\n    if (typeof options.use == 'undefined') {\n        options.use = true;\n    }\n    return options;\n}\n;\n", "import * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n    //\tAdd content\n    var breadcrumbs = DOM.create('div.mm-navbar__breadcrumbs');\n    navbar.append(breadcrumbs);\n    this.bind('initNavbar:after', (panel) => {\n        if (panel.querySelector('.mm-navbar__breadcrumbs')) {\n            return;\n        }\n        DOM.children(panel, '.mm-navbar')[0].classList.add('mm-hidden');\n        var crumbs = [], breadcrumbs = DOM.create('span.mm-navbar__breadcrumbs'), current = panel, first = true;\n        while (current) {\n            current = current.closest('.mm-panel');\n            if (!current.parentElement.matches('.mm-listitem--vertical')) {\n                let title = DOM.find(current, '.mm-navbar__title span')[0];\n                if (title) {\n                    let text = title.textContent;\n                    if (text.length) {\n                        crumbs.unshift(first\n                            ? `<span>${text}</span>`\n                            : `<a \n                                    href=\"#${current.id}\" \n                                    title=\"${this.i18n(this.conf.screenReader.openSubmenu)}\"\n                                    >${text}</a>`);\n                    }\n                }\n                first = false;\n            }\n            current = DOM.find(this.node.pnls, `#${current.dataset.mmParent}`)[0];\n        }\n        if (this.conf.navbars.breadcrumbs.removeFirst) {\n            crumbs.shift();\n        }\n        breadcrumbs.innerHTML = crumbs.join('<span class=\"mm-separator\">' +\n            this.conf.navbars.breadcrumbs.separator +\n            '</span>');\n        DOM.children(panel, '.mm-navbar')[0].append(breadcrumbs);\n    });\n    //\tUpdate for to opened panel\n    this.bind('openPanel:before', (panel) => {\n        var crumbs = panel.querySelector('.mm-navbar__breadcrumbs');\n        breadcrumbs.innerHTML = crumbs ? crumbs.innerHTML : '';\n    });\n}\n", "import * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n    /** The close button. */\n    const close = DOM.create('a.mm-btn.mm-btn--close.mm-navbar__btn');\n    close.setAttribute('aria-label', this.i18n(this.conf.offCanvas.screenReader.closeMenu));\n    //\tAdd the button to the navbar.\n    navbar.append(close);\n    //\tUpdate to target the page node.\n    this.bind('setPage:after', (page) => {\n        close.href = `#${page.id}`;\n    });\n}\n", "import * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n    /** The prev button. */\n    let prev = DOM.create('a.mm-btn.mm-hidden');\n    //\tAdd button to navbar.\n    navbar.append(prev);\n    //  Hide navbar in the panel.\n    this.bind('initNavbar:after', (panel) => {\n        DOM.children(panel, '.mm-navbar')[0].classList.add('mm-hidden');\n    });\n    // Update the button href when opening a panel.\n    this.bind('openPanel:before', (panel) => {\n        if (panel.parentElement.matches('.mm-listitem--vertical')) {\n            return;\n        }\n        prev.classList.add('mm-hidden');\n        /** Original button in the panel. */\n        const original = panel.querySelector('.mm-navbar__btn.mm-btn--prev');\n        if (original) {\n            /** Clone of the original button in the panel. */\n            const clone = original.cloneNode(true);\n            prev.after(clone);\n            prev.remove();\n            prev = clone;\n        }\n    });\n}\n", "import * as DOM from '../../_modules/dom';\nimport { uniqueId } from '../../_modules/helpers';\nexport default function (navbar) {\n    /** Empty wrapper for the searchfield. */\n    let wrapper = DOM.create('div.mm-navbar__searchfield');\n    wrapper.id = uniqueId();\n    //\tAdd button to navbar.\n    navbar.append(wrapper);\n    this.opts.searchfield = this.opts.searchfield || {};\n    this.opts.searchfield.add = true;\n    this.opts.searchfield.addTo = `#${wrapper.id}`;\n}\n", "import * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n    /** The title node in the navbar. */\n    let title = DOM.create('a.mm-navbar__title');\n    //\tAdd title to the navbar.\n    navbar.append(title);\n    //\tUpdate the title to the opened panel.\n    this.bind('openPanel:before', (panel) => {\n        //\tDo nothing in a vertically expanding panel.\n        if (panel.parentElement.matches('.mm-listitem--vertical')) {\n            return;\n        }\n        /** Original title in the panel. */\n        const original = panel.querySelector('.mm-navbar__title');\n        if (original) {\n            /** Clone of the original title in the panel. */\n            const clone = original.cloneNode(true);\n            title.after(clone);\n            title.remove();\n            title = clone;\n        }\n    });\n}\n", "import * as DOM from '../../_modules/dom';\nexport default function (navbar) {\n    navbar.classList.add('mm-navbar--tabs');\n    navbar.closest('.mm-navbars').classList.add('mm-navbars--has-tabs');\n    DOM.children(navbar, 'a').forEach(anchor => {\n        anchor.classList.add('mm-navbar__tab');\n    });\n    /**\n     * Mark a tab as selected.\n     * @param {HTMLElement} panel Opened panel.\n     */\n    function selectTab(panel) {\n        /** The tab that links to the opened panel. */\n        const anchor = DOM.children(navbar, `.mm-navbar__tab[href=\"#${panel.id}\"]`)[0];\n        if (anchor) {\n            anchor.classList.add('mm-navbar__tab--selected');\n            // @ts-ignore\n            anchor.ariaExpanded = 'true';\n        }\n        else {\n            /** The parent listitem. */\n            const parent = DOM.find(this.node.pnls, `#${panel.dataset.mmParent}`)[0];\n            if (parent) {\n                selectTab.call(this, parent.closest('.mm-panel'));\n            }\n        }\n    }\n    this.bind('openPanel:before', (panel) => {\n        //  Remove selected class.\n        DOM.children(navbar, 'a').forEach(anchor => {\n            anchor.classList.remove('mm-navbar__tab--selected');\n            // @ts-ignore\n            anchor.ariaExpanded = 'false';\n        });\n        selectTab.call(this, panel);\n    });\n    this.bind('initPanels:after', () => {\n        //\tAdd animation class to panel.\n        navbar.addEventListener('click', event => {\n            var _a, _b, _c;\n            /** The href for the clicked tab. */\n            const href = (_b = (_a = event.target) === null || _a === void 0 ? void 0 : _a.closest('.mm-navbar__tab')) === null || _b === void 0 ? void 0 : _b.getAttribute('href');\n            try {\n                (_c = DOM.find(this.node.pnls, `${href}.mm-panel`)[0]) === null || _c === void 0 ? void 0 : _c.classList.add('mm-panel--noanimation');\n            }\n            catch (err) { }\n        }, {\n            // useCapture to ensure the logical order.\n            capture: true\n        });\n    });\n}\n", "import CONFIGS from './configs';\nimport { extendShorthandOptions } from './options';\nimport { extend } from '../../_modules/helpers';\nimport * as DOM from '../../_modules/dom';\nimport * as media from '../../_modules/matchmedia';\nimport breadcrumbs from './navbar.breadcrumbs';\nimport close from './navbar.close';\nimport prev from './navbar.prev';\nimport searchfield from './navbar.searchfield';\nimport title from './navbar.title';\nimport tabs from './navbar.tabs';\nNavbars.navbarContents = {\n    breadcrumbs,\n    close,\n    prev,\n    searchfield,\n    title,\n};\nNavbars.navbarTypes = {\n    tabs,\n};\nexport default function Navbars() {\n    this.opts.navbars = this.opts.navbars || [];\n    this.conf.navbars = this.conf.navbars || {};\n    //\tExtend options.\n    extend(this.conf.navbars, CONFIGS);\n    let navs = this.opts.navbars;\n    if (typeof navs == 'undefined') {\n        return;\n    }\n    if (!(navs instanceof Array)) {\n        navs = [navs];\n    }\n    if (!navs.length) {\n        return;\n    }\n    var navbars = {};\n    navs.forEach((options) => {\n        options = extendShorthandOptions(options);\n        if (!options.use) {\n            return;\n        }\n        //\tCreate the navbar element.\n        const navbar = DOM.create('div.mm-navbar');\n        //\tGet the position for the navbar.\n        let { position } = options;\n        //\tRestrict the position to either \"bottom\" or \"top\" (default).\n        if (position !== 'bottom') {\n            position = 'top';\n        }\n        //\tCreate the wrapper for the navbar position.\n        if (!navbars[position]) {\n            navbars[position] = DOM.create('div.mm-navbars.mm-navbars--' + position);\n        }\n        navbars[position].append(navbar);\n        //\tAdd content to the navbar.\n        for (let c = 0, l = options.content.length; c < l; c++) {\n            const ctnt = options.content[c];\n            //\tThe content is a string.\n            if (typeof ctnt == 'string') {\n                const func = Navbars.navbarContents[ctnt];\n                //\tThe content refers to one of the navbar-presets (\"prev\", \"title\", etc).\n                if (typeof func == 'function') {\n                    //\tCall the preset function.\n                    func.call(this, navbar);\n                    //\tThe content is just HTML.\n                }\n                else {\n                    //\tAdd the HTML.\n                    //  Wrap the HTML in a single node\n                    let node = DOM.create('span');\n                    node.innerHTML = ctnt;\n                    //  If there was only a single node, use that.\n                    const children = DOM.children(node);\n                    if (children.length == 1) {\n                        node = children[0];\n                    }\n                    navbar.append(node);\n                }\n                //\tThe content is not a string, it must be an element.\n            }\n            else {\n                navbar.append(ctnt);\n            }\n        }\n        //\tThe type option is set.\n        if (typeof options.type == 'string') {\n            //\tThe function refers to one of the navbar-presets (\"tabs\").\n            const func = Navbars.navbarTypes[options.type];\n            if (typeof func == 'function') {\n                //\tCall the preset function.\n                func.call(this, navbar);\n            }\n        }\n        //\tEn-/disable the navbar.\n        let enable = () => {\n            navbar.classList.remove('mm-hidden');\n        };\n        let disable = () => {\n            navbar.classList.add('mm-hidden');\n        };\n        if (typeof options.use == 'boolean') {\n            this.bind('initMenu:after', enable);\n        }\n        else {\n            media.add(options.use, enable, disable);\n        }\n    });\n    //\tAdd to menu.\n    this.bind('initMenu:after', () => {\n        for (let position in navbars) {\n            this.node.pnls[position == 'bottom' ? 'after' : 'before'](navbars[position]);\n        }\n    });\n}\n", "const options = {\n    scroll: false,\n    update: false\n};\nexport default options;\n", "const configs = {\n    scrollOffset: 0,\n    updateOffset: 50\n};\nexport default configs;\n", "import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport OPTIONS from './options';\nimport CONFIGS from './configs';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n    this.opts.pageScroll = this.opts.pageScroll || {};\n    this.conf.pageScroll = this.conf.pageScroll || {};\n    //\tExtend options.\n    const options = extend(this.opts.pageScroll, OPTIONS);\n    const configs = extend(this.conf.pageScroll, CONFIGS);\n    /** The currently \"active\" section */\n    var section;\n    function scrollTo() {\n        if (section) {\n            // section.scrollIntoView({ behavior: 'smooth' });\n            window.scrollTo({\n                top: section.getBoundingClientRect().top +\n                    document.scrollingElement.scrollTop -\n                    configs.scrollOffset,\n                behavior: 'smooth'\n            });\n        }\n        section = null;\n    }\n    function anchorInPage(href) {\n        try {\n            if (href.slice(0, 1) == '#') {\n                return DOM.find(Mmenu.node.page, href)[0];\n            }\n        }\n        catch (err) { }\n        return null;\n    }\n    if (this.opts.offCanvas.use && options.scroll) {\n        //\tScroll to section after clicking menu item.\n        this.bind('close:after', () => {\n            scrollTo();\n        });\n        this.node.menu.addEventListener('click', event => {\n            var _a, _b;\n            const href = ((_b = (_a = event.target) === null || _a === void 0 ? void 0 : _a.closest('a[href]')) === null || _b === void 0 ? void 0 : _b.getAttribute('href')) || '';\n            section = anchorInPage(href);\n            if (section) {\n                event.preventDefault();\n                //\tIf the sidebar add-on is \"expanded\"...\n                if (this.node.menu.matches('.mm-menu--sidebar-expanded') &&\n                    this.node.wrpr.matches('.mm-wrapper--sidebar-expanded')) {\n                    //\t... scroll the page to the section.\n                    scrollTo();\n                    //\t... otherwise...\n                }\n                else {\n                    //\t... close the menu.\n                    this.close();\n                }\n            }\n        });\n    }\n    //\tUpdate selected menu item after scrolling.\n    if (options.update) {\n        let scts = [];\n        this.bind('initListview:after', (listview) => {\n            const listitems = DOM.children(listview, '.mm-listitem');\n            DOM.filterLIA(listitems).forEach(anchor => {\n                const section = anchorInPage(anchor.getAttribute('href'));\n                if (section) {\n                    scts.unshift(section);\n                }\n            });\n        });\n        let _selected = -1;\n        window.addEventListener('scroll', evnt => {\n            const scrollTop = window.scrollY;\n            for (var s = 0; s < scts.length; s++) {\n                if (scts[s].offsetTop < scrollTop + configs.updateOffset) {\n                    if (_selected !== s) {\n                        _selected = s;\n                        let panel = DOM.children(this.node.pnls, '.mm-panel--opened')[0];\n                        let listitems = DOM.find(panel, '.mm-listitem');\n                        let anchors = DOM.filterLIA(listitems);\n                        anchors = anchors.filter(anchor => anchor.matches('[href=\"#' + scts[s].id + '\"]'));\n                        if (anchors.length) {\n                            this.setSelected(anchors[0].parentElement);\n                        }\n                    }\n                    break;\n                }\n            }\n        }, {\n            passive: true\n        });\n    }\n}\n", "const options = {\n    add: false,\n    addTo: 'panels',\n    noResults: 'No results found.',\n    placeholder: 'Search',\n    search: true,\n    searchIn: 'panels',\n    splash: '',\n    title: 'Search',\n};\nexport default options;\n", "const configs = {\n    cancel: true,\n    clear: true,\n    form: {},\n    input: {},\n    panel: {},\n    submit: false\n};\nexport default configs;\n", "export default {\n    'cancel': 'abbrechen',\n    'Cancel searching': 'Suche abbrechen',\n    'Clear searchfield': 'Suchfeld l\u00F6schen',\n    'No results found.': 'Keine Ergebnisse gefunden.',\n    'Search': 'Suche',\n};\n", "export default {\n    'cancel': '\u0627\u0646\u0635\u0631\u0627\u0641',\n    'Cancel searching': '\u0644\u063A\u0648 \u062C\u0633\u062A\u062C\u0648',\n    'Clear searchfield': '\u067E\u0627\u06A9 \u06A9\u0631\u062F\u0646 \u0641\u06CC\u0644\u062F \u062C\u0633\u062A\u062C\u0648',\n    'No results found.': '\u0646\u062A\u06CC\u062C\u0647\u200C\u0627\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F.',\n    'Search': '\u062C\u0633\u062A\u062C\u0648',\n};\n", "export default {\n    'cancel': 'annuleren',\n    'Cancel searching': 'Zoeken annuleren',\n    'Clear searchfield': 'Zoekveld leeg maken',\n    'No results found.': 'Geen resultaten gevonden.',\n    'Search': 'Zoeken',\n};\n", "export default {\n    'cancel': 'cancelar',\n    'Cancel searching': 'Cancelar pesquisa',\n    'Clear searchfield': 'Limpar campo de pesquisa',\n    'No results found.': 'Nenhum resultado encontrado.',\n    'Search': 'Buscar',\n};\n", "export default {\n    'cancel': '\u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C',\n    'Cancel searching': '\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u043E\u0438\u0441\u043A',\n    'Clear searchfield': '\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u043F\u043E\u043B\u0435 \u043F\u043E\u0438\u0441\u043A\u0430',\n    'No results found.': '\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E.',\n    'Search': '\u041D\u0430\u0439\u0442\u0438',\n};\n", "export default {\n    'cancel': 'zru\u0161i\u0165',\n    'Cancel searching': 'Zru\u0161i\u0165 vyh\u013Ead\u00E1vanie',\n    'Clear searchfield': 'Vymaza\u0165 pole vyh\u013Ead\u00E1vania',\n    'No results found.': 'Neboli n\u00E1jden\u00E9 \u017Eiadne v\u00FDsledky.',\n    'Search': 'Vyh\u013Ead\u00E1vanie',\n};\n", "export default {\n    'cancel': '\u0441\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438',\n    'Cancel searching': '\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0448\u0443\u043A',\n    'Clear searchfield': '\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u043F\u043E\u043B\u0435 \u043F\u043E\u0448\u0443\u043A\u0443',\n    'No results found.': '\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E.',\n    'Search': '\u041F\u043E\u0448\u0443\u043A',\n};\n", "import { add } from '../../../_modules/i18n';\nimport de from './de';\nimport fa from './fa';\nimport nl from './nl';\nimport pt_br from './pt_br';\nimport ru from './ru';\nimport sk from './sk';\nimport uk from './uk';\nexport default function () {\n    add(de, 'de');\n    add(fa, 'fa');\n    add(nl, 'nl');\n    add(pt_br, 'pt_br');\n    add(ru, 'ru');\n    add(sk, 'sk');\n    add(uk, 'uk');\n}\n", "import OPTIONS from './options';\nimport CONFIGS from './configs';\nimport translate from './translations';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\n//  Add the translations.\ntranslate();\nexport default function () {\n    this.opts.searchfield = this.opts.searchfield || {};\n    this.conf.searchfield = this.conf.searchfield || {};\n    //\tExtend options.\n    const options = extend(this.opts.searchfield, OPTIONS);\n    const configs = extend(this.conf.searchfield, CONFIGS);\n    if (!options.add) {\n        return;\n    }\n    switch (options.addTo) {\n        case 'panels':\n            options.addTo = '.mm-panel';\n            break;\n        case 'searchpanel':\n            options.addTo = '.mm-panel--search';\n            break;\n    }\n    switch (options.searchIn) {\n        case 'panels':\n            options.searchIn = '.mm-panel';\n            break;\n    }\n    //  Add a searchfield to panels matching the \"addTo\" querySelector.\n    this.bind('initPanel:after', (panel) => {\n        if (panel.matches(options.addTo) &&\n            !panel.closest('.mm-listitem--vertical')) {\n            initPanel.call(this, panel);\n        }\n    });\n    this.bind('initMenu:after', () => {\n        //  Create the resultspanel.\n        const resultspanel = createResultsPanel.call(this);\n        initPanel.call(this, resultspanel);\n        //  Add a searchfield to anything other than a panel (most likely a navbar).\n        DOM.find(this.node.menu, options.addTo).forEach(wrapper => {\n            if (!wrapper.matches('.mm-panel')) {\n                /** The searchform. */\n                const form = createSearchfield.call(this, true);\n                //  Add the form to the panel.\n                wrapper.append(form);\n                /** The input node. */\n                const input = DOM.find(form, 'input')[0];\n                //  Bind events for opening and closing the resultspanel.\n                // With a splash...\n                if (options.splash.length) {\n                    //  Open on focus.\n                    input.addEventListener('focusin', () => {\n                        this.openPanel(resultspanel, false, false);\n                    });\n                    //  Show cancel button if searchpanel is opened.\n                    this.bind('openPanel:after', (panel) => {\n                        if (panel.matches('.mm-panel--search')) {\n                            form.classList.add('mm-searchfield--cancelable');\n                        }\n                        else {\n                            form.classList.remove('mm-searchfield--cancelable');\n                        }\n                    });\n                    // ...without splash.\n                }\n                else {\n                    //  Open resultspanel when searching.\n                    this.bind('search:after', () => {\n                        this.openPanel(resultspanel, false, false);\n                    });\n                    //  Close resultspanel when resetting.\n                    input.addEventListener('focusout', () => {\n                        if (!input.value.length) {\n                            this.closePanel(resultspanel, false);\n                        }\n                    });\n                }\n                //  Initialize searching.\n                initSearch.call(this, form);\n            }\n        });\n    });\n    //\tBlur searchfield\n    this.bind('close:before', () => {\n        DOM.find(this.node.menu, '.mm-searchfield input').forEach((input) => {\n            input.blur();\n        });\n    });\n}\n/**\n * Create the searchpanel.\n * @param {Mmenu} this\n */\nconst createResultsPanel = function () {\n    /** Options for the searchfield. */\n    const options = this.opts.searchfield;\n    /** Configs for the searchfield. */\n    const configs = this.conf.searchfield;\n    /** The panel. */\n    let panel = DOM.children(this.node.pnls, '.mm-panel--search')[0];\n    //\tOnly once\n    if (panel) {\n        return panel;\n    }\n    panel = DOM.create('div.mm-panel--search');\n    //\tAdd attributes to the panel.    \n    _addAttributes(panel, configs.panel);\n    //  Add a title to the panel.\n    if (options.title.length) {\n        panel.dataset.mmTitle = this.i18n(options.title);\n    }\n    //  Add a listview to the panel.\n    panel.append(DOM.create('ul'));\n    this._initPanel(panel);\n    return panel;\n};\n/**\n * Add a searchfield, splash message and no-results message to a panel.\n * @param {Mmenu}       this\n * @param {HTMLElement} panel The panel to initialise.\n */\nconst initPanel = function (panel) {\n    /** Options for the searchfield. */\n    const options = this.opts.searchfield;\n    //\tCreate the searchfield.\n    if (panel.matches(options.addTo)) {\n        /** Whether or not the panel is the resultspanel */\n        const isResultspanel = panel.matches('.mm-panel--search');\n        //  Only one per panel.\n        if (!DOM.find(panel, '.mm-searchfield').length) {\n            /** The searchform. */\n            const form = createSearchfield.call(this, isResultspanel);\n            if (isResultspanel) {\n                form.classList.add('mm-searchfield--cancelable');\n            }\n            //  Add the form to the panel.\n            panel.prepend(form);\n            //  Initialize searching.\n            initSearch.call(this, form);\n        }\n    }\n    //\tCreate the splash content.\n    if (options.splash.length &&\n        panel.matches('.mm-panel--search')) {\n        //  Only one per panel.\n        if (!DOM.find(panel, '.mm-panel__splash').length) {\n            /** The splash content node. */\n            const splash = DOM.create('div.mm-panel__splash');\n            splash.innerHTML = options.splash;\n            panel.append(splash);\n        }\n    }\n    //  Add no results message.\n    if (options.noResults.length) {\n        //\tOnly once per panel.\n        if (!DOM.find(panel, '.mm-panel__noresults').length) {\n            /** The no results message node. */\n            const message = DOM.create('div.mm-panel__noresults');\n            message.innerHTML = this.i18n(options.noResults);\n            panel.append(message);\n        }\n    }\n};\n/**\n * Create the searchfield.\n * @param {Mmenu}   this\n * @param {boolean} [addCancel=false] Whether or not to add the cancel button\n */\nconst createSearchfield = function (addCancel = false) {\n    /** Options for the searchfield. */\n    const options = this.opts.searchfield;\n    /** Configs for the searchfield. */\n    const configs = this.conf.searchfield;\n    /** The form node. */\n    const form = DOM.create('form.mm-searchfield');\n    //\tAdd attributes to the form\n    _addAttributes(form, configs.form);\n    /** The fieldset node. */\n    const field = DOM.create('div.mm-searchfield__input');\n    form.append(field);\n    /** The input node. */\n    const input = DOM.create('input');\n    field.append(input);\n    //\tAdd attributes to the input\n    input.type = 'text';\n    input.autocomplete = 'off';\n    input.placeholder = this.i18n(options.placeholder);\n    input.setAttribute('aria-label', this.i18n(options.placeholder));\n    _addAttributes(input, configs.input);\n    //\tAdd a button to submit to the form.\n    if (configs.submit) {\n        /** The submit button. */\n        const submit = DOM.create('button.mm-btnreset.mm-btn.mm-btn--next.mm-searchfield__btn');\n        submit.type = 'submit';\n        field.append(submit);\n    }\n    //\tAdd a button to clear the searchfield.\n    else if (configs.clear) {\n        /** The reset button. */\n        const reset = DOM.create('button.mm-btnreset.mm-btn.mm-btn--close.mm-searchfield__btn');\n        reset.type = 'reset';\n        reset.setAttribute('aria-label', this.i18n('Clear searchfield'));\n        field.append(reset);\n        //  Apparently, resetting a form doesn't trigger any event on the input,\n        //  so we manually dispatch the event, one frame later :/\n        form.addEventListener('reset', () => {\n            window.requestAnimationFrame(() => {\n                input.dispatchEvent(new Event('input'));\n            });\n        });\n    }\n    // Add a button to close the searchpanel.\n    if (configs.cancel && addCancel) {\n        /** The cancel button. */\n        const cancel = DOM.create('a.mm-searchfield__cancel');\n        cancel.href = '#';\n        cancel.setAttribute('aria-label', this.i18n('Cancel searching'));\n        cancel.textContent = this.i18n('cancel');\n        form.append(cancel);\n        // Close the search panel.\n        cancel.addEventListener('click', event => {\n            event.preventDefault();\n            this.closePanel(DOM.children(this.node.pnls, '.mm-panel--search')[0], false);\n        });\n    }\n    return form;\n};\n/**\n * Initialize the searching.\n * @param {Mmenu}       this\n * @param {HTMLElement} form The searchform.\n */\nconst initSearch = function (form) {\n    /** Options for the searchfield. */\n    const options = this.opts.searchfield;\n    /** The panel the results will be in. */\n    const resultspanel = form.closest('.mm-panel') || DOM.find(this.node.pnls, '.mm-panel--search')[0];\n    /** The input node. */\n    const input = DOM.find(form, 'input')[0];\n    /** Where to search. */\n    let searchIn = resultspanel.matches('.mm-panel--search')\n        ? DOM.children(this.node.pnls, options.searchIn)\n        : [resultspanel];\n    //  Filter out the resultspanel\n    searchIn = searchIn.filter(panel => !panel.matches('.mm-panel--search'));\n    /** Search */\n    const search = () => {\n        /** The searchquery */\n        const query = input.value.toLowerCase().trim();\n        if (query.length) {\n            form.classList.add('mm-searchfield--searching');\n        }\n        else {\n            form.classList.remove('mm-searchfield--searching');\n        }\n        if (!options.search) {\n            return;\n        }\n        /** All listitems */\n        const listitems = [];\n        searchIn.forEach(panel => {\n            //  Scroll all panels to top.\n            panel.scrollTop = 0;\n            //  Find listitems.\n            listitems.push(...DOM.find(panel, '.mm-listitem'));\n        });\n        //\tSearch\n        if (query.length) {\n            // Trigger event.\n            this.trigger('search:before');\n            resultspanel.classList.add('mm-panel--searching');\n            //\tAdd data attribute to the matching listitems.\n            listitems.forEach((listitem) => {\n                const text = DOM.children(listitem, '.mm-listitem__text')[0];\n                if (!text || DOM.text(text).toLowerCase().indexOf(query) > -1) {\n                    listitem.dataset.mmSearchresult = query;\n                }\n            });\n            /** The number of matching results. */\n            let count = 0;\n            //  Resultspanel: Copy results to resultspanel.\n            if (resultspanel.matches('.mm-panel--search')) {\n                count = _searchResultsPanel(resultspanel, query, searchIn);\n                //  Search per panel: Hide the non-matching listitems.\n            }\n            else {\n                count = _searchPerPanel(query, searchIn);\n            }\n            resultspanel.classList[count == 0 ? 'add' : 'remove']('mm-panel--noresults');\n            // Trigger event.\n            this.trigger('search:after');\n            //  Don't search, reset all.\n        }\n        else {\n            // Trigger event.\n            this.trigger('clear:before');\n            resultspanel.classList.remove('mm-panel--searching', 'mm-panel--noresults');\n            //  Resultspanel.\n            if (resultspanel.matches('.mm-panel--search')) {\n                _resetResultsPanel(resultspanel);\n                if (!options.splash) {\n                    this.closePanel(resultspanel, false, false);\n                }\n                //  Search per panel: Show all listitems and dividers.\n            }\n            else {\n                _resetPerPanel(searchIn);\n            }\n            // Trigger event.\n            this.trigger('clear:after');\n        }\n    };\n    input.addEventListener('input', search);\n    search();\n};\nconst _searchResultsPanel = (resultspanel, query, searchIn) => {\n    /** The listview for the results/ */\n    const listview = DOM.find(resultspanel, '.mm-listview')[0];\n    //  Clear listview.\n    listview.innerHTML = '';\n    /** Amount of resutls found. */\n    let count = 0;\n    searchIn.forEach(panel => {\n        /** The results in this panel. */\n        const results = DOM.find(panel, `[data-mm-searchresult=\"${query}\"]`);\n        count += results.length;\n        if (results.length) {\n            /** Title for the panel. */\n            const title = DOM.find(panel, '.mm-navbar__title')[0];\n            //  Add a divider to indicate in what panel the results are.\n            if (title) {\n                const divider = DOM.create('li.mm-divider');\n                divider.innerHTML = title.innerHTML;\n                listview.append(divider);\n            }\n            //  Add the results\n            results.forEach((result) => {\n                const clone = result.cloneNode(true);\n                listview.append(clone);\n            });\n        }\n    });\n    //  Remove inline subpanels.\n    DOM.find(listview, '.mm-panel').forEach(panel => {\n        panel.remove();\n    });\n    //  Remove ID's and data-attributes\n    ['id', 'data-mm-parent', 'data-mm-child'].forEach(attr => {\n        DOM.find(listview, `[${attr}]`).forEach(elem => {\n            elem.removeAttribute(attr);\n        });\n    });\n    //  Remove \"opened\" class\n    DOM.find(listview, '.mm-listitem--opened').forEach(listitem => {\n        listitem.classList.remove('mm-listitem--opened');\n    });\n    return count;\n};\nconst _resetResultsPanel = (resultspanel) => {\n    /** The listview for the results. */\n    const listview = DOM.find(resultspanel, '.mm-listview')[0];\n    //  Clear listview.\n    listview.innerHTML = '';\n};\nconst _searchPerPanel = (query, searchIn) => {\n    /** Amount of resutls found. */\n    let count = 0;\n    searchIn.forEach(panel => {\n        /** The results in this panel. */\n        const results = DOM.find(panel, `[data-mm-searchresult=\"${query}\"]`);\n        count += results.length;\n        if (results.length) {\n            //  Add first preceeding divider to the results.\n            results.forEach(result => {\n                const divider = DOM.prevAll(result, '.mm-divider')[0];\n                if (divider) {\n                    divider.dataset.mmSearchresult = query;\n                }\n            });\n        }\n        DOM.find(panel, '.mm-listitem, .mm-divider').forEach(item => {\n            //  Hide all\n            item.classList.add('mm-hidden');\n            //  Show matching + its parents.\n            if (item.dataset.mmSearchresult === query) {\n                [item, ...DOM.parents(item, '.mm-listitem')].forEach(item2 => {\n                    item2.classList.remove('mm-hidden');\n                });\n            }\n        });\n    });\n    return count;\n};\nconst _resetPerPanel = (searchIn) => {\n    searchIn.forEach((panel) => {\n        DOM.find(panel, '.mm-listitem, .mm-divider').forEach(item => {\n            item.classList.remove('mm-hidden');\n        });\n    });\n};\n/**\n * Add array of attributes to an element.\n * @param {HTMLEement}  element     The element to add the attributes to.\n * @param {Object}      attributes  The attributes to add.\n */\nconst _addAttributes = (element, attributes) => {\n    if (attributes) {\n        Object.keys(attributes).forEach(a => {\n            element[a] = attributes[a];\n        });\n    }\n};\n", "const options = {\n    add: false,\n    addTo: 'panels'\n};\nexport default options;\n", "import OPTIONS from './options';\nimport * as DOM from '../../_modules/dom';\nimport * as support from '../../_modules/support';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n    this.opts.sectionIndexer = this.opts.sectionIndexer || {};\n    //\tExtend options.\n    const options = extend(this.opts.sectionIndexer, OPTIONS);\n    if (!options.add) {\n        return;\n    }\n    this.bind('initPanels:after', () => {\n        //\tAdd the indexer, only if it does not allready excists\n        if (!this.node.indx) {\n            let buttons = '';\n            'abcdefghijklmnopqrstuvwxyz'.split('').forEach(letter => {\n                buttons += '<a href=\"#\">' + letter + '</a>';\n            });\n            let indexer = DOM.create('div.mm-sectionindexer');\n            indexer.innerHTML = buttons;\n            this.node.pnls.prepend(indexer);\n            this.node.indx = indexer;\n            //\tPrevent default behavior when clicking an anchor\n            this.node.indx.addEventListener('click', evnt => {\n                const anchor = evnt.target;\n                if (anchor.matches('a')) {\n                    evnt.preventDefault();\n                }\n            });\n            //\tScroll onMouseOver / onTouchStart\n            let mouseOverEvent = evnt => {\n                if (!evnt.target.matches('a')) {\n                    return;\n                }\n                const letter = evnt.target.textContent;\n                const panel = DOM.children(this.node.pnls, '.mm-panel--opened')[0];\n                let newTop = -1, oldTop = panel.scrollTop;\n                panel.scrollTop = 0;\n                DOM.find(panel, '.mm-divider')\n                    .filter(divider => !divider.matches('.mm-hidden'))\n                    .forEach(divider => {\n                    if (newTop < 0 &&\n                        letter ==\n                            divider.textContent\n                                .trim()\n                                .slice(0, 1)\n                                .toLowerCase()) {\n                        newTop = divider.offsetTop;\n                    }\n                });\n                panel.scrollTop = newTop > -1 ? newTop : oldTop;\n            };\n            if (support.touch) {\n                this.node.indx.addEventListener('touchstart', mouseOverEvent);\n                this.node.indx.addEventListener('touchmove', mouseOverEvent);\n            }\n            else {\n                this.node.indx.addEventListener('mouseover', mouseOverEvent);\n            }\n        }\n        //\tShow or hide the indexer\n        this.bind('openPanel:before', (panel) => {\n            const active = DOM.find(panel, '.mm-divider').filter(divider => !divider.matches('.mm-hidden')).length;\n            this.node.indx.classList[active ? 'add' : 'remove']('mm-sectionindexer--active');\n        });\n    });\n}\n", "const options = {\n    current: true,\n    hover: false,\n    parent: false\n};\nexport default options;\n", "import OPTIONS from './options';\nimport * as DOM from '../../_modules/dom';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n    this.opts.setSelected = this.opts.setSelected || {};\n    //\tExtend options.\n    const options = extend(this.opts.setSelected, OPTIONS);\n    //\tFind current by URL\n    if (options.current == 'detect') {\n        const findCurrent = (url) => {\n            url = url.split('?')[0].split('#')[0];\n            const anchor = this.node.menu.querySelector('a[href=\"' + url + '\"], a[href=\"' + url + '/\"]');\n            if (anchor) {\n                this.setSelected(anchor.parentElement);\n            }\n            else {\n                const arr = url.split('/').slice(0, -1);\n                if (arr.length) {\n                    findCurrent(arr.join('/'));\n                }\n            }\n        };\n        this.bind('initMenu:after', () => {\n            findCurrent.call(this, window.location.href);\n        });\n        //\tRemove current selected item\n    }\n    else if (!options.current) {\n        this.bind('initListview:after', (listview) => {\n            DOM.children(listview, '.mm-listitem--selected').forEach((listitem) => {\n                listitem.classList.remove('mm-listitem--selected');\n            });\n        });\n    }\n    //\tAdd :hover effect on items\n    if (options.hover) {\n        this.bind('initMenu:after', () => {\n            this.node.menu.classList.add('mm-menu--selected-hover');\n        });\n    }\n    //\tSet parent item selected for submenus\n    if (options.parent) {\n        this.bind('openPanel:after', (panel) => {\n            //\tRemove all\n            DOM.find(this.node.pnls, '.mm-listitem--selected-parent').forEach((listitem) => {\n                listitem.classList.remove('mm-listitem--selected-parent');\n            });\n            //\tMove up the DOM tree\n            let current = panel;\n            while (current) {\n                let li = DOM.find(this.node.pnls, `#${current.dataset.mmParent}`)[0];\n                current = li === null || li === void 0 ? void 0 : li.closest('.mm-panel');\n                if (li && !li.matches('.mm-listitem--vertical')) {\n                    li.classList.add('mm-listitem--selected-parent');\n                }\n            }\n        });\n        this.bind('initMenu:after', () => {\n            this.node.menu.classList.add('mm-menu--selected-parent');\n        });\n    }\n}\n", "const options = {\n    collapsed: {\n        use: false,\n    },\n    expanded: {\n        use: false,\n        initial: 'open'\n    }\n};\nexport default options;\n", "import Mmenu from '../../core/oncanvas/mmenu.oncanvas';\nimport OPTIONS from './options';\nimport * as media from '../../_modules/matchmedia';\nimport { extend } from '../../_modules/helpers';\nexport default function () {\n    // Only for off-canvas menus.\n    if (!this.opts.offCanvas.use) {\n        return;\n    }\n    this.opts.sidebar = this.opts.sidebar || {};\n    //\tExtend options.\n    const options = extend(this.opts.sidebar, OPTIONS);\n    //\tCollapsed\n    if (options.collapsed.use) {\n        //\tMake the menu collapsable.\n        this.bind('initMenu:after', () => {\n            this.node.menu.classList.add('mm-menu--sidebar-collapsed');\n        });\n        /** Enable the collapsed sidebar */\n        let enable = () => {\n            this.node.wrpr.classList.add('mm-wrapper--sidebar-collapsed');\n        };\n        /** Disable the collapsed sidebar */\n        let disable = () => {\n            this.node.wrpr.classList.remove('mm-wrapper--sidebar-collapsed');\n        };\n        if (typeof options.collapsed.use === 'boolean') {\n            this.bind('initMenu:after', enable);\n        }\n        else {\n            media.add(options.collapsed.use, enable, disable);\n        }\n    }\n    //\tExpanded\n    if (options.expanded.use) {\n        //\tMake the menu expandable\n        this.bind('initMenu:after', () => {\n            this.node.menu.classList.add('mm-menu--sidebar-expanded');\n        });\n        let expandedEnabled = false;\n        /** Enable the expanded sidebar */\n        let enable = () => {\n            expandedEnabled = true;\n            this.node.wrpr.classList.add('mm-wrapper--sidebar-expanded');\n            this.node.menu.removeAttribute('aria-modal');\n            this.open();\n            Mmenu.node.page.removeAttribute('inert');\n        };\n        /** Disable the expanded sidebar */\n        let disable = () => {\n            expandedEnabled = false;\n            this.node.wrpr.classList.remove('mm-wrapper--sidebar-expanded');\n            this.node.menu.setAttribute('aria-modal', 'true');\n            this.close();\n        };\n        if (typeof options.expanded.use == 'boolean') {\n            this.bind('initMenu:after', enable);\n        }\n        else {\n            media.add(options.expanded.use, enable, disable);\n        }\n        //  Store exanded state when opening and closing the menu.\n        this.bind('close:after', () => {\n            if (expandedEnabled) {\n                window.sessionStorage.setItem('mmenuExpandedState', 'closed');\n            }\n        });\n        this.bind('open:after', () => {\n            if (expandedEnabled) {\n                window.sessionStorage.setItem('mmenuExpandedState', 'open');\n                Mmenu.node.page.removeAttribute('inert');\n            }\n        });\n        //  Set the initial state\n        let initialState = options.expanded.initial;\n        const state = window.sessionStorage.getItem('mmenuExpandedState');\n        switch (state) {\n            case 'open':\n            case 'closed':\n                initialState = state;\n                break;\n        }\n        if (initialState === 'closed') {\n            this.bind('init:after', () => {\n                this.close();\n            });\n        }\n    }\n}\n", "/*!\n * mmenu.js\n * mmenujs.com\n *\n * Copyright (c) Fred Heusschen\n * frebsite.nl\n */\n\n//\tCore\nimport Mmenu from '../dist/core/oncanvas/mmenu.oncanvas';\n\n//\tCore add-ons\nimport offcanvas from '../dist/core/offcanvas/mmenu.offcanvas';\nimport scrollBugFix from '../dist/core/scrollbugfix/mmenu.scrollbugfix';\nimport theme from '../dist/core/theme/mmenu.theme';\n\n//\tAdd-ons\nimport backButton from '../dist/addons/backbutton/mmenu.backbutton';\nimport counters from '../dist/addons/counters/mmenu.counters';\nimport iconbar from '../dist/addons/iconbar/mmenu.iconbar';\nimport iconPanels from '../dist/addons/iconpanels/mmenu.iconpanels';\nimport navbars from '../dist/addons/navbars/mmenu.navbars';\nimport pageScroll from '../dist/addons/pagescroll/mmenu.pagescroll';\nimport searchfield from '../dist/addons/searchfield/mmenu.searchfield';\nimport sectionIndexer from '../dist/addons/sectionindexer/mmenu.sectionindexer';\nimport setSelected from '../dist/addons/setselected/mmenu.setselected';\nimport sidebar from '../dist/addons/sidebar/mmenu.sidebar';\n\n\nMmenu.addons = {\n    //\tCore add-ons\n    offcanvas,\n    scrollBugFix,\n    theme,\n\n    //\tAdd-ons\n    backButton,\n    counters,\n    iconbar,\n    iconPanels,\n    navbars,\n    pageScroll,\n    searchfield,\n    sectionIndexer,\n    setSelected,\n    sidebar\n};\n\n//  Export module\nexport default Mmenu;\n\n//\tGlobal namespace\nif (window) {\n    window.Mmenu = Mmenu;\n}", "// Entry point for the build script in your package.json\nimport \"@hotwired/turbo-rails\"\nimport * as bootstrap from \"bootstrap\"\nimport \"./controllers\"\n\n\n//\n//\n// MOBILE MENUE\nimport Mmenu from \"mmenu-js\"\n\nlet menu\n\ndocument.addEventListener(\"turbo:load\", () => {\n  if (menu) {\n    menu.node = {}\n    menu.node.menu = document.querySelector(\"#mobilemenu\")\n    menu._initMenu()\n    menu._initPanels()\n    menu._initOpened()\n    menu.setPage()\n  } else {\n\n    menu = new Mmenu( \"#mobilemenu\", {\n      \"setSelected\": {\n        \"parent\": true\n      },\n      \"navbar\": {\n        \"title\": \"Men\u00FC\"\n      },\n      \"offCanvas\": {\n        \"position\": \"right\"\n      },\n      \"navbars\": [\n        {\n          \"position\": \"top\",\n          \"content\": [\n            \"prev\",\n            \"title\",\n            \"close\"\n          ]\n        }\n      ]\n    }, {\n      offCanvas: {\n        page: {\n          selector: \".mobile-helper\"\n        }\n      }\n    })\n  }\n})"],
  "mappings": "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",
  "names": ["consumer", "error", "type", "consumer", "s", "consumer", "s", "subscription", "a", "x", "t", "clone", "f", "y", "i", "q", "v", "o", "type", "value", "a", "noop", "b", "fn", "all", "binder", "r", "copy", "isDuplicated", "k", "name", "eq", "l", "s", "n", "indexOf", "os", "browser", "userAgent", "mediaMatch", "isTouch", "isTablet", "isPhone", "browsers", "oses", "start", "end", "count", "ie", "deviceType", "map", "path", "d", "left", "p", "e", "dom", "nu", "html", "text", "contains", "isRoot", "stop", "isShadowRoot", "is", "ancestor", "descend", "child", "selector", "reflow", "sibling", "parent", "children", "owner", "filter", "top", "translate", "scrollLeft", "viewport", "isSafari", "shallow", "isHTMLElement", "values", "hasAttribute", "get", "getOption", "set", "lookup", "lastChild", "before", "range", "c", "reset", "isBlock", "parentBlock", "scope", "parents", "elm", "resolve", "prev", "next", "add", "from", "to", "option", "customElements", "validChildren", "isValid", "isInline", "rgbaColour", "g", "h", "self", "right", "bottom", "decode", "str", "match", "data", "getContext", "deep", "getStyle", "w", "getParents", "node", "select", "context", "create", "parentElm", "createFragment", "remove", "head", "toggleClass", "hasClass", "show", "hide", "uniqueId", "insertAfter", "reference", "nextSibling", "pe", "isNonEmptyElement", "isNamedAnchor", "isEmpty", "options", "firstChild", "split", "bind", "unbind", "dispatch", "fire", "isEditable", "destroy", "_", "error", "toString", "clear", "on", "closest", "uid", "descendants$1", "descendant", "m", "registry", "removeDirectAnnotation", "register", "isBoundary", "walk", "offset", "process", "r2", "min", "max", "container", "getClientRects", "isVisible", "isEqual", "getNode", "index", "trim", "point", "after", "adt", "hasFocus", "reposition", "isTarget", "leanRight", "location", "HDirection", "cell", "action", "field", "siblings", "isSpan", "isImage", "isMedia", "touch", "width", "height", "selectedElmX", "selectedElmY", "handle", "split$1", "normalize", "getOuter", "find", "last", "editor", "indent", "empty", "validate", "removeNode", "pos", "moveCaret", "isInlineTarget", "moveSelection", "table", "cells", "tableSelection", "emptyBlock", "first", "isContentEditable", "merge", "rng", "parentNode", "prevSibling", "unwrap", "applyStyles", "formatList", "format", "isZwsp", "hasContentEditableState", "freeze", "seal", "apply", "construct", "getGlobal", "_createTrustedTypesPolicy", "window", "document", "HTMLTemplateElement", "Node", "Element", "NodeFilter", "HTMLFormElement", "DOMParser", "getChildNodes", "getParentNode", "createDocumentFragment", "importNode", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "CUSTOM_ELEMENT", "isRegexOrFunction", "_parseConfig", "_checkValidNamespace", "_forceRemove", "_removeAttribute", "_initDocument", "_createNodeIterator", "_isClobbered", "_isNode", "_executeHook", "_sanitizeElements", "_isValidAttribute", "_isBasicCustomElement", "_sanitizeAttributes", "_sanitizeShadowDOM", "purify", "sanitizeNamespaceElement", "preprocess", "addNodeFilter", "isInlineElement", "addRootBlocks", "exports", "fireEvent", "content", "y2", "x2", "start2", "end2", "script", "j", "diff", "trimZwsp", "write", "cls", "init", "setup", "collapse", "getContent", "setContent", "getStart$1", "getEnd", "getBookmark", "moveToBookmark", "getNode$1", "normRng", "placeCaretAt", "getBoundingClientRect", "isBr", "removedOptions", "removedPlugins", "deprecatedOptions", "deprecatedPlugins", "has", "registerEvents", "confirm", "console", "findAll", "now", "uuid", "cache", "openNotification", "search", "get$2", "parseSelector", "getComputedStyle", "formats", "firstElement", "blockBoundary", "blockPosition", "blockPos", "el", "deleteRange", "deleteAction", "read", "getElement", "fromLocation", "BreakType", "flip", "VDirection", "isElement", "caretPosition", "forward", "insertBlock", "re", "execute", "getPositionsUntil", "SimpleResultType", "fallback", "partition", "api", "isTextBlock", "createNewBlock", "getAction", "dt", "effect", "currentNode", "preProcess", "postProcess", "FakeCaretPosition", "prevScope", "state", "elementSelectionAttr", "showCaret", "showBlockCaretContainer", "isPasteBin", "spot", "event", "each", "DELETE", "setEditorCommandState", "selection", "focusBody", "applyAttributes", "normalizeSelection", "autoFocus", "focusEditor", "css", "loadIcons", "render", "initEditor", "keys", "sectionResult", "defaultOptions", "toggleFormat", "font", "command", "nativeEvents", "prepend", "extra", "editors", "pattern", "extend", "DOM", "preInit", "round", "tinymce", "v", "x", "t", "o", "type", "value", "a", "noop", "b", "fn", "all", "f", "binder", "i", "r", "copy", "k", "name", "key", "p", "isHTMLElement", "isElement", "e", "text", "y", "base", "parents", "parent", "children", "nu", "rows", "columns", "row", "cells", "section", "isShadowRoot", "is", "ancestor", "s", "child", "selector", "left", "start", "contains", "end", "css", "styles", "cell", "fallback", "table", "mediaMatch", "find", "browsers", "oses", "ie", "set", "h", "get", "getOuter", "max", "width", "before", "after", "grid", "cloneRow", "detail", "w", "col", "c", "n", "top", "translate", "body", "viewport", "total", "filter", "getWidth", "columns$1", "d", "getHeight", "rows$1", "zero", "j", "getOption", "last", "clone", "mutate", "options", "bounds", "first", "document", "isEmptyTag", "universe", "head", "prune", "path", "getIsRoot", "ephemera", "isTable", "offset", "main", "resizeTable", "isHeaderCells", "sync", "colgroup", "extract", "error", "adt", "resize", "height", "add", "unmerge", "merge", "isBr", "mergable", "unmergable", "editor", "cloneFormats", "getTableSectionType", "execute", "effect", "range", "values", "scan", "getRows", "getAction", "selection", "Response", "right", "indexOf", "clear", "on", "relative", "exact", "selectNode", "_", "read", "getStart", "_e", "Event", "bind", "unbind", "keys", "update", "sink", "go", "destroy", "resolve", "isResizable", "create", "hide", "show", "refresh", "v", "x", "t", "o", "type", "value", "a", "i", "noop", "f", "b", "fn", "all", "binder", "thunk", "indexOf", "r", "s", "k", "name", "left", "suffix", "start", "prefix", "end", "dom", "html", "text", "y", "parts", "p", "element", "isHTMLElement", "e", "base", "contains", "parents", "stop", "children", "offset", "isShadowRoot", "reflow", "getOffset", "set", "h", "get", "getOuter", "properties", "max", "top", "translate", "box", "body", "win", "browser", "mediaMatch", "isTouch", "isTablet", "isPhone", "group", "browsers", "oses", "ie", "query", "filter", "parent", "width", "height", "d", "path", "point", "w", "position", "original", "right", "bottom", "c", "output", "error", "optional", "SimpleResultType", "values", "nu", "j", "fallback", "partition", "input", "extract", "toString", "field", "keys", "schema", "label", "adt", "transform", "handlers", "can", "abort", "run", "dispatch", "dispatchEvent", "configs", "closest", "owner", "clone", "write", "behaviours", "order", "read", "classes", "item", "child", "build", "me", "events", "subs", "config", "components", "is", "ancestor", "is$1", "selector", "EventConfiguration", "sequence", "required", "placement", "boundsRestriction", "labelPrefix", "southeast", "southwest", "northeast", "northwest", "south", "north", "east", "west", "min", "anchor", "bounds$1", "active", "rest", "getConfig", "getEvents", "hasFocus", "viewport", "bounds", "maxX", "maxY", "reposition", "layout", "isVisible", "revoke", "clear", "on", "round", "parse", "rect", "options", "layouts", "getClasses", "make", "AttributeValue", "range", "focus", "last", "contents", "fe", "lookup", "store", "valueThunk", "replace", "_", "part", "detail", "units", "u", "g", "uids", "factory", "sketch", "isDisabled", "before", "after", "n", "FocusInsideModes", "getKeydownRules", "getKeyupRules", "rule", "toEvents", "focusIn", "findCurrent", "go", "execute", "move", "moveLeft", "moveRight", "first", "matrix", "menu", "replacer", "init", "primary", "expand", "refresh", "getMenus", "HighlightOnOpen", "setup", "ExpandHighlightDecision", "onRight", "onLeft", "se", "repositionMenus", "getBounds", "st", "setContent", "hide", "Button", "getOpt", "freeze", "seal", "apply", "construct", "l", "getGlobal", "_createTrustedTypesPolicy", "window", "document", "HTMLTemplateElement", "Node", "Element", "NodeFilter", "HTMLFormElement", "DOMParser", "remove", "getParentNode", "createDocumentFragment", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "CUSTOM_ELEMENT", "isRegexOrFunction", "_parseConfig", "_checkValidNamespace", "_forceRemove", "_removeAttribute", "_initDocument", "_createNodeIterator", "_isClobbered", "_isNode", "_executeHook", "_sanitizeElements", "parentNode", "_isValidAttribute", "_isBasicCustomElement", "_sanitizeAttributes", "_sanitizeShadowDOM", "svg", "open", "close", "anchorOverrides", "ToolbarMode", "ToolbarLocation", "isStickyToolbar", "api", "ItemResponse", "placeholder", "isSeparator", "show", "escape", "m", "getApi", "search", "icon", "renderIcon", "rgbaColour", "red", "hexColour", "prune", "cache", "add", "defaultCols", "custom", "onAction", "select", "emitExecute", "render", "builder", "map", "data", "bind", "getAnchor", "fetch", "Dropdown", "FocusMode", "menuHasIcons", "renderText", "touch", "pointerEvents", "unbind", "stopper", "cutter", "eventHandler", "listeners", "findHandler", "find", "register", "onItemAction", "setValueFrom", "edge", "step", "snapStart", "snap", "rounded", "setValue", "choose", "record", "renderTextField", "spectrumPart", "thumbPart", "self", "pattern", "throttle", "iframe", "title", "image", "resolve", "z", "img", "role", "option", "supported", "labelPart", "thumb", "renderHeader", "leaf", "button", "toggle", "childrenVisible", "expandedIds", "currentValue", "sandbox", "mapError", "action", "getAction", "history", "initialData", "flip", "bubbleSize", "inline", "getData", "isElement", "create", "attach", "types", "meta", "setGroups", "getOffsetParent", "offsetParent$1", "offsetParent", "location", "isDocked", "elm", "getBehaviours$2", "getBusySpec", "within", "overflow", "isToggleButton", "View", "view", "exists", "toolbar", "toggleWithoutFocusing", "isOpen", "skinUiCss", "shadowDomSkinCss", "skinUrl", "getFetch", "backstage", "dataset", "onSetup", "Delimiter", "fontFamily", "customEvents", "oldStart", "oldEnd", "number", "pt", "res", "fallbackFormat", "arrow", "tooltip", "identifyButtons", "comp", "re", "editor", "startNode", "detection", "change", "xRange", "yRange", "fixed$1", "reset", "snapTo", "ResizeTypes", "resize", "singleton", "platform", "partMenubar", "partToolbar", "partMultipleToolbar", "partPromotion", "partSocket", "partSidebar", "partHeader", "partThrobber", "partViewWrapper", "isHidden", "handle", "renderComponents", "hasGrown", "pClose", "getSink", "block", "unblock", "showTab", "dialog", "root", "confirm", "v", "x", "t", "o", "type", "a", "f", "start", "contains", "end", "s", "isElement", "text", "i", "offset", "e", "require_plugin", "v", "x", "t", "o", "type", "a", "i", "noop", "b", "contains", "f", "r", "left", "text", "list", "k", "rels", "anchorElm", "isElement", "assumeExternalTargets", "title", "link", "e", "parents", "editor", "require_plugin", "v", "x", "t", "o", "type", "a", "noop", "b", "fn", "f", "i", "r", "find", "left", "text", "y", "contains", "p", "name", "isHTMLElement", "e", "children", "isShadowRoot", "is", "ancestor", "s", "selector", "parent", "k", "isElement", "empty", "offset", "elm", "firstChild", "lastChild", "l", "parents", "isSelected", "child", "cast", "start", "get", "set", "entries", "end", "container", "nextSibling", "_", "contains$1", "require_plugin", "value", "get", "set", "v", "x", "t", "o", "type", "a", "f", "r", "i", "k", "p", "isHTMLElement", "isElement", "read", "add", "text", "y", "charMap", "global", "regExp", "selector", "n", "children", "show", "hide", "fn", "e", "require_plugin", "get", "v", "e", "require_plugin", "t", "a", "x", "f", "r", "i", "type", "j", "cache", "map", "options", "s", "node", "text", "get", "fn", "HTMLElement", "FrameLoadingStyle", "location", "left", "right", "i", "_", "FetchMethod", "error", "FormSubmissionState", "FormEnctype", "cookie", "x", "y", "options", "type", "TimingMetric", "VisitState", "SystemStatusCode", "session", "visit", "PageStage", "e", "element", "document", "c", "createConsumer", "m", "x", "createPopper", "start", "start", "name", "style", "x", "y", "getComputedStyle", "getComputedStyle", "window", "min", "max", "v", "toPaddingObject", "options", "popperOffsets", "min", "max", "offset", "effect", "x", "y", "popper", "getComputedStyle", "options", "effect", "options", "window", "hash", "x", "y", "x", "y", "getComputedStyle", "getComputedStyle", "clippingParents", "getComputedStyle", "reference", "start", "options", "popperOffsets", "offset", "options", "placements", "placement", "a", "b", "options", "placements", "placement", "i", "start", "_loop", "_i", "checks", "offset", "options", "x", "y", "options", "popperOffsets", "offset", "min", "max", "start", "fn", "merged", "defaultModifiers", "defaultOptions", "createPopper", "reference", "popper", "options", "m", "fn", "state", "effect", "noopFn", "createPopper", "defaultModifiers", "createPopper", "elementMap", "Map", "set", "element", "key", "instance", "has", "instanceMap", "get", "size", "console", "error", "Array", "from", "keys", "remove", "delete", "MAX_UID", "MILLISECONDS_MULTIPLIER", "TRANSITION_END", "parseSelector", "selector", "window", "CSS", "escape", "replace", "match", "id", "toType", "object", "undefined", "Object", "prototype", "toString", "call", "toLowerCase", "getUID", "prefix", "Math", "floor", "random", "document", "getElementById", "getTransitionDurationFromElement", "transitionDuration", "transitionDelay", "getComputedStyle", "floatTransitionDuration", "Number", "parseFloat", "floatTransitionDelay", "split", "triggerTransitionEnd", "dispatchEvent", "Event", "isElement", "jquery", "nodeType", "getElement", "length", "querySelector", "isVisible", "getClientRects", "elementIsVisible", "getPropertyValue", "closedDetails", "closest", "summary", "parentNode", "isDisabled", "Node", "ELEMENT_NODE", "classList", "contains", "disabled", "hasAttribute", "getAttribute", "findShadowRoot", "documentElement", "attachShadow", "getRootNode", "root", "ShadowRoot", "noop", "reflow", "offsetHeight", "getjQuery", "jQuery", "body", "DOMContentLoadedCallbacks", "onDOMContentLoaded", "callback", "readyState", "addEventListener", "push", "isRTL", "dir", "defineJQueryPlugin", "plugin", "$", "name", "NAME", "JQUERY_NO_CONFLICT", "fn", "jQueryInterface", "Constructor", "noConflict", "execute", "possibleCallback", "args", "defaultValue", "executeAfterTransition", "transitionElement", "waitForTransition", "durationPadding", "emulatedDuration", "called", "handler", "target", "removeEventListener", "setTimeout", "getNextActiveElement", "list", "activeElement", "shouldGetNext", "isCycleAllowed", "listLength", "index", "indexOf", "max", "min", "namespaceRegex", "stripNameRegex", "stripUidRegex", "eventRegistry", "uidEvent", "customEvents", "mouseenter", "mouseleave", "nativeEvents", "Set", "makeEventUid", "uid", "getElementEvents", "bootstrapHandler", "event", "hydrateObj", "delegateTarget", "oneOff", "EventHandler", "off", "type", "apply", "bootstrapDelegationHandler", "domElements", "querySelectorAll", "domElement", "findHandler", "events", "callable", "delegationSelector", "values", "find", "normalizeParameters", "originalTypeEvent", "delegationFunction", "isDelegated", "typeEvent", "getTypeEvent", "addHandler", "wrapFunction", "relatedTarget", "handlers", "previousFunction", "removeHandler", "Boolean", "removeNamespacedHandlers", "namespace", "storeElementEvent", "handlerKey", "entries", "includes", "on", "one", "inNamespace", "isNamespace", "startsWith", "elementEvent", "slice", "keyHandlers", "trigger", "jQueryEvent", "bubbles", "nativeDispatch", "defaultPrevented", "isPropagationStopped", "isImmediatePropagationStopped", "isDefaultPrevented", "evt", "cancelable", "preventDefault", "obj", "meta", "value", "_unused", "defineProperty", "configurable", "normalizeData", "JSON", "parse", "decodeURIComponent", "normalizeDataKey", "chr", "Manipulator", "setDataAttribute", "setAttribute", "removeDataAttribute", "removeAttribute", "getDataAttributes", "attributes", "bsKeys", "dataset", "filter", "pureKey", "charAt", "getDataAttribute", "Config", "Default", "DefaultType", "Error", "_getConfig", "config", "_mergeConfigObj", "_configAfterMerge", "_typeCheckConfig", "jsonConfig", "constructor", "configTypes", "property", "expectedTypes", "valueType", "RegExp", "test", "TypeError", "toUpperCase", "VERSION", "BaseComponent", "_element", "_config", "Data", "DATA_KEY", "dispose", "EVENT_KEY", "propertyName", "getOwnPropertyNames", "_queueCallback", "isAnimated", "getInstance", "getOrCreateInstance", "eventName", "getSelector", "hrefAttribute", "trim", "map", "sel", "join", "SelectorEngine", "concat", "Element", "findOne", "children", "child", "matches", "parents", "ancestor", "prev", "previous", "previousElementSibling", "next", "nextElementSibling", "focusableChildren", "focusables", "el", "getSelectorFromElement", "getElementFromSelector", "getMultipleElementsFromSelector", "enableDismissTrigger", "component", "method", "clickEvent", "tagName", "EVENT_CLOSE", "EVENT_CLOSED", "CLASS_NAME_FADE", "CLASS_NAME_SHOW", "Alert", "close", "closeEvent", "_destroyElement", "each", "data", "DATA_API_KEY", "CLASS_NAME_ACTIVE", "SELECTOR_DATA_TOGGLE", "EVENT_CLICK_DATA_API", "Button", "toggle", "button", "EVENT_TOUCHSTART", "EVENT_TOUCHMOVE", "EVENT_TOUCHEND", "EVENT_POINTERDOWN", "EVENT_POINTERUP", "POINTER_TYPE_TOUCH", "POINTER_TYPE_PEN", "CLASS_NAME_POINTER_EVENT", "SWIPE_THRESHOLD", "endCallback", "leftCallback", "rightCallback", "Swipe", "isSupported", "_deltaX", "_supportPointerEvents", "PointerEvent", "_initEvents", "_start", "touches", "clientX", "_eventIsPointerPenTouch", "_end", "_handleSwipe", "_move", "absDeltaX", "abs", "direction", "add", "pointerType", "navigator", "maxTouchPoints", "ARROW_LEFT_KEY", "ARROW_RIGHT_KEY", "TOUCHEVENT_COMPAT_WAIT", "ORDER_NEXT", "ORDER_PREV", "DIRECTION_LEFT", "DIRECTION_RIGHT", "EVENT_SLIDE", "EVENT_SLID", "EVENT_KEYDOWN", "EVENT_MOUSEENTER", "EVENT_MOUSELEAVE", "EVENT_DRAG_START", "EVENT_LOAD_DATA_API", "CLASS_NAME_CAROUSEL", "CLASS_NAME_SLIDE", "CLASS_NAME_END", "CLASS_NAME_START", "CLASS_NAME_NEXT", "CLASS_NAME_PREV", "SELECTOR_ACTIVE", "SELECTOR_ITEM", "SELECTOR_ACTIVE_ITEM", "SELECTOR_ITEM_IMG", "SELECTOR_INDICATORS", "SELECTOR_DATA_SLIDE", "SELECTOR_DATA_RIDE", "KEY_TO_DIRECTION", "interval", "keyboard", "pause", "ride", "touch", "wrap", "Carousel", "_interval", "_activeElement", "_isSliding", "touchTimeout", "_swipeHelper", "_indicatorsElement", "_addEventListeners", "cycle", "_slide", "nextWhenVisible", "hidden", "_clearInterval", "_updateInterval", "setInterval", "_maybeEnableCycle", "to", "items", "_getItems", "activeIndex", "_getItemIndex", "_getActive", "order", "defaultInterval", "_keydown", "_addTouchEventListeners", "img", "endCallBack", "clearTimeout", "swipeConfig", "_directionToOrder", "_setActiveIndicatorElement", "activeIndicator", "newActiveIndicator", "elementInterval", "parseInt", "isNext", "nextElement", "nextElementIndex", "triggerEvent", "_orderToDirection", "slideEvent", "isCycling", "directionalClassName", "orderClassName", "completeCallBack", "_isAnimated", "clearInterval", "carousel", "slideIndex", "carousels", "EVENT_SHOW", "EVENT_SHOWN", "EVENT_HIDE", "EVENT_HIDDEN", "CLASS_NAME_COLLAPSE", "CLASS_NAME_COLLAPSING", "CLASS_NAME_COLLAPSED", "CLASS_NAME_DEEPER_CHILDREN", "CLASS_NAME_HORIZONTAL", "WIDTH", "HEIGHT", "SELECTOR_ACTIVES", "parent", "Collapse", "_isTransitioning", "_triggerArray", "toggleList", "elem", "filterElement", "foundElement", "_initializeChildren", "_addAriaAndCollapsedClass", "_isShown", "hide", "show", "activeChildren", "_getFirstLevelChildren", "startEvent", "activeInstance", "dimension", "_getDimension", "style", "complete", "capitalizedDimension", "scrollSize", "getBoundingClientRect", "selected", "triggerArray", "isOpen", "ESCAPE_KEY", "TAB_KEY", "ARROW_UP_KEY", "ARROW_DOWN_KEY", "RIGHT_MOUSE_BUTTON", "EVENT_KEYDOWN_DATA_API", "EVENT_KEYUP_DATA_API", "CLASS_NAME_DROPUP", "CLASS_NAME_DROPEND", "CLASS_NAME_DROPSTART", "CLASS_NAME_DROPUP_CENTER", "CLASS_NAME_DROPDOWN_CENTER", "SELECTOR_DATA_TOGGLE_SHOWN", "SELECTOR_MENU", "SELECTOR_NAVBAR", "SELECTOR_NAVBAR_NAV", "SELECTOR_VISIBLE_ITEMS", "PLACEMENT_TOP", "PLACEMENT_TOPEND", "PLACEMENT_BOTTOM", "PLACEMENT_BOTTOMEND", "PLACEMENT_RIGHT", "PLACEMENT_LEFT", "PLACEMENT_TOPCENTER", "PLACEMENT_BOTTOMCENTER", "autoClose", "boundary", "display", "offset", "popperConfig", "reference", "Dropdown", "_popper", "_parent", "_menu", "_inNavbar", "_detectNavbar", "showEvent", "_createPopper", "focus", "_completeHide", "destroy", "update", "hideEvent", "Popper", "referenceElement", "_getPopperConfig", "createPopper", "_getPlacement", "parentDropdown", "isEnd", "_getOffset", "popperData", "defaultBsPopperConfig", "placement", "modifiers", "options", "enabled", "_selectMenuItem", "clearMenus", "openToggles", "context", "composedPath", "isMenuTarget", "dataApiKeydownHandler", "isInput", "isEscapeEvent", "isUpOrDownEvent", "getToggleButton", "stopPropagation", "EVENT_MOUSEDOWN", "className", "clickCallback", "rootElement", "Backdrop", "_isAppended", "_append", "_getElement", "_emulateAnimation", "backdrop", "createElement", "append", "EVENT_FOCUSIN", "EVENT_KEYDOWN_TAB", "TAB_NAV_FORWARD", "TAB_NAV_BACKWARD", "autofocus", "trapElement", "FocusTrap", "_isActive", "_lastTabNavDirection", "activate", "_handleFocusin", "_handleKeydown", "deactivate", "elements", "shiftKey", "SELECTOR_FIXED_CONTENT", "SELECTOR_STICKY_CONTENT", "PROPERTY_PADDING", "PROPERTY_MARGIN", "ScrollBarHelper", "getWidth", "documentWidth", "clientWidth", "innerWidth", "width", "_disableOverFlow", "_setElementAttributes", "calculatedValue", "reset", "_resetElementAttributes", "isOverflowing", "_saveInitialAttribute", "overflow", "styleProperty", "scrollbarWidth", "manipulationCallBack", "setProperty", "_applyManipulationCallback", "actualValue", "removeProperty", "callBack", "EVENT_HIDE_PREVENTED", "EVENT_RESIZE", "EVENT_CLICK_DISMISS", "EVENT_MOUSEDOWN_DISMISS", "EVENT_KEYDOWN_DISMISS", "CLASS_NAME_OPEN", "CLASS_NAME_STATIC", "OPEN_SELECTOR", "SELECTOR_DIALOG", "SELECTOR_MODAL_BODY", "Modal", "_dialog", "_backdrop", "_initializeBackDrop", "_focustrap", "_initializeFocusTrap", "_scrollBar", "_adjustDialog", "_showElement", "_hideModal", "handleUpdate", "scrollTop", "modalBody", "transitionComplete", "_triggerBackdropTransition", "event2", "_resetAdjustments", "isModalOverflowing", "scrollHeight", "clientHeight", "initialOverflowY", "overflowY", "isBodyOverflowing", "paddingLeft", "paddingRight", "alreadyOpen", "CLASS_NAME_SHOWING", "CLASS_NAME_HIDING", "CLASS_NAME_BACKDROP", "scroll", "Offcanvas", "blur", "completeCallback", "position", "ARIA_ATTRIBUTE_PATTERN", "DefaultAllowlist", "a", "area", "b", "br", "col", "code", "dd", "div", "dl", "dt", "em", "hr", "h1", "h2", "h3", "h4", "h5", "h6", "i", "li", "ol", "p", "pre", "s", "small", "span", "sub", "sup", "strong", "u", "ul", "uriAttributes", "SAFE_URL_PATTERN", "allowedAttribute", "attribute", "allowedAttributeList", "attributeName", "nodeName", "nodeValue", "attributeRegex", "some", "regex", "sanitizeHtml", "unsafeHtml", "allowList", "sanitizeFunction", "domParser", "DOMParser", "createdDocument", "parseFromString", "elementName", "attributeList", "allowedAttributes", "innerHTML", "content", "extraClass", "html", "sanitize", "sanitizeFn", "template", "DefaultContentType", "entry", "TemplateFactory", "getContent", "_resolvePossibleFunction", "hasContent", "changeContent", "_checkContent", "toHtml", "templateWrapper", "_maybeSanitize", "text", "_setContent", "arg", "templateElement", "_putElementInTemplate", "textContent", "DISALLOWED_ATTRIBUTES", "CLASS_NAME_MODAL", "SELECTOR_TOOLTIP_INNER", "SELECTOR_MODAL", "EVENT_MODAL_HIDE", "TRIGGER_HOVER", "TRIGGER_FOCUS", "TRIGGER_CLICK", "TRIGGER_MANUAL", "EVENT_INSERTED", "EVENT_CLICK", "EVENT_FOCUSOUT", "AttachmentMap", "AUTO", "TOP", "RIGHT", "BOTTOM", "LEFT", "animation", "container", "customClass", "delay", "fallbackPlacements", "title", "Tooltip", "_isEnabled", "_timeout", "_isHovered", "_activeTrigger", "_templateFactory", "_newContent", "tip", "_setListeners", "_fixTitle", "enable", "disable", "toggleEnabled", "_leave", "_enter", "_hideModalHandler", "_disposePopper", "_isWithContent", "shadowRoot", "isInTheDom", "ownerDocument", "_getTipElement", "_isWithActiveTrigger", "_getTitle", "_createTipElement", "_getContentForTemplate", "_getTemplateFactory", "tipId", "setContent", "_initializeOnDelegatedTarget", "_getDelegateConfig", "attachment", "phase", "state", "triggers", "eventIn", "eventOut", "_setTimeout", "timeout", "dataAttributes", "dataAttribute", "SELECTOR_TITLE", "SELECTOR_CONTENT", "Popover", "_getContent", "EVENT_ACTIVATE", "CLASS_NAME_DROPDOWN_ITEM", "SELECTOR_DATA_SPY", "SELECTOR_TARGET_LINKS", "SELECTOR_NAV_LIST_GROUP", "SELECTOR_NAV_LINKS", "SELECTOR_NAV_ITEMS", "SELECTOR_LIST_ITEMS", "SELECTOR_LINK_ITEMS", "SELECTOR_DROPDOWN", "SELECTOR_DROPDOWN_TOGGLE", "rootMargin", "smoothScroll", "threshold", "ScrollSpy", "_targetLinks", "_observableSections", "_rootElement", "_activeTarget", "_observer", "_previousScrollData", "visibleEntryTop", "parentScrollTop", "refresh", "_initializeTargetsAndObservables", "_maybeEnableSmoothScroll", "disconnect", "_getNewObserver", "section", "observe", "observableSection", "hash", "height", "offsetTop", "scrollTo", "top", "behavior", "IntersectionObserver", "_observerCallback", "targetElement", "_process", "userScrollsDown", "isIntersecting", "_clearActiveClass", "entryIsLowerThanPrevious", "targetLinks", "anchor", "decodeURI", "_activateParents", "listGroup", "item", "activeNodes", "node", "spy", "HOME_KEY", "END_KEY", "CLASS_DROPDOWN", "SELECTOR_DROPDOWN_MENU", "NOT_SELECTOR_DROPDOWN_TOGGLE", "SELECTOR_TAB_PANEL", "SELECTOR_OUTER", "SELECTOR_INNER", "SELECTOR_INNER_ELEM", "SELECTOR_DATA_TOGGLE_ACTIVE", "Tab", "_setInitialAttributes", "_getChildren", "innerElem", "_elemIsActive", "active", "_getActiveElem", "_deactivate", "_activate", "relatedElem", "_toggleDropDown", "nextActiveElement", "preventScroll", "_setAttributeIfNotExists", "_setInitialAttributesOnChild", "_getInnerElement", "isActive", "outerElem", "_getOuterElement", "_setInitialAttributesOnTargetPanel", "open", "EVENT_MOUSEOVER", "EVENT_MOUSEOUT", "CLASS_NAME_HIDE", "autohide", "Toast", "_hasMouseInteraction", "_hasKeyboardInteraction", "_clearTimeout", "_maybeScheduleHide", "isShown", "_onInteraction", "isInteracting", "left", "right", "application", "listeners", "error", "options", "_", "e", "fetch", "match", "oldValue", "left", "right", "_", "error", "constructor", "extend", "a", "b", "application", "element", "c", "n", "k", "v", "read", "write", "type", "t", "e", "i", "n", "s", "o", "a", "r", "l", "c", "h", "d", "u", "p", "f", "g", "m", "v", "b", "y", "w", "x", "E", "S", "P", "C", "T", "M", "O", "A", "tinymce", "extend", "k", "add", "text", "extend", "add", "children", "parents", "parent", "add", "fn", "m", "menu", "options", "configs", "extend", "add", "fn", "h", "l", "text", "options", "options_default", "configs", "configs_default", "options", "extend", "options_default", "configs", "configs_default", "hash", "page", "options", "options_default", "options", "extend", "options_default", "options", "options_default", "options_default", "options", "options_default", "options", "extend", "options_default", "hash", "options", "options_default", "options", "extend", "options_default", "options", "options_default", "options", "extend", "options_default", "n", "c", "l", "add", "anchor", "options", "options_default", "options", "extend", "options_default", "panel", "p", "configs", "configs_default", "options", "breadcrumbs", "text", "extend", "configs_default", "options", "c", "l", "children", "add", "options", "options_default", "configs", "configs_default", "options", "extend", "options_default", "configs", "configs_default", "section", "s", "options", "options_default", "configs", "configs_default", "de_default", "fa_default", "nl_default", "pt_br_default", "ru_default", "sk_default", "uk_default", "translations_default", "add", "de_default", "fa_default", "nl_default", "pt_br_default", "ru_default", "sk_default", "uk_default", "translations_default", "options", "extend", "options_default", "configs", "configs_default", "text", "a", "options", "options_default", "options", "extend", "options_default", "options", "options_default", "options", "extend", "options_default", "options", "options_default", "options", "extend", "options_default", "add"]
}
