{"version":3,"file":"index.57e33f07.js","sources":["../../vite/modulepreload-polyfill","../../node_modules/solid-js/dist/solid.js","../../node_modules/solid-js/web/dist/web.js","../../node_modules/@solidjs/router/dist/integration.js","../../node_modules/@solidjs/router/dist/lifecycle.js","../../node_modules/@solidjs/router/dist/utils.js","../../node_modules/@solidjs/router/dist/routing.js","../../node_modules/@solidjs/router/dist/components.jsx","../../node_modules/quill/dist/quill.js","../../node_modules/solid-quill/dist/source/solid-quill.jsx","../../src/components/universal/quill-editor.tsx","../../node_modules/solid-js/store/dist/store.js","../../src/components/progress.tsx","../../src/API.tsx","../../src/components/universal/a-href.tsx","../../src/components/universal/required-icon.tsx","../../src/library/common.tsx","../../src/components/universal/image.tsx","../../node_modules/cropperjs/dist/cropper.esm.js","../../node_modules/@solid-primitives/upload/dist/index.js","../../src/components/universal/image-cropper.tsx","../../src/components/universal/validation.tsx","../../node_modules/solid-bootstrap/dist/esm/classnames.js","../../node_modules/solid-bootstrap-core/dist/esm/utils.js","../../node_modules/solid-bootstrap-core/dist/esm/Button.jsx","../../node_modules/dom-helpers/esm/querySelectorAll.js","../../node_modules/dom-helpers/esm/canUseDOM.js","../../node_modules/dom-helpers/esm/addEventListener.js","../../node_modules/dom-helpers/esm/contains.js","../../node_modules/dom-helpers/esm/removeEventListener.js","../../node_modules/dom-helpers/esm/listen.js","../../node_modules/dom-helpers/esm/ownerDocument.js","../../node_modules/solid-bootstrap-core/dist/esm/DataKey.js","../../node_modules/solid-bootstrap-core/dist/esm/useWindow.js","../../node_modules/dom-helpers/esm/activeElement.js","../../node_modules/dom-helpers/esm/ownerWindow.js","../../node_modules/dom-helpers/esm/getComputedStyle.js","../../node_modules/dom-helpers/esm/hyphenate.js","../../node_modules/dom-helpers/esm/hyphenateStyle.js","../../node_modules/dom-helpers/esm/isTransform.js","../../node_modules/dom-helpers/esm/css.js","../../node_modules/solid-bootstrap-core/dist/esm/getScrollbarWidth.js","../../node_modules/solid-bootstrap-core/dist/esm/ModalManager.js","../../node_modules/solid-bootstrap-core/dist/esm/useWaitForDOMRef.js","../../node_modules/solid-bootstrap-core/dist/esm/Modal.jsx","../../node_modules/solid-react-transition/dist/esm/TransitionGroupContext.js","../../node_modules/solid-react-transition/dist/esm/utils.js","../../node_modules/solid-react-transition/dist/esm/Transition.jsx","../../node_modules/solid-bootstrap/dist/esm/ThemeProvider.jsx","../../node_modules/solid-bootstrap/dist/esm/triggerBrowserReflow.jsx","../../node_modules/dom-helpers/esm/triggerEvent.js","../../node_modules/dom-helpers/esm/transitionEnd.js","../../node_modules/solid-bootstrap/dist/esm/transitionEndListener.js","../../node_modules/solid-bootstrap/dist/esm/TransitionWrapper.jsx","../../node_modules/solid-bootstrap/dist/esm/Fade.jsx","../../node_modules/solid-bootstrap/dist/esm/CloseButton.jsx","../../node_modules/solid-bootstrap/dist/esm/divWithClass.jsx","../../node_modules/solid-bootstrap/dist/esm/createWithBsPrefix.jsx","../../node_modules/dom-helpers/esm/hasClass.js","../../node_modules/dom-helpers/esm/addClass.js","../../node_modules/dom-helpers/esm/removeClass.js","../../node_modules/solid-bootstrap/dist/esm/BootstrapModalManager.jsx","../../node_modules/solid-bootstrap/dist/esm/Button.jsx","../../node_modules/solid-bootstrap/dist/esm/Col.jsx","../../node_modules/solid-bootstrap/dist/esm/InputGroupContext.jsx","../../node_modules/solid-bootstrap/dist/esm/NavbarContext.jsx","../../node_modules/solid-bootstrap/dist/esm/Feedback.jsx","../../node_modules/solid-bootstrap/dist/esm/FormContext.jsx","../../node_modules/solid-bootstrap/dist/esm/FormGroup.jsx","../../node_modules/solid-bootstrap/dist/esm/FloatingLabel.jsx","../../node_modules/solid-bootstrap/dist/esm/FormCheckInput.jsx","../../node_modules/solid-bootstrap/dist/esm/FormCheckContext.jsx","../../node_modules/solid-bootstrap/dist/esm/FormCheckLabel.jsx","../../node_modules/solid-bootstrap/dist/esm/FormCheck.jsx","../../node_modules/solid-bootstrap/dist/esm/FormControl.jsx","../../node_modules/solid-bootstrap/dist/esm/FormFloating.jsx","../../node_modules/solid-bootstrap/dist/esm/FormLabel.jsx","../../node_modules/solid-bootstrap/dist/esm/FormRange.jsx","../../node_modules/solid-bootstrap/dist/esm/FormSelect.jsx","../../node_modules/solid-bootstrap/dist/esm/FormText.jsx","../../node_modules/solid-bootstrap/dist/esm/Switch.jsx","../../node_modules/solid-bootstrap/dist/esm/Form.jsx","../../node_modules/solid-bootstrap/dist/esm/InputGroup.jsx","../../node_modules/solid-bootstrap/dist/esm/ModalContext.jsx","../../node_modules/solid-bootstrap/dist/esm/AbstractModalHeader.jsx","../../node_modules/solid-bootstrap/dist/esm/OffcanvasBody.jsx","../../node_modules/solid-bootstrap/dist/esm/OffcanvasToggling.jsx","../../node_modules/solid-bootstrap/dist/esm/OffcanvasHeader.jsx","../../node_modules/solid-bootstrap/dist/esm/OffcanvasTitle.jsx","../../node_modules/solid-bootstrap/dist/esm/Offcanvas.jsx","../../node_modules/solid-toast/dist/source/types/toast.js","../../node_modules/solid-toast/dist/source/types/store.js","../../node_modules/solid-toast/dist/source/core/store.js","../../node_modules/solid-toast/dist/source/core/defaults.js","../../node_modules/solid-toast/dist/source/util/util.js","../../node_modules/solid-toast/dist/source/util/styles.js","../../node_modules/solid-toast/dist/source/core/toast.js","../../node_modules/solid-toast/dist/source/components/Toaster.jsx","../../node_modules/solid-toast/dist/source/components/ToastBar.jsx","../../node_modules/solid-toast/dist/source/components/ToastContainer.jsx","../../node_modules/solid-toast/dist/source/components/IconCircle.jsx","../../node_modules/solid-toast/dist/source/components/SuccessIcon.jsx","../../node_modules/solid-toast/dist/source/components/ErrorIcon.jsx","../../node_modules/solid-toast/dist/source/components/LoaderIcon.jsx","../../node_modules/solid-toast/dist/source/index.jsx","../../src/components/cms/provider.tsx","../../src/components/cms/cms.tsx","../../node_modules/solid-spinner/dist/index.jsx","../../src/components/page-loading.tsx","../../src/pages/step-1.tsx","../../src/components/raw-html.tsx","../../src/components/artwork.tsx","../../src/pages/step-2.tsx","../../node_modules/underscore/modules/_setup.js","../../node_modules/underscore/modules/restArguments.js","../../node_modules/underscore/modules/isObject.js","../../node_modules/underscore/modules/isNull.js","../../node_modules/underscore/modules/isUndefined.js","../../node_modules/underscore/modules/isBoolean.js","../../node_modules/underscore/modules/isElement.js","../../node_modules/underscore/modules/_tagTester.js","../../node_modules/underscore/modules/isString.js","../../node_modules/underscore/modules/isNumber.js","../../node_modules/underscore/modules/isDate.js","../../node_modules/underscore/modules/isRegExp.js","../../node_modules/underscore/modules/isError.js","../../node_modules/underscore/modules/isSymbol.js","../../node_modules/underscore/modules/isArrayBuffer.js","../../node_modules/underscore/modules/isFunction.js","../../node_modules/underscore/modules/_hasObjectTag.js","../../node_modules/underscore/modules/_stringTagBug.js","../../node_modules/underscore/modules/isDataView.js","../../node_modules/underscore/modules/isArray.js","../../node_modules/underscore/modules/_has.js","../../node_modules/underscore/modules/isArguments.js","../../node_modules/underscore/modules/isFinite.js","../../node_modules/underscore/modules/isNaN.js","../../node_modules/underscore/modules/constant.js","../../node_modules/underscore/modules/_createSizePropertyCheck.js","../../node_modules/underscore/modules/_shallowProperty.js","../../node_modules/underscore/modules/_getByteLength.js","../../node_modules/underscore/modules/_isBufferLike.js","../../node_modules/underscore/modules/isTypedArray.js","../../node_modules/underscore/modules/_getLength.js","../../node_modules/underscore/modules/_collectNonEnumProps.js","../../node_modules/underscore/modules/keys.js","../../node_modules/underscore/modules/isEmpty.js","../../node_modules/underscore/modules/isMatch.js","../../node_modules/underscore/modules/underscore.js","../../node_modules/underscore/modules/_toBufferView.js","../../node_modules/underscore/modules/isEqual.js","../../node_modules/underscore/modules/allKeys.js","../../node_modules/underscore/modules/_methodFingerprint.js","../../node_modules/underscore/modules/isMap.js","../../node_modules/underscore/modules/isWeakMap.js","../../node_modules/underscore/modules/isSet.js","../../node_modules/underscore/modules/isWeakSet.js","../../node_modules/underscore/modules/values.js","../../node_modules/underscore/modules/pairs.js","../../node_modules/underscore/modules/invert.js","../../node_modules/underscore/modules/functions.js","../../node_modules/underscore/modules/_createAssigner.js","../../node_modules/underscore/modules/extend.js","../../node_modules/underscore/modules/extendOwn.js","../../node_modules/underscore/modules/defaults.js","../../node_modules/underscore/modules/_baseCreate.js","../../node_modules/underscore/modules/create.js","../../node_modules/underscore/modules/clone.js","../../node_modules/underscore/modules/tap.js","../../node_modules/underscore/modules/toPath.js","../../node_modules/underscore/modules/_toPath.js","../../node_modules/underscore/modules/_deepGet.js","../../node_modules/underscore/modules/get.js","../../node_modules/underscore/modules/has.js","../../node_modules/underscore/modules/identity.js","../../node_modules/underscore/modules/matcher.js","../../node_modules/underscore/modules/property.js","../../node_modules/underscore/modules/_optimizeCb.js","../../node_modules/underscore/modules/_baseIteratee.js","../../node_modules/underscore/modules/iteratee.js","../../node_modules/underscore/modules/_cb.js","../../node_modules/underscore/modules/mapObject.js","../../node_modules/underscore/modules/noop.js","../../node_modules/underscore/modules/propertyOf.js","../../node_modules/underscore/modules/times.js","../../node_modules/underscore/modules/random.js","../../node_modules/underscore/modules/now.js","../../node_modules/underscore/modules/_createEscaper.js","../../node_modules/underscore/modules/_escapeMap.js","../../node_modules/underscore/modules/escape.js","../../node_modules/underscore/modules/_unescapeMap.js","../../node_modules/underscore/modules/unescape.js","../../node_modules/underscore/modules/templateSettings.js","../../node_modules/underscore/modules/template.js","../../node_modules/underscore/modules/result.js","../../node_modules/underscore/modules/uniqueId.js","../../node_modules/underscore/modules/chain.js","../../node_modules/underscore/modules/_executeBound.js","../../node_modules/underscore/modules/partial.js","../../node_modules/underscore/modules/bind.js","../../node_modules/underscore/modules/_isArrayLike.js","../../node_modules/underscore/modules/_flatten.js","../../node_modules/underscore/modules/bindAll.js","../../node_modules/underscore/modules/memoize.js","../../node_modules/underscore/modules/delay.js","../../node_modules/underscore/modules/defer.js","../../node_modules/underscore/modules/throttle.js","../../node_modules/underscore/modules/debounce.js","../../node_modules/underscore/modules/wrap.js","../../node_modules/underscore/modules/negate.js","../../node_modules/underscore/modules/compose.js","../../node_modules/underscore/modules/after.js","../../node_modules/underscore/modules/before.js","../../node_modules/underscore/modules/once.js","../../node_modules/underscore/modules/findKey.js","../../node_modules/underscore/modules/_createPredicateIndexFinder.js","../../node_modules/underscore/modules/findIndex.js","../../node_modules/underscore/modules/findLastIndex.js","../../node_modules/underscore/modules/sortedIndex.js","../../node_modules/underscore/modules/_createIndexFinder.js","../../node_modules/underscore/modules/indexOf.js","../../node_modules/underscore/modules/lastIndexOf.js","../../node_modules/underscore/modules/find.js","../../node_modules/underscore/modules/findWhere.js","../../node_modules/underscore/modules/each.js","../../node_modules/underscore/modules/map.js","../../node_modules/underscore/modules/_createReduce.js","../../node_modules/underscore/modules/reduce.js","../../node_modules/underscore/modules/reduceRight.js","../../node_modules/underscore/modules/filter.js","../../node_modules/underscore/modules/reject.js","../../node_modules/underscore/modules/every.js","../../node_modules/underscore/modules/some.js","../../node_modules/underscore/modules/contains.js","../../node_modules/underscore/modules/invoke.js","../../node_modules/underscore/modules/pluck.js","../../node_modules/underscore/modules/where.js","../../node_modules/underscore/modules/max.js","../../node_modules/underscore/modules/min.js","../../node_modules/underscore/modules/toArray.js","../../node_modules/underscore/modules/sample.js","../../node_modules/underscore/modules/shuffle.js","../../node_modules/underscore/modules/sortBy.js","../../node_modules/underscore/modules/_group.js","../../node_modules/underscore/modules/groupBy.js","../../node_modules/underscore/modules/indexBy.js","../../node_modules/underscore/modules/countBy.js","../../node_modules/underscore/modules/partition.js","../../node_modules/underscore/modules/size.js","../../node_modules/underscore/modules/_keyInObj.js","../../node_modules/underscore/modules/pick.js","../../node_modules/underscore/modules/omit.js","../../node_modules/underscore/modules/initial.js","../../node_modules/underscore/modules/first.js","../../node_modules/underscore/modules/rest.js","../../node_modules/underscore/modules/last.js","../../node_modules/underscore/modules/compact.js","../../node_modules/underscore/modules/flatten.js","../../node_modules/underscore/modules/difference.js","../../node_modules/underscore/modules/without.js","../../node_modules/underscore/modules/uniq.js","../../node_modules/underscore/modules/union.js","../../node_modules/underscore/modules/intersection.js","../../node_modules/underscore/modules/unzip.js","../../node_modules/underscore/modules/zip.js","../../node_modules/underscore/modules/object.js","../../node_modules/underscore/modules/range.js","../../node_modules/underscore/modules/chunk.js","../../node_modules/underscore/modules/_chainResult.js","../../node_modules/underscore/modules/mixin.js","../../node_modules/underscore/modules/underscore-array-methods.js","../../node_modules/underscore/modules/index-default.js","../../src/components/prepare-image-text.tsx","../../src/components/character-count/index.tsx","../../src/pages/edit-artwork.tsx","../../src/pages/introduction.tsx","../../src/pages/edit-image.tsx","../../src/components/universal/language-selector/index.tsx","../../src/components/form-controls.tsx","../../src/sections/forgot-password.tsx","../../src/sections/login.tsx","../../src/sections/jetmenu.tsx","../../src/sections/logo-slider.tsx","../../src/sections/header.tsx","../../src/sections/latest-blogs.tsx","../../src/sections/footer.tsx","../../src/components/catalogue-orders.tsx","../../src/components/text-box.tsx","../../src/components/options.tsx","../../src/components/select.tsx","../../src/components/address-form.tsx","../../src/pages/step-3.tsx","../../src/pages/credit-card.tsx","../../src/pages/paypal-confirmed.tsx","../../src/pages/categories.tsx","../../src/pages/rules.tsx","../../src/pages/awards.tsx","../../src/pages/sponsors.tsx","../../src/components/scroll-to-target.tsx","../../src/pages/jurors.tsx","../../node_modules/jsnlog/jsnlog.js","../../src/pages/payment-processed.tsx","../../src/app.tsx","../../src/index.tsx"],"sourcesContent":["__VITE_IS_MODERN__&&(function polyfill() {\n    const relList = document.createElement('link').relList;\n    if (relList && relList.supports && relList.supports('modulepreload')) {\n        return;\n    }\n    for (const link of document.querySelectorAll('link[rel=\"modulepreload\"]')) {\n        processPreload(link);\n    }\n    new MutationObserver((mutations) => {\n        for (const mutation of mutations) {\n            if (mutation.type !== 'childList') {\n                continue;\n            }\n            for (const node of mutation.addedNodes) {\n                if (node.tagName === 'LINK' && node.rel === 'modulepreload')\n                    processPreload(node);\n            }\n        }\n    }).observe(document, { childList: true, subtree: true });\n    function getFetchOpts(script) {\n        const fetchOpts = {};\n        if (script.integrity)\n            fetchOpts.integrity = script.integrity;\n        if (script.referrerpolicy)\n            fetchOpts.referrerPolicy = script.referrerpolicy;\n        if (script.crossorigin === 'use-credentials')\n            fetchOpts.credentials = 'include';\n        else if (script.crossorigin === 'anonymous')\n            fetchOpts.credentials = 'omit';\n        else\n            fetchOpts.credentials = 'same-origin';\n        return fetchOpts;\n    }\n    function processPreload(link) {\n        if (link.ep)\n            // ep marker = processed\n            return;\n        link.ep = true;\n        // prepopulate the load record\n        const fetchOpts = getFetchOpts(link);\n        fetch(link.href, fetchOpts);\n    }\n}());","let taskIdCounter = 1,\n  isCallbackScheduled = false,\n  isPerformingWork = false,\n  taskQueue = [],\n  currentTask = null,\n  shouldYieldToHost = null,\n  yieldInterval = 5,\n  deadline = 0,\n  maxYieldInterval = 300,\n  scheduleCallback = null,\n  scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n  const channel = new MessageChannel(),\n    port = channel.port2;\n  scheduleCallback = () => port.postMessage(null);\n  channel.port1.onmessage = () => {\n    if (scheduledCallback !== null) {\n      const currentTime = performance.now();\n      deadline = currentTime + yieldInterval;\n      const hasTimeRemaining = true;\n      try {\n        const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n        if (!hasMoreWork) {\n          scheduledCallback = null;\n        } else port.postMessage(null);\n      } catch (error) {\n        port.postMessage(null);\n        throw error;\n      }\n    }\n  };\n  if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n    const scheduling = navigator.scheduling;\n    shouldYieldToHost = () => {\n      const currentTime = performance.now();\n      if (currentTime >= deadline) {\n        if (scheduling.isInputPending()) {\n          return true;\n        }\n        return currentTime >= maxYieldInterval;\n      } else {\n        return false;\n      }\n    };\n  } else {\n    shouldYieldToHost = () => performance.now() >= deadline;\n  }\n}\nfunction enqueue(taskQueue, task) {\n  function findIndex() {\n    let m = 0;\n    let n = taskQueue.length - 1;\n    while (m <= n) {\n      const k = (n + m) >> 1;\n      const cmp = task.expirationTime - taskQueue[k].expirationTime;\n      if (cmp > 0) m = k + 1;\n      else if (cmp < 0) n = k - 1;\n      else return k;\n    }\n    return m;\n  }\n  taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n  if (!scheduleCallback) setupScheduler();\n  let startTime = performance.now(),\n    timeout = maxSigned31BitInt;\n  if (options && options.timeout) timeout = options.timeout;\n  const newTask = {\n    id: taskIdCounter++,\n    fn,\n    startTime,\n    expirationTime: startTime + timeout\n  };\n  enqueue(taskQueue, newTask);\n  if (!isCallbackScheduled && !isPerformingWork) {\n    isCallbackScheduled = true;\n    scheduledCallback = flushWork;\n    scheduleCallback();\n  }\n  return newTask;\n}\nfunction cancelCallback(task) {\n  task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n  isCallbackScheduled = false;\n  isPerformingWork = true;\n  try {\n    return workLoop(hasTimeRemaining, initialTime);\n  } finally {\n    currentTask = null;\n    isPerformingWork = false;\n  }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n  let currentTime = initialTime;\n  currentTask = taskQueue[0] || null;\n  while (currentTask !== null) {\n    if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n      break;\n    }\n    const callback = currentTask.fn;\n    if (callback !== null) {\n      currentTask.fn = null;\n      const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n      callback(didUserCallbackTimeout);\n      currentTime = performance.now();\n      if (currentTask === taskQueue[0]) {\n        taskQueue.shift();\n      }\n    } else taskQueue.shift();\n    currentTask = taskQueue[0] || null;\n  }\n  return currentTask !== null;\n}\n\nconst sharedConfig = {\n  context: undefined,\n  registry: undefined,\n  effects: undefined,\n  done: false,\n  getContextId() {\n    return getContextId(this.context.count);\n  },\n  getNextContextId() {\n    return getContextId(this.context.count++);\n  }\n};\nfunction getContextId(count) {\n  const num = String(count),\n    len = num.length - 1;\n  return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : \"\") + num;\n}\nfunction setHydrateContext(context) {\n  sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n  return {\n    ...sharedConfig.context,\n    id: sharedConfig.getNextContextId(),\n    count: 0\n  };\n}\n\nconst IS_DEV = false;\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst SUPPORTS_PROXY = typeof Proxy === \"function\";\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n  equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n  owned: null,\n  cleanups: null,\n  context: null,\n  owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n  const listener = Listener,\n    owner = Owner,\n    unowned = fn.length === 0,\n    current = detachedOwner === undefined ? owner : detachedOwner,\n    root = unowned\n      ? UNOWNED\n      : {\n          owned: null,\n          cleanups: null,\n          context: current ? current.context : null,\n          owner: current\n        },\n    updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n  Owner = root;\n  Listener = null;\n  try {\n    return runUpdates(updateFn, true);\n  } finally {\n    Listener = listener;\n    Owner = owner;\n  }\n}\nfunction createSignal(value, options) {\n  options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n  const s = {\n    value,\n    observers: null,\n    observerSlots: null,\n    comparator: options.equals || undefined\n  };\n  const setter = value => {\n    if (typeof value === \"function\") {\n      if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);\n      else value = value(s.value);\n    }\n    return writeSignal(s, value);\n  };\n  return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n  const c = createComputation(fn, value, true, STALE);\n  if (Scheduler && Transition && Transition.running) Updates.push(c);\n  else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n  const c = createComputation(fn, value, false, STALE);\n  if (Scheduler && Transition && Transition.running) Updates.push(c);\n  else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n  runEffects = runUserEffects;\n  const c = createComputation(fn, value, false, STALE),\n    s = SuspenseContext && useContext(SuspenseContext);\n  if (s) c.suspense = s;\n  if (!options || !options.render) c.user = true;\n  Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n  let fn;\n  const c = createComputation(\n      () => {\n        fn ? fn() : untrack(onInvalidate);\n        fn = undefined;\n      },\n      undefined,\n      false,\n      0\n    ),\n    s = SuspenseContext && useContext(SuspenseContext);\n  if (s) c.suspense = s;\n  c.user = true;\n  return tracking => {\n    fn = tracking;\n    updateComputation(c);\n  };\n}\nfunction createMemo(fn, value, options) {\n  options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n  const c = createComputation(fn, value, true, 0);\n  c.observers = null;\n  c.observerSlots = null;\n  c.comparator = options.equals || undefined;\n  if (Scheduler && Transition && Transition.running) {\n    c.tState = STALE;\n    Updates.push(c);\n  } else updateComputation(c);\n  return readSignal.bind(c);\n}\nfunction isPromise(v) {\n  return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n  let source;\n  let fetcher;\n  let options;\n  if (typeof pFetcher === \"function\") {\n    source = pSource;\n    fetcher = pFetcher;\n    options = pOptions || {};\n  } else {\n    source = true;\n    fetcher = pSource;\n    options = pFetcher || {};\n  }\n  let pr = null,\n    initP = NO_INIT,\n    id = null,\n    loadedUnderTransition = false,\n    scheduled = false,\n    resolved = \"initialValue\" in options,\n    dynamic = typeof source === \"function\" && createMemo(source);\n  const contexts = new Set(),\n    [value, setValue] = (options.storage || createSignal)(options.initialValue),\n    [error, setError] = createSignal(undefined),\n    [track, trigger] = createSignal(undefined, {\n      equals: false\n    }),\n    [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n  if (sharedConfig.context) {\n    id = sharedConfig.getNextContextId();\n    if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;\n    else if (sharedConfig.load && sharedConfig.has(id)) initP = sharedConfig.load(id);\n  }\n  function loadEnd(p, v, error, key) {\n    if (pr === p) {\n      pr = null;\n      key !== undefined && (resolved = true);\n      if ((p === initP || v === initP) && options.onHydrated)\n        queueMicrotask(() =>\n          options.onHydrated(key, {\n            value: v\n          })\n        );\n      initP = NO_INIT;\n      if (Transition && p && loadedUnderTransition) {\n        Transition.promises.delete(p);\n        loadedUnderTransition = false;\n        runUpdates(() => {\n          Transition.running = true;\n          completeLoad(v, error);\n        }, false);\n      } else completeLoad(v, error);\n    }\n    return v;\n  }\n  function completeLoad(v, err) {\n    runUpdates(() => {\n      if (err === undefined) setValue(() => v);\n      setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n      setError(err);\n      for (const c of contexts.keys()) c.decrement();\n      contexts.clear();\n    }, false);\n  }\n  function read() {\n    const c = SuspenseContext && useContext(SuspenseContext),\n      v = value(),\n      err = error();\n    if (err !== undefined && !pr) throw err;\n    if (Listener && !Listener.user && c) {\n      createComputed(() => {\n        track();\n        if (pr) {\n          if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);\n          else if (!contexts.has(c)) {\n            c.increment();\n            contexts.add(c);\n          }\n        }\n      });\n    }\n    return v;\n  }\n  function load(refetching = true) {\n    if (refetching !== false && scheduled) return;\n    scheduled = false;\n    const lookup = dynamic ? dynamic() : source;\n    loadedUnderTransition = Transition && Transition.running;\n    if (lookup == null || lookup === false) {\n      loadEnd(pr, untrack(value));\n      return;\n    }\n    if (Transition && pr) Transition.promises.delete(pr);\n    const p =\n      initP !== NO_INIT\n        ? initP\n        : untrack(() =>\n            fetcher(lookup, {\n              value: value(),\n              refetching\n            })\n          );\n    if (!isPromise(p)) {\n      loadEnd(pr, p, undefined, lookup);\n      return p;\n    }\n    pr = p;\n    if (\"value\" in p) {\n      if (p.status === \"success\") loadEnd(pr, p.value, undefined, lookup);\n      else loadEnd(pr, undefined, castError(p.value), lookup);\n      return p;\n    }\n    scheduled = true;\n    queueMicrotask(() => (scheduled = false));\n    runUpdates(() => {\n      setState(resolved ? \"refreshing\" : \"pending\");\n      trigger();\n    }, false);\n    return p.then(\n      v => loadEnd(p, v, undefined, lookup),\n      e => loadEnd(p, undefined, castError(e), lookup)\n    );\n  }\n  Object.defineProperties(read, {\n    state: {\n      get: () => state()\n    },\n    error: {\n      get: () => error()\n    },\n    loading: {\n      get() {\n        const s = state();\n        return s === \"pending\" || s === \"refreshing\";\n      }\n    },\n    latest: {\n      get() {\n        if (!resolved) return read();\n        const err = error();\n        if (err && !pr) throw err;\n        return value();\n      }\n    }\n  });\n  if (dynamic) createComputed(() => load(false));\n  else load(false);\n  return [\n    read,\n    {\n      refetch: load,\n      mutate: setValue\n    }\n  ];\n}\nfunction createDeferred(source, options) {\n  let t,\n    timeout = options ? options.timeoutMs : undefined;\n  const node = createComputation(\n    () => {\n      if (!t || !t.fn)\n        t = requestCallback(\n          () => setDeferred(() => node.value),\n          timeout !== undefined\n            ? {\n                timeout\n              }\n            : undefined\n        );\n      return source();\n    },\n    undefined,\n    true\n  );\n  const [deferred, setDeferred] = createSignal(\n    Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n    options\n  );\n  updateComputation(node);\n  setDeferred(() =>\n    Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n  );\n  return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n  const subs = new Map();\n  const node = createComputation(\n    p => {\n      const v = source();\n      for (const [key, val] of subs.entries())\n        if (fn(key, v) !== fn(key, p)) {\n          for (const c of val.values()) {\n            c.state = STALE;\n            if (c.pure) Updates.push(c);\n            else Effects.push(c);\n          }\n        }\n      return v;\n    },\n    undefined,\n    true,\n    STALE\n  );\n  updateComputation(node);\n  return key => {\n    const listener = Listener;\n    if (listener) {\n      let l;\n      if ((l = subs.get(key))) l.add(listener);\n      else subs.set(key, (l = new Set([listener])));\n      onCleanup(() => {\n        l.delete(listener);\n        !l.size && subs.delete(key);\n      });\n    }\n    return fn(\n      key,\n      Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n    );\n  };\n}\nfunction batch(fn) {\n  return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n  if (!ExternalSourceConfig && Listener === null) return fn();\n  const listener = Listener;\n  Listener = null;\n  try {\n    if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n    return fn();\n  } finally {\n    Listener = listener;\n  }\n}\nfunction on(deps, fn, options) {\n  const isArray = Array.isArray(deps);\n  let prevInput;\n  let defer = options && options.defer;\n  return prevValue => {\n    let input;\n    if (isArray) {\n      input = Array(deps.length);\n      for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n    } else input = deps();\n    if (defer) {\n      defer = false;\n      return prevValue;\n    }\n    const result = untrack(() => fn(input, prevInput, prevValue));\n    prevInput = input;\n    return result;\n  };\n}\nfunction onMount(fn) {\n  createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n  if (Owner === null);\n  else if (Owner.cleanups === null) Owner.cleanups = [fn];\n  else Owner.cleanups.push(fn);\n  return fn;\n}\nfunction catchError(fn, handler) {\n  ERROR || (ERROR = Symbol(\"error\"));\n  Owner = createComputation(undefined, undefined, true);\n  Owner.context = {\n    ...Owner.context,\n    [ERROR]: [handler]\n  };\n  if (Transition && Transition.running) Transition.sources.add(Owner);\n  try {\n    return fn();\n  } catch (err) {\n    handleError(err);\n  } finally {\n    Owner = Owner.owner;\n  }\n}\nfunction getListener() {\n  return Listener;\n}\nfunction getOwner() {\n  return Owner;\n}\nfunction runWithOwner(o, fn) {\n  const prev = Owner;\n  const prevListener = Listener;\n  Owner = o;\n  Listener = null;\n  try {\n    return runUpdates(fn, true);\n  } catch (err) {\n    handleError(err);\n  } finally {\n    Owner = prev;\n    Listener = prevListener;\n  }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n  Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n  if (Transition && Transition.running) {\n    fn();\n    return Transition.done;\n  }\n  const l = Listener;\n  const o = Owner;\n  return Promise.resolve().then(() => {\n    Listener = l;\n    Owner = o;\n    let t;\n    if (Scheduler || SuspenseContext) {\n      t =\n        Transition ||\n        (Transition = {\n          sources: new Set(),\n          effects: [],\n          promises: new Set(),\n          disposed: new Set(),\n          queue: new Set(),\n          running: true\n        });\n      t.done || (t.done = new Promise(res => (t.resolve = res)));\n      t.running = true;\n    }\n    runUpdates(fn, false);\n    Listener = Owner = null;\n    return t ? t.done : undefined;\n  });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/ createSignal(false);\nfunction useTransition() {\n  return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n  Effects.push.apply(Effects, e);\n  e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n  const id = Symbol(\"context\");\n  return {\n    id,\n    Provider: createProvider(id),\n    defaultValue\n  };\n}\nfunction useContext(context) {\n  let value;\n  return Owner && Owner.context && (value = Owner.context[context.id]) !== undefined\n    ? value\n    : context.defaultValue;\n}\nfunction children(fn) {\n  const children = createMemo(fn);\n  const memo = createMemo(() => resolveChildren(children()));\n  memo.toArray = () => {\n    const c = memo();\n    return Array.isArray(c) ? c : c != null ? [c] : [];\n  };\n  return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n  return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n  if (ExternalSourceConfig) {\n    const { factory: oldFactory, untrack: oldUntrack } = ExternalSourceConfig;\n    ExternalSourceConfig = {\n      factory: (fn, trigger) => {\n        const oldSource = oldFactory(fn, trigger);\n        const source = factory(x => oldSource.track(x), trigger);\n        return {\n          track: x => source.track(x),\n          dispose() {\n            source.dispose();\n            oldSource.dispose();\n          }\n        };\n      },\n      untrack: fn => oldUntrack(() => untrack(fn))\n    };\n  } else {\n    ExternalSourceConfig = {\n      factory,\n      untrack\n    };\n  }\n}\nfunction readSignal() {\n  const runningTransition = Transition && Transition.running;\n  if (this.sources && (runningTransition ? this.tState : this.state)) {\n    if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);\n    else {\n      const updates = Updates;\n      Updates = null;\n      runUpdates(() => lookUpstream(this), false);\n      Updates = updates;\n    }\n  }\n  if (Listener) {\n    const sSlot = this.observers ? this.observers.length : 0;\n    if (!Listener.sources) {\n      Listener.sources = [this];\n      Listener.sourceSlots = [sSlot];\n    } else {\n      Listener.sources.push(this);\n      Listener.sourceSlots.push(sSlot);\n    }\n    if (!this.observers) {\n      this.observers = [Listener];\n      this.observerSlots = [Listener.sources.length - 1];\n    } else {\n      this.observers.push(Listener);\n      this.observerSlots.push(Listener.sources.length - 1);\n    }\n  }\n  if (runningTransition && Transition.sources.has(this)) return this.tValue;\n  return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n  let current =\n    Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n  if (!node.comparator || !node.comparator(current, value)) {\n    if (Transition) {\n      const TransitionRunning = Transition.running;\n      if (TransitionRunning || (!isComp && Transition.sources.has(node))) {\n        Transition.sources.add(node);\n        node.tValue = value;\n      }\n      if (!TransitionRunning) node.value = value;\n    } else node.value = value;\n    if (node.observers && node.observers.length) {\n      runUpdates(() => {\n        for (let i = 0; i < node.observers.length; i += 1) {\n          const o = node.observers[i];\n          const TransitionRunning = Transition && Transition.running;\n          if (TransitionRunning && Transition.disposed.has(o)) continue;\n          if (TransitionRunning ? !o.tState : !o.state) {\n            if (o.pure) Updates.push(o);\n            else Effects.push(o);\n            if (o.observers) markDownstream(o);\n          }\n          if (!TransitionRunning) o.state = STALE;\n          else o.tState = STALE;\n        }\n        if (Updates.length > 10e5) {\n          Updates = [];\n          if (IS_DEV);\n          throw new Error();\n        }\n      }, false);\n    }\n  }\n  return value;\n}\nfunction updateComputation(node) {\n  if (!node.fn) return;\n  cleanNode(node);\n  const time = ExecCount;\n  runComputation(\n    node,\n    Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n    time\n  );\n  if (Transition && !Transition.running && Transition.sources.has(node)) {\n    queueMicrotask(() => {\n      runUpdates(() => {\n        Transition && (Transition.running = true);\n        Listener = Owner = node;\n        runComputation(node, node.tValue, time);\n        Listener = Owner = null;\n      }, false);\n    });\n  }\n}\nfunction runComputation(node, value, time) {\n  let nextValue;\n  const owner = Owner,\n    listener = Listener;\n  Listener = Owner = node;\n  try {\n    nextValue = node.fn(value);\n  } catch (err) {\n    if (node.pure) {\n      if (Transition && Transition.running) {\n        node.tState = STALE;\n        node.tOwned && node.tOwned.forEach(cleanNode);\n        node.tOwned = undefined;\n      } else {\n        node.state = STALE;\n        node.owned && node.owned.forEach(cleanNode);\n        node.owned = null;\n      }\n    }\n    node.updatedAt = time + 1;\n    return handleError(err);\n  } finally {\n    Listener = listener;\n    Owner = owner;\n  }\n  if (!node.updatedAt || node.updatedAt <= time) {\n    if (node.updatedAt != null && \"observers\" in node) {\n      writeSignal(node, nextValue, true);\n    } else if (Transition && Transition.running && node.pure) {\n      Transition.sources.add(node);\n      node.tValue = nextValue;\n    } else node.value = nextValue;\n    node.updatedAt = time;\n  }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n  const c = {\n    fn,\n    state: state,\n    updatedAt: null,\n    owned: null,\n    sources: null,\n    sourceSlots: null,\n    cleanups: null,\n    value: init,\n    owner: Owner,\n    context: Owner ? Owner.context : null,\n    pure\n  };\n  if (Transition && Transition.running) {\n    c.state = 0;\n    c.tState = state;\n  }\n  if (Owner === null);\n  else if (Owner !== UNOWNED) {\n    if (Transition && Transition.running && Owner.pure) {\n      if (!Owner.tOwned) Owner.tOwned = [c];\n      else Owner.tOwned.push(c);\n    } else {\n      if (!Owner.owned) Owner.owned = [c];\n      else Owner.owned.push(c);\n    }\n  }\n  if (ExternalSourceConfig && c.fn) {\n    const [track, trigger] = createSignal(undefined, {\n      equals: false\n    });\n    const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n    onCleanup(() => ordinary.dispose());\n    const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n    const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n    c.fn = x => {\n      track();\n      return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n    };\n  }\n  return c;\n}\nfunction runTop(node) {\n  const runningTransition = Transition && Transition.running;\n  if ((runningTransition ? node.tState : node.state) === 0) return;\n  if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n  if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n  const ancestors = [node];\n  while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n    if (runningTransition && Transition.disposed.has(node)) return;\n    if (runningTransition ? node.tState : node.state) ancestors.push(node);\n  }\n  for (let i = ancestors.length - 1; i >= 0; i--) {\n    node = ancestors[i];\n    if (runningTransition) {\n      let top = node,\n        prev = ancestors[i + 1];\n      while ((top = top.owner) && top !== prev) {\n        if (Transition.disposed.has(top)) return;\n      }\n    }\n    if ((runningTransition ? node.tState : node.state) === STALE) {\n      updateComputation(node);\n    } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n      const updates = Updates;\n      Updates = null;\n      runUpdates(() => lookUpstream(node, ancestors[0]), false);\n      Updates = updates;\n    }\n  }\n}\nfunction runUpdates(fn, init) {\n  if (Updates) return fn();\n  let wait = false;\n  if (!init) Updates = [];\n  if (Effects) wait = true;\n  else Effects = [];\n  ExecCount++;\n  try {\n    const res = fn();\n    completeUpdates(wait);\n    return res;\n  } catch (err) {\n    if (!wait) Effects = null;\n    Updates = null;\n    handleError(err);\n  }\n}\nfunction completeUpdates(wait) {\n  if (Updates) {\n    if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);\n    else runQueue(Updates);\n    Updates = null;\n  }\n  if (wait) return;\n  let res;\n  if (Transition) {\n    if (!Transition.promises.size && !Transition.queue.size) {\n      const sources = Transition.sources;\n      const disposed = Transition.disposed;\n      Effects.push.apply(Effects, Transition.effects);\n      res = Transition.resolve;\n      for (const e of Effects) {\n        \"tState\" in e && (e.state = e.tState);\n        delete e.tState;\n      }\n      Transition = null;\n      runUpdates(() => {\n        for (const d of disposed) cleanNode(d);\n        for (const v of sources) {\n          v.value = v.tValue;\n          if (v.owned) {\n            for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n          }\n          if (v.tOwned) v.owned = v.tOwned;\n          delete v.tValue;\n          delete v.tOwned;\n          v.tState = 0;\n        }\n        setTransPending(false);\n      }, false);\n    } else if (Transition.running) {\n      Transition.running = false;\n      Transition.effects.push.apply(Transition.effects, Effects);\n      Effects = null;\n      setTransPending(true);\n      return;\n    }\n  }\n  const e = Effects;\n  Effects = null;\n  if (e.length) runUpdates(() => runEffects(e), false);\n  if (res) res();\n}\nfunction runQueue(queue) {\n  for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n  for (let i = 0; i < queue.length; i++) {\n    const item = queue[i];\n    const tasks = Transition.queue;\n    if (!tasks.has(item)) {\n      tasks.add(item);\n      Scheduler(() => {\n        tasks.delete(item);\n        runUpdates(() => {\n          Transition.running = true;\n          runTop(item);\n        }, false);\n        Transition && (Transition.running = false);\n      });\n    }\n  }\n}\nfunction runUserEffects(queue) {\n  let i,\n    userLength = 0;\n  for (i = 0; i < queue.length; i++) {\n    const e = queue[i];\n    if (!e.user) runTop(e);\n    else queue[userLength++] = e;\n  }\n  if (sharedConfig.context) {\n    if (sharedConfig.count) {\n      sharedConfig.effects || (sharedConfig.effects = []);\n      sharedConfig.effects.push(...queue.slice(0, userLength));\n      return;\n    }\n    setHydrateContext();\n  }\n  if (sharedConfig.effects && (sharedConfig.done || !sharedConfig.count)) {\n    queue = [...sharedConfig.effects, ...queue];\n    userLength += sharedConfig.effects.length;\n    delete sharedConfig.effects;\n  }\n  for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n  const runningTransition = Transition && Transition.running;\n  if (runningTransition) node.tState = 0;\n  else node.state = 0;\n  for (let i = 0; i < node.sources.length; i += 1) {\n    const source = node.sources[i];\n    if (source.sources) {\n      const state = runningTransition ? source.tState : source.state;\n      if (state === STALE) {\n        if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount))\n          runTop(source);\n      } else if (state === PENDING) lookUpstream(source, ignore);\n    }\n  }\n}\nfunction markDownstream(node) {\n  const runningTransition = Transition && Transition.running;\n  for (let i = 0; i < node.observers.length; i += 1) {\n    const o = node.observers[i];\n    if (runningTransition ? !o.tState : !o.state) {\n      if (runningTransition) o.tState = PENDING;\n      else o.state = PENDING;\n      if (o.pure) Updates.push(o);\n      else Effects.push(o);\n      o.observers && markDownstream(o);\n    }\n  }\n}\nfunction cleanNode(node) {\n  let i;\n  if (node.sources) {\n    while (node.sources.length) {\n      const source = node.sources.pop(),\n        index = node.sourceSlots.pop(),\n        obs = source.observers;\n      if (obs && obs.length) {\n        const n = obs.pop(),\n          s = source.observerSlots.pop();\n        if (index < obs.length) {\n          n.sourceSlots[s] = index;\n          obs[index] = n;\n          source.observerSlots[index] = s;\n        }\n      }\n    }\n  }\n  if (node.tOwned) {\n    for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n    delete node.tOwned;\n  }\n  if (Transition && Transition.running && node.pure) {\n    reset(node, true);\n  } else if (node.owned) {\n    for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n    node.owned = null;\n  }\n  if (node.cleanups) {\n    for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n    node.cleanups = null;\n  }\n  if (Transition && Transition.running) node.tState = 0;\n  else node.state = 0;\n}\nfunction reset(node, top) {\n  if (!top) {\n    node.tState = 0;\n    Transition.disposed.add(node);\n  }\n  if (node.owned) {\n    for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n  }\n}\nfunction castError(err) {\n  if (err instanceof Error) return err;\n  return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n    cause: err\n  });\n}\nfunction runErrors(err, fns, owner) {\n  try {\n    for (const f of fns) f(err);\n  } catch (e) {\n    handleError(e, (owner && owner.owner) || null);\n  }\n}\nfunction handleError(err, owner = Owner) {\n  const fns = ERROR && owner && owner.context && owner.context[ERROR];\n  const error = castError(err);\n  if (!fns) throw error;\n  if (Effects)\n    Effects.push({\n      fn() {\n        runErrors(error, fns, owner);\n      },\n      state: STALE\n    });\n  else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n  if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n  if (Array.isArray(children)) {\n    const results = [];\n    for (let i = 0; i < children.length; i++) {\n      const result = resolveChildren(children[i]);\n      Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n    }\n    return results;\n  }\n  return children;\n}\nfunction createProvider(id, options) {\n  return function provider(props) {\n    let res;\n    createRenderEffect(\n      () =>\n        (res = untrack(() => {\n          Owner.context = {\n            ...Owner.context,\n            [id]: props.value\n          };\n          return children(() => props.children);\n        })),\n      undefined\n    );\n    return res;\n  };\n}\nfunction onError(fn) {\n  ERROR || (ERROR = Symbol(\"error\"));\n  if (Owner === null);\n  else if (Owner.context === null || !Owner.context[ERROR]) {\n    Owner.context = {\n      ...Owner.context,\n      [ERROR]: [fn]\n    };\n    mutateContext(Owner, ERROR, [fn]);\n  } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n  if (o.owned) {\n    for (let i = 0; i < o.owned.length; i++) {\n      if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n      if (!o.owned[i].context) {\n        o.owned[i].context = o.context;\n        mutateContext(o.owned[i], key, value);\n      } else if (!o.owned[i].context[key]) {\n        o.owned[i].context[key] = value;\n        mutateContext(o.owned[i], key, value);\n      }\n    }\n  }\n}\n\nfunction observable(input) {\n  return {\n    subscribe(observer) {\n      if (!(observer instanceof Object) || observer == null) {\n        throw new TypeError(\"Expected the observer to be an object.\");\n      }\n      const handler =\n        typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n      if (!handler) {\n        return {\n          unsubscribe() {}\n        };\n      }\n      const dispose = createRoot(disposer => {\n        createEffect(() => {\n          const v = input();\n          untrack(() => handler(v));\n        });\n        return disposer;\n      });\n      if (getOwner()) onCleanup(dispose);\n      return {\n        unsubscribe() {\n          dispose();\n        }\n      };\n    },\n    [Symbol.observable || \"@@observable\"]() {\n      return this;\n    }\n  };\n}\nfunction from(producer, initalValue = undefined) {\n  const [s, set] = createSignal(initalValue, {\n    equals: false\n  });\n  if (\"subscribe\" in producer) {\n    const unsub = producer.subscribe(v => set(() => v));\n    onCleanup(() => (\"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub()));\n  } else {\n    const clean = producer(set);\n    onCleanup(clean);\n  }\n  return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n  for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n  let items = [],\n    mapped = [],\n    disposers = [],\n    len = 0,\n    indexes = mapFn.length > 1 ? [] : null;\n  onCleanup(() => dispose(disposers));\n  return () => {\n    let newItems = list() || [],\n      newLen = newItems.length,\n      i,\n      j;\n    newItems[$TRACK];\n    return untrack(() => {\n      let newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;\n      if (newLen === 0) {\n        if (len !== 0) {\n          dispose(disposers);\n          disposers = [];\n          items = [];\n          mapped = [];\n          len = 0;\n          indexes && (indexes = []);\n        }\n        if (options.fallback) {\n          items = [FALLBACK];\n          mapped[0] = createRoot(disposer => {\n            disposers[0] = disposer;\n            return options.fallback();\n          });\n          len = 1;\n        }\n      } else if (len === 0) {\n        mapped = new Array(newLen);\n        for (j = 0; j < newLen; j++) {\n          items[j] = newItems[j];\n          mapped[j] = createRoot(mapper);\n        }\n        len = newLen;\n      } else {\n        temp = new Array(newLen);\n        tempdisposers = new Array(newLen);\n        indexes && (tempIndexes = new Array(newLen));\n        for (\n          start = 0, end = Math.min(len, newLen);\n          start < end && items[start] === newItems[start];\n          start++\n        );\n        for (\n          end = len - 1, newEnd = newLen - 1;\n          end >= start && newEnd >= start && items[end] === newItems[newEnd];\n          end--, newEnd--\n        ) {\n          temp[newEnd] = mapped[end];\n          tempdisposers[newEnd] = disposers[end];\n          indexes && (tempIndexes[newEnd] = indexes[end]);\n        }\n        newIndices = new Map();\n        newIndicesNext = new Array(newEnd + 1);\n        for (j = newEnd; j >= start; j--) {\n          item = newItems[j];\n          i = newIndices.get(item);\n          newIndicesNext[j] = i === undefined ? -1 : i;\n          newIndices.set(item, j);\n        }\n        for (i = start; i <= end; i++) {\n          item = items[i];\n          j = newIndices.get(item);\n          if (j !== undefined && j !== -1) {\n            temp[j] = mapped[i];\n            tempdisposers[j] = disposers[i];\n            indexes && (tempIndexes[j] = indexes[i]);\n            j = newIndicesNext[j];\n            newIndices.set(item, j);\n          } else disposers[i]();\n        }\n        for (j = start; j < newLen; j++) {\n          if (j in temp) {\n            mapped[j] = temp[j];\n            disposers[j] = tempdisposers[j];\n            if (indexes) {\n              indexes[j] = tempIndexes[j];\n              indexes[j](j);\n            }\n          } else mapped[j] = createRoot(mapper);\n        }\n        mapped = mapped.slice(0, (len = newLen));\n        items = newItems.slice(0);\n      }\n      return mapped;\n    });\n    function mapper(disposer) {\n      disposers[j] = disposer;\n      if (indexes) {\n        const [s, set] = createSignal(j);\n        indexes[j] = set;\n        return mapFn(newItems[j], s);\n      }\n      return mapFn(newItems[j]);\n    }\n  };\n}\nfunction indexArray(list, mapFn, options = {}) {\n  let items = [],\n    mapped = [],\n    disposers = [],\n    signals = [],\n    len = 0,\n    i;\n  onCleanup(() => dispose(disposers));\n  return () => {\n    const newItems = list() || [],\n      newLen = newItems.length;\n    newItems[$TRACK];\n    return untrack(() => {\n      if (newLen === 0) {\n        if (len !== 0) {\n          dispose(disposers);\n          disposers = [];\n          items = [];\n          mapped = [];\n          len = 0;\n          signals = [];\n        }\n        if (options.fallback) {\n          items = [FALLBACK];\n          mapped[0] = createRoot(disposer => {\n            disposers[0] = disposer;\n            return options.fallback();\n          });\n          len = 1;\n        }\n        return mapped;\n      }\n      if (items[0] === FALLBACK) {\n        disposers[0]();\n        disposers = [];\n        items = [];\n        mapped = [];\n        len = 0;\n      }\n      for (i = 0; i < newLen; i++) {\n        if (i < items.length && items[i] !== newItems[i]) {\n          signals[i](() => newItems[i]);\n        } else if (i >= items.length) {\n          mapped[i] = createRoot(mapper);\n        }\n      }\n      for (; i < items.length; i++) {\n        disposers[i]();\n      }\n      len = signals.length = disposers.length = newLen;\n      items = newItems.slice(0);\n      return (mapped = mapped.slice(0, len));\n    });\n    function mapper(disposer) {\n      disposers[i] = disposer;\n      const [s, set] = createSignal(newItems[i]);\n      signals[i] = set;\n      return mapFn(s, i);\n    }\n  };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n  hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n  if (hydrationEnabled) {\n    if (sharedConfig.context) {\n      const c = sharedConfig.context;\n      setHydrateContext(nextHydrateContext());\n      const r = untrack(() => Comp(props || {}));\n      setHydrateContext(c);\n      return r;\n    }\n  }\n  return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n  return true;\n}\nconst propTraps = {\n  get(_, property, receiver) {\n    if (property === $PROXY) return receiver;\n    return _.get(property);\n  },\n  has(_, property) {\n    if (property === $PROXY) return true;\n    return _.has(property);\n  },\n  set: trueFn,\n  deleteProperty: trueFn,\n  getOwnPropertyDescriptor(_, property) {\n    return {\n      configurable: true,\n      enumerable: true,\n      get() {\n        return _.get(property);\n      },\n      set: trueFn,\n      deleteProperty: trueFn\n    };\n  },\n  ownKeys(_) {\n    return _.keys();\n  }\n};\nfunction resolveSource(s) {\n  return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n  for (let i = 0, length = this.length; i < length; ++i) {\n    const v = this[i]();\n    if (v !== undefined) return v;\n  }\n}\nfunction mergeProps(...sources) {\n  let proxy = false;\n  for (let i = 0; i < sources.length; i++) {\n    const s = sources[i];\n    proxy = proxy || (!!s && $PROXY in s);\n    sources[i] = typeof s === \"function\" ? ((proxy = true), createMemo(s)) : s;\n  }\n  if (SUPPORTS_PROXY && proxy) {\n    return new Proxy(\n      {\n        get(property) {\n          for (let i = sources.length - 1; i >= 0; i--) {\n            const v = resolveSource(sources[i])[property];\n            if (v !== undefined) return v;\n          }\n        },\n        has(property) {\n          for (let i = sources.length - 1; i >= 0; i--) {\n            if (property in resolveSource(sources[i])) return true;\n          }\n          return false;\n        },\n        keys() {\n          const keys = [];\n          for (let i = 0; i < sources.length; i++)\n            keys.push(...Object.keys(resolveSource(sources[i])));\n          return [...new Set(keys)];\n        }\n      },\n      propTraps\n    );\n  }\n  const sourcesMap = {};\n  const defined = Object.create(null);\n  for (let i = sources.length - 1; i >= 0; i--) {\n    const source = sources[i];\n    if (!source) continue;\n    const sourceKeys = Object.getOwnPropertyNames(source);\n    for (let i = sourceKeys.length - 1; i >= 0; i--) {\n      const key = sourceKeys[i];\n      if (key === \"__proto__\" || key === \"constructor\") continue;\n      const desc = Object.getOwnPropertyDescriptor(source, key);\n      if (!defined[key]) {\n        defined[key] = desc.get\n          ? {\n              enumerable: true,\n              configurable: true,\n              get: resolveSources.bind((sourcesMap[key] = [desc.get.bind(source)]))\n            }\n          : desc.value !== undefined\n          ? desc\n          : undefined;\n      } else {\n        const sources = sourcesMap[key];\n        if (sources) {\n          if (desc.get) sources.push(desc.get.bind(source));\n          else if (desc.value !== undefined) sources.push(() => desc.value);\n        }\n      }\n    }\n  }\n  const target = {};\n  const definedKeys = Object.keys(defined);\n  for (let i = definedKeys.length - 1; i >= 0; i--) {\n    const key = definedKeys[i],\n      desc = defined[key];\n    if (desc && desc.get) Object.defineProperty(target, key, desc);\n    else target[key] = desc ? desc.value : undefined;\n  }\n  return target;\n}\nfunction splitProps(props, ...keys) {\n  if (SUPPORTS_PROXY && $PROXY in props) {\n    const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n    const res = keys.map(k => {\n      return new Proxy(\n        {\n          get(property) {\n            return k.includes(property) ? props[property] : undefined;\n          },\n          has(property) {\n            return k.includes(property) && property in props;\n          },\n          keys() {\n            return k.filter(property => property in props);\n          }\n        },\n        propTraps\n      );\n    });\n    res.push(\n      new Proxy(\n        {\n          get(property) {\n            return blocked.has(property) ? undefined : props[property];\n          },\n          has(property) {\n            return blocked.has(property) ? false : property in props;\n          },\n          keys() {\n            return Object.keys(props).filter(k => !blocked.has(k));\n          }\n        },\n        propTraps\n      )\n    );\n    return res;\n  }\n  const otherObject = {};\n  const objects = keys.map(() => ({}));\n  for (const propName of Object.getOwnPropertyNames(props)) {\n    const desc = Object.getOwnPropertyDescriptor(props, propName);\n    const isDefaultDesc =\n      !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n    let blocked = false;\n    let objectIndex = 0;\n    for (const k of keys) {\n      if (k.includes(propName)) {\n        blocked = true;\n        isDefaultDesc\n          ? (objects[objectIndex][propName] = desc.value)\n          : Object.defineProperty(objects[objectIndex], propName, desc);\n      }\n      ++objectIndex;\n    }\n    if (!blocked) {\n      isDefaultDesc\n        ? (otherObject[propName] = desc.value)\n        : Object.defineProperty(otherObject, propName, desc);\n    }\n  }\n  return [...objects, otherObject];\n}\nfunction lazy(fn) {\n  let comp;\n  let p;\n  const wrap = props => {\n    const ctx = sharedConfig.context;\n    if (ctx) {\n      const [s, set] = createSignal();\n      sharedConfig.count || (sharedConfig.count = 0);\n      sharedConfig.count++;\n      (p || (p = fn())).then(mod => {\n        !sharedConfig.done && setHydrateContext(ctx);\n        sharedConfig.count--;\n        set(() => mod.default);\n        setHydrateContext();\n      });\n      comp = s;\n    } else if (!comp) {\n      const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n      comp = s;\n    }\n    let Comp;\n    return createMemo(() =>\n      (Comp = comp())\n        ? untrack(() => {\n            if (IS_DEV);\n            if (!ctx || sharedConfig.done) return Comp(props);\n            const c = sharedConfig.context;\n            setHydrateContext(ctx);\n            const r = Comp(props);\n            setHydrateContext(c);\n            return r;\n          })\n        : \"\"\n    );\n  };\n  wrap.preload = () => p || ((p = fn()).then(mod => (comp = () => mod.default)), p);\n  return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n  const ctx = sharedConfig.context;\n  return ctx ? sharedConfig.getNextContextId() : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n  const fallback = \"fallback\" in props && {\n    fallback: () => props.fallback\n  };\n  return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n  const fallback = \"fallback\" in props && {\n    fallback: () => props.fallback\n  };\n  return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n  const keyed = props.keyed;\n  const conditionValue = createMemo(() => props.when, undefined, undefined);\n  const condition = keyed\n    ? conditionValue\n    : createMemo(conditionValue, undefined, {\n        equals: (a, b) => !a === !b\n      });\n  return createMemo(\n    () => {\n      const c = condition();\n      if (c) {\n        const child = props.children;\n        const fn = typeof child === \"function\" && child.length > 0;\n        return fn\n          ? untrack(() =>\n              child(\n                keyed\n                  ? c\n                  : () => {\n                      if (!untrack(condition)) throw narrowedError(\"Show\");\n                      return conditionValue();\n                    }\n              )\n            )\n          : child;\n      }\n      return props.fallback;\n    },\n    undefined,\n    undefined\n  );\n}\nfunction Switch(props) {\n  const chs = children(() => props.children);\n  const switchFunc = createMemo(() => {\n    const ch = chs();\n    const mps = Array.isArray(ch) ? ch : [ch];\n    let func = () => undefined;\n    for (let i = 0; i < mps.length; i++) {\n      const index = i;\n      const mp = mps[i];\n      const prevFunc = func;\n      const conditionValue = createMemo(\n        () => (prevFunc() ? undefined : mp.when),\n        undefined,\n        undefined\n      );\n      const condition = mp.keyed\n        ? conditionValue\n        : createMemo(conditionValue, undefined, {\n            equals: (a, b) => !a === !b\n          });\n      func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : undefined);\n    }\n    return func;\n  });\n  return createMemo(\n    () => {\n      const sel = switchFunc()();\n      if (!sel) return props.fallback;\n      const [index, conditionValue, mp] = sel;\n      const child = mp.children;\n      const fn = typeof child === \"function\" && child.length > 0;\n      return fn\n        ? untrack(() =>\n            child(\n              mp.keyed\n                ? conditionValue()\n                : () => {\n                    if (untrack(switchFunc)()?.[0] !== index) throw narrowedError(\"Match\");\n                    return conditionValue();\n                  }\n            )\n          )\n        : child;\n    },\n    undefined,\n    undefined\n  );\n}\nfunction Match(props) {\n  return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n  Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n  let err;\n  if (sharedConfig.context && sharedConfig.load)\n    err = sharedConfig.load(sharedConfig.getContextId());\n  const [errored, setErrored] = createSignal(err, undefined);\n  Errors || (Errors = new Set());\n  Errors.add(setErrored);\n  onCleanup(() => Errors.delete(setErrored));\n  return createMemo(\n    () => {\n      let e;\n      if ((e = errored())) {\n        const f = props.fallback;\n        return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n      }\n      return catchError(() => props.children, setErrored);\n    },\n    undefined,\n    undefined\n  );\n}\n\nconst suspenseListEquals = (a, b) =>\n  a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = /* #__PURE__ */ createContext();\nfunction SuspenseList(props) {\n  let [wrapper, setWrapper] = createSignal(() => ({\n      inFallback: false\n    })),\n    show;\n  const listContext = useContext(SuspenseListContext);\n  const [registry, setRegistry] = createSignal([]);\n  if (listContext) {\n    show = listContext.register(createMemo(() => wrapper()().inFallback));\n  }\n  const resolved = createMemo(\n    prev => {\n      const reveal = props.revealOrder,\n        tail = props.tail,\n        { showContent = true, showFallback = true } = show ? show() : {},\n        reg = registry(),\n        reverse = reveal === \"backwards\";\n      if (reveal === \"together\") {\n        const all = reg.every(inFallback => !inFallback());\n        const res = reg.map(() => ({\n          showContent: all && showContent,\n          showFallback\n        }));\n        res.inFallback = !all;\n        return res;\n      }\n      let stop = false;\n      let inFallback = prev.inFallback;\n      const res = [];\n      for (let i = 0, len = reg.length; i < len; i++) {\n        const n = reverse ? len - i - 1 : i,\n          s = reg[n]();\n        if (!stop && !s) {\n          res[n] = {\n            showContent,\n            showFallback\n          };\n        } else {\n          const next = !stop;\n          if (next) inFallback = true;\n          res[n] = {\n            showContent: next,\n            showFallback: !tail || (next && tail === \"collapsed\") ? showFallback : false\n          };\n          stop = true;\n        }\n      }\n      if (!stop) inFallback = false;\n      res.inFallback = inFallback;\n      return res;\n    },\n    {\n      inFallback: false\n    }\n  );\n  setWrapper(() => resolved);\n  return createComponent(SuspenseListContext.Provider, {\n    value: {\n      register: inFallback => {\n        let index;\n        setRegistry(registry => {\n          index = registry.length;\n          return [...registry, inFallback];\n        });\n        return createMemo(() => resolved()[index], undefined, {\n          equals: suspenseListEquals\n        });\n      }\n    },\n    get children() {\n      return props.children;\n    }\n  });\n}\nfunction Suspense(props) {\n  let counter = 0,\n    show,\n    ctx,\n    p,\n    flicker,\n    error;\n  const [inFallback, setFallback] = createSignal(false),\n    SuspenseContext = getSuspenseContext(),\n    store = {\n      increment: () => {\n        if (++counter === 1) setFallback(true);\n      },\n      decrement: () => {\n        if (--counter === 0) setFallback(false);\n      },\n      inFallback,\n      effects: [],\n      resolved: false\n    },\n    owner = getOwner();\n  if (sharedConfig.context && sharedConfig.load) {\n    const key = sharedConfig.getContextId();\n    let ref = sharedConfig.load(key);\n    if (ref) {\n      if (typeof ref !== \"object\" || ref.status !== \"success\") p = ref;\n      else sharedConfig.gather(key);\n    }\n    if (p && p !== \"$$f\") {\n      const [s, set] = createSignal(undefined, {\n        equals: false\n      });\n      flicker = s;\n      p.then(\n        () => {\n          if (sharedConfig.done) return set();\n          sharedConfig.gather(key);\n          setHydrateContext(ctx);\n          set();\n          setHydrateContext();\n        },\n        err => {\n          error = err;\n          set();\n        }\n      );\n    }\n  }\n  const listContext = useContext(SuspenseListContext);\n  if (listContext) show = listContext.register(store.inFallback);\n  let dispose;\n  onCleanup(() => dispose && dispose());\n  return createComponent(SuspenseContext.Provider, {\n    value: store,\n    get children() {\n      return createMemo(() => {\n        if (error) throw error;\n        ctx = sharedConfig.context;\n        if (flicker) {\n          flicker();\n          return (flicker = undefined);\n        }\n        if (ctx && p === \"$$f\") setHydrateContext();\n        const rendered = createMemo(() => props.children);\n        return createMemo(prev => {\n          const inFallback = store.inFallback(),\n            { showContent = true, showFallback = true } = show ? show() : {};\n          if ((!inFallback || (p && p !== \"$$f\")) && showContent) {\n            store.resolved = true;\n            dispose && dispose();\n            dispose = ctx = p = undefined;\n            resumeEffects(store.effects);\n            return rendered();\n          }\n          if (!showFallback) return;\n          if (dispose) return prev;\n          return createRoot(disposer => {\n            dispose = disposer;\n            if (ctx) {\n              setHydrateContext({\n                id: ctx.id + \"F\",\n                count: 0\n              });\n              ctx = undefined;\n            }\n            return props.fallback;\n          }, owner);\n        });\n      });\n    }\n  });\n}\n\nconst DEV = undefined;\n\nexport {\n  $DEVCOMP,\n  $PROXY,\n  $TRACK,\n  DEV,\n  ErrorBoundary,\n  For,\n  Index,\n  Match,\n  Show,\n  Suspense,\n  SuspenseList,\n  Switch,\n  batch,\n  cancelCallback,\n  catchError,\n  children,\n  createComponent,\n  createComputed,\n  createContext,\n  createDeferred,\n  createEffect,\n  createMemo,\n  createReaction,\n  createRenderEffect,\n  createResource,\n  createRoot,\n  createSelector,\n  createSignal,\n  createUniqueId,\n  enableExternalSource,\n  enableHydration,\n  enableScheduling,\n  equalFn,\n  from,\n  getListener,\n  getOwner,\n  indexArray,\n  lazy,\n  mapArray,\n  mergeProps,\n  observable,\n  on,\n  onCleanup,\n  onError,\n  onMount,\n  requestCallback,\n  resetErrorBoundaries,\n  runWithOwner,\n  sharedConfig,\n  splitProps,\n  startTransition,\n  untrack,\n  useContext,\n  useTransition\n};\n","import {\n  createRoot,\n  createRenderEffect,\n  untrack,\n  sharedConfig,\n  enableHydration,\n  getOwner,\n  createEffect,\n  runWithOwner,\n  createMemo,\n  createSignal,\n  onCleanup,\n  splitProps\n} from \"solid-js\";\nexport {\n  ErrorBoundary,\n  For,\n  Index,\n  Match,\n  Show,\n  Suspense,\n  SuspenseList,\n  Switch,\n  createComponent,\n  createRenderEffect as effect,\n  getOwner,\n  createMemo as memo,\n  mergeProps,\n  untrack\n} from \"solid-js\";\n\nconst booleans = [\n  \"allowfullscreen\",\n  \"async\",\n  \"autofocus\",\n  \"autoplay\",\n  \"checked\",\n  \"controls\",\n  \"default\",\n  \"disabled\",\n  \"formnovalidate\",\n  \"hidden\",\n  \"indeterminate\",\n  \"inert\",\n  \"ismap\",\n  \"loop\",\n  \"multiple\",\n  \"muted\",\n  \"nomodule\",\n  \"novalidate\",\n  \"open\",\n  \"playsinline\",\n  \"readonly\",\n  \"required\",\n  \"reversed\",\n  \"seamless\",\n  \"selected\"\n];\nconst Properties = /*#__PURE__*/ new Set([\n  \"className\",\n  \"value\",\n  \"readOnly\",\n  \"formNoValidate\",\n  \"isMap\",\n  \"noModule\",\n  \"playsInline\",\n  ...booleans\n]);\nconst ChildProperties = /*#__PURE__*/ new Set([\n  \"innerHTML\",\n  \"textContent\",\n  \"innerText\",\n  \"children\"\n]);\nconst Aliases = /*#__PURE__*/ Object.assign(Object.create(null), {\n  className: \"class\",\n  htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/ Object.assign(Object.create(null), {\n  class: \"className\",\n  formnovalidate: {\n    $: \"formNoValidate\",\n    BUTTON: 1,\n    INPUT: 1\n  },\n  ismap: {\n    $: \"isMap\",\n    IMG: 1\n  },\n  nomodule: {\n    $: \"noModule\",\n    SCRIPT: 1\n  },\n  playsinline: {\n    $: \"playsInline\",\n    VIDEO: 1\n  },\n  readonly: {\n    $: \"readOnly\",\n    INPUT: 1,\n    TEXTAREA: 1\n  }\n});\nfunction getPropAlias(prop, tagName) {\n  const a = PropAliases[prop];\n  return typeof a === \"object\" ? (a[tagName] ? a[\"$\"] : undefined) : a;\n}\nconst DelegatedEvents = /*#__PURE__*/ new Set([\n  \"beforeinput\",\n  \"click\",\n  \"dblclick\",\n  \"contextmenu\",\n  \"focusin\",\n  \"focusout\",\n  \"input\",\n  \"keydown\",\n  \"keyup\",\n  \"mousedown\",\n  \"mousemove\",\n  \"mouseout\",\n  \"mouseover\",\n  \"mouseup\",\n  \"pointerdown\",\n  \"pointermove\",\n  \"pointerout\",\n  \"pointerover\",\n  \"pointerup\",\n  \"touchend\",\n  \"touchmove\",\n  \"touchstart\"\n]);\nconst SVGElements = /*#__PURE__*/ new Set([\n  \"altGlyph\",\n  \"altGlyphDef\",\n  \"altGlyphItem\",\n  \"animate\",\n  \"animateColor\",\n  \"animateMotion\",\n  \"animateTransform\",\n  \"circle\",\n  \"clipPath\",\n  \"color-profile\",\n  \"cursor\",\n  \"defs\",\n  \"desc\",\n  \"ellipse\",\n  \"feBlend\",\n  \"feColorMatrix\",\n  \"feComponentTransfer\",\n  \"feComposite\",\n  \"feConvolveMatrix\",\n  \"feDiffuseLighting\",\n  \"feDisplacementMap\",\n  \"feDistantLight\",\n  \"feDropShadow\",\n  \"feFlood\",\n  \"feFuncA\",\n  \"feFuncB\",\n  \"feFuncG\",\n  \"feFuncR\",\n  \"feGaussianBlur\",\n  \"feImage\",\n  \"feMerge\",\n  \"feMergeNode\",\n  \"feMorphology\",\n  \"feOffset\",\n  \"fePointLight\",\n  \"feSpecularLighting\",\n  \"feSpotLight\",\n  \"feTile\",\n  \"feTurbulence\",\n  \"filter\",\n  \"font\",\n  \"font-face\",\n  \"font-face-format\",\n  \"font-face-name\",\n  \"font-face-src\",\n  \"font-face-uri\",\n  \"foreignObject\",\n  \"g\",\n  \"glyph\",\n  \"glyphRef\",\n  \"hkern\",\n  \"image\",\n  \"line\",\n  \"linearGradient\",\n  \"marker\",\n  \"mask\",\n  \"metadata\",\n  \"missing-glyph\",\n  \"mpath\",\n  \"path\",\n  \"pattern\",\n  \"polygon\",\n  \"polyline\",\n  \"radialGradient\",\n  \"rect\",\n  \"set\",\n  \"stop\",\n  \"svg\",\n  \"switch\",\n  \"symbol\",\n  \"text\",\n  \"textPath\",\n  \"tref\",\n  \"tspan\",\n  \"use\",\n  \"view\",\n  \"vkern\"\n]);\nconst SVGNamespace = {\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/ new Set([\n  \"html\",\n  \"base\",\n  \"head\",\n  \"link\",\n  \"meta\",\n  \"style\",\n  \"title\",\n  \"body\",\n  \"address\",\n  \"article\",\n  \"aside\",\n  \"footer\",\n  \"header\",\n  \"main\",\n  \"nav\",\n  \"section\",\n  \"body\",\n  \"blockquote\",\n  \"dd\",\n  \"div\",\n  \"dl\",\n  \"dt\",\n  \"figcaption\",\n  \"figure\",\n  \"hr\",\n  \"li\",\n  \"ol\",\n  \"p\",\n  \"pre\",\n  \"ul\",\n  \"a\",\n  \"abbr\",\n  \"b\",\n  \"bdi\",\n  \"bdo\",\n  \"br\",\n  \"cite\",\n  \"code\",\n  \"data\",\n  \"dfn\",\n  \"em\",\n  \"i\",\n  \"kbd\",\n  \"mark\",\n  \"q\",\n  \"rp\",\n  \"rt\",\n  \"ruby\",\n  \"s\",\n  \"samp\",\n  \"small\",\n  \"span\",\n  \"strong\",\n  \"sub\",\n  \"sup\",\n  \"time\",\n  \"u\",\n  \"var\",\n  \"wbr\",\n  \"area\",\n  \"audio\",\n  \"img\",\n  \"map\",\n  \"track\",\n  \"video\",\n  \"embed\",\n  \"iframe\",\n  \"object\",\n  \"param\",\n  \"picture\",\n  \"portal\",\n  \"source\",\n  \"svg\",\n  \"math\",\n  \"canvas\",\n  \"noscript\",\n  \"script\",\n  \"del\",\n  \"ins\",\n  \"caption\",\n  \"col\",\n  \"colgroup\",\n  \"table\",\n  \"tbody\",\n  \"td\",\n  \"tfoot\",\n  \"th\",\n  \"thead\",\n  \"tr\",\n  \"button\",\n  \"datalist\",\n  \"fieldset\",\n  \"form\",\n  \"input\",\n  \"label\",\n  \"legend\",\n  \"meter\",\n  \"optgroup\",\n  \"option\",\n  \"output\",\n  \"progress\",\n  \"select\",\n  \"textarea\",\n  \"details\",\n  \"dialog\",\n  \"menu\",\n  \"summary\",\n  \"details\",\n  \"slot\",\n  \"template\",\n  \"acronym\",\n  \"applet\",\n  \"basefont\",\n  \"bgsound\",\n  \"big\",\n  \"blink\",\n  \"center\",\n  \"content\",\n  \"dir\",\n  \"font\",\n  \"frame\",\n  \"frameset\",\n  \"hgroup\",\n  \"image\",\n  \"keygen\",\n  \"marquee\",\n  \"menuitem\",\n  \"nobr\",\n  \"noembed\",\n  \"noframes\",\n  \"plaintext\",\n  \"rb\",\n  \"rtc\",\n  \"shadow\",\n  \"spacer\",\n  \"strike\",\n  \"tt\",\n  \"xmp\",\n  \"a\",\n  \"abbr\",\n  \"acronym\",\n  \"address\",\n  \"applet\",\n  \"area\",\n  \"article\",\n  \"aside\",\n  \"audio\",\n  \"b\",\n  \"base\",\n  \"basefont\",\n  \"bdi\",\n  \"bdo\",\n  \"bgsound\",\n  \"big\",\n  \"blink\",\n  \"blockquote\",\n  \"body\",\n  \"br\",\n  \"button\",\n  \"canvas\",\n  \"caption\",\n  \"center\",\n  \"cite\",\n  \"code\",\n  \"col\",\n  \"colgroup\",\n  \"content\",\n  \"data\",\n  \"datalist\",\n  \"dd\",\n  \"del\",\n  \"details\",\n  \"dfn\",\n  \"dialog\",\n  \"dir\",\n  \"div\",\n  \"dl\",\n  \"dt\",\n  \"em\",\n  \"embed\",\n  \"fieldset\",\n  \"figcaption\",\n  \"figure\",\n  \"font\",\n  \"footer\",\n  \"form\",\n  \"frame\",\n  \"frameset\",\n  \"head\",\n  \"header\",\n  \"hgroup\",\n  \"hr\",\n  \"html\",\n  \"i\",\n  \"iframe\",\n  \"image\",\n  \"img\",\n  \"input\",\n  \"ins\",\n  \"kbd\",\n  \"keygen\",\n  \"label\",\n  \"legend\",\n  \"li\",\n  \"link\",\n  \"main\",\n  \"map\",\n  \"mark\",\n  \"marquee\",\n  \"menu\",\n  \"menuitem\",\n  \"meta\",\n  \"meter\",\n  \"nav\",\n  \"nobr\",\n  \"noembed\",\n  \"noframes\",\n  \"noscript\",\n  \"object\",\n  \"ol\",\n  \"optgroup\",\n  \"option\",\n  \"output\",\n  \"p\",\n  \"param\",\n  \"picture\",\n  \"plaintext\",\n  \"portal\",\n  \"pre\",\n  \"progress\",\n  \"q\",\n  \"rb\",\n  \"rp\",\n  \"rt\",\n  \"rtc\",\n  \"ruby\",\n  \"s\",\n  \"samp\",\n  \"script\",\n  \"section\",\n  \"select\",\n  \"shadow\",\n  \"slot\",\n  \"small\",\n  \"source\",\n  \"spacer\",\n  \"span\",\n  \"strike\",\n  \"strong\",\n  \"style\",\n  \"sub\",\n  \"summary\",\n  \"sup\",\n  \"table\",\n  \"tbody\",\n  \"td\",\n  \"template\",\n  \"textarea\",\n  \"tfoot\",\n  \"th\",\n  \"thead\",\n  \"time\",\n  \"title\",\n  \"tr\",\n  \"track\",\n  \"tt\",\n  \"u\",\n  \"ul\",\n  \"var\",\n  \"video\",\n  \"wbr\",\n  \"xmp\",\n  \"input\",\n  \"h1\",\n  \"h2\",\n  \"h3\",\n  \"h4\",\n  \"h5\",\n  \"h6\"\n]);\n\nfunction reconcileArrays(parentNode, a, b) {\n  let bLength = b.length,\n    aEnd = a.length,\n    bEnd = bLength,\n    aStart = 0,\n    bStart = 0,\n    after = a[aEnd - 1].nextSibling,\n    map = null;\n  while (aStart < aEnd || bStart < bEnd) {\n    if (a[aStart] === b[bStart]) {\n      aStart++;\n      bStart++;\n      continue;\n    }\n    while (a[aEnd - 1] === b[bEnd - 1]) {\n      aEnd--;\n      bEnd--;\n    }\n    if (aEnd === aStart) {\n      const node = bEnd < bLength ? (bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart]) : after;\n      while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n    } else if (bEnd === bStart) {\n      while (aStart < aEnd) {\n        if (!map || !map.has(a[aStart])) a[aStart].remove();\n        aStart++;\n      }\n    } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n      const node = a[--aEnd].nextSibling;\n      parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n      parentNode.insertBefore(b[--bEnd], node);\n      a[aEnd] = b[bEnd];\n    } else {\n      if (!map) {\n        map = new Map();\n        let i = bStart;\n        while (i < bEnd) map.set(b[i], i++);\n      }\n      const index = map.get(a[aStart]);\n      if (index != null) {\n        if (bStart < index && index < bEnd) {\n          let i = aStart,\n            sequence = 1,\n            t;\n          while (++i < aEnd && i < bEnd) {\n            if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n            sequence++;\n          }\n          if (sequence > index - bStart) {\n            const node = a[aStart];\n            while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n          } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n        } else aStart++;\n      } else a[aStart++].remove();\n    }\n  }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n  let disposer;\n  createRoot(dispose => {\n    disposer = dispose;\n    element === document\n      ? code()\n      : insert(element, code(), element.firstChild ? null : undefined, init);\n  }, options.owner);\n  return () => {\n    disposer();\n    element.textContent = \"\";\n  };\n}\nfunction template(html, isImportNode, isSVG, isMathML) {\n  let node;\n  const create = () => {\n    const t = isMathML\n      ? document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", \"template\")\n      : document.createElement(\"template\");\n    t.innerHTML = html;\n    return isSVG ? t.content.firstChild.firstChild : isMathML ? t.firstChild : t.content.firstChild;\n  };\n  const fn = isImportNode\n    ? () => untrack(() => document.importNode(node || (node = create()), true))\n    : () => (node || (node = create())).cloneNode(true);\n  fn.cloneNode = fn;\n  return fn;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n  const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n  for (let i = 0, l = eventNames.length; i < l; i++) {\n    const name = eventNames[i];\n    if (!e.has(name)) {\n      e.add(name);\n      document.addEventListener(name, eventHandler);\n    }\n  }\n}\nfunction clearDelegatedEvents(document = window.document) {\n  if (document[$$EVENTS]) {\n    for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n    delete document[$$EVENTS];\n  }\n}\nfunction setProperty(node, name, value) {\n  if (isHydrating(node)) return;\n  node[name] = value;\n}\nfunction setAttribute(node, name, value) {\n  if (isHydrating(node)) return;\n  if (value == null) node.removeAttribute(name);\n  else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n  if (isHydrating(node)) return;\n  if (value == null) node.removeAttributeNS(namespace, name);\n  else node.setAttributeNS(namespace, name, value);\n}\nfunction setBoolAttribute(node, name, value) {\n  if (isHydrating(node)) return;\n  value ? node.setAttribute(name, \"\") : node.removeAttribute(name);\n}\nfunction className(node, value) {\n  if (isHydrating(node)) return;\n  if (value == null) node.removeAttribute(\"class\");\n  else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n  if (delegate) {\n    if (Array.isArray(handler)) {\n      node[`$$${name}`] = handler[0];\n      node[`$$${name}Data`] = handler[1];\n    } else node[`$$${name}`] = handler;\n  } else if (Array.isArray(handler)) {\n    const handlerFn = handler[0];\n    node.addEventListener(name, (handler[0] = e => handlerFn.call(node, handler[1], e)));\n  } else node.addEventListener(name, handler, typeof handler !== \"function\" && handler);\n}\nfunction classList(node, value, prev = {}) {\n  const classKeys = Object.keys(value || {}),\n    prevKeys = Object.keys(prev);\n  let i, len;\n  for (i = 0, len = prevKeys.length; i < len; i++) {\n    const key = prevKeys[i];\n    if (!key || key === \"undefined\" || value[key]) continue;\n    toggleClassKey(node, key, false);\n    delete prev[key];\n  }\n  for (i = 0, len = classKeys.length; i < len; i++) {\n    const key = classKeys[i],\n      classValue = !!value[key];\n    if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n    toggleClassKey(node, key, true);\n    prev[key] = classValue;\n  }\n  return prev;\n}\nfunction style(node, value, prev) {\n  if (!value) return prev ? setAttribute(node, \"style\") : value;\n  const nodeStyle = node.style;\n  if (typeof value === \"string\") return (nodeStyle.cssText = value);\n  typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n  prev || (prev = {});\n  value || (value = {});\n  let v, s;\n  for (s in prev) {\n    value[s] == null && nodeStyle.removeProperty(s);\n    delete prev[s];\n  }\n  for (s in value) {\n    v = value[s];\n    if (v !== prev[s]) {\n      nodeStyle.setProperty(s, v);\n      prev[s] = v;\n    }\n  }\n  return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n  const prevProps = {};\n  if (!skipChildren) {\n    createRenderEffect(\n      () => (prevProps.children = insertExpression(node, props.children, prevProps.children))\n    );\n  }\n  createRenderEffect(() => typeof props.ref === \"function\" && use(props.ref, node));\n  createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n  return prevProps;\n}\nfunction dynamicProperty(props, key) {\n  const src = props[key];\n  Object.defineProperty(props, key, {\n    get() {\n      return src();\n    },\n    enumerable: true\n  });\n  return props;\n}\nfunction use(fn, element, arg) {\n  return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n  if (marker !== undefined && !initial) initial = [];\n  if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n  createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n  props || (props = {});\n  for (const prop in prevProps) {\n    if (!(prop in props)) {\n      if (prop === \"children\") continue;\n      prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef, props);\n    }\n  }\n  for (const prop in props) {\n    if (prop === \"children\") {\n      if (!skipChildren) insertExpression(node, props.children);\n      continue;\n    }\n    const value = props[prop];\n    prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef, props);\n  }\n}\nfunction hydrate$1(code, element, options = {}) {\n  if (globalThis._$HY.done) return render(code, element, [...element.childNodes], options);\n  sharedConfig.completed = globalThis._$HY.completed;\n  sharedConfig.events = globalThis._$HY.events;\n  sharedConfig.load = id => globalThis._$HY.r[id];\n  sharedConfig.has = id => id in globalThis._$HY.r;\n  sharedConfig.gather = root => gatherHydratable(element, root);\n  sharedConfig.registry = new Map();\n  sharedConfig.context = {\n    id: options.renderId || \"\",\n    count: 0\n  };\n  try {\n    gatherHydratable(element, options.renderId);\n    return render(code, element, [...element.childNodes], options);\n  } finally {\n    sharedConfig.context = null;\n  }\n}\nfunction getNextElement(template) {\n  let node,\n    key,\n    hydrating = isHydrating();\n  if (!hydrating || !(node = sharedConfig.registry.get((key = getHydrationKey())))) {\n    return template();\n  }\n  if (sharedConfig.completed) sharedConfig.completed.add(node);\n  sharedConfig.registry.delete(key);\n  return node;\n}\nfunction getNextMatch(el, nodeName) {\n  while (el && el.localName !== nodeName) el = el.nextSibling;\n  return el;\n}\nfunction getNextMarker(start) {\n  let end = start,\n    count = 0,\n    current = [];\n  if (isHydrating(start)) {\n    while (end) {\n      if (end.nodeType === 8) {\n        const v = end.nodeValue;\n        if (v === \"$\") count++;\n        else if (v === \"/\") {\n          if (count === 0) return [end, current];\n          count--;\n        }\n      }\n      current.push(end);\n      end = end.nextSibling;\n    }\n  }\n  return [end, current];\n}\nfunction runHydrationEvents() {\n  if (sharedConfig.events && !sharedConfig.events.queued) {\n    queueMicrotask(() => {\n      const { completed, events } = sharedConfig;\n      if (!events) return;\n      events.queued = false;\n      while (events.length) {\n        const [el, e] = events[0];\n        if (!completed.has(el)) return;\n        events.shift();\n        eventHandler(e);\n      }\n      if (sharedConfig.done) {\n        sharedConfig.events = _$HY.events = null;\n        sharedConfig.completed = _$HY.completed = null;\n      }\n    });\n    sharedConfig.events.queued = true;\n  }\n}\nfunction isHydrating(node) {\n  return !!sharedConfig.context && !sharedConfig.done && (!node || node.isConnected);\n}\nfunction toPropertyName(name) {\n  return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n  const classNames = key.trim().split(/\\s+/);\n  for (let i = 0, nameLen = classNames.length; i < nameLen; i++)\n    node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef, props) {\n  let isCE, isProp, isChildProp, propAlias, forceProp;\n  if (prop === \"style\") return style(node, value, prev);\n  if (prop === \"classList\") return classList(node, value, prev);\n  if (value === prev) return prev;\n  if (prop === \"ref\") {\n    if (!skipRef) value(node);\n  } else if (prop.slice(0, 3) === \"on:\") {\n    const e = prop.slice(3);\n    prev && node.removeEventListener(e, prev, typeof prev !== \"function\" && prev);\n    value && node.addEventListener(e, value, typeof value !== \"function\" && value);\n  } else if (prop.slice(0, 10) === \"oncapture:\") {\n    const e = prop.slice(10);\n    prev && node.removeEventListener(e, prev, true);\n    value && node.addEventListener(e, value, true);\n  } else if (prop.slice(0, 2) === \"on\") {\n    const name = prop.slice(2).toLowerCase();\n    const delegate = DelegatedEvents.has(name);\n    if (!delegate && prev) {\n      const h = Array.isArray(prev) ? prev[0] : prev;\n      node.removeEventListener(name, h);\n    }\n    if (delegate || value) {\n      addEventListener(node, name, value, delegate);\n      delegate && delegateEvents([name]);\n    }\n  } else if (prop.slice(0, 5) === \"attr:\") {\n    setAttribute(node, prop.slice(5), value);\n  } else if (prop.slice(0, 5) === \"bool:\") {\n    setBoolAttribute(node, prop.slice(5), value);\n  } else if (\n    (forceProp = prop.slice(0, 5) === \"prop:\") ||\n    (isChildProp = ChildProperties.has(prop)) ||\n    (!isSVG &&\n      ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop)))) ||\n    (isCE = node.nodeName.includes(\"-\") || \"is\" in props)\n  ) {\n    if (forceProp) {\n      prop = prop.slice(5);\n      isProp = true;\n    } else if (isHydrating(node)) return value;\n    if (prop === \"class\" || prop === \"className\") className(node, value);\n    else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;\n    else node[propAlias || prop] = value;\n  } else {\n    const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n    if (ns) setAttributeNS(node, ns, prop, value);\n    else setAttribute(node, Aliases[prop] || prop, value);\n  }\n  return value;\n}\nfunction eventHandler(e) {\n  if (sharedConfig.registry && sharedConfig.events) {\n    if (sharedConfig.events.find(([el, ev]) => ev === e)) return;\n  }\n  let node = e.target;\n  const key = `$$${e.type}`;\n  const oriTarget = e.target;\n  const oriCurrentTarget = e.currentTarget;\n  const retarget = value =>\n    Object.defineProperty(e, \"target\", {\n      configurable: true,\n      value\n    });\n  const handleNode = () => {\n    const handler = node[key];\n    if (handler && !node.disabled) {\n      const data = node[`${key}Data`];\n      data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n      if (e.cancelBubble) return;\n    }\n    node.host &&\n      typeof node.host !== \"string\" &&\n      !node.host._$host &&\n      node.contains(e.target) &&\n      retarget(node.host);\n    return true;\n  };\n  const walkUpTree = () => {\n    while (handleNode() && (node = node._$host || node.parentNode || node.host));\n  };\n  Object.defineProperty(e, \"currentTarget\", {\n    configurable: true,\n    get() {\n      return node || document;\n    }\n  });\n  if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;\n  if (e.composedPath) {\n    const path = e.composedPath();\n    retarget(path[0]);\n    for (let i = 0; i < path.length - 2; i++) {\n      node = path[i];\n      if (!handleNode()) break;\n      if (node._$host) {\n        node = node._$host;\n        walkUpTree();\n        break;\n      }\n      if (node.parentNode === oriCurrentTarget) {\n        break;\n      }\n    }\n  } else walkUpTree();\n  retarget(oriTarget);\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n  const hydrating = isHydrating(parent);\n  if (hydrating) {\n    !current && (current = [...parent.childNodes]);\n    let cleaned = [];\n    for (let i = 0; i < current.length; i++) {\n      const node = current[i];\n      if (node.nodeType === 8 && node.data.slice(0, 2) === \"!$\") node.remove();\n      else cleaned.push(node);\n    }\n    current = cleaned;\n  }\n  while (typeof current === \"function\") current = current();\n  if (value === current) return current;\n  const t = typeof value,\n    multi = marker !== undefined;\n  parent = (multi && current[0] && current[0].parentNode) || parent;\n  if (t === \"string\" || t === \"number\") {\n    if (hydrating) return current;\n    if (t === \"number\") {\n      value = value.toString();\n      if (value === current) return current;\n    }\n    if (multi) {\n      let node = current[0];\n      if (node && node.nodeType === 3) {\n        node.data !== value && (node.data = value);\n      } else node = document.createTextNode(value);\n      current = cleanChildren(parent, current, marker, node);\n    } else {\n      if (current !== \"\" && typeof current === \"string\") {\n        current = parent.firstChild.data = value;\n      } else current = parent.textContent = value;\n    }\n  } else if (value == null || t === \"boolean\") {\n    if (hydrating) return current;\n    current = cleanChildren(parent, current, marker);\n  } else if (t === \"function\") {\n    createRenderEffect(() => {\n      let v = value();\n      while (typeof v === \"function\") v = v();\n      current = insertExpression(parent, v, current, marker);\n    });\n    return () => current;\n  } else if (Array.isArray(value)) {\n    const array = [];\n    const currentArray = current && Array.isArray(current);\n    if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n      createRenderEffect(() => (current = insertExpression(parent, array, current, marker, true)));\n      return () => current;\n    }\n    if (hydrating) {\n      if (!array.length) return current;\n      if (marker === undefined) return (current = [...parent.childNodes]);\n      let node = array[0];\n      if (node.parentNode !== parent) return current;\n      const nodes = [node];\n      while ((node = node.nextSibling) !== marker) nodes.push(node);\n      return (current = nodes);\n    }\n    if (array.length === 0) {\n      current = cleanChildren(parent, current, marker);\n      if (multi) return current;\n    } else if (currentArray) {\n      if (current.length === 0) {\n        appendNodes(parent, array, marker);\n      } else reconcileArrays(parent, current, array);\n    } else {\n      current && cleanChildren(parent);\n      appendNodes(parent, array);\n    }\n    current = array;\n  } else if (value.nodeType) {\n    if (hydrating && value.parentNode) return (current = multi ? [value] : value);\n    if (Array.isArray(current)) {\n      if (multi) return (current = cleanChildren(parent, current, marker, value));\n      cleanChildren(parent, current, null, value);\n    } else if (current == null || current === \"\" || !parent.firstChild) {\n      parent.appendChild(value);\n    } else parent.replaceChild(value, parent.firstChild);\n    current = value;\n  } else;\n  return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n  let dynamic = false;\n  for (let i = 0, len = array.length; i < len; i++) {\n    let item = array[i],\n      prev = current && current[normalized.length],\n      t;\n    if (item == null || item === true || item === false);\n    else if ((t = typeof item) === \"object\" && item.nodeType) {\n      normalized.push(item);\n    } else if (Array.isArray(item)) {\n      dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n    } else if (t === \"function\") {\n      if (unwrap) {\n        while (typeof item === \"function\") item = item();\n        dynamic =\n          normalizeIncomingArray(\n            normalized,\n            Array.isArray(item) ? item : [item],\n            Array.isArray(prev) ? prev : [prev]\n          ) || dynamic;\n      } else {\n        normalized.push(item);\n        dynamic = true;\n      }\n    } else {\n      const value = String(item);\n      if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);\n      else normalized.push(document.createTextNode(value));\n    }\n  }\n  return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n  for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n  if (marker === undefined) return (parent.textContent = \"\");\n  const node = replacement || document.createTextNode(\"\");\n  if (current.length) {\n    let inserted = false;\n    for (let i = current.length - 1; i >= 0; i--) {\n      const el = current[i];\n      if (node !== el) {\n        const isParent = el.parentNode === parent;\n        if (!inserted && !i)\n          isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);\n        else isParent && el.remove();\n      } else inserted = true;\n    }\n  } else parent.insertBefore(node, marker);\n  return [node];\n}\nfunction gatherHydratable(element, root) {\n  const templates = element.querySelectorAll(`*[data-hk]`);\n  for (let i = 0; i < templates.length; i++) {\n    const node = templates[i];\n    const key = node.getAttribute(\"data-hk\");\n    if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key))\n      sharedConfig.registry.set(key, node);\n  }\n}\nfunction getHydrationKey() {\n  return sharedConfig.getNextContextId();\n}\nfunction NoHydration(props) {\n  return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n  return props.children;\n}\nconst voidFn = () => undefined;\nconst RequestContext = Symbol();\nfunction innerHTML(parent, content) {\n  !sharedConfig.context && (parent.innerHTML = content);\n}\n\nfunction throwInBrowser(func) {\n  const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n  console.error(err);\n}\nfunction renderToString(fn, options) {\n  throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n  throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n  throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst isDev = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n  return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n  enableHydration();\n  return hydrate$1(...args);\n};\nfunction Portal(props) {\n  const { useShadow } = props,\n    marker = document.createTextNode(\"\"),\n    mount = () => props.mount || document.body,\n    owner = getOwner();\n  let content;\n  let hydrating = !!sharedConfig.context;\n  createEffect(\n    () => {\n      if (hydrating) getOwner().user = hydrating = false;\n      content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n      const el = mount();\n      if (el instanceof HTMLHeadElement) {\n        const [clean, setClean] = createSignal(false);\n        const cleanup = () => setClean(true);\n        createRoot(dispose => insert(el, () => (!clean() ? content() : dispose()), null));\n        onCleanup(cleanup);\n      } else {\n        const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n          renderRoot =\n            useShadow && container.attachShadow\n              ? container.attachShadow({\n                  mode: \"open\"\n                })\n              : container;\n        Object.defineProperty(container, \"_$host\", {\n          get() {\n            return marker.parentNode;\n          },\n          configurable: true\n        });\n        insert(renderRoot, content);\n        el.appendChild(container);\n        props.ref && props.ref(container);\n        onCleanup(() => el.removeChild(container));\n      }\n    },\n    undefined,\n    {\n      render: !hydrating\n    }\n  );\n  return marker;\n}\nfunction createDynamic(component, props) {\n  const cached = createMemo(component);\n  return createMemo(() => {\n    const component = cached();\n    switch (typeof component) {\n      case \"function\":\n        return untrack(() => component(props));\n      case \"string\":\n        const isSvg = SVGElements.has(component);\n        const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n        spread(el, props, isSvg);\n        return el;\n    }\n  });\n}\nfunction Dynamic(props) {\n  const [, others] = splitProps(props, [\"component\"]);\n  return createDynamic(() => props.component, others);\n}\n\nexport {\n  Aliases,\n  voidFn as Assets,\n  ChildProperties,\n  DOMElements,\n  DelegatedEvents,\n  Dynamic,\n  Hydration,\n  voidFn as HydrationScript,\n  NoHydration,\n  Portal,\n  Properties,\n  RequestContext,\n  SVGElements,\n  SVGNamespace,\n  addEventListener,\n  assign,\n  classList,\n  className,\n  clearDelegatedEvents,\n  createDynamic,\n  delegateEvents,\n  dynamicProperty,\n  escape,\n  voidFn as generateHydrationScript,\n  voidFn as getAssets,\n  getHydrationKey,\n  getNextElement,\n  getNextMarker,\n  getNextMatch,\n  getPropAlias,\n  voidFn as getRequestEvent,\n  hydrate,\n  innerHTML,\n  insert,\n  isDev,\n  isServer,\n  render,\n  renderToStream,\n  renderToString,\n  renderToStringAsync,\n  resolveSSRNode,\n  runHydrationEvents,\n  setAttribute,\n  setAttributeNS,\n  setBoolAttribute,\n  setProperty,\n  spread,\n  ssr,\n  ssrAttribute,\n  ssrClassList,\n  ssrElement,\n  ssrHydrationKey,\n  ssrSpread,\n  ssrStyle,\n  style,\n  template,\n  use,\n  voidFn as useAssets\n};\n","import { createSignal, onCleanup } from \"solid-js\";\nfunction bindEvent(target, type, handler) {\n    target.addEventListener(type, handler);\n    return () => target.removeEventListener(type, handler);\n}\nfunction intercept([value, setValue], get, set) {\n    return [get ? () => get(value()) : value, set ? (v) => setValue(set(v)) : setValue];\n}\nfunction querySelector(selector) {\n    if (selector === \"#\") {\n        return null;\n    }\n    // Guard against selector being an invalid CSS selector\n    try {\n        return document.querySelector(selector);\n    }\n    catch (e) {\n        return null;\n    }\n}\nfunction scrollToHash(hash, fallbackTop) {\n    const el = querySelector(`#${hash}`);\n    if (el) {\n        el.scrollIntoView();\n    }\n    else if (fallbackTop) {\n        window.scrollTo(0, 0);\n    }\n}\nexport function createMemoryHistory() {\n    const entries = [\"/\"];\n    let index = 0;\n    const listeners = [];\n    const go = (n) => {\n        // https://github.com/remix-run/react-router/blob/682810ca929d0e3c64a76f8d6e465196b7a2ac58/packages/router/history.ts#L245\n        index = Math.max(0, Math.min(index + n, entries.length - 1));\n        const value = entries[index];\n        listeners.forEach(listener => listener(value));\n    };\n    return {\n        get: () => entries[index],\n        set: ({ value, scroll, replace }) => {\n            if (replace) {\n                entries[index] = value;\n            }\n            else {\n                entries.splice(index + 1, entries.length - index, value);\n                index++;\n            }\n            if (scroll) {\n                scrollToHash(value.split(\"#\")[1] || \"\", true);\n            }\n        },\n        back: () => {\n            go(-1);\n        },\n        forward: () => {\n            go(1);\n        },\n        go,\n        listen: (listener) => {\n            listeners.push(listener);\n            return () => {\n                const index = listeners.indexOf(listener);\n                listeners.splice(index, 1);\n            };\n        }\n    };\n}\nexport function createIntegration(get, set, init, utils) {\n    let ignore = false;\n    const wrap = (value) => (typeof value === \"string\" ? { value } : value);\n    const signal = intercept(createSignal(wrap(get()), { equals: (a, b) => a.value === b.value }), undefined, next => {\n        !ignore && set(next);\n        return next;\n    });\n    init &&\n        onCleanup(init((value = get()) => {\n            ignore = true;\n            signal[1](wrap(value));\n            ignore = false;\n        }));\n    return {\n        signal,\n        utils\n    };\n}\nexport function normalizeIntegration(integration) {\n    if (!integration) {\n        return {\n            signal: createSignal({ value: \"\" })\n        };\n    }\n    else if (Array.isArray(integration)) {\n        return {\n            signal: integration\n        };\n    }\n    return integration;\n}\nexport function staticIntegration(obj) {\n    return {\n        signal: [() => obj, next => Object.assign(obj, next)]\n    };\n}\nexport function pathIntegration() {\n    return createIntegration(() => ({\n        value: window.location.pathname + window.location.search + window.location.hash,\n        state: history.state\n    }), ({ value, replace, scroll, state }) => {\n        if (replace) {\n            window.history.replaceState(state, \"\", value);\n        }\n        else {\n            window.history.pushState(state, \"\", value);\n        }\n        scrollToHash(window.location.hash.slice(1), scroll);\n    }, notify => bindEvent(window, \"popstate\", () => notify()), {\n        go: delta => window.history.go(delta)\n    });\n}\nexport function hashIntegration() {\n    return createIntegration(() => window.location.hash.slice(1), ({ value, replace, scroll, state }) => {\n        if (replace) {\n            window.history.replaceState(state, \"\", \"#\" + value);\n        }\n        else {\n            window.location.hash = value;\n        }\n        const hashIndex = value.indexOf(\"#\");\n        const hash = hashIndex >= 0 ? value.slice(hashIndex + 1) : \"\";\n        scrollToHash(hash, scroll);\n    }, notify => bindEvent(window, \"hashchange\", () => notify()), {\n        go: delta => window.history.go(delta),\n        renderPath: path => `#${path}`,\n        parsePath: str => {\n            const to = str.replace(/^.*?#/, \"\");\n            // Hash-only hrefs like `#foo` from plain anchors will come in as `/#foo` whereas a link to\n            // `/foo` will be `/#/foo`. Check if the to starts with a `/` and if not append it as a hash\n            // to the current path so we can handle these in-page anchors correctly.\n            if (!to.startsWith(\"/\")) {\n                const [, path = \"/\"] = window.location.hash.split(\"#\", 2);\n                return `${path}#${to}`;\n            }\n            return to;\n        }\n    });\n}\nexport function memoryIntegration() {\n    const memoryHistory = createMemoryHistory();\n    return createIntegration(memoryHistory.get, memoryHistory.set, memoryHistory.listen, {\n        go: memoryHistory.go\n    });\n}\n","export function createBeforeLeave() {\n    let listeners = new Set();\n    function subscribe(listener) {\n        listeners.add(listener);\n        return () => listeners.delete(listener);\n    }\n    let ignore = false;\n    function confirm(to, options) {\n        if (ignore)\n            return !(ignore = false);\n        const e = {\n            to,\n            options,\n            defaultPrevented: false,\n            preventDefault: () => (e.defaultPrevented = true)\n        };\n        for (const l of listeners)\n            l.listener({\n                ...e,\n                from: l.location,\n                retry: (force) => {\n                    force && (ignore = true);\n                    l.navigate(to, options);\n                }\n            });\n        return !e.defaultPrevented;\n    }\n    return {\n        subscribe,\n        confirm\n    };\n}\n","import { createMemo, getOwner, runWithOwner } from \"solid-js\";\nconst hasSchemeRegex = /^(?:[a-z0-9]+:)?\\/\\//i;\nconst trimPathRegex = /^\\/+|(\\/)\\/+$/g;\nexport function normalizePath(path, omitSlash = false) {\n    const s = path.replace(trimPathRegex, \"$1\");\n    return s ? (omitSlash || /^[?#]/.test(s) ? s : \"/\" + s) : \"\";\n}\nexport function resolvePath(base, path, from) {\n    if (hasSchemeRegex.test(path)) {\n        return undefined;\n    }\n    const basePath = normalizePath(base);\n    const fromPath = from && normalizePath(from);\n    let result = \"\";\n    if (!fromPath || path.startsWith(\"/\")) {\n        result = basePath;\n    }\n    else if (fromPath.toLowerCase().indexOf(basePath.toLowerCase()) !== 0) {\n        result = basePath + fromPath;\n    }\n    else {\n        result = fromPath;\n    }\n    return (result || \"/\") + normalizePath(path, !result);\n}\nexport function invariant(value, message) {\n    if (value == null) {\n        throw new Error(message);\n    }\n    return value;\n}\nexport function joinPaths(from, to) {\n    return normalizePath(from).replace(/\\/*(\\*.*)?$/g, \"\") + normalizePath(to);\n}\nexport function extractSearchParams(url) {\n    const params = {};\n    url.searchParams.forEach((value, key) => {\n        params[key] = value;\n    });\n    return params;\n}\nexport function createMatcher(path, partial, matchFilters) {\n    const [pattern, splat] = path.split(\"/*\", 2);\n    const segments = pattern.split(\"/\").filter(Boolean);\n    const len = segments.length;\n    return (location) => {\n        const locSegments = location.split(\"/\").filter(Boolean);\n        const lenDiff = locSegments.length - len;\n        if (lenDiff < 0 || (lenDiff > 0 && splat === undefined && !partial)) {\n            return null;\n        }\n        const match = {\n            path: len ? \"\" : \"/\",\n            params: {}\n        };\n        const matchFilter = (s) => matchFilters === undefined ? undefined : matchFilters[s];\n        for (let i = 0; i < len; i++) {\n            const segment = segments[i];\n            const locSegment = locSegments[i];\n            const dynamic = segment[0] === \":\";\n            const key = dynamic ? segment.slice(1) : segment;\n            if (dynamic && matchSegment(locSegment, matchFilter(key))) {\n                match.params[key] = locSegment;\n            }\n            else if (dynamic || !matchSegment(locSegment, segment)) {\n                return null;\n            }\n            match.path += `/${locSegment}`;\n        }\n        if (splat) {\n            const remainder = lenDiff ? locSegments.slice(-lenDiff).join(\"/\") : \"\";\n            if (matchSegment(remainder, matchFilter(splat))) {\n                match.params[splat] = remainder;\n            }\n            else {\n                return null;\n            }\n        }\n        return match;\n    };\n}\nfunction matchSegment(input, filter) {\n    const isEqual = (s) => s.localeCompare(input, undefined, { sensitivity: \"base\" }) === 0;\n    if (filter === undefined) {\n        return true;\n    }\n    else if (typeof filter === \"string\") {\n        return isEqual(filter);\n    }\n    else if (typeof filter === \"function\") {\n        return filter(input);\n    }\n    else if (Array.isArray(filter)) {\n        return filter.some(isEqual);\n    }\n    else if (filter instanceof RegExp) {\n        return filter.test(input);\n    }\n    return false;\n}\nexport function scoreRoute(route) {\n    const [pattern, splat] = route.pattern.split(\"/*\", 2);\n    const segments = pattern.split(\"/\").filter(Boolean);\n    return segments.reduce((score, segment) => score + (segment.startsWith(\":\") ? 2 : 3), segments.length - (splat === undefined ? 0 : 1));\n}\nexport function createMemoObject(fn) {\n    const map = new Map();\n    const owner = getOwner();\n    return new Proxy({}, {\n        get(_, property) {\n            if (!map.has(property)) {\n                runWithOwner(owner, () => map.set(property, createMemo(() => fn()[property])));\n            }\n            return map.get(property)();\n        },\n        getOwnPropertyDescriptor() {\n            return {\n                enumerable: true,\n                configurable: true\n            };\n        },\n        ownKeys() {\n            return Reflect.ownKeys(fn());\n        }\n    });\n}\nexport function mergeSearchString(search, params) {\n    const merged = new URLSearchParams(search);\n    Object.entries(params).forEach(([key, value]) => {\n        if (value == null || value === \"\") {\n            merged.delete(key);\n        }\n        else {\n            merged.set(key, String(value));\n        }\n    });\n    const s = merged.toString();\n    return s ? `?${s}` : \"\";\n}\nexport function expandOptionals(pattern) {\n    let match = /(\\/?\\:[^\\/]+)\\?/.exec(pattern);\n    if (!match)\n        return [pattern];\n    let prefix = pattern.slice(0, match.index);\n    let suffix = pattern.slice(match.index + match[0].length);\n    const prefixes = [prefix, (prefix += match[1])];\n    // This section handles adjacent optional params. We don't actually want all permuations since\n    // that will lead to equivalent routes which have the same number of params. For example\n    // `/:a?/:b?/:c`? only has the unique expansion: `/`, `/:a`, `/:a/:b`, `/:a/:b/:c` and we can\n    // discard `/:b`, `/:c`, `/:b/:c` by building them up in order and not recursing. This also helps\n    // ensure predictability where earlier params have precidence.\n    while ((match = /^(\\/\\:[^\\/]+)\\?/.exec(suffix))) {\n        prefixes.push((prefix += match[1]));\n        suffix = suffix.slice(match[0].length);\n    }\n    return expandOptionals(suffix).reduce((results, expansion) => [...results, ...prefixes.map(p => p + expansion)], []);\n}\n","import { createComponent, createContext, createMemo, createRenderEffect, createSignal, on, onCleanup, untrack, useContext, startTransition, resetErrorBoundaries } from \"solid-js\";\nimport { isServer, delegateEvents } from \"solid-js/web\";\nimport { normalizeIntegration } from \"./integration\";\nimport { createBeforeLeave } from \"./lifecycle\";\nimport { createMemoObject, extractSearchParams, invariant, resolvePath, createMatcher, joinPaths, scoreRoute, mergeSearchString, expandOptionals } from \"./utils\";\nconst MAX_REDIRECTS = 100;\nexport const RouterContextObj = createContext();\nexport const RouteContextObj = createContext();\nexport const useRouter = () => invariant(useContext(RouterContextObj), \"Make sure your app is wrapped in a <Router />\");\nlet TempRoute;\nexport const useRoute = () => TempRoute || useContext(RouteContextObj) || useRouter().base;\nexport const useResolvedPath = (path) => {\n    const route = useRoute();\n    return createMemo(() => route.resolvePath(path()));\n};\nexport const useHref = (to) => {\n    const router = useRouter();\n    return createMemo(() => {\n        const to_ = to();\n        return to_ !== undefined ? router.renderPath(to_) : to_;\n    });\n};\nexport const useNavigate = () => useRouter().navigatorFactory();\nexport const useLocation = () => useRouter().location;\nexport const useIsRouting = () => useRouter().isRouting;\nexport const useMatch = (path, matchFilters) => {\n    const location = useLocation();\n    const matchers = createMemo(() => expandOptionals(path()).map(path => createMatcher(path, undefined, matchFilters)));\n    return createMemo(() => {\n        for (const matcher of matchers()) {\n            const match = matcher(location.pathname);\n            if (match)\n                return match;\n        }\n    });\n};\nexport const useParams = () => useRoute().params;\nexport const useRouteData = () => useRoute().data;\nexport const useSearchParams = () => {\n    const location = useLocation();\n    const navigate = useNavigate();\n    const setSearchParams = (params, options) => {\n        const searchString = untrack(() => location.pathname + mergeSearchString(location.search, params) + location.hash);\n        navigate(searchString, {\n            scroll: false,\n            resolve: false,\n            ...options\n        });\n    };\n    return [location.query, setSearchParams];\n};\nexport const useBeforeLeave = (listener) => {\n    const s = useRouter().beforeLeave.subscribe({\n        listener,\n        location: useLocation(),\n        navigate: useNavigate()\n    });\n    onCleanup(s);\n};\nexport function createRoutes(routeDef, base = \"\", fallback) {\n    const { component, data, children } = routeDef;\n    const isLeaf = !children || (Array.isArray(children) && !children.length);\n    const shared = {\n        key: routeDef,\n        element: component\n            ? () => createComponent(component, {})\n            : () => {\n                const { element } = routeDef;\n                return element === undefined && fallback\n                    ? createComponent(fallback, {})\n                    : element;\n            },\n        preload: routeDef.component\n            ? component.preload\n            : routeDef.preload,\n        data\n    };\n    return asArray(routeDef.path).reduce((acc, path) => {\n        for (const originalPath of expandOptionals(path)) {\n            const path = joinPaths(base, originalPath);\n            const pattern = isLeaf ? path : path.split(\"/*\", 1)[0];\n            acc.push({\n                ...shared,\n                originalPath,\n                pattern,\n                matcher: createMatcher(pattern, !isLeaf, routeDef.matchFilters)\n            });\n        }\n        return acc;\n    }, []);\n}\nexport function createBranch(routes, index = 0) {\n    return {\n        routes,\n        score: scoreRoute(routes[routes.length - 1]) * 10000 - index,\n        matcher(location) {\n            const matches = [];\n            for (let i = routes.length - 1; i >= 0; i--) {\n                const route = routes[i];\n                const match = route.matcher(location);\n                if (!match) {\n                    return null;\n                }\n                matches.unshift({\n                    ...match,\n                    route\n                });\n            }\n            return matches;\n        }\n    };\n}\nfunction asArray(value) {\n    return Array.isArray(value) ? value : [value];\n}\nexport function createBranches(routeDef, base = \"\", fallback, stack = [], branches = []) {\n    const routeDefs = asArray(routeDef);\n    for (let i = 0, len = routeDefs.length; i < len; i++) {\n        const def = routeDefs[i];\n        if (def && typeof def === \"object\" && def.hasOwnProperty(\"path\")) {\n            const routes = createRoutes(def, base, fallback);\n            for (const route of routes) {\n                stack.push(route);\n                const isEmptyArray = Array.isArray(def.children) && def.children.length === 0;\n                if (def.children && !isEmptyArray) {\n                    createBranches(def.children, route.pattern, fallback, stack, branches);\n                }\n                else {\n                    const branch = createBranch([...stack], branches.length);\n                    branches.push(branch);\n                }\n                stack.pop();\n            }\n        }\n    }\n    // Stack will be empty on final return\n    return stack.length ? branches : branches.sort((a, b) => b.score - a.score);\n}\nexport function getRouteMatches(branches, location) {\n    for (let i = 0, len = branches.length; i < len; i++) {\n        const match = branches[i].matcher(location);\n        if (match) {\n            return match;\n        }\n    }\n    return [];\n}\nexport function createLocation(path, state) {\n    const origin = new URL(\"http://sar\");\n    const url = createMemo(prev => {\n        const path_ = path();\n        try {\n            return new URL(path_, origin);\n        }\n        catch (err) {\n            console.error(`Invalid path ${path_}`);\n            return prev;\n        }\n    }, origin, {\n        equals: (a, b) => a.href === b.href\n    });\n    const pathname = createMemo(() => url().pathname);\n    const search = createMemo(() => url().search, true);\n    const hash = createMemo(() => url().hash);\n    const key = createMemo(() => \"\");\n    return {\n        get pathname() {\n            return pathname();\n        },\n        get search() {\n            return search();\n        },\n        get hash() {\n            return hash();\n        },\n        get state() {\n            return state();\n        },\n        get key() {\n            return key();\n        },\n        query: createMemoObject(on(search, () => extractSearchParams(url())))\n    };\n}\nexport function createRouterContext(integration, base = \"\", data, out) {\n    const { signal: [source, setSource], utils = {} } = normalizeIntegration(integration);\n    const parsePath = utils.parsePath || (p => p);\n    const renderPath = utils.renderPath || (p => p);\n    const beforeLeave = utils.beforeLeave || createBeforeLeave();\n    const basePath = resolvePath(\"\", base);\n    const output = isServer && out\n        ? Object.assign(out, {\n            matches: [],\n            url: undefined\n        })\n        : undefined;\n    if (basePath === undefined) {\n        throw new Error(`${basePath} is not a valid base path`);\n    }\n    else if (basePath && !source().value) {\n        setSource({ value: basePath, replace: true, scroll: false });\n    }\n    const [isRouting, setIsRouting] = createSignal(false);\n    const start = async (callback) => {\n        setIsRouting(true);\n        try {\n            await startTransition(callback);\n        }\n        finally {\n            setIsRouting(false);\n        }\n    };\n    const [reference, setReference] = createSignal(source().value);\n    const [state, setState] = createSignal(source().state);\n    const location = createLocation(reference, state);\n    const referrers = [];\n    const baseRoute = {\n        pattern: basePath,\n        params: {},\n        path: () => basePath,\n        outlet: () => null,\n        resolvePath(to) {\n            return resolvePath(basePath, to);\n        }\n    };\n    if (data) {\n        try {\n            TempRoute = baseRoute;\n            baseRoute.data = data({\n                data: undefined,\n                params: {},\n                location,\n                navigate: navigatorFactory(baseRoute)\n            });\n        }\n        finally {\n            TempRoute = undefined;\n        }\n    }\n    function navigateFromRoute(route, to, options) {\n        // Untrack in case someone navigates in an effect - don't want to track `reference` or route paths\n        untrack(() => {\n            if (typeof to === \"number\") {\n                if (!to) {\n                    // A delta of 0 means stay at the current location, so it is ignored\n                }\n                else if (utils.go) {\n                    beforeLeave.confirm(to, options) && utils.go(to);\n                }\n                else {\n                    console.warn(\"Router integration does not support relative routing\");\n                }\n                return;\n            }\n            const { replace, resolve, scroll, state: nextState } = {\n                replace: false,\n                resolve: true,\n                scroll: true,\n                ...options\n            };\n            const resolvedTo = resolve ? route.resolvePath(to) : resolvePath(\"\", to);\n            if (resolvedTo === undefined) {\n                throw new Error(`Path '${to}' is not a routable path`);\n            }\n            else if (referrers.length >= MAX_REDIRECTS) {\n                throw new Error(\"Too many redirects\");\n            }\n            const current = reference();\n            if (resolvedTo !== current || nextState !== state()) {\n                if (isServer) {\n                    if (output) {\n                        output.url = resolvedTo;\n                    }\n                    setSource({ value: resolvedTo, replace, scroll, state: nextState });\n                }\n                else if (beforeLeave.confirm(resolvedTo, options)) {\n                    const len = referrers.push({ value: current, replace, scroll, state: state() });\n                    start(() => {\n                        setReference(resolvedTo);\n                        setState(nextState);\n                        resetErrorBoundaries();\n                    }).then(() => {\n                        if (referrers.length === len) {\n                            navigateEnd({\n                                value: resolvedTo,\n                                state: nextState\n                            });\n                        }\n                    });\n                }\n            }\n        });\n    }\n    function navigatorFactory(route) {\n        // Workaround for vite issue (https://github.com/vitejs/vite/issues/3803)\n        route = route || useContext(RouteContextObj) || baseRoute;\n        return (to, options) => navigateFromRoute(route, to, options);\n    }\n    function navigateEnd(next) {\n        const first = referrers[0];\n        if (first) {\n            if (next.value !== first.value || next.state !== first.state) {\n                setSource({\n                    ...next,\n                    replace: first.replace,\n                    scroll: first.scroll\n                });\n            }\n            referrers.length = 0;\n        }\n    }\n    createRenderEffect(() => {\n        const { value, state } = source();\n        // Untrack this whole block so `start` doesn't cause Solid's Listener to be preserved\n        untrack(() => {\n            if (value !== reference()) {\n                start(() => {\n                    setReference(value);\n                    setState(state);\n                });\n            }\n        });\n    });\n    if (!isServer) {\n        function handleAnchorClick(evt) {\n            if (evt.defaultPrevented ||\n                evt.button !== 0 ||\n                evt.metaKey ||\n                evt.altKey ||\n                evt.ctrlKey ||\n                evt.shiftKey)\n                return;\n            const a = evt\n                .composedPath()\n                .find(el => el instanceof Node && el.nodeName.toUpperCase() === \"A\");\n            if (!a || !a.hasAttribute(\"link\"))\n                return;\n            const href = a.href;\n            if (a.target || (!href && !a.hasAttribute(\"state\")))\n                return;\n            const rel = (a.getAttribute(\"rel\") || \"\").split(/\\s+/);\n            if (a.hasAttribute(\"download\") || (rel && rel.includes(\"external\")))\n                return;\n            const url = new URL(href);\n            if (url.origin !== window.location.origin ||\n                (basePath && url.pathname && !url.pathname.toLowerCase().startsWith(basePath.toLowerCase())))\n                return;\n            const to = parsePath(url.pathname + url.search + url.hash);\n            const state = a.getAttribute(\"state\");\n            evt.preventDefault();\n            navigateFromRoute(baseRoute, to, {\n                resolve: false,\n                replace: a.hasAttribute(\"replace\"),\n                scroll: !a.hasAttribute(\"noscroll\"),\n                state: state && JSON.parse(state)\n            });\n        }\n        // ensure delegated events run first\n        delegateEvents([\"click\"]);\n        document.addEventListener(\"click\", handleAnchorClick);\n        onCleanup(() => document.removeEventListener(\"click\", handleAnchorClick));\n    }\n    return {\n        base: baseRoute,\n        out: output,\n        location,\n        isRouting,\n        renderPath,\n        parsePath,\n        navigatorFactory,\n        beforeLeave\n    };\n}\nexport function createRouteContext(router, parent, child, match, params) {\n    const { base, location, navigatorFactory } = router;\n    const { pattern, element: outlet, preload, data } = match().route;\n    const path = createMemo(() => match().path);\n    preload && preload();\n    const route = {\n        parent,\n        pattern,\n        get child() {\n            return child();\n        },\n        path,\n        params,\n        data: parent.data,\n        outlet,\n        resolvePath(to) {\n            return resolvePath(base.path(), to, path());\n        }\n    };\n    if (data) {\n        try {\n            TempRoute = route;\n            route.data = data({ data: parent.data, params, location, navigate: navigatorFactory(route) });\n        }\n        finally {\n            TempRoute = undefined;\n        }\n    }\n    return route;\n}\n","/*@refresh skip*/\nimport { children, createMemo, createRoot, mergeProps, on, Show, splitProps } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { pathIntegration, staticIntegration } from \"./integration\";\nimport { createBranches, createRouteContext, createRouterContext, getRouteMatches, RouteContextObj, RouterContextObj, useHref, useLocation, useNavigate, useResolvedPath, useRoute, useRouter } from \"./routing\";\nimport { joinPaths, normalizePath, createMemoObject } from \"./utils\";\nexport const Router = (props) => {\n    const { source, url, base, data, out } = props;\n    const integration = source || (isServer ? staticIntegration({ value: url || \"\" }) : pathIntegration());\n    const routerState = createRouterContext(integration, base, data, out);\n    return (<RouterContextObj.Provider value={routerState}>{props.children}</RouterContextObj.Provider>);\n};\nexport const Routes = (props) => {\n    const router = useRouter();\n    const parentRoute = useRoute();\n    const routeDefs = children(() => props.children);\n    const branches = createMemo(() => createBranches(routeDefs(), joinPaths(parentRoute.pattern, props.base || \"\"), Outlet));\n    const matches = createMemo(() => getRouteMatches(branches(), router.location.pathname));\n    const params = createMemoObject(() => {\n        const m = matches();\n        const params = {};\n        for (let i = 0; i < m.length; i++) {\n            Object.assign(params, m[i].params);\n        }\n        return params;\n    });\n    if (router.out) {\n        router.out.matches.push(matches().map(({ route, path, params }) => ({\n            originalPath: route.originalPath,\n            pattern: route.pattern,\n            path,\n            params\n        })));\n    }\n    const disposers = [];\n    let root;\n    const routeStates = createMemo(on(matches, (nextMatches, prevMatches, prev) => {\n        let equal = prevMatches && nextMatches.length === prevMatches.length;\n        const next = [];\n        for (let i = 0, len = nextMatches.length; i < len; i++) {\n            const prevMatch = prevMatches && prevMatches[i];\n            const nextMatch = nextMatches[i];\n            if (prev && prevMatch && nextMatch.route.key === prevMatch.route.key) {\n                next[i] = prev[i];\n            }\n            else {\n                equal = false;\n                if (disposers[i]) {\n                    disposers[i]();\n                }\n                createRoot(dispose => {\n                    disposers[i] = dispose;\n                    next[i] = createRouteContext(router, next[i - 1] || parentRoute, () => routeStates()[i + 1], () => matches()[i], params);\n                });\n            }\n        }\n        disposers.splice(nextMatches.length).forEach(dispose => dispose());\n        if (prev && equal) {\n            return prev;\n        }\n        root = next[0];\n        return next;\n    }));\n    return (<Show when={routeStates() && root} keyed>\n      {route => <RouteContextObj.Provider value={route}>{route.outlet()}</RouteContextObj.Provider>}\n    </Show>);\n};\nexport const useRoutes = (routes, base) => {\n    return () => <Routes base={base}>{routes}</Routes>;\n};\nexport const Route = (props) => {\n    const childRoutes = children(() => props.children);\n    return mergeProps(props, {\n        get children() {\n            return childRoutes();\n        }\n    });\n};\nexport const Outlet = () => {\n    const route = useRoute();\n    return (<Show when={route.child} keyed>\n      {child => <RouteContextObj.Provider value={child}>{child.outlet()}</RouteContextObj.Provider>}\n    </Show>);\n};\nexport function A(props) {\n    props = mergeProps({ inactiveClass: \"inactive\", activeClass: \"active\" }, props);\n    const [, rest] = splitProps(props, [\n        \"href\",\n        \"state\",\n        \"class\",\n        \"activeClass\",\n        \"inactiveClass\",\n        \"end\"\n    ]);\n    const to = useResolvedPath(() => props.href);\n    const href = useHref(to);\n    const location = useLocation();\n    const isActive = createMemo(() => {\n        const to_ = to();\n        if (to_ === undefined)\n            return false;\n        const path = normalizePath(to_.split(/[?#]/, 1)[0]).toLowerCase();\n        const loc = normalizePath(location.pathname).toLowerCase();\n        return props.end ? path === loc : loc.startsWith(path);\n    });\n    return (<a link {...rest} href={href() || props.href} state={JSON.stringify(props.state)} classList={{\n            ...(props.class && { [props.class]: true }),\n            [props.inactiveClass]: !isActive(),\n            [props.activeClass]: isActive(),\n            ...rest.classList\n        }} aria-current={isActive() ? \"page\" : undefined}/>);\n}\n// deprecated alias exports\nexport { A as Link, A as NavLink };\nexport function Navigate(props) {\n    const navigate = useNavigate();\n    const location = useLocation();\n    const { href, state } = props;\n    const path = typeof href === \"function\" ? href({ navigate, location }) : href;\n    navigate(path, { replace: true, state });\n    return null;\n}\n","/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 109);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(45);\nvar inline_1 = __webpack_require__(46);\nvar block_1 = __webpack_require__(47);\nvar embed_1 = __webpack_require__(48);\nvar text_1 = __webpack_require__(49);\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar store_1 = __webpack_require__(31);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n    Scope: Registry.Scope,\n    create: Registry.create,\n    find: Registry.find,\n    query: Registry.query,\n    register: Registry.register,\n    Container: container_1.default,\n    Format: format_1.default,\n    Leaf: leaf_1.default,\n    Embed: embed_1.default,\n    Scroll: scroll_1.default,\n    Block: block_1.default,\n    Inline: inline_1.default,\n    Text: text_1.default,\n    Attributor: {\n        Attribute: attributor_1.default,\n        Class: class_1.default,\n        Style: style_1.default,\n        Store: store_1.default,\n    },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n    __extends(ParchmentError, _super);\n    function ParchmentError(message) {\n        var _this = this;\n        message = '[Parchment] ' + message;\n        _this = _super.call(this, message) || this;\n        _this.message = message;\n        _this.name = _this.constructor.name;\n        return _this;\n    }\n    return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n    Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n    Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n    Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n    Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n    Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n    Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n    Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n    Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n    Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n    Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n    Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n    var match = query(input);\n    if (match == null) {\n        throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n    }\n    var BlotClass = match;\n    var node = \n    // @ts-ignore\n    input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n    return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n    if (bubble === void 0) { bubble = false; }\n    if (node == null)\n        return null;\n    // @ts-ignore\n    if (node[exports.DATA_KEY] != null)\n        return node[exports.DATA_KEY].blot;\n    if (bubble)\n        return find(node.parentNode, bubble);\n    return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n    if (scope === void 0) { scope = Scope.ANY; }\n    var match;\n    if (typeof query === 'string') {\n        match = types[query] || attributes[query];\n        // @ts-ignore\n    }\n    else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n        match = types['text'];\n    }\n    else if (typeof query === 'number') {\n        if (query & Scope.LEVEL & Scope.BLOCK) {\n            match = types['block'];\n        }\n        else if (query & Scope.LEVEL & Scope.INLINE) {\n            match = types['inline'];\n        }\n    }\n    else if (query instanceof HTMLElement) {\n        var names = (query.getAttribute('class') || '').split(/\\s+/);\n        for (var i in names) {\n            match = classes[names[i]];\n            if (match)\n                break;\n        }\n        match = match || tags[query.tagName];\n    }\n    if (match == null)\n        return null;\n    // @ts-ignore\n    if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n        return match;\n    return null;\n}\nexports.query = query;\nfunction register() {\n    var Definitions = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        Definitions[_i] = arguments[_i];\n    }\n    if (Definitions.length > 1) {\n        return Definitions.map(function (d) {\n            return register(d);\n        });\n    }\n    var Definition = Definitions[0];\n    if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n        throw new ParchmentError('Invalid definition');\n    }\n    else if (Definition.blotName === 'abstract') {\n        throw new ParchmentError('Cannot register abstract class');\n    }\n    types[Definition.blotName || Definition.attrName] = Definition;\n    if (typeof Definition.keyName === 'string') {\n        attributes[Definition.keyName] = Definition;\n    }\n    else {\n        if (Definition.className != null) {\n            classes[Definition.className] = Definition;\n        }\n        if (Definition.tagName != null) {\n            if (Array.isArray(Definition.tagName)) {\n                Definition.tagName = Definition.tagName.map(function (tagName) {\n                    return tagName.toUpperCase();\n                });\n            }\n            else {\n                Definition.tagName = Definition.tagName.toUpperCase();\n            }\n            var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n            tagNames.forEach(function (tag) {\n                if (tags[tag] == null || Definition.className == null) {\n                    tags[tag] = Definition;\n                }\n            });\n        }\n    }\n    return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(51);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0);  // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n  // Assume we are given a well formed ops\n  if (Array.isArray(ops)) {\n    this.ops = ops;\n  } else if (ops != null && Array.isArray(ops.ops)) {\n    this.ops = ops.ops;\n  } else {\n    this.ops = [];\n  }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n  var newOp = {};\n  if (text.length === 0) return this;\n  newOp.insert = text;\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n  if (length <= 0) return this;\n  return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n  if (length <= 0) return this;\n  var newOp = { retain: length };\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n  var index = this.ops.length;\n  var lastOp = this.ops[index - 1];\n  newOp = extend(true, {}, newOp);\n  if (typeof lastOp === 'object') {\n    if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n      this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n      return this;\n    }\n    // Since it does not matter if we insert before or after deleting at the same index,\n    // always prefer to insert first\n    if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n      index -= 1;\n      lastOp = this.ops[index - 1];\n      if (typeof lastOp !== 'object') {\n        this.ops.unshift(newOp);\n        return this;\n      }\n    }\n    if (equal(newOp.attributes, lastOp.attributes)) {\n      if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n        this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n        this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      }\n    }\n  }\n  if (index === this.ops.length) {\n    this.ops.push(newOp);\n  } else {\n    this.ops.splice(index, 0, newOp);\n  }\n  return this;\n};\n\nDelta.prototype.chop = function () {\n  var lastOp = this.ops[this.ops.length - 1];\n  if (lastOp && lastOp.retain && !lastOp.attributes) {\n    this.ops.pop();\n  }\n  return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n  return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n  this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n  return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n  var passed = [], failed = [];\n  this.forEach(function(op) {\n    var target = predicate(op) ? passed : failed;\n    target.push(op);\n  });\n  return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n  return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n  return this.reduce(function (length, elem) {\n    if (elem.insert) {\n      return length + op.length(elem);\n    } else if (elem.delete) {\n      return length - elem.delete;\n    }\n    return length;\n  }, 0);\n};\n\nDelta.prototype.length = function () {\n  return this.reduce(function (length, elem) {\n    return length + op.length(elem);\n  }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n  start = start || 0;\n  if (typeof end !== 'number') end = Infinity;\n  var ops = [];\n  var iter = op.iterator(this.ops);\n  var index = 0;\n  while (index < end && iter.hasNext()) {\n    var nextOp;\n    if (index < start) {\n      nextOp = iter.next(start - index);\n    } else {\n      nextOp = iter.next(end - index);\n      ops.push(nextOp);\n    }\n    index += op.length(nextOp);\n  }\n  return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var ops = [];\n  var firstOther = otherIter.peek();\n  if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n    var firstLeft = firstOther.retain;\n    while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n      firstLeft -= thisIter.peekLength();\n      ops.push(thisIter.next());\n    }\n    if (firstOther.retain - firstLeft > 0) {\n      otherIter.next(firstOther.retain - firstLeft);\n    }\n  }\n  var delta = new Delta(ops);\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else if (thisIter.peekType() === 'delete') {\n      delta.push(thisIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (typeof otherOp.retain === 'number') {\n        var newOp = {};\n        if (typeof thisOp.retain === 'number') {\n          newOp.retain = length;\n        } else {\n          newOp.insert = thisOp.insert;\n        }\n        // Preserve null when composing with a retain, otherwise remove it for inserts\n        var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n        if (attributes) newOp.attributes = attributes;\n        delta.push(newOp);\n\n        // Optimization if rest of other is just retain\n        if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n          var rest = new Delta(thisIter.rest());\n          return delta.concat(rest).chop();\n        }\n\n      // Other op should be delete, we could be an insert or retain\n      // Insert + delete cancels out\n      } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n        delta.push(otherOp);\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n  var delta = new Delta(this.ops.slice());\n  if (other.ops.length > 0) {\n    delta.push(other.ops[0]);\n    delta.ops = delta.ops.concat(other.ops.slice(1));\n  }\n  return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n  if (this.ops === other.ops) {\n    return new Delta();\n  }\n  var strings = [this, other].map(function (delta) {\n    return delta.map(function (op) {\n      if (op.insert != null) {\n        return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n      }\n      var prep = (delta === other) ? 'on' : 'with';\n      throw new Error('diff() called ' + prep + ' non-document');\n    }).join('');\n  });\n  var delta = new Delta();\n  var diffResult = diff(strings[0], strings[1], index);\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  diffResult.forEach(function (component) {\n    var length = component[1].length;\n    while (length > 0) {\n      var opLength = 0;\n      switch (component[0]) {\n        case diff.INSERT:\n          opLength = Math.min(otherIter.peekLength(), length);\n          delta.push(otherIter.next(opLength));\n          break;\n        case diff.DELETE:\n          opLength = Math.min(length, thisIter.peekLength());\n          thisIter.next(opLength);\n          delta['delete'](opLength);\n          break;\n        case diff.EQUAL:\n          opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n          var thisOp = thisIter.next(opLength);\n          var otherOp = otherIter.next(opLength);\n          if (equal(thisOp.insert, otherOp.insert)) {\n            delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n          } else {\n            delta.push(otherOp)['delete'](opLength);\n          }\n          break;\n      }\n      length -= opLength;\n    }\n  });\n  return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n  newline = newline || '\\n';\n  var iter = op.iterator(this.ops);\n  var line = new Delta();\n  var i = 0;\n  while (iter.hasNext()) {\n    if (iter.peekType() !== 'insert') return;\n    var thisOp = iter.peek();\n    var start = op.length(thisOp) - iter.peekLength();\n    var index = typeof thisOp.insert === 'string' ?\n      thisOp.insert.indexOf(newline, start) - start : -1;\n    if (index < 0) {\n      line.push(iter.next());\n    } else if (index > 0) {\n      line.push(iter.next(index));\n    } else {\n      if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n        return;\n      }\n      i += 1;\n      line = new Delta();\n    }\n  }\n  if (line.length() > 0) {\n    predicate(line, {}, i);\n  }\n};\n\nDelta.prototype.transform = function (other, priority) {\n  priority = !!priority;\n  if (typeof other === 'number') {\n    return this.transformPosition(other, priority);\n  }\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var delta = new Delta();\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n      delta.retain(op.length(thisIter.next()));\n    } else if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (thisOp['delete']) {\n        // Our delete either makes their delete redundant or removes their retain\n        continue;\n      } else if (otherOp['delete']) {\n        delta.push(otherOp);\n      } else {\n        // We retain either their retain or insert\n        delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n  priority = !!priority;\n  var thisIter = op.iterator(this.ops);\n  var offset = 0;\n  while (thisIter.hasNext() && offset <= index) {\n    var length = thisIter.peekLength();\n    var nextType = thisIter.peekType();\n    thisIter.next();\n    if (nextType === 'delete') {\n      index -= Math.min(length, index - offset);\n      continue;\n    } else if (nextType === 'insert' && (offset < index || !priority)) {\n      index += length;\n    }\n    offset += length;\n  }\n  return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n  _inherits(BlockEmbed, _Parchment$Embed);\n\n  function BlockEmbed() {\n    _classCallCheck(this, BlockEmbed);\n\n    return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n  }\n\n  _createClass(BlockEmbed, [{\n    key: 'attach',\n    value: function attach() {\n      _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n      this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n    }\n  }, {\n    key: 'delta',\n    value: function delta() {\n      return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n      if (attribute != null) {\n        this.attributes.attribute(attribute, value);\n      }\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      this.format(name, value);\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (typeof value === 'string' && value.endsWith('\\n')) {\n        var block = _parchment2.default.create(Block.blotName);\n        this.parent.insertBefore(block, index === 0 ? this : this.next);\n        block.insertAt(0, value.slice(0, -1));\n      } else {\n        _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n      }\n    }\n  }]);\n\n  return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n  _inherits(Block, _Parchment$Block);\n\n  function Block(domNode) {\n    _classCallCheck(this, Block);\n\n    var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n    _this2.cache = {};\n    return _this2;\n  }\n\n  _createClass(Block, [{\n    key: 'delta',\n    value: function delta() {\n      if (this.cache.delta == null) {\n        this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n          if (leaf.length() === 0) {\n            return delta;\n          } else {\n            return delta.insert(leaf.value(), bubbleFormats(leaf));\n          }\n        }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n      }\n      return this.cache.delta;\n    }\n  }, {\n    key: 'deleteAt',\n    value: function deleteAt(index, length) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n      this.cache = {};\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (length <= 0) return;\n      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n        if (index + length === this.length()) {\n          this.format(name, value);\n        }\n      } else {\n        _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n      }\n      this.cache = {};\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n      if (value.length === 0) return;\n      var lines = value.split('\\n');\n      var text = lines.shift();\n      if (text.length > 0) {\n        if (index < this.length() - 1 || this.children.tail == null) {\n          _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n        } else {\n          this.children.tail.insertAt(this.children.tail.length(), text);\n        }\n        this.cache = {};\n      }\n      var block = this;\n      lines.reduce(function (index, line) {\n        block = block.split(index, true);\n        block.insertAt(0, line);\n        return line.length;\n      }, index + text.length);\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      var head = this.children.head;\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n      if (head instanceof _break2.default) {\n        head.remove();\n      }\n      this.cache = {};\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      if (this.cache.length == null) {\n        this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n      }\n      return this.cache.length;\n    }\n  }, {\n    key: 'moveChildren',\n    value: function moveChildren(target, ref) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n      this.cache = {};\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n      this.cache = {};\n    }\n  }, {\n    key: 'path',\n    value: function path(index) {\n      return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n    }\n  }, {\n    key: 'removeChild',\n    value: function removeChild(child) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n      this.cache = {};\n    }\n  }, {\n    key: 'split',\n    value: function split(index) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n        var clone = this.clone();\n        if (index === 0) {\n          this.parent.insertBefore(clone, this);\n          return this;\n        } else {\n          this.parent.insertBefore(clone, this.next);\n          return clone;\n        }\n      } else {\n        var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n        this.cache = {};\n        return next;\n      }\n    }\n  }]);\n\n  return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n  var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (blot == null) return formats;\n  if (typeof blot.formats === 'function') {\n    formats = (0, _extend2.default)(formats, blot.formats());\n  }\n  if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n    return formats;\n  }\n  return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(50);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n  _createClass(Quill, null, [{\n    key: 'debug',\n    value: function debug(limit) {\n      if (limit === true) {\n        limit = 'log';\n      }\n      _logger2.default.level(limit);\n    }\n  }, {\n    key: 'find',\n    value: function find(node) {\n      return node.__quill || _parchment2.default.find(node);\n    }\n  }, {\n    key: 'import',\n    value: function _import(name) {\n      if (this.imports[name] == null) {\n        debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n      }\n      return this.imports[name];\n    }\n  }, {\n    key: 'register',\n    value: function register(path, target) {\n      var _this = this;\n\n      var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      if (typeof path !== 'string') {\n        var name = path.attrName || path.blotName;\n        if (typeof name === 'string') {\n          // register(Blot | Attributor, overwrite)\n          this.register('formats/' + name, path, target);\n        } else {\n          Object.keys(path).forEach(function (key) {\n            _this.register(key, path[key], target);\n          });\n        }\n      } else {\n        if (this.imports[path] != null && !overwrite) {\n          debug.warn('Overwriting ' + path + ' with', target);\n        }\n        this.imports[path] = target;\n        if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n          _parchment2.default.register(target);\n        } else if (path.startsWith('modules') && typeof target.register === 'function') {\n          target.register();\n        }\n      }\n    }\n  }]);\n\n  function Quill(container) {\n    var _this2 = this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Quill);\n\n    this.options = expandConfig(container, options);\n    this.container = this.options.container;\n    if (this.container == null) {\n      return debug.error('Invalid Quill container', container);\n    }\n    if (this.options.debug) {\n      Quill.debug(this.options.debug);\n    }\n    var html = this.container.innerHTML.trim();\n    this.container.classList.add('ql-container');\n    this.container.innerHTML = '';\n    this.container.__quill = this;\n    this.root = this.addContainer('ql-editor');\n    this.root.classList.add('ql-blank');\n    this.root.setAttribute('data-gramm', false);\n    this.scrollingContainer = this.options.scrollingContainer || this.root;\n    this.emitter = new _emitter4.default();\n    this.scroll = _parchment2.default.create(this.root, {\n      emitter: this.emitter,\n      whitelist: this.options.formats\n    });\n    this.editor = new _editor2.default(this.scroll);\n    this.selection = new _selection2.default(this.scroll, this.emitter);\n    this.theme = new this.options.theme(this, this.options);\n    this.keyboard = this.theme.addModule('keyboard');\n    this.clipboard = this.theme.addModule('clipboard');\n    this.history = this.theme.addModule('history');\n    this.theme.init();\n    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n      if (type === _emitter4.default.events.TEXT_CHANGE) {\n        _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n      }\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n      var range = _this2.selection.lastRange;\n      var index = range && range.length === 0 ? range.index : undefined;\n      modify.call(_this2, function () {\n        return _this2.editor.update(null, mutations, index);\n      }, source);\n    });\n    var contents = this.clipboard.convert('<div class=\\'ql-editor\\' style=\"white-space: normal;\">' + html + '<p><br></p></div>');\n    this.setContents(contents);\n    this.history.clear();\n    if (this.options.placeholder) {\n      this.root.setAttribute('data-placeholder', this.options.placeholder);\n    }\n    if (this.options.readOnly) {\n      this.disable();\n    }\n  }\n\n  _createClass(Quill, [{\n    key: 'addContainer',\n    value: function addContainer(container) {\n      var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      if (typeof container === 'string') {\n        var className = container;\n        container = document.createElement('div');\n        container.classList.add(className);\n      }\n      this.container.insertBefore(container, refNode);\n      return container;\n    }\n  }, {\n    key: 'blur',\n    value: function blur() {\n      this.selection.setRange(null);\n    }\n  }, {\n    key: 'deleteText',\n    value: function deleteText(index, length, source) {\n      var _this3 = this;\n\n      var _overload = overload(index, length, source);\n\n      var _overload2 = _slicedToArray(_overload, 4);\n\n      index = _overload2[0];\n      length = _overload2[1];\n      source = _overload2[3];\n\n      return modify.call(this, function () {\n        return _this3.editor.deleteText(index, length);\n      }, source, index, -1 * length);\n    }\n  }, {\n    key: 'disable',\n    value: function disable() {\n      this.enable(false);\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      this.scroll.enable(enabled);\n      this.container.classList.toggle('ql-disabled', !enabled);\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      var scrollTop = this.scrollingContainer.scrollTop;\n      this.selection.focus();\n      this.scrollingContainer.scrollTop = scrollTop;\n      this.scrollIntoView();\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      var _this4 = this;\n\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        var range = _this4.getSelection(true);\n        var change = new _quillDelta2.default();\n        if (range == null) {\n          return change;\n        } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n          change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n        } else if (range.length === 0) {\n          _this4.selection.format(name, value);\n          return change;\n        } else {\n          change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n        }\n        _this4.setSelection(range, _emitter4.default.sources.SILENT);\n        return change;\n      }, source);\n    }\n  }, {\n    key: 'formatLine',\n    value: function formatLine(index, length, name, value, source) {\n      var _this5 = this;\n\n      var formats = void 0;\n\n      var _overload3 = overload(index, length, name, value, source);\n\n      var _overload4 = _slicedToArray(_overload3, 4);\n\n      index = _overload4[0];\n      length = _overload4[1];\n      formats = _overload4[2];\n      source = _overload4[3];\n\n      return modify.call(this, function () {\n        return _this5.editor.formatLine(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: 'formatText',\n    value: function formatText(index, length, name, value, source) {\n      var _this6 = this;\n\n      var formats = void 0;\n\n      var _overload5 = overload(index, length, name, value, source);\n\n      var _overload6 = _slicedToArray(_overload5, 4);\n\n      index = _overload6[0];\n      length = _overload6[1];\n      formats = _overload6[2];\n      source = _overload6[3];\n\n      return modify.call(this, function () {\n        return _this6.editor.formatText(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: 'getBounds',\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var bounds = void 0;\n      if (typeof index === 'number') {\n        bounds = this.selection.getBounds(index, length);\n      } else {\n        bounds = this.selection.getBounds(index.index, index.length);\n      }\n      var containerBounds = this.container.getBoundingClientRect();\n      return {\n        bottom: bounds.bottom - containerBounds.top,\n        height: bounds.height,\n        left: bounds.left - containerBounds.left,\n        right: bounds.right - containerBounds.left,\n        top: bounds.top - containerBounds.top,\n        width: bounds.width\n      };\n    }\n  }, {\n    key: 'getContents',\n    value: function getContents() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload7 = overload(index, length);\n\n      var _overload8 = _slicedToArray(_overload7, 2);\n\n      index = _overload8[0];\n      length = _overload8[1];\n\n      return this.editor.getContents(index, length);\n    }\n  }, {\n    key: 'getFormat',\n    value: function getFormat() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (typeof index === 'number') {\n        return this.editor.getFormat(index, length);\n      } else {\n        return this.editor.getFormat(index.index, index.length);\n      }\n    }\n  }, {\n    key: 'getIndex',\n    value: function getIndex(blot) {\n      return blot.offset(this.scroll);\n    }\n  }, {\n    key: 'getLength',\n    value: function getLength() {\n      return this.scroll.length();\n    }\n  }, {\n    key: 'getLeaf',\n    value: function getLeaf(index) {\n      return this.scroll.leaf(index);\n    }\n  }, {\n    key: 'getLine',\n    value: function getLine(index) {\n      return this.scroll.line(index);\n    }\n  }, {\n    key: 'getLines',\n    value: function getLines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      if (typeof index !== 'number') {\n        return this.scroll.lines(index.index, index.length);\n      } else {\n        return this.scroll.lines(index, length);\n      }\n    }\n  }, {\n    key: 'getModule',\n    value: function getModule(name) {\n      return this.theme.modules[name];\n    }\n  }, {\n    key: 'getSelection',\n    value: function getSelection() {\n      var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (focus) this.focus();\n      this.update(); // Make sure we access getRange with editor in consistent state\n      return this.selection.getRange()[0];\n    }\n  }, {\n    key: 'getText',\n    value: function getText() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload9 = overload(index, length);\n\n      var _overload10 = _slicedToArray(_overload9, 2);\n\n      index = _overload10[0];\n      length = _overload10[1];\n\n      return this.editor.getText(index, length);\n    }\n  }, {\n    key: 'hasFocus',\n    value: function hasFocus() {\n      return this.selection.hasFocus();\n    }\n  }, {\n    key: 'insertEmbed',\n    value: function insertEmbed(index, embed, value) {\n      var _this7 = this;\n\n      var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n      return modify.call(this, function () {\n        return _this7.editor.insertEmbed(index, embed, value);\n      }, source, index);\n    }\n  }, {\n    key: 'insertText',\n    value: function insertText(index, text, name, value, source) {\n      var _this8 = this;\n\n      var formats = void 0;\n\n      var _overload11 = overload(index, 0, name, value, source);\n\n      var _overload12 = _slicedToArray(_overload11, 4);\n\n      index = _overload12[0];\n      formats = _overload12[2];\n      source = _overload12[3];\n\n      return modify.call(this, function () {\n        return _this8.editor.insertText(index, text, formats);\n      }, source, index, text.length);\n    }\n  }, {\n    key: 'isEnabled',\n    value: function isEnabled() {\n      return !this.container.classList.contains('ql-disabled');\n    }\n  }, {\n    key: 'off',\n    value: function off() {\n      return this.emitter.off.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'on',\n    value: function on() {\n      return this.emitter.on.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'once',\n    value: function once() {\n      return this.emitter.once.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'pasteHTML',\n    value: function pasteHTML(index, html, source) {\n      this.clipboard.dangerouslyPasteHTML(index, html, source);\n    }\n  }, {\n    key: 'removeFormat',\n    value: function removeFormat(index, length, source) {\n      var _this9 = this;\n\n      var _overload13 = overload(index, length, source);\n\n      var _overload14 = _slicedToArray(_overload13, 4);\n\n      index = _overload14[0];\n      length = _overload14[1];\n      source = _overload14[3];\n\n      return modify.call(this, function () {\n        return _this9.editor.removeFormat(index, length);\n      }, source, index);\n    }\n  }, {\n    key: 'scrollIntoView',\n    value: function scrollIntoView() {\n      this.selection.scrollIntoView(this.scrollingContainer);\n    }\n  }, {\n    key: 'setContents',\n    value: function setContents(delta) {\n      var _this10 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        delta = new _quillDelta2.default(delta);\n        var length = _this10.getLength();\n        var deleted = _this10.editor.deleteText(0, length);\n        var applied = _this10.editor.applyDelta(delta);\n        var lastOp = applied.ops[applied.ops.length - 1];\n        if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n          _this10.editor.deleteText(_this10.getLength() - 1, 1);\n          applied.delete(1);\n        }\n        var ret = deleted.compose(applied);\n        return ret;\n      }, source);\n    }\n  }, {\n    key: 'setSelection',\n    value: function setSelection(index, length, source) {\n      if (index == null) {\n        this.selection.setRange(null, length || Quill.sources.API);\n      } else {\n        var _overload15 = overload(index, length, source);\n\n        var _overload16 = _slicedToArray(_overload15, 4);\n\n        index = _overload16[0];\n        length = _overload16[1];\n        source = _overload16[3];\n\n        this.selection.setRange(new _selection.Range(index, length), source);\n        if (source !== _emitter4.default.sources.SILENT) {\n          this.selection.scrollIntoView(this.scrollingContainer);\n        }\n      }\n    }\n  }, {\n    key: 'setText',\n    value: function setText(text) {\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      var delta = new _quillDelta2.default().insert(text);\n      return this.setContents(delta, source);\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n      var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n      this.selection.update(source);\n      return change;\n    }\n  }, {\n    key: 'updateContents',\n    value: function updateContents(delta) {\n      var _this11 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        delta = new _quillDelta2.default(delta);\n        return _this11.editor.applyDelta(delta, source);\n      }, source, true);\n    }\n  }]);\n\n  return Quill;\n}();\n\nQuill.DEFAULTS = {\n  bounds: null,\n  formats: null,\n  modules: {},\n  placeholder: '',\n  readOnly: false,\n  scrollingContainer: null,\n  strict: true,\n  theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version =  false ? 'dev' : \"1.3.7\";\n\nQuill.imports = {\n  'delta': _quillDelta2.default,\n  'parchment': _parchment2.default,\n  'core/module': _module2.default,\n  'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n  userConfig = (0, _extend2.default)(true, {\n    container: container,\n    modules: {\n      clipboard: true,\n      keyboard: true,\n      history: true\n    }\n  }, userConfig);\n  if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n    userConfig.theme = _theme2.default;\n  } else {\n    userConfig.theme = Quill.import('themes/' + userConfig.theme);\n    if (userConfig.theme == null) {\n      throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n    }\n  }\n  var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n  [themeConfig, userConfig].forEach(function (config) {\n    config.modules = config.modules || {};\n    Object.keys(config.modules).forEach(function (module) {\n      if (config.modules[module] === true) {\n        config.modules[module] = {};\n      }\n    });\n  });\n  var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n  var moduleConfig = moduleNames.reduce(function (config, name) {\n    var moduleClass = Quill.import('modules/' + name);\n    if (moduleClass == null) {\n      debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n    } else {\n      config[name] = moduleClass.DEFAULTS || {};\n    }\n    return config;\n  }, {});\n  // Special case toolbar shorthand\n  if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n    userConfig.modules.toolbar = {\n      container: userConfig.modules.toolbar\n    };\n  }\n  userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n  ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n    if (typeof userConfig[key] === 'string') {\n      userConfig[key] = document.querySelector(userConfig[key]);\n    }\n  });\n  userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n    if (userConfig.modules[name]) {\n      config[name] = userConfig.modules[name];\n    }\n    return config;\n  }, {});\n  return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n  if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n    return new _quillDelta2.default();\n  }\n  var range = index == null ? null : this.getSelection();\n  var oldDelta = this.editor.delta;\n  var change = modifier();\n  if (range != null) {\n    if (index === true) index = range.index;\n    if (shift == null) {\n      range = shiftRange(range, change, source);\n    } else if (shift !== 0) {\n      range = shiftRange(range, index, shift, source);\n    }\n    this.setSelection(range, _emitter4.default.sources.SILENT);\n  }\n  if (change.length() > 0) {\n    var _emitter;\n\n    var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n    (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n    if (source !== _emitter4.default.sources.SILENT) {\n      var _emitter2;\n\n      (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n    }\n  }\n  return change;\n}\n\nfunction overload(index, length, name, value, source) {\n  var formats = {};\n  if (typeof index.index === 'number' && typeof index.length === 'number') {\n    // Allow for throwaway end (used by insertText/insertEmbed)\n    if (typeof length !== 'number') {\n      source = value, value = name, name = length, length = index.length, index = index.index;\n    } else {\n      length = index.length, index = index.index;\n    }\n  } else if (typeof length !== 'number') {\n    source = value, value = name, name = length, length = 0;\n  }\n  // Handle format being object, two format name/value strings or excluded\n  if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n    formats = name;\n    source = value;\n  } else if (typeof name === 'string') {\n    if (value != null) {\n      formats[name] = value;\n    } else {\n      source = name;\n    }\n  }\n  // Handle optional source\n  source = source || _emitter4.default.sources.API;\n  return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n  if (range == null) return null;\n  var start = void 0,\n      end = void 0;\n  if (index instanceof _quillDelta2.default) {\n    var _map = [range.index, range.index + range.length].map(function (pos) {\n      return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n    });\n\n    var _map2 = _slicedToArray(_map, 2);\n\n    start = _map2[0];\n    end = _map2[1];\n  } else {\n    var _map3 = [range.index, range.index + range.length].map(function (pos) {\n      if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n      if (length >= 0) {\n        return pos + length;\n      } else {\n        return Math.max(index, pos + length);\n      }\n    });\n\n    var _map4 = _slicedToArray(_map3, 2);\n\n    start = _map4[0];\n    end = _map4[1];\n  }\n  return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n  _inherits(Inline, _Parchment$Inline);\n\n  function Inline() {\n    _classCallCheck(this, Inline);\n\n    return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n  }\n\n  _createClass(Inline, [{\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n        var blot = this.isolate(index, length);\n        if (value) {\n          blot.wrap(name, value);\n        }\n      } else {\n        _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n      if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n        var parent = this.parent.isolate(this.offset(), this.length());\n        this.moveChildren(parent);\n        parent.wrap(this);\n      }\n    }\n  }], [{\n    key: 'compare',\n    value: function compare(self, other) {\n      var selfIndex = Inline.order.indexOf(self);\n      var otherIndex = Inline.order.indexOf(other);\n      if (selfIndex >= 0 || otherIndex >= 0) {\n        return selfIndex - otherIndex;\n      } else if (self === other) {\n        return 0;\n      } else if (self < other) {\n        return -1;\n      } else {\n        return 1;\n      }\n    }\n  }]);\n\n  return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n  _inherits(TextBlot, _Parchment$Text);\n\n  function TextBlot() {\n    _classCallCheck(this, TextBlot);\n\n    return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n  }\n\n  return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(54);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n  document.addEventListener(eventName, function () {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n      // TODO use WeakMap\n      if (node.__quill && node.__quill.emitter) {\n        var _node$__quill$emitter;\n\n        (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n      }\n    });\n  });\n});\n\nvar Emitter = function (_EventEmitter) {\n  _inherits(Emitter, _EventEmitter);\n\n  function Emitter() {\n    _classCallCheck(this, Emitter);\n\n    var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n    _this.listeners = {};\n    _this.on('error', debug.error);\n    return _this;\n  }\n\n  _createClass(Emitter, [{\n    key: 'emit',\n    value: function emit() {\n      debug.log.apply(debug, arguments);\n      _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n    }\n  }, {\n    key: 'handleDOM',\n    value: function handleDOM(event) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      (this.listeners[event.type] || []).forEach(function (_ref) {\n        var node = _ref.node,\n            handler = _ref.handler;\n\n        if (event.target === node || node.contains(event.target)) {\n          handler.apply(undefined, [event].concat(args));\n        }\n      });\n    }\n  }, {\n    key: 'listenDOM',\n    value: function listenDOM(eventName, node, handler) {\n      if (!this.listeners[eventName]) {\n        this.listeners[eventName] = [];\n      }\n      this.listeners[eventName].push({ node: node, handler: handler });\n    }\n  }]);\n\n  return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n  EDITOR_CHANGE: 'editor-change',\n  SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n  SCROLL_OPTIMIZE: 'scroll-optimize',\n  SCROLL_UPDATE: 'scroll-update',\n  SELECTION_CHANGE: 'selection-change',\n  TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n  API: 'api',\n  SILENT: 'silent',\n  USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  _classCallCheck(this, Module);\n\n  this.quill = quill;\n  this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n  if (levels.indexOf(method) <= levels.indexOf(level)) {\n    var _console;\n\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n  }\n}\n\nfunction namespace(ns) {\n  return levels.reduce(function (logger, method) {\n    logger[method] = debug.bind(console, method, ns);\n    return logger;\n  }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n  level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(53);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n    function Attributor(attrName, keyName, options) {\n        if (options === void 0) { options = {}; }\n        this.attrName = attrName;\n        this.keyName = keyName;\n        var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n        if (options.scope != null) {\n            // Ignore type bits, force attribute bit\n            this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n        }\n        else {\n            this.scope = Registry.Scope.ATTRIBUTE;\n        }\n        if (options.whitelist != null)\n            this.whitelist = options.whitelist;\n    }\n    Attributor.keys = function (node) {\n        return [].map.call(node.attributes, function (item) {\n            return item.name;\n        });\n    };\n    Attributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        node.setAttribute(this.keyName, value);\n        return true;\n    };\n    Attributor.prototype.canAdd = function (node, value) {\n        var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n        if (match == null)\n            return false;\n        if (this.whitelist == null)\n            return true;\n        if (typeof value === 'string') {\n            return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n        }\n        else {\n            return this.whitelist.indexOf(value) > -1;\n        }\n    };\n    Attributor.prototype.remove = function (node) {\n        node.removeAttribute(this.keyName);\n    };\n    Attributor.prototype.value = function (node) {\n        var value = node.getAttribute(this.keyName);\n        if (this.canAdd(node, value) && value) {\n            return value;\n        }\n        return '';\n    };\n    return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n  _inherits(Code, _Inline);\n\n  function Code() {\n    _classCallCheck(this, Code);\n\n    return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n  }\n\n  return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n  _inherits(CodeBlock, _Block);\n\n  function CodeBlock() {\n    _classCallCheck(this, CodeBlock);\n\n    return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n  }\n\n  _createClass(CodeBlock, [{\n    key: 'delta',\n    value: function delta() {\n      var _this3 = this;\n\n      var text = this.domNode.textContent;\n      if (text.endsWith('\\n')) {\n        // Should always be true\n        text = text.slice(0, -1);\n      }\n      return text.split('\\n').reduce(function (delta, frag) {\n        return delta.insert(frag).insert('\\n', _this3.formats());\n      }, new _quillDelta2.default());\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      if (name === this.statics.blotName && value) return;\n\n      var _descendant = this.descendant(_text2.default, this.length() - 1),\n          _descendant2 = _slicedToArray(_descendant, 1),\n          text = _descendant2[0];\n\n      if (text != null) {\n        text.deleteAt(text.length() - 1, 1);\n      }\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (length === 0) return;\n      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n        return;\n      }\n      var nextNewline = this.newlineIndex(index);\n      if (nextNewline < 0 || nextNewline >= index + length) return;\n      var prevNewline = this.newlineIndex(index, true) + 1;\n      var isolateLength = nextNewline - prevNewline + 1;\n      var blot = this.isolate(prevNewline, isolateLength);\n      var next = blot.next;\n      blot.format(name, value);\n      if (next instanceof CodeBlock) {\n        next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n      }\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null) return;\n\n      var _descendant3 = this.descendant(_text2.default, index),\n          _descendant4 = _slicedToArray(_descendant3, 2),\n          text = _descendant4[0],\n          offset = _descendant4[1];\n\n      text.insertAt(offset, value);\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      var length = this.domNode.textContent.length;\n      if (!this.domNode.textContent.endsWith('\\n')) {\n        return length + 1;\n      }\n      return length;\n    }\n  }, {\n    key: 'newlineIndex',\n    value: function newlineIndex(searchIndex) {\n      var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!reverse) {\n        var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n        return offset > -1 ? searchIndex + offset : -1;\n      } else {\n        return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      if (!this.domNode.textContent.endsWith('\\n')) {\n        this.appendChild(_parchment2.default.create('text', '\\n'));\n      }\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n      var next = this.next;\n      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n        next.optimize(context);\n        next.moveChildren(this);\n        next.remove();\n      }\n    }\n  }, {\n    key: 'replace',\n    value: function replace(target) {\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n      [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n        var blot = _parchment2.default.find(node);\n        if (blot == null) {\n          node.parentNode.removeChild(node);\n        } else if (blot instanceof _parchment2.default.Embed) {\n          blot.remove();\n        } else {\n          blot.unwrap();\n        }\n      });\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n      domNode.setAttribute('spellcheck', false);\n      return domNode;\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      return true;\n    }\n  }]);\n\n  return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = '  ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n  function Editor(scroll) {\n    _classCallCheck(this, Editor);\n\n    this.scroll = scroll;\n    this.delta = this.getDelta();\n  }\n\n  _createClass(Editor, [{\n    key: 'applyDelta',\n    value: function applyDelta(delta) {\n      var _this = this;\n\n      var consumeNextNewline = false;\n      this.scroll.update();\n      var scrollLength = this.scroll.length();\n      this.scroll.batchStart();\n      delta = normalizeDelta(delta);\n      delta.reduce(function (index, op) {\n        var length = op.retain || op.delete || op.insert.length || 1;\n        var attributes = op.attributes || {};\n        if (op.insert != null) {\n          if (typeof op.insert === 'string') {\n            var text = op.insert;\n            if (text.endsWith('\\n') && consumeNextNewline) {\n              consumeNextNewline = false;\n              text = text.slice(0, -1);\n            }\n            if (index >= scrollLength && !text.endsWith('\\n')) {\n              consumeNextNewline = true;\n            }\n            _this.scroll.insertAt(index, text);\n\n            var _scroll$line = _this.scroll.line(index),\n                _scroll$line2 = _slicedToArray(_scroll$line, 2),\n                line = _scroll$line2[0],\n                offset = _scroll$line2[1];\n\n            var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n            if (line instanceof _block2.default) {\n              var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n                  _line$descendant2 = _slicedToArray(_line$descendant, 1),\n                  leaf = _line$descendant2[0];\n\n              formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n            }\n            attributes = _op2.default.attributes.diff(formats, attributes) || {};\n          } else if (_typeof(op.insert) === 'object') {\n            var key = Object.keys(op.insert)[0]; // There should only be one key\n            if (key == null) return index;\n            _this.scroll.insertAt(index, key, op.insert[key]);\n          }\n          scrollLength += length;\n        }\n        Object.keys(attributes).forEach(function (name) {\n          _this.scroll.formatAt(index, length, name, attributes[name]);\n        });\n        return index + length;\n      }, 0);\n      delta.reduce(function (index, op) {\n        if (typeof op.delete === 'number') {\n          _this.scroll.deleteAt(index, op.delete);\n          return index;\n        }\n        return index + (op.retain || op.insert.length || 1);\n      }, 0);\n      this.scroll.batchEnd();\n      return this.update(delta);\n    }\n  }, {\n    key: 'deleteText',\n    value: function deleteText(index, length) {\n      this.scroll.deleteAt(index, length);\n      return this.update(new _quillDelta2.default().retain(index).delete(length));\n    }\n  }, {\n    key: 'formatLine',\n    value: function formatLine(index, length) {\n      var _this2 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      this.scroll.update();\n      Object.keys(formats).forEach(function (format) {\n        if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n        var lines = _this2.scroll.lines(index, Math.max(length, 1));\n        var lengthRemaining = length;\n        lines.forEach(function (line) {\n          var lineLength = line.length();\n          if (!(line instanceof _code2.default)) {\n            line.format(format, formats[format]);\n          } else {\n            var codeIndex = index - line.offset(_this2.scroll);\n            var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n            line.formatAt(codeIndex, codeLength, format, formats[format]);\n          }\n          lengthRemaining -= lineLength;\n        });\n      });\n      this.scroll.optimize();\n      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'formatText',\n    value: function formatText(index, length) {\n      var _this3 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      Object.keys(formats).forEach(function (format) {\n        _this3.scroll.formatAt(index, length, format, formats[format]);\n      });\n      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'getContents',\n    value: function getContents(index, length) {\n      return this.delta.slice(index, index + length);\n    }\n  }, {\n    key: 'getDelta',\n    value: function getDelta() {\n      return this.scroll.lines().reduce(function (delta, line) {\n        return delta.concat(line.delta());\n      }, new _quillDelta2.default());\n    }\n  }, {\n    key: 'getFormat',\n    value: function getFormat(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var lines = [],\n          leaves = [];\n      if (length === 0) {\n        this.scroll.path(index).forEach(function (path) {\n          var _path = _slicedToArray(path, 1),\n              blot = _path[0];\n\n          if (blot instanceof _block2.default) {\n            lines.push(blot);\n          } else if (blot instanceof _parchment2.default.Leaf) {\n            leaves.push(blot);\n          }\n        });\n      } else {\n        lines = this.scroll.lines(index, length);\n        leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n      }\n      var formatsArr = [lines, leaves].map(function (blots) {\n        if (blots.length === 0) return {};\n        var formats = (0, _block.bubbleFormats)(blots.shift());\n        while (Object.keys(formats).length > 0) {\n          var blot = blots.shift();\n          if (blot == null) return formats;\n          formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n        }\n        return formats;\n      });\n      return _extend2.default.apply(_extend2.default, formatsArr);\n    }\n  }, {\n    key: 'getText',\n    value: function getText(index, length) {\n      return this.getContents(index, length).filter(function (op) {\n        return typeof op.insert === 'string';\n      }).map(function (op) {\n        return op.insert;\n      }).join('');\n    }\n  }, {\n    key: 'insertEmbed',\n    value: function insertEmbed(index, embed, value) {\n      this.scroll.insertAt(index, embed, value);\n      return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n    }\n  }, {\n    key: 'insertText',\n    value: function insertText(index, text) {\n      var _this4 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      this.scroll.insertAt(index, text);\n      Object.keys(formats).forEach(function (format) {\n        _this4.scroll.formatAt(index, text.length, format, formats[format]);\n      });\n      return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'isBlank',\n    value: function isBlank() {\n      if (this.scroll.children.length == 0) return true;\n      if (this.scroll.children.length > 1) return false;\n      var block = this.scroll.children.head;\n      if (block.statics.blotName !== _block2.default.blotName) return false;\n      if (block.children.length > 1) return false;\n      return block.children.head instanceof _break2.default;\n    }\n  }, {\n    key: 'removeFormat',\n    value: function removeFormat(index, length) {\n      var text = this.getText(index, length);\n\n      var _scroll$line3 = this.scroll.line(index + length),\n          _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n          line = _scroll$line4[0],\n          offset = _scroll$line4[1];\n\n      var suffixLength = 0,\n          suffix = new _quillDelta2.default();\n      if (line != null) {\n        if (!(line instanceof _code2.default)) {\n          suffixLength = line.length() - offset;\n        } else {\n          suffixLength = line.newlineIndex(offset) - offset + 1;\n        }\n        suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n      }\n      var contents = this.getContents(index, length + suffixLength);\n      var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n      var delta = new _quillDelta2.default().retain(index).concat(diff);\n      return this.applyDelta(delta);\n    }\n  }, {\n    key: 'update',\n    value: function update(change) {\n      var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n      var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n      var oldDelta = this.delta;\n      if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n        // Optimization for character changes\n        var textBlot = _parchment2.default.find(mutations[0].target);\n        var formats = (0, _block.bubbleFormats)(textBlot);\n        var index = textBlot.offset(this.scroll);\n        var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n        var oldText = new _quillDelta2.default().insert(oldValue);\n        var newText = new _quillDelta2.default().insert(textBlot.value());\n        var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n        change = diffDelta.reduce(function (delta, op) {\n          if (op.insert) {\n            return delta.insert(op.insert, formats);\n          } else {\n            return delta.push(op);\n          }\n        }, new _quillDelta2.default());\n        this.delta = oldDelta.compose(change);\n      } else {\n        this.delta = this.getDelta();\n        if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n          change = oldDelta.diff(this.delta, cursorIndex);\n        }\n      }\n      return change;\n    }\n  }]);\n\n  return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n  return Object.keys(combined).reduce(function (merged, name) {\n    if (formats[name] == null) return merged;\n    if (combined[name] === formats[name]) {\n      merged[name] = combined[name];\n    } else if (Array.isArray(combined[name])) {\n      if (combined[name].indexOf(formats[name]) < 0) {\n        merged[name] = combined[name].concat([formats[name]]);\n      }\n    } else {\n      merged[name] = [combined[name], formats[name]];\n    }\n    return merged;\n  }, {});\n}\n\nfunction normalizeDelta(delta) {\n  return delta.reduce(function (delta, op) {\n    if (op.insert === 1) {\n      var attributes = (0, _clone2.default)(op.attributes);\n      delete attributes['image'];\n      return delta.insert({ image: op.attributes.image }, attributes);\n    }\n    if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n      op = (0, _clone2.default)(op);\n      if (op.attributes.list) {\n        op.attributes.list = 'ordered';\n      } else {\n        op.attributes.list = 'bullet';\n        delete op.attributes.bullet;\n      }\n    }\n    if (typeof op.insert === 'string') {\n      var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      return delta.insert(text, op.attributes);\n    }\n    return delta.push(op);\n  }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n  var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n  _classCallCheck(this, Range);\n\n  this.index = index;\n  this.length = length;\n};\n\nvar Selection = function () {\n  function Selection(scroll, emitter) {\n    var _this = this;\n\n    _classCallCheck(this, Selection);\n\n    this.emitter = emitter;\n    this.scroll = scroll;\n    this.composing = false;\n    this.mouseDown = false;\n    this.root = this.scroll.domNode;\n    this.cursor = _parchment2.default.create('cursor', this);\n    // savedRange is last non-null range\n    this.lastRange = this.savedRange = new Range(0, 0);\n    this.handleComposition();\n    this.handleDragging();\n    this.emitter.listenDOM('selectionchange', document, function () {\n      if (!_this.mouseDown) {\n        setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n      }\n    });\n    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n      if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n        _this.update(_emitter4.default.sources.SILENT);\n      }\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n      if (!_this.hasFocus()) return;\n      var native = _this.getNativeRange();\n      if (native == null) return;\n      if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n      // TODO unclear if this has negative side effects\n      _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n        try {\n          _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n        } catch (ignored) {}\n      });\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n      if (context.range) {\n        var _context$range = context.range,\n            startNode = _context$range.startNode,\n            startOffset = _context$range.startOffset,\n            endNode = _context$range.endNode,\n            endOffset = _context$range.endOffset;\n\n        _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n      }\n    });\n    this.update(_emitter4.default.sources.SILENT);\n  }\n\n  _createClass(Selection, [{\n    key: 'handleComposition',\n    value: function handleComposition() {\n      var _this2 = this;\n\n      this.root.addEventListener('compositionstart', function () {\n        _this2.composing = true;\n      });\n      this.root.addEventListener('compositionend', function () {\n        _this2.composing = false;\n        if (_this2.cursor.parent) {\n          var range = _this2.cursor.restore();\n          if (!range) return;\n          setTimeout(function () {\n            _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n          }, 1);\n        }\n      });\n    }\n  }, {\n    key: 'handleDragging',\n    value: function handleDragging() {\n      var _this3 = this;\n\n      this.emitter.listenDOM('mousedown', document.body, function () {\n        _this3.mouseDown = true;\n      });\n      this.emitter.listenDOM('mouseup', document.body, function () {\n        _this3.mouseDown = false;\n        _this3.update(_emitter4.default.sources.USER);\n      });\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      if (this.hasFocus()) return;\n      this.root.focus();\n      this.setRange(this.savedRange);\n    }\n  }, {\n    key: 'format',\n    value: function format(_format, value) {\n      if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n      this.scroll.update();\n      var nativeRange = this.getNativeRange();\n      if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n      if (nativeRange.start.node !== this.cursor.textNode) {\n        var blot = _parchment2.default.find(nativeRange.start.node, false);\n        if (blot == null) return;\n        // TODO Give blot ability to not split\n        if (blot instanceof _parchment2.default.Leaf) {\n          var after = blot.split(nativeRange.start.offset);\n          blot.parent.insertBefore(this.cursor, after);\n        } else {\n          blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n        }\n        this.cursor.attach();\n      }\n      this.cursor.format(_format, value);\n      this.scroll.optimize();\n      this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n      this.update();\n    }\n  }, {\n    key: 'getBounds',\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var scrollLength = this.scroll.length();\n      index = Math.min(index, scrollLength - 1);\n      length = Math.min(index + length, scrollLength - 1) - index;\n      var node = void 0,\n          _scroll$leaf = this.scroll.leaf(index),\n          _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n          leaf = _scroll$leaf2[0],\n          offset = _scroll$leaf2[1];\n      if (leaf == null) return null;\n\n      var _leaf$position = leaf.position(offset, true);\n\n      var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n      node = _leaf$position2[0];\n      offset = _leaf$position2[1];\n\n      var range = document.createRange();\n      if (length > 0) {\n        range.setStart(node, offset);\n\n        var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n        var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n        leaf = _scroll$leaf4[0];\n        offset = _scroll$leaf4[1];\n\n        if (leaf == null) return null;\n\n        var _leaf$position3 = leaf.position(offset, true);\n\n        var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n        node = _leaf$position4[0];\n        offset = _leaf$position4[1];\n\n        range.setEnd(node, offset);\n        return range.getBoundingClientRect();\n      } else {\n        var side = 'left';\n        var rect = void 0;\n        if (node instanceof Text) {\n          if (offset < node.data.length) {\n            range.setStart(node, offset);\n            range.setEnd(node, offset + 1);\n          } else {\n            range.setStart(node, offset - 1);\n            range.setEnd(node, offset);\n            side = 'right';\n          }\n          rect = range.getBoundingClientRect();\n        } else {\n          rect = leaf.domNode.getBoundingClientRect();\n          if (offset > 0) side = 'right';\n        }\n        return {\n          bottom: rect.top + rect.height,\n          height: rect.height,\n          left: rect[side],\n          right: rect[side],\n          top: rect.top,\n          width: 0\n        };\n      }\n    }\n  }, {\n    key: 'getNativeRange',\n    value: function getNativeRange() {\n      var selection = document.getSelection();\n      if (selection == null || selection.rangeCount <= 0) return null;\n      var nativeRange = selection.getRangeAt(0);\n      if (nativeRange == null) return null;\n      var range = this.normalizeNative(nativeRange);\n      debug.info('getNativeRange', range);\n      return range;\n    }\n  }, {\n    key: 'getRange',\n    value: function getRange() {\n      var normalized = this.getNativeRange();\n      if (normalized == null) return [null, null];\n      var range = this.normalizedToRange(normalized);\n      return [range, normalized];\n    }\n  }, {\n    key: 'hasFocus',\n    value: function hasFocus() {\n      return document.activeElement === this.root;\n    }\n  }, {\n    key: 'normalizedToRange',\n    value: function normalizedToRange(range) {\n      var _this4 = this;\n\n      var positions = [[range.start.node, range.start.offset]];\n      if (!range.native.collapsed) {\n        positions.push([range.end.node, range.end.offset]);\n      }\n      var indexes = positions.map(function (position) {\n        var _position = _slicedToArray(position, 2),\n            node = _position[0],\n            offset = _position[1];\n\n        var blot = _parchment2.default.find(node, true);\n        var index = blot.offset(_this4.scroll);\n        if (offset === 0) {\n          return index;\n        } else if (blot instanceof _parchment2.default.Container) {\n          return index + blot.length();\n        } else {\n          return index + blot.index(node, offset);\n        }\n      });\n      var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n      var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n      return new Range(start, end - start);\n    }\n  }, {\n    key: 'normalizeNative',\n    value: function normalizeNative(nativeRange) {\n      if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n        return null;\n      }\n      var range = {\n        start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n        end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n        native: nativeRange\n      };\n      [range.start, range.end].forEach(function (position) {\n        var node = position.node,\n            offset = position.offset;\n        while (!(node instanceof Text) && node.childNodes.length > 0) {\n          if (node.childNodes.length > offset) {\n            node = node.childNodes[offset];\n            offset = 0;\n          } else if (node.childNodes.length === offset) {\n            node = node.lastChild;\n            offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n          } else {\n            break;\n          }\n        }\n        position.node = node, position.offset = offset;\n      });\n      return range;\n    }\n  }, {\n    key: 'rangeToNative',\n    value: function rangeToNative(range) {\n      var _this5 = this;\n\n      var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n      var args = [];\n      var scrollLength = this.scroll.length();\n      indexes.forEach(function (index, i) {\n        index = Math.min(scrollLength - 1, index);\n        var node = void 0,\n            _scroll$leaf5 = _this5.scroll.leaf(index),\n            _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n            leaf = _scroll$leaf6[0],\n            offset = _scroll$leaf6[1];\n        var _leaf$position5 = leaf.position(offset, i !== 0);\n\n        var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n        node = _leaf$position6[0];\n        offset = _leaf$position6[1];\n\n        args.push(node, offset);\n      });\n      if (args.length < 2) {\n        args = args.concat(args);\n      }\n      return args;\n    }\n  }, {\n    key: 'scrollIntoView',\n    value: function scrollIntoView(scrollingContainer) {\n      var range = this.lastRange;\n      if (range == null) return;\n      var bounds = this.getBounds(range.index, range.length);\n      if (bounds == null) return;\n      var limit = this.scroll.length() - 1;\n\n      var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n          _scroll$line2 = _slicedToArray(_scroll$line, 1),\n          first = _scroll$line2[0];\n\n      var last = first;\n      if (range.length > 0) {\n        var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n        var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n        last = _scroll$line4[0];\n      }\n      if (first == null || last == null) return;\n      var scrollBounds = scrollingContainer.getBoundingClientRect();\n      if (bounds.top < scrollBounds.top) {\n        scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n      } else if (bounds.bottom > scrollBounds.bottom) {\n        scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n      }\n    }\n  }, {\n    key: 'setNativeRange',\n    value: function setNativeRange(startNode, startOffset) {\n      var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n      var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n      var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n      debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n      if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n        return;\n      }\n      var selection = document.getSelection();\n      if (selection == null) return;\n      if (startNode != null) {\n        if (!this.hasFocus()) this.root.focus();\n        var native = (this.getNativeRange() || {}).native;\n        if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n          if (startNode.tagName == \"BR\") {\n            startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n            startNode = startNode.parentNode;\n          }\n          if (endNode.tagName == \"BR\") {\n            endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n            endNode = endNode.parentNode;\n          }\n          var range = document.createRange();\n          range.setStart(startNode, startOffset);\n          range.setEnd(endNode, endOffset);\n          selection.removeAllRanges();\n          selection.addRange(range);\n        }\n      } else {\n        selection.removeAllRanges();\n        this.root.blur();\n        document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n      }\n    }\n  }, {\n    key: 'setRange',\n    value: function setRange(range) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n      if (typeof force === 'string') {\n        source = force;\n        force = false;\n      }\n      debug.info('setRange', range);\n      if (range != null) {\n        var args = this.rangeToNative(range);\n        this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n      } else {\n        this.setNativeRange(null);\n      }\n      this.update(source);\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n      var oldRange = this.lastRange;\n\n      var _getRange = this.getRange(),\n          _getRange2 = _slicedToArray(_getRange, 2),\n          lastRange = _getRange2[0],\n          nativeRange = _getRange2[1];\n\n      this.lastRange = lastRange;\n      if (this.lastRange != null) {\n        this.savedRange = this.lastRange;\n      }\n      if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n        var _emitter;\n\n        if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n          this.cursor.restore();\n        }\n        var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n        (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n        if (source !== _emitter4.default.sources.SILENT) {\n          var _emitter2;\n\n          (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n        }\n      }\n    }\n  }]);\n\n  return Selection;\n}();\n\nfunction contains(parent, descendant) {\n  try {\n    // Firefox inserts inaccessible nodes around video elements\n    descendant.parentNode;\n  } catch (e) {\n    return false;\n  }\n  // IE11 has bug with Text nodes\n  // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n  if (descendant instanceof Text) {\n    descendant = descendant.parentNode;\n  }\n  return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n  _inherits(Break, _Parchment$Embed);\n\n  function Break() {\n    _classCallCheck(this, Break);\n\n    return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n  }\n\n  _createClass(Break, [{\n    key: 'insertInto',\n    value: function insertInto(parent, ref) {\n      if (parent.children.length === 0) {\n        _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n      } else {\n        this.remove();\n      }\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      return 0;\n    }\n  }, {\n    key: 'value',\n    value: function value() {\n      return '';\n    }\n  }], [{\n    key: 'value',\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(44);\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n    __extends(ContainerBlot, _super);\n    function ContainerBlot(domNode) {\n        var _this = _super.call(this, domNode) || this;\n        _this.build();\n        return _this;\n    }\n    ContainerBlot.prototype.appendChild = function (other) {\n        this.insertBefore(other);\n    };\n    ContainerBlot.prototype.attach = function () {\n        _super.prototype.attach.call(this);\n        this.children.forEach(function (child) {\n            child.attach();\n        });\n    };\n    ContainerBlot.prototype.build = function () {\n        var _this = this;\n        this.children = new linked_list_1.default();\n        // Need to be reversed for if DOM nodes already in order\n        [].slice\n            .call(this.domNode.childNodes)\n            .reverse()\n            .forEach(function (node) {\n            try {\n                var child = makeBlot(node);\n                _this.insertBefore(child, _this.children.head || undefined);\n            }\n            catch (err) {\n                if (err instanceof Registry.ParchmentError)\n                    return;\n                else\n                    throw err;\n            }\n        });\n    };\n    ContainerBlot.prototype.deleteAt = function (index, length) {\n        if (index === 0 && length === this.length()) {\n            return this.remove();\n        }\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.deleteAt(offset, length);\n        });\n    };\n    ContainerBlot.prototype.descendant = function (criteria, index) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if ((criteria.blotName == null && criteria(child)) ||\n            (criteria.blotName != null && child instanceof criteria)) {\n            return [child, offset];\n        }\n        else if (child instanceof ContainerBlot) {\n            return child.descendant(criteria, offset);\n        }\n        else {\n            return [null, -1];\n        }\n    };\n    ContainerBlot.prototype.descendants = function (criteria, index, length) {\n        if (index === void 0) { index = 0; }\n        if (length === void 0) { length = Number.MAX_VALUE; }\n        var descendants = [];\n        var lengthLeft = length;\n        this.children.forEachAt(index, length, function (child, index, length) {\n            if ((criteria.blotName == null && criteria(child)) ||\n                (criteria.blotName != null && child instanceof criteria)) {\n                descendants.push(child);\n            }\n            if (child instanceof ContainerBlot) {\n                descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n            }\n            lengthLeft -= length;\n        });\n        return descendants;\n    };\n    ContainerBlot.prototype.detach = function () {\n        this.children.forEach(function (child) {\n            child.detach();\n        });\n        _super.prototype.detach.call(this);\n    };\n    ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.formatAt(offset, length, name, value);\n        });\n    };\n    ContainerBlot.prototype.insertAt = function (index, value, def) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if (child) {\n            child.insertAt(offset, value, def);\n        }\n        else {\n            var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n            this.appendChild(blot);\n        }\n    };\n    ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n        if (this.statics.allowedChildren != null &&\n            !this.statics.allowedChildren.some(function (child) {\n                return childBlot instanceof child;\n            })) {\n            throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n        }\n        childBlot.insertInto(this, refBlot);\n    };\n    ContainerBlot.prototype.length = function () {\n        return this.children.reduce(function (memo, child) {\n            return memo + child.length();\n        }, 0);\n    };\n    ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n        this.children.forEach(function (child) {\n            targetParent.insertBefore(child, refNode);\n        });\n    };\n    ContainerBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        if (this.children.length === 0) {\n            if (this.statics.defaultChild != null) {\n                var child = Registry.create(this.statics.defaultChild);\n                this.appendChild(child);\n                child.optimize(context);\n            }\n            else {\n                this.remove();\n            }\n        }\n    };\n    ContainerBlot.prototype.path = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n        var position = [[this, index]];\n        if (child instanceof ContainerBlot) {\n            return position.concat(child.path(offset, inclusive));\n        }\n        else if (child != null) {\n            position.push([child, offset]);\n        }\n        return position;\n    };\n    ContainerBlot.prototype.removeChild = function (child) {\n        this.children.remove(child);\n    };\n    ContainerBlot.prototype.replace = function (target) {\n        if (target instanceof ContainerBlot) {\n            target.moveChildren(this);\n        }\n        _super.prototype.replace.call(this, target);\n    };\n    ContainerBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = this.clone();\n        this.parent.insertBefore(after, this.next);\n        this.children.forEachAt(index, this.length(), function (child, offset, length) {\n            child = child.split(offset, force);\n            after.appendChild(child);\n        });\n        return after;\n    };\n    ContainerBlot.prototype.unwrap = function () {\n        this.moveChildren(this.parent, this.next);\n        this.remove();\n    };\n    ContainerBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        var addedNodes = [];\n        var removedNodes = [];\n        mutations.forEach(function (mutation) {\n            if (mutation.target === _this.domNode && mutation.type === 'childList') {\n                addedNodes.push.apply(addedNodes, mutation.addedNodes);\n                removedNodes.push.apply(removedNodes, mutation.removedNodes);\n            }\n        });\n        removedNodes.forEach(function (node) {\n            // Check node has actually been removed\n            // One exception is Chrome does not immediately remove IFRAMEs\n            // from DOM but MutationRecord is correct in its reported removal\n            if (node.parentNode != null &&\n                // @ts-ignore\n                node.tagName !== 'IFRAME' &&\n                document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n                return;\n            }\n            var blot = Registry.find(node);\n            if (blot == null)\n                return;\n            if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n                blot.detach();\n            }\n        });\n        addedNodes\n            .filter(function (node) {\n            return node.parentNode == _this.domNode;\n        })\n            .sort(function (a, b) {\n            if (a === b)\n                return 0;\n            if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n                return 1;\n            }\n            return -1;\n        })\n            .forEach(function (node) {\n            var refBlot = null;\n            if (node.nextSibling != null) {\n                refBlot = Registry.find(node.nextSibling);\n            }\n            var blot = makeBlot(node);\n            if (blot.next != refBlot || blot.next == null) {\n                if (blot.parent != null) {\n                    blot.parent.removeChild(_this);\n                }\n                _this.insertBefore(blot, refBlot || undefined);\n            }\n        });\n    };\n    return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n    var blot = Registry.find(node);\n    if (blot == null) {\n        try {\n            blot = Registry.create(node);\n        }\n        catch (e) {\n            blot = Registry.create(Registry.Scope.INLINE);\n            [].slice.call(node.childNodes).forEach(function (child) {\n                // @ts-ignore\n                blot.domNode.appendChild(child);\n            });\n            if (node.parentNode) {\n                node.parentNode.replaceChild(blot.domNode, node);\n            }\n            blot.attach();\n        }\n    }\n    return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar store_1 = __webpack_require__(31);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n    __extends(FormatBlot, _super);\n    function FormatBlot(domNode) {\n        var _this = _super.call(this, domNode) || this;\n        _this.attributes = new store_1.default(_this.domNode);\n        return _this;\n    }\n    FormatBlot.formats = function (domNode) {\n        if (typeof this.tagName === 'string') {\n            return true;\n        }\n        else if (Array.isArray(this.tagName)) {\n            return domNode.tagName.toLowerCase();\n        }\n        return undefined;\n    };\n    FormatBlot.prototype.format = function (name, value) {\n        var format = Registry.query(name);\n        if (format instanceof attributor_1.default) {\n            this.attributes.attribute(format, value);\n        }\n        else if (value) {\n            if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n                this.replaceWith(name, value);\n            }\n        }\n    };\n    FormatBlot.prototype.formats = function () {\n        var formats = this.attributes.values();\n        var format = this.statics.formats(this.domNode);\n        if (format != null) {\n            formats[this.statics.blotName] = format;\n        }\n        return formats;\n    };\n    FormatBlot.prototype.replaceWith = function (name, value) {\n        var replacement = _super.prototype.replaceWith.call(this, name, value);\n        this.attributes.copy(replacement);\n        return replacement;\n    };\n    FormatBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        _super.prototype.update.call(this, mutations, context);\n        if (mutations.some(function (mutation) {\n            return mutation.target === _this.domNode && mutation.type === 'attributes';\n        })) {\n            this.attributes.build();\n        }\n    };\n    FormatBlot.prototype.wrap = function (name, value) {\n        var wrapper = _super.prototype.wrap.call(this, name, value);\n        if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n            this.attributes.move(wrapper);\n        }\n        return wrapper;\n    };\n    return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n    __extends(LeafBlot, _super);\n    function LeafBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    LeafBlot.value = function (domNode) {\n        return true;\n    };\n    LeafBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node ||\n            this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n            return Math.min(offset, 1);\n        }\n        return -1;\n    };\n    LeafBlot.prototype.position = function (index, inclusive) {\n        var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n        if (index > 0)\n            offset += 1;\n        return [this.parent.domNode, offset];\n    };\n    LeafBlot.prototype.value = function () {\n        var _a;\n        return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n    };\n    LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n    return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n  attributes: {\n    compose: function (a, b, keepNull) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = extend(true, {}, b);\n      if (!keepNull) {\n        attributes = Object.keys(attributes).reduce(function (copy, key) {\n          if (attributes[key] != null) {\n            copy[key] = attributes[key];\n          }\n          return copy;\n        }, {});\n      }\n      for (var key in a) {\n        if (a[key] !== undefined && b[key] === undefined) {\n          attributes[key] = a[key];\n        }\n      }\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    diff: function(a, b) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n        if (!equal(a[key], b[key])) {\n          attributes[key] = b[key] === undefined ? null : b[key];\n        }\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    transform: function (a, b, priority) {\n      if (typeof a !== 'object') return b;\n      if (typeof b !== 'object') return undefined;\n      if (!priority) return b;  // b simply overwrites us without priority\n      var attributes = Object.keys(b).reduce(function (attributes, key) {\n        if (a[key] === undefined) attributes[key] = b[key];  // null is a valid value\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    }\n  },\n\n  iterator: function (ops) {\n    return new Iterator(ops);\n  },\n\n  length: function (op) {\n    if (typeof op['delete'] === 'number') {\n      return op['delete'];\n    } else if (typeof op.retain === 'number') {\n      return op.retain;\n    } else {\n      return typeof op.insert === 'string' ? op.insert.length : 1;\n    }\n  }\n};\n\n\nfunction Iterator(ops) {\n  this.ops = ops;\n  this.index = 0;\n  this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n  return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n  if (!length) length = Infinity;\n  var nextOp = this.ops[this.index];\n  if (nextOp) {\n    var offset = this.offset;\n    var opLength = lib.length(nextOp)\n    if (length >= opLength - offset) {\n      length = opLength - offset;\n      this.index += 1;\n      this.offset = 0;\n    } else {\n      this.offset += length;\n    }\n    if (typeof nextOp['delete'] === 'number') {\n      return { 'delete': length };\n    } else {\n      var retOp = {};\n      if (nextOp.attributes) {\n        retOp.attributes = nextOp.attributes;\n      }\n      if (typeof nextOp.retain === 'number') {\n        retOp.retain = length;\n      } else if (typeof nextOp.insert === 'string') {\n        retOp.insert = nextOp.insert.substr(offset, length);\n      } else {\n        // offset should === 0, length should === 1\n        retOp.insert = nextOp.insert;\n      }\n      return retOp;\n    }\n  } else {\n    return { retain: Infinity };\n  }\n};\n\nIterator.prototype.peek = function () {\n  return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n  if (this.ops[this.index]) {\n    // Should never return 0 if our index is being managed correctly\n    return lib.length(this.ops[this.index]) - this.offset;\n  } else {\n    return Infinity;\n  }\n};\n\nIterator.prototype.peekType = function () {\n  if (this.ops[this.index]) {\n    if (typeof this.ops[this.index]['delete'] === 'number') {\n      return 'delete';\n    } else if (typeof this.ops[this.index].retain === 'number') {\n      return 'retain';\n    } else {\n      return 'insert';\n    }\n  }\n  return 'retain';\n};\n\nIterator.prototype.rest = function () {\n  if (!this.hasNext()) {\n    return [];\n  } else if (this.offset === 0) {\n    return this.ops.slice(this.index);\n  } else {\n    var offset = this.offset;\n    var index = this.index;\n    var next = this.next();\n    var rest = this.ops.slice(this.index);\n    this.offset = offset;\n    this.index = index;\n    return [next].concat(rest);\n  }\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n  return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n  nativeMap = Map;\n} catch(_) {\n  // maybe a reference error because no `Map`. Give it a dummy value that no\n  // value will ever be an instanceof.\n  nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n  nativeSet = Set;\n} catch(_) {\n  nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n  nativePromise = Promise;\n} catch(_) {\n  nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n *    circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n *    a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n *    (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n *    should be cloned as well. Non-enumerable properties on the prototype\n *    chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n  if (typeof circular === 'object') {\n    depth = circular.depth;\n    prototype = circular.prototype;\n    includeNonEnumerable = circular.includeNonEnumerable;\n    circular = circular.circular;\n  }\n  // maintain two arrays for circular references, where corresponding parents\n  // and children have the same index\n  var allParents = [];\n  var allChildren = [];\n\n  var useBuffer = typeof Buffer != 'undefined';\n\n  if (typeof circular == 'undefined')\n    circular = true;\n\n  if (typeof depth == 'undefined')\n    depth = Infinity;\n\n  // recurse this function so we don't reset allParents and allChildren\n  function _clone(parent, depth) {\n    // cloning null always returns null\n    if (parent === null)\n      return null;\n\n    if (depth === 0)\n      return parent;\n\n    var child;\n    var proto;\n    if (typeof parent != 'object') {\n      return parent;\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      child = new nativeMap();\n    } else if (_instanceof(parent, nativeSet)) {\n      child = new nativeSet();\n    } else if (_instanceof(parent, nativePromise)) {\n      child = new nativePromise(function (resolve, reject) {\n        parent.then(function(value) {\n          resolve(_clone(value, depth - 1));\n        }, function(err) {\n          reject(_clone(err, depth - 1));\n        });\n      });\n    } else if (clone.__isArray(parent)) {\n      child = [];\n    } else if (clone.__isRegExp(parent)) {\n      child = new RegExp(parent.source, __getRegExpFlags(parent));\n      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n    } else if (clone.__isDate(parent)) {\n      child = new Date(parent.getTime());\n    } else if (useBuffer && Buffer.isBuffer(parent)) {\n      if (Buffer.allocUnsafe) {\n        // Node.js >= 4.5.0\n        child = Buffer.allocUnsafe(parent.length);\n      } else {\n        // Older Node.js versions\n        child = new Buffer(parent.length);\n      }\n      parent.copy(child);\n      return child;\n    } else if (_instanceof(parent, Error)) {\n      child = Object.create(parent);\n    } else {\n      if (typeof prototype == 'undefined') {\n        proto = Object.getPrototypeOf(parent);\n        child = Object.create(proto);\n      }\n      else {\n        child = Object.create(prototype);\n        proto = prototype;\n      }\n    }\n\n    if (circular) {\n      var index = allParents.indexOf(parent);\n\n      if (index != -1) {\n        return allChildren[index];\n      }\n      allParents.push(parent);\n      allChildren.push(child);\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      parent.forEach(function(value, key) {\n        var keyChild = _clone(key, depth - 1);\n        var valueChild = _clone(value, depth - 1);\n        child.set(keyChild, valueChild);\n      });\n    }\n    if (_instanceof(parent, nativeSet)) {\n      parent.forEach(function(value) {\n        var entryChild = _clone(value, depth - 1);\n        child.add(entryChild);\n      });\n    }\n\n    for (var i in parent) {\n      var attrs;\n      if (proto) {\n        attrs = Object.getOwnPropertyDescriptor(proto, i);\n      }\n\n      if (attrs && attrs.set == null) {\n        continue;\n      }\n      child[i] = _clone(parent[i], depth - 1);\n    }\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(parent);\n      for (var i = 0; i < symbols.length; i++) {\n        // Don't need to worry about cloning a symbol because it is a primitive,\n        // like a number or string.\n        var symbol = symbols[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n        if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n          continue;\n        }\n        child[symbol] = _clone(parent[symbol], depth - 1);\n        if (!descriptor.enumerable) {\n          Object.defineProperty(child, symbol, {\n            enumerable: false\n          });\n        }\n      }\n    }\n\n    if (includeNonEnumerable) {\n      var allPropertyNames = Object.getOwnPropertyNames(parent);\n      for (var i = 0; i < allPropertyNames.length; i++) {\n        var propertyName = allPropertyNames[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n        if (descriptor && descriptor.enumerable) {\n          continue;\n        }\n        child[propertyName] = _clone(parent[propertyName], depth - 1);\n        Object.defineProperty(child, propertyName, {\n          enumerable: false\n        });\n      }\n    }\n\n    return child;\n  }\n\n  return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n  if (parent === null)\n    return null;\n\n  var c = function () {};\n  c.prototype = parent;\n  return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n  return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n  var flags = '';\n  if (re.global) flags += 'g';\n  if (re.ignoreCase) flags += 'i';\n  if (re.multiline) flags += 'm';\n  return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n  module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n  return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n  _inherits(Scroll, _Parchment$Scroll);\n\n  function Scroll(domNode, config) {\n    _classCallCheck(this, Scroll);\n\n    var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n    _this.emitter = config.emitter;\n    if (Array.isArray(config.whitelist)) {\n      _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n        whitelist[format] = true;\n        return whitelist;\n      }, {});\n    }\n    // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n    _this.domNode.addEventListener('DOMNodeInserted', function () {});\n    _this.optimize();\n    _this.enable();\n    return _this;\n  }\n\n  _createClass(Scroll, [{\n    key: 'batchStart',\n    value: function batchStart() {\n      this.batch = true;\n    }\n  }, {\n    key: 'batchEnd',\n    value: function batchEnd() {\n      this.batch = false;\n      this.optimize();\n    }\n  }, {\n    key: 'deleteAt',\n    value: function deleteAt(index, length) {\n      var _line = this.line(index),\n          _line2 = _slicedToArray(_line, 2),\n          first = _line2[0],\n          offset = _line2[1];\n\n      var _line3 = this.line(index + length),\n          _line4 = _slicedToArray(_line3, 1),\n          last = _line4[0];\n\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n      if (last != null && first !== last && offset > 0) {\n        if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n          this.optimize();\n          return;\n        }\n        if (first instanceof _code2.default) {\n          var newlineIndex = first.newlineIndex(first.length(), true);\n          if (newlineIndex > -1) {\n            first = first.split(newlineIndex + 1);\n            if (first === last) {\n              this.optimize();\n              return;\n            }\n          }\n        } else if (last instanceof _code2.default) {\n          var _newlineIndex = last.newlineIndex(0);\n          if (_newlineIndex > -1) {\n            last.split(_newlineIndex + 1);\n          }\n        }\n        var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n        first.moveChildren(last, ref);\n        first.remove();\n      }\n      this.optimize();\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      this.domNode.setAttribute('contenteditable', enabled);\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, format, value) {\n      if (this.whitelist != null && !this.whitelist[format]) return;\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n      this.optimize();\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n      if (index >= this.length()) {\n        if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n          var blot = _parchment2.default.create(this.statics.defaultChild);\n          this.appendChild(blot);\n          if (def == null && value.endsWith('\\n')) {\n            value = value.slice(0, -1);\n          }\n          blot.insertAt(0, value, def);\n        } else {\n          var embed = _parchment2.default.create(value, def);\n          this.appendChild(embed);\n        }\n      } else {\n        _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n      }\n      this.optimize();\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n        var wrapper = _parchment2.default.create(this.statics.defaultChild);\n        wrapper.appendChild(blot);\n        blot = wrapper;\n      }\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n    }\n  }, {\n    key: 'leaf',\n    value: function leaf(index) {\n      return this.path(index).pop() || [null, -1];\n    }\n  }, {\n    key: 'line',\n    value: function line(index) {\n      if (index === this.length()) {\n        return this.line(index - 1);\n      }\n      return this.descendant(isLine, index);\n    }\n  }, {\n    key: 'lines',\n    value: function lines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      var getLines = function getLines(blot, index, length) {\n        var lines = [],\n            lengthLeft = length;\n        blot.children.forEachAt(index, length, function (child, index, length) {\n          if (isLine(child)) {\n            lines.push(child);\n          } else if (child instanceof _parchment2.default.Container) {\n            lines = lines.concat(getLines(child, index, lengthLeft));\n          }\n          lengthLeft -= length;\n        });\n        return lines;\n      };\n      return getLines(this, index, length);\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize() {\n      var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (this.batch === true) return;\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n      }\n    }\n  }, {\n    key: 'path',\n    value: function path(index) {\n      return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations) {\n      if (this.batch === true) return;\n      var source = _emitter2.default.sources.USER;\n      if (typeof mutations === 'string') {\n        source = mutations;\n      }\n      if (!Array.isArray(mutations)) {\n        mutations = this.observer.takeRecords();\n      }\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n      }\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n      }\n    }\n  }]);\n\n  return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n  _inherits(Keyboard, _Module);\n\n  _createClass(Keyboard, null, [{\n    key: 'match',\n    value: function match(evt, binding) {\n      binding = normalize(binding);\n      if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n        return !!binding[key] !== evt[key] && binding[key] !== null;\n      })) {\n        return false;\n      }\n      return binding.key === (evt.which || evt.keyCode);\n    }\n  }]);\n\n  function Keyboard(quill, options) {\n    _classCallCheck(this, Keyboard);\n\n    var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n    _this.bindings = {};\n    Object.keys(_this.options.bindings).forEach(function (name) {\n      if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n        return;\n      }\n      if (_this.options.bindings[name]) {\n        _this.addBinding(_this.options.bindings[name]);\n      }\n    });\n    _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n    _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n    if (/Firefox/i.test(navigator.userAgent)) {\n      // Need to handle delete and backspace for Firefox in the general case #1171\n      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n    } else {\n      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n    }\n    _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n    _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n    _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n    _this.listen();\n    return _this;\n  }\n\n  _createClass(Keyboard, [{\n    key: 'addBinding',\n    value: function addBinding(key) {\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      var binding = normalize(key);\n      if (binding == null || binding.key == null) {\n        return debug.warn('Attempted to add invalid keyboard binding', binding);\n      }\n      if (typeof context === 'function') {\n        context = { handler: context };\n      }\n      if (typeof handler === 'function') {\n        handler = { handler: handler };\n      }\n      binding = (0, _extend2.default)(binding, context, handler);\n      this.bindings[binding.key] = this.bindings[binding.key] || [];\n      this.bindings[binding.key].push(binding);\n    }\n  }, {\n    key: 'listen',\n    value: function listen() {\n      var _this2 = this;\n\n      this.quill.root.addEventListener('keydown', function (evt) {\n        if (evt.defaultPrevented) return;\n        var which = evt.which || evt.keyCode;\n        var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n          return Keyboard.match(evt, binding);\n        });\n        if (bindings.length === 0) return;\n        var range = _this2.quill.getSelection();\n        if (range == null || !_this2.quill.hasFocus()) return;\n\n        var _quill$getLine = _this2.quill.getLine(range.index),\n            _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n            line = _quill$getLine2[0],\n            offset = _quill$getLine2[1];\n\n        var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n            _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n            leafStart = _quill$getLeaf2[0],\n            offsetStart = _quill$getLeaf2[1];\n\n        var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n            _ref2 = _slicedToArray(_ref, 2),\n            leafEnd = _ref2[0],\n            offsetEnd = _ref2[1];\n\n        var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n        var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n        var curContext = {\n          collapsed: range.length === 0,\n          empty: range.length === 0 && line.length() <= 1,\n          format: _this2.quill.getFormat(range),\n          offset: offset,\n          prefix: prefixText,\n          suffix: suffixText\n        };\n        var prevented = bindings.some(function (binding) {\n          if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n          if (binding.empty != null && binding.empty !== curContext.empty) return false;\n          if (binding.offset != null && binding.offset !== curContext.offset) return false;\n          if (Array.isArray(binding.format)) {\n            // any format is present\n            if (binding.format.every(function (name) {\n              return curContext.format[name] == null;\n            })) {\n              return false;\n            }\n          } else if (_typeof(binding.format) === 'object') {\n            // all formats must match\n            if (!Object.keys(binding.format).every(function (name) {\n              if (binding.format[name] === true) return curContext.format[name] != null;\n              if (binding.format[name] === false) return curContext.format[name] == null;\n              return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n            })) {\n              return false;\n            }\n          }\n          if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n          if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n          return binding.handler.call(_this2, range, curContext) !== true;\n        });\n        if (prevented) {\n          evt.preventDefault();\n        }\n      });\n    }\n  }]);\n\n  return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n  BACKSPACE: 8,\n  TAB: 9,\n  ENTER: 13,\n  ESCAPE: 27,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n  bindings: {\n    'bold': makeFormatHandler('bold'),\n    'italic': makeFormatHandler('italic'),\n    'underline': makeFormatHandler('underline'),\n    'indent': {\n      // highlight tab or tab at beginning of list, indent or blockquote\n      key: Keyboard.keys.TAB,\n      format: ['blockquote', 'indent', 'list'],\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '+1', _quill2.default.sources.USER);\n      }\n    },\n    'outdent': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      format: ['blockquote', 'indent', 'list'],\n      // highlight tab or tab at beginning of list, indent or blockquote\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '-1', _quill2.default.sources.USER);\n      }\n    },\n    'outdent backspace': {\n      key: Keyboard.keys.BACKSPACE,\n      collapsed: true,\n      shiftKey: null,\n      metaKey: null,\n      ctrlKey: null,\n      altKey: null,\n      format: ['indent', 'list'],\n      offset: 0,\n      handler: function handler(range, context) {\n        if (context.format.indent != null) {\n          this.quill.format('indent', '-1', _quill2.default.sources.USER);\n        } else if (context.format.list != null) {\n          this.quill.format('list', false, _quill2.default.sources.USER);\n        }\n      }\n    },\n    'indent code-block': makeCodeBlockHandler(true),\n    'outdent code-block': makeCodeBlockHandler(false),\n    'remove tab': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      collapsed: true,\n      prefix: /\\t$/,\n      handler: function handler(range) {\n        this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n      }\n    },\n    'tab': {\n      key: Keyboard.keys.TAB,\n      handler: function handler(range) {\n        this.quill.history.cutoff();\n        var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n      }\n    },\n    'list empty enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['list'],\n      empty: true,\n      handler: function handler(range, context) {\n        this.quill.format('list', false, _quill2.default.sources.USER);\n        if (context.format.indent) {\n          this.quill.format('indent', false, _quill2.default.sources.USER);\n        }\n      }\n    },\n    'checklist enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: { list: 'checked' },\n      handler: function handler(range) {\n        var _quill$getLine3 = this.quill.getLine(range.index),\n            _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n            line = _quill$getLine4[0],\n            offset = _quill$getLine4[1];\n\n        var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n        var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'header enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['header'],\n      suffix: /^$/,\n      handler: function handler(range, context) {\n        var _quill$getLine5 = this.quill.getLine(range.index),\n            _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n            line = _quill$getLine6[0],\n            offset = _quill$getLine6[1];\n\n        var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'list autofill': {\n      key: ' ',\n      collapsed: true,\n      format: { list: false },\n      prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n      handler: function handler(range, context) {\n        var length = context.prefix.length;\n\n        var _quill$getLine7 = this.quill.getLine(range.index),\n            _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n            line = _quill$getLine8[0],\n            offset = _quill$getLine8[1];\n\n        if (offset > length) return true;\n        var value = void 0;\n        switch (context.prefix.trim()) {\n          case '[]':case '[ ]':\n            value = 'unchecked';\n            break;\n          case '[x]':\n            value = 'checked';\n            break;\n          case '-':case '*':\n            value = 'bullet';\n            break;\n          default:\n            value = 'ordered';\n        }\n        this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n      }\n    },\n    'code exit': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['code-block'],\n      prefix: /\\n\\n$/,\n      suffix: /^\\s+$/,\n      handler: function handler(range) {\n        var _quill$getLine9 = this.quill.getLine(range.index),\n            _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n            line = _quill$getLine10[0],\n            offset = _quill$getLine10[1];\n\n        var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n      }\n    },\n    'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n    'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n    'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n    'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n  }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n  var _ref3;\n\n  var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n  return _ref3 = {\n    key: key,\n    shiftKey: shiftKey,\n    altKey: null\n  }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n    var index = range.index;\n    if (key === Keyboard.keys.RIGHT) {\n      index += range.length + 1;\n    }\n\n    var _quill$getLeaf3 = this.quill.getLeaf(index),\n        _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n        leaf = _quill$getLeaf4[0];\n\n    if (!(leaf instanceof _parchment2.default.Embed)) return true;\n    if (key === Keyboard.keys.LEFT) {\n      if (shiftKey) {\n        this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n      } else {\n        this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n      }\n    } else {\n      if (shiftKey) {\n        this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n      } else {\n        this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n      }\n    }\n    return false;\n  }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n  if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n  var _quill$getLine11 = this.quill.getLine(range.index),\n      _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n      line = _quill$getLine12[0];\n\n  var formats = {};\n  if (context.offset === 0) {\n    var _quill$getLine13 = this.quill.getLine(range.index - 1),\n        _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n        prev = _quill$getLine14[0];\n\n    if (prev != null && prev.length() > 1) {\n      var curFormats = line.formats();\n      var prevFormats = this.quill.getFormat(range.index - 1, 1);\n      formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n    }\n  }\n  // Check for astral symbols\n  var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n  this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n  }\n  this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n  // Check for astral symbols\n  var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n  if (range.index >= this.quill.getLength() - length) return;\n  var formats = {},\n      nextLength = 0;\n\n  var _quill$getLine15 = this.quill.getLine(range.index),\n      _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n      line = _quill$getLine16[0];\n\n  if (context.offset >= line.length() - 1) {\n    var _quill$getLine17 = this.quill.getLine(range.index + 1),\n        _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n        next = _quill$getLine18[0];\n\n    if (next) {\n      var curFormats = line.formats();\n      var nextFormats = this.quill.getFormat(range.index, 1);\n      formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n      nextLength = next.length();\n    }\n  }\n  this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n  }\n}\n\nfunction handleDeleteRange(range) {\n  var lines = this.quill.getLines(range);\n  var formats = {};\n  if (lines.length > 1) {\n    var firstFormats = lines[0].formats();\n    var lastFormats = lines[lines.length - 1].formats();\n    formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n  }\n  this.quill.deleteText(range, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n  }\n  this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n  this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n  var _this3 = this;\n\n  if (range.length > 0) {\n    this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n  }\n  var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n    if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n      lineFormats[format] = context.format[format];\n    }\n    return lineFormats;\n  }, {});\n  this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n  // Earlier scroll.deleteAt might have messed up our selection,\n  // so insertText's built in selection preservation is not reliable\n  this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n  this.quill.focus();\n  Object.keys(context.format).forEach(function (name) {\n    if (lineFormats[name] != null) return;\n    if (Array.isArray(context.format[name])) return;\n    if (name === 'link') return;\n    _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n  });\n}\n\nfunction makeCodeBlockHandler(indent) {\n  return {\n    key: Keyboard.keys.TAB,\n    shiftKey: !indent,\n    format: { 'code-block': true },\n    handler: function handler(range) {\n      var CodeBlock = _parchment2.default.query('code-block');\n      var index = range.index,\n          length = range.length;\n\n      var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n          _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n          block = _quill$scroll$descend2[0],\n          offset = _quill$scroll$descend2[1];\n\n      if (block == null) return;\n      var scrollIndex = this.quill.getIndex(block);\n      var start = block.newlineIndex(offset, true) + 1;\n      var end = block.newlineIndex(scrollIndex + offset + length);\n      var lines = block.domNode.textContent.slice(start, end).split('\\n');\n      offset = 0;\n      lines.forEach(function (line, i) {\n        if (indent) {\n          block.insertAt(start + offset, CodeBlock.TAB);\n          offset += CodeBlock.TAB.length;\n          if (i === 0) {\n            index += CodeBlock.TAB.length;\n          } else {\n            length += CodeBlock.TAB.length;\n          }\n        } else if (line.startsWith(CodeBlock.TAB)) {\n          block.deleteAt(start + offset, CodeBlock.TAB.length);\n          offset -= CodeBlock.TAB.length;\n          if (i === 0) {\n            index -= CodeBlock.TAB.length;\n          } else {\n            length -= CodeBlock.TAB.length;\n          }\n        }\n        offset += line.length + 1;\n      });\n      this.quill.update(_quill2.default.sources.USER);\n      this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n    }\n  };\n}\n\nfunction makeFormatHandler(format) {\n  return {\n    key: format[0].toUpperCase(),\n    shortKey: true,\n    handler: function handler(range, context) {\n      this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n    }\n  };\n}\n\nfunction normalize(binding) {\n  if (typeof binding === 'string' || typeof binding === 'number') {\n    return normalize({ key: binding });\n  }\n  if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n    binding = (0, _clone2.default)(binding, false);\n  }\n  if (typeof binding.key === 'string') {\n    if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n      binding.key = Keyboard.keys[binding.key.toUpperCase()];\n    } else if (binding.key.length === 1) {\n      binding.key = binding.key.toUpperCase().charCodeAt(0);\n    } else {\n      return null;\n    }\n  }\n  if (binding.shortKey) {\n    binding[SHORTKEY] = binding.shortKey;\n    delete binding.shortKey;\n  }\n  return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n  _inherits(Cursor, _Parchment$Embed);\n\n  _createClass(Cursor, null, [{\n    key: 'value',\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  function Cursor(domNode, selection) {\n    _classCallCheck(this, Cursor);\n\n    var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n    _this.selection = selection;\n    _this.textNode = document.createTextNode(Cursor.CONTENTS);\n    _this.domNode.appendChild(_this.textNode);\n    _this._length = 0;\n    return _this;\n  }\n\n  _createClass(Cursor, [{\n    key: 'detach',\n    value: function detach() {\n      // super.detach() will also clear domNode.__blot\n      if (this.parent != null) this.parent.removeChild(this);\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      if (this._length !== 0) {\n        return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n      }\n      var target = this,\n          index = 0;\n      while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n        index += target.offset(target.parent);\n        target = target.parent;\n      }\n      if (target != null) {\n        this._length = Cursor.CONTENTS.length;\n        target.optimize();\n        target.formatAt(index, Cursor.CONTENTS.length, name, value);\n        this._length = 0;\n      }\n    }\n  }, {\n    key: 'index',\n    value: function index(node, offset) {\n      if (node === this.textNode) return 0;\n      return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      return this._length;\n    }\n  }, {\n    key: 'position',\n    value: function position() {\n      return [this.textNode, this.textNode.data.length];\n    }\n  }, {\n    key: 'remove',\n    value: function remove() {\n      _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n      this.parent = null;\n    }\n  }, {\n    key: 'restore',\n    value: function restore() {\n      if (this.selection.composing || this.parent == null) return;\n      var textNode = this.textNode;\n      var range = this.selection.getNativeRange();\n      var restoreText = void 0,\n          start = void 0,\n          end = void 0;\n      if (range != null && range.start.node === textNode && range.end.node === textNode) {\n        var _ref = [textNode, range.start.offset, range.end.offset];\n        restoreText = _ref[0];\n        start = _ref[1];\n        end = _ref[2];\n      }\n      // Link format will insert text outside of anchor tag\n      while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n        this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n      }\n      if (this.textNode.data !== Cursor.CONTENTS) {\n        var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n        if (this.next instanceof _text2.default) {\n          restoreText = this.next.domNode;\n          this.next.insertAt(0, text);\n          this.textNode.data = Cursor.CONTENTS;\n        } else {\n          this.textNode.data = text;\n          this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n          this.textNode = document.createTextNode(Cursor.CONTENTS);\n          this.domNode.appendChild(this.textNode);\n        }\n      }\n      this.remove();\n      if (start != null) {\n        var _map = [start, end].map(function (offset) {\n          return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n        });\n\n        var _map2 = _slicedToArray(_map, 2);\n\n        start = _map2[0];\n        end = _map2[1];\n\n        return {\n          startNode: restoreText,\n          startOffset: start,\n          endNode: restoreText,\n          endOffset: end\n        };\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      if (mutations.some(function (mutation) {\n        return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n      })) {\n        var range = this.restore();\n        if (range) context.range = range;\n      }\n    }\n  }, {\n    key: 'value',\n    value: function value() {\n      return '';\n    }\n  }]);\n\n  return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n  _inherits(Container, _Parchment$Container);\n\n  function Container() {\n    _classCallCheck(this, Container);\n\n    return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n  }\n\n  return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n  _inherits(ColorAttributor, _Parchment$Attributor);\n\n  function ColorAttributor() {\n    _classCallCheck(this, ColorAttributor);\n\n    return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n  }\n\n  _createClass(ColorAttributor, [{\n    key: 'value',\n    value: function value(domNode) {\n      var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n      if (!value.startsWith('rgb(')) return value;\n      value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n      return '#' + value.split(',').map(function (component) {\n        return ('00' + parseInt(component).toString(16)).slice(-2);\n      }).join('');\n    }\n  }]);\n\n  return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n  scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Link = function (_Inline) {\n  _inherits(Link, _Inline);\n\n  function Link() {\n    _classCallCheck(this, Link);\n\n    return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n  }\n\n  _createClass(Link, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n      value = this.constructor.sanitize(value);\n      this.domNode.setAttribute('href', value);\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n      value = this.sanitize(value);\n      node.setAttribute('href', value);\n      node.setAttribute('rel', 'noopener noreferrer');\n      node.setAttribute('target', '_blank');\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return domNode.getAttribute('href');\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n    }\n  }]);\n\n  return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n  var anchor = document.createElement('a');\n  anchor.href = url;\n  var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n  return protocols.indexOf(protocol) > -1;\n}\n\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _dropdown = __webpack_require__(107);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n  element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nvar Picker = function () {\n  function Picker(select) {\n    var _this = this;\n\n    _classCallCheck(this, Picker);\n\n    this.select = select;\n    this.container = document.createElement('span');\n    this.buildPicker();\n    this.select.style.display = 'none';\n    this.select.parentNode.insertBefore(this.container, this.select);\n\n    this.label.addEventListener('mousedown', function () {\n      _this.togglePicker();\n    });\n    this.label.addEventListener('keydown', function (event) {\n      switch (event.keyCode) {\n        // Allows the \"Enter\" key to open the picker\n        case _keyboard2.default.keys.ENTER:\n          _this.togglePicker();\n          break;\n\n        // Allows the \"Escape\" key to close the picker\n        case _keyboard2.default.keys.ESCAPE:\n          _this.escape();\n          event.preventDefault();\n          break;\n        default:\n      }\n    });\n    this.select.addEventListener('change', this.update.bind(this));\n  }\n\n  _createClass(Picker, [{\n    key: 'togglePicker',\n    value: function togglePicker() {\n      this.container.classList.toggle('ql-expanded');\n      // Toggle aria-expanded and aria-hidden to make the picker accessible\n      toggleAriaAttribute(this.label, 'aria-expanded');\n      toggleAriaAttribute(this.options, 'aria-hidden');\n    }\n  }, {\n    key: 'buildItem',\n    value: function buildItem(option) {\n      var _this2 = this;\n\n      var item = document.createElement('span');\n      item.tabIndex = '0';\n      item.setAttribute('role', 'button');\n\n      item.classList.add('ql-picker-item');\n      if (option.hasAttribute('value')) {\n        item.setAttribute('data-value', option.getAttribute('value'));\n      }\n      if (option.textContent) {\n        item.setAttribute('data-label', option.textContent);\n      }\n      item.addEventListener('click', function () {\n        _this2.selectItem(item, true);\n      });\n      item.addEventListener('keydown', function (event) {\n        switch (event.keyCode) {\n          // Allows the \"Enter\" key to select an item\n          case _keyboard2.default.keys.ENTER:\n            _this2.selectItem(item, true);\n            event.preventDefault();\n            break;\n\n          // Allows the \"Escape\" key to close the picker\n          case _keyboard2.default.keys.ESCAPE:\n            _this2.escape();\n            event.preventDefault();\n            break;\n          default:\n        }\n      });\n\n      return item;\n    }\n  }, {\n    key: 'buildLabel',\n    value: function buildLabel() {\n      var label = document.createElement('span');\n      label.classList.add('ql-picker-label');\n      label.innerHTML = _dropdown2.default;\n      label.tabIndex = '0';\n      label.setAttribute('role', 'button');\n      label.setAttribute('aria-expanded', 'false');\n      this.container.appendChild(label);\n      return label;\n    }\n  }, {\n    key: 'buildOptions',\n    value: function buildOptions() {\n      var _this3 = this;\n\n      var options = document.createElement('span');\n      options.classList.add('ql-picker-options');\n\n      // Don't want screen readers to read this until options are visible\n      options.setAttribute('aria-hidden', 'true');\n      options.tabIndex = '-1';\n\n      // Need a unique id for aria-controls\n      options.id = 'ql-picker-options-' + optionsCounter;\n      optionsCounter += 1;\n      this.label.setAttribute('aria-controls', options.id);\n\n      this.options = options;\n\n      [].slice.call(this.select.options).forEach(function (option) {\n        var item = _this3.buildItem(option);\n        options.appendChild(item);\n        if (option.selected === true) {\n          _this3.selectItem(item);\n        }\n      });\n      this.container.appendChild(options);\n    }\n  }, {\n    key: 'buildPicker',\n    value: function buildPicker() {\n      var _this4 = this;\n\n      [].slice.call(this.select.attributes).forEach(function (item) {\n        _this4.container.setAttribute(item.name, item.value);\n      });\n      this.container.classList.add('ql-picker');\n      this.label = this.buildLabel();\n      this.buildOptions();\n    }\n  }, {\n    key: 'escape',\n    value: function escape() {\n      var _this5 = this;\n\n      // Close menu and return focus to trigger label\n      this.close();\n      // Need setTimeout for accessibility to ensure that the browser executes\n      // focus on the next process thread and after any DOM content changes\n      setTimeout(function () {\n        return _this5.label.focus();\n      }, 1);\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      this.container.classList.remove('ql-expanded');\n      this.label.setAttribute('aria-expanded', 'false');\n      this.options.setAttribute('aria-hidden', 'true');\n    }\n  }, {\n    key: 'selectItem',\n    value: function selectItem(item) {\n      var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var selected = this.container.querySelector('.ql-selected');\n      if (item === selected) return;\n      if (selected != null) {\n        selected.classList.remove('ql-selected');\n      }\n      if (item == null) return;\n      item.classList.add('ql-selected');\n      this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n      if (item.hasAttribute('data-value')) {\n        this.label.setAttribute('data-value', item.getAttribute('data-value'));\n      } else {\n        this.label.removeAttribute('data-value');\n      }\n      if (item.hasAttribute('data-label')) {\n        this.label.setAttribute('data-label', item.getAttribute('data-label'));\n      } else {\n        this.label.removeAttribute('data-label');\n      }\n      if (trigger) {\n        if (typeof Event === 'function') {\n          this.select.dispatchEvent(new Event('change'));\n        } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n          // IE11\n          var event = document.createEvent('Event');\n          event.initEvent('change', true, true);\n          this.select.dispatchEvent(event);\n        }\n        this.close();\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var option = void 0;\n      if (this.select.selectedIndex > -1) {\n        var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n        option = this.select.options[this.select.selectedIndex];\n        this.selectItem(item);\n      } else {\n        this.selectItem(null);\n      }\n      var isActive = option != null && option !== this.select.querySelector('option[selected]');\n      this.label.classList.toggle('ql-active', isActive);\n    }\n  }]);\n\n  return Picker;\n}();\n\nexports.default = Picker;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(22);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(55);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n  'blots/block': _block2.default,\n  'blots/block/embed': _block.BlockEmbed,\n  'blots/break': _break2.default,\n  'blots/container': _container2.default,\n  'blots/cursor': _cursor2.default,\n  'blots/embed': _embed2.default,\n  'blots/inline': _inline2.default,\n  'blots/scroll': _scroll2.default,\n  'blots/text': _text2.default,\n\n  'modules/clipboard': _clipboard2.default,\n  'modules/history': _history2.default,\n  'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n    function ShadowBlot(domNode) {\n        this.domNode = domNode;\n        // @ts-ignore\n        this.domNode[Registry.DATA_KEY] = { blot: this };\n    }\n    Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n        // Hack for accessing inherited static methods\n        get: function () {\n            return this.constructor;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ShadowBlot.create = function (value) {\n        if (this.tagName == null) {\n            throw new Registry.ParchmentError('Blot definition missing tagName');\n        }\n        var node;\n        if (Array.isArray(this.tagName)) {\n            if (typeof value === 'string') {\n                value = value.toUpperCase();\n                if (parseInt(value).toString() === value) {\n                    value = parseInt(value);\n                }\n            }\n            if (typeof value === 'number') {\n                node = document.createElement(this.tagName[value - 1]);\n            }\n            else if (this.tagName.indexOf(value) > -1) {\n                node = document.createElement(value);\n            }\n            else {\n                node = document.createElement(this.tagName[0]);\n            }\n        }\n        else {\n            node = document.createElement(this.tagName);\n        }\n        if (this.className) {\n            node.classList.add(this.className);\n        }\n        return node;\n    };\n    ShadowBlot.prototype.attach = function () {\n        if (this.parent != null) {\n            this.scroll = this.parent.scroll;\n        }\n    };\n    ShadowBlot.prototype.clone = function () {\n        var domNode = this.domNode.cloneNode(false);\n        return Registry.create(domNode);\n    };\n    ShadowBlot.prototype.detach = function () {\n        if (this.parent != null)\n            this.parent.removeChild(this);\n        // @ts-ignore\n        delete this.domNode[Registry.DATA_KEY];\n    };\n    ShadowBlot.prototype.deleteAt = function (index, length) {\n        var blot = this.isolate(index, length);\n        blot.remove();\n    };\n    ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n        var blot = this.isolate(index, length);\n        if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n            blot.wrap(name, value);\n        }\n        else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n            var parent = Registry.create(this.statics.scope);\n            blot.wrap(parent);\n            parent.format(name, value);\n        }\n    };\n    ShadowBlot.prototype.insertAt = function (index, value, def) {\n        var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n        var ref = this.split(index);\n        this.parent.insertBefore(blot, ref);\n    };\n    ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n        if (refBlot === void 0) { refBlot = null; }\n        if (this.parent != null) {\n            this.parent.children.remove(this);\n        }\n        var refDomNode = null;\n        parentBlot.children.insertBefore(this, refBlot);\n        if (refBlot != null) {\n            refDomNode = refBlot.domNode;\n        }\n        if (this.domNode.parentNode != parentBlot.domNode ||\n            this.domNode.nextSibling != refDomNode) {\n            parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n        }\n        this.parent = parentBlot;\n        this.attach();\n    };\n    ShadowBlot.prototype.isolate = function (index, length) {\n        var target = this.split(index);\n        target.split(length);\n        return target;\n    };\n    ShadowBlot.prototype.length = function () {\n        return 1;\n    };\n    ShadowBlot.prototype.offset = function (root) {\n        if (root === void 0) { root = this.parent; }\n        if (this.parent == null || this == root)\n            return 0;\n        return this.parent.children.offset(this) + this.parent.offset(root);\n    };\n    ShadowBlot.prototype.optimize = function (context) {\n        // TODO clean up once we use WeakMap\n        // @ts-ignore\n        if (this.domNode[Registry.DATA_KEY] != null) {\n            // @ts-ignore\n            delete this.domNode[Registry.DATA_KEY].mutations;\n        }\n    };\n    ShadowBlot.prototype.remove = function () {\n        if (this.domNode.parentNode != null) {\n            this.domNode.parentNode.removeChild(this.domNode);\n        }\n        this.detach();\n    };\n    ShadowBlot.prototype.replace = function (target) {\n        if (target.parent == null)\n            return;\n        target.parent.insertBefore(this, target.next);\n        target.remove();\n    };\n    ShadowBlot.prototype.replaceWith = function (name, value) {\n        var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n        replacement.replace(this);\n        return replacement;\n    };\n    ShadowBlot.prototype.split = function (index, force) {\n        return index === 0 ? this : this.next;\n    };\n    ShadowBlot.prototype.update = function (mutations, context) {\n        // Nothing to do by default\n    };\n    ShadowBlot.prototype.wrap = function (name, value) {\n        var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n        if (this.parent != null) {\n            this.parent.insertBefore(wrapper, this.next);\n        }\n        wrapper.appendChild(this);\n        return wrapper;\n    };\n    ShadowBlot.blotName = 'abstract';\n    return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n    function AttributorStore(domNode) {\n        this.attributes = {};\n        this.domNode = domNode;\n        this.build();\n    }\n    AttributorStore.prototype.attribute = function (attribute, value) {\n        // verb\n        if (value) {\n            if (attribute.add(this.domNode, value)) {\n                if (attribute.value(this.domNode) != null) {\n                    this.attributes[attribute.attrName] = attribute;\n                }\n                else {\n                    delete this.attributes[attribute.attrName];\n                }\n            }\n        }\n        else {\n            attribute.remove(this.domNode);\n            delete this.attributes[attribute.attrName];\n        }\n    };\n    AttributorStore.prototype.build = function () {\n        var _this = this;\n        this.attributes = {};\n        var attributes = attributor_1.default.keys(this.domNode);\n        var classes = class_1.default.keys(this.domNode);\n        var styles = style_1.default.keys(this.domNode);\n        attributes\n            .concat(classes)\n            .concat(styles)\n            .forEach(function (name) {\n            var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n            if (attr instanceof attributor_1.default) {\n                _this.attributes[attr.attrName] = attr;\n            }\n        });\n    };\n    AttributorStore.prototype.copy = function (target) {\n        var _this = this;\n        Object.keys(this.attributes).forEach(function (key) {\n            var value = _this.attributes[key].value(_this.domNode);\n            target.format(key, value);\n        });\n    };\n    AttributorStore.prototype.move = function (target) {\n        var _this = this;\n        this.copy(target);\n        Object.keys(this.attributes).forEach(function (key) {\n            _this.attributes[key].remove(_this.domNode);\n        });\n        this.attributes = {};\n    };\n    AttributorStore.prototype.values = function () {\n        var _this = this;\n        return Object.keys(this.attributes).reduce(function (attributes, name) {\n            attributes[name] = _this.attributes[name].value(_this.domNode);\n            return attributes;\n        }, {});\n    };\n    return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction match(node, prefix) {\n    var className = node.getAttribute('class') || '';\n    return className.split(/\\s+/).filter(function (name) {\n        return name.indexOf(prefix + \"-\") === 0;\n    });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n    __extends(ClassAttributor, _super);\n    function ClassAttributor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ClassAttributor.keys = function (node) {\n        return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n            return name\n                .split('-')\n                .slice(0, -1)\n                .join('-');\n        });\n    };\n    ClassAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        this.remove(node);\n        node.classList.add(this.keyName + \"-\" + value);\n        return true;\n    };\n    ClassAttributor.prototype.remove = function (node) {\n        var matches = match(node, this.keyName);\n        matches.forEach(function (name) {\n            node.classList.remove(name);\n        });\n        if (node.classList.length === 0) {\n            node.removeAttribute('class');\n        }\n    };\n    ClassAttributor.prototype.value = function (node) {\n        var result = match(node, this.keyName)[0] || '';\n        var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n        return this.canAdd(node, value) ? value : '';\n    };\n    return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction camelize(name) {\n    var parts = name.split('-');\n    var rest = parts\n        .slice(1)\n        .map(function (part) {\n        return part[0].toUpperCase() + part.slice(1);\n    })\n        .join('');\n    return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n    __extends(StyleAttributor, _super);\n    function StyleAttributor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    StyleAttributor.keys = function (node) {\n        return (node.getAttribute('style') || '').split(';').map(function (value) {\n            var arr = value.split(':');\n            return arr[0].trim();\n        });\n    };\n    StyleAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        // @ts-ignore\n        node.style[camelize(this.keyName)] = value;\n        return true;\n    };\n    StyleAttributor.prototype.remove = function (node) {\n        // @ts-ignore\n        node.style[camelize(this.keyName)] = '';\n        if (!node.getAttribute('style')) {\n            node.removeAttribute('style');\n        }\n    };\n    StyleAttributor.prototype.value = function (node) {\n        // @ts-ignore\n        var value = node.style[camelize(this.keyName)];\n        return this.canAdd(node, value) ? value : '';\n    };\n    return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n  function Theme(quill, options) {\n    _classCallCheck(this, Theme);\n\n    this.quill = quill;\n    this.options = options;\n    this.modules = {};\n  }\n\n  _createClass(Theme, [{\n    key: 'init',\n    value: function init() {\n      var _this = this;\n\n      Object.keys(this.options.modules).forEach(function (name) {\n        if (_this.modules[name] == null) {\n          _this.addModule(name);\n        }\n      });\n    }\n  }, {\n    key: 'addModule',\n    value: function addModule(name) {\n      var moduleClass = this.quill.constructor.import('modules/' + name);\n      this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n      return this.modules[name];\n    }\n  }]);\n\n  return Theme;\n}();\n\nTheme.DEFAULTS = {\n  modules: {}\n};\nTheme.themes = {\n  'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n  _inherits(Embed, _Parchment$Embed);\n\n  function Embed(node) {\n    _classCallCheck(this, Embed);\n\n    var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n    _this.contentNode = document.createElement('span');\n    _this.contentNode.setAttribute('contenteditable', false);\n    [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n      _this.contentNode.appendChild(childNode);\n    });\n    _this.leftGuard = document.createTextNode(GUARD_TEXT);\n    _this.rightGuard = document.createTextNode(GUARD_TEXT);\n    _this.domNode.appendChild(_this.leftGuard);\n    _this.domNode.appendChild(_this.contentNode);\n    _this.domNode.appendChild(_this.rightGuard);\n    return _this;\n  }\n\n  _createClass(Embed, [{\n    key: 'index',\n    value: function index(node, offset) {\n      if (node === this.leftGuard) return 0;\n      if (node === this.rightGuard) return 1;\n      return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n    }\n  }, {\n    key: 'restore',\n    value: function restore(node) {\n      var range = void 0,\n          textNode = void 0;\n      var text = node.data.split(GUARD_TEXT).join('');\n      if (node === this.leftGuard) {\n        if (this.prev instanceof _text2.default) {\n          var prevLength = this.prev.length();\n          this.prev.insertAt(prevLength, text);\n          range = {\n            startNode: this.prev.domNode,\n            startOffset: prevLength + text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(_parchment2.default.create(textNode), this);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      } else if (node === this.rightGuard) {\n        if (this.next instanceof _text2.default) {\n          this.next.insertAt(0, text);\n          range = {\n            startNode: this.next.domNode,\n            startOffset: text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      }\n      node.data = GUARD_TEXT;\n      return range;\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      mutations.forEach(function (mutation) {\n        if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n          var range = _this2.restore(mutation.target);\n          if (range) context.range = range;\n        }\n      });\n    }\n  }]);\n\n  return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n  scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n  _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n  function FontStyleAttributor() {\n    _classCallCheck(this, FontStyleAttributor);\n\n    return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n  }\n\n  _createClass(FontStyleAttributor, [{\n    key: 'value',\n    value: function value(node) {\n      return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n    }\n  }]);\n\n  return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n  'align': {\n    '': __webpack_require__(76),\n    'center': __webpack_require__(77),\n    'right': __webpack_require__(78),\n    'justify': __webpack_require__(79)\n  },\n  'background': __webpack_require__(80),\n  'blockquote': __webpack_require__(81),\n  'bold': __webpack_require__(82),\n  'clean': __webpack_require__(83),\n  'code': __webpack_require__(58),\n  'code-block': __webpack_require__(58),\n  'color': __webpack_require__(84),\n  'direction': {\n    '': __webpack_require__(85),\n    'rtl': __webpack_require__(86)\n  },\n  'float': {\n    'center': __webpack_require__(87),\n    'full': __webpack_require__(88),\n    'left': __webpack_require__(89),\n    'right': __webpack_require__(90)\n  },\n  'formula': __webpack_require__(91),\n  'header': {\n    '1': __webpack_require__(92),\n    '2': __webpack_require__(93)\n  },\n  'italic': __webpack_require__(94),\n  'image': __webpack_require__(95),\n  'indent': {\n    '+1': __webpack_require__(96),\n    '-1': __webpack_require__(97)\n  },\n  'link': __webpack_require__(98),\n  'list': {\n    'ordered': __webpack_require__(99),\n    'bullet': __webpack_require__(100),\n    'check': __webpack_require__(101)\n  },\n  'script': {\n    'sub': __webpack_require__(102),\n    'super': __webpack_require__(103)\n  },\n  'strike': __webpack_require__(104),\n  'underline': __webpack_require__(105),\n  'video': __webpack_require__(106)\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n  _inherits(History, _Module);\n\n  function History(quill, options) {\n    _classCallCheck(this, History);\n\n    var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n    _this.lastRecorded = 0;\n    _this.ignoreChange = false;\n    _this.clear();\n    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n      if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n      if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n        _this.record(delta, oldDelta);\n      } else {\n        _this.transform(delta);\n      }\n    });\n    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n    if (/Win/i.test(navigator.platform)) {\n      _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n    }\n    return _this;\n  }\n\n  _createClass(History, [{\n    key: 'change',\n    value: function change(source, dest) {\n      if (this.stack[source].length === 0) return;\n      var delta = this.stack[source].pop();\n      this.stack[dest].push(delta);\n      this.lastRecorded = 0;\n      this.ignoreChange = true;\n      this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n      this.ignoreChange = false;\n      var index = getLastChangeIndex(delta[source]);\n      this.quill.setSelection(index);\n    }\n  }, {\n    key: 'clear',\n    value: function clear() {\n      this.stack = { undo: [], redo: [] };\n    }\n  }, {\n    key: 'cutoff',\n    value: function cutoff() {\n      this.lastRecorded = 0;\n    }\n  }, {\n    key: 'record',\n    value: function record(changeDelta, oldDelta) {\n      if (changeDelta.ops.length === 0) return;\n      this.stack.redo = [];\n      var undoDelta = this.quill.getContents().diff(oldDelta);\n      var timestamp = Date.now();\n      if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n        var delta = this.stack.undo.pop();\n        undoDelta = undoDelta.compose(delta.undo);\n        changeDelta = delta.redo.compose(changeDelta);\n      } else {\n        this.lastRecorded = timestamp;\n      }\n      this.stack.undo.push({\n        redo: changeDelta,\n        undo: undoDelta\n      });\n      if (this.stack.undo.length > this.options.maxStack) {\n        this.stack.undo.shift();\n      }\n    }\n  }, {\n    key: 'redo',\n    value: function redo() {\n      this.change('redo', 'undo');\n    }\n  }, {\n    key: 'transform',\n    value: function transform(delta) {\n      this.stack.undo.forEach(function (change) {\n        change.undo = delta.transform(change.undo, true);\n        change.redo = delta.transform(change.redo, true);\n      });\n      this.stack.redo.forEach(function (change) {\n        change.undo = delta.transform(change.undo, true);\n        change.redo = delta.transform(change.redo, true);\n      });\n    }\n  }, {\n    key: 'undo',\n    value: function undo() {\n      this.change('undo', 'redo');\n    }\n  }]);\n\n  return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n  delay: 1000,\n  maxStack: 100,\n  userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n  var lastOp = delta.ops[delta.ops.length - 1];\n  if (lastOp == null) return false;\n  if (lastOp.insert != null) {\n    return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n  }\n  if (lastOp.attributes != null) {\n    return Object.keys(lastOp.attributes).some(function (attr) {\n      return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n    });\n  }\n  return false;\n}\n\nfunction getLastChangeIndex(delta) {\n  var deleteLength = delta.reduce(function (length, op) {\n    length += op.delete || 0;\n    return length;\n  }, 0);\n  var changeIndex = delta.length() - deleteLength;\n  if (endsWithNewlineChange(delta)) {\n    changeIndex -= 1;\n  }\n  return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar BaseTheme = function (_Theme) {\n  _inherits(BaseTheme, _Theme);\n\n  function BaseTheme(quill, options) {\n    _classCallCheck(this, BaseTheme);\n\n    var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n    var listener = function listener(e) {\n      if (!document.body.contains(quill.root)) {\n        return document.body.removeEventListener('click', listener);\n      }\n      if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n        _this.tooltip.hide();\n      }\n      if (_this.pickers != null) {\n        _this.pickers.forEach(function (picker) {\n          if (!picker.container.contains(e.target)) {\n            picker.close();\n          }\n        });\n      }\n    };\n    quill.emitter.listenDOM('click', document.body, listener);\n    return _this;\n  }\n\n  _createClass(BaseTheme, [{\n    key: 'addModule',\n    value: function addModule(name) {\n      var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n      if (name === 'toolbar') {\n        this.extendToolbar(module);\n      }\n      return module;\n    }\n  }, {\n    key: 'buildButtons',\n    value: function buildButtons(buttons, icons) {\n      buttons.forEach(function (button) {\n        var className = button.getAttribute('class') || '';\n        className.split(/\\s+/).forEach(function (name) {\n          if (!name.startsWith('ql-')) return;\n          name = name.slice('ql-'.length);\n          if (icons[name] == null) return;\n          if (name === 'direction') {\n            button.innerHTML = icons[name][''] + icons[name]['rtl'];\n          } else if (typeof icons[name] === 'string') {\n            button.innerHTML = icons[name];\n          } else {\n            var value = button.value || '';\n            if (value != null && icons[name][value]) {\n              button.innerHTML = icons[name][value];\n            }\n          }\n        });\n      });\n    }\n  }, {\n    key: 'buildPickers',\n    value: function buildPickers(selects, icons) {\n      var _this2 = this;\n\n      this.pickers = selects.map(function (select) {\n        if (select.classList.contains('ql-align')) {\n          if (select.querySelector('option') == null) {\n            fillSelect(select, ALIGNS);\n          }\n          return new _iconPicker2.default(select, icons.align);\n        } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n          var format = select.classList.contains('ql-background') ? 'background' : 'color';\n          if (select.querySelector('option') == null) {\n            fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n          }\n          return new _colorPicker2.default(select, icons[format]);\n        } else {\n          if (select.querySelector('option') == null) {\n            if (select.classList.contains('ql-font')) {\n              fillSelect(select, FONTS);\n            } else if (select.classList.contains('ql-header')) {\n              fillSelect(select, HEADERS);\n            } else if (select.classList.contains('ql-size')) {\n              fillSelect(select, SIZES);\n            }\n          }\n          return new _picker2.default(select);\n        }\n      });\n      var update = function update() {\n        _this2.pickers.forEach(function (picker) {\n          picker.update();\n        });\n      };\n      this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n    }\n  }]);\n\n  return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        formula: function formula() {\n          this.quill.theme.tooltip.edit('formula');\n        },\n        image: function image() {\n          var _this3 = this;\n\n          var fileInput = this.container.querySelector('input.ql-image[type=file]');\n          if (fileInput == null) {\n            fileInput = document.createElement('input');\n            fileInput.setAttribute('type', 'file');\n            fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n            fileInput.classList.add('ql-image');\n            fileInput.addEventListener('change', function () {\n              if (fileInput.files != null && fileInput.files[0] != null) {\n                var reader = new FileReader();\n                reader.onload = function (e) {\n                  var range = _this3.quill.getSelection(true);\n                  _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n                  _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n                  fileInput.value = \"\";\n                };\n                reader.readAsDataURL(fileInput.files[0]);\n              }\n            });\n            this.container.appendChild(fileInput);\n          }\n          fileInput.click();\n        },\n        video: function video() {\n          this.quill.theme.tooltip.edit('video');\n        }\n      }\n    }\n  }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n  _inherits(BaseTooltip, _Tooltip);\n\n  function BaseTooltip(quill, boundsContainer) {\n    _classCallCheck(this, BaseTooltip);\n\n    var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n    _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n    _this4.listen();\n    return _this4;\n  }\n\n  _createClass(BaseTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this5 = this;\n\n      this.textbox.addEventListener('keydown', function (event) {\n        if (_keyboard2.default.match(event, 'enter')) {\n          _this5.save();\n          event.preventDefault();\n        } else if (_keyboard2.default.match(event, 'escape')) {\n          _this5.cancel();\n          event.preventDefault();\n        }\n      });\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      this.hide();\n    }\n  }, {\n    key: 'edit',\n    value: function edit() {\n      var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n      var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      this.root.classList.remove('ql-hidden');\n      this.root.classList.add('ql-editing');\n      if (preview != null) {\n        this.textbox.value = preview;\n      } else if (mode !== this.root.getAttribute('data-mode')) {\n        this.textbox.value = '';\n      }\n      this.position(this.quill.getBounds(this.quill.selection.savedRange));\n      this.textbox.select();\n      this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n      this.root.setAttribute('data-mode', mode);\n    }\n  }, {\n    key: 'restoreFocus',\n    value: function restoreFocus() {\n      var scrollTop = this.quill.scrollingContainer.scrollTop;\n      this.quill.focus();\n      this.quill.scrollingContainer.scrollTop = scrollTop;\n    }\n  }, {\n    key: 'save',\n    value: function save() {\n      var value = this.textbox.value;\n      switch (this.root.getAttribute('data-mode')) {\n        case 'link':\n          {\n            var scrollTop = this.quill.root.scrollTop;\n            if (this.linkRange) {\n              this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n              delete this.linkRange;\n            } else {\n              this.restoreFocus();\n              this.quill.format('link', value, _emitter2.default.sources.USER);\n            }\n            this.quill.root.scrollTop = scrollTop;\n            break;\n          }\n        case 'video':\n          {\n            value = extractVideoUrl(value);\n          } // eslint-disable-next-line no-fallthrough\n        case 'formula':\n          {\n            if (!value) break;\n            var range = this.quill.getSelection(true);\n            if (range != null) {\n              var index = range.index + range.length;\n              this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n              if (this.root.getAttribute('data-mode') === 'formula') {\n                this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n              }\n              this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n            }\n            break;\n          }\n        default:\n      }\n      this.textbox.value = '';\n      this.hide();\n    }\n  }]);\n\n  return BaseTooltip;\n}(_tooltip2.default);\n\nfunction extractVideoUrl(url) {\n  var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n  if (match) {\n    return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n  }\n  if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n    // eslint-disable-line no-cond-assign\n    return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n  }\n  return url;\n}\n\nfunction fillSelect(select, values) {\n  var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  values.forEach(function (value) {\n    var option = document.createElement('option');\n    if (value === defaultValue) {\n      option.setAttribute('selected', 'selected');\n    } else {\n      option.setAttribute('value', value);\n    }\n    select.appendChild(option);\n  });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n    function LinkedList() {\n        this.head = this.tail = null;\n        this.length = 0;\n    }\n    LinkedList.prototype.append = function () {\n        var nodes = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            nodes[_i] = arguments[_i];\n        }\n        this.insertBefore(nodes[0], null);\n        if (nodes.length > 1) {\n            this.append.apply(this, nodes.slice(1));\n        }\n    };\n    LinkedList.prototype.contains = function (node) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            if (cur === node)\n                return true;\n        }\n        return false;\n    };\n    LinkedList.prototype.insertBefore = function (node, refNode) {\n        if (!node)\n            return;\n        node.next = refNode;\n        if (refNode != null) {\n            node.prev = refNode.prev;\n            if (refNode.prev != null) {\n                refNode.prev.next = node;\n            }\n            refNode.prev = node;\n            if (refNode === this.head) {\n                this.head = node;\n            }\n        }\n        else if (this.tail != null) {\n            this.tail.next = node;\n            node.prev = this.tail;\n            this.tail = node;\n        }\n        else {\n            node.prev = null;\n            this.head = this.tail = node;\n        }\n        this.length += 1;\n    };\n    LinkedList.prototype.offset = function (target) {\n        var index = 0, cur = this.head;\n        while (cur != null) {\n            if (cur === target)\n                return index;\n            index += cur.length();\n            cur = cur.next;\n        }\n        return -1;\n    };\n    LinkedList.prototype.remove = function (node) {\n        if (!this.contains(node))\n            return;\n        if (node.prev != null)\n            node.prev.next = node.next;\n        if (node.next != null)\n            node.next.prev = node.prev;\n        if (node === this.head)\n            this.head = node.next;\n        if (node === this.tail)\n            this.tail = node.prev;\n        this.length -= 1;\n    };\n    LinkedList.prototype.iterator = function (curNode) {\n        if (curNode === void 0) { curNode = this.head; }\n        // TODO use yield when we can\n        return function () {\n            var ret = curNode;\n            if (curNode != null)\n                curNode = curNode.next;\n            return ret;\n        };\n    };\n    LinkedList.prototype.find = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            var length = cur.length();\n            if (index < length ||\n                (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n                return [cur, index];\n            }\n            index -= length;\n        }\n        return [null, 0];\n    };\n    LinkedList.prototype.forEach = function (callback) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            callback(cur);\n        }\n    };\n    LinkedList.prototype.forEachAt = function (index, length, callback) {\n        if (length <= 0)\n            return;\n        var _a = this.find(index), startNode = _a[0], offset = _a[1];\n        var cur, curIndex = index - offset, next = this.iterator(startNode);\n        while ((cur = next()) && curIndex < index + length) {\n            var curLength = cur.length();\n            if (index > curIndex) {\n                callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n            }\n            else {\n                callback(cur, 0, Math.min(curLength, index + length - curIndex));\n            }\n            curIndex += curLength;\n        }\n    };\n    LinkedList.prototype.map = function (callback) {\n        return this.reduce(function (memo, cur) {\n            memo.push(callback(cur));\n            return memo;\n        }, []);\n    };\n    LinkedList.prototype.reduce = function (callback, memo) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            memo = callback(memo, cur);\n        }\n        return memo;\n    };\n    return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n    attributes: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n    __extends(ScrollBlot, _super);\n    function ScrollBlot(node) {\n        var _this = _super.call(this, node) || this;\n        _this.scroll = _this;\n        _this.observer = new MutationObserver(function (mutations) {\n            _this.update(mutations);\n        });\n        _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n        _this.attach();\n        return _this;\n    }\n    ScrollBlot.prototype.detach = function () {\n        _super.prototype.detach.call(this);\n        this.observer.disconnect();\n    };\n    ScrollBlot.prototype.deleteAt = function (index, length) {\n        this.update();\n        if (index === 0 && length === this.length()) {\n            this.children.forEach(function (child) {\n                child.remove();\n            });\n        }\n        else {\n            _super.prototype.deleteAt.call(this, index, length);\n        }\n    };\n    ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n        this.update();\n        _super.prototype.formatAt.call(this, index, length, name, value);\n    };\n    ScrollBlot.prototype.insertAt = function (index, value, def) {\n        this.update();\n        _super.prototype.insertAt.call(this, index, value, def);\n    };\n    ScrollBlot.prototype.optimize = function (mutations, context) {\n        var _this = this;\n        if (mutations === void 0) { mutations = []; }\n        if (context === void 0) { context = {}; }\n        _super.prototype.optimize.call(this, context);\n        // We must modify mutations directly, cannot make copy and then modify\n        var records = [].slice.call(this.observer.takeRecords());\n        // Array.push currently seems to be implemented by a non-tail recursive function\n        // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n        while (records.length > 0)\n            mutations.push(records.pop());\n        // TODO use WeakMap\n        var mark = function (blot, markParent) {\n            if (markParent === void 0) { markParent = true; }\n            if (blot == null || blot === _this)\n                return;\n            if (blot.domNode.parentNode == null)\n                return;\n            // @ts-ignore\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations = [];\n            }\n            if (markParent)\n                mark(blot.parent);\n        };\n        var optimize = function (blot) {\n            // Post-order traversal\n            if (\n            // @ts-ignore\n            blot.domNode[Registry.DATA_KEY] == null ||\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations == null) {\n                return;\n            }\n            if (blot instanceof container_1.default) {\n                blot.children.forEach(optimize);\n            }\n            blot.optimize(context);\n        };\n        var remaining = mutations;\n        for (var i = 0; remaining.length > 0; i += 1) {\n            if (i >= MAX_OPTIMIZE_ITERATIONS) {\n                throw new Error('[Parchment] Maximum optimize iterations reached');\n            }\n            remaining.forEach(function (mutation) {\n                var blot = Registry.find(mutation.target, true);\n                if (blot == null)\n                    return;\n                if (blot.domNode === mutation.target) {\n                    if (mutation.type === 'childList') {\n                        mark(Registry.find(mutation.previousSibling, false));\n                        [].forEach.call(mutation.addedNodes, function (node) {\n                            var child = Registry.find(node, false);\n                            mark(child, false);\n                            if (child instanceof container_1.default) {\n                                child.children.forEach(function (grandChild) {\n                                    mark(grandChild, false);\n                                });\n                            }\n                        });\n                    }\n                    else if (mutation.type === 'attributes') {\n                        mark(blot.prev);\n                    }\n                }\n                mark(blot);\n            });\n            this.children.forEach(optimize);\n            remaining = [].slice.call(this.observer.takeRecords());\n            records = remaining.slice();\n            while (records.length > 0)\n                mutations.push(records.pop());\n        }\n    };\n    ScrollBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        if (context === void 0) { context = {}; }\n        mutations = mutations || this.observer.takeRecords();\n        // TODO use WeakMap\n        mutations\n            .map(function (mutation) {\n            var blot = Registry.find(mutation.target, true);\n            if (blot == null)\n                return null;\n            // @ts-ignore\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n                return blot;\n            }\n            else {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n                return null;\n            }\n        })\n            .forEach(function (blot) {\n            if (blot == null ||\n                blot === _this ||\n                //@ts-ignore\n                blot.domNode[Registry.DATA_KEY] == null)\n                return;\n            // @ts-ignore\n            blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n        });\n        // @ts-ignore\n        if (this.domNode[Registry.DATA_KEY].mutations != null) {\n            // @ts-ignore\n            _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n        }\n        this.optimize(mutations, context);\n    };\n    ScrollBlot.blotName = 'scroll';\n    ScrollBlot.defaultChild = 'block';\n    ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n    ScrollBlot.tagName = 'DIV';\n    return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n    if (Object.keys(obj1).length !== Object.keys(obj2).length)\n        return false;\n    // @ts-ignore\n    for (var prop in obj1) {\n        // @ts-ignore\n        if (obj1[prop] !== obj2[prop])\n            return false;\n    }\n    return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n    __extends(InlineBlot, _super);\n    function InlineBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    InlineBlot.formats = function (domNode) {\n        if (domNode.tagName === InlineBlot.tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    InlineBlot.prototype.format = function (name, value) {\n        var _this = this;\n        if (name === this.statics.blotName && !value) {\n            this.children.forEach(function (child) {\n                if (!(child instanceof format_1.default)) {\n                    child = child.wrap(InlineBlot.blotName, true);\n                }\n                _this.attributes.copy(child);\n            });\n            this.unwrap();\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    InlineBlot.prototype.formatAt = function (index, length, name, value) {\n        if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n            var blot = this.isolate(index, length);\n            blot.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    InlineBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        var formats = this.formats();\n        if (Object.keys(formats).length === 0) {\n            return this.unwrap(); // unformatted span\n        }\n        var next = this.next;\n        if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n            next.moveChildren(this);\n            next.remove();\n        }\n    };\n    InlineBlot.blotName = 'inline';\n    InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n    InlineBlot.tagName = 'SPAN';\n    return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n    __extends(BlockBlot, _super);\n    function BlockBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    BlockBlot.formats = function (domNode) {\n        var tagName = Registry.query(BlockBlot.blotName).tagName;\n        if (domNode.tagName === tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    BlockBlot.prototype.format = function (name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n            return;\n        }\n        else if (name === this.statics.blotName && !value) {\n            this.replaceWith(BlockBlot.blotName);\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    BlockBlot.prototype.formatAt = function (index, length, name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    BlockBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n            // Insert text or inline\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n        else {\n            var after = this.split(index);\n            var blot = Registry.create(value, def);\n            after.parent.insertBefore(blot, after);\n        }\n    };\n    BlockBlot.prototype.update = function (mutations, context) {\n        if (navigator.userAgent.match(/Trident/)) {\n            this.build();\n        }\n        else {\n            _super.prototype.update.call(this, mutations, context);\n        }\n    };\n    BlockBlot.blotName = 'block';\n    BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n    BlockBlot.tagName = 'P';\n    return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n    __extends(EmbedBlot, _super);\n    function EmbedBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    EmbedBlot.formats = function (domNode) {\n        return undefined;\n    };\n    EmbedBlot.prototype.format = function (name, value) {\n        // super.formatAt wraps, which is what we want in general,\n        // but this allows subclasses to overwrite for formats\n        // that just apply to particular embeds\n        _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n    };\n    EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n        if (index === 0 && length === this.length()) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    EmbedBlot.prototype.formats = function () {\n        return this.statics.formats(this.domNode);\n    };\n    return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n    __extends(TextBlot, _super);\n    function TextBlot(node) {\n        var _this = _super.call(this, node) || this;\n        _this.text = _this.statics.value(_this.domNode);\n        return _this;\n    }\n    TextBlot.create = function (value) {\n        return document.createTextNode(value);\n    };\n    TextBlot.value = function (domNode) {\n        var text = domNode.data;\n        // @ts-ignore\n        if (text['normalize'])\n            text = text['normalize']();\n        return text;\n    };\n    TextBlot.prototype.deleteAt = function (index, length) {\n        this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n    };\n    TextBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node) {\n            return offset;\n        }\n        return -1;\n    };\n    TextBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null) {\n            this.text = this.text.slice(0, index) + value + this.text.slice(index);\n            this.domNode.data = this.text;\n        }\n        else {\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n    };\n    TextBlot.prototype.length = function () {\n        return this.text.length;\n    };\n    TextBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        this.text = this.statics.value(this.domNode);\n        if (this.text.length === 0) {\n            this.remove();\n        }\n        else if (this.next instanceof TextBlot && this.next.prev === this) {\n            this.insertAt(this.length(), this.next.value());\n            this.next.remove();\n        }\n    };\n    TextBlot.prototype.position = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        return [this.domNode, index];\n    };\n    TextBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = Registry.create(this.domNode.splitText(index));\n        this.parent.insertBefore(after, this.next);\n        this.text = this.statics.value(this.domNode);\n        return after;\n    };\n    TextBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        if (mutations.some(function (mutation) {\n            return mutation.type === 'characterData' && mutation.target === _this.domNode;\n        })) {\n            this.text = this.statics.value(this.domNode);\n        }\n    };\n    TextBlot.prototype.value = function () {\n        return this.text;\n    };\n    TextBlot.blotName = 'text';\n    TextBlot.scope = Registry.Scope.INLINE_BLOT;\n    return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n  var _toggle = DOMTokenList.prototype.toggle;\n  DOMTokenList.prototype.toggle = function (token, force) {\n    if (arguments.length > 1 && !this.contains(token) === !force) {\n      return force;\n    } else {\n      return _toggle.call(this, token);\n    }\n  };\n}\n\nif (!String.prototype.startsWith) {\n  String.prototype.startsWith = function (searchString, position) {\n    position = position || 0;\n    return this.substr(position, searchString.length) === searchString;\n  };\n}\n\nif (!String.prototype.endsWith) {\n  String.prototype.endsWith = function (searchString, position) {\n    var subjectString = this.toString();\n    if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n      position = subjectString.length;\n    }\n    position -= searchString.length;\n    var lastIndex = subjectString.indexOf(searchString, position);\n    return lastIndex !== -1 && lastIndex === position;\n  };\n}\n\nif (!Array.prototype.find) {\n  Object.defineProperty(Array.prototype, \"find\", {\n    value: function value(predicate) {\n      if (this === null) {\n        throw new TypeError('Array.prototype.find called on null or undefined');\n      }\n      if (typeof predicate !== 'function') {\n        throw new TypeError('predicate must be a function');\n      }\n      var list = Object(this);\n      var length = list.length >>> 0;\n      var thisArg = arguments[1];\n      var value;\n\n      for (var i = 0; i < length; i++) {\n        value = list[i];\n        if (predicate.call(thisArg, value, i, list)) {\n          return value;\n        }\n      }\n      return undefined;\n    }\n  });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  // Disable resizing in Firefox\n  document.execCommand(\"enableObjectResizing\", false, false);\n  // Disable automatic linkifying in IE11\n  document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts.  Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n  // Check for equality (speedup).\n  if (text1 == text2) {\n    if (text1) {\n      return [[DIFF_EQUAL, text1]];\n    }\n    return [];\n  }\n\n  // Check cursor_pos within bounds\n  if (cursor_pos < 0 || text1.length < cursor_pos) {\n    cursor_pos = null;\n  }\n\n  // Trim off common prefix (speedup).\n  var commonlength = diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = diff_compute_(text1, text2);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift([DIFF_EQUAL, commonprefix]);\n  }\n  if (commonsuffix) {\n    diffs.push([DIFF_EQUAL, commonsuffix]);\n  }\n  diff_cleanupMerge(diffs);\n  if (cursor_pos != null) {\n    diffs = fix_cursor(diffs, cursor_pos);\n  }\n  diffs = fix_emoji(diffs);\n  return diffs;\n};\n\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n  var diffs;\n\n  if (!text1) {\n    // Just add some text (speedup).\n    return [[DIFF_INSERT, text2]];\n  }\n\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [[DIFF_DELETE, text1]];\n  }\n\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i != -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n             [DIFF_EQUAL, shorttext],\n             [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n\n  if (shorttext.length == 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = diff_main(text1_a, text2_a);\n    var diffs_b = diff_main(text1_b, text2_b);\n    // Merge the results.\n    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n  }\n\n  return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = (delta % 2 != 0);\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (x1 < text1_length && y1 < text2_length &&\n             text1.charAt(x1) == text2.charAt(y1)) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (x2 < text1_length && y2 < text2_length &&\n             text1.charAt(text1_length - x2 - 1) ==\n             text2.charAt(text2_length - y2 - 1)) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = diff_main(text1a, text2a);\n  var diffsb = diff_main(text1b, text2b);\n\n  return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\nfunction diff_commonPrefix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(pointerstart, pointermid) ==\n        text2.substring(pointerstart, pointermid)) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 ||\n      text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n        text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null;  // Pointless.\n  }\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = '';\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n      var prefixLength = diff_commonPrefix(longtext.substring(i),\n                                           shorttext.substring(j));\n      var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n                                           shorttext.substring(0, j));\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext.substring(j - suffixLength, j) +\n            shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [best_longtext_a, best_longtext_b,\n              best_shorttext_a, best_shorttext_b, best_common];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 4));\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 2));\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n  diffs.push([DIFF_EQUAL, '']);  // Add a dummy entry at the end.\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if ((pointer - count_delete - count_insert) > 0 &&\n                  diffs[pointer - count_delete - count_insert - 1][0] ==\n                  DIFF_EQUAL) {\n                diffs[pointer - count_delete - count_insert - 1][1] +=\n                    text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(0, 0, [DIFF_EQUAL,\n                                    text_insert.substring(0, commonlength)]);\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixies.\n            commonlength = diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] = text_insert.substring(text_insert.length -\n                  commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(0, text_insert.length -\n                  commonlength);\n              text_delete = text_delete.substring(0, text_delete.length -\n                  commonlength);\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          if (count_delete === 0) {\n            diffs.splice(pointer - count_insert,\n                count_delete + count_insert, [DIFF_INSERT, text_insert]);\n          } else if (count_insert === 0) {\n            diffs.splice(pointer - count_delete,\n                count_delete + count_insert, [DIFF_DELETE, text_delete]);\n          } else {\n            diffs.splice(pointer - count_delete - count_insert,\n                count_delete + count_insert, [DIFF_DELETE, text_delete],\n                [DIFF_INSERT, text_insert]);\n          }\n          pointer = pointer - count_delete - count_insert +\n                    (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop();  // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n        diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      if (diffs[pointer][1].substring(diffs[pointer][1].length -\n          diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] = diffs[pointer - 1][1] +\n            diffs[pointer][1].substring(0, diffs[pointer][1].length -\n                                        diffs[pointer - 1][1].length);\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n          diffs[pointer + 1][1]) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n            diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n            diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n *   cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n *     => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n *   cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n *     => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n  if (cursor_pos === 0) {\n    return [DIFF_EQUAL, diffs];\n  }\n  for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n    var d = diffs[i];\n    if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n      var next_pos = current_pos + d[1].length;\n      if (cursor_pos === next_pos) {\n        return [i + 1, diffs];\n      } else if (cursor_pos < next_pos) {\n        // copy to prevent side effects\n        diffs = diffs.slice();\n        // split d into two diff changes\n        var split_pos = cursor_pos - current_pos;\n        var d_left = [d[0], d[1].slice(0, split_pos)];\n        var d_right = [d[0], d[1].slice(split_pos)];\n        diffs.splice(i, 1, d_left, d_right);\n        return [i + 1, diffs];\n      } else {\n        current_pos = next_pos;\n      }\n    }\n  }\n  throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n *   Check if a naive shift is possible:\n *     [0, X], [ 1, Y] -> [ 1, Y], [0, X]    (if X + Y === Y + X)\n *     [0, X], [-1, Y] -> [-1, Y], [0, X]    (if X + Y === Y + X) - holds same result\n * Case 2)\n *   Check if the following shifts are possible:\n *     [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n *     [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n *         ^            ^\n *         d          d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n  var norm = cursor_normalize_diff(diffs, cursor_pos);\n  var ndiffs = norm[1];\n  var cursor_pointer = norm[0];\n  var d = ndiffs[cursor_pointer];\n  var d_next = ndiffs[cursor_pointer + 1];\n\n  if (d == null) {\n    // Text was deleted from end of original string,\n    // cursor is now out of bounds in new string\n    return diffs;\n  } else if (d[0] !== DIFF_EQUAL) {\n    // A modification happened at the cursor location.\n    // This is the expected outcome, so we can return the original diff.\n    return diffs;\n  } else {\n    if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n      // Case 1)\n      // It is possible to perform a naive shift\n      ndiffs.splice(cursor_pointer, 2, d_next, d)\n      return merge_tuples(ndiffs, cursor_pointer, 2)\n    } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n      // Case 2)\n      // d[1] is a prefix of d_next[1]\n      // We can assume that d_next[0] !== 0, since d[0] === 0\n      // Shift edit locations..\n      ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n      var suffix = d_next[1].slice(d[1].length);\n      if (suffix.length > 0) {\n        ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n      }\n      return merge_tuples(ndiffs, cursor_pointer, 3)\n    } else {\n      // Not possible to perform any modification\n      return diffs;\n    }\n  }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n *     '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n  var compact = false;\n  var starts_with_pair_end = function(str) {\n    return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n  }\n  var ends_with_pair_start = function(str) {\n    return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n  }\n  for (var i = 2; i < diffs.length; i += 1) {\n    if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n        diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n        diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n      compact = true;\n\n      diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n      diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n      diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n    }\n  }\n  if (!compact) {\n    return diffs;\n  }\n  var fixed_diffs = [];\n  for (var i = 0; i < diffs.length; i += 1) {\n    if (diffs[i][1].length > 0) {\n      fixed_diffs.push(diffs[i]);\n    }\n  }\n  return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n  // Check from (start-1) to (start+length).\n  for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n    if (i + 1 < diffs.length) {\n      var left_d = diffs[i];\n      var right_d = diffs[i+1];\n      if (left_d[0] === right_d[1]) {\n        diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n      }\n    }\n  }\n  return diffs;\n}\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n  var evt = prefix ? prefix + event : event\n    , available = this._events[evt];\n\n  if (exists) return !!available;\n  if (!available) return [];\n  if (available.fn) return [available.fn];\n\n  for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n    ee[i] = available[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  var listener = new EE(fn, context || this)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  var listener = new EE(fn, context || this, true)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n         listeners.fn === fn\n      && (!once || listeners.once)\n      && (!context || listeners.context === context)\n    ) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n           listeners[i].fn !== fn\n        || (once && !listeners[i].once)\n        || (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n  return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(3);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n  _inherits(Clipboard, _Module);\n\n  function Clipboard(quill, options) {\n    _classCallCheck(this, Clipboard);\n\n    var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n    _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n    _this.container = _this.quill.addContainer('ql-clipboard');\n    _this.container.setAttribute('contenteditable', true);\n    _this.container.setAttribute('tabindex', -1);\n    _this.matchers = [];\n    CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          selector = _ref2[0],\n          matcher = _ref2[1];\n\n      if (!options.matchVisual && matcher === matchSpacing) return;\n      _this.addMatcher(selector, matcher);\n    });\n    return _this;\n  }\n\n  _createClass(Clipboard, [{\n    key: 'addMatcher',\n    value: function addMatcher(selector, matcher) {\n      this.matchers.push([selector, matcher]);\n    }\n  }, {\n    key: 'convert',\n    value: function convert(html) {\n      if (typeof html === 'string') {\n        this.container.innerHTML = html.replace(/\\>\\r?\\n +\\</g, '><'); // Remove spaces between tags\n        return this.convert();\n      }\n      var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n      if (formats[_code2.default.blotName]) {\n        var text = this.container.innerText;\n        this.container.innerHTML = '';\n        return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n      }\n\n      var _prepareMatching = this.prepareMatching(),\n          _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n          elementMatchers = _prepareMatching2[0],\n          textMatchers = _prepareMatching2[1];\n\n      var delta = traverse(this.container, elementMatchers, textMatchers);\n      // Remove trailing newline\n      if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n        delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n      }\n      debug.log('convert', this.container.innerHTML, delta);\n      this.container.innerHTML = '';\n      return delta;\n    }\n  }, {\n    key: 'dangerouslyPasteHTML',\n    value: function dangerouslyPasteHTML(index, html) {\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n      if (typeof index === 'string') {\n        this.quill.setContents(this.convert(index), html);\n        this.quill.setSelection(0, _quill2.default.sources.SILENT);\n      } else {\n        var paste = this.convert(html);\n        this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n        this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n      }\n    }\n  }, {\n    key: 'onPaste',\n    value: function onPaste(e) {\n      var _this2 = this;\n\n      if (e.defaultPrevented || !this.quill.isEnabled()) return;\n      var range = this.quill.getSelection();\n      var delta = new _quillDelta2.default().retain(range.index);\n      var scrollTop = this.quill.scrollingContainer.scrollTop;\n      this.container.focus();\n      this.quill.selection.update(_quill2.default.sources.SILENT);\n      setTimeout(function () {\n        delta = delta.concat(_this2.convert()).delete(range.length);\n        _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n        // range.length contributes to delta.length()\n        _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n        _this2.quill.scrollingContainer.scrollTop = scrollTop;\n        _this2.quill.focus();\n      }, 1);\n    }\n  }, {\n    key: 'prepareMatching',\n    value: function prepareMatching() {\n      var _this3 = this;\n\n      var elementMatchers = [],\n          textMatchers = [];\n      this.matchers.forEach(function (pair) {\n        var _pair = _slicedToArray(pair, 2),\n            selector = _pair[0],\n            matcher = _pair[1];\n\n        switch (selector) {\n          case Node.TEXT_NODE:\n            textMatchers.push(matcher);\n            break;\n          case Node.ELEMENT_NODE:\n            elementMatchers.push(matcher);\n            break;\n          default:\n            [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n              // TODO use weakmap\n              node[DOM_KEY] = node[DOM_KEY] || [];\n              node[DOM_KEY].push(matcher);\n            });\n            break;\n        }\n      });\n      return [elementMatchers, textMatchers];\n    }\n  }]);\n\n  return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n  matchers: [],\n  matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n  if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n    return Object.keys(format).reduce(function (delta, key) {\n      return applyFormat(delta, key, format[key]);\n    }, delta);\n  } else {\n    return delta.reduce(function (delta, op) {\n      if (op.attributes && op.attributes[format]) {\n        return delta.push(op);\n      } else {\n        return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n      }\n    }, new _quillDelta2.default());\n  }\n}\n\nfunction computeStyle(node) {\n  if (node.nodeType !== Node.ELEMENT_NODE) return {};\n  var DOM_KEY = '__ql-computed-style';\n  return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n  var endText = \"\";\n  for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n    var op = delta.ops[i];\n    if (typeof op.insert !== 'string') break;\n    endText = op.insert + endText;\n  }\n  return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n  if (node.childNodes.length === 0) return false; // Exclude embed blocks\n  var style = computeStyle(node);\n  return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n  // Post-order\n  if (node.nodeType === node.TEXT_NODE) {\n    return textMatchers.reduce(function (delta, matcher) {\n      return matcher(node, delta);\n    }, new _quillDelta2.default());\n  } else if (node.nodeType === node.ELEMENT_NODE) {\n    return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n      var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n      if (childNode.nodeType === node.ELEMENT_NODE) {\n        childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n          return matcher(childNode, childrenDelta);\n        }, childrenDelta);\n        childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n          return matcher(childNode, childrenDelta);\n        }, childrenDelta);\n      }\n      return delta.concat(childrenDelta);\n    }, new _quillDelta2.default());\n  } else {\n    return new _quillDelta2.default();\n  }\n}\n\nfunction matchAlias(format, node, delta) {\n  return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n  var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n  var classes = _parchment2.default.Attributor.Class.keys(node);\n  var styles = _parchment2.default.Attributor.Style.keys(node);\n  var formats = {};\n  attributes.concat(classes).concat(styles).forEach(function (name) {\n    var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n    if (attr != null) {\n      formats[attr.attrName] = attr.value(node);\n      if (formats[attr.attrName]) return;\n    }\n    attr = ATTRIBUTE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n    attr = STYLE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      attr = STYLE_ATTRIBUTORS[name];\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n  });\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n  return delta;\n}\n\nfunction matchBlot(node, delta) {\n  var match = _parchment2.default.query(node);\n  if (match == null) return delta;\n  if (match.prototype instanceof _parchment2.default.Embed) {\n    var embed = {};\n    var value = match.value(node);\n    if (value != null) {\n      embed[match.blotName] = value;\n      delta = new _quillDelta2.default().insert(embed, match.formats(node));\n    }\n  } else if (typeof match.formats === 'function') {\n    delta = applyFormat(delta, match.blotName, match.formats(node));\n  }\n  return delta;\n}\n\nfunction matchBreak(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    delta.insert('\\n');\n  }\n  return delta;\n}\n\nfunction matchIgnore() {\n  return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n  var match = _parchment2.default.query(node);\n  if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n    return delta;\n  }\n  var indent = -1,\n      parent = node.parentNode;\n  while (!parent.classList.contains('ql-clipboard')) {\n    if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n      indent += 1;\n    }\n    parent = parent.parentNode;\n  }\n  if (indent <= 0) return delta;\n  return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchSpacing(node, delta) {\n  if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n    var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n    if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchStyles(node, delta) {\n  var formats = {};\n  var style = node.style || {};\n  if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n    formats.italic = true;\n  }\n  if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n    formats.bold = true;\n  }\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n  if (parseFloat(style.textIndent || 0) > 0) {\n    // Could be 0.5in\n    delta = new _quillDelta2.default().insert('\\t').concat(delta);\n  }\n  return delta;\n}\n\nfunction matchText(node, delta) {\n  var text = node.data;\n  // Word represents empty line with <o:p>&nbsp;</o:p>\n  if (node.parentNode.tagName === 'O:P') {\n    return delta.insert(text.trim());\n  }\n  if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n    return delta;\n  }\n  if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n    // eslint-disable-next-line func-style\n    var replacer = function replacer(collapse, match) {\n      match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n      return match.length < 1 && collapse ? ' ' : match;\n    };\n    text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n    text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n    if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n      text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n    }\n    if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n      text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n    }\n  }\n  return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Bold = function (_Inline) {\n  _inherits(Bold, _Inline);\n\n  function Bold() {\n    _classCallCheck(this, Bold);\n\n    return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n  }\n\n  _createClass(Bold, [{\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n      if (this.domNode.tagName !== this.statics.tagName[0]) {\n        this.replaceWith(this.statics.blotName);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create() {\n      return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      return true;\n    }\n  }]);\n\n  return Bold;\n}(_inline2.default);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar Toolbar = function (_Module) {\n  _inherits(Toolbar, _Module);\n\n  function Toolbar(quill, options) {\n    _classCallCheck(this, Toolbar);\n\n    var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n    if (Array.isArray(_this.options.container)) {\n      var container = document.createElement('div');\n      addControls(container, _this.options.container);\n      quill.container.parentNode.insertBefore(container, quill.container);\n      _this.container = container;\n    } else if (typeof _this.options.container === 'string') {\n      _this.container = document.querySelector(_this.options.container);\n    } else {\n      _this.container = _this.options.container;\n    }\n    if (!(_this.container instanceof HTMLElement)) {\n      var _ret;\n\n      return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n    }\n    _this.container.classList.add('ql-toolbar');\n    _this.controls = [];\n    _this.handlers = {};\n    Object.keys(_this.options.handlers).forEach(function (format) {\n      _this.addHandler(format, _this.options.handlers[format]);\n    });\n    [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n      _this.attach(input);\n    });\n    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n      if (type === _quill2.default.events.SELECTION_CHANGE) {\n        _this.update(range);\n      }\n    });\n    _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n      var _this$quill$selection = _this.quill.selection.getRange(),\n          _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n          range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n      _this.update(range);\n    });\n    return _this;\n  }\n\n  _createClass(Toolbar, [{\n    key: 'addHandler',\n    value: function addHandler(format, handler) {\n      this.handlers[format] = handler;\n    }\n  }, {\n    key: 'attach',\n    value: function attach(input) {\n      var _this2 = this;\n\n      var format = [].find.call(input.classList, function (className) {\n        return className.indexOf('ql-') === 0;\n      });\n      if (!format) return;\n      format = format.slice('ql-'.length);\n      if (input.tagName === 'BUTTON') {\n        input.setAttribute('type', 'button');\n      }\n      if (this.handlers[format] == null) {\n        if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n          debug.warn('ignoring attaching to disabled format', format, input);\n          return;\n        }\n        if (_parchment2.default.query(format) == null) {\n          debug.warn('ignoring attaching to nonexistent format', format, input);\n          return;\n        }\n      }\n      var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n      input.addEventListener(eventName, function (e) {\n        var value = void 0;\n        if (input.tagName === 'SELECT') {\n          if (input.selectedIndex < 0) return;\n          var selected = input.options[input.selectedIndex];\n          if (selected.hasAttribute('selected')) {\n            value = false;\n          } else {\n            value = selected.value || false;\n          }\n        } else {\n          if (input.classList.contains('ql-active')) {\n            value = false;\n          } else {\n            value = input.value || !input.hasAttribute('value');\n          }\n          e.preventDefault();\n        }\n        _this2.quill.focus();\n\n        var _quill$selection$getR = _this2.quill.selection.getRange(),\n            _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n            range = _quill$selection$getR2[0];\n\n        if (_this2.handlers[format] != null) {\n          _this2.handlers[format].call(_this2, value);\n        } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n          value = prompt('Enter ' + format);\n          if (!value) return;\n          _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n        } else {\n          _this2.quill.format(format, value, _quill2.default.sources.USER);\n        }\n        _this2.update(range);\n      });\n      // TODO use weakmap\n      this.controls.push([format, input]);\n    }\n  }, {\n    key: 'update',\n    value: function update(range) {\n      var formats = range == null ? {} : this.quill.getFormat(range);\n      this.controls.forEach(function (pair) {\n        var _pair = _slicedToArray(pair, 2),\n            format = _pair[0],\n            input = _pair[1];\n\n        if (input.tagName === 'SELECT') {\n          var option = void 0;\n          if (range == null) {\n            option = null;\n          } else if (formats[format] == null) {\n            option = input.querySelector('option[selected]');\n          } else if (!Array.isArray(formats[format])) {\n            var value = formats[format];\n            if (typeof value === 'string') {\n              value = value.replace(/\\\"/g, '\\\\\"');\n            }\n            option = input.querySelector('option[value=\"' + value + '\"]');\n          }\n          if (option == null) {\n            input.value = ''; // TODO make configurable?\n            input.selectedIndex = -1;\n          } else {\n            option.selected = true;\n          }\n        } else {\n          if (range == null) {\n            input.classList.remove('ql-active');\n          } else if (input.hasAttribute('value')) {\n            // both being null should match (default values)\n            // '1' should match with 1 (headers)\n            var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n            input.classList.toggle('ql-active', isActive);\n          } else {\n            input.classList.toggle('ql-active', formats[format] != null);\n          }\n        }\n      });\n    }\n  }]);\n\n  return Toolbar;\n}(_module2.default);\n\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n  var input = document.createElement('button');\n  input.setAttribute('type', 'button');\n  input.classList.add('ql-' + format);\n  if (value != null) {\n    input.value = value;\n  }\n  container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n  if (!Array.isArray(groups[0])) {\n    groups = [groups];\n  }\n  groups.forEach(function (controls) {\n    var group = document.createElement('span');\n    group.classList.add('ql-formats');\n    controls.forEach(function (control) {\n      if (typeof control === 'string') {\n        addButton(group, control);\n      } else {\n        var format = Object.keys(control)[0];\n        var value = control[format];\n        if (Array.isArray(value)) {\n          addSelect(group, format, value);\n        } else {\n          addButton(group, format, value);\n        }\n      }\n    });\n    container.appendChild(group);\n  });\n}\n\nfunction addSelect(container, format, values) {\n  var input = document.createElement('select');\n  input.classList.add('ql-' + format);\n  values.forEach(function (value) {\n    var option = document.createElement('option');\n    if (value !== false) {\n      option.setAttribute('value', value);\n    } else {\n      option.setAttribute('selected', 'selected');\n    }\n    input.appendChild(option);\n  });\n  container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n  container: null,\n  handlers: {\n    clean: function clean() {\n      var _this3 = this;\n\n      var range = this.quill.getSelection();\n      if (range == null) return;\n      if (range.length == 0) {\n        var formats = this.quill.getFormat();\n        Object.keys(formats).forEach(function (name) {\n          // Clean functionality in existing apps only clean inline formats\n          if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n            _this3.quill.format(name, false);\n          }\n        });\n      } else {\n        this.quill.removeFormat(range, _quill2.default.sources.USER);\n      }\n    },\n    direction: function direction(value) {\n      var align = this.quill.getFormat()['align'];\n      if (value === 'rtl' && align == null) {\n        this.quill.format('align', 'right', _quill2.default.sources.USER);\n      } else if (!value && align === 'right') {\n        this.quill.format('align', false, _quill2.default.sources.USER);\n      }\n      this.quill.format('direction', value, _quill2.default.sources.USER);\n    },\n    indent: function indent(value) {\n      var range = this.quill.getSelection();\n      var formats = this.quill.getFormat(range);\n      var indent = parseInt(formats.indent || 0);\n      if (value === '+1' || value === '-1') {\n        var modifier = value === '+1' ? 1 : -1;\n        if (formats.direction === 'rtl') modifier *= -1;\n        this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n      }\n    },\n    link: function link(value) {\n      if (value === true) {\n        value = prompt('Enter link URL:');\n      }\n      this.quill.format('link', value, _quill2.default.sources.USER);\n    },\n    list: function list(value) {\n      var range = this.quill.getSelection();\n      var formats = this.quill.getFormat(range);\n      if (value === 'check') {\n        if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n          this.quill.format('list', false, _quill2.default.sources.USER);\n        } else {\n          this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n        }\n      } else {\n        this.quill.format('list', value, _quill2.default.sources.USER);\n      }\n    }\n  }\n};\n\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"5 7 3 9 5 11\\\"></polyline> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"13 7 15 9 13 11\\\"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>\";\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorPicker = function (_Picker) {\n  _inherits(ColorPicker, _Picker);\n\n  function ColorPicker(select, label) {\n    _classCallCheck(this, ColorPicker);\n\n    var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n    _this.label.innerHTML = label;\n    _this.container.classList.add('ql-color-picker');\n    [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n      item.classList.add('ql-primary');\n    });\n    return _this;\n  }\n\n  _createClass(ColorPicker, [{\n    key: 'buildItem',\n    value: function buildItem(option) {\n      var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n      item.style.backgroundColor = option.getAttribute('value') || '';\n      return item;\n    }\n  }, {\n    key: 'selectItem',\n    value: function selectItem(item, trigger) {\n      _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n      var colorLabel = this.label.querySelector('.ql-color-label');\n      var value = item ? item.getAttribute('data-value') || '' : '';\n      if (colorLabel) {\n        if (colorLabel.tagName === 'line') {\n          colorLabel.style.stroke = value;\n        } else {\n          colorLabel.style.fill = value;\n        }\n      }\n    }\n  }]);\n\n  return ColorPicker;\n}(_picker2.default);\n\nexports.default = ColorPicker;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IconPicker = function (_Picker) {\n  _inherits(IconPicker, _Picker);\n\n  function IconPicker(select, icons) {\n    _classCallCheck(this, IconPicker);\n\n    var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n    _this.container.classList.add('ql-icon-picker');\n    [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n      item.innerHTML = icons[item.getAttribute('data-value') || ''];\n    });\n    _this.defaultItem = _this.container.querySelector('.ql-selected');\n    _this.selectItem(_this.defaultItem);\n    return _this;\n  }\n\n  _createClass(IconPicker, [{\n    key: 'selectItem',\n    value: function selectItem(item, trigger) {\n      _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n      item = item || this.defaultItem;\n      this.label.innerHTML = item.innerHTML;\n    }\n  }]);\n\n  return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tooltip = function () {\n  function Tooltip(quill, boundsContainer) {\n    var _this = this;\n\n    _classCallCheck(this, Tooltip);\n\n    this.quill = quill;\n    this.boundsContainer = boundsContainer || document.body;\n    this.root = quill.addContainer('ql-tooltip');\n    this.root.innerHTML = this.constructor.TEMPLATE;\n    if (this.quill.root === this.quill.scrollingContainer) {\n      this.quill.root.addEventListener('scroll', function () {\n        _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n      });\n    }\n    this.hide();\n  }\n\n  _createClass(Tooltip, [{\n    key: 'hide',\n    value: function hide() {\n      this.root.classList.add('ql-hidden');\n    }\n  }, {\n    key: 'position',\n    value: function position(reference) {\n      var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n      // root.scrollTop should be 0 if scrollContainer !== root\n      var top = reference.bottom + this.quill.root.scrollTop;\n      this.root.style.left = left + 'px';\n      this.root.style.top = top + 'px';\n      this.root.classList.remove('ql-flip');\n      var containerBounds = this.boundsContainer.getBoundingClientRect();\n      var rootBounds = this.root.getBoundingClientRect();\n      var shift = 0;\n      if (rootBounds.right > containerBounds.right) {\n        shift = containerBounds.right - rootBounds.right;\n        this.root.style.left = left + shift + 'px';\n      }\n      if (rootBounds.left < containerBounds.left) {\n        shift = containerBounds.left - rootBounds.left;\n        this.root.style.left = left + shift + 'px';\n      }\n      if (rootBounds.bottom > containerBounds.bottom) {\n        var height = rootBounds.bottom - rootBounds.top;\n        var verticalShift = reference.bottom - reference.top + height;\n        this.root.style.top = top - verticalShift + 'px';\n        this.root.classList.add('ql-flip');\n      }\n      return shift;\n    }\n  }, {\n    key: 'show',\n    value: function show() {\n      this.root.classList.remove('ql-editing');\n      this.root.classList.remove('ql-hidden');\n    }\n  }]);\n\n  return Tooltip;\n}();\n\nexports.default = Tooltip;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar SnowTheme = function (_BaseTheme) {\n  _inherits(SnowTheme, _BaseTheme);\n\n  function SnowTheme(quill, options) {\n    _classCallCheck(this, SnowTheme);\n\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n\n    var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n    _this.quill.container.classList.add('ql-snow');\n    return _this;\n  }\n\n  _createClass(SnowTheme, [{\n    key: 'extendToolbar',\n    value: function extendToolbar(toolbar) {\n      toolbar.container.classList.add('ql-snow');\n      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n      this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n      if (toolbar.container.querySelector('.ql-link')) {\n        this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n          toolbar.handlers['link'].call(toolbar, !context.format.link);\n        });\n      }\n    }\n  }]);\n\n  return SnowTheme;\n}(_base2.default);\n\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link: function link(value) {\n          if (value) {\n            var range = this.quill.getSelection();\n            if (range == null || range.length == 0) return;\n            var preview = this.quill.getText(range);\n            if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n              preview = 'mailto:' + preview;\n            }\n            var tooltip = this.quill.theme.tooltip;\n            tooltip.edit('link', preview);\n          } else {\n            this.quill.format('link', false);\n          }\n        }\n      }\n    }\n  }\n});\n\nvar SnowTooltip = function (_BaseTooltip) {\n  _inherits(SnowTooltip, _BaseTooltip);\n\n  function SnowTooltip(quill, bounds) {\n    _classCallCheck(this, SnowTooltip);\n\n    var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n    _this2.preview = _this2.root.querySelector('a.ql-preview');\n    return _this2;\n  }\n\n  _createClass(SnowTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this3 = this;\n\n      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n      this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n        if (_this3.root.classList.contains('ql-editing')) {\n          _this3.save();\n        } else {\n          _this3.edit('link', _this3.preview.textContent);\n        }\n        event.preventDefault();\n      });\n      this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n        if (_this3.linkRange != null) {\n          var range = _this3.linkRange;\n          _this3.restoreFocus();\n          _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n          delete _this3.linkRange;\n        }\n        event.preventDefault();\n        _this3.hide();\n      });\n      this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n        if (range == null) return;\n        if (range.length === 0 && source === _emitter2.default.sources.USER) {\n          var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n              _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n              link = _quill$scroll$descend2[0],\n              offset = _quill$scroll$descend2[1];\n\n          if (link != null) {\n            _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n            var preview = _link2.default.formats(link.domNode);\n            _this3.preview.textContent = preview;\n            _this3.preview.setAttribute('href', preview);\n            _this3.show();\n            _this3.position(_this3.quill.getBounds(_this3.linkRange));\n            return;\n          }\n        } else {\n          delete _this3.linkRange;\n        }\n        _this3.hide();\n      });\n    }\n  }, {\n    key: 'show',\n    value: function show() {\n      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n      this.root.removeAttribute('data-mode');\n    }\n  }]);\n\n  return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['<a class=\"ql-preview\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"about:blank\"></a>', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-action\"></a>', '<a class=\"ql-remove\"></a>'].join('');\n\nexports.default = SnowTheme;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _core = __webpack_require__(29);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(36);\n\nvar _direction = __webpack_require__(38);\n\nvar _indent = __webpack_require__(64);\n\nvar _blockquote = __webpack_require__(65);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(66);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(67);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(37);\n\nvar _color = __webpack_require__(26);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(68);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(69);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(70);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(71);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(72);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(73);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(74);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(75);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(57);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(108);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(62);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n  'attributors/attribute/direction': _direction.DirectionAttribute,\n\n  'attributors/class/align': _align.AlignClass,\n  'attributors/class/background': _background.BackgroundClass,\n  'attributors/class/color': _color.ColorClass,\n  'attributors/class/direction': _direction.DirectionClass,\n  'attributors/class/font': _font.FontClass,\n  'attributors/class/size': _size.SizeClass,\n\n  'attributors/style/align': _align.AlignStyle,\n  'attributors/style/background': _background.BackgroundStyle,\n  'attributors/style/color': _color.ColorStyle,\n  'attributors/style/direction': _direction.DirectionStyle,\n  'attributors/style/font': _font.FontStyle,\n  'attributors/style/size': _size.SizeStyle\n}, true);\n\n_core2.default.register({\n  'formats/align': _align.AlignClass,\n  'formats/direction': _direction.DirectionClass,\n  'formats/indent': _indent.IndentClass,\n\n  'formats/background': _background.BackgroundStyle,\n  'formats/color': _color.ColorStyle,\n  'formats/font': _font.FontClass,\n  'formats/size': _size.SizeClass,\n\n  'formats/blockquote': _blockquote2.default,\n  'formats/code-block': _code2.default,\n  'formats/header': _header2.default,\n  'formats/list': _list2.default,\n\n  'formats/bold': _bold2.default,\n  'formats/code': _code.Code,\n  'formats/italic': _italic2.default,\n  'formats/link': _link2.default,\n  'formats/script': _script2.default,\n  'formats/strike': _strike2.default,\n  'formats/underline': _underline2.default,\n\n  'formats/image': _image2.default,\n  'formats/video': _video2.default,\n\n  'formats/list/item': _list.ListItem,\n\n  'modules/formula': _formula2.default,\n  'modules/syntax': _syntax2.default,\n  'modules/toolbar': _toolbar2.default,\n\n  'themes/bubble': _bubble2.default,\n  'themes/snow': _snow2.default,\n\n  'ui/icons': _icons2.default,\n  'ui/picker': _picker2.default,\n  'ui/icon-picker': _iconPicker2.default,\n  'ui/color-picker': _colorPicker2.default,\n  'ui/tooltip': _tooltip2.default\n}, true);\n\nexports.default = _core2.default;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.IndentClass = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IdentAttributor = function (_Parchment$Attributor) {\n  _inherits(IdentAttributor, _Parchment$Attributor);\n\n  function IdentAttributor() {\n    _classCallCheck(this, IdentAttributor);\n\n    return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n  }\n\n  _createClass(IdentAttributor, [{\n    key: 'add',\n    value: function add(node, value) {\n      if (value === '+1' || value === '-1') {\n        var indent = this.value(node) || 0;\n        value = value === '+1' ? indent + 1 : indent - 1;\n      }\n      if (value === 0) {\n        this.remove(node);\n        return true;\n      } else {\n        return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n      }\n    }\n  }, {\n    key: 'canAdd',\n    value: function canAdd(node, value) {\n      return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n    }\n  }, {\n    key: 'value',\n    value: function value(node) {\n      return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n    }\n  }]);\n\n  return IdentAttributor;\n}(_parchment2.default.Attributor.Class);\n\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Blockquote = function (_Block) {\n  _inherits(Blockquote, _Block);\n\n  function Blockquote() {\n    _classCallCheck(this, Blockquote);\n\n    return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n  }\n\n  return Blockquote;\n}(_block2.default);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Block) {\n  _inherits(Header, _Block);\n\n  function Header() {\n    _classCallCheck(this, Header);\n\n    return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n  }\n\n  _createClass(Header, null, [{\n    key: 'formats',\n    value: function formats(domNode) {\n      return this.tagName.indexOf(domNode.tagName) + 1;\n    }\n  }]);\n\n  return Header;\n}(_block2.default);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListItem = function (_Block) {\n  _inherits(ListItem, _Block);\n\n  function ListItem() {\n    _classCallCheck(this, ListItem);\n\n    return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n  }\n\n  _createClass(ListItem, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (name === List.blotName && !value) {\n        this.replaceWith(_parchment2.default.create(this.statics.scope));\n      } else {\n        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }, {\n    key: 'remove',\n    value: function remove() {\n      if (this.prev == null && this.next == null) {\n        this.parent.remove();\n      } else {\n        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n      }\n    }\n  }, {\n    key: 'replaceWith',\n    value: function replaceWith(name, value) {\n      this.parent.isolate(this.offset(this.parent), this.length());\n      if (name === this.parent.statics.blotName) {\n        this.parent.replaceWith(name, value);\n        return this;\n      } else {\n        this.parent.unwrap();\n        return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'formats',\n    value: function formats(domNode) {\n      return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n    }\n  }]);\n\n  return ListItem;\n}(_block2.default);\n\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar List = function (_Container) {\n  _inherits(List, _Container);\n\n  _createClass(List, null, [{\n    key: 'create',\n    value: function create(value) {\n      var tagName = value === 'ordered' ? 'OL' : 'UL';\n      var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n      if (value === 'checked' || value === 'unchecked') {\n        node.setAttribute('data-checked', value === 'checked');\n      }\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      if (domNode.tagName === 'OL') return 'ordered';\n      if (domNode.tagName === 'UL') {\n        if (domNode.hasAttribute('data-checked')) {\n          return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n        } else {\n          return 'bullet';\n        }\n      }\n      return undefined;\n    }\n  }]);\n\n  function List(domNode) {\n    _classCallCheck(this, List);\n\n    var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n    var listEventHandler = function listEventHandler(e) {\n      if (e.target.parentNode !== domNode) return;\n      var format = _this2.statics.formats(domNode);\n      var blot = _parchment2.default.find(e.target);\n      if (format === 'checked') {\n        blot.format('list', 'unchecked');\n      } else if (format === 'unchecked') {\n        blot.format('list', 'checked');\n      }\n    };\n\n    domNode.addEventListener('touchstart', listEventHandler);\n    domNode.addEventListener('mousedown', listEventHandler);\n    return _this2;\n  }\n\n  _createClass(List, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (this.children.length > 0) {\n        this.children.tail.format(name, value);\n      }\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      // We don't inherit from FormatBlot\n      return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      if (blot instanceof ListItem) {\n        _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n      } else {\n        var index = ref == null ? this.length() : ref.offset(this);\n        var after = this.split(index);\n        after.parent.insertBefore(blot, after);\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n      var next = this.next;\n      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n        next.moveChildren(this);\n        next.remove();\n      }\n    }\n  }, {\n    key: 'replace',\n    value: function replace(target) {\n      if (target.statics.blotName !== this.statics.blotName) {\n        var item = _parchment2.default.create(this.statics.defaultChild);\n        target.moveChildren(item);\n        this.appendChild(item);\n      }\n      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n    }\n  }]);\n\n  return List;\n}(_container2.default);\n\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Italic = function (_Bold) {\n  _inherits(Italic, _Bold);\n\n  function Italic() {\n    _classCallCheck(this, Italic);\n\n    return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n  }\n\n  return Italic;\n}(_bold2.default);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Script = function (_Inline) {\n  _inherits(Script, _Inline);\n\n  function Script() {\n    _classCallCheck(this, Script);\n\n    return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n  }\n\n  _createClass(Script, null, [{\n    key: 'create',\n    value: function create(value) {\n      if (value === 'super') {\n        return document.createElement('sup');\n      } else if (value === 'sub') {\n        return document.createElement('sub');\n      } else {\n        return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n      }\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      if (domNode.tagName === 'SUB') return 'sub';\n      if (domNode.tagName === 'SUP') return 'super';\n      return undefined;\n    }\n  }]);\n\n  return Script;\n}(_inline2.default);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Strike = function (_Inline) {\n  _inherits(Strike, _Inline);\n\n  function Strike() {\n    _classCallCheck(this, Strike);\n\n    return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n  }\n\n  return Strike;\n}(_inline2.default);\n\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Underline = function (_Inline) {\n  _inherits(Underline, _Inline);\n\n  function Underline() {\n    _classCallCheck(this, Underline);\n\n    return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n  }\n\n  return Underline;\n}(_inline2.default);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _link = __webpack_require__(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Parchment$Embed) {\n  _inherits(Image, _Parchment$Embed);\n\n  function Image() {\n    _classCallCheck(this, Image);\n\n    return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n  }\n\n  _createClass(Image, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (ATTRIBUTES.indexOf(name) > -1) {\n        if (value) {\n          this.domNode.setAttribute(name, value);\n        } else {\n          this.domNode.removeAttribute(name);\n        }\n      } else {\n        _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n      if (typeof value === 'string') {\n        node.setAttribute('src', this.sanitize(value));\n      }\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return ATTRIBUTES.reduce(function (formats, attribute) {\n        if (domNode.hasAttribute(attribute)) {\n          formats[attribute] = domNode.getAttribute(attribute);\n        }\n        return formats;\n      }, {});\n    }\n  }, {\n    key: 'match',\n    value: function match(url) {\n      return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n      );\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('src');\n    }\n  }]);\n\n  return Image;\n}(_parchment2.default.Embed);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _block = __webpack_require__(4);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['height', 'width'];\n\nvar Video = function (_BlockEmbed) {\n  _inherits(Video, _BlockEmbed);\n\n  function Video() {\n    _classCallCheck(this, Video);\n\n    return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n  }\n\n  _createClass(Video, [{\n    key: 'format',\n    value: function format(name, value) {\n      if (ATTRIBUTES.indexOf(name) > -1) {\n        if (value) {\n          this.domNode.setAttribute(name, value);\n        } else {\n          this.domNode.removeAttribute(name);\n        }\n      } else {\n        _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n      }\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n      node.setAttribute('frameborder', '0');\n      node.setAttribute('allowfullscreen', true);\n      node.setAttribute('src', this.sanitize(value));\n      return node;\n    }\n  }, {\n    key: 'formats',\n    value: function formats(domNode) {\n      return ATTRIBUTES.reduce(function (formats, attribute) {\n        if (domNode.hasAttribute(attribute)) {\n          formats[attribute] = domNode.getAttribute(attribute);\n        }\n        return formats;\n      }, {});\n    }\n  }, {\n    key: 'sanitize',\n    value: function sanitize(url) {\n      return _link2.default.sanitize(url);\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('src');\n    }\n  }]);\n\n  return Video;\n}(_block.BlockEmbed);\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FormulaBlot = function (_Embed) {\n  _inherits(FormulaBlot, _Embed);\n\n  function FormulaBlot() {\n    _classCallCheck(this, FormulaBlot);\n\n    return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n  }\n\n  _createClass(FormulaBlot, null, [{\n    key: 'create',\n    value: function create(value) {\n      var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n      if (typeof value === 'string') {\n        window.katex.render(value, node, {\n          throwOnError: false,\n          errorColor: '#f00'\n        });\n        node.setAttribute('data-value', value);\n      }\n      return node;\n    }\n  }, {\n    key: 'value',\n    value: function value(domNode) {\n      return domNode.getAttribute('data-value');\n    }\n  }]);\n\n  return FormulaBlot;\n}(_embed2.default);\n\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar Formula = function (_Module) {\n  _inherits(Formula, _Module);\n\n  _createClass(Formula, null, [{\n    key: 'register',\n    value: function register() {\n      _quill2.default.register(FormulaBlot, true);\n    }\n  }]);\n\n  function Formula() {\n    _classCallCheck(this, Formula);\n\n    var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n    if (window.katex == null) {\n      throw new Error('Formula module requires KaTeX.');\n    }\n    return _this2;\n  }\n\n  return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SyntaxCodeBlock = function (_CodeBlock) {\n  _inherits(SyntaxCodeBlock, _CodeBlock);\n\n  function SyntaxCodeBlock() {\n    _classCallCheck(this, SyntaxCodeBlock);\n\n    return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n  }\n\n  _createClass(SyntaxCodeBlock, [{\n    key: 'replaceWith',\n    value: function replaceWith(block) {\n      this.domNode.textContent = this.domNode.textContent;\n      this.attach();\n      _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n    }\n  }, {\n    key: 'highlight',\n    value: function highlight(_highlight) {\n      var text = this.domNode.textContent;\n      if (this.cachedText !== text) {\n        if (text.trim().length > 0 || this.cachedText == null) {\n          this.domNode.innerHTML = _highlight(text);\n          this.domNode.normalize();\n          this.attach();\n        }\n        this.cachedText = text;\n      }\n    }\n  }]);\n\n  return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nvar Syntax = function (_Module) {\n  _inherits(Syntax, _Module);\n\n  _createClass(Syntax, null, [{\n    key: 'register',\n    value: function register() {\n      _quill2.default.register(CodeToken, true);\n      _quill2.default.register(SyntaxCodeBlock, true);\n    }\n  }]);\n\n  function Syntax(quill, options) {\n    _classCallCheck(this, Syntax);\n\n    var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n    if (typeof _this2.options.highlight !== 'function') {\n      throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n    }\n    var timer = null;\n    _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n      clearTimeout(timer);\n      timer = setTimeout(function () {\n        _this2.highlight();\n        timer = null;\n      }, _this2.options.interval);\n    });\n    _this2.highlight();\n    return _this2;\n  }\n\n  _createClass(Syntax, [{\n    key: 'highlight',\n    value: function highlight() {\n      var _this3 = this;\n\n      if (this.quill.selection.composing) return;\n      this.quill.update(_quill2.default.sources.USER);\n      var range = this.quill.getSelection();\n      this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n        code.highlight(_this3.options.highlight);\n      });\n      this.quill.update(_quill2.default.sources.SILENT);\n      if (range != null) {\n        this.quill.setSelection(range, _quill2.default.sources.SILENT);\n      }\n    }\n  }]);\n\n  return Syntax;\n}(_module2.default);\n\nSyntax.DEFAULTS = {\n  highlight: function () {\n    if (window.hljs == null) return null;\n    return function (text) {\n      var result = window.hljs.highlightAuto(text);\n      return result.value;\n    };\n  }(),\n  interval: 1000\n};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <g class=\\\"ql-fill ql-color-label\\\"> <polygon points=\\\"6 6.868 6 6 5 6 5 7 5.942 7 6 6.868\\\"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points=\\\"6.817 5 6 5 6 6 6.38 6 6.817 5\\\"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points=\\\"4 11.439 4 11 3 11 3 12 3.755 12 4 11.439\\\"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points=\\\"4.63 10 4 10 4 11 4.192 11 4.63 10\\\"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points=\\\"13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174\\\"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points=\\\"12 6.868 12 6 11.62 6 12 6.868\\\"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points=\\\"12.933 9 13 9 13 8 12.495 8 12.933 9\\\"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points=\\\"5.5 13 9 5 12.5 13\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>\";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=4 y=5></rect> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=11 y=5></rect> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M7,8c0,4.031-3,5-3,5></path> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M14,8c0,4.031-3,5-3,5></path> </svg>\";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>\";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>\";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-color-label ql-stroke ql-transparent\\\" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points=\\\"5.5 11 9 3 12.5 11\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>\";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"3 11 5 9 3 7 3 11\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>\";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"15 12 13 10 15 8 15 12\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>\";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform=\\\"translate(24 18) rotate(-180)\\\"/> </svg>\";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>\";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewBox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z /> </svg>\";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewBox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z /> </svg>\";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>\";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class=\\\"ql-even ql-fill\\\" points=\\\"5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=\\\"ql-fill ql-stroke\\\" points=\\\"3 7 3 11 5 9 3 7\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"5 7 5 11 3 9 5 7\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class=\\\"ql-even ql-stroke\\\" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class=\\\"ql-even ql-stroke\\\" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>\";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class=\\\"ql-stroke ql-thin\\\" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class=\\\"ql-stroke ql-thin\\\" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class=\\\"ql-stroke ql-thin\\\" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>\";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=9 x2=15 y1=4 y2=4></line> <polyline class=ql-stroke points=\\\"3 4 4 5 6 3\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=14 y2=14></line> <polyline class=ql-stroke points=\\\"3 14 4 15 6 13\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"3 9 4 10 6 8\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>\";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>\";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-stroke ql-thin\\\" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>\";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>\";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>\";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=ql-stroke points=\\\"7 11 9 13 11 11 7 11\\\"></polygon> <polygon class=ql-stroke points=\\\"7 7 9 5 11 7 7 7\\\"></polygon> </svg>\";\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar BubbleTheme = function (_BaseTheme) {\n  _inherits(BubbleTheme, _BaseTheme);\n\n  function BubbleTheme(quill, options) {\n    _classCallCheck(this, BubbleTheme);\n\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n\n    var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n    _this.quill.container.classList.add('ql-bubble');\n    return _this;\n  }\n\n  _createClass(BubbleTheme, [{\n    key: 'extendToolbar',\n    value: function extendToolbar(toolbar) {\n      this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n      this.tooltip.root.appendChild(toolbar.container);\n      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n    }\n  }]);\n\n  return BubbleTheme;\n}(_base2.default);\n\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link: function link(value) {\n          if (!value) {\n            this.quill.format('link', false);\n          } else {\n            this.quill.theme.tooltip.edit();\n          }\n        }\n      }\n    }\n  }\n});\n\nvar BubbleTooltip = function (_BaseTooltip) {\n  _inherits(BubbleTooltip, _BaseTooltip);\n\n  function BubbleTooltip(quill, bounds) {\n    _classCallCheck(this, BubbleTooltip);\n\n    var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n    _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n      if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n      if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n        _this2.show();\n        // Lock our width so we will expand beyond our offsetParent boundaries\n        _this2.root.style.left = '0px';\n        _this2.root.style.width = '';\n        _this2.root.style.width = _this2.root.offsetWidth + 'px';\n        var lines = _this2.quill.getLines(range.index, range.length);\n        if (lines.length === 1) {\n          _this2.position(_this2.quill.getBounds(range));\n        } else {\n          var lastLine = lines[lines.length - 1];\n          var index = _this2.quill.getIndex(lastLine);\n          var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n          var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n          _this2.position(_bounds);\n        }\n      } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n        _this2.hide();\n      }\n    });\n    return _this2;\n  }\n\n  _createClass(BubbleTooltip, [{\n    key: 'listen',\n    value: function listen() {\n      var _this3 = this;\n\n      _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n      this.root.querySelector('.ql-close').addEventListener('click', function () {\n        _this3.root.classList.remove('ql-editing');\n      });\n      this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n        // Let selection be restored by toolbar handlers before repositioning\n        setTimeout(function () {\n          if (_this3.root.classList.contains('ql-hidden')) return;\n          var range = _this3.quill.getSelection();\n          if (range != null) {\n            _this3.position(_this3.quill.getBounds(range));\n          }\n        }, 1);\n      });\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      this.show();\n    }\n  }, {\n    key: 'position',\n    value: function position(reference) {\n      var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n      var arrow = this.root.querySelector('.ql-tooltip-arrow');\n      arrow.style.marginLeft = '';\n      if (shift === 0) return shift;\n      arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n    }\n  }]);\n\n  return BubbleTooltip;\n}(_base.BaseTooltip);\n\nBubbleTooltip.TEMPLATE = ['<span class=\"ql-tooltip-arrow\"></span>', '<div class=\"ql-tooltip-editor\">', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-close\"></a>', '</div>'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(63);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","import { Dynamic } from \"solid-js/web\";\r\nimport { mergeProps, createEffect, onMount, splitProps } from \"solid-js\";\r\nimport Quill from \"quill\";\r\nfunction kebabCase(input) {\r\n    return input\r\n        .replace(/([a-z])([A-Z])/g, \"$1-$2\")\r\n        .replace(/\\s+/g, \"-\")\r\n        .toLowerCase();\r\n}\r\nconst defaultValues = {\r\n    theme: \"snow\",\r\n    formats: [\r\n        \"bold\",\r\n        \"italic\",\r\n        \"underline\",\r\n        \"strike\",\r\n        \"align\",\r\n        \"list\",\r\n        \"indent\",\r\n        \"size\",\r\n        \"header\",\r\n        \"link\",\r\n        \"image\",\r\n        \"video\",\r\n        \"color\",\r\n        \"background\",\r\n        \"clean\",\r\n    ],\r\n    modules: {\r\n        toolbar: [\r\n            [\"bold\", \"italic\", \"underline\", \"strike\"],\r\n            [{ align: [] }],\r\n            [{ list: \"ordered\" }, { list: \"bullet\" }],\r\n            [{ indent: \"-1\" }, { indent: \"+1\" }],\r\n            [{ size: [\"small\", false, \"large\", \"huge\"] }],\r\n            [{ header: [1, 2, 3, 4, 5, 6, false] }],\r\n            [\"link\", \"image\", \"video\"],\r\n            [{ color: [] }, { background: [] }],\r\n            [\"clean\"],\r\n        ],\r\n        clipboard: {\r\n            matchVisual: false,\r\n        },\r\n    },\r\n};\r\nconst events = [\r\n    \"onTextChange\",\r\n    \"onSelectionChange\",\r\n    \"onEditorChange\",\r\n    \"onceTextChange\",\r\n    \"onceSelectionChange\",\r\n    \"onceEditorChange\",\r\n    \"offTextChange\",\r\n    \"offSelectionChange\",\r\n    \"offEditorChange\",\r\n];\r\nexport function SolidQuill(props) {\r\n    let editorRef;\r\n    let quill;\r\n    const mergedProps = mergeProps({ as: \"div\", ...defaultValues }, props);\r\n    const [internal, otherProps] = splitProps(mergedProps, [\r\n        \"as\",\r\n        \"ref\",\r\n        \"onReady\",\r\n        ...events,\r\n    ]);\r\n    const [quillProps, externalProps] = splitProps(otherProps, [\r\n        \"debug\",\r\n        \"modules\",\r\n        \"placeholder\",\r\n        \"readOnly\",\r\n        \"theme\",\r\n        \"formats\",\r\n        \"bounds\",\r\n        \"scrollingContainer\",\r\n        \"strict\",\r\n    ]);\r\n    onMount(() => {\r\n        quill = new Quill(editorRef, quillProps);\r\n        for (const event of events) {\r\n            if (!internal[event])\r\n                continue;\r\n            const [modifier, ...eventParts] = kebabCase(event).split(\"-\");\r\n            quill[modifier](eventParts.join(\"-\"), internal[event]);\r\n        }\r\n        if (internal.ref && typeof internal.ref === \"function\") {\r\n            internal.ref(quill);\r\n        }\r\n        if (internal.onReady) {\r\n            internal.onReady(quill);\r\n        }\r\n    });\r\n    createEffect(() => {\r\n        const state = quillProps.readOnly ? \"disable\" : \"enable\";\r\n        quill[state]();\r\n    });\r\n    return (<Dynamic ref={editorRef} class=\"quill\" component={internal.as} {...externalProps}/>);\r\n}\r\n","import { Accessor, createEffect, createSignal, onCleanup } from \"solid-js\";\r\nimport Quill from \"quill\";\r\nimport { SolidQuill } from \"solid-quill\";\r\nimport '/node_modules/quill/dist/quill.core.css';\r\nimport '/node_modules/quill/dist/quill.bubble.css';\r\nimport '/node_modules/quill/dist/quill.snow.css';\r\n\r\nexport interface IQuillEditorWrapper {\r\n  editor: Quill;\r\n  setHtml: (html: string) => void;\r\n  getHtml: () => string;\r\n  isEmpty: Accessor<boolean>;\r\n}\r\n\r\nexport type QuillEditorProps = {\r\n  setInstance: (wrapper: IQuillEditorWrapper) => void;\r\n  content?: string;\r\n}\r\n\r\nexport default function QuillEditor(props: QuillEditorProps) {\r\n    let quill: Quill;\r\n    const [isEmpty, setIsEmpty] = createSignal<boolean>(true);\r\n    const checkIsEmpty = () => {\r\n      const html = quill.root.innerHTML;\r\n      console.log(\"IQuillEditorWrapper.checkIsEmpty\", { html });\r\n      if (html == \"\") return true;\r\n      if (html == \"<p><br></p>\") return true;\r\n      return false;\r\n    }\r\n    const init = (quill: Quill) => {\r\n      createEffect(() => {\r\n        !!props.content ? quill.clipboard.dangerouslyPasteHTML(props.content) : quill.clipboard.dangerouslyPasteHTML(\"\");\r\n        setIsEmpty(checkIsEmpty());\r\n      });\r\n      console.log(\"QuillEditor.init\", { quill, props, content: props.content });\r\n      props.setInstance({\r\n        editor: quill,\r\n        setHtml: (html: string) => quill.clipboard.dangerouslyPasteHTML(html || \"\"),\r\n        getHtml: () => quill.root.innerHTML,\r\n        isEmpty: isEmpty\r\n      } as IQuillEditorWrapper);\r\n    };\r\n    onCleanup(() => {\r\n      if (quill) {\r\n        console.log({ quill });\r\n        quill.root.remove();\r\n      }\r\n    });\r\n    return (\r\n      <SolidQuill\r\n          ref={quill}\r\n          as=\"div\"\r\n          onReady={init}\r\n          onTextChange={(e) => {\r\n            setIsEmpty(checkIsEmpty());\r\n          }}\r\n          debug={false}\r\n          modules={{toolbar: [\r\n              [\"bold\", \"italic\", \"underline\", \"strike\"],\r\n              [{ align: [] }],\r\n              [{ list: \"ordered\" }, { list: \"bullet\" }],\r\n              [{ indent: \"-1\" }, { indent: \"+1\" }],\r\n              [{ size: [\"small\", false, \"large\", \"huge\"] }],\r\n              [{ header: [1, 2, 3, 4, 5, 6, false] }],\r\n              [\"link\", \"image\", \"video\"],\r\n              [{ color: [] }, { background: [] }],\r\n              [\"clean\"],\r\n          ],\r\n          clipboard: {\r\n              matchVisual: false,\r\n          }}}\r\n          formats={[\r\n              \"bold\",\r\n              \"italic\",\r\n              \"underline\",\r\n              \"strike\",\r\n              \"align\",\r\n              \"list\",\r\n              \"indent\",\r\n              \"size\",\r\n              \"header\",\r\n              \"link\",\r\n              \"image\",\r\n              \"video\",\r\n              \"color\",\r\n              \"background\",\r\n              \"clean\",\r\n          ]}\r\n          placeholder=\"\"\r\n          readOnly={false} // for now this is the only reactive props\r\n          theme=\"snow\"\r\n          class=\"quill\"\r\n          style=\"background-color: #fff; height: 250px;\"\r\n          classList={{ active: true }}\r\n          />\r\n    );\r\n  };\r\n  ","import { $PROXY, $TRACK, getListener, batch, createSignal } from \"solid-js\";\n\nconst $RAW = Symbol(\"store-raw\"),\n  $NODE = Symbol(\"store-node\"),\n  $HAS = Symbol(\"store-has\"),\n  $SELF = Symbol(\"store-self\");\nfunction wrap$1(value) {\n  let p = value[$PROXY];\n  if (!p) {\n    Object.defineProperty(value, $PROXY, {\n      value: (p = new Proxy(value, proxyTraps$1))\n    });\n    if (!Array.isArray(value)) {\n      const keys = Object.keys(value),\n        desc = Object.getOwnPropertyDescriptors(value);\n      for (let i = 0, l = keys.length; i < l; i++) {\n        const prop = keys[i];\n        if (desc[prop].get) {\n          Object.defineProperty(value, prop, {\n            enumerable: desc[prop].enumerable,\n            get: desc[prop].get.bind(p)\n          });\n        }\n      }\n    }\n  }\n  return p;\n}\nfunction isWrappable(obj) {\n  let proto;\n  return (\n    obj != null &&\n    typeof obj === \"object\" &&\n    (obj[$PROXY] ||\n      !(proto = Object.getPrototypeOf(obj)) ||\n      proto === Object.prototype ||\n      Array.isArray(obj))\n  );\n}\nfunction unwrap(item, set = new Set()) {\n  let result, unwrapped, v, prop;\n  if ((result = item != null && item[$RAW])) return result;\n  if (!isWrappable(item) || set.has(item)) return item;\n  if (Array.isArray(item)) {\n    if (Object.isFrozen(item)) item = item.slice(0);\n    else set.add(item);\n    for (let i = 0, l = item.length; i < l; i++) {\n      v = item[i];\n      if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;\n    }\n  } else {\n    if (Object.isFrozen(item)) item = Object.assign({}, item);\n    else set.add(item);\n    const keys = Object.keys(item),\n      desc = Object.getOwnPropertyDescriptors(item);\n    for (let i = 0, l = keys.length; i < l; i++) {\n      prop = keys[i];\n      if (desc[prop].get) continue;\n      v = item[prop];\n      if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;\n    }\n  }\n  return item;\n}\nfunction getNodes(target, symbol) {\n  let nodes = target[symbol];\n  if (!nodes)\n    Object.defineProperty(target, symbol, {\n      value: (nodes = Object.create(null))\n    });\n  return nodes;\n}\nfunction getNode(nodes, property, value) {\n  if (nodes[property]) return nodes[property];\n  const [s, set] = createSignal(value, {\n    equals: false,\n    internal: true\n  });\n  s.$ = set;\n  return (nodes[property] = s);\n}\nfunction proxyDescriptor$1(target, property) {\n  const desc = Reflect.getOwnPropertyDescriptor(target, property);\n  if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE)\n    return desc;\n  delete desc.value;\n  delete desc.writable;\n  desc.get = () => target[$PROXY][property];\n  return desc;\n}\nfunction trackSelf(target) {\n  getListener() && getNode(getNodes(target, $NODE), $SELF)();\n}\nfunction ownKeys(target) {\n  trackSelf(target);\n  return Reflect.ownKeys(target);\n}\nconst proxyTraps$1 = {\n  get(target, property, receiver) {\n    if (property === $RAW) return target;\n    if (property === $PROXY) return receiver;\n    if (property === $TRACK) {\n      trackSelf(target);\n      return receiver;\n    }\n    const nodes = getNodes(target, $NODE);\n    const tracked = nodes[property];\n    let value = tracked ? tracked() : target[property];\n    if (property === $NODE || property === $HAS || property === \"__proto__\") return value;\n    if (!tracked) {\n      const desc = Object.getOwnPropertyDescriptor(target, property);\n      if (\n        getListener() &&\n        (typeof value !== \"function\" || target.hasOwnProperty(property)) &&\n        !(desc && desc.get)\n      )\n        value = getNode(nodes, property, value)();\n    }\n    return isWrappable(value) ? wrap$1(value) : value;\n  },\n  has(target, property) {\n    if (\n      property === $RAW ||\n      property === $PROXY ||\n      property === $TRACK ||\n      property === $NODE ||\n      property === $HAS ||\n      property === \"__proto__\"\n    )\n      return true;\n    getListener() && getNode(getNodes(target, $HAS), property)();\n    return property in target;\n  },\n  set() {\n    return true;\n  },\n  deleteProperty() {\n    return true;\n  },\n  ownKeys: ownKeys,\n  getOwnPropertyDescriptor: proxyDescriptor$1\n};\nfunction setProperty(state, property, value, deleting = false) {\n  if (!deleting && state[property] === value) return;\n  const prev = state[property],\n    len = state.length;\n  if (value === undefined) {\n    delete state[property];\n    if (state[$HAS] && state[$HAS][property] && prev !== undefined) state[$HAS][property].$();\n  } else {\n    state[property] = value;\n    if (state[$HAS] && state[$HAS][property] && prev === undefined) state[$HAS][property].$();\n  }\n  let nodes = getNodes(state, $NODE),\n    node;\n  if ((node = getNode(nodes, property, prev))) node.$(() => value);\n  if (Array.isArray(state) && state.length !== len) {\n    for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();\n    (node = getNode(nodes, \"length\", len)) && node.$(state.length);\n  }\n  (node = nodes[$SELF]) && node.$();\n}\nfunction mergeStoreNode(state, value) {\n  const keys = Object.keys(value);\n  for (let i = 0; i < keys.length; i += 1) {\n    const key = keys[i];\n    setProperty(state, key, value[key]);\n  }\n}\nfunction updateArray(current, next) {\n  if (typeof next === \"function\") next = next(current);\n  next = unwrap(next);\n  if (Array.isArray(next)) {\n    if (current === next) return;\n    let i = 0,\n      len = next.length;\n    for (; i < len; i++) {\n      const value = next[i];\n      if (current[i] !== value) setProperty(current, i, value);\n    }\n    setProperty(current, \"length\", len);\n  } else mergeStoreNode(current, next);\n}\nfunction updatePath(current, path, traversed = []) {\n  let part,\n    prev = current;\n  if (path.length > 1) {\n    part = path.shift();\n    const partType = typeof part,\n      isArray = Array.isArray(current);\n    if (Array.isArray(part)) {\n      for (let i = 0; i < part.length; i++) {\n        updatePath(current, [part[i]].concat(path), traversed);\n      }\n      return;\n    } else if (isArray && partType === \"function\") {\n      for (let i = 0; i < current.length; i++) {\n        if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);\n      }\n      return;\n    } else if (isArray && partType === \"object\") {\n      const { from = 0, to = current.length - 1, by = 1 } = part;\n      for (let i = from; i <= to; i += by) {\n        updatePath(current, [i].concat(path), traversed);\n      }\n      return;\n    } else if (path.length > 1) {\n      updatePath(current[part], path, [part].concat(traversed));\n      return;\n    }\n    prev = current[part];\n    traversed = [part].concat(traversed);\n  }\n  let value = path[0];\n  if (typeof value === \"function\") {\n    value = value(prev, traversed);\n    if (value === prev) return;\n  }\n  if (part === undefined && value == undefined) return;\n  value = unwrap(value);\n  if (part === undefined || (isWrappable(prev) && isWrappable(value) && !Array.isArray(value))) {\n    mergeStoreNode(prev, value);\n  } else setProperty(current, part, value);\n}\nfunction createStore(...[store, options]) {\n  const unwrappedStore = unwrap(store || {});\n  const isArray = Array.isArray(unwrappedStore);\n  const wrappedStore = wrap$1(unwrappedStore);\n  function setStore(...args) {\n    batch(() => {\n      isArray && args.length === 1\n        ? updateArray(unwrappedStore, args[0])\n        : updatePath(unwrappedStore, args);\n    });\n  }\n  return [wrappedStore, setStore];\n}\n\nfunction proxyDescriptor(target, property) {\n  const desc = Reflect.getOwnPropertyDescriptor(target, property);\n  if (\n    !desc ||\n    desc.get ||\n    desc.set ||\n    !desc.configurable ||\n    property === $PROXY ||\n    property === $NODE\n  )\n    return desc;\n  delete desc.value;\n  delete desc.writable;\n  desc.get = () => target[$PROXY][property];\n  desc.set = v => (target[$PROXY][property] = v);\n  return desc;\n}\nconst proxyTraps = {\n  get(target, property, receiver) {\n    if (property === $RAW) return target;\n    if (property === $PROXY) return receiver;\n    if (property === $TRACK) {\n      trackSelf(target);\n      return receiver;\n    }\n    const nodes = getNodes(target, $NODE);\n    const tracked = nodes[property];\n    let value = tracked ? tracked() : target[property];\n    if (property === $NODE || property === $HAS || property === \"__proto__\") return value;\n    if (!tracked) {\n      const desc = Object.getOwnPropertyDescriptor(target, property);\n      const isFunction = typeof value === \"function\";\n      if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get))\n        value = getNode(nodes, property, value)();\n      else if (value != null && isFunction && value === Array.prototype[property]) {\n        return (...args) => batch(() => Array.prototype[property].apply(receiver, args));\n      }\n    }\n    return isWrappable(value) ? wrap(value) : value;\n  },\n  has(target, property) {\n    if (\n      property === $RAW ||\n      property === $PROXY ||\n      property === $TRACK ||\n      property === $NODE ||\n      property === $HAS ||\n      property === \"__proto__\"\n    )\n      return true;\n    getListener() && getNode(getNodes(target, $HAS), property)();\n    return property in target;\n  },\n  set(target, property, value) {\n    batch(() => setProperty(target, property, unwrap(value)));\n    return true;\n  },\n  deleteProperty(target, property) {\n    batch(() => setProperty(target, property, undefined, true));\n    return true;\n  },\n  ownKeys: ownKeys,\n  getOwnPropertyDescriptor: proxyDescriptor\n};\nfunction wrap(value) {\n  let p = value[$PROXY];\n  if (!p) {\n    Object.defineProperty(value, $PROXY, {\n      value: (p = new Proxy(value, proxyTraps))\n    });\n    const keys = Object.keys(value),\n      desc = Object.getOwnPropertyDescriptors(value);\n    const proto = Object.getPrototypeOf(value);\n    const isClass =\n      proto !== null &&\n      value !== null &&\n      typeof value === \"object\" &&\n      !Array.isArray(value) &&\n      proto !== Object.prototype;\n    if (isClass) {\n      const descriptors = Object.getOwnPropertyDescriptors(proto);\n      keys.push(...Object.keys(descriptors));\n      Object.assign(desc, descriptors);\n    }\n    for (let i = 0, l = keys.length; i < l; i++) {\n      const prop = keys[i];\n      if (isClass && prop === \"constructor\") continue;\n      if (desc[prop].get) {\n        const get = desc[prop].get.bind(p);\n        Object.defineProperty(value, prop, {\n          get,\n          configurable: true\n        });\n      }\n      if (desc[prop].set) {\n        const og = desc[prop].set,\n          set = v => batch(() => og.call(p, v));\n        Object.defineProperty(value, prop, {\n          set,\n          configurable: true\n        });\n      }\n    }\n  }\n  return p;\n}\nfunction createMutable(state, options) {\n  const unwrappedStore = unwrap(state || {});\n  const wrappedStore = wrap(unwrappedStore);\n  return wrappedStore;\n}\nfunction modifyMutable(state, modifier) {\n  batch(() => modifier(unwrap(state)));\n}\n\nconst $ROOT = Symbol(\"store-root\");\nfunction applyState(target, parent, property, merge, key) {\n  const previous = parent[property];\n  if (target === previous) return;\n  const isArray = Array.isArray(target);\n  if (\n    property !== $ROOT &&\n    (!isWrappable(target) ||\n      !isWrappable(previous) ||\n      isArray !== Array.isArray(previous) ||\n      (key && target[key] !== previous[key]))\n  ) {\n    setProperty(parent, property, target);\n    return;\n  }\n  if (isArray) {\n    if (\n      target.length &&\n      previous.length &&\n      (!merge || (key && target[0] && target[0][key] != null))\n    ) {\n      let i, j, start, end, newEnd, item, newIndicesNext, keyVal;\n      for (\n        start = 0, end = Math.min(previous.length, target.length);\n        start < end &&\n        (previous[start] === target[start] ||\n          (key && previous[start] && target[start] && previous[start][key] === target[start][key]));\n        start++\n      ) {\n        applyState(target[start], previous, start, merge, key);\n      }\n      const temp = new Array(target.length),\n        newIndices = new Map();\n      for (\n        end = previous.length - 1, newEnd = target.length - 1;\n        end >= start &&\n        newEnd >= start &&\n        (previous[end] === target[newEnd] ||\n          (key && previous[end] && target[newEnd] && previous[end][key] === target[newEnd][key]));\n        end--, newEnd--\n      ) {\n        temp[newEnd] = previous[end];\n      }\n      if (start > newEnd || start > end) {\n        for (j = start; j <= newEnd; j++) setProperty(previous, j, target[j]);\n        for (; j < target.length; j++) {\n          setProperty(previous, j, temp[j]);\n          applyState(target[j], previous, j, merge, key);\n        }\n        if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n        return;\n      }\n      newIndicesNext = new Array(newEnd + 1);\n      for (j = newEnd; j >= start; j--) {\n        item = target[j];\n        keyVal = key && item ? item[key] : item;\n        i = newIndices.get(keyVal);\n        newIndicesNext[j] = i === undefined ? -1 : i;\n        newIndices.set(keyVal, j);\n      }\n      for (i = start; i <= end; i++) {\n        item = previous[i];\n        keyVal = key && item ? item[key] : item;\n        j = newIndices.get(keyVal);\n        if (j !== undefined && j !== -1) {\n          temp[j] = previous[i];\n          j = newIndicesNext[j];\n          newIndices.set(keyVal, j);\n        }\n      }\n      for (j = start; j < target.length; j++) {\n        if (j in temp) {\n          setProperty(previous, j, temp[j]);\n          applyState(target[j], previous, j, merge, key);\n        } else setProperty(previous, j, target[j]);\n      }\n    } else {\n      for (let i = 0, len = target.length; i < len; i++) {\n        applyState(target[i], previous, i, merge, key);\n      }\n    }\n    if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n    return;\n  }\n  const targetKeys = Object.keys(target);\n  for (let i = 0, len = targetKeys.length; i < len; i++) {\n    applyState(target[targetKeys[i]], previous, targetKeys[i], merge, key);\n  }\n  const previousKeys = Object.keys(previous);\n  for (let i = 0, len = previousKeys.length; i < len; i++) {\n    if (target[previousKeys[i]] === undefined) setProperty(previous, previousKeys[i], undefined);\n  }\n}\nfunction reconcile(value, options = {}) {\n  const { merge, key = \"id\" } = options,\n    v = unwrap(value);\n  return state => {\n    if (!isWrappable(state) || !isWrappable(v)) return v;\n    const res = applyState(\n      v,\n      {\n        [$ROOT]: state\n      },\n      $ROOT,\n      merge,\n      key\n    );\n    return res === undefined ? state : res;\n  };\n}\nconst producers = new WeakMap();\nconst setterTraps = {\n  get(target, property) {\n    if (property === $RAW) return target;\n    const value = target[property];\n    let proxy;\n    return isWrappable(value)\n      ? producers.get(value) ||\n          (producers.set(value, (proxy = new Proxy(value, setterTraps))), proxy)\n      : value;\n  },\n  set(target, property, value) {\n    setProperty(target, property, unwrap(value));\n    return true;\n  },\n  deleteProperty(target, property) {\n    setProperty(target, property, undefined, true);\n    return true;\n  }\n};\nfunction produce(fn) {\n  return state => {\n    if (isWrappable(state)) {\n      let proxy;\n      if (!(proxy = producers.get(state))) {\n        producers.set(state, (proxy = new Proxy(state, setterTraps)));\n      }\n      fn(proxy);\n    }\n    return state;\n  };\n}\n\nconst DEV = undefined;\n\nexport { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };\n","import { Component, For, Show, onMount } from \"solid-js\";\r\nimport { ProgressProps, Step } from \"../types\";\r\nimport { Link, useNavigate } from \"@solidjs/router\";\r\nimport { getText, loadCms } from \"../app\";\r\nimport { createStore } from \"solid-js/store\";\r\n\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\nexport const Progress : Component<ProgressProps> = (props) => {\r\n    const navigate = useNavigate();\r\n    const [state, setState] = createStore<State>({ isContentReady: false });\r\n    const steps: Step[] = [];\r\n    const onStepClicked = async (target: Step) => {\r\n        if (!props.onBeforeNavigatingToAnotherStep) {\r\n            return navigate(target?.url || \"/\");\r\n        }\r\n        if (await props.onBeforeNavigatingToAnotherStep(target)) {\r\n            return navigate(target?.url || \"/\");\r\n        }\r\n    };\r\n    const stepState = (step: Step) => {\r\n        const currentStep = step.index;\r\n        if (currentStep < props.step)\r\n        {\r\n            return \"complete\";\r\n        }\r\n        if (currentStep == props.step)\r\n        {\r\n            return \"active\";\r\n        }\r\n        return \"disabled\";\r\n    };\r\n    onMount(async () => {\r\n        await loadCms([\r\n            \"step-item::introduction\",\r\n            \"step-item::step-1\",\"step-item::my-details\",\r\n            \"step-item::step-2\",\"step-item::my-artworks\",\r\n            \"step-item::step-3\",\"step-item::checkout/invoice\"\r\n        ]);\r\n        steps.push({ index: 0, name: getText(\"step-item::introduction\", \"Introduction\"), url: \"/introduction\" });\r\n        steps.push({ index: 1, name: getText(\"step-item::step-1\", \"Step 1\"), label: getText(\"step-item::my-details\", \"My details\"), url: \"/step-1\" });\r\n        steps.push({ index: 2, name: getText(\"step-item::step-2\", \"Step 2\"), label: getText(\"step-item::my-artworks\", \"My artworks\"), url: \"/step-2\" });\r\n        steps.push({ index: 3, name: getText(\"step-item::step-3\", \"Step 3\"), label: getText(\"step-item::checkout/invoice\", \"Invoice\"), url: \"/step-3\" });\r\n        setState({ isContentReady: true });\r\n    });\r\n    return (\r\n        <div>\r\n            <div class=\"row bs-wizard\" style=\"border-bottom:0; padding: 40px; position: sticky;\">\r\n                <Show when={state.isContentReady}>\r\n                    <For each={steps}>{(step) =>\r\n                        <div class={ \"col-xs-2 bs-wizard-step \" + stepState(step) }>\r\n                            <div class=\"text-center bs-wizard-stepnum\">\r\n                                <Show when={step.url}>\r\n                                    <a style=\"text-decoration: none; color: #333; font-family: 'Raleway-Regular';\" onClick={(e) => { e.preventDefault(); onStepClicked(step); }}>{step.name}</a>\r\n                                </Show>\r\n                                <Show when={!step.url}>{step.name}</Show>\r\n                            </div>\r\n                            <div class=\"progress\">\r\n                                <div class=\"progress-bar\"></div>\r\n                            </div>\r\n                            <Show when={!step.disabled}><Link href={step?.url || \"/\"} class=\"bs-wizard-dot\"></Link></Show>\r\n                            <div class=\"bs-wizard-info text-center\">{step.label}</div>\r\n                        </div>\r\n                    }</For>\r\n                </Show>\r\n            </div>\r\n        </div>\r\n    )\r\n}","export const cleanImagePath = (filepath: string) => {\r\n    if (!filepath) return filepath;\r\n    filepath = filepath.replace(new RegExp('~', 'g'), '');\r\n    filepath = filepath.replace(new RegExp(':', 'g'), '_');\r\n    filepath = filepath.replace(new RegExp('//', 'g'), '/');\r\n    filepath = filepath.replace(new RegExp('\\\\\\\\', 'g'), '/');\r\n    var url = encodeURI(\"/secureimages\" + filepath);\r\n    return url;\r\n};\r\nconst cache: any = {};\r\nexport const clearCache = (key: string) => cache[key] = null;\r\nexport const getOrSet = (key: string, getter: () => any) =>{\r\n    if (!!cache[key]) {\r\n        return cache[key];\r\n    }\r\n    const value = getter();\r\n    cache[key] = value;\r\n    return value;\r\n};\r\nexport const setCache = (key: string, value: any) => {\r\n    cache[key] = value;\r\n};\r\nexport const getOrSetAsync = async (key: string, getter: () => any, options?: { forceRefresh: boolean }) =>{\r\n    if (!options?.forceRefresh) {\r\n        if (!!cache[key]) {\r\n            return cache[key];\r\n        }\r\n    }\r\n    const value = await getter();\r\n    cache[key] = value;\r\n    return value;\r\n};\r\nexport const getPageRange = (page: number, rangeSize: number, maxPage: number) => {\r\n    var start = getPageBlockStart(page, rangeSize);\r\n    var end = start + rangeSize - 1;\r\n    if (end > maxPage) {\r\n        end = maxPage;\r\n    }\r\n    var pages = [];\r\n    for (var i = start; i <= end; i++) {\r\n        pages.push(i);\r\n    }\r\n    return pages;\r\n};\r\nexport const getPageBlockStart = (pageIndex: number, pageBlockSize: number) => {\r\n    var pageBlock = Math.floor(pageIndex / pageBlockSize) + 1;\r\n    var pageBlockStart = ((pageBlock - 1) * pageBlockSize) + 1;\r\n    return pageBlockStart;\r\n}\r\nexport const toQueryString = (data: {}): string =>{\r\n    let _data = {};\r\n    for (let key  in data) {\r\n        let value = data[key];\r\n        if (value === null || value === \"null\") {\r\n            continue;\r\n        }\r\n        _data[key] = value;\r\n    }\r\n    const queryString = new URLSearchParams(_data);\r\n    return queryString.toString();\r\n}","import { Component, splitProps } from \"solid-js\";\r\nimport { toQueryString } from \"../../API\";\r\n\r\nexport const A : Component<any> = (props) => {\r\n    const [local, others] = splitProps(props, [\"href\", \"parameters\"]);\r\n    let href = local.href;\r\n    if (local.parameters) {\r\n        href += \"?\" + toQueryString(local.parameters);\r\n    }\r\n    const onClick = (e: Event ) => {\r\n        e.preventDefault();\r\n        window.location.href = href;\r\n    };\r\n    return (<a href={href} {...others} onClick={onClick}>{props.children}</a>);\r\n}\r\n\r\nexport const NavDropdownItem : Component<any> = (props) => {\r\n    const [local, others] = splitProps(props, [\"href\", \"parameters\"]);\r\n    let href = local.href;\r\n    if (local.parameters) {\r\n        href += \"?\" + toQueryString(local.parameters);\r\n    }\r\n    const onClick = (e: Event ) => {\r\n        e.preventDefault();\r\n        window.location.href = href;\r\n    };\r\n    return (<a href={href} {...others} class=\"dropdown-item\" data-rr-ui-dropdown-item=\"\" onClick={onClick}>{props.children}</a>);\r\n}","import { Component, createEffect, createSignal, Show } from \"solid-js\";\r\n\r\ntype Props = {\r\n    when?: () => boolean;\r\n}\r\nexport const Required : Component<Props> = (props) => {\r\n    const [visible, setVisible] = createSignal<boolean>(true);\r\n    createEffect(() => {\r\n        if (props?.when) {\r\n            setVisible(typeof props.when === \"undefined\" || props?.when());\r\n        }\r\n    });\r\n    return (\r\n        <>\r\n            <Show when={visible()}>\r\n                <span style=\"color: red;\" class=\"fa fa-star\"></span>\r\n            </Show>\r\n        </>\r\n    );\r\n}","import { SetStoreFunction } from \"solid-js/store\";\r\n\r\nexport const formatText = (text: string, data: Record<string,any>) => {\r\n    console.log(\"formatText\", { text, data });\r\n    for (let key in data) text = text?.replace(new RegExp('{' + key + '}', 'gi'), data[key]);\r\n    return text;\r\n}\r\nexport const commitChange = async (typeCode: string, value: any) => {\r\n    try {\r\n        const property = {\r\n            TypeCode: typeCode,\r\n            Value: JSON.stringify(value),\r\n            Format: \"json\"\r\n        };\r\n        const res = await fetchPost(\"/SalonApplication/Salon/CommitChangeJson\", property);\r\n        const json = await res.json();\r\n        console.log(\"commitChange\", { json });\r\n    } catch (ex) {\r\n        console.log(\"commitChange\", { ex });\r\n    }\r\n};\r\nexport const getElementsFromHtml = (html: string, selector: string) => {\r\n    if (!html) return [];\r\n    const df = document.createDocumentFragment();\r\n    const div = document.createElement(\"div\");\r\n    div.innerHTML = html;\r\n    df.appendChild(div);\r\n    const elements = Array.from(df.querySelectorAll(selector));\r\n    return elements;\r\n};\r\nexport const preloadImages = (urls: string[]) => {\r\n    const frag = document.createDocumentFragment();\r\n    urls.forEach(url => {\r\n        const link = document.createElement(\"link\");\r\n        link.rel = \"preload\";\r\n        link.as = \"image\";\r\n        link.href = url;\r\n        frag.appendChild(link);\r\n    });\r\n    document.head.appendChild(frag);\r\n};\r\nexport const toFormData = (obj: any) => {\r\n    let formData = new FormData();\r\n    for (let key in obj) {\r\n        let value = obj[key];\r\n        formData.append(key, value);\r\n    }\r\n    return formData;\r\n};\r\nexport const cleanImagePath = (filepath: string) => {\r\n    if (!filepath) return filepath;\r\n    filepath = filepath.replace(new RegExp('~', 'g'), '');\r\n    filepath = filepath.replace(new RegExp(':', 'g'), '_');\r\n    filepath = filepath.replace(new RegExp('//', 'g'), '/');\r\n    filepath = filepath.replace(new RegExp('\\\\\\\\', 'g'), '/');\r\n    var url = encodeURI(\"/secureimages\" + filepath);\r\n    return url;\r\n};\r\nconst cache: any = {};\r\nexport const getOrSet = (key: string, getter: () => any) =>{\r\n    if (!!cache[key]) {\r\n        return cache[key];\r\n    }\r\n    const value = getter();\r\n    cache[key] = value;\r\n    return value;\r\n};\r\nexport function toggleCheckbox<TModel = Record<string,any>>(model: TModel, setModel: SetStoreFunction<TModel>, key: keyof TModel, value: string) {\r\n    const parts = (model[key] as string)?.split(\",\");\r\n    if (parts.some(x => x == value)) {\r\n        const filtered = parts.filter(x => x != value).join(\",\");\r\n        setModel(key, filtered);\r\n    } else {\r\n        const updated = [...parts, value].join(\",\");\r\n        setModel(key, updated);\r\n    }\r\n}\r\nfunction nullSafe<TModel>(model: TModel, key: keyof TModel) {\r\n    return model[key] && model[key] != \"undefined\" && model[key] != \"null\" ? model[key] : \"\";\r\n};\r\nfunction nullSafety<TModel = Record<string, any>>(obj: TModel): TModel {\r\n    var result: any = {};\r\n    const keys = Object.keys(obj) as (keyof TModel)[];\r\n    keys.forEach(key => {\r\n        const value = obj[key as keyof TModel] as any;\r\n        if (value === undefined || value === null) return;\r\n        if (typeof value === \"object\" && !(value instanceof Blob) && !(value instanceof File)) return;\r\n        if (key == \"Id\" && (value == \"0\" || value == 0)) return;\r\n        result[key] = typeof value === \"string\" ? nullSafe(obj, key as keyof TModel) : value;\r\n    });\r\n    return result as TModel;\r\n};\r\nexport const fetchGet = async (url: string, params: any) => {\r\n    return await fetch(url + \"?\" + toQueryString(nullSafety(params)));\r\n};\r\ntype FetchPostSettings = {\r\n    includeNullFields?: boolean;\r\n    useJson?: boolean;\r\n}\r\nexport const fetchPost = async (url: string, data: any, settings?: FetchPostSettings) => {\r\n    if (settings) {\r\n        const _data = settings.includeNullFields ? data : nullSafety(data);\r\n        const body = settings.useJson ? JSON.stringify(_data) : toFormData(_data);\r\n        const headers = settings.useJson ? { \"Content-Type\": \"application/json\" } : { \"Content-Type\": \"text/plain;charset=UTF-8\" };\r\n        console.log(\"fetchPost\", { url, body, headers, settings });\r\n        const response = await fetch(url, {\r\n            method: 'POST',\r\n            body: body,\r\n            headers: headers\r\n        });\r\n        return response;\r\n    } else {\r\n        const body = toFormData(nullSafety(data));\r\n        console.log(\"fetchPost\", { url, body, settings });\r\n        const response = await fetch(url, {\r\n            method: 'POST',\r\n            body: body\r\n        });\r\n        return response;\r\n    }\r\n};\r\nexport const scrollToTop = () => window.scrollTo(0, 0);\r\nexport const getOrSetAsync = async (key: string, getter: () => any) =>{\r\n    if (!!cache[key]) {\r\n        return cache[key];\r\n    }\r\n    const value = await getter();\r\n    cache[key] = value;\r\n    return value;\r\n};\r\nexport const toQueryString = (data: {}): string =>{\r\n    let _data = {};\r\n    for (let key in data) {\r\n        let value = data[key];\r\n        if (value === null || value === \"null\") {\r\n            continue;\r\n        }\r\n        _data[key] = value;\r\n    }\r\n    const queryString = new URLSearchParams(_data);\r\n    return queryString.toString();\r\n}","import { Component, splitProps } from \"solid-js\";\r\nimport { cleanImagePath } from \"../../library/common\";\r\n\r\nexport enum Mode {\r\n    crop = \"crop\",\r\n    fit = \"fit\"\r\n}\r\n\r\nconst heightCache: Record<number, number> = {};\r\nconst widthCache: Record<number, number> = {};\r\nconst getHeight = (maxWidth: number, width: number, height: number) => {\r\n    const ratio = maxWidth / width;\r\n    const h = Math.floor(height * ratio);\r\n    return h;\r\n};\r\nconst getWidth = (maxHeight: number, width: number, height: number) => {\r\n    const ratio = maxHeight / height;\r\n    const w = Math.floor(width * ratio);\r\n    return w;\r\n};\r\n\r\nexport const Img : Component<any> = (props) => {\r\n    const [local, others] = splitProps(props, [\"src\", \"mode\", \"width\", \"height\", \"format\", \"maxWidth\", \"maxHeight\",  \"naturalHeight\", \"naturalWidth\", \"style\"]);\r\n    let src = local.src;\r\n    let style = local.style || {};\r\n    let imageflow: string[] = [];\r\n    if (local.mode) imageflow.push(\"mode=\" + local.mode);\r\n    if (local.maxWidth && local.naturalWidth && local.naturalHeight) {\r\n        const height = getHeight(local.maxWidth, local.naturalWidth, local.naturalHeight);\r\n        imageflow.push(\"width=\" + local.maxWidth);\r\n        imageflow.push(\"height=\" + height);\r\n        style.width = local.maxWidth + \"px\";\r\n        style.height = height + \"px\";\r\n    } else if (local.maxHeight && local.naturalWidth && local.naturalHeight) {\r\n        const width = getWidth(local.maxHeight, local.naturalWidth, local.naturalHeight);\r\n        imageflow.push(\"height=\" + local.maxHeight);\r\n        imageflow.push(\"width=\" + width);\r\n        style.height = local.maxHeight + \"px\";\r\n        style.width = width + \"px\";\r\n    } else {\r\n        if (local.width) imageflow.push(\"width=\" + local.width);\r\n        if (local.height) imageflow.push(\"height=\" + local.height);\r\n    }\r\n    if (local.format) imageflow.push(\"format=\" + local.format);\r\n    if (imageflow.length) src += \"?\" + imageflow.join(\"&\");\r\n    return (<img src={cleanImagePath(src)} style={style} {...others}></img>);\r\n}","/*!\n * Cropper.js v1.6.2\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2024-04-21T07:43:05.335Z\n */\n\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      _defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nfunction _toPrimitive(t, r) {\n  if (\"object\" != typeof t || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != typeof i) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, \"string\");\n  return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n  }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nvar WINDOW = IS_BROWSER ? window : {};\nvar IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\nvar HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\nvar NAMESPACE = 'cropper';\n\n// Actions\nvar ACTION_ALL = 'all';\nvar ACTION_CROP = 'crop';\nvar ACTION_MOVE = 'move';\nvar ACTION_ZOOM = 'zoom';\nvar ACTION_EAST = 'e';\nvar ACTION_WEST = 'w';\nvar ACTION_SOUTH = 's';\nvar ACTION_NORTH = 'n';\nvar ACTION_NORTH_EAST = 'ne';\nvar ACTION_NORTH_WEST = 'nw';\nvar ACTION_SOUTH_EAST = 'se';\nvar ACTION_SOUTH_WEST = 'sw';\n\n// Classes\nvar CLASS_CROP = \"\".concat(NAMESPACE, \"-crop\");\nvar CLASS_DISABLED = \"\".concat(NAMESPACE, \"-disabled\");\nvar CLASS_HIDDEN = \"\".concat(NAMESPACE, \"-hidden\");\nvar CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\nvar CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\nvar CLASS_MODAL = \"\".concat(NAMESPACE, \"-modal\");\nvar CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\");\n\n// Data keys\nvar DATA_ACTION = \"\".concat(NAMESPACE, \"Action\");\nvar DATA_PREVIEW = \"\".concat(NAMESPACE, \"Preview\");\n\n// Drag modes\nvar DRAG_MODE_CROP = 'crop';\nvar DRAG_MODE_MOVE = 'move';\nvar DRAG_MODE_NONE = 'none';\n\n// Events\nvar EVENT_CROP = 'crop';\nvar EVENT_CROP_END = 'cropend';\nvar EVENT_CROP_MOVE = 'cropmove';\nvar EVENT_CROP_START = 'cropstart';\nvar EVENT_DBLCLICK = 'dblclick';\nvar EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\nvar EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\nvar EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\nvar EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\nvar EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\nvar EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\nvar EVENT_READY = 'ready';\nvar EVENT_RESIZE = 'resize';\nvar EVENT_WHEEL = 'wheel';\nvar EVENT_ZOOM = 'zoom';\n\n// Mime types\nvar MIME_TYPE_JPEG = 'image/jpeg';\n\n// RegExps\nvar REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/;\nvar REGEXP_DATA_URL = /^data:/;\nvar REGEXP_DATA_URL_JPEG = /^data:image\\/jpeg;base64,/;\nvar REGEXP_TAG_NAME = /^img|canvas$/i;\n\n// Misc\n// Inspired by the default width and height of a canvas element.\nvar MIN_CONTAINER_WIDTH = 200;\nvar MIN_CONTAINER_HEIGHT = 100;\n\nvar DEFAULTS = {\n  // Define the view mode of the cropper\n  viewMode: 0,\n  // 0, 1, 2, 3\n\n  // Define the dragging mode of the cropper\n  dragMode: DRAG_MODE_CROP,\n  // 'crop', 'move' or 'none'\n\n  // Define the initial aspect ratio of the crop box\n  initialAspectRatio: NaN,\n  // Define the aspect ratio of the crop box\n  aspectRatio: NaN,\n  // An object with the previous cropping result data\n  data: null,\n  // A selector for adding extra containers to preview\n  preview: '',\n  // Re-render the cropper when resize the window\n  responsive: true,\n  // Restore the cropped area after resize the window\n  restore: true,\n  // Check if the current image is a cross-origin image\n  checkCrossOrigin: true,\n  // Check the current image's Exif Orientation information\n  checkOrientation: true,\n  // Show the black modal\n  modal: true,\n  // Show the dashed lines for guiding\n  guides: true,\n  // Show the center indicator for guiding\n  center: true,\n  // Show the white modal to highlight the crop box\n  highlight: true,\n  // Show the grid background\n  background: true,\n  // Enable to crop the image automatically when initialize\n  autoCrop: true,\n  // Define the percentage of automatic cropping area when initializes\n  autoCropArea: 0.8,\n  // Enable to move the image\n  movable: true,\n  // Enable to rotate the image\n  rotatable: true,\n  // Enable to scale the image\n  scalable: true,\n  // Enable to zoom the image\n  zoomable: true,\n  // Enable to zoom the image by dragging touch\n  zoomOnTouch: true,\n  // Enable to zoom the image by wheeling mouse\n  zoomOnWheel: true,\n  // Define zoom ratio when zoom the image by wheeling mouse\n  wheelZoomRatio: 0.1,\n  // Enable to move the crop box\n  cropBoxMovable: true,\n  // Enable to resize the crop box\n  cropBoxResizable: true,\n  // Toggle drag mode between \"crop\" and \"move\" when click twice on the cropper\n  toggleDragModeOnDblclick: true,\n  // Size limitation\n  minCanvasWidth: 0,\n  minCanvasHeight: 0,\n  minCropBoxWidth: 0,\n  minCropBoxHeight: 0,\n  minContainerWidth: MIN_CONTAINER_WIDTH,\n  minContainerHeight: MIN_CONTAINER_HEIGHT,\n  // Shortcuts of events\n  ready: null,\n  cropstart: null,\n  cropmove: null,\n  cropend: null,\n  crop: null,\n  zoom: null\n};\n\nvar TEMPLATE = '<div class=\"cropper-container\" touch-action=\"none\">' + '<div class=\"cropper-wrap-box\">' + '<div class=\"cropper-canvas\"></div>' + '</div>' + '<div class=\"cropper-drag-box\"></div>' + '<div class=\"cropper-crop-box\">' + '<span class=\"cropper-view-box\"></span>' + '<span class=\"cropper-dashed dashed-h\"></span>' + '<span class=\"cropper-dashed dashed-v\"></span>' + '<span class=\"cropper-center\"></span>' + '<span class=\"cropper-face\"></span>' + '<span class=\"cropper-line line-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-line line-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-line line-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-line line-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-point point-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-point point-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-point point-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-ne\" data-cropper-action=\"ne\"></span>' + '<span class=\"cropper-point point-nw\" data-cropper-action=\"nw\"></span>' + '<span class=\"cropper-point point-sw\" data-cropper-action=\"sw\"></span>' + '<span class=\"cropper-point point-se\" data-cropper-action=\"se\"></span>' + '</div>' + '</div>';\n\n/**\n * Check if the given value is not a number.\n */\nvar isNaN = Number.isNaN || WINDOW.isNaN;\n\n/**\n * Check if the given value is a number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n */\nfunction isNumber(value) {\n  return typeof value === 'number' && !isNaN(value);\n}\n\n/**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\nvar isPositiveNumber = function isPositiveNumber(value) {\n  return value > 0 && value < Infinity;\n};\n\n/**\n * Check if the given value is undefined.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n */\nfunction isUndefined(value) {\n  return typeof value === 'undefined';\n}\n\n/**\n * Check if the given value is an object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n */\nfunction isObject(value) {\n  return _typeof(value) === 'object' && value !== null;\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Check if the given value is a plain object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n */\nfunction isPlainObject(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  try {\n    var _constructor = value.constructor;\n    var prototype = _constructor.prototype;\n    return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n  } catch (error) {\n    return false;\n  }\n}\n\n/**\n * Check if the given value is a function.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n */\nfunction isFunction(value) {\n  return typeof value === 'function';\n}\nvar slice = Array.prototype.slice;\n\n/**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\nfunction toArray(value) {\n  return Array.from ? Array.from(value) : slice.call(value);\n}\n\n/**\n * Iterate the given data.\n * @param {*} data - The data to iterate.\n * @param {Function} callback - The process function for each element.\n * @returns {*} The original data.\n */\nfunction forEach(data, callback) {\n  if (data && isFunction(callback)) {\n    if (Array.isArray(data) || isNumber(data.length) /* array-like */) {\n      toArray(data).forEach(function (value, key) {\n        callback.call(data, value, key, data);\n      });\n    } else if (isObject(data)) {\n      Object.keys(data).forEach(function (key) {\n        callback.call(data, data[key], key, data);\n      });\n    }\n  }\n  return data;\n}\n\n/**\n * Extend the given object.\n * @param {*} target - The target object to extend.\n * @param {*} args - The rest objects for merging to the target object.\n * @returns {Object} The extended object.\n */\nvar assign = Object.assign || function assign(target) {\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  if (isObject(target) && args.length > 0) {\n    args.forEach(function (arg) {\n      if (isObject(arg)) {\n        Object.keys(arg).forEach(function (key) {\n          target[key] = arg[key];\n        });\n      }\n    });\n  }\n  return target;\n};\nvar REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n\n/**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\nfunction normalizeDecimalNumber(value) {\n  var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n  return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n}\nvar REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/;\n\n/**\n * Apply styles to the given element.\n * @param {Element} element - The target element.\n * @param {Object} styles - The styles for applying.\n */\nfunction setStyle(element, styles) {\n  var style = element.style;\n  forEach(styles, function (value, property) {\n    if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n      value = \"\".concat(value, \"px\");\n    }\n    style[property] = value;\n  });\n}\n\n/**\n * Check if the given element has a special class.\n * @param {Element} element - The element to check.\n * @param {string} value - The class to search.\n * @returns {boolean} Returns `true` if the special class was found.\n */\nfunction hasClass(element, value) {\n  return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n}\n\n/**\n * Add classes to the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be added.\n */\nfunction addClass(element, value) {\n  if (!value) {\n    return;\n  }\n  if (isNumber(element.length)) {\n    forEach(element, function (elem) {\n      addClass(elem, value);\n    });\n    return;\n  }\n  if (element.classList) {\n    element.classList.add(value);\n    return;\n  }\n  var className = element.className.trim();\n  if (!className) {\n    element.className = value;\n  } else if (className.indexOf(value) < 0) {\n    element.className = \"\".concat(className, \" \").concat(value);\n  }\n}\n\n/**\n * Remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be removed.\n */\nfunction removeClass(element, value) {\n  if (!value) {\n    return;\n  }\n  if (isNumber(element.length)) {\n    forEach(element, function (elem) {\n      removeClass(elem, value);\n    });\n    return;\n  }\n  if (element.classList) {\n    element.classList.remove(value);\n    return;\n  }\n  if (element.className.indexOf(value) >= 0) {\n    element.className = element.className.replace(value, '');\n  }\n}\n\n/**\n * Add or remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be toggled.\n * @param {boolean} added - Add only.\n */\nfunction toggleClass(element, value, added) {\n  if (!value) {\n    return;\n  }\n  if (isNumber(element.length)) {\n    forEach(element, function (elem) {\n      toggleClass(elem, value, added);\n    });\n    return;\n  }\n\n  // IE10-11 doesn't support the second parameter of `classList.toggle`\n  if (added) {\n    addClass(element, value);\n  } else {\n    removeClass(element, value);\n  }\n}\nvar REGEXP_CAMEL_CASE = /([a-z\\d])([A-Z])/g;\n\n/**\n * Transform the given string from camelCase to kebab-case\n * @param {string} value - The value to transform.\n * @returns {string} The transformed value.\n */\nfunction toParamCase(value) {\n  return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase();\n}\n\n/**\n * Get data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to get.\n * @returns {string} The data value.\n */\nfunction getData(element, name) {\n  if (isObject(element[name])) {\n    return element[name];\n  }\n  if (element.dataset) {\n    return element.dataset[name];\n  }\n  return element.getAttribute(\"data-\".concat(toParamCase(name)));\n}\n\n/**\n * Set data to the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to set.\n * @param {string} data - The data value.\n */\nfunction setData(element, name, data) {\n  if (isObject(data)) {\n    element[name] = data;\n  } else if (element.dataset) {\n    element.dataset[name] = data;\n  } else {\n    element.setAttribute(\"data-\".concat(toParamCase(name)), data);\n  }\n}\n\n/**\n * Remove data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to remove.\n */\nfunction removeData(element, name) {\n  if (isObject(element[name])) {\n    try {\n      delete element[name];\n    } catch (error) {\n      element[name] = undefined;\n    }\n  } else if (element.dataset) {\n    // #128 Safari not allows to delete dataset property\n    try {\n      delete element.dataset[name];\n    } catch (error) {\n      element.dataset[name] = undefined;\n    }\n  } else {\n    element.removeAttribute(\"data-\".concat(toParamCase(name)));\n  }\n}\nvar REGEXP_SPACES = /\\s\\s*/;\nvar onceSupported = function () {\n  var supported = false;\n  if (IS_BROWSER) {\n    var once = false;\n    var listener = function listener() {};\n    var options = Object.defineProperty({}, 'once', {\n      get: function get() {\n        supported = true;\n        return once;\n      },\n      /**\n       * This setter can fix a `TypeError` in strict mode\n       * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n       * @param {boolean} value - The value to set\n       */\n      set: function set(value) {\n        once = value;\n      }\n    });\n    WINDOW.addEventListener('test', listener, options);\n    WINDOW.removeEventListener('test', listener, options);\n  }\n  return supported;\n}();\n\n/**\n * Remove event listener from the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\nfunction removeListener(element, type, listener) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var handler = listener;\n  type.trim().split(REGEXP_SPACES).forEach(function (event) {\n    if (!onceSupported) {\n      var listeners = element.listeners;\n      if (listeners && listeners[event] && listeners[event][listener]) {\n        handler = listeners[event][listener];\n        delete listeners[event][listener];\n        if (Object.keys(listeners[event]).length === 0) {\n          delete listeners[event];\n        }\n        if (Object.keys(listeners).length === 0) {\n          delete element.listeners;\n        }\n      }\n    }\n    element.removeEventListener(event, handler, options);\n  });\n}\n\n/**\n * Add event listener to the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\nfunction addListener(element, type, listener) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var _handler = listener;\n  type.trim().split(REGEXP_SPACES).forEach(function (event) {\n    if (options.once && !onceSupported) {\n      var _element$listeners = element.listeners,\n        listeners = _element$listeners === void 0 ? {} : _element$listeners;\n      _handler = function handler() {\n        delete listeners[event][listener];\n        element.removeEventListener(event, _handler, options);\n        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          args[_key2] = arguments[_key2];\n        }\n        listener.apply(element, args);\n      };\n      if (!listeners[event]) {\n        listeners[event] = {};\n      }\n      if (listeners[event][listener]) {\n        element.removeEventListener(event, listeners[event][listener], options);\n      }\n      listeners[event][listener] = _handler;\n      element.listeners = listeners;\n    }\n    element.addEventListener(event, _handler, options);\n  });\n}\n\n/**\n * Dispatch event on the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Object} data - The additional event data.\n * @returns {boolean} Indicate if the event is default prevented or not.\n */\nfunction dispatchEvent(element, type, data) {\n  var event;\n\n  // Event and CustomEvent on IE9-11 are global objects, not constructors\n  if (isFunction(Event) && isFunction(CustomEvent)) {\n    event = new CustomEvent(type, {\n      detail: data,\n      bubbles: true,\n      cancelable: true\n    });\n  } else {\n    event = document.createEvent('CustomEvent');\n    event.initCustomEvent(type, true, true, data);\n  }\n  return element.dispatchEvent(event);\n}\n\n/**\n * Get the offset base on the document.\n * @param {Element} element - The target element.\n * @returns {Object} The offset data.\n */\nfunction getOffset(element) {\n  var box = element.getBoundingClientRect();\n  return {\n    left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n    top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n  };\n}\nvar location = WINDOW.location;\nvar REGEXP_ORIGINS = /^(\\w+:)\\/\\/([^:/?#]*):?(\\d*)/i;\n\n/**\n * Check if the given URL is a cross origin URL.\n * @param {string} url - The target URL.\n * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.\n */\nfunction isCrossOriginURL(url) {\n  var parts = url.match(REGEXP_ORIGINS);\n  return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);\n}\n\n/**\n * Add timestamp to the given URL.\n * @param {string} url - The target URL.\n * @returns {string} The result URL.\n */\nfunction addTimestamp(url) {\n  var timestamp = \"timestamp=\".concat(new Date().getTime());\n  return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;\n}\n\n/**\n * Get transforms base on the given object.\n * @param {Object} obj - The target object.\n * @returns {string} A string contains transform values.\n */\nfunction getTransforms(_ref) {\n  var rotate = _ref.rotate,\n    scaleX = _ref.scaleX,\n    scaleY = _ref.scaleY,\n    translateX = _ref.translateX,\n    translateY = _ref.translateY;\n  var values = [];\n  if (isNumber(translateX) && translateX !== 0) {\n    values.push(\"translateX(\".concat(translateX, \"px)\"));\n  }\n  if (isNumber(translateY) && translateY !== 0) {\n    values.push(\"translateY(\".concat(translateY, \"px)\"));\n  }\n\n  // Rotate should come first before scale to match orientation transform\n  if (isNumber(rotate) && rotate !== 0) {\n    values.push(\"rotate(\".concat(rotate, \"deg)\"));\n  }\n  if (isNumber(scaleX) && scaleX !== 1) {\n    values.push(\"scaleX(\".concat(scaleX, \")\"));\n  }\n  if (isNumber(scaleY) && scaleY !== 1) {\n    values.push(\"scaleY(\".concat(scaleY, \")\"));\n  }\n  var transform = values.length ? values.join(' ') : 'none';\n  return {\n    WebkitTransform: transform,\n    msTransform: transform,\n    transform: transform\n  };\n}\n\n/**\n * Get the max ratio of a group of pointers.\n * @param {string} pointers - The target pointers.\n * @returns {number} The result ratio.\n */\nfunction getMaxZoomRatio(pointers) {\n  var pointers2 = _objectSpread2({}, pointers);\n  var maxRatio = 0;\n  forEach(pointers, function (pointer, pointerId) {\n    delete pointers2[pointerId];\n    forEach(pointers2, function (pointer2) {\n      var x1 = Math.abs(pointer.startX - pointer2.startX);\n      var y1 = Math.abs(pointer.startY - pointer2.startY);\n      var x2 = Math.abs(pointer.endX - pointer2.endX);\n      var y2 = Math.abs(pointer.endY - pointer2.endY);\n      var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n      var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n      var ratio = (z2 - z1) / z1;\n      if (Math.abs(ratio) > Math.abs(maxRatio)) {\n        maxRatio = ratio;\n      }\n    });\n  });\n  return maxRatio;\n}\n\n/**\n * Get a pointer from an event object.\n * @param {Object} event - The target event object.\n * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n * @returns {Object} The result pointer contains start and/or end point coordinates.\n */\nfunction getPointer(_ref2, endOnly) {\n  var pageX = _ref2.pageX,\n    pageY = _ref2.pageY;\n  var end = {\n    endX: pageX,\n    endY: pageY\n  };\n  return endOnly ? end : _objectSpread2({\n    startX: pageX,\n    startY: pageY\n  }, end);\n}\n\n/**\n * Get the center point coordinate of a group of pointers.\n * @param {Object} pointers - The target pointers.\n * @returns {Object} The center point coordinate.\n */\nfunction getPointersCenter(pointers) {\n  var pageX = 0;\n  var pageY = 0;\n  var count = 0;\n  forEach(pointers, function (_ref3) {\n    var startX = _ref3.startX,\n      startY = _ref3.startY;\n    pageX += startX;\n    pageY += startY;\n    count += 1;\n  });\n  pageX /= count;\n  pageY /= count;\n  return {\n    pageX: pageX,\n    pageY: pageY\n  };\n}\n\n/**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\nfunction getAdjustedSizes(_ref4) {\n  var aspectRatio = _ref4.aspectRatio,\n    height = _ref4.height,\n    width = _ref4.width;\n  var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain';\n  var isValidWidth = isPositiveNumber(width);\n  var isValidHeight = isPositiveNumber(height);\n  if (isValidWidth && isValidHeight) {\n    var adjustedWidth = height * aspectRatio;\n    if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n      height = width / aspectRatio;\n    } else {\n      width = height * aspectRatio;\n    }\n  } else if (isValidWidth) {\n    height = width / aspectRatio;\n  } else if (isValidHeight) {\n    width = height * aspectRatio;\n  }\n  return {\n    width: width,\n    height: height\n  };\n}\n\n/**\n * Get the new sizes of a rectangle after rotated.\n * @param {Object} data - The original sizes.\n * @returns {Object} The result sizes.\n */\nfunction getRotatedSizes(_ref5) {\n  var width = _ref5.width,\n    height = _ref5.height,\n    degree = _ref5.degree;\n  degree = Math.abs(degree) % 180;\n  if (degree === 90) {\n    return {\n      width: height,\n      height: width\n    };\n  }\n  var arc = degree % 90 * Math.PI / 180;\n  var sinArc = Math.sin(arc);\n  var cosArc = Math.cos(arc);\n  var newWidth = width * cosArc + height * sinArc;\n  var newHeight = width * sinArc + height * cosArc;\n  return degree > 90 ? {\n    width: newHeight,\n    height: newWidth\n  } : {\n    width: newWidth,\n    height: newHeight\n  };\n}\n\n/**\n * Get a canvas which drew the given image.\n * @param {HTMLImageElement} image - The image for drawing.\n * @param {Object} imageData - The image data.\n * @param {Object} canvasData - The canvas data.\n * @param {Object} options - The options.\n * @returns {HTMLCanvasElement} The result canvas.\n */\nfunction getSourceCanvas(image, _ref6, _ref7, _ref8) {\n  var imageAspectRatio = _ref6.aspectRatio,\n    imageNaturalWidth = _ref6.naturalWidth,\n    imageNaturalHeight = _ref6.naturalHeight,\n    _ref6$rotate = _ref6.rotate,\n    rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate,\n    _ref6$scaleX = _ref6.scaleX,\n    scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX,\n    _ref6$scaleY = _ref6.scaleY,\n    scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY;\n  var aspectRatio = _ref7.aspectRatio,\n    naturalWidth = _ref7.naturalWidth,\n    naturalHeight = _ref7.naturalHeight;\n  var _ref8$fillColor = _ref8.fillColor,\n    fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor,\n    _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,\n    imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE,\n    _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,\n    imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ,\n    _ref8$maxWidth = _ref8.maxWidth,\n    maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth,\n    _ref8$maxHeight = _ref8.maxHeight,\n    maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight,\n    _ref8$minWidth = _ref8.minWidth,\n    minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth,\n    _ref8$minHeight = _ref8.minHeight,\n    minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight;\n  var canvas = document.createElement('canvas');\n  var context = canvas.getContext('2d');\n  var maxSizes = getAdjustedSizes({\n    aspectRatio: aspectRatio,\n    width: maxWidth,\n    height: maxHeight\n  });\n  var minSizes = getAdjustedSizes({\n    aspectRatio: aspectRatio,\n    width: minWidth,\n    height: minHeight\n  }, 'cover');\n  var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));\n  var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight));\n\n  // Note: should always use image's natural sizes for drawing as\n  // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90\n  var destMaxSizes = getAdjustedSizes({\n    aspectRatio: imageAspectRatio,\n    width: maxWidth,\n    height: maxHeight\n  });\n  var destMinSizes = getAdjustedSizes({\n    aspectRatio: imageAspectRatio,\n    width: minWidth,\n    height: minHeight\n  }, 'cover');\n  var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth));\n  var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight));\n  var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight];\n  canvas.width = normalizeDecimalNumber(width);\n  canvas.height = normalizeDecimalNumber(height);\n  context.fillStyle = fillColor;\n  context.fillRect(0, 0, width, height);\n  context.save();\n  context.translate(width / 2, height / 2);\n  context.rotate(rotate * Math.PI / 180);\n  context.scale(scaleX, scaleY);\n  context.imageSmoothingEnabled = imageSmoothingEnabled;\n  context.imageSmoothingQuality = imageSmoothingQuality;\n  context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) {\n    return Math.floor(normalizeDecimalNumber(param));\n  }))));\n  context.restore();\n  return canvas;\n}\nvar fromCharCode = String.fromCharCode;\n\n/**\n * Get string from char code in data view.\n * @param {DataView} dataView - The data view for read.\n * @param {number} start - The start index.\n * @param {number} length - The read length.\n * @returns {string} The read result.\n */\nfunction getStringFromCharCode(dataView, start, length) {\n  var str = '';\n  length += start;\n  for (var i = start; i < length; i += 1) {\n    str += fromCharCode(dataView.getUint8(i));\n  }\n  return str;\n}\nvar REGEXP_DATA_URL_HEAD = /^data:.*,/;\n\n/**\n * Transform Data URL to array buffer.\n * @param {string} dataURL - The Data URL to transform.\n * @returns {ArrayBuffer} The result array buffer.\n */\nfunction dataURLToArrayBuffer(dataURL) {\n  var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');\n  var binary = atob(base64);\n  var arrayBuffer = new ArrayBuffer(binary.length);\n  var uint8 = new Uint8Array(arrayBuffer);\n  forEach(uint8, function (value, i) {\n    uint8[i] = binary.charCodeAt(i);\n  });\n  return arrayBuffer;\n}\n\n/**\n * Transform array buffer to Data URL.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {string} mimeType - The mime type of the Data URL.\n * @returns {string} The result Data URL.\n */\nfunction arrayBufferToDataURL(arrayBuffer, mimeType) {\n  var chunks = [];\n\n  // Chunk Typed Array for better performance (#435)\n  var chunkSize = 8192;\n  var uint8 = new Uint8Array(arrayBuffer);\n  while (uint8.length > 0) {\n    // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n    // eslint-disable-next-line prefer-spread\n    chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n    uint8 = uint8.subarray(chunkSize);\n  }\n  return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n}\n\n/**\n * Get orientation value from given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {number} The read orientation value.\n */\nfunction resetAndGetOrientation(arrayBuffer) {\n  var dataView = new DataView(arrayBuffer);\n  var orientation;\n\n  // Ignores range error when the image does not have correct Exif information\n  try {\n    var littleEndian;\n    var app1Start;\n    var ifdStart;\n\n    // Only handle JPEG image (start by 0xFFD8)\n    if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n      var length = dataView.byteLength;\n      var offset = 2;\n      while (offset + 1 < length) {\n        if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n          app1Start = offset;\n          break;\n        }\n        offset += 1;\n      }\n    }\n    if (app1Start) {\n      var exifIDCode = app1Start + 4;\n      var tiffOffset = app1Start + 10;\n      if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n        var endianness = dataView.getUint16(tiffOffset);\n        littleEndian = endianness === 0x4949;\n        if (littleEndian || endianness === 0x4D4D /* bigEndian */) {\n          if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n            var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n            if (firstIFDOffset >= 0x00000008) {\n              ifdStart = tiffOffset + firstIFDOffset;\n            }\n          }\n        }\n      }\n    }\n    if (ifdStart) {\n      var _length = dataView.getUint16(ifdStart, littleEndian);\n      var _offset;\n      var i;\n      for (i = 0; i < _length; i += 1) {\n        _offset = ifdStart + i * 12 + 2;\n        if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {\n          // 8 is the offset of the current tag's value\n          _offset += 8;\n\n          // Get the original orientation value\n          orientation = dataView.getUint16(_offset, littleEndian);\n\n          // Override the orientation with its default value\n          dataView.setUint16(_offset, 1, littleEndian);\n          break;\n        }\n      }\n    }\n  } catch (error) {\n    orientation = 1;\n  }\n  return orientation;\n}\n\n/**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\nfunction parseOrientation(orientation) {\n  var rotate = 0;\n  var scaleX = 1;\n  var scaleY = 1;\n  switch (orientation) {\n    // Flip horizontal\n    case 2:\n      scaleX = -1;\n      break;\n\n    // Rotate left 180°\n    case 3:\n      rotate = -180;\n      break;\n\n    // Flip vertical\n    case 4:\n      scaleY = -1;\n      break;\n\n    // Flip vertical and rotate right 90°\n    case 5:\n      rotate = 90;\n      scaleY = -1;\n      break;\n\n    // Rotate right 90°\n    case 6:\n      rotate = 90;\n      break;\n\n    // Flip horizontal and rotate right 90°\n    case 7:\n      rotate = 90;\n      scaleX = -1;\n      break;\n\n    // Rotate left 90°\n    case 8:\n      rotate = -90;\n      break;\n  }\n  return {\n    rotate: rotate,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n\nvar render = {\n  render: function render() {\n    this.initContainer();\n    this.initCanvas();\n    this.initCropBox();\n    this.renderCanvas();\n    if (this.cropped) {\n      this.renderCropBox();\n    }\n  },\n  initContainer: function initContainer() {\n    var element = this.element,\n      options = this.options,\n      container = this.container,\n      cropper = this.cropper;\n    var minWidth = Number(options.minContainerWidth);\n    var minHeight = Number(options.minContainerHeight);\n    addClass(cropper, CLASS_HIDDEN);\n    removeClass(element, CLASS_HIDDEN);\n    var containerData = {\n      width: Math.max(container.offsetWidth, minWidth >= 0 ? minWidth : MIN_CONTAINER_WIDTH),\n      height: Math.max(container.offsetHeight, minHeight >= 0 ? minHeight : MIN_CONTAINER_HEIGHT)\n    };\n    this.containerData = containerData;\n    setStyle(cropper, {\n      width: containerData.width,\n      height: containerData.height\n    });\n    addClass(element, CLASS_HIDDEN);\n    removeClass(cropper, CLASS_HIDDEN);\n  },\n  // Canvas (image wrapper)\n  initCanvas: function initCanvas() {\n    var containerData = this.containerData,\n      imageData = this.imageData;\n    var viewMode = this.options.viewMode;\n    var rotated = Math.abs(imageData.rotate) % 180 === 90;\n    var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;\n    var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;\n    var aspectRatio = naturalWidth / naturalHeight;\n    var canvasWidth = containerData.width;\n    var canvasHeight = containerData.height;\n    if (containerData.height * aspectRatio > containerData.width) {\n      if (viewMode === 3) {\n        canvasWidth = containerData.height * aspectRatio;\n      } else {\n        canvasHeight = containerData.width / aspectRatio;\n      }\n    } else if (viewMode === 3) {\n      canvasHeight = containerData.width / aspectRatio;\n    } else {\n      canvasWidth = containerData.height * aspectRatio;\n    }\n    var canvasData = {\n      aspectRatio: aspectRatio,\n      naturalWidth: naturalWidth,\n      naturalHeight: naturalHeight,\n      width: canvasWidth,\n      height: canvasHeight\n    };\n    this.canvasData = canvasData;\n    this.limited = viewMode === 1 || viewMode === 2;\n    this.limitCanvas(true, true);\n    canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n    canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n    canvasData.left = (containerData.width - canvasData.width) / 2;\n    canvasData.top = (containerData.height - canvasData.height) / 2;\n    canvasData.oldLeft = canvasData.left;\n    canvasData.oldTop = canvasData.top;\n    this.initialCanvasData = assign({}, canvasData);\n  },\n  limitCanvas: function limitCanvas(sizeLimited, positionLimited) {\n    var options = this.options,\n      containerData = this.containerData,\n      canvasData = this.canvasData,\n      cropBoxData = this.cropBoxData;\n    var viewMode = options.viewMode;\n    var aspectRatio = canvasData.aspectRatio;\n    var cropped = this.cropped && cropBoxData;\n    if (sizeLimited) {\n      var minCanvasWidth = Number(options.minCanvasWidth) || 0;\n      var minCanvasHeight = Number(options.minCanvasHeight) || 0;\n      if (viewMode > 1) {\n        minCanvasWidth = Math.max(minCanvasWidth, containerData.width);\n        minCanvasHeight = Math.max(minCanvasHeight, containerData.height);\n        if (viewMode === 3) {\n          if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n            minCanvasWidth = minCanvasHeight * aspectRatio;\n          } else {\n            minCanvasHeight = minCanvasWidth / aspectRatio;\n          }\n        }\n      } else if (viewMode > 0) {\n        if (minCanvasWidth) {\n          minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);\n        } else if (minCanvasHeight) {\n          minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);\n        } else if (cropped) {\n          minCanvasWidth = cropBoxData.width;\n          minCanvasHeight = cropBoxData.height;\n          if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n            minCanvasWidth = minCanvasHeight * aspectRatio;\n          } else {\n            minCanvasHeight = minCanvasWidth / aspectRatio;\n          }\n        }\n      }\n      var _getAdjustedSizes = getAdjustedSizes({\n        aspectRatio: aspectRatio,\n        width: minCanvasWidth,\n        height: minCanvasHeight\n      });\n      minCanvasWidth = _getAdjustedSizes.width;\n      minCanvasHeight = _getAdjustedSizes.height;\n      canvasData.minWidth = minCanvasWidth;\n      canvasData.minHeight = minCanvasHeight;\n      canvasData.maxWidth = Infinity;\n      canvasData.maxHeight = Infinity;\n    }\n    if (positionLimited) {\n      if (viewMode > (cropped ? 0 : 1)) {\n        var newCanvasLeft = containerData.width - canvasData.width;\n        var newCanvasTop = containerData.height - canvasData.height;\n        canvasData.minLeft = Math.min(0, newCanvasLeft);\n        canvasData.minTop = Math.min(0, newCanvasTop);\n        canvasData.maxLeft = Math.max(0, newCanvasLeft);\n        canvasData.maxTop = Math.max(0, newCanvasTop);\n        if (cropped && this.limited) {\n          canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));\n          canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));\n          canvasData.maxLeft = cropBoxData.left;\n          canvasData.maxTop = cropBoxData.top;\n          if (viewMode === 2) {\n            if (canvasData.width >= containerData.width) {\n              canvasData.minLeft = Math.min(0, newCanvasLeft);\n              canvasData.maxLeft = Math.max(0, newCanvasLeft);\n            }\n            if (canvasData.height >= containerData.height) {\n              canvasData.minTop = Math.min(0, newCanvasTop);\n              canvasData.maxTop = Math.max(0, newCanvasTop);\n            }\n          }\n        }\n      } else {\n        canvasData.minLeft = -canvasData.width;\n        canvasData.minTop = -canvasData.height;\n        canvasData.maxLeft = containerData.width;\n        canvasData.maxTop = containerData.height;\n      }\n    }\n  },\n  renderCanvas: function renderCanvas(changed, transformed) {\n    var canvasData = this.canvasData,\n      imageData = this.imageData;\n    if (transformed) {\n      var _getRotatedSizes = getRotatedSizes({\n          width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),\n          height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),\n          degree: imageData.rotate || 0\n        }),\n        naturalWidth = _getRotatedSizes.width,\n        naturalHeight = _getRotatedSizes.height;\n      var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);\n      var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);\n      canvasData.left -= (width - canvasData.width) / 2;\n      canvasData.top -= (height - canvasData.height) / 2;\n      canvasData.width = width;\n      canvasData.height = height;\n      canvasData.aspectRatio = naturalWidth / naturalHeight;\n      canvasData.naturalWidth = naturalWidth;\n      canvasData.naturalHeight = naturalHeight;\n      this.limitCanvas(true, false);\n    }\n    if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {\n      canvasData.left = canvasData.oldLeft;\n    }\n    if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {\n      canvasData.top = canvasData.oldTop;\n    }\n    canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n    canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n    this.limitCanvas(false, true);\n    canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);\n    canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);\n    canvasData.oldLeft = canvasData.left;\n    canvasData.oldTop = canvasData.top;\n    setStyle(this.canvas, assign({\n      width: canvasData.width,\n      height: canvasData.height\n    }, getTransforms({\n      translateX: canvasData.left,\n      translateY: canvasData.top\n    })));\n    this.renderImage(changed);\n    if (this.cropped && this.limited) {\n      this.limitCropBox(true, true);\n    }\n  },\n  renderImage: function renderImage(changed) {\n    var canvasData = this.canvasData,\n      imageData = this.imageData;\n    var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);\n    var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);\n    assign(imageData, {\n      width: width,\n      height: height,\n      left: (canvasData.width - width) / 2,\n      top: (canvasData.height - height) / 2\n    });\n    setStyle(this.image, assign({\n      width: imageData.width,\n      height: imageData.height\n    }, getTransforms(assign({\n      translateX: imageData.left,\n      translateY: imageData.top\n    }, imageData))));\n    if (changed) {\n      this.output();\n    }\n  },\n  initCropBox: function initCropBox() {\n    var options = this.options,\n      canvasData = this.canvasData;\n    var aspectRatio = options.aspectRatio || options.initialAspectRatio;\n    var autoCropArea = Number(options.autoCropArea) || 0.8;\n    var cropBoxData = {\n      width: canvasData.width,\n      height: canvasData.height\n    };\n    if (aspectRatio) {\n      if (canvasData.height * aspectRatio > canvasData.width) {\n        cropBoxData.height = cropBoxData.width / aspectRatio;\n      } else {\n        cropBoxData.width = cropBoxData.height * aspectRatio;\n      }\n    }\n    this.cropBoxData = cropBoxData;\n    this.limitCropBox(true, true);\n\n    // Initialize auto crop area\n    cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n    cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n\n    // The width/height of auto crop area must large than \"minWidth/Height\"\n    cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);\n    cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);\n    cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;\n    cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;\n    cropBoxData.oldLeft = cropBoxData.left;\n    cropBoxData.oldTop = cropBoxData.top;\n    this.initialCropBoxData = assign({}, cropBoxData);\n  },\n  limitCropBox: function limitCropBox(sizeLimited, positionLimited) {\n    var options = this.options,\n      containerData = this.containerData,\n      canvasData = this.canvasData,\n      cropBoxData = this.cropBoxData,\n      limited = this.limited;\n    var aspectRatio = options.aspectRatio;\n    if (sizeLimited) {\n      var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;\n      var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;\n      var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width;\n      var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height;\n\n      // The min/maxCropBoxWidth/Height must be less than container's width/height\n      minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);\n      minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);\n      if (aspectRatio) {\n        if (minCropBoxWidth && minCropBoxHeight) {\n          if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {\n            minCropBoxHeight = minCropBoxWidth / aspectRatio;\n          } else {\n            minCropBoxWidth = minCropBoxHeight * aspectRatio;\n          }\n        } else if (minCropBoxWidth) {\n          minCropBoxHeight = minCropBoxWidth / aspectRatio;\n        } else if (minCropBoxHeight) {\n          minCropBoxWidth = minCropBoxHeight * aspectRatio;\n        }\n        if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {\n          maxCropBoxHeight = maxCropBoxWidth / aspectRatio;\n        } else {\n          maxCropBoxWidth = maxCropBoxHeight * aspectRatio;\n        }\n      }\n\n      // The minWidth/Height must be less than maxWidth/Height\n      cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);\n      cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);\n      cropBoxData.maxWidth = maxCropBoxWidth;\n      cropBoxData.maxHeight = maxCropBoxHeight;\n    }\n    if (positionLimited) {\n      if (limited) {\n        cropBoxData.minLeft = Math.max(0, canvasData.left);\n        cropBoxData.minTop = Math.max(0, canvasData.top);\n        cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;\n        cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;\n      } else {\n        cropBoxData.minLeft = 0;\n        cropBoxData.minTop = 0;\n        cropBoxData.maxLeft = containerData.width - cropBoxData.width;\n        cropBoxData.maxTop = containerData.height - cropBoxData.height;\n      }\n    }\n  },\n  renderCropBox: function renderCropBox() {\n    var options = this.options,\n      containerData = this.containerData,\n      cropBoxData = this.cropBoxData;\n    if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {\n      cropBoxData.left = cropBoxData.oldLeft;\n    }\n    if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {\n      cropBoxData.top = cropBoxData.oldTop;\n    }\n    cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n    cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n    this.limitCropBox(false, true);\n    cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);\n    cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);\n    cropBoxData.oldLeft = cropBoxData.left;\n    cropBoxData.oldTop = cropBoxData.top;\n    if (options.movable && options.cropBoxMovable) {\n      // Turn to move the canvas when the crop box is equal to the container\n      setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);\n    }\n    setStyle(this.cropBox, assign({\n      width: cropBoxData.width,\n      height: cropBoxData.height\n    }, getTransforms({\n      translateX: cropBoxData.left,\n      translateY: cropBoxData.top\n    })));\n    if (this.cropped && this.limited) {\n      this.limitCanvas(true, true);\n    }\n    if (!this.disabled) {\n      this.output();\n    }\n  },\n  output: function output() {\n    this.preview();\n    dispatchEvent(this.element, EVENT_CROP, this.getData());\n  }\n};\n\nvar preview = {\n  initPreview: function initPreview() {\n    var element = this.element,\n      crossOrigin = this.crossOrigin;\n    var preview = this.options.preview;\n    var url = crossOrigin ? this.crossOriginUrl : this.url;\n    var alt = element.alt || 'The image to preview';\n    var image = document.createElement('img');\n    if (crossOrigin) {\n      image.crossOrigin = crossOrigin;\n    }\n    image.src = url;\n    image.alt = alt;\n    this.viewBox.appendChild(image);\n    this.viewBoxImage = image;\n    if (!preview) {\n      return;\n    }\n    var previews = preview;\n    if (typeof preview === 'string') {\n      previews = element.ownerDocument.querySelectorAll(preview);\n    } else if (preview.querySelector) {\n      previews = [preview];\n    }\n    this.previews = previews;\n    forEach(previews, function (el) {\n      var img = document.createElement('img');\n\n      // Save the original size for recover\n      setData(el, DATA_PREVIEW, {\n        width: el.offsetWidth,\n        height: el.offsetHeight,\n        html: el.innerHTML\n      });\n      if (crossOrigin) {\n        img.crossOrigin = crossOrigin;\n      }\n      img.src = url;\n      img.alt = alt;\n\n      /**\n       * Override img element styles\n       * Add `display:block` to avoid margin top issue\n       * Add `height:auto` to override `height` attribute on IE8\n       * (Occur only when margin-top <= -height)\n       */\n      img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;\"';\n      el.innerHTML = '';\n      el.appendChild(img);\n    });\n  },\n  resetPreview: function resetPreview() {\n    forEach(this.previews, function (element) {\n      var data = getData(element, DATA_PREVIEW);\n      setStyle(element, {\n        width: data.width,\n        height: data.height\n      });\n      element.innerHTML = data.html;\n      removeData(element, DATA_PREVIEW);\n    });\n  },\n  preview: function preview() {\n    var imageData = this.imageData,\n      canvasData = this.canvasData,\n      cropBoxData = this.cropBoxData;\n    var cropBoxWidth = cropBoxData.width,\n      cropBoxHeight = cropBoxData.height;\n    var width = imageData.width,\n      height = imageData.height;\n    var left = cropBoxData.left - canvasData.left - imageData.left;\n    var top = cropBoxData.top - canvasData.top - imageData.top;\n    if (!this.cropped || this.disabled) {\n      return;\n    }\n    setStyle(this.viewBoxImage, assign({\n      width: width,\n      height: height\n    }, getTransforms(assign({\n      translateX: -left,\n      translateY: -top\n    }, imageData))));\n    forEach(this.previews, function (element) {\n      var data = getData(element, DATA_PREVIEW);\n      var originalWidth = data.width;\n      var originalHeight = data.height;\n      var newWidth = originalWidth;\n      var newHeight = originalHeight;\n      var ratio = 1;\n      if (cropBoxWidth) {\n        ratio = originalWidth / cropBoxWidth;\n        newHeight = cropBoxHeight * ratio;\n      }\n      if (cropBoxHeight && newHeight > originalHeight) {\n        ratio = originalHeight / cropBoxHeight;\n        newWidth = cropBoxWidth * ratio;\n        newHeight = originalHeight;\n      }\n      setStyle(element, {\n        width: newWidth,\n        height: newHeight\n      });\n      setStyle(element.getElementsByTagName('img')[0], assign({\n        width: width * ratio,\n        height: height * ratio\n      }, getTransforms(assign({\n        translateX: -left * ratio,\n        translateY: -top * ratio\n      }, imageData))));\n    });\n  }\n};\n\nvar events = {\n  bind: function bind() {\n    var element = this.element,\n      options = this.options,\n      cropper = this.cropper;\n    if (isFunction(options.cropstart)) {\n      addListener(element, EVENT_CROP_START, options.cropstart);\n    }\n    if (isFunction(options.cropmove)) {\n      addListener(element, EVENT_CROP_MOVE, options.cropmove);\n    }\n    if (isFunction(options.cropend)) {\n      addListener(element, EVENT_CROP_END, options.cropend);\n    }\n    if (isFunction(options.crop)) {\n      addListener(element, EVENT_CROP, options.crop);\n    }\n    if (isFunction(options.zoom)) {\n      addListener(element, EVENT_ZOOM, options.zoom);\n    }\n    addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this));\n    if (options.zoomable && options.zoomOnWheel) {\n      addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n        passive: false,\n        capture: true\n      });\n    }\n    if (options.toggleDragModeOnDblclick) {\n      addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n    }\n    addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this));\n    addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this));\n    if (options.responsive) {\n      addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n    }\n  },\n  unbind: function unbind() {\n    var element = this.element,\n      options = this.options,\n      cropper = this.cropper;\n    if (isFunction(options.cropstart)) {\n      removeListener(element, EVENT_CROP_START, options.cropstart);\n    }\n    if (isFunction(options.cropmove)) {\n      removeListener(element, EVENT_CROP_MOVE, options.cropmove);\n    }\n    if (isFunction(options.cropend)) {\n      removeListener(element, EVENT_CROP_END, options.cropend);\n    }\n    if (isFunction(options.crop)) {\n      removeListener(element, EVENT_CROP, options.crop);\n    }\n    if (isFunction(options.zoom)) {\n      removeListener(element, EVENT_ZOOM, options.zoom);\n    }\n    removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);\n    if (options.zoomable && options.zoomOnWheel) {\n      removeListener(cropper, EVENT_WHEEL, this.onWheel, {\n        passive: false,\n        capture: true\n      });\n    }\n    if (options.toggleDragModeOnDblclick) {\n      removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);\n    }\n    removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);\n    removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);\n    if (options.responsive) {\n      removeListener(window, EVENT_RESIZE, this.onResize);\n    }\n  }\n};\n\nvar handlers = {\n  resize: function resize() {\n    if (this.disabled) {\n      return;\n    }\n    var options = this.options,\n      container = this.container,\n      containerData = this.containerData;\n    var ratioX = container.offsetWidth / containerData.width;\n    var ratioY = container.offsetHeight / containerData.height;\n    var ratio = Math.abs(ratioX - 1) > Math.abs(ratioY - 1) ? ratioX : ratioY;\n\n    // Resize when width changed or height changed\n    if (ratio !== 1) {\n      var canvasData;\n      var cropBoxData;\n      if (options.restore) {\n        canvasData = this.getCanvasData();\n        cropBoxData = this.getCropBoxData();\n      }\n      this.render();\n      if (options.restore) {\n        this.setCanvasData(forEach(canvasData, function (n, i) {\n          canvasData[i] = n * ratio;\n        }));\n        this.setCropBoxData(forEach(cropBoxData, function (n, i) {\n          cropBoxData[i] = n * ratio;\n        }));\n      }\n    }\n  },\n  dblclick: function dblclick() {\n    if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {\n      return;\n    }\n    this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);\n  },\n  wheel: function wheel(event) {\n    var _this = this;\n    var ratio = Number(this.options.wheelZoomRatio) || 0.1;\n    var delta = 1;\n    if (this.disabled) {\n      return;\n    }\n    event.preventDefault();\n\n    // Limit wheel speed to prevent zoom too fast (#21)\n    if (this.wheeling) {\n      return;\n    }\n    this.wheeling = true;\n    setTimeout(function () {\n      _this.wheeling = false;\n    }, 50);\n    if (event.deltaY) {\n      delta = event.deltaY > 0 ? 1 : -1;\n    } else if (event.wheelDelta) {\n      delta = -event.wheelDelta / 120;\n    } else if (event.detail) {\n      delta = event.detail > 0 ? 1 : -1;\n    }\n    this.zoom(-delta * ratio, event);\n  },\n  cropStart: function cropStart(event) {\n    var buttons = event.buttons,\n      button = event.button;\n    if (this.disabled\n\n    // Handle mouse event and pointer event and ignore touch event\n    || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && (\n    // No primary button (Usually the left button)\n    isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0\n\n    // Open context menu\n    || event.ctrlKey)) {\n      return;\n    }\n    var options = this.options,\n      pointers = this.pointers;\n    var action;\n    if (event.changedTouches) {\n      // Handle touch event\n      forEach(event.changedTouches, function (touch) {\n        pointers[touch.identifier] = getPointer(touch);\n      });\n    } else {\n      // Handle mouse event and pointer event\n      pointers[event.pointerId || 0] = getPointer(event);\n    }\n    if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {\n      action = ACTION_ZOOM;\n    } else {\n      action = getData(event.target, DATA_ACTION);\n    }\n    if (!REGEXP_ACTIONS.test(action)) {\n      return;\n    }\n    if (dispatchEvent(this.element, EVENT_CROP_START, {\n      originalEvent: event,\n      action: action\n    }) === false) {\n      return;\n    }\n\n    // This line is required for preventing page zooming in iOS browsers\n    event.preventDefault();\n    this.action = action;\n    this.cropping = false;\n    if (action === ACTION_CROP) {\n      this.cropping = true;\n      addClass(this.dragBox, CLASS_MODAL);\n    }\n  },\n  cropMove: function cropMove(event) {\n    var action = this.action;\n    if (this.disabled || !action) {\n      return;\n    }\n    var pointers = this.pointers;\n    event.preventDefault();\n    if (dispatchEvent(this.element, EVENT_CROP_MOVE, {\n      originalEvent: event,\n      action: action\n    }) === false) {\n      return;\n    }\n    if (event.changedTouches) {\n      forEach(event.changedTouches, function (touch) {\n        // The first parameter should not be undefined (#432)\n        assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n      });\n    } else {\n      assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n    }\n    this.change(event);\n  },\n  cropEnd: function cropEnd(event) {\n    if (this.disabled) {\n      return;\n    }\n    var action = this.action,\n      pointers = this.pointers;\n    if (event.changedTouches) {\n      forEach(event.changedTouches, function (touch) {\n        delete pointers[touch.identifier];\n      });\n    } else {\n      delete pointers[event.pointerId || 0];\n    }\n    if (!action) {\n      return;\n    }\n    event.preventDefault();\n    if (!Object.keys(pointers).length) {\n      this.action = '';\n    }\n    if (this.cropping) {\n      this.cropping = false;\n      toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);\n    }\n    dispatchEvent(this.element, EVENT_CROP_END, {\n      originalEvent: event,\n      action: action\n    });\n  }\n};\n\nvar change = {\n  change: function change(event) {\n    var options = this.options,\n      canvasData = this.canvasData,\n      containerData = this.containerData,\n      cropBoxData = this.cropBoxData,\n      pointers = this.pointers;\n    var action = this.action;\n    var aspectRatio = options.aspectRatio;\n    var left = cropBoxData.left,\n      top = cropBoxData.top,\n      width = cropBoxData.width,\n      height = cropBoxData.height;\n    var right = left + width;\n    var bottom = top + height;\n    var minLeft = 0;\n    var minTop = 0;\n    var maxWidth = containerData.width;\n    var maxHeight = containerData.height;\n    var renderable = true;\n    var offset;\n\n    // Locking aspect ratio in \"free mode\" by holding shift key\n    if (!aspectRatio && event.shiftKey) {\n      aspectRatio = width && height ? width / height : 1;\n    }\n    if (this.limited) {\n      minLeft = cropBoxData.minLeft;\n      minTop = cropBoxData.minTop;\n      maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);\n      maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);\n    }\n    var pointer = pointers[Object.keys(pointers)[0]];\n    var range = {\n      x: pointer.endX - pointer.startX,\n      y: pointer.endY - pointer.startY\n    };\n    var check = function check(side) {\n      switch (side) {\n        case ACTION_EAST:\n          if (right + range.x > maxWidth) {\n            range.x = maxWidth - right;\n          }\n          break;\n        case ACTION_WEST:\n          if (left + range.x < minLeft) {\n            range.x = minLeft - left;\n          }\n          break;\n        case ACTION_NORTH:\n          if (top + range.y < minTop) {\n            range.y = minTop - top;\n          }\n          break;\n        case ACTION_SOUTH:\n          if (bottom + range.y > maxHeight) {\n            range.y = maxHeight - bottom;\n          }\n          break;\n      }\n    };\n    switch (action) {\n      // Move crop box\n      case ACTION_ALL:\n        left += range.x;\n        top += range.y;\n        break;\n\n      // Resize crop box\n      case ACTION_EAST:\n        if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n          renderable = false;\n          break;\n        }\n        check(ACTION_EAST);\n        width += range.x;\n        if (width < 0) {\n          action = ACTION_WEST;\n          width = -width;\n          left -= width;\n        }\n        if (aspectRatio) {\n          height = width / aspectRatio;\n          top += (cropBoxData.height - height) / 2;\n        }\n        break;\n      case ACTION_NORTH:\n        if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n          renderable = false;\n          break;\n        }\n        check(ACTION_NORTH);\n        height -= range.y;\n        top += range.y;\n        if (height < 0) {\n          action = ACTION_SOUTH;\n          height = -height;\n          top -= height;\n        }\n        if (aspectRatio) {\n          width = height * aspectRatio;\n          left += (cropBoxData.width - width) / 2;\n        }\n        break;\n      case ACTION_WEST:\n        if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n          renderable = false;\n          break;\n        }\n        check(ACTION_WEST);\n        width -= range.x;\n        left += range.x;\n        if (width < 0) {\n          action = ACTION_EAST;\n          width = -width;\n          left -= width;\n        }\n        if (aspectRatio) {\n          height = width / aspectRatio;\n          top += (cropBoxData.height - height) / 2;\n        }\n        break;\n      case ACTION_SOUTH:\n        if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n          renderable = false;\n          break;\n        }\n        check(ACTION_SOUTH);\n        height += range.y;\n        if (height < 0) {\n          action = ACTION_NORTH;\n          height = -height;\n          top -= height;\n        }\n        if (aspectRatio) {\n          width = height * aspectRatio;\n          left += (cropBoxData.width - width) / 2;\n        }\n        break;\n      case ACTION_NORTH_EAST:\n        if (aspectRatio) {\n          if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {\n            renderable = false;\n            break;\n          }\n          check(ACTION_NORTH);\n          height -= range.y;\n          top += range.y;\n          width = height * aspectRatio;\n        } else {\n          check(ACTION_NORTH);\n          check(ACTION_EAST);\n          if (range.x >= 0) {\n            if (right < maxWidth) {\n              width += range.x;\n            } else if (range.y <= 0 && top <= minTop) {\n              renderable = false;\n            }\n          } else {\n            width += range.x;\n          }\n          if (range.y <= 0) {\n            if (top > minTop) {\n              height -= range.y;\n              top += range.y;\n            }\n          } else {\n            height -= range.y;\n            top += range.y;\n          }\n        }\n        if (width < 0 && height < 0) {\n          action = ACTION_SOUTH_WEST;\n          height = -height;\n          width = -width;\n          top -= height;\n          left -= width;\n        } else if (width < 0) {\n          action = ACTION_NORTH_WEST;\n          width = -width;\n          left -= width;\n        } else if (height < 0) {\n          action = ACTION_SOUTH_EAST;\n          height = -height;\n          top -= height;\n        }\n        break;\n      case ACTION_NORTH_WEST:\n        if (aspectRatio) {\n          if (range.y <= 0 && (top <= minTop || left <= minLeft)) {\n            renderable = false;\n            break;\n          }\n          check(ACTION_NORTH);\n          height -= range.y;\n          top += range.y;\n          width = height * aspectRatio;\n          left += cropBoxData.width - width;\n        } else {\n          check(ACTION_NORTH);\n          check(ACTION_WEST);\n          if (range.x <= 0) {\n            if (left > minLeft) {\n              width -= range.x;\n              left += range.x;\n            } else if (range.y <= 0 && top <= minTop) {\n              renderable = false;\n            }\n          } else {\n            width -= range.x;\n            left += range.x;\n          }\n          if (range.y <= 0) {\n            if (top > minTop) {\n              height -= range.y;\n              top += range.y;\n            }\n          } else {\n            height -= range.y;\n            top += range.y;\n          }\n        }\n        if (width < 0 && height < 0) {\n          action = ACTION_SOUTH_EAST;\n          height = -height;\n          width = -width;\n          top -= height;\n          left -= width;\n        } else if (width < 0) {\n          action = ACTION_NORTH_EAST;\n          width = -width;\n          left -= width;\n        } else if (height < 0) {\n          action = ACTION_SOUTH_WEST;\n          height = -height;\n          top -= height;\n        }\n        break;\n      case ACTION_SOUTH_WEST:\n        if (aspectRatio) {\n          if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {\n            renderable = false;\n            break;\n          }\n          check(ACTION_WEST);\n          width -= range.x;\n          left += range.x;\n          height = width / aspectRatio;\n        } else {\n          check(ACTION_SOUTH);\n          check(ACTION_WEST);\n          if (range.x <= 0) {\n            if (left > minLeft) {\n              width -= range.x;\n              left += range.x;\n            } else if (range.y >= 0 && bottom >= maxHeight) {\n              renderable = false;\n            }\n          } else {\n            width -= range.x;\n            left += range.x;\n          }\n          if (range.y >= 0) {\n            if (bottom < maxHeight) {\n              height += range.y;\n            }\n          } else {\n            height += range.y;\n          }\n        }\n        if (width < 0 && height < 0) {\n          action = ACTION_NORTH_EAST;\n          height = -height;\n          width = -width;\n          top -= height;\n          left -= width;\n        } else if (width < 0) {\n          action = ACTION_SOUTH_EAST;\n          width = -width;\n          left -= width;\n        } else if (height < 0) {\n          action = ACTION_NORTH_WEST;\n          height = -height;\n          top -= height;\n        }\n        break;\n      case ACTION_SOUTH_EAST:\n        if (aspectRatio) {\n          if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {\n            renderable = false;\n            break;\n          }\n          check(ACTION_EAST);\n          width += range.x;\n          height = width / aspectRatio;\n        } else {\n          check(ACTION_SOUTH);\n          check(ACTION_EAST);\n          if (range.x >= 0) {\n            if (right < maxWidth) {\n              width += range.x;\n            } else if (range.y >= 0 && bottom >= maxHeight) {\n              renderable = false;\n            }\n          } else {\n            width += range.x;\n          }\n          if (range.y >= 0) {\n            if (bottom < maxHeight) {\n              height += range.y;\n            }\n          } else {\n            height += range.y;\n          }\n        }\n        if (width < 0 && height < 0) {\n          action = ACTION_NORTH_WEST;\n          height = -height;\n          width = -width;\n          top -= height;\n          left -= width;\n        } else if (width < 0) {\n          action = ACTION_SOUTH_WEST;\n          width = -width;\n          left -= width;\n        } else if (height < 0) {\n          action = ACTION_NORTH_EAST;\n          height = -height;\n          top -= height;\n        }\n        break;\n\n      // Move canvas\n      case ACTION_MOVE:\n        this.move(range.x, range.y);\n        renderable = false;\n        break;\n\n      // Zoom canvas\n      case ACTION_ZOOM:\n        this.zoom(getMaxZoomRatio(pointers), event);\n        renderable = false;\n        break;\n\n      // Create crop box\n      case ACTION_CROP:\n        if (!range.x || !range.y) {\n          renderable = false;\n          break;\n        }\n        offset = getOffset(this.cropper);\n        left = pointer.startX - offset.left;\n        top = pointer.startY - offset.top;\n        width = cropBoxData.minWidth;\n        height = cropBoxData.minHeight;\n        if (range.x > 0) {\n          action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;\n        } else if (range.x < 0) {\n          left -= width;\n          action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;\n        }\n        if (range.y < 0) {\n          top -= height;\n        }\n\n        // Show the crop box if is hidden\n        if (!this.cropped) {\n          removeClass(this.cropBox, CLASS_HIDDEN);\n          this.cropped = true;\n          if (this.limited) {\n            this.limitCropBox(true, true);\n          }\n        }\n        break;\n    }\n    if (renderable) {\n      cropBoxData.width = width;\n      cropBoxData.height = height;\n      cropBoxData.left = left;\n      cropBoxData.top = top;\n      this.action = action;\n      this.renderCropBox();\n    }\n\n    // Override\n    forEach(pointers, function (p) {\n      p.startX = p.endX;\n      p.startY = p.endY;\n    });\n  }\n};\n\nvar methods = {\n  // Show the crop box manually\n  crop: function crop() {\n    if (this.ready && !this.cropped && !this.disabled) {\n      this.cropped = true;\n      this.limitCropBox(true, true);\n      if (this.options.modal) {\n        addClass(this.dragBox, CLASS_MODAL);\n      }\n      removeClass(this.cropBox, CLASS_HIDDEN);\n      this.setCropBoxData(this.initialCropBoxData);\n    }\n    return this;\n  },\n  // Reset the image and crop box to their initial states\n  reset: function reset() {\n    if (this.ready && !this.disabled) {\n      this.imageData = assign({}, this.initialImageData);\n      this.canvasData = assign({}, this.initialCanvasData);\n      this.cropBoxData = assign({}, this.initialCropBoxData);\n      this.renderCanvas();\n      if (this.cropped) {\n        this.renderCropBox();\n      }\n    }\n    return this;\n  },\n  // Clear the crop box\n  clear: function clear() {\n    if (this.cropped && !this.disabled) {\n      assign(this.cropBoxData, {\n        left: 0,\n        top: 0,\n        width: 0,\n        height: 0\n      });\n      this.cropped = false;\n      this.renderCropBox();\n      this.limitCanvas(true, true);\n\n      // Render canvas after crop box rendered\n      this.renderCanvas();\n      removeClass(this.dragBox, CLASS_MODAL);\n      addClass(this.cropBox, CLASS_HIDDEN);\n    }\n    return this;\n  },\n  /**\n   * Replace the image's src and rebuild the cropper\n   * @param {string} url - The new URL.\n   * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one.\n   * @returns {Cropper} this\n   */\n  replace: function replace(url) {\n    var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    if (!this.disabled && url) {\n      if (this.isImg) {\n        this.element.src = url;\n      }\n      if (hasSameSize) {\n        this.url = url;\n        this.image.src = url;\n        if (this.ready) {\n          this.viewBoxImage.src = url;\n          forEach(this.previews, function (element) {\n            element.getElementsByTagName('img')[0].src = url;\n          });\n        }\n      } else {\n        if (this.isImg) {\n          this.replaced = true;\n        }\n        this.options.data = null;\n        this.uncreate();\n        this.load(url);\n      }\n    }\n    return this;\n  },\n  // Enable (unfreeze) the cropper\n  enable: function enable() {\n    if (this.ready && this.disabled) {\n      this.disabled = false;\n      removeClass(this.cropper, CLASS_DISABLED);\n    }\n    return this;\n  },\n  // Disable (freeze) the cropper\n  disable: function disable() {\n    if (this.ready && !this.disabled) {\n      this.disabled = true;\n      addClass(this.cropper, CLASS_DISABLED);\n    }\n    return this;\n  },\n  /**\n   * Destroy the cropper and remove the instance from the image\n   * @returns {Cropper} this\n   */\n  destroy: function destroy() {\n    var element = this.element;\n    if (!element[NAMESPACE]) {\n      return this;\n    }\n    element[NAMESPACE] = undefined;\n    if (this.isImg && this.replaced) {\n      element.src = this.originalUrl;\n    }\n    this.uncreate();\n    return this;\n  },\n  /**\n   * Move the canvas with relative offsets\n   * @param {number} offsetX - The relative offset distance on the x-axis.\n   * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis.\n   * @returns {Cropper} this\n   */\n  move: function move(offsetX) {\n    var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX;\n    var _this$canvasData = this.canvasData,\n      left = _this$canvasData.left,\n      top = _this$canvasData.top;\n    return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));\n  },\n  /**\n   * Move the canvas to an absolute point\n   * @param {number} x - The x-axis coordinate.\n   * @param {number} [y=x] - The y-axis coordinate.\n   * @returns {Cropper} this\n   */\n  moveTo: function moveTo(x) {\n    var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n    var canvasData = this.canvasData;\n    var changed = false;\n    x = Number(x);\n    y = Number(y);\n    if (this.ready && !this.disabled && this.options.movable) {\n      if (isNumber(x)) {\n        canvasData.left = x;\n        changed = true;\n      }\n      if (isNumber(y)) {\n        canvasData.top = y;\n        changed = true;\n      }\n      if (changed) {\n        this.renderCanvas(true);\n      }\n    }\n    return this;\n  },\n  /**\n   * Zoom the canvas with a relative ratio\n   * @param {number} ratio - The target ratio.\n   * @param {Event} _originalEvent - The original event if any.\n   * @returns {Cropper} this\n   */\n  zoom: function zoom(ratio, _originalEvent) {\n    var canvasData = this.canvasData;\n    ratio = Number(ratio);\n    if (ratio < 0) {\n      ratio = 1 / (1 - ratio);\n    } else {\n      ratio = 1 + ratio;\n    }\n    return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);\n  },\n  /**\n   * Zoom the canvas to an absolute ratio\n   * @param {number} ratio - The target ratio.\n   * @param {Object} pivot - The zoom pivot point coordinate.\n   * @param {Event} _originalEvent - The original event if any.\n   * @returns {Cropper} this\n   */\n  zoomTo: function zoomTo(ratio, pivot, _originalEvent) {\n    var options = this.options,\n      canvasData = this.canvasData;\n    var width = canvasData.width,\n      height = canvasData.height,\n      naturalWidth = canvasData.naturalWidth,\n      naturalHeight = canvasData.naturalHeight;\n    ratio = Number(ratio);\n    if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {\n      var newWidth = naturalWidth * ratio;\n      var newHeight = naturalHeight * ratio;\n      if (dispatchEvent(this.element, EVENT_ZOOM, {\n        ratio: ratio,\n        oldRatio: width / naturalWidth,\n        originalEvent: _originalEvent\n      }) === false) {\n        return this;\n      }\n      if (_originalEvent) {\n        var pointers = this.pointers;\n        var offset = getOffset(this.cropper);\n        var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\n          pageX: _originalEvent.pageX,\n          pageY: _originalEvent.pageY\n        };\n\n        // Zoom from the triggering point of the event\n        canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);\n        canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);\n      } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {\n        canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);\n        canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);\n      } else {\n        // Zoom from the center of the canvas\n        canvasData.left -= (newWidth - width) / 2;\n        canvasData.top -= (newHeight - height) / 2;\n      }\n      canvasData.width = newWidth;\n      canvasData.height = newHeight;\n      this.renderCanvas(true);\n    }\n    return this;\n  },\n  /**\n   * Rotate the canvas with a relative degree\n   * @param {number} degree - The rotate degree.\n   * @returns {Cropper} this\n   */\n  rotate: function rotate(degree) {\n    return this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n  },\n  /**\n   * Rotate the canvas to an absolute degree\n   * @param {number} degree - The rotate degree.\n   * @returns {Cropper} this\n   */\n  rotateTo: function rotateTo(degree) {\n    degree = Number(degree);\n    if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {\n      this.imageData.rotate = degree % 360;\n      this.renderCanvas(true, true);\n    }\n    return this;\n  },\n  /**\n   * Scale the image on the x-axis.\n   * @param {number} scaleX - The scale ratio on the x-axis.\n   * @returns {Cropper} this\n   */\n  scaleX: function scaleX(_scaleX) {\n    var scaleY = this.imageData.scaleY;\n    return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);\n  },\n  /**\n   * Scale the image on the y-axis.\n   * @param {number} scaleY - The scale ratio on the y-axis.\n   * @returns {Cropper} this\n   */\n  scaleY: function scaleY(_scaleY) {\n    var scaleX = this.imageData.scaleX;\n    return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);\n  },\n  /**\n   * Scale the image\n   * @param {number} scaleX - The scale ratio on the x-axis.\n   * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n   * @returns {Cropper} this\n   */\n  scale: function scale(scaleX) {\n    var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n    var imageData = this.imageData;\n    var transformed = false;\n    scaleX = Number(scaleX);\n    scaleY = Number(scaleY);\n    if (this.ready && !this.disabled && this.options.scalable) {\n      if (isNumber(scaleX)) {\n        imageData.scaleX = scaleX;\n        transformed = true;\n      }\n      if (isNumber(scaleY)) {\n        imageData.scaleY = scaleY;\n        transformed = true;\n      }\n      if (transformed) {\n        this.renderCanvas(true, true);\n      }\n    }\n    return this;\n  },\n  /**\n   * Get the cropped area position and size data (base on the original image)\n   * @param {boolean} [rounded=false] - Indicate if round the data values or not.\n   * @returns {Object} The result cropped data.\n   */\n  getData: function getData() {\n    var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var options = this.options,\n      imageData = this.imageData,\n      canvasData = this.canvasData,\n      cropBoxData = this.cropBoxData;\n    var data;\n    if (this.ready && this.cropped) {\n      data = {\n        x: cropBoxData.left - canvasData.left,\n        y: cropBoxData.top - canvasData.top,\n        width: cropBoxData.width,\n        height: cropBoxData.height\n      };\n      var ratio = imageData.width / imageData.naturalWidth;\n      forEach(data, function (n, i) {\n        data[i] = n / ratio;\n      });\n      if (rounded) {\n        // In case rounding off leads to extra 1px in right or bottom border\n        // we should round the top-left corner and the dimension (#343).\n        var bottom = Math.round(data.y + data.height);\n        var right = Math.round(data.x + data.width);\n        data.x = Math.round(data.x);\n        data.y = Math.round(data.y);\n        data.width = right - data.x;\n        data.height = bottom - data.y;\n      }\n    } else {\n      data = {\n        x: 0,\n        y: 0,\n        width: 0,\n        height: 0\n      };\n    }\n    if (options.rotatable) {\n      data.rotate = imageData.rotate || 0;\n    }\n    if (options.scalable) {\n      data.scaleX = imageData.scaleX || 1;\n      data.scaleY = imageData.scaleY || 1;\n    }\n    return data;\n  },\n  /**\n   * Set the cropped area position and size with new data\n   * @param {Object} data - The new data.\n   * @returns {Cropper} this\n   */\n  setData: function setData(data) {\n    var options = this.options,\n      imageData = this.imageData,\n      canvasData = this.canvasData;\n    var cropBoxData = {};\n    if (this.ready && !this.disabled && isPlainObject(data)) {\n      var transformed = false;\n      if (options.rotatable) {\n        if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {\n          imageData.rotate = data.rotate;\n          transformed = true;\n        }\n      }\n      if (options.scalable) {\n        if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {\n          imageData.scaleX = data.scaleX;\n          transformed = true;\n        }\n        if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {\n          imageData.scaleY = data.scaleY;\n          transformed = true;\n        }\n      }\n      if (transformed) {\n        this.renderCanvas(true, true);\n      }\n      var ratio = imageData.width / imageData.naturalWidth;\n      if (isNumber(data.x)) {\n        cropBoxData.left = data.x * ratio + canvasData.left;\n      }\n      if (isNumber(data.y)) {\n        cropBoxData.top = data.y * ratio + canvasData.top;\n      }\n      if (isNumber(data.width)) {\n        cropBoxData.width = data.width * ratio;\n      }\n      if (isNumber(data.height)) {\n        cropBoxData.height = data.height * ratio;\n      }\n      this.setCropBoxData(cropBoxData);\n    }\n    return this;\n  },\n  /**\n   * Get the container size data.\n   * @returns {Object} The result container data.\n   */\n  getContainerData: function getContainerData() {\n    return this.ready ? assign({}, this.containerData) : {};\n  },\n  /**\n   * Get the image position and size data.\n   * @returns {Object} The result image data.\n   */\n  getImageData: function getImageData() {\n    return this.sized ? assign({}, this.imageData) : {};\n  },\n  /**\n   * Get the canvas position and size data.\n   * @returns {Object} The result canvas data.\n   */\n  getCanvasData: function getCanvasData() {\n    var canvasData = this.canvasData;\n    var data = {};\n    if (this.ready) {\n      forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {\n        data[n] = canvasData[n];\n      });\n    }\n    return data;\n  },\n  /**\n   * Set the canvas position and size with new data.\n   * @param {Object} data - The new canvas data.\n   * @returns {Cropper} this\n   */\n  setCanvasData: function setCanvasData(data) {\n    var canvasData = this.canvasData;\n    var aspectRatio = canvasData.aspectRatio;\n    if (this.ready && !this.disabled && isPlainObject(data)) {\n      if (isNumber(data.left)) {\n        canvasData.left = data.left;\n      }\n      if (isNumber(data.top)) {\n        canvasData.top = data.top;\n      }\n      if (isNumber(data.width)) {\n        canvasData.width = data.width;\n        canvasData.height = data.width / aspectRatio;\n      } else if (isNumber(data.height)) {\n        canvasData.height = data.height;\n        canvasData.width = data.height * aspectRatio;\n      }\n      this.renderCanvas(true);\n    }\n    return this;\n  },\n  /**\n   * Get the crop box position and size data.\n   * @returns {Object} The result crop box data.\n   */\n  getCropBoxData: function getCropBoxData() {\n    var cropBoxData = this.cropBoxData;\n    var data;\n    if (this.ready && this.cropped) {\n      data = {\n        left: cropBoxData.left,\n        top: cropBoxData.top,\n        width: cropBoxData.width,\n        height: cropBoxData.height\n      };\n    }\n    return data || {};\n  },\n  /**\n   * Set the crop box position and size with new data.\n   * @param {Object} data - The new crop box data.\n   * @returns {Cropper} this\n   */\n  setCropBoxData: function setCropBoxData(data) {\n    var cropBoxData = this.cropBoxData;\n    var aspectRatio = this.options.aspectRatio;\n    var widthChanged;\n    var heightChanged;\n    if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {\n      if (isNumber(data.left)) {\n        cropBoxData.left = data.left;\n      }\n      if (isNumber(data.top)) {\n        cropBoxData.top = data.top;\n      }\n      if (isNumber(data.width) && data.width !== cropBoxData.width) {\n        widthChanged = true;\n        cropBoxData.width = data.width;\n      }\n      if (isNumber(data.height) && data.height !== cropBoxData.height) {\n        heightChanged = true;\n        cropBoxData.height = data.height;\n      }\n      if (aspectRatio) {\n        if (widthChanged) {\n          cropBoxData.height = cropBoxData.width / aspectRatio;\n        } else if (heightChanged) {\n          cropBoxData.width = cropBoxData.height * aspectRatio;\n        }\n      }\n      this.renderCropBox();\n    }\n    return this;\n  },\n  /**\n   * Get a canvas drawn the cropped image.\n   * @param {Object} [options={}] - The config options.\n   * @returns {HTMLCanvasElement} - The result canvas.\n   */\n  getCroppedCanvas: function getCroppedCanvas() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (!this.ready || !window.HTMLCanvasElement) {\n      return null;\n    }\n    var canvasData = this.canvasData;\n    var source = getSourceCanvas(this.image, this.imageData, canvasData, options);\n\n    // Returns the source canvas if it is not cropped.\n    if (!this.cropped) {\n      return source;\n    }\n    var _this$getData = this.getData(options.rounded),\n      initialX = _this$getData.x,\n      initialY = _this$getData.y,\n      initialWidth = _this$getData.width,\n      initialHeight = _this$getData.height;\n    var ratio = source.width / Math.floor(canvasData.naturalWidth);\n    if (ratio !== 1) {\n      initialX *= ratio;\n      initialY *= ratio;\n      initialWidth *= ratio;\n      initialHeight *= ratio;\n    }\n    var aspectRatio = initialWidth / initialHeight;\n    var maxSizes = getAdjustedSizes({\n      aspectRatio: aspectRatio,\n      width: options.maxWidth || Infinity,\n      height: options.maxHeight || Infinity\n    });\n    var minSizes = getAdjustedSizes({\n      aspectRatio: aspectRatio,\n      width: options.minWidth || 0,\n      height: options.minHeight || 0\n    }, 'cover');\n    var _getAdjustedSizes = getAdjustedSizes({\n        aspectRatio: aspectRatio,\n        width: options.width || (ratio !== 1 ? source.width : initialWidth),\n        height: options.height || (ratio !== 1 ? source.height : initialHeight)\n      }),\n      width = _getAdjustedSizes.width,\n      height = _getAdjustedSizes.height;\n    width = Math.min(maxSizes.width, Math.max(minSizes.width, width));\n    height = Math.min(maxSizes.height, Math.max(minSizes.height, height));\n    var canvas = document.createElement('canvas');\n    var context = canvas.getContext('2d');\n    canvas.width = normalizeDecimalNumber(width);\n    canvas.height = normalizeDecimalNumber(height);\n    context.fillStyle = options.fillColor || 'transparent';\n    context.fillRect(0, 0, width, height);\n    var _options$imageSmoothi = options.imageSmoothingEnabled,\n      imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi,\n      imageSmoothingQuality = options.imageSmoothingQuality;\n    context.imageSmoothingEnabled = imageSmoothingEnabled;\n    if (imageSmoothingQuality) {\n      context.imageSmoothingQuality = imageSmoothingQuality;\n    }\n\n    // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage\n    var sourceWidth = source.width;\n    var sourceHeight = source.height;\n\n    // Source canvas parameters\n    var srcX = initialX;\n    var srcY = initialY;\n    var srcWidth;\n    var srcHeight;\n\n    // Destination canvas parameters\n    var dstX;\n    var dstY;\n    var dstWidth;\n    var dstHeight;\n    if (srcX <= -initialWidth || srcX > sourceWidth) {\n      srcX = 0;\n      srcWidth = 0;\n      dstX = 0;\n      dstWidth = 0;\n    } else if (srcX <= 0) {\n      dstX = -srcX;\n      srcX = 0;\n      srcWidth = Math.min(sourceWidth, initialWidth + srcX);\n      dstWidth = srcWidth;\n    } else if (srcX <= sourceWidth) {\n      dstX = 0;\n      srcWidth = Math.min(initialWidth, sourceWidth - srcX);\n      dstWidth = srcWidth;\n    }\n    if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {\n      srcY = 0;\n      srcHeight = 0;\n      dstY = 0;\n      dstHeight = 0;\n    } else if (srcY <= 0) {\n      dstY = -srcY;\n      srcY = 0;\n      srcHeight = Math.min(sourceHeight, initialHeight + srcY);\n      dstHeight = srcHeight;\n    } else if (srcY <= sourceHeight) {\n      dstY = 0;\n      srcHeight = Math.min(initialHeight, sourceHeight - srcY);\n      dstHeight = srcHeight;\n    }\n    var params = [srcX, srcY, srcWidth, srcHeight];\n\n    // Avoid \"IndexSizeError\"\n    if (dstWidth > 0 && dstHeight > 0) {\n      var scale = width / initialWidth;\n      params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);\n    }\n\n    // All the numerical parameters should be integer for `drawImage`\n    // https://github.com/fengyuanchen/cropper/issues/476\n    context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) {\n      return Math.floor(normalizeDecimalNumber(param));\n    }))));\n    return canvas;\n  },\n  /**\n   * Change the aspect ratio of the crop box.\n   * @param {number} aspectRatio - The new aspect ratio.\n   * @returns {Cropper} this\n   */\n  setAspectRatio: function setAspectRatio(aspectRatio) {\n    var options = this.options;\n    if (!this.disabled && !isUndefined(aspectRatio)) {\n      // 0 -> NaN\n      options.aspectRatio = Math.max(0, aspectRatio) || NaN;\n      if (this.ready) {\n        this.initCropBox();\n        if (this.cropped) {\n          this.renderCropBox();\n        }\n      }\n    }\n    return this;\n  },\n  /**\n   * Change the drag mode.\n   * @param {string} mode - The new drag mode.\n   * @returns {Cropper} this\n   */\n  setDragMode: function setDragMode(mode) {\n    var options = this.options,\n      dragBox = this.dragBox,\n      face = this.face;\n    if (this.ready && !this.disabled) {\n      var croppable = mode === DRAG_MODE_CROP;\n      var movable = options.movable && mode === DRAG_MODE_MOVE;\n      mode = croppable || movable ? mode : DRAG_MODE_NONE;\n      options.dragMode = mode;\n      setData(dragBox, DATA_ACTION, mode);\n      toggleClass(dragBox, CLASS_CROP, croppable);\n      toggleClass(dragBox, CLASS_MOVE, movable);\n      if (!options.cropBoxMovable) {\n        // Sync drag mode to crop box when it is not movable\n        setData(face, DATA_ACTION, mode);\n        toggleClass(face, CLASS_CROP, croppable);\n        toggleClass(face, CLASS_MOVE, movable);\n      }\n    }\n    return this;\n  }\n};\n\nvar AnotherCropper = WINDOW.Cropper;\nvar Cropper = /*#__PURE__*/function () {\n  /**\n   * Create a new Cropper.\n   * @param {Element} element - The target element for cropping.\n   * @param {Object} [options={}] - The configuration options.\n   */\n  function Cropper(element) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    _classCallCheck(this, Cropper);\n    if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {\n      throw new Error('The first argument is required and must be an <img> or <canvas> element.');\n    }\n    this.element = element;\n    this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n    this.cropped = false;\n    this.disabled = false;\n    this.pointers = {};\n    this.ready = false;\n    this.reloading = false;\n    this.replaced = false;\n    this.sized = false;\n    this.sizing = false;\n    this.init();\n  }\n  return _createClass(Cropper, [{\n    key: \"init\",\n    value: function init() {\n      var element = this.element;\n      var tagName = element.tagName.toLowerCase();\n      var url;\n      if (element[NAMESPACE]) {\n        return;\n      }\n      element[NAMESPACE] = this;\n      if (tagName === 'img') {\n        this.isImg = true;\n\n        // e.g.: \"img/picture.jpg\"\n        url = element.getAttribute('src') || '';\n        this.originalUrl = url;\n\n        // Stop when it's a blank image\n        if (!url) {\n          return;\n        }\n\n        // e.g.: \"https://example.com/img/picture.jpg\"\n        url = element.src;\n      } else if (tagName === 'canvas' && window.HTMLCanvasElement) {\n        url = element.toDataURL();\n      }\n      this.load(url);\n    }\n  }, {\n    key: \"load\",\n    value: function load(url) {\n      var _this = this;\n      if (!url) {\n        return;\n      }\n      this.url = url;\n      this.imageData = {};\n      var element = this.element,\n        options = this.options;\n      if (!options.rotatable && !options.scalable) {\n        options.checkOrientation = false;\n      }\n\n      // Only IE10+ supports Typed Arrays\n      if (!options.checkOrientation || !window.ArrayBuffer) {\n        this.clone();\n        return;\n      }\n\n      // Detect the mime type of the image directly if it is a Data URL\n      if (REGEXP_DATA_URL.test(url)) {\n        // Read ArrayBuffer from Data URL of JPEG images directly for better performance\n        if (REGEXP_DATA_URL_JPEG.test(url)) {\n          this.read(dataURLToArrayBuffer(url));\n        } else {\n          // Only a JPEG image may contains Exif Orientation information,\n          // the rest types of Data URLs are not necessary to check orientation at all.\n          this.clone();\n        }\n        return;\n      }\n\n      // 1. Detect the mime type of the image by a XMLHttpRequest.\n      // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image.\n      var xhr = new XMLHttpRequest();\n      var clone = this.clone.bind(this);\n      this.reloading = true;\n      this.xhr = xhr;\n\n      // 1. Cross origin requests are only supported for protocol schemes:\n      // http, https, data, chrome, chrome-extension.\n      // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy\n      // in some browsers as IE11 and Safari.\n      xhr.onabort = clone;\n      xhr.onerror = clone;\n      xhr.ontimeout = clone;\n      xhr.onprogress = function () {\n        // Abort the request directly if it not a JPEG image for better performance\n        if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) {\n          xhr.abort();\n        }\n      };\n      xhr.onload = function () {\n        _this.read(xhr.response);\n      };\n      xhr.onloadend = function () {\n        _this.reloading = false;\n        _this.xhr = null;\n      };\n\n      // Bust cache when there is a \"crossOrigin\" property to avoid browser cache error\n      if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {\n        url = addTimestamp(url);\n      }\n\n      // The third parameter is required for avoiding side-effect (#682)\n      xhr.open('GET', url, true);\n      xhr.responseType = 'arraybuffer';\n      xhr.withCredentials = element.crossOrigin === 'use-credentials';\n      xhr.send();\n    }\n  }, {\n    key: \"read\",\n    value: function read(arrayBuffer) {\n      var options = this.options,\n        imageData = this.imageData;\n\n      // Reset the orientation value to its default value 1\n      // as some iOS browsers will render image with its orientation\n      var orientation = resetAndGetOrientation(arrayBuffer);\n      var rotate = 0;\n      var scaleX = 1;\n      var scaleY = 1;\n      if (orientation > 1) {\n        // Generate a new URL which has the default orientation value\n        this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG);\n        var _parseOrientation = parseOrientation(orientation);\n        rotate = _parseOrientation.rotate;\n        scaleX = _parseOrientation.scaleX;\n        scaleY = _parseOrientation.scaleY;\n      }\n      if (options.rotatable) {\n        imageData.rotate = rotate;\n      }\n      if (options.scalable) {\n        imageData.scaleX = scaleX;\n        imageData.scaleY = scaleY;\n      }\n      this.clone();\n    }\n  }, {\n    key: \"clone\",\n    value: function clone() {\n      var element = this.element,\n        url = this.url;\n      var crossOrigin = element.crossOrigin;\n      var crossOriginUrl = url;\n      if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {\n        if (!crossOrigin) {\n          crossOrigin = 'anonymous';\n        }\n\n        // Bust cache when there is not a \"crossOrigin\" property (#519)\n        crossOriginUrl = addTimestamp(url);\n      }\n      this.crossOrigin = crossOrigin;\n      this.crossOriginUrl = crossOriginUrl;\n      var image = document.createElement('img');\n      if (crossOrigin) {\n        image.crossOrigin = crossOrigin;\n      }\n      image.src = crossOriginUrl || url;\n      image.alt = element.alt || 'The image to crop';\n      this.image = image;\n      image.onload = this.start.bind(this);\n      image.onerror = this.stop.bind(this);\n      addClass(image, CLASS_HIDE);\n      element.parentNode.insertBefore(image, element.nextSibling);\n    }\n  }, {\n    key: \"start\",\n    value: function start() {\n      var _this2 = this;\n      var image = this.image;\n      image.onload = null;\n      image.onerror = null;\n      this.sizing = true;\n\n      // Match all browsers that use WebKit as the layout engine in iOS devices,\n      // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n      var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent);\n      var done = function done(naturalWidth, naturalHeight) {\n        assign(_this2.imageData, {\n          naturalWidth: naturalWidth,\n          naturalHeight: naturalHeight,\n          aspectRatio: naturalWidth / naturalHeight\n        });\n        _this2.initialImageData = assign({}, _this2.imageData);\n        _this2.sizing = false;\n        _this2.sized = true;\n        _this2.build();\n      };\n\n      // Most modern browsers (excepts iOS WebKit)\n      if (image.naturalWidth && !isIOSWebKit) {\n        done(image.naturalWidth, image.naturalHeight);\n        return;\n      }\n      var sizingImage = document.createElement('img');\n      var body = document.body || document.documentElement;\n      this.sizingImage = sizingImage;\n      sizingImage.onload = function () {\n        done(sizingImage.width, sizingImage.height);\n        if (!isIOSWebKit) {\n          body.removeChild(sizingImage);\n        }\n      };\n      sizingImage.src = image.src;\n\n      // iOS WebKit will convert the image automatically\n      // with its orientation once append it into DOM (#279)\n      if (!isIOSWebKit) {\n        sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n        body.appendChild(sizingImage);\n      }\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      var image = this.image;\n      image.onload = null;\n      image.onerror = null;\n      image.parentNode.removeChild(image);\n      this.image = null;\n    }\n  }, {\n    key: \"build\",\n    value: function build() {\n      if (!this.sized || this.ready) {\n        return;\n      }\n      var element = this.element,\n        options = this.options,\n        image = this.image;\n\n      // Create cropper elements\n      var container = element.parentNode;\n      var template = document.createElement('div');\n      template.innerHTML = TEMPLATE;\n      var cropper = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n      var canvas = cropper.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n      var dragBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-drag-box\"));\n      var cropBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-crop-box\"));\n      var face = cropBox.querySelector(\".\".concat(NAMESPACE, \"-face\"));\n      this.container = container;\n      this.cropper = cropper;\n      this.canvas = canvas;\n      this.dragBox = dragBox;\n      this.cropBox = cropBox;\n      this.viewBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-view-box\"));\n      this.face = face;\n      canvas.appendChild(image);\n\n      // Hide the original image\n      addClass(element, CLASS_HIDDEN);\n\n      // Inserts the cropper after to the current image\n      container.insertBefore(cropper, element.nextSibling);\n\n      // Show the hidden image\n      removeClass(image, CLASS_HIDE);\n      this.initPreview();\n      this.bind();\n      options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN;\n      options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;\n      options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;\n      addClass(cropBox, CLASS_HIDDEN);\n      if (!options.guides) {\n        addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-dashed\")), CLASS_HIDDEN);\n      }\n      if (!options.center) {\n        addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-center\")), CLASS_HIDDEN);\n      }\n      if (options.background) {\n        addClass(cropper, \"\".concat(NAMESPACE, \"-bg\"));\n      }\n      if (!options.highlight) {\n        addClass(face, CLASS_INVISIBLE);\n      }\n      if (options.cropBoxMovable) {\n        addClass(face, CLASS_MOVE);\n        setData(face, DATA_ACTION, ACTION_ALL);\n      }\n      if (!options.cropBoxResizable) {\n        addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-line\")), CLASS_HIDDEN);\n        addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-point\")), CLASS_HIDDEN);\n      }\n      this.render();\n      this.ready = true;\n      this.setDragMode(options.dragMode);\n      if (options.autoCrop) {\n        this.crop();\n      }\n      this.setData(options.data);\n      if (isFunction(options.ready)) {\n        addListener(element, EVENT_READY, options.ready, {\n          once: true\n        });\n      }\n      dispatchEvent(element, EVENT_READY);\n    }\n  }, {\n    key: \"unbuild\",\n    value: function unbuild() {\n      if (!this.ready) {\n        return;\n      }\n      this.ready = false;\n      this.unbind();\n      this.resetPreview();\n      var parentNode = this.cropper.parentNode;\n      if (parentNode) {\n        parentNode.removeChild(this.cropper);\n      }\n      removeClass(this.element, CLASS_HIDDEN);\n    }\n  }, {\n    key: \"uncreate\",\n    value: function uncreate() {\n      if (this.ready) {\n        this.unbuild();\n        this.ready = false;\n        this.cropped = false;\n      } else if (this.sizing) {\n        this.sizingImage.onload = null;\n        this.sizing = false;\n        this.sized = false;\n      } else if (this.reloading) {\n        this.xhr.onabort = null;\n        this.xhr.abort();\n      } else if (this.image) {\n        this.stop();\n      }\n    }\n\n    /**\n     * Get the no conflict cropper class.\n     * @returns {Cropper} The cropper class.\n     */\n  }], [{\n    key: \"noConflict\",\n    value: function noConflict() {\n      window.Cropper = AnotherCropper;\n      return Cropper;\n    }\n\n    /**\n     * Change the default options.\n     * @param {Object} options - The new default options.\n     */\n  }, {\n    key: \"setDefaults\",\n    value: function setDefaults(options) {\n      assign(DEFAULTS, isPlainObject(options) && options);\n    }\n  }]);\n}();\nassign(Cropper.prototype, render, preview, events, handlers, change, methods);\n\nexport { Cropper as default };\n","import { createSignal, onMount, onCleanup } from 'solid-js';\nimport { isServer } from 'solid-js/web';\nimport { noop } from '@solid-primitives/utils';\n\n// src/index.ts\n\n// src/helpers.ts\nfunction createInputComponent({ multiple = false, accept = \"\" }) {\n  const element = document.createElement(\"input\");\n  element.type = \"file\";\n  element.accept = accept;\n  element.multiple = multiple;\n  return element;\n}\nfunction transformFiles(files) {\n  const parsedFiles = [];\n  if (!files)\n    return parsedFiles;\n  for (const index in files) {\n    const fileIndex = +index;\n    if (isNaN(+fileIndex)) {\n      continue;\n    }\n    const file = files[fileIndex];\n    if (!file) {\n      continue;\n    }\n    const parsedFile = {\n      source: URL.createObjectURL(file),\n      name: file.name,\n      size: file.size,\n      file\n    };\n    parsedFiles.push(parsedFile);\n  }\n  return parsedFiles;\n}\nfunction createFileUploader(options) {\n  if (isServer) {\n    return {\n      files: () => [],\n      selectFiles: noop,\n      removeFile: noop,\n      clearFiles: noop\n    };\n  }\n  const [files, setFiles] = createSignal([]);\n  let userCallback = () => {\n  };\n  const onChange = async (event) => {\n    event.preventDefault();\n    event.stopPropagation();\n    const target = event.currentTarget;\n    let parsedFiles = [];\n    if (target.files) {\n      parsedFiles = transformFiles(target.files);\n    }\n    target.removeEventListener(\"change\", onChange);\n    target.remove();\n    setFiles(parsedFiles);\n    try {\n      await userCallback(parsedFiles);\n    } catch (error) {\n      console.error(error);\n    }\n    return;\n  };\n  const selectFiles = (callback) => {\n    if (callback) {\n      userCallback = callback;\n    }\n    const inputElement = createInputComponent(options || {});\n    inputElement.addEventListener(\"change\", onChange);\n    inputElement.click();\n  };\n  const removeFile = (fileName) => {\n    setFiles((prev) => prev.filter((f) => f.name !== fileName));\n  };\n  const clearFiles = () => {\n    setFiles([]);\n  };\n  return {\n    files,\n    selectFiles,\n    removeFile,\n    clearFiles\n  };\n}\nfunction createDropzone(options) {\n  if (isServer) {\n    return {\n      setRef: noop,\n      files: () => [],\n      isDragging: () => false,\n      removeFile: noop,\n      clearFiles: noop\n    };\n  }\n  const [files, setFiles] = createSignal([]);\n  const [isDragging, setIsDragging] = createSignal(false);\n  let ref = void 0;\n  const setRef = (r) => {\n    ref = r;\n  };\n  const onDragStart = (event) => {\n    setIsDragging(true);\n    Promise.resolve(options?.onDragStart?.(transformFiles(event.dataTransfer?.files || null)));\n  };\n  const onDragEnd = (event) => {\n    setIsDragging(false);\n    Promise.resolve(options?.onDragEnd?.(transformFiles(event.dataTransfer?.files || null)));\n  };\n  const onDragEnter = (event) => {\n    Promise.resolve(options?.onDragEnter?.(transformFiles(event.dataTransfer?.files || null)));\n  };\n  const onDragLeave = (event) => {\n    Promise.resolve(options?.onDragLeave?.(transformFiles(event.dataTransfer?.files || null)));\n  };\n  const onDragOver = (event) => {\n    event.preventDefault();\n    Promise.resolve(options?.onDragOver?.(transformFiles(event.dataTransfer?.files || null)));\n  };\n  const onDrag = (event) => {\n    Promise.resolve(options?.onDrag?.(transformFiles(event.dataTransfer?.files || null)));\n  };\n  const onDrop = (event) => {\n    event.preventDefault();\n    const parsedFiles = transformFiles(event.dataTransfer?.files || null);\n    setFiles(parsedFiles);\n    Promise.resolve(options?.onDrop?.(parsedFiles));\n  };\n  onMount(() => {\n    if (!ref)\n      return;\n    ref.addEventListener(\"dragstart\", onDragStart);\n    ref.addEventListener(\"dragenter\", onDragEnter);\n    ref.addEventListener(\"dragend\", onDragEnd);\n    ref.addEventListener(\"dragleave\", onDragLeave);\n    ref.addEventListener(\"dragover\", onDragOver);\n    ref.addEventListener(\"drag\", onDrag);\n    ref.addEventListener(\"drop\", onDrop);\n    onCleanup(() => {\n      ref?.removeEventListener(\"dragstart\", onDragStart);\n      ref?.removeEventListener(\"dragenter\", onDragEnter);\n      ref?.removeEventListener(\"dragend\", onDragEnd);\n      ref?.removeEventListener(\"dragleave\", onDragLeave);\n      ref?.removeEventListener(\"dragover\", onDragOver);\n      ref?.removeEventListener(\"drag\", onDrag);\n      ref?.removeEventListener(\"drop\", onDrop);\n    });\n  });\n  const removeFile = (fileName) => {\n    setFiles((prev) => prev.filter((f) => f.name !== fileName));\n  };\n  const clearFiles = () => {\n    setFiles([]);\n  };\n  return {\n    setRef,\n    files,\n    isDragging,\n    removeFile,\n    clearFiles\n  };\n}\n\n// src/index.ts\nvar fileUploader = (element, options) => {\n  if (isServer) {\n    return;\n  }\n  const { userCallback, setFiles } = options();\n  onMount(() => {\n    const onChange = async (event) => {\n      const parsedFiles = transformFiles(event.currentTarget.files);\n      setFiles(parsedFiles);\n      try {\n        await userCallback(parsedFiles);\n      } catch (error) {\n        console.error(error);\n      }\n      return;\n    };\n    onCleanup(() => element.removeEventListener(\"change\", onChange));\n    element.addEventListener(\"change\", onChange);\n  });\n};\n\nexport { createDropzone, createFileUploader, fileUploader };\n","import { createEffect, createSignal, For, Show  } from \"solid-js\";\r\nimport Cropper from 'cropperjs';\r\nimport { createDropzone } from \"@solid-primitives/upload\";\r\nimport { createStore } from \"solid-js/store\";\r\nimport '/node_modules/cropperjs/dist/cropper.css';\r\n\r\ntype ImageCropperProps = {\r\n    maxWidth?: number;\r\n    maxHeight?: number;\r\n    required?: boolean |(() => boolean);\r\n    setInstance: (wrapper: IImageCropperWrapper) => void;\r\n    src: string;\r\n    filename?: () => string;\r\n};\r\nexport type ImageFileData = {\r\n    id: number|undefined;\r\n    isDirty: boolean;\r\n    isValid: boolean;\r\n    errors: string[];\r\n    image: Blob;\r\n    filename: string;\r\n};\r\nexport interface IImageCropperWrapper {\r\n    getImageFile(): Promise<ImageFileData|null>\r\n};\r\nconst _getBlob = async (canvas: HTMLCanvasElement) => new Promise((resolve: (blob: Blob) => void) => canvas.toBlob((blob) => resolve(blob as Blob), 'image/jpeg', 0.99));\r\nexport const getImage = async (cropper: Cropper) => {\r\n    const canvas = cropper.getCroppedCanvas();\r\n    if (!canvas) return null;\r\n    const blob = await _getBlob(canvas);\r\n    return blob;\r\n};\r\nconst isImageFile = (file: File) => /^image\\/\\w+$/.test(file.type);\r\nexport default function ImageCropper(props: ImageCropperProps) {\r\n    let isDirty = false;\r\n    const [src, setSrc] = createSignal<string>();\r\n    const [dropzoneColour, setDropzoneColour] = createSignal<string>(\"#ccc\");\r\n    const [filename, setFilename] = createSignal<string>(props.filename && props.filename() || \"\");\r\n    const [width, setWidth] = createSignal<number>(0);\r\n    const [height, setHeight] = createSignal<number>(0);\r\n    const [errors, setErrors] = createStore<any>({\r\n        dimensions: \"\",\r\n        filetype: \"\"\r\n    });\r\n    const { setRef: dropzoneRef, files: droppedFiles } = createDropzone({\r\n        onDrop: async files => { loadImageFromFileInput(files[0].file); setDropzoneColour(\"#ccc\"); },\r\n        onDragStart: async () => { setDropzoneColour(\"orange\");  },\r\n        onDragLeave: async () => { setDropzoneColour(\"#ccc\"); },\r\n        onDragEnter: async () => { setDropzoneColour(\"red\"); },\r\n        onDragOver: async () => { setDropzoneColour(\"green\"); },\r\n    });\r\n    const [error, setError] = createSignal<string>(\"\");\r\n    let cropper: Cropper;\r\n    const move = () => { cropper.setDragMode(\"move\");  }\r\n    const crop = () => { cropper.setDragMode(\"crop\");  }\r\n    const cut = async () => {\r\n        const blob = await getBlob();\r\n        const url = URL.createObjectURL(blob as Blob);\r\n        cropper.replace(url).reset().clear();\r\n    };\r\n    const clear = () => { cropper.clear();  }\r\n    const reset = () => { cropper.reset();  }\r\n    const getCanvas = () => cropper.getCroppedCanvas();\r\n    const getBlob = async () => new Promise((resolve: (blob: Blob) => void) => getCanvas().toBlob((blob) => resolve(blob as Blob), 'image/jpeg', 0.99));\r\n    const getData = () => cropper.getData();\r\n    const scaleX = () => getData().scaleX;\r\n    const scaleY = () => getData().scaleY;\r\n    const flipHorizontal =  () => { cropper.scaleX(-1 * scaleX());  };\r\n    const flipVertical =  () => { cropper.scaleY(-1 * scaleY());  };\r\n    const zoomIn =  () => { cropper.zoom(0.1);  };\r\n    const zoomOut =  () => { cropper.zoom(-0.1);  };\r\n    const rotateLeft45 =  () => { cropper.rotate(-45);  }\r\n    const rotateRight45 =  () => { cropper.rotate(45);  }\r\n    const hasErrors = () => {\r\n        for (let key in Object.keys(errors)){\r\n            if (!!errors[key]) return true;\r\n        }\r\n        return false;\r\n    }\r\n    const clearErrors = () => setErrors({ dimensions: \"\", filetype: \"\", required: \"\" });\r\n    const getTruthy = (value: boolean |(() => boolean)|undefined) => {\r\n        if (typeof value === \"undefined\") {\r\n            return false;\r\n        }\r\n        if (value instanceof Boolean) {\r\n            return value as boolean;\r\n        }\r\n        if (value instanceof Function) {\r\n            return value();\r\n        }\r\n        return false;\r\n    }\r\n    const getFileExtension = (filename: string) => {\r\n        if (!filename) return null;\r\n        const parts = filename.split(\".\");\r\n        return parts[parts.length-1];\r\n    }\r\n    const validate = () => {\r\n        clearErrors();\r\n        var isValid = true;\r\n        const required = getTruthy(props.required);\r\n        if (required) {\r\n            if (isDirty && !filename()) {\r\n                isValid = false;\r\n                console.log(\"validate\", { filename: filename(), isDirty });\r\n                setErrors({ required: \"You must select an image.\" });\r\n            }\r\n        }\r\n        const extension = getFileExtension(filename());\r\n        if (!extension) {\r\n            isValid = false;\r\n            setErrors(\"filetype\", \"No file type was found.\");\r\n        }\r\n        else {\r\n            const validFileTypes = [\"JPG\",\"JPEG\",\"PNG\"];\r\n            if (!validFileTypes.some(type => type.toLowerCase() == extension.toLowerCase())) {\r\n                isValid = false;\r\n                setErrors(\"filetype\", \"File type not accepted. Please choose a file of one of these types: \" + validFileTypes.join(\", \"));\r\n            }\r\n        }\r\n        if (props.maxHeight || props.maxWidth) {\r\n            if (props.maxHeight && height() > props.maxHeight){\r\n                isValid = false;\r\n                setErrors({ dimensions: `The image is too large. The height can be no more than ${props.maxHeight} pixels` });\r\n            }\r\n            if (props.maxWidth && width() > props.maxWidth){\r\n                isValid = false;\r\n                setErrors({ dimensions: `The image is too large. The width can be no more than ${props.maxWidth} pixels` });\r\n            }\r\n        }\r\n        return isValid;\r\n    };\r\n    const setDimensions = () => {\r\n        const data = cropper.getImageData();\r\n        // console.log(\"setDimensions\", { data, cropper });\r\n        setWidth(data.naturalWidth);\r\n        setHeight(data.naturalHeight);\r\n    };\r\n    const loadImageFromFileInput = (file: File) => {\r\n        let blobURL = URL.createObjectURL(file);\r\n        setFilename(file.name);\r\n        console.log(\"loadImageFromFileInput\", { filename: file.name, file });\r\n        cropper.reset().replace(blobURL)// .clear();\r\n        // console.log(\"loadImageFromFileInput\", { file, blobURL });\r\n        setDimensions();\r\n        validate();\r\n    };\r\n    const loadImageFromUrl = (imageUrl: string) => {\r\n        const fn = getFilename(imageUrl);\r\n        console.log(\"loadImageFromUrl\", { filename: fn, imageUrl });\r\n        setFilename(fn);\r\n        cropper.reset().replace(imageUrl)//.clear();  \r\n        // console.log(\"loadImageFromUrl\", { imageUrl });\r\n        setDimensions();\r\n        validate();      \r\n    };\r\n    let fileinput: HTMLInputElement;\r\n    const setupFileInputElement = (element: HTMLInputElement) => {\r\n        fileinput = element;\r\n        fileinput.addEventListener(\"change\", () => {\r\n            let files = element.files;\r\n            if (!files || !files.length) return;\r\n            let file = files[0];\r\n            if (!isImageFile(file)) {\r\n                setError(\"Please choose an image file (either JPG or PNG).\");\r\n                return;\r\n            }\r\n            isDirty = true;\r\n            // console.log(\"setupFileInputElement\", { file });\r\n            loadImageFromFileInput(file);\r\n        });\r\n    };\r\n    const onUploadClicked = () => fileinput.click();\r\n    const getFilename = (str: string) => !str ? \"\" : str.split('\\\\').pop()?.split('/').pop() || \"\";\r\n    const options: Cropper.Options<HTMLImageElement> = {\r\n        preview: \".img-preview\",\r\n        dragMode: \"none\",\r\n        autoCrop: false,\r\n        movable: false,\r\n        zoomable: false,\r\n        scalable: false,\r\n        cropBoxMovable: false,\r\n        cropBoxResizable: false,\r\n        ready() {\r\n            console.log(\"options:ready()\");\r\n            setDimensions();\r\n            validate();\r\n        }     \r\n    };\r\n    let imageLoaded = false;\r\n    createEffect(() => {\r\n        if (!imageLoaded) {\r\n            if (src()) {\r\n                loadImageFromUrl(\"/secureimages\" + src());\r\n                imageLoaded = true;\r\n            }            \r\n        }\r\n    });\r\n    createEffect(() => {\r\n        !!props.src ? setSrc(props.src) : setSrc(undefined);\r\n    });\r\n    const blackPixel = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAABNJREFUCB1jZGBg+A/EDEwgAgQADigBA//q6GsAAAAASUVORK5CYII%3D\";\r\n    const setupImageCropperElement = (img: HTMLImageElement) => {\r\n        cropper = new Cropper(img, options);\r\n        const wrapper = {\r\n            async getImageFile() {\r\n                const canvas = cropper.getCroppedCanvas();\r\n                if (!canvas) return null;\r\n                const blob = await _getBlob(canvas);\r\n                setDimensions();\r\n                const errs = [errors.dimensions, errors.filetype].filter(x => !!x);\r\n                return {\r\n                    isDirty,\r\n                    isValid: validate(),\r\n                    errors: errs,\r\n                    image: blob,\r\n                    filename: filename()\r\n                } as ImageFileData\r\n            }\r\n        } as IImageCropperWrapper;\r\n        props.setInstance(wrapper);\r\n    };\r\n    return (\r\n        <div ref={dropzoneRef} style={{ \"border\": \"4px solid \" + dropzoneColour() }}>\r\n            <div style=\"width: 100%;\">\r\n                <img style=\"display: block; max-width: 100%;\"\r\n                    src={src()}\r\n                    ref={setupImageCropperElement}\r\n                />\r\n            </div>\r\n            <div style=\"background-color: #333; color: #efefef; padding: 10px;\">\r\n                <div class=\"docs-buttons\">\r\n                    <div style=\"text-align: center;\">\r\n                        <button type=\"button\" onClick={onUploadClicked} class=\"btn btn-success btn-upload\">\r\n                            <input style=\"display: none;\" type=\"file\" ref={setupFileInputElement} />\r\n                            <span class=\"docs-tooltip\" title=\"Upload image\">\r\n                                <span class=\"fa fa-upload\" style=\"font-size: 1.5em;\"></span> Choose File to Upload\r\n                            </span>\r\n                        </button>\r\n                    </div>\r\n                    <div>\r\n                        <Show when={filename()}>\r\n                            <div>\r\n                                File: {filename()}\r\n                            </div>\r\n                        </Show>\r\n                        <Show when={height() && width()}>\r\n                            <div>\r\n                                {height()} <small>&#10005;</small> {width()} pixels\r\n                            </div>\r\n                        </Show>\r\n                        <For each={Object.keys(errors)}>{(key) =>\r\n                           <div style=\"color: red; margin: 5px;\">\r\n                               {errors[key]}\r\n                           </div>\r\n                        }</For>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    );\r\n}","import { Show } from \"solid-js\";\r\nimport { SetStoreFunction, createStore } from \"solid-js/store\";\r\n\r\ntype ErrorMessageProps = {\r\n  error: string;\r\n}\r\nexport const ErrorMessage = (props: ErrorMessageProps) => <Show when={!!props.error}><div><span class=\"error-message\">{props.error}</span></div></Show>;\r\n\r\ntype FormSubmitHandler = (form: HTMLFormElement) => void;\r\ntype ValidatorMethod = (el: HTMLInputElement) => string;\r\ntype ValidatorMethods = ValidatorMethod[];\r\ntype ErrorRecord = Record<string, string>;\r\ntype TErrorRecord<TModel> = Record<keyof TModel, string>;\r\ntype FieldRecord = Record<string, ElementValidator>;\r\ntype ElementValidator = {element: HTMLInputElement, validators: ValidatorMethods }\r\nexport type FormValidator = { validate: (input: HTMLElement, accessor: any) => void, formSubmit: (form: HTMLFormElement, accessor: any) => void, errors: ErrorRecord };\r\nexport type TFormValidator<TModel> = {\r\n  validate: (input: HTMLElement, accessor: any) => void,\r\n  formSubmit: (form: HTMLFormElement, accessor: any) => void,\r\n  errors: TErrorRecord<TModel>,\r\n  setErrors: SetStoreFunction<TErrorRecord<TModel>>\r\n};\r\n\r\nfunction checkValid({ element, validators = [] } : ElementValidator, setErrors: SetStoreFunction<ErrorRecord>, errorClass: string) {\r\n  return async () => {\r\n    /***\r\n     * Check the standard HTML validators first.\r\n     */\r\n    element.setCustomValidity(\"\");\r\n    element.checkValidity();\r\n    let message = element.validationMessage;\r\n    if (!message) {\r\n      /***\r\n       * Then check the custom validators.\r\n       */\r\n      for (const validator of validators) {\r\n        if (validator) {\r\n          const text = await validator(element);\r\n          if (text) {\r\n            /***\r\n             * Set the error message, then quit early as we want only one message at a time per element.\r\n             */\r\n            element.setCustomValidity(text);\r\n            break;\r\n          }\r\n        }\r\n      }\r\n      message = element.validationMessage;\r\n    }\r\n    if (message) {\r\n      /***\r\n       * Activate the error class on the element.\r\n       */\r\n      errorClass && element.classList.toggle(errorClass, true);\r\n      /***\r\n       * Set the message on the associated error store using the 'name' attribute on the element.\r\n       */\r\n      setErrors({ [element.name]: message });\r\n    }\r\n    //console.log(\"checkValid\", { element, validators, message });\r\n  };\r\n}\r\n\r\nexport function useForm({ errorClass }: { errorClass: string }) {\r\n  const [errors, setErrors] = createStore<ErrorRecord>({});\r\n  const fields: FieldRecord = { };\r\n  const validate = (input: HTMLInputElement, accessor: any) => {\r\n    const validators: ValidatorMethods = accessor() || [];\r\n    let config: ElementValidator;\r\n    fields[input.name] = config = {\r\n      element: input,\r\n      validators\r\n    };\r\n    input.onblur = checkValid(config, setErrors, errorClass);\r\n    input.oninput = () => {\r\n      /**\r\n       * If no error field matching the 'name' attribute is found then quit.\r\n       */\r\n      if (!errors[input.name]) {\r\n        return;\r\n      }\r\n      /**\r\n       * Clear the error message.\r\n       */\r\n      setErrors({ [input.name]: undefined });\r\n      /**\r\n       * Clear the error class.\r\n       */\r\n      errorClass && input.classList.toggle(errorClass, false);\r\n      //console.log(\"useForm\", { input})\r\n    };\r\n  };\r\n  \r\n  const formSubmit = (form: HTMLFormElement, accessor: any) => {\r\n    \r\n    const userSubmitHandler: FormSubmitHandler = accessor() || (() => {});\r\n    form.setAttribute(\"novalidate\", \"\");\r\n    /**\r\n     * Handle the submit event\r\n     */\r\n    form.onsubmit = async (e: Event) => {\r\n      e.preventDefault();\r\n      let hasErrors = false;\r\n      for (const k in fields) {\r\n        const field = fields[k];\r\n        await checkValid(field, setErrors, errorClass)();\r\n        if (!hasErrors && field.element.validationMessage) {\r\n          /**\r\n           * Focus on the first erroring element found and quit early.\r\n           */\r\n          field.element.focus();\r\n          hasErrors = true;\r\n        }\r\n      }\r\n      console.log(\"onsubmit\", { hasErrors, form, fields, errors })\r\n      /**\r\n       * If there are no errors only then invoke the user's submit handler.\r\n       */\r\n      !hasErrors && userSubmitHandler(form);\r\n    };\r\n  };\r\n  return { validate, formSubmit, errors, setErrors };\r\n}","// Source: https://github.com/lukeed/clsx/blob/master/src/index.js\r\nfunction toVal(mix) {\r\n    var k, y, str = \"\";\r\n    if (typeof mix === \"string\" || typeof mix === \"number\") {\r\n        str += mix;\r\n    }\r\n    else if (typeof mix === \"object\") {\r\n        if (Array.isArray(mix)) {\r\n            for (k = 0; k < mix.length; k++) {\r\n                if (mix[k]) {\r\n                    if ((y = toVal(mix[k]))) {\r\n                        str && (str += \" \");\r\n                        str += y;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            for (k in mix) {\r\n                if (mix[k]) {\r\n                    str && (str += \" \");\r\n                    str += k;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return str;\r\n}\r\nexport default function (...classes) {\r\n    var i = 0, tmp, x, str = \"\";\r\n    while (i < classes.length) {\r\n        if ((tmp = classes[i++])) {\r\n            if ((x = toVal(tmp))) {\r\n                str && (str += \" \");\r\n                str += x;\r\n            }\r\n        }\r\n    }\r\n    return str;\r\n}\r\n","/**\r\n * Solid event handlers can be a plain callback OR a tuple [handler, item].\r\n * This function calls the handler appropriately (if defined).\r\n */\r\nexport function callEventHandler(h, e) {\r\n    // capture if propagationStopped\r\n    let isPropagationStopped = false;\r\n    const defaultFn = e.stopPropagation;\r\n    e.stopPropagation = () => {\r\n        isPropagationStopped = true;\r\n        defaultFn();\r\n    };\r\n    // call Solid handler appropriately\r\n    if (typeof h === \"function\") {\r\n        h(e);\r\n    }\r\n    else if (Array.isArray(h)) {\r\n        h[0](h[1], e);\r\n    }\r\n    e.stopPropagation = defaultFn;\r\n    return {\r\n        isPropagationStopped,\r\n    };\r\n}\r\nexport function resolveClasses(el, prev, now) {\r\n    const p = prev ? prev.split(\" \") : [];\r\n    const n = now ? now.split(\" \") : [];\r\n    el.classList?.remove(...p.filter((s) => n.indexOf(s) === -1));\r\n    el.classList?.add(...n.filter((s) => p.indexOf(s) === -1));\r\n}\r\n","import { createMemo, mergeProps, splitProps } from \"solid-js\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nimport { callEventHandler } from \"./utils\";\r\nexport function isTrivialHref(href) {\r\n    return !href || href.trim() === \"#\";\r\n}\r\nconst defaultOptions = {\r\n    tabIndex: 0,\r\n};\r\nexport function useButtonProps(o) {\r\n    const options = mergeProps(defaultOptions, o);\r\n    const tagName = createMemo(() => {\r\n        if (!options.tagName) {\r\n            if (options.href != null || options.target != null || options.rel != null) {\r\n                return \"a\";\r\n            }\r\n            else {\r\n                return \"button\";\r\n            }\r\n        }\r\n        return options.tagName;\r\n    });\r\n    const meta = {\r\n        get tagName() {\r\n            return tagName();\r\n        },\r\n    };\r\n    if (tagName() === \"button\") {\r\n        return [\r\n            {\r\n                get type() {\r\n                    return options.type || \"button\";\r\n                },\r\n                get disabled() {\r\n                    return options.disabled;\r\n                },\r\n            },\r\n            meta,\r\n        ];\r\n    }\r\n    const getClickHandler = createMemo(() => (event) => {\r\n        if (options.disabled || (tagName() === \"a\" && isTrivialHref(options.href))) {\r\n            event.preventDefault();\r\n        }\r\n        if (options.disabled) {\r\n            event.stopPropagation();\r\n            return;\r\n        }\r\n        callEventHandler(options.onClick, event);\r\n    });\r\n    const getKeyDownHandler = createMemo(() => (event) => {\r\n        if (event.key === \" \") {\r\n            event.preventDefault();\r\n            getClickHandler()(event /*HACK calling click handler with keyboard event*/);\r\n        }\r\n    });\r\n    const getHref = () => {\r\n        if (tagName() === \"a\") {\r\n            // Ensure there's a href so Enter can trigger anchor button.\r\n            return options.disabled ? undefined : options.href || \"#\";\r\n        }\r\n        return options.href;\r\n    };\r\n    return [\r\n        {\r\n            role: \"button\",\r\n            // explicitly undefined so that it overrides the props disabled in a spread\r\n            // e.g. <Tag {...props} {...hookProps} />\r\n            disabled: undefined,\r\n            get tabIndex() {\r\n                return options.disabled ? undefined : options.tabIndex;\r\n            },\r\n            get href() {\r\n                return getHref();\r\n            },\r\n            get target() {\r\n                return tagName() === \"a\" ? options.target : undefined;\r\n            },\r\n            get \"aria-disabled\"() {\r\n                return !options.disabled ? undefined : options.disabled;\r\n            },\r\n            get rel() {\r\n                return tagName() === \"a\" ? options.rel : undefined;\r\n            },\r\n            get onClick() {\r\n                return getClickHandler();\r\n            },\r\n            get onKeyDown() {\r\n                return getKeyDownHandler();\r\n            },\r\n        },\r\n        meta,\r\n    ];\r\n}\r\nexport const Button = (props) => {\r\n    const [local, otherProps] = splitProps(props, [\"as\"]);\r\n    let a = props.tabIndex;\r\n    const [buttonProps, { tagName }] = useButtonProps({\r\n        tagName: local.as,\r\n        ...otherProps,\r\n    });\r\n    return <Dynamic {...otherProps} {...buttonProps} component={tagName}/>;\r\n};\r\nexport default Button;\r\n","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n  return toArray(element.querySelectorAll(selector));\n}","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n  var options = {\n    get passive() {\n      return optionsSupported = true;\n    },\n\n    get once() {\n      // eslint-disable-next-line no-multi-assign\n      return onceSupported = optionsSupported = true;\n    }\n\n  };\n\n  if (canUseDOM) {\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, true);\n  }\n} catch (e) {\n  /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n  if (options && typeof options !== 'boolean' && !onceSupported) {\n    var once = options.once,\n        capture = options.capture;\n    var wrappedHandler = handler;\n\n    if (!onceSupported && once) {\n      wrappedHandler = handler.__once || function onceHandler(event) {\n        this.removeEventListener(eventName, onceHandler, capture);\n        handler.call(this, event);\n      };\n\n      handler.__once = wrappedHandler;\n    }\n\n    node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n  }\n\n  node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n  // HTML DOM and SVG DOM may have different support levels,\n  // so we need to check on context instead of a document root element.\n  if (context.contains) return context.contains(node);\n  if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n  var capture = options && typeof options !== 'boolean' ? options.capture : options;\n  node.removeEventListener(eventName, handler, capture);\n\n  if (handler.__once) {\n    node.removeEventListener(eventName, handler.__once, capture);\n  }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n  addEventListener(node, eventName, handler, options);\n  return function () {\n    removeEventListener(node, eventName, handler, options);\n  };\n}\n\nexport default listen;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","export const ATTRIBUTE_PREFIX = `data-rr-ui-`;\r\nexport const PROPERTY_PREFIX = `rrUi`;\r\nexport function dataAttr(property) {\r\n    return `${ATTRIBUTE_PREFIX}${property}`;\r\n}\r\nexport function dataProp(property) {\r\n    return `${PROPERTY_PREFIX}${property}`;\r\n}\r\n","import { createContext, useContext } from \"solid-js\";\r\nimport canUseDOM from \"dom-helpers/canUseDOM\";\r\nconst Context = createContext(canUseDOM ? window : undefined);\r\nexport const WindowProvider = Context.Provider;\r\n/**\r\n * The document \"window\" placed in context. Helpful for determining\r\n * SSR context, or when rendering into an iframe.\r\n *\r\n * @returns the current window\r\n */\r\nexport function useWindow() {\r\n    return useContext(Context);\r\n}\r\nexport default useWindow;\r\n","import ownerDocument from './ownerDocument';\n/**\n * Returns the actively focused element safely.\n *\n * @param doc the document to check\n */\n\nexport default function activeElement(doc) {\n  if (doc === void 0) {\n    doc = ownerDocument();\n  }\n\n  // Support: IE 9 only\n  // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n  try {\n    var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n    // document.activeElement from an <iframe>\n\n    if (!active || !active.nodeName) return null;\n    return active;\n  } catch (e) {\n    /* ie throws if no active element */\n    return doc.body;\n  }\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n  var doc = ownerDocument(node);\n  return doc && doc.defaultView || window;\n}","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n  return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n  return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n  return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n  return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n  var css = '';\n  var transforms = '';\n\n  if (typeof property === 'string') {\n    return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n  }\n\n  Object.keys(property).forEach(function (key) {\n    var value = property[key];\n\n    if (!value && value !== 0) {\n      node.style.removeProperty(hyphenate(key));\n    } else if (isTransform(key)) {\n      transforms += key + \"(\" + value + \") \";\n    } else {\n      css += hyphenate(key) + \": \" + value + \";\";\n    }\n  });\n\n  if (transforms) {\n    css += \"transform: \" + transforms + \";\";\n  }\n\n  node.style.cssText += \";\" + css;\n}\n\nexport default style;","/**\r\n * Get the width of the vertical window scrollbar if it's visible\r\n */\r\nexport function getBodyScrollbarWidth(ownerDocument = document) {\r\n    const window = ownerDocument.defaultView;\r\n    return Math.abs(window.innerWidth - ownerDocument.documentElement.clientWidth);\r\n}\r\nexport default getBodyScrollbarWidth;\r\n","import css from \"dom-helpers/css\";\r\nimport { dataAttr } from \"./DataKey\";\r\nimport getBodyScrollbarWidth from \"./getScrollbarWidth\";\r\nexport const OPEN_DATA_ATTRIBUTE = dataAttr(\"modal-open\");\r\n/**\r\n * Manages a stack of Modals as well as ensuring\r\n * body scrolling is is disabled and padding accounted for\r\n */\r\nexport class ModalManager {\r\n    handleContainerOverflow;\r\n    isRTL;\r\n    modals;\r\n    state;\r\n    ownerDocument;\r\n    constructor({ ownerDocument, handleContainerOverflow = true, isRTL = false, } = {}) {\r\n        this.handleContainerOverflow = handleContainerOverflow;\r\n        this.isRTL = isRTL;\r\n        this.modals = [];\r\n        this.ownerDocument = ownerDocument;\r\n    }\r\n    getScrollbarWidth() {\r\n        return getBodyScrollbarWidth(this.ownerDocument);\r\n    }\r\n    getElement() {\r\n        return (this.ownerDocument || document).body;\r\n    }\r\n    setModalAttributes(_modal) {\r\n        // For overriding\r\n    }\r\n    removeModalAttributes(_modal) {\r\n        // For overriding\r\n    }\r\n    setContainerStyle(containerState) {\r\n        const style = { overflow: \"hidden\" };\r\n        // we are only interested in the actual `style` here\r\n        // because we will override it\r\n        const paddingProp = this.isRTL ? \"paddingLeft\" : \"paddingRight\";\r\n        const container = this.getElement();\r\n        containerState.style = {\r\n            overflow: container.style.overflow,\r\n            [paddingProp]: container.style[paddingProp],\r\n        };\r\n        if (containerState.scrollBarWidth) {\r\n            // use computed style, here to get the real padding\r\n            // to add our scrollbar width\r\n            style[paddingProp] = `${parseInt(css(container, paddingProp) || \"0\", 10) + containerState.scrollBarWidth}px`;\r\n        }\r\n        container.setAttribute(OPEN_DATA_ATTRIBUTE, \"\");\r\n        css(container, style);\r\n    }\r\n    reset() {\r\n        [...this.modals].forEach((m) => this.remove(m));\r\n    }\r\n    removeContainerStyle(containerState) {\r\n        const container = this.getElement();\r\n        container.removeAttribute(OPEN_DATA_ATTRIBUTE);\r\n        Object.assign(container.style, containerState.style);\r\n    }\r\n    add(modal) {\r\n        let modalIdx = this.modals.indexOf(modal);\r\n        if (modalIdx !== -1) {\r\n            return modalIdx;\r\n        }\r\n        modalIdx = this.modals.length;\r\n        this.modals.push(modal);\r\n        this.setModalAttributes(modal);\r\n        if (modalIdx !== 0) {\r\n            return modalIdx;\r\n        }\r\n        this.state = {\r\n            scrollBarWidth: this.getScrollbarWidth(),\r\n            style: {},\r\n        };\r\n        if (this.handleContainerOverflow) {\r\n            this.setContainerStyle(this.state);\r\n        }\r\n        return modalIdx;\r\n    }\r\n    remove(modal) {\r\n        const modalIdx = this.modals.indexOf(modal);\r\n        if (modalIdx === -1) {\r\n            return;\r\n        }\r\n        this.modals.splice(modalIdx, 1);\r\n        // if that was the last modal in a container,\r\n        // clean up the container\r\n        if (!this.modals.length && this.handleContainerOverflow) {\r\n            this.removeContainerStyle(this.state);\r\n        }\r\n        this.removeModalAttributes(modal);\r\n    }\r\n    isTopModal(modal) {\r\n        return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\r\n    }\r\n}\r\nexport default ModalManager;\r\n","import ownerDocument from \"dom-helpers/ownerDocument\";\r\nimport canUseDOM from \"dom-helpers/canUseDOM\";\r\nimport { createEffect, createSignal } from \"solid-js\";\r\nimport useWindow from \"./useWindow\";\r\nexport const resolveContainerRef = (ref, document) => {\r\n    if (!canUseDOM)\r\n        return null;\r\n    if (ref == null)\r\n        return (document || ownerDocument()).body;\r\n    if (typeof ref === \"function\")\r\n        ref = ref();\r\n    if (ref?.nodeType)\r\n        return ref || null;\r\n    return null;\r\n};\r\nexport function useWaitForDOMRef(props) {\r\n    const window = useWindow();\r\n    const [resolvedRef, setRef] = createSignal(resolveContainerRef(props.ref, window?.document));\r\n    createEffect(() => {\r\n        if (props.onResolved && resolvedRef()) {\r\n            props.onResolved(resolvedRef());\r\n        }\r\n    });\r\n    createEffect(() => {\r\n        const nextRef = resolveContainerRef(props.ref);\r\n        if (nextRef !== resolvedRef()) {\r\n            setRef(nextRef);\r\n        }\r\n    });\r\n    return resolvedRef;\r\n}\r\nexport default useWaitForDOMRef;\r\n","/* eslint-disable @typescript-eslint/no-use-before-define, react/prop-types */\r\nimport activeElement from \"dom-helpers/activeElement\";\r\nimport contains from \"dom-helpers/contains\";\r\nimport canUseDOM from \"dom-helpers/canUseDOM\";\r\nimport listen from \"dom-helpers/listen\";\r\nimport ModalManager from \"./ModalManager\";\r\nimport useWindow from \"./useWindow\";\r\nimport { children, createComputed, createEffect, createSignal, mergeProps, on, onCleanup, onMount, splitProps, Show, createMemo, getOwner, runWithOwner, } from \"solid-js\";\r\nimport { Portal } from \"solid-js/web\";\r\nimport useWaitForDOMRef from \"./useWaitForDOMRef\";\r\nlet manager;\r\nfunction getManager(window) {\r\n    if (!manager)\r\n        manager = new ModalManager({ ownerDocument: window?.document });\r\n    return manager;\r\n}\r\nfunction useModalManager(provided) {\r\n    const window = useWindow();\r\n    const modalManager = provided || getManager(window);\r\n    const modal = {\r\n        dialog: null,\r\n        backdrop: null,\r\n    };\r\n    return Object.assign(modal, {\r\n        add: () => modalManager.add(modal),\r\n        remove: () => modalManager.remove(modal),\r\n        isTopModal: () => modalManager.isTopModal(modal),\r\n        setDialogRef: (ref) => {\r\n            modal.dialog = ref;\r\n        },\r\n        setBackdropRef: (ref) => {\r\n            modal.backdrop = ref;\r\n        },\r\n    });\r\n}\r\nconst defaultProps = {\r\n    show: false,\r\n    role: \"dialog\",\r\n    backdrop: true,\r\n    keyboard: true,\r\n    autoFocus: true,\r\n    enforceFocus: true,\r\n    restoreFocus: true,\r\n    renderBackdrop: (props) => <div {...props}/>,\r\n    onHide: () => { },\r\n};\r\nexport const Modal = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), \r\n    // split off local props with rest passed as dialogProps\r\n    [\r\n        \"show\",\r\n        \"role\",\r\n        \"class\",\r\n        \"style\",\r\n        \"children\",\r\n        \"backdrop\",\r\n        \"keyboard\",\r\n        \"onBackdropClick\",\r\n        \"onEscapeKeyDown\",\r\n        \"transition\",\r\n        \"backdropTransition\",\r\n        \"autoFocus\",\r\n        \"enforceFocus\",\r\n        \"restoreFocus\",\r\n        \"restoreFocusOptions\",\r\n        \"renderDialog\",\r\n        \"renderBackdrop\",\r\n        \"manager\",\r\n        \"container\",\r\n        \"onShow\",\r\n        \"onHide\",\r\n        \"onExit\",\r\n        \"onExited\",\r\n        \"onExiting\",\r\n        \"onEnter\",\r\n        \"onEntering\",\r\n        \"onEntered\",\r\n        \"ref\",\r\n    ]);\r\n    const container = useWaitForDOMRef({\r\n        get ref() {\r\n            return local.container;\r\n        },\r\n    });\r\n    const modal = useModalManager(local.manager);\r\n    const owner = getOwner();\r\n    const [isMounted, setIsMounted] = createSignal(false);\r\n    onMount(() => setIsMounted(true));\r\n    onCleanup(() => setIsMounted(false));\r\n    const [exited, setExited] = createSignal(!local.show);\r\n    let lastFocusRef = null;\r\n    local.ref?.(modal);\r\n    createComputed(on(() => local.show, (show, prevShow) => {\r\n        if (canUseDOM && !prevShow && show) {\r\n            lastFocusRef = activeElement();\r\n        }\r\n    }));\r\n    createComputed(() => {\r\n        if (!local.transition && !local.show && !exited()) {\r\n            setExited(true);\r\n        }\r\n        else if (local.show && exited()) {\r\n            setExited(false);\r\n        }\r\n    });\r\n    const handleShow = () => {\r\n        modal.add();\r\n        removeKeydownListenerRef = listen(document, \"keydown\", handleDocumentKeyDown);\r\n        removeFocusListenerRef = listen(document, \"focus\", \r\n        // the timeout is necessary b/c this will run before the new modal is mounted\r\n        // and so steals focus from it\r\n        () => setTimeout(handleEnforceFocus), true);\r\n        if (local.onShow) {\r\n            local.onShow();\r\n        }\r\n        // autofocus after onShow to not trigger a focus event for previous\r\n        // modals before this one is shown.\r\n        if (local.autoFocus) {\r\n            const currentActiveElement = activeElement(document);\r\n            if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\r\n                lastFocusRef = currentActiveElement;\r\n                modal.dialog.focus();\r\n            }\r\n        }\r\n    };\r\n    const handleHide = () => {\r\n        modal.remove();\r\n        removeKeydownListenerRef?.();\r\n        removeFocusListenerRef?.();\r\n        if (local.restoreFocus) {\r\n            // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\r\n            lastFocusRef?.focus?.(local.restoreFocusOptions);\r\n            lastFocusRef = null;\r\n        }\r\n    };\r\n    // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\r\n    // Show logic when:\r\n    //  - show is `true` _and_ `container` has resolved\r\n    createEffect(() => {\r\n        if (!local.show || !container?.())\r\n            return;\r\n        handleShow();\r\n    });\r\n    // Hide cleanup logic when:\r\n    //  - `exited` switches to true\r\n    //  - component unmounts;\r\n    createEffect(on(exited, (exited, prev) => {\r\n        if (exited && !(prev ?? exited)) {\r\n            handleHide();\r\n        }\r\n    }));\r\n    onCleanup(() => {\r\n        handleHide();\r\n    });\r\n    // --------------------------------\r\n    const handleEnforceFocus = () => {\r\n        if (!local.enforceFocus || !isMounted() || !modal.isTopModal()) {\r\n            return;\r\n        }\r\n        const currentActiveElement = activeElement();\r\n        if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\r\n            modal.dialog.focus();\r\n        }\r\n    };\r\n    const handleBackdropClick = (e) => {\r\n        if (e.target !== e.currentTarget) {\r\n            return;\r\n        }\r\n        local.onBackdropClick?.(e);\r\n        if (local.backdrop === true) {\r\n            local.onHide?.();\r\n        }\r\n    };\r\n    const handleDocumentKeyDown = (e) => {\r\n        if (local.keyboard && e.keyCode === 27 && modal.isTopModal()) {\r\n            local.onEscapeKeyDown?.(e);\r\n            if (!e.defaultPrevented) {\r\n                local.onHide?.();\r\n            }\r\n        }\r\n    };\r\n    let removeFocusListenerRef;\r\n    let removeKeydownListenerRef;\r\n    const handleHidden = (...args) => {\r\n        setExited(true);\r\n        local.onExited?.(...args);\r\n    };\r\n    const dialogVisible = createMemo(() => !!(local.show || (local.transition && !exited())));\r\n    const dialogProps = mergeProps({\r\n        get role() {\r\n            return local.role;\r\n        },\r\n        get ref() {\r\n            return modal.setDialogRef;\r\n        },\r\n        // apparently only works on the dialog role element\r\n        get \"aria-modal\"() {\r\n            return local.role === \"dialog\" ? true : undefined;\r\n        },\r\n    }, props, {\r\n        get style() {\r\n            return local.style;\r\n        },\r\n        get class() {\r\n            return local.class;\r\n        },\r\n        tabIndex: -1,\r\n    });\r\n    const getChildAsDocument = () => {\r\n        const c = children(() => local.children);\r\n        c()?.setAttribute?.(\"role\", \"document\");\r\n        return c;\r\n    };\r\n    let innerDialog = () => runWithOwner(owner, () => local.renderDialog ? (local.renderDialog(dialogProps)) : (<div {...dialogProps}>{getChildAsDocument}</div>));\r\n    const Dialog = () => {\r\n        const Transition = local.transition;\r\n        return !Transition ? (innerDialog) : (<Transition appear unmountOnExit in={!!local.show} onExit={local.onExit} onExiting={local.onExiting} onExited={handleHidden} onEnter={local.onEnter} onEntering={local.onEntering} onEntered={local.onEntered}>\r\n        {innerDialog}\r\n      </Transition>);\r\n    };\r\n    const Backdrop = () => {\r\n        let backdropElement = null;\r\n        if (local.backdrop) {\r\n            const BackdropTransition = local.backdropTransition;\r\n            backdropElement = local.renderBackdrop({\r\n                ref: modal.setBackdropRef,\r\n                onClick: handleBackdropClick,\r\n            });\r\n            if (BackdropTransition) {\r\n                backdropElement = (<BackdropTransition appear in={!!local.show}>\r\n            {backdropElement}\r\n          </BackdropTransition>);\r\n            }\r\n        }\r\n        return backdropElement;\r\n    };\r\n    return (<Show when={container() && dialogVisible()}>\r\n      <Portal mount={container()}>\r\n        <Backdrop />\r\n        <Dialog />\r\n      </Portal>\r\n    </Show>);\r\n};\r\nexport default Object.assign(Modal, {\r\n    Manager: ModalManager,\r\n});\r\n","import { createContext } from \"solid-js\";\r\nexport const TransitionGroupContext = createContext(null);\r\nexport default TransitionGroupContext;\r\n","export function nextFrame(fn) {\r\n    requestAnimationFrame(() => {\r\n        requestAnimationFrame(fn);\r\n    });\r\n}\r\n","// ported from https://github.com/reactjs/react-transition-group/blob/5aa3fd2d7e3354a7e42505d55af605ff44f74e2e/src/Transition.js\r\nimport { createSignal, createComputed, children, useContext, on, onMount, onCleanup, Show, createMemo, splitProps, mergeProps, } from \"solid-js\";\r\nimport TransitionGroupContext from \"./TransitionGroupContext\";\r\nimport { nextFrame } from \"./utils\";\r\n/**\r\n * The Transition component lets you describe a transition from one component\r\n * state to another _over time_ with a simple declarative API. Most commonly\r\n * it's used to animate the mounting and unmounting of a component, but can also\r\n * be used to describe in-place transition states as well.\r\n *\r\n * ---\r\n *\r\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\r\n * transitions in CSS, you'll probably want to use\r\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\r\n * instead. It inherits all the features of `Transition`, but contains\r\n * additional features necessary to play nice with CSS transitions (hence the\r\n * name of the component).\r\n *\r\n * ---\r\n *\r\n * By default the `Transition` component does not alter the behavior of the\r\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\r\n * components. It's up to you to give meaning and effect to those states. For\r\n * example we can add styles to a component when it enters or exits:\r\n *\r\n * ```jsx\r\n * import { Transition } from 'react-transition-group';\r\n *\r\n * const duration = 300;\r\n *\r\n * const defaultStyle = {\r\n *   transition: `opacity ${duration}ms ease-in-out`,\r\n *   opacity: 0,\r\n * }\r\n *\r\n * const transitionStyles = {\r\n *   entering: { opacity: 1 },\r\n *   entered:  { opacity: 1 },\r\n *   exiting:  { opacity: 0 },\r\n *   exited:  { opacity: 0 },\r\n * };\r\n *\r\n * const Fade = ({ in: inProp }) => (\r\n *   <Transition in={inProp} timeout={duration}>\r\n *     {state => (\r\n *       <div style={{\r\n *         ...defaultStyle,\r\n *         ...transitionStyles[state]\r\n *       }}>\r\n *         I'm a fade Transition!\r\n *       </div>\r\n *     )}\r\n *   </Transition>\r\n * );\r\n * ```\r\n *\r\n * There are 4 main states a Transition can be in:\r\n *  - `'entering'`\r\n *  - `'entered'`\r\n *  - `'exiting'`\r\n *  - `'exited'`\r\n *\r\n * Transition state is toggled via the `in` prop. When `true` the component\r\n * begins the \"Enter\" stage. During this stage, the component will shift from\r\n * its current transition state, to `'entering'` for the duration of the\r\n * transition and then to the `'entered'` stage once it's complete. Let's take\r\n * the following example (we'll use the\r\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\r\n *\r\n * ```jsx\r\n * function App() {\r\n *   const [inProp, setInProp] = useState(false);\r\n *   return (\r\n *     <div>\r\n *       <Transition in={inProp} timeout={500}>\r\n *         {state => (\r\n *           // ...\r\n *         )}\r\n *       </Transition>\r\n *       <button onClick={() => setInProp(true)}>\r\n *         Click to Enter\r\n *       </button>\r\n *     </div>\r\n *   );\r\n * }\r\n * ```\r\n *\r\n * When the button is clicked the component will shift to the `'entering'` state\r\n * and stay there for 500ms (the value of `timeout`) before it finally switches\r\n * to `'entered'`.\r\n *\r\n * When `in` is `false` the same thing happens except the state moves from\r\n * `'exiting'` to `'exited'`.\r\n */\r\nexport const UNMOUNTED = \"unmounted\";\r\nexport const EXITED = \"exited\";\r\nexport const ENTERING = \"entering\";\r\nexport const ENTERED = \"entered\";\r\nexport const EXITING = \"exiting\";\r\nfunction noop() { }\r\nconst defaultProps = {\r\n    in: false,\r\n    mountOnEnter: false,\r\n    unmountOnExit: false,\r\n    appear: false,\r\n    enter: true,\r\n    exit: true,\r\n    onEnter: noop,\r\n    onEntering: noop,\r\n    onEntered: noop,\r\n    onExit: noop,\r\n    onExiting: noop,\r\n    onExited: noop,\r\n};\r\nexport const Transition = (p) => {\r\n    const [local, childProps] = splitProps(mergeProps(defaultProps, p), [\r\n        \"in\",\r\n        \"children\",\r\n        \"mountOnEnter\",\r\n        \"unmountOnExit\",\r\n        \"appear\",\r\n        \"enter\",\r\n        \"exit\",\r\n        \"timeout\",\r\n        \"addEndListener\",\r\n        \"onEnter\",\r\n        \"onEntering\",\r\n        \"onEntered\",\r\n        \"onExit\",\r\n        \"onExiting\",\r\n        \"onExited\",\r\n        \"nodeRef\",\r\n    ]);\r\n    let context = useContext(TransitionGroupContext);\r\n    let childRef;\r\n    // In the context of a TransitionGroup all enters are really appears\r\n    let appear = context && !context.isMounting ? local.enter : local.appear;\r\n    let initialStatus;\r\n    let appearStatus = null;\r\n    if (local.in) {\r\n        if (appear) {\r\n            initialStatus = EXITED;\r\n            appearStatus = ENTERING;\r\n        }\r\n        else {\r\n            initialStatus = ENTERED;\r\n        }\r\n    }\r\n    else {\r\n        if (local.unmountOnExit || local.mountOnEnter) {\r\n            initialStatus = UNMOUNTED;\r\n        }\r\n        else {\r\n            initialStatus = EXITED;\r\n        }\r\n    }\r\n    const [status, setStatus] = createSignal(initialStatus);\r\n    let nextCallback = null;\r\n    const [mounted, setMounted] = createSignal(false);\r\n    const notUnmounted = createMemo(() => status() !== UNMOUNTED);\r\n    onMount(() => {\r\n        // componentDidMount\r\n        updateStatus(true, appearStatus);\r\n        setMounted(true);\r\n    });\r\n    // Detect actual changes to `in` prop via memo\r\n    const inMemo = createMemo(() => local.in);\r\n    createComputed(on(inMemo, () => {\r\n        // componentDidUpdate\r\n        if (!mounted())\r\n            return;\r\n        const prevStatus = status();\r\n        if (inMemo() && prevStatus === UNMOUNTED) {\r\n            // prepare to show again\r\n            setStatus(EXITED);\r\n        }\r\n        let nextStatus = null;\r\n        if (inMemo()) {\r\n            if (prevStatus !== ENTERING && prevStatus !== ENTERED) {\r\n                nextStatus = ENTERING;\r\n            }\r\n        }\r\n        else {\r\n            if (prevStatus === ENTERING || prevStatus === ENTERED) {\r\n                nextStatus = EXITING;\r\n            }\r\n        }\r\n        updateStatus(false, nextStatus ?? EXITED);\r\n    }));\r\n    onCleanup(() => {\r\n        cancelNextCallback();\r\n    });\r\n    function getTimeouts() {\r\n        const { timeout } = local;\r\n        let exit, enter, appear;\r\n        if (typeof timeout === \"number\") {\r\n            exit = enter = appear = timeout;\r\n        }\r\n        else if (timeout != null) {\r\n            exit = timeout.exit;\r\n            enter = timeout.enter;\r\n            // TODO: remove fallback for next major\r\n            appear = timeout.appear !== undefined ? timeout.appear : enter;\r\n        }\r\n        return { exit, enter, appear };\r\n    }\r\n    function updateStatus(mounting = false, nextStatus) {\r\n        if (nextStatus !== null) {\r\n            // nextStatus will always be ENTERING or EXITING.\r\n            cancelNextCallback();\r\n            if (nextStatus === ENTERING) {\r\n                performEnter(mounting);\r\n            }\r\n            else {\r\n                performExit();\r\n            }\r\n        }\r\n        else if (local.unmountOnExit && status() === EXITED) {\r\n            setStatus(UNMOUNTED);\r\n        }\r\n    }\r\n    function performEnter(mounting) {\r\n        const { enter } = local;\r\n        const appearing = context ? context.isMounting : mounting;\r\n        const [maybeNode, maybeAppearing] = local.nodeRef ? [appearing] : [childRef, appearing];\r\n        const timeouts = getTimeouts();\r\n        const enterTimeout = appearing ? timeouts.appear : timeouts.enter;\r\n        // no enter animation skip right to ENTERED\r\n        // if we are mounting and running this it means appear _must_ be set\r\n        if (!mounting && !enter) {\r\n            safeSetState(ENTERED, () => {\r\n                local.onEntered(maybeNode);\r\n            });\r\n            return;\r\n        }\r\n        local.onEnter(maybeNode, maybeAppearing);\r\n        nextFrame(() => safeSetState(ENTERING, () => {\r\n            local.onEntering(maybeNode, maybeAppearing);\r\n            onTransitionEnd(enterTimeout, () => {\r\n                safeSetState(ENTERED, () => {\r\n                    local.onEntered(maybeNode, maybeAppearing);\r\n                });\r\n            });\r\n        }));\r\n    }\r\n    function performExit() {\r\n        const { exit } = local;\r\n        const timeouts = getTimeouts();\r\n        const maybeNode = local.nodeRef ? undefined : childRef;\r\n        // no exit animation skip right to EXITED\r\n        if (!exit) {\r\n            safeSetState(EXITED, () => {\r\n                local.onExited(maybeNode);\r\n            });\r\n            return;\r\n        }\r\n        local.onExit(maybeNode);\r\n        nextFrame(() => safeSetState(EXITING, () => {\r\n            local.onExiting(maybeNode);\r\n            onTransitionEnd(timeouts.exit, () => {\r\n                safeSetState(EXITED, () => {\r\n                    local.onExited(maybeNode);\r\n                });\r\n                if (local.unmountOnExit) {\r\n                    nextFrame(() => {\r\n                        setStatus(UNMOUNTED);\r\n                    });\r\n                }\r\n            });\r\n        }));\r\n    }\r\n    function cancelNextCallback() {\r\n        if (nextCallback !== null) {\r\n            nextCallback?.cancel();\r\n            nextCallback = null;\r\n        }\r\n    }\r\n    function safeSetState(nextState, callback) {\r\n        // This shouldn't be necessary, but there are weird race conditions with\r\n        // setState callbacks and unmounting in testing, so always make sure that\r\n        // we can cancel any pending setState callbacks after we unmount.\r\n        callback = setNextCallback(callback);\r\n        setStatus(nextState);\r\n        callback();\r\n    }\r\n    function setNextCallback(callback) {\r\n        let active = true;\r\n        nextCallback = ((...args) => {\r\n            if (active) {\r\n                active = false;\r\n                nextCallback = null;\r\n                callback(...args);\r\n            }\r\n        });\r\n        nextCallback.cancel = () => {\r\n            active = false;\r\n        };\r\n        return nextCallback;\r\n    }\r\n    function onTransitionEnd(timeout, handler) {\r\n        setNextCallback(handler);\r\n        const node = local.nodeRef ? local.nodeRef : childRef;\r\n        const doesNotHaveTimeoutOrListener = timeout == null && !local.addEndListener;\r\n        if (!node || doesNotHaveTimeoutOrListener) {\r\n            nextCallback && setTimeout(nextCallback, 0);\r\n            return;\r\n        }\r\n        if (local.addEndListener) {\r\n            const [maybeNode, maybeNextCallback] = local.nodeRef ? [nextCallback] : [node, nextCallback];\r\n            local.addEndListener(maybeNode, maybeNextCallback);\r\n        }\r\n        if (timeout != null && nextCallback) {\r\n            setTimeout(nextCallback, timeout);\r\n        }\r\n    }\r\n    let resolvedChildren;\r\n    function renderChild() {\r\n        // lazily resolve children first time to avoid hydration errors\r\n        if (!resolvedChildren)\r\n            resolvedChildren = children(() => local.children);\r\n        const c = resolvedChildren();\r\n        return typeof c === \"function\" ? c(status(), childProps) : c;\r\n    }\r\n    return (<TransitionGroupContext.Provider value={null}>\r\n      <Show when={notUnmounted()}>{renderChild()}</Show>\r\n    </TransitionGroupContext.Provider>);\r\n};\r\n","// ported from https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/ThemeProvider.tsx\r\nimport { createContext, createMemo, useContext } from \"solid-js\";\r\nexport const DEFAULT_BREAKPOINTS = [\"xxl\", \"xl\", \"lg\", \"md\", \"sm\", \"xs\"];\r\nconst ThemeContext = createContext({\r\n    prefixes: {},\r\n    breakpoints: DEFAULT_BREAKPOINTS,\r\n});\r\nfunction ThemeProvider({ prefixes = {}, breakpoints = DEFAULT_BREAKPOINTS, dir, children, }) {\r\n    const contextValue = createMemo(() => ({\r\n        prefixes: { ...prefixes },\r\n        breakpoints,\r\n        dir,\r\n    }));\r\n    return <ThemeContext.Provider value={contextValue()}>{children}</ThemeContext.Provider>;\r\n}\r\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\r\n    const themeContext = useContext(ThemeContext);\r\n    return prefix || themeContext.prefixes[defaultPrefix] || defaultPrefix;\r\n}\r\nexport function useBootstrapBreakpoints() {\r\n    const ctx = useContext(ThemeContext);\r\n    return () => ctx.breakpoints;\r\n}\r\nexport function useIsRTL() {\r\n    const ctx = useContext(ThemeContext);\r\n    return () => ctx.dir === \"rtl\";\r\n}\r\nexport default ThemeProvider;\r\n","// source https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/triggerBrowserReflow.tsx\r\n// reading a dimension prop will cause the browser to recalculate,\r\n// which will let our animations work\r\nexport default function triggerBrowserReflow(node) {\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions\r\n    node.offsetHeight;\r\n}\r\n","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n  if (bubbles === void 0) {\n    bubbles = false;\n  }\n\n  if (cancelable === void 0) {\n    cancelable = true;\n  }\n\n  if (node) {\n    var event = document.createEvent('HTMLEvents');\n    event.initEvent(eventName, bubbles, cancelable);\n    node.dispatchEvent(event);\n  }\n}","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n  var str = css(node, 'transitionDuration') || '';\n  var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n  return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n  if (padding === void 0) {\n    padding = 5;\n  }\n\n  var called = false;\n  var handle = setTimeout(function () {\n    if (!called) triggerEvent(element, 'transitionend', true);\n  }, duration + padding);\n  var remove = listen(element, 'transitionend', function () {\n    called = true;\n  }, {\n    once: true\n  });\n  return function () {\n    clearTimeout(handle);\n    remove();\n  };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n  if (duration == null) duration = parseDuration(element) || 0;\n  var removeEmulate = emulateTransitionEnd(element, duration, padding);\n  var remove = listen(element, 'transitionend', handler);\n  return function () {\n    removeEmulate();\n    remove();\n  };\n}","// source https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/transitionEndListener.ts\r\nimport css from \"dom-helpers/css\";\r\nimport transitionEnd from \"dom-helpers/transitionEnd\";\r\nfunction parseDuration(node, property) {\r\n    const str = css(node, property) || \"\";\r\n    const mult = str.indexOf(\"ms\") === -1 ? 1000 : 1;\r\n    return parseFloat(str) * mult;\r\n}\r\nexport default function transitionEndListener(element, handler) {\r\n    const duration = parseDuration(element, \"transitionDuration\");\r\n    const delay = parseDuration(element, \"transitionDelay\");\r\n    const remove = transitionEnd(element, (e) => {\r\n        if (e.target === element) {\r\n            remove();\r\n            handler(e);\r\n        }\r\n    }, duration + delay);\r\n}\r\n","import { children, createSignal, mergeProps, splitProps } from \"solid-js\";\r\nimport { Transition } from \"solid-react-transition\";\r\nconst defaultProps = {};\r\n// Normalizes Transition callbacks when nodeRef is used.\r\nconst TransitionWrapper = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"onEnter\",\r\n        \"onEntering\",\r\n        \"onEntered\",\r\n        \"onExit\",\r\n        \"onExiting\",\r\n        \"onExited\",\r\n        \"addEndListener\",\r\n        \"children\",\r\n        \"childRef\",\r\n    ]);\r\n    let [nodeRef, setNodeRef] = createSignal();\r\n    const mergedRef = (ref) => {\r\n        setNodeRef(ref);\r\n        local.childRef?.(ref);\r\n    };\r\n    function normalize(callback) {\r\n        return (param) => {\r\n            if (callback && nodeRef()) {\r\n                callback(nodeRef(), param);\r\n            }\r\n        };\r\n    }\r\n    const handlers = {\r\n        get onEnter() {\r\n            return normalize(local.onEnter);\r\n        },\r\n        get onEntering() {\r\n            return normalize(local.onEntering);\r\n        },\r\n        get onEntered() {\r\n            return normalize(local.onEntered);\r\n        },\r\n        get onExit() {\r\n            return normalize(local.onExit);\r\n        },\r\n        get onExiting() {\r\n            return normalize(local.onExiting);\r\n        },\r\n        get onExited() {\r\n            return normalize(local.onExited);\r\n        },\r\n        get addEndListener() {\r\n            return normalize(local.addEndListener);\r\n        },\r\n    };\r\n    const resolvedChildren = children(() => local.children);\r\n    function renderChild() {\r\n        const child = resolvedChildren();\r\n        if (typeof child === \"function\") {\r\n            // wrap function to get ref\r\n            return (status, innerProps) => child(status, {\r\n                ...innerProps,\r\n                ref: mergedRef,\r\n            });\r\n        }\r\n        else {\r\n            // get resolved ref now\r\n            mergedRef(child);\r\n            return child;\r\n        }\r\n    }\r\n    return (<Transition {...props} {...handlers} nodeRef={nodeRef()}>\r\n      {renderChild()}\r\n    </Transition>);\r\n};\r\nexport default TransitionWrapper;\r\n","// ported from https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/Fade.tsx\r\nimport { children, mergeProps, splitProps } from \"solid-js\";\r\nimport { ENTERED, ENTERING } from \"solid-react-transition\";\r\nimport TransitionWrapper from \"./TransitionWrapper\";\r\nimport transitionEndListener from \"./transitionEndListener\";\r\nimport triggerBrowserReflow from \"./triggerBrowserReflow\";\r\nimport classNames from \"./classnames\";\r\nimport { resolveClasses } from \"solid-bootstrap-core\";\r\nconst defaultProps = {\r\n    in: false,\r\n    timeout: 300,\r\n    mountOnEnter: false,\r\n    unmountOnExit: false,\r\n    appear: false,\r\n};\r\nconst fadeStyles = {\r\n    [ENTERING]: \"show\",\r\n    [ENTERED]: \"show\",\r\n};\r\nconst Fade = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"class\",\r\n        \"children\",\r\n        \"transitionClasses\",\r\n    ]);\r\n    const handleEnter = (node, isAppearing) => {\r\n        triggerBrowserReflow(node);\r\n        props.onEnter?.(node, isAppearing);\r\n    };\r\n    let resolvedChildren;\r\n    let prevClasses;\r\n    return (<TransitionWrapper addEndListener={transitionEndListener} onEnter={handleEnter} {...props}>\r\n      {((status, innerProps) => {\r\n            // lazily resolve children first time to avoid hydration errors\r\n            if (!resolvedChildren)\r\n                resolvedChildren = children(() => local.children);\r\n            let el = resolvedChildren();\r\n            while (typeof el === \"function\")\r\n                el = el();\r\n            innerProps.ref(el);\r\n            const newClasses = classNames(\"fade\", local.class, \r\n            // @ts-ignore\r\n            fadeStyles?.[status], local.transitionClasses?.[status]);\r\n            resolveClasses(el, prevClasses, newClasses);\r\n            prevClasses = newClasses;\r\n            return el;\r\n        })}\r\n    </TransitionWrapper>);\r\n};\r\nexport default Fade;\r\n","// ported from https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/CloseButton.tsx\r\nimport { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nconst defaultProps = {\r\n    \"aria-label\": \"Close\",\r\n};\r\nconst CloseButton = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\"class\", \"variant\"]);\r\n    return (<button type=\"button\" class={classNames(\"btn-close\", local.variant && `btn-close-${local.variant}`, local.class)} {...props}/>);\r\n};\r\nexport default CloseButton;\r\n","// ported from https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/divWithClassName.tsx\r\nimport classNames from \"./classnames\";\r\nexport const divWithClass = (c) => (p) => {\r\n    return <div {...p} class={classNames(p.class, c)}/>;\r\n};\r\n","// ported from https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/createWithBsPrefix.tsx\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { mergeProps, splitProps } from \"solid-js\";\r\nimport { Dynamic } from \"solid-js/web\";\r\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\r\nexport function createWithBsPrefix(prefix, { Component, defaultProps = {} } = {}) {\r\n    const BsComponent = (p) => {\r\n        const [local, props] = splitProps(mergeProps({ as: Component }, defaultProps, p), [\r\n            \"class\",\r\n            \"bsPrefix\",\r\n            \"as\",\r\n        ]);\r\n        const resolvedPrefix = useBootstrapPrefix(local.bsPrefix, prefix);\r\n        return (<Dynamic component={local.as || \"div\"} class={classNames(local.class, resolvedPrefix)} {...props}/>);\r\n    };\r\n    return BsComponent;\r\n}\r\n","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);\n  return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","function replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n  if (element.classList) {\n    element.classList.remove(className);\n  } else if (typeof element.className === 'string') {\n    element.className = replaceClassName(element.className, className);\n  } else {\n    element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n  }\n}","import addClass from \"dom-helpers/addClass\";\r\nimport css from \"dom-helpers/css\";\r\nimport qsa from \"dom-helpers/querySelectorAll\";\r\nimport removeClass from \"dom-helpers/removeClass\";\r\nimport { ModalManager } from \"solid-bootstrap-core\";\r\nconst Selector = {\r\n    FIXED_CONTENT: \".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",\r\n    STICKY_CONTENT: \".sticky-top\",\r\n    NAVBAR_TOGGLER: \".navbar-toggler\",\r\n};\r\nexport class BootstrapModalManager extends ModalManager {\r\n    adjustAndStore(prop, element, adjust) {\r\n        const actual = element.style[prop];\r\n        // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible\r\n        // @ts-ignore\r\n        element.dataset[prop] = actual;\r\n        css(element, {\r\n            [prop]: `${parseFloat(css(element, prop)) + adjust}px`,\r\n        });\r\n    }\r\n    restore(prop, element) {\r\n        // @ts-ignore\r\n        const value = element.dataset[prop];\r\n        if (value !== undefined) {\r\n            // @ts-ignore\r\n            delete element.dataset[prop];\r\n            css(element, { [prop]: value });\r\n        }\r\n    }\r\n    setContainerStyle(containerState) {\r\n        super.setContainerStyle(containerState);\r\n        const container = this.getElement();\r\n        addClass(container, \"modal-open\");\r\n        if (!containerState.scrollBarWidth)\r\n            return;\r\n        const paddingProp = this.isRTL ? \"paddingLeft\" : \"paddingRight\";\r\n        const marginProp = this.isRTL ? \"marginLeft\" : \"marginRight\";\r\n        qsa(container, Selector.FIXED_CONTENT).forEach((el) => this.adjustAndStore(paddingProp, el, containerState.scrollBarWidth));\r\n        qsa(container, Selector.STICKY_CONTENT).forEach((el) => this.adjustAndStore(marginProp, el, -containerState.scrollBarWidth));\r\n        qsa(container, Selector.NAVBAR_TOGGLER).forEach((el) => this.adjustAndStore(marginProp, el, containerState.scrollBarWidth));\r\n    }\r\n    removeContainerStyle(containerState) {\r\n        super.removeContainerStyle(containerState);\r\n        const container = this.getElement();\r\n        removeClass(container, \"modal-open\");\r\n        const paddingProp = this.isRTL ? \"paddingLeft\" : \"paddingRight\";\r\n        const marginProp = this.isRTL ? \"marginLeft\" : \"marginRight\";\r\n        qsa(container, Selector.FIXED_CONTENT).forEach((el) => this.restore(paddingProp, el));\r\n        qsa(container, Selector.STICKY_CONTENT).forEach((el) => this.restore(marginProp, el));\r\n        qsa(container, Selector.NAVBAR_TOGGLER).forEach((el) => this.restore(marginProp, el));\r\n    }\r\n}\r\nlet sharedManager;\r\nexport function getSharedManager(options) {\r\n    if (!sharedManager)\r\n        sharedManager = new BootstrapModalManager(options);\r\n    return sharedManager;\r\n}\r\nexport default BootstrapModalManager;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useButtonProps } from \"solid-bootstrap-core\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n    variant: \"primary\",\r\n    active: false,\r\n    disabled: false,\r\n};\r\nconst Button = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"as\",\r\n        \"bsPrefix\",\r\n        \"children\",\r\n        \"variant\",\r\n        \"size\",\r\n        \"active\",\r\n        \"class\",\r\n    ]);\r\n    const prefix = useBootstrapPrefix(local.bsPrefix, \"btn\");\r\n    const [buttonProps, { tagName }] = useButtonProps({\r\n        tagName: local.as,\r\n        ...props,\r\n    });\r\n    return (<Dynamic component={tagName} {...buttonProps} {...props} class={classNames(local.class, prefix, local.active && \"active\", local.variant && `${prefix}-${local.variant}`, local.size && `${prefix}-${local.size}`, props.href && props.disabled && \"disabled\")}>\r\n      {local.children}\r\n    </Dynamic>);\r\n};\r\nexport default Button;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix, useBootstrapBreakpoints } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst DEVICE_SIZES = [\"xxl\", \"xl\", \"lg\", \"md\", \"sm\", \"xs\"];\r\nexport function useCol(o) {\r\n    const [local, props] = splitProps(o, [\"as\", \"bsPrefix\", \"class\"]);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"col\");\r\n    const breakpoints = useBootstrapBreakpoints();\r\n    const spans = [];\r\n    const classes = [];\r\n    breakpoints().forEach((brkPoint) => {\r\n        const propValue = props[brkPoint];\r\n        let span;\r\n        let offset;\r\n        let order;\r\n        if (typeof propValue === \"object\" && propValue != null) {\r\n            ({ span, offset, order } = propValue);\r\n        }\r\n        else {\r\n            span = propValue;\r\n        }\r\n        const infix = brkPoint !== \"xs\" ? `-${brkPoint}` : \"\";\r\n        if (span)\r\n            spans.push(span === true ? `${bsPrefix}${infix}` : `${bsPrefix}${infix}-${span}`);\r\n        if (order != null)\r\n            classes.push(`order${infix}-${order}`);\r\n        if (offset != null)\r\n            classes.push(`offset${infix}-${offset}`);\r\n    });\r\n    const [_, cleanedProps] = splitProps(props, DEVICE_SIZES);\r\n    return [\r\n        mergeProps(cleanedProps, {\r\n            get class() {\r\n                return classNames(local.class, ...spans, ...classes);\r\n            },\r\n        }),\r\n        {\r\n            get as() {\r\n                return local.as;\r\n            },\r\n            get bsPrefix() {\r\n                return bsPrefix;\r\n            },\r\n            get spans() {\r\n                return spans;\r\n            },\r\n        },\r\n    ];\r\n}\r\nconst Col = (p) => {\r\n    const [useProps, meta] = useCol(p);\r\n    const [local, colProps] = splitProps(useProps, [\"class\"]);\r\n    return (<Dynamic component={meta.as ?? \"div\"} {...colProps} class={classNames(local.class, !meta.spans.length && meta.bsPrefix)}/>);\r\n};\r\nexport default Col;\r\n","import { createContext } from \"solid-js\";\r\nconst context = createContext(null);\r\nexport default context;\r\n","import { createContext } from \"solid-js\";\r\nconst context = createContext(null);\r\nexport default context;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n    as: \"div\",\r\n    type: \"valid\",\r\n    tooltip: false,\r\n};\r\nconst Feedback = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"as\",\r\n        \"class\",\r\n        \"type\",\r\n        \"tooltip\",\r\n    ]);\r\n    return (<Dynamic component={local.as} {...props} class={classNames(local.class, `${local.type}-${local.tooltip ? \"tooltip\" : \"feedback\"}`)}/>);\r\n};\r\nexport default Feedback;\r\n","import { createContext } from \"solid-js\";\r\nconst FormContext = createContext({});\r\nexport default FormContext;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nimport FormContext from \"./FormContext\";\r\nconst defaultProps = {\r\n    as: \"div\",\r\n};\r\nconst FormGroup = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\"as\", \"controlId\"]);\r\n    const context = {\r\n        get controlId() {\r\n            return local.controlId;\r\n        },\r\n    };\r\n    return (<FormContext.Provider value={context}>\r\n      <Dynamic component={local.as} {...props}/>\r\n    </FormContext.Provider>);\r\n};\r\nexport default FormGroup;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport FormGroup from \"./FormGroup\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nconst defaultProps = {};\r\nconst FloatingLabel = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"bsPrefix\",\r\n        \"class\",\r\n        \"children\",\r\n        \"controlId\",\r\n        \"label\",\r\n    ]);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-floating\");\r\n    return (<FormGroup class={classNames(local.class, bsPrefix)} controlId={local.controlId} {...props}>\r\n      {local.children}\r\n      <label for={local.controlId}>{local.label}</label>\r\n    </FormGroup>);\r\n};\r\nexport default FloatingLabel;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport FormContext from \"./FormContext\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n    as: \"input\",\r\n    type: \"checkbox\",\r\n    isValid: false,\r\n    isInvalid: false,\r\n};\r\nconst FormCheckInput = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"as\",\r\n        \"id\",\r\n        \"bsPrefix\",\r\n        \"class\",\r\n        \"type\",\r\n        \"isValid\",\r\n        \"isInvalid\",\r\n    ]);\r\n    const formContext = useContext(FormContext);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-check-input\");\r\n    return (<Dynamic component={local.as} {...props} type={local.type} id={local.id || formContext.controlId} class={classNames(local.class, bsPrefix, local.isValid && \"is-valid\", local.isInvalid && \"is-invalid\")}/>);\r\n};\r\nexport default FormCheckInput;\r\n","import { createContext } from \"solid-js\";\r\nconst FormCheckContext = createContext();\r\nexport default FormCheckContext;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport FormContext from \"./FormContext\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport FormCheckContext from \"./FormCheckContext\";\r\nconst defaultProps = {};\r\nconst FormCheckLabel = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\"bsPrefix\", \"class\", \"for\"]);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-check-label\");\r\n    const formContext = useContext(FormContext);\r\n    const formCheckContext = useContext(FormCheckContext);\r\n    formCheckContext?.setHasFormCheckLabel?.(true);\r\n    return (<label // eslint-disable-line jsx-a11y/label-has-associated-control\r\n     {...props} for={local.for || formContext.controlId} class={classNames(local.class, bsPrefix)}/>);\r\n};\r\nexport default FormCheckLabel;\r\n","import { children, createMemo, createSignal, mergeProps, splitProps, useContext, } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport Feedback from \"./Feedback\";\r\nimport FormCheckInput from \"./FormCheckInput\";\r\nimport FormCheckLabel from \"./FormCheckLabel\";\r\nimport FormContext from \"./FormContext\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport FormCheckContext from \"./FormCheckContext\";\r\nconst defaultProps = {\r\n    as: \"input\",\r\n    title: \"\",\r\n    type: \"checkbox\",\r\n    inline: false,\r\n    disabled: false,\r\n    isValid: false,\r\n    isInvalid: false,\r\n    feedbackTooltip: false,\r\n};\r\nconst FormCheck = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"as\",\r\n        \"id\",\r\n        \"bsPrefix\",\r\n        \"bsSwitchPrefix\",\r\n        \"inline\",\r\n        \"disabled\",\r\n        \"isValid\",\r\n        \"isInvalid\",\r\n        \"feedbackTooltip\",\r\n        \"feedback\",\r\n        \"feedbackType\",\r\n        \"class\",\r\n        \"style\",\r\n        \"title\",\r\n        \"type\",\r\n        \"label\",\r\n        \"children\",\r\n    ]);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-check\");\r\n    const bsSwitchPrefix = useBootstrapPrefix(local.bsSwitchPrefix, \"form-switch\");\r\n    const [hasFormCheckLabel, setHasFormCheckLabel] = createSignal(false);\r\n    const formContext = useContext(FormContext);\r\n    const innerFormContext = {\r\n        get controlId() {\r\n            return local.id || formContext.controlId;\r\n        },\r\n    };\r\n    const resolvedChildren = children(() => local.children);\r\n    const hasLabel = createMemo(() => (local.label != null && local.label !== false && !resolvedChildren()) || hasFormCheckLabel());\r\n    return (<FormContext.Provider value={innerFormContext}>\r\n      <FormCheckContext.Provider value={{ setHasFormCheckLabel }}>\r\n        <div style={local.style} class={classNames(local.class, hasLabel() && bsPrefix, local.inline && `${bsPrefix}-inline`, local.type === \"switch\" && bsSwitchPrefix)}>\r\n          {resolvedChildren() || (<>\r\n              <FormCheckInput {...props} type={local.type === \"switch\" ? \"checkbox\" : local.type} isValid={local.isValid} isInvalid={local.isInvalid} disabled={local.disabled} as={local.as}/>\r\n              {hasLabel() && <FormCheckLabel title={local.title}>{local.label}</FormCheckLabel>}\r\n              {local.feedback && (<Feedback type={local.feedbackType} tooltip={local.feedbackTooltip}>\r\n                  {local.feedback}\r\n                </Feedback>)}\r\n            </>)}\r\n        </div>\r\n      </FormCheckContext.Provider>\r\n    </FormContext.Provider>);\r\n};\r\nexport default Object.assign(FormCheck, {\r\n    Input: FormCheckInput,\r\n    Label: FormCheckLabel,\r\n});\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport Feedback from \"./Feedback\";\r\nimport FormContext from \"./FormContext\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n    as: \"input\",\r\n    isValid: false,\r\n    isInvalid: false,\r\n};\r\nconst FormControl = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"as\",\r\n        \"bsPrefix\",\r\n        \"type\",\r\n        \"size\",\r\n        \"htmlSize\",\r\n        \"id\",\r\n        \"class\",\r\n        \"isValid\",\r\n        \"isInvalid\",\r\n        \"plaintext\",\r\n        \"readOnly\",\r\n    ]);\r\n    const formContext = useContext(FormContext);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-control\");\r\n    const classes = () => {\r\n        let classes;\r\n        if (local.plaintext) {\r\n            classes = { [`${bsPrefix}-plaintext`]: true };\r\n        }\r\n        else {\r\n            classes = {\r\n                [bsPrefix]: true,\r\n                [`${bsPrefix}-${local.size}`]: local.size,\r\n            };\r\n        }\r\n        return classes;\r\n    };\r\n    return (<Dynamic component={local.as} {...props} type={local.type} size={local.htmlSize} readOnly={local.readOnly} id={local.id || formContext.controlId} class={classNames(classes(), local.isValid && `is-valid`, local.isInvalid && `is-invalid`, local.type === \"color\" && `${bsPrefix}-color`)}/>);\r\n};\r\nexport default Object.assign(FormControl, { Feedback });\r\n","import { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nexport default createWithBsPrefix(\"form-floating\");\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport Col from \"./Col\";\r\nimport FormContext from \"./FormContext\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n    as: \"label\",\r\n    column: false,\r\n    visuallyHidden: false,\r\n};\r\nconst FormLabel = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"as\",\r\n        \"bsPrefix\",\r\n        \"column\",\r\n        \"visuallyHidden\",\r\n        \"class\",\r\n        \"htmlFor\",\r\n    ]);\r\n    const formContext = useContext(FormContext);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-label\");\r\n    let columnClass = \"col-form-label\";\r\n    if (typeof local.column === \"string\")\r\n        columnClass = `${columnClass} ${columnClass}-${local.column}`;\r\n    const classes = () => classNames(local.class, bsPrefix, local.visuallyHidden && \"visually-hidden\", local.column && columnClass);\r\n    return !!local.column ? (<Col as=\"label\" class={classes()} htmlFor={local.htmlFor || formContext.controlId} {...props}/>) : (<Dynamic component={local.as} class={classes()} htmlFor={local.htmlFor || formContext.controlId} {...props}/>);\r\n};\r\nexport default FormLabel;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport FormContext from \"./FormContext\";\r\nconst defaultProps = {\r\n    as: \"img\",\r\n};\r\nconst FormRange = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\"bsPrefix\", \"class\", \"id\"]);\r\n    const formContext = useContext(FormContext);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-range\");\r\n    return (<input {...props} type=\"range\" class={classNames(local.class, bsPrefix)} id={local.id || formContext.controlId}/>);\r\n};\r\nexport default FormRange;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport FormContext from \"./FormContext\";\r\nconst defaultProps = {\r\n    isValid: false,\r\n    isInvalid: false,\r\n};\r\nconst FormSelect = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"bsPrefix\",\r\n        \"size\",\r\n        \"htmlSize\",\r\n        \"class\",\r\n        \"isValid\",\r\n        \"isInvalid\",\r\n        \"id\",\r\n    ]);\r\n    const formContext = useContext(FormContext);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-select\");\r\n    return (<select {...props} size={local.htmlSize} class={classNames(local.class, bsPrefix, local.size && `${bsPrefix}-${local.size}`, local.isValid && `is-valid`, local.isInvalid && `is-invalid`)} id={local.id || formContext.controlId}/>);\r\n};\r\nexport default FormSelect;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n    as: \"small\",\r\n};\r\nconst FormText = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"as\",\r\n        \"bsPrefix\",\r\n        \"class\",\r\n        \"muted\",\r\n    ]);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-text\");\r\n    return (<Dynamic component={local.as} {...props} class={classNames(local.class, bsPrefix, local.muted && \"text-muted\")}/>);\r\n};\r\nexport default FormText;\r\n","import FormCheck from \"./FormCheck\";\r\nconst Switch = (props) => (<FormCheck {...props} type=\"switch\"/>);\r\nexport default Object.assign(Switch, {\r\n    Input: FormCheck.Input,\r\n    Label: FormCheck.Label,\r\n});\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport FormCheck from \"./FormCheck\";\r\nimport FormControl from \"./FormControl\";\r\nimport FormFloating from \"./FormFloating\";\r\nimport FormGroup from \"./FormGroup\";\r\nimport FormLabel from \"./FormLabel\";\r\nimport FormRange from \"./FormRange\";\r\nimport FormSelect from \"./FormSelect\";\r\nimport FormText from \"./FormText\";\r\nimport Switch from \"./Switch\";\r\nimport FloatingLabel from \"./FloatingLabel\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n    as: \"form\",\r\n};\r\nconst Form = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\"as\", \"class\", \"validated\"]);\r\n    return (<Dynamic component={local.as} {...props} class={classNames(local.class, local.validated && \"was-validated\")}/>);\r\n};\r\nexport default Object.assign(Form, {\r\n    Group: FormGroup,\r\n    Control: FormControl,\r\n    Floating: FormFloating,\r\n    Check: FormCheck,\r\n    Switch,\r\n    Label: FormLabel,\r\n    Text: FormText,\r\n    Range: FormRange,\r\n    Select: FormSelect,\r\n    FloatingLabel,\r\n});\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport FormCheckInput from \"./FormCheckInput\";\r\nimport InputGroupContext from \"./InputGroupContext\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst InputGroupText = createWithBsPrefix(\"input-group-text\", {\r\n    Component: \"span\",\r\n});\r\nconst InputGroupCheckbox = (props) => (<InputGroupText>\r\n    <FormCheckInput type=\"checkbox\" {...props}/>\r\n  </InputGroupText>);\r\nconst InputGroupRadio = (props) => (<InputGroupText>\r\n    <FormCheckInput type=\"radio\" {...props}/>\r\n  </InputGroupText>);\r\nconst defaultProps = {\r\n    as: \"div\",\r\n};\r\n/**\r\n *\r\n * @property {InputGroupText} Text\r\n * @property {InputGroupRadio} Radio\r\n * @property {InputGroupCheckbox} Checkbox\r\n */\r\nconst InputGroup = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"as\",\r\n        \"bsPrefix\",\r\n        \"size\",\r\n        \"hasValidation\",\r\n        \"class\",\r\n    ]);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"input-group\");\r\n    // Intentionally an empty object. Used in detecting if a dropdown\r\n    // exists under an input group.\r\n    const contextValue = {};\r\n    return (<InputGroupContext.Provider value={contextValue}>\r\n      <Dynamic component={local.as} {...props} class={classNames(local.class, bsPrefix, local.size && `${bsPrefix}-${local.size}`, local.hasValidation && \"has-validation\")}/>\r\n    </InputGroupContext.Provider>);\r\n};\r\nexport default Object.assign(InputGroup, {\r\n    Text: InputGroupText,\r\n    Radio: InputGroupRadio,\r\n    Checkbox: InputGroupCheckbox,\r\n});\r\n","import { createContext } from \"solid-js\";\r\nconst ModalContext = createContext({\r\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n    onHide() { },\r\n});\r\nexport default ModalContext;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport CloseButton from \"./CloseButton\";\r\nimport ModalContext from \"./ModalContext\";\r\nconst defaultProps = {\r\n    closeLabel: \"Close\",\r\n    closeButton: false,\r\n};\r\nconst AbstractModalHeader = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"closeLabel\",\r\n        \"closeVariant\",\r\n        \"closeButton\",\r\n        \"onHide\",\r\n        \"children\",\r\n    ]);\r\n    const context = useContext(ModalContext);\r\n    const handleClick = () => {\r\n        context?.onHide();\r\n        local.onHide?.();\r\n    };\r\n    return (<div {...props}>\r\n      {local.children}\r\n\r\n      {local.closeButton && (<CloseButton aria-label={local.closeLabel} variant={local.closeVariant} onClick={handleClick}/>)}\r\n    </div>);\r\n};\r\nexport default AbstractModalHeader;\r\n","import { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nexport default createWithBsPrefix(\"offcanvas-body\");\r\n","import { children, mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { ENTERED, ENTERING, EXITING, } from \"solid-react-transition\";\r\nimport transitionEndListener from \"./transitionEndListener\";\r\nimport TransitionWrapper from \"./TransitionWrapper\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { resolveClasses } from \"solid-bootstrap-core\";\r\nconst defaultProps = {\r\n    in: false,\r\n    mountOnEnter: false,\r\n    unmountOnExit: false,\r\n    appear: false,\r\n};\r\nconst transitionStyles = {\r\n    [ENTERING]: \"show\",\r\n    [ENTERED]: \"show\",\r\n};\r\nconst OffcanvasToggling = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\"bsPrefix\", \"class\", \"children\"]);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"offcanvas\");\r\n    const resolvedChildren = children(() => local.children);\r\n    let prevClasses;\r\n    return (<TransitionWrapper addEndListener={transitionEndListener} {...props}>\r\n      {((status, innerProps) => {\r\n            const el = resolvedChildren();\r\n            innerProps.ref(el);\r\n            const newClasses = classNames(local.class, (status === ENTERING || status === EXITING) && `${bsPrefix}-toggling`, \r\n            // @ts-ignore\r\n            transitionStyles[status]);\r\n            resolveClasses(el, prevClasses, newClasses);\r\n            prevClasses = newClasses;\r\n            return el;\r\n        })}\r\n    </TransitionWrapper>);\r\n};\r\nexport default OffcanvasToggling;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport AbstractModalHeader from \"./AbstractModalHeader\";\r\nconst defaultProps = {\r\n    closeLabel: \"Close\",\r\n    closeButton: false,\r\n};\r\nconst OffcanvasHeader = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\"bsPrefix\", \"class\"]);\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"offcanvas-header\");\r\n    return <AbstractModalHeader {...props} class={classNames(local.class, bsPrefix)}/>;\r\n};\r\nexport default OffcanvasHeader;\r\n","import { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nimport { divWithClass } from \"./divWithClass\";\r\nconst DivStyledAsH5 = divWithClass(\"h5\");\r\nexport default createWithBsPrefix(\"offcanvas-title\", {\r\n    Component: DivStyledAsH5,\r\n});\r\n","import { children, mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { Modal as BaseModal, } from \"solid-bootstrap-core\";\r\nimport Fade from \"./Fade\";\r\nimport OffcanvasBody from \"./OffcanvasBody\";\r\nimport OffcanvasToggling from \"./OffcanvasToggling\";\r\nimport ModalContext from \"./ModalContext\";\r\nimport NavbarContext from \"./NavbarContext\";\r\nimport OffcanvasHeader from \"./OffcanvasHeader\";\r\nimport OffcanvasTitle from \"./OffcanvasTitle\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { BootstrapModalManager, getSharedManager } from \"./BootstrapModalManager\";\r\nconst defaultProps = {\r\n    show: false,\r\n    backdrop: true,\r\n    keyboard: true,\r\n    scroll: false,\r\n    autoFocus: true,\r\n    enforceFocus: true,\r\n    restoreFocus: true,\r\n    placement: \"start\",\r\n};\r\nfunction DialogTransition(props) {\r\n    return <OffcanvasToggling {...props}/>;\r\n}\r\nfunction BackdropTransition(props) {\r\n    return <Fade {...props}/>;\r\n}\r\nconst Offcanvas = (p) => {\r\n    const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n        \"bsPrefix\",\r\n        \"class\",\r\n        \"children\",\r\n        \"aria-labelledby\",\r\n        \"placement\",\r\n        /*BaseModal props */\r\n        \"show\",\r\n        \"backdrop\",\r\n        \"keyboard\",\r\n        \"scroll\",\r\n        \"onEscapeKeyDown\",\r\n        \"onShow\",\r\n        \"onHide\",\r\n        \"container\",\r\n        \"autoFocus\",\r\n        \"enforceFocus\",\r\n        \"restoreFocus\",\r\n        \"restoreFocusOptions\",\r\n        \"onEntered\",\r\n        \"onExit\",\r\n        \"onExiting\",\r\n        \"onEnter\",\r\n        \"onEntering\",\r\n        \"onExited\",\r\n        \"backdropClass\",\r\n        \"manager\",\r\n        \"ref\",\r\n    ]);\r\n    let modalManager;\r\n    const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"offcanvas\");\r\n    const navbarContext = useContext(NavbarContext);\r\n    const handleHide = () => {\r\n        navbarContext?.onToggle?.();\r\n        local.onHide?.();\r\n    };\r\n    const modalContext = {\r\n        get onHide() {\r\n            return handleHide;\r\n        },\r\n    };\r\n    function getModalManager() {\r\n        if (local.manager)\r\n            return local.manager;\r\n        if (local.scroll) {\r\n            // Have to use a different modal manager since the shared\r\n            // one handles overflow.\r\n            if (!modalManager)\r\n                modalManager = new BootstrapModalManager({\r\n                    handleContainerOverflow: false,\r\n                });\r\n            return modalManager;\r\n        }\r\n        return getSharedManager();\r\n    }\r\n    const handleEnter = (node, ...args) => {\r\n        if (node)\r\n            node.style.visibility = \"visible\";\r\n        local.onEnter?.(node, ...args);\r\n    };\r\n    const handleExited = (node, ...args) => {\r\n        if (node)\r\n            node.style.visibility = \"\";\r\n        local.onExited?.(...args);\r\n    };\r\n    const renderBackdrop = (backdropProps) => (<div {...backdropProps} class={classNames(`${bsPrefix}-backdrop`, local.backdropClass)}>\r\n      {/* {props.children} */}\r\n    </div>);\r\n    let child;\r\n    const renderDialog = (dialogProps) => {\r\n        if (!child)\r\n            child = children(() => local.children);\r\n        return (<div \r\n        // @ts-ignore\r\n        role=\"dialog\" {...dialogProps} {...props} class={classNames(local.class, bsPrefix, `${bsPrefix}-${local.placement}`)} aria-labelledby={local[\"aria-labelledby\"]}>\r\n        {child}\r\n      </div>);\r\n    };\r\n    return (<ModalContext.Provider value={modalContext}>\r\n      <BaseModal show={local.show} ref={local.ref} backdrop={local.backdrop} container={local.container} keyboard={local.keyboard} autoFocus={local.autoFocus} enforceFocus={local.enforceFocus && !scroll} restoreFocus={local.restoreFocus} restoreFocusOptions={local.restoreFocusOptions} onEscapeKeyDown={local.onEscapeKeyDown} onShow={local.onShow} onHide={handleHide} onEnter={handleEnter} onEntering={local.onEntering} onEntered={local.onEntered} onExit={local.onExit} onExiting={local.onExiting} onExited={handleExited} manager={getModalManager()} transition={DialogTransition} backdropTransition={BackdropTransition} renderBackdrop={renderBackdrop} renderDialog={renderDialog}/>\r\n    </ModalContext.Provider>);\r\n};\r\nexport default Object.assign(Offcanvas, {\r\n    Body: OffcanvasBody,\r\n    Header: OffcanvasHeader,\r\n    Title: OffcanvasTitle,\r\n});\r\n","const isFunction = (valOrFunction) => typeof valOrFunction === 'function';\nexport const resolveValue = (valOrFunction, arg) => isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction;\n","export var ActionType;\n(function (ActionType) {\n    ActionType[ActionType[\"ADD_TOAST\"] = 0] = \"ADD_TOAST\";\n    ActionType[ActionType[\"UPDATE_TOAST\"] = 1] = \"UPDATE_TOAST\";\n    ActionType[ActionType[\"UPSERT_TOAST\"] = 2] = \"UPSERT_TOAST\";\n    ActionType[ActionType[\"DISMISS_TOAST\"] = 3] = \"DISMISS_TOAST\";\n    ActionType[ActionType[\"REMOVE_TOAST\"] = 4] = \"REMOVE_TOAST\";\n    ActionType[ActionType[\"START_PAUSE\"] = 5] = \"START_PAUSE\";\n    ActionType[ActionType[\"END_PAUSE\"] = 6] = \"END_PAUSE\";\n})(ActionType || (ActionType = {}));\n","import { ActionType } from '../types';\nimport { createStore, produce as p } from 'solid-js/store';\nconst [store, setStore] = createStore({\n    toasts: [],\n    pausedAt: undefined,\n});\nexport const createTimers = () => {\n    const { pausedAt, toasts } = store;\n    if (pausedAt)\n        return;\n    const now = Date.now();\n    const timers = toasts.map((toast) => {\n        if (toast.duration === Infinity)\n            return;\n        const durationLeft = (toast.duration || 0) + toast.pauseDuration - (now - toast.createdAt);\n        if (durationLeft <= 0) {\n            if (toast.visible) {\n                dispatch({\n                    type: ActionType.DISMISS_TOAST,\n                    toastId: toast.id,\n                });\n            }\n            return;\n        }\n        return setTimeout(() => {\n            dispatch({\n                type: ActionType.DISMISS_TOAST,\n                toastId: toast.id,\n            });\n        }, durationLeft);\n    });\n    return timers;\n};\nconst removalQueue = new Map();\nconst scheduleRemoval = (toastId, unmountDelay) => {\n    if (removalQueue.has(toastId))\n        return;\n    const timeout = setTimeout(() => {\n        removalQueue.delete(toastId);\n        dispatch({\n            type: ActionType.REMOVE_TOAST,\n            toastId,\n        });\n    }, unmountDelay);\n    removalQueue.set(toastId, timeout);\n};\nconst unscheduleRemoval = (toastId) => {\n    const timeout = removalQueue.get(toastId);\n    removalQueue.delete(toastId);\n    if (timeout)\n        clearTimeout(timeout);\n};\nexport const dispatch = (action) => {\n    switch (action.type) {\n        case ActionType.ADD_TOAST:\n            setStore('toasts', (t) => {\n                const toasts = t;\n                return [action.toast, ...toasts];\n            });\n            break;\n        case ActionType.DISMISS_TOAST:\n            const { toastId } = action;\n            const toasts = store.toasts;\n            if (toastId) {\n                const toastToRemove = toasts.find((t) => t.id === toastId);\n                if (toastToRemove)\n                    scheduleRemoval(toastId, toastToRemove.unmountDelay);\n                setStore('toasts', (t) => t.id === toastId, p((t) => (t.visible = false)));\n            }\n            else {\n                toasts.forEach((t) => {\n                    scheduleRemoval(t.id, t.unmountDelay);\n                });\n                setStore('toasts', (t) => t.id !== undefined, p((t) => (t.visible = false)));\n            }\n            break;\n        case ActionType.REMOVE_TOAST:\n            if (!action.toastId) {\n                setStore('toasts', []);\n                break;\n            }\n            setStore('toasts', (t) => {\n                const toasts = t;\n                return toasts.filter((t) => t.id !== action.toastId);\n            });\n            break;\n        case ActionType.UPDATE_TOAST:\n            if (action.toast.id) {\n                unscheduleRemoval(action.toast.id);\n            }\n            setStore('toasts', (t) => t.id === action.toast.id, (t) => {\n                const toast = t;\n                return {\n                    ...toast,\n                    ...action.toast,\n                };\n            });\n            break;\n        case ActionType.UPSERT_TOAST:\n            store.toasts.find((t) => t.id === action.toast.id)\n                ? dispatch({ type: ActionType.UPDATE_TOAST, toast: action.toast })\n                : dispatch({ type: ActionType.ADD_TOAST, toast: action.toast });\n            break;\n        case ActionType.START_PAUSE:\n            setStore(p((s) => {\n                s.pausedAt = Date.now();\n                s.toasts.forEach((t) => {\n                    t.paused = true;\n                });\n            }));\n            break;\n        case ActionType.END_PAUSE:\n            const pauseInterval = action.time - (store.pausedAt || 0);\n            setStore(p((s) => {\n                s.pausedAt = undefined;\n                s.toasts.forEach((t) => {\n                    t.pauseDuration += pauseInterval;\n                    t.paused = false;\n                });\n            }));\n            break;\n    }\n};\nexport { store };\n","export const defaultTimeouts = {\n    blank: 4000,\n    error: 4000,\n    success: 2000,\n    loading: Infinity,\n    custom: 4000,\n};\nexport const defaultToastOptions = {\n    id: '',\n    icon: '',\n    unmountDelay: 500,\n    duration: 3000,\n    ariaProps: {\n        role: 'status',\n        'aria-live': 'polite',\n    },\n    className: '',\n    style: {},\n    position: 'top-right',\n    iconTheme: {},\n};\nexport const defaultToasterOptions = {\n    position: 'top-right',\n    toastOptions: defaultToastOptions,\n    gutter: 8,\n    containerStyle: {},\n    containerClassName: '',\n};\nconst defaultContainerPadding = '16px';\nexport const defaultContainerStyle = {\n    position: 'fixed',\n    'z-index': 9999,\n    top: defaultContainerPadding,\n    bottom: defaultContainerPadding,\n    left: defaultContainerPadding,\n    right: defaultContainerPadding,\n    'pointer-events': 'none',\n};\n","import { setDefaultOpts, defaultOpts, store, dispatch, defaultToasterOptions } from '../core';\nimport { ActionType } from '../types';\nexport const generateID = (() => {\n    let count = 0;\n    return () => String(++count);\n})();\nexport const mergeContainerOptions = (props) => {\n    setDefaultOpts((s) => ({\n        containerClassName: props.containerClassName ?? s.containerClassName,\n        containerStyle: props.containerStyle ?? s.containerStyle,\n        gutter: props.gutter ?? s.gutter,\n        position: props.position ?? s.position,\n        toastOptions: {\n            ...props.toastOptions,\n        },\n    }));\n};\nexport const getToastWrapperStyles = (position, offset) => {\n    const top = position.includes('top');\n    const verticalStyle = top\n        ? { top: 0, 'margin-top': `${offset}px` }\n        : { bottom: 0, 'margin-bottom': `${offset}px` };\n    const horizontalStyle = position.includes('center')\n        ? { 'justify-content': 'center' }\n        : position.includes('right')\n            ? { 'justify-content': 'flex-end' }\n            : {};\n    return {\n        left: 0,\n        right: 0,\n        display: 'flex',\n        position: 'absolute',\n        transition: `all 230ms cubic-bezier(.21,1.02,.73,1)`,\n        ...verticalStyle,\n        ...horizontalStyle,\n    };\n};\nexport const updateToastHeight = (ref, toast) => {\n    const boundingRect = ref.getBoundingClientRect();\n    if (boundingRect.height !== toast.height) {\n        dispatch({\n            type: ActionType.UPDATE_TOAST,\n            toast: { id: toast.id, height: boundingRect.height },\n        });\n    }\n};\nexport const getWrapperYAxisOffset = (toast, position) => {\n    const { toasts } = store;\n    const gutter = defaultOpts().gutter || defaultToasterOptions.gutter || 8;\n    const relevantToasts = toasts.filter((t) => (t.position || position) === position && t.height);\n    const toastIndex = relevantToasts.findIndex((t) => t.id === toast.id);\n    const toastsBefore = relevantToasts.filter((toast, i) => i < toastIndex && toast.visible).length;\n    const offset = relevantToasts.slice(0, toastsBefore).reduce((acc, t) => acc + gutter + (t.height || 0), 0);\n    return offset;\n};\nexport const getToastYDirection = (toast, defaultPos) => {\n    const position = toast.position || defaultPos;\n    const top = position.includes('top');\n    return top ? 1 : -1;\n};\n","export const toastBarBase = {\n    display: 'flex',\n    'align-items': 'center',\n    color: '#363636',\n    background: 'white',\n    'box-shadow': '0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05)',\n    'max-width': '350px',\n    'pointer-events': 'auto',\n    padding: '8px 10px',\n    'border-radius': '4px',\n    'line-height': '1.3',\n    'will-change': 'transform',\n};\nexport const messageContainer = {\n    display: 'flex',\n    'align-items': 'center',\n    flex: '1 1 auto',\n    margin: '4px 10px',\n    'white-space': 'pre-line',\n};\nexport const iconContainer = {\n    'flex-shrink': 0,\n    'min-width': '20px',\n    'min-height': '20px',\n    display: 'flex',\n    'align-items': 'center',\n    'justify-content': 'center',\n    'text-align': 'center',\n};\nexport const genSVGCubicBezier = (keySplines) => ({\n    calcMode: 'spline',\n    keyTimes: '0; 1',\n    keySplines: keySplines,\n});\n","import { createRoot, createSignal, untrack } from 'solid-js';\nimport { ActionType } from '../types';\nimport { defaultToasterOptions, defaultToastOptions, defaultTimeouts } from './defaults';\nimport { generateID } from '../util';\nimport { dispatch, store } from './store';\nimport { resolveValue } from '../types';\nexport const [defaultOpts, setDefaultOpts] = createSignal(defaultToasterOptions);\nexport const createToast = (message, type = 'blank', options) => ({\n    ...defaultToastOptions,\n    ...defaultOpts().toastOptions,\n    ...options,\n    type,\n    message,\n    pauseDuration: 0,\n    createdAt: Date.now(),\n    visible: true,\n    id: options.id || generateID(),\n    paused: false,\n    style: {\n        ...defaultToastOptions.style,\n        ...defaultOpts().toastOptions?.style,\n        ...options.style,\n    },\n    duration: options.duration || defaultOpts().toastOptions?.duration || defaultTimeouts[type],\n    position: options.position || defaultOpts().toastOptions?.position || defaultOpts().position || defaultToastOptions.position,\n});\nconst createToastCreator = (type) => (message, options = {}) => {\n    return createRoot(() => {\n        const existingToast = store.toasts.find((t) => t.id === options.id);\n        const toast = createToast(message, type, { ...existingToast, duration: undefined, ...options });\n        dispatch({ type: ActionType.UPSERT_TOAST, toast });\n        return toast.id;\n    });\n};\nconst toast = (message, opts) => createToastCreator('blank')(message, opts);\nconst test = untrack(() => toast);\ntoast.error = createToastCreator('error');\ntoast.success = createToastCreator('success');\ntoast.loading = createToastCreator('loading');\ntoast.custom = createToastCreator('custom');\ntoast.dismiss = (toastId) => {\n    dispatch({\n        type: ActionType.DISMISS_TOAST,\n        toastId,\n    });\n};\ntoast.promise = (promise, msgs, opts) => {\n    const id = toast.loading(msgs.loading, { ...opts });\n    promise\n        .then((p) => {\n        toast.success(resolveValue(msgs.success, p), {\n            id,\n            ...opts,\n        });\n        return p;\n    })\n        .catch((e) => {\n        toast.error(resolveValue(msgs.error, e), {\n            id,\n            ...opts,\n        });\n    });\n    return promise;\n};\ntoast.remove = (toastId) => {\n    dispatch({\n        type: ActionType.REMOVE_TOAST,\n        toastId,\n    });\n};\nexport { toast };\n","import { defaultContainerStyle } from '../core';\nimport { mergeContainerOptions } from '../util';\nimport { createEffect, For, onCleanup } from 'solid-js';\nimport { store, createTimers } from '../core';\nimport { ToastContainer } from './';\nexport const Toaster = (props) => {\n    createEffect(() => {\n        mergeContainerOptions(props);\n    });\n    createEffect(() => {\n        const timers = createTimers();\n        onCleanup(() => {\n            if (!timers)\n                return;\n            timers.forEach((timer) => timer && clearTimeout(timer));\n        });\n    });\n    return (<div style={{\n            ...defaultContainerStyle,\n            ...props.containerStyle,\n        }} class={props.containerClassName}>\n      <style>{`.sldt-active{z-index:9999;}.sldt-active>*{pointer-events:auto;}`}</style>\n      <For each={store.toasts}>{(toast) => <ToastContainer toast={toast}/>}</For>\n    </div>);\n};\n","import { createEffect, Match, Switch } from 'solid-js';\nimport { resolveValue } from '../types';\nimport { getToastYDirection as d, iconContainer, messageContainer, toastBarBase } from '../util';\nimport { Error, Loader, Success } from './';\nexport const ToastBar = (props) => {\n    let el;\n    createEffect(() => {\n        if (!el)\n            return;\n        const direction = d(props.toast, props.position);\n        if (props.toast.visible) {\n            el.animate([\n                { transform: `translate3d(0,${direction * -200}%,0) scale(.6)`, opacity: 0.5 },\n                { transform: 'translate3d(0,0,0) scale(1)', opacity: 1 },\n            ], {\n                duration: 350,\n                fill: 'forwards',\n                easing: 'cubic-bezier(.21,1.02,.73,1)'\n            });\n        }\n        else {\n            el.animate([\n                { transform: 'translate3d(0,0,-1px) scale(1)', opacity: 1 },\n                { transform: `translate3d(0,${direction * -150}%,-1px) scale(.4)`, opacity: 0 },\n            ], {\n                duration: 400,\n                fill: 'forwards',\n                easing: 'cubic-bezier(.06,.71,.55,1)'\n            });\n        }\n    });\n    return (<div ref={el} class={props.toast.className} style={{\n            ...toastBarBase,\n            ...props.toast.style,\n        }}>\n      <Switch>\n        <Match when={props.toast.icon}>\n          <div style={iconContainer}>{props.toast.icon}</div>\n        </Match>\n        <Match when={props.toast.type === 'loading'}>\n          <div style={iconContainer}>\n            <Loader {...props.toast.iconTheme}/>\n          </div>\n        </Match>\n        <Match when={props.toast.type === 'success'}>\n          <div style={iconContainer}>\n            <Success {...props.toast.iconTheme}/>\n          </div>\n        </Match>\n        <Match when={props.toast.type === 'error'}>\n          <div style={iconContainer}>\n            <Error {...props.toast.iconTheme}/>\n          </div>\n        </Match>\n      </Switch>\n\n      <div style={messageContainer} {...props.toast.ariaProps}>\n        {resolveValue(props.toast.message, props.toast)}\n      </div>\n    </div>);\n};\n","import { createMemo, onMount } from 'solid-js';\nimport { defaultToastOptions, dispatch } from '../core';\nimport { ActionType, resolveValue } from '../types';\nimport { getToastWrapperStyles, getWrapperYAxisOffset, updateToastHeight } from '../util';\nimport { ToastBar } from './ToastBar';\nexport const ToastContainer = (props) => {\n    const calculatePosition = () => {\n        const position = props.toast.position || defaultToastOptions.position;\n        const offset = getWrapperYAxisOffset(props.toast, position);\n        const positionStyle = getToastWrapperStyles(position, offset);\n        return positionStyle;\n    };\n    const positionStyle = createMemo(() => calculatePosition());\n    let el = undefined;\n    onMount(() => {\n        if (el) {\n            updateToastHeight(el, props.toast);\n        }\n    });\n    return (<div ref={el} style={positionStyle()} class={props.toast.visible ? 'sldt-active' : ''} onMouseEnter={() => dispatch({\n            type: ActionType.START_PAUSE,\n            time: Date.now(),\n        })} onMouseLeave={() => dispatch({\n            type: ActionType.END_PAUSE,\n            time: Date.now(),\n        })}>\n      {props.toast.type === 'custom' ? (resolveValue(props.toast.message, props.toast)) : (<ToastBar toast={props.toast} position={props.toast.position || defaultToastOptions.position}/>)}\n    </div>);\n};\n","import { genSVGCubicBezier } from '../util';\nexport const MainCircle = (props) => {\n    const publicProps = {\n        dur: '0.35s',\n        begin: '100ms',\n        fill: 'freeze',\n        calcMode: 'spline',\n        keyTimes: '0; 0.6; 1',\n        keySplines: '0.25 0.71 0.4 0.88; .59 .22 .87 .63',\n    };\n    return (<circle fill={props.fill} cx=\"16\" cy=\"16\" r=\"0\">\n      <animate attributeName=\"opacity\" values=\"0; 1; 1\" {...publicProps}/>\n      <animate attributeName=\"r\" values=\"0; 17.5; 16\" {...publicProps}/>\n    </circle>);\n};\nexport const SecondaryCircle = (props) => {\n    const publicProps = {\n        dur: '1s',\n        begin: props.begin || '320ms',\n        fill: 'freeze',\n        ...genSVGCubicBezier('0.0 0.0 0.2 1'),\n    };\n    return (<circle fill={props.fill} cx=\"16\" cy=\"16\" r=\"12\" opacity=\"0\">\n      <animate attributeName=\"opacity\" values=\"1; 0\" {...publicProps}/>\n      <animate attributeName=\"r\" values=\"12; 26\" {...publicProps}/>\n    </circle>);\n};\n","import { genSVGCubicBezier } from '../util';\nimport { MainCircle, SecondaryCircle } from './IconCircle';\nexport const Success = (props) => {\n    const fill = props.primary || '#34C759';\n    return (<svg style={{ overflow: 'visible' }} viewBox=\"0 0 32 32\" width=\"1.25rem\" height=\"1.25rem\">\n      <MainCircle fill={fill}/>\n      <SecondaryCircle fill={fill} begin=\"350ms\"/>\n      <path fill=\"none\" stroke={props.secondary || '#FCFCFC'} stroke-width=\"4\" stroke-dasharray=\"22\" stroke-dashoffset=\"22\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" d=\"M9.8,17.2l3.8,3.6c0.1,0.1,0.3,0.1,0.4,0l9.6-9.7\">\n        <animate attributeName=\"stroke-dashoffset\" values=\"22;0\" dur=\"0.25s\" begin=\"250ms\" fill=\"freeze\" {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}/>\n      </path>\n    </svg>);\n};\n","import { genSVGCubicBezier } from '../util';\nimport { MainCircle, SecondaryCircle } from './IconCircle';\nexport const Error = (props) => {\n    const fill = props.primary || '#FF3B30';\n    return (<svg style={{ overflow: 'visible' }} viewBox=\"0 0 32 32\" width=\"1.25rem\" height=\"1.25rem\">\n      <MainCircle fill={fill}/>\n      <SecondaryCircle fill={fill}/>\n      <path fill=\"none\" stroke={props.secondary || '#FFFFFF'} stroke-width=\"4\" stroke-dasharray=\"9\" stroke-dashoffset=\"9\" stroke-linecap=\"round\" d=\"M16,7l0,9\">\n        <animate attributeName=\"stroke-dashoffset\" values=\"9;0\" dur=\"0.2s\" begin=\"250ms\" fill=\"freeze\" {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}/>\n      </path>\n      <circle fill={props.secondary || '#FFFFFF'} cx=\"16\" cy=\"23\" r=\"2.5\" opacity=\"0\">\n        <animate attributeName=\"opacity\" values=\"0;1\" dur=\"0.25s\" begin=\"350ms\" fill=\"freeze\" {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}/>\n      </circle>\n    </svg>);\n};\n","export const Loader = (props) => (<svg style={{ overflow: 'visible' }} viewBox=\"0 0 32 32\" width=\"1.25rem\" height=\"1.25rem\">\n    <path fill=\"none\" stroke={props.primary || '#E5E7EB'} stroke-width=\"4\" stroke-miterlimit=\"10\" d=\"M16,6c3,0,5.7,1.3,7.5,3.4c1.5,1.8,2.5,4,2.5,6.6c0,5.5-4.5,10-10,10S6,21.6,6,16S10.5,6,16,6z\"/>\n    <path fill=\"none\" stroke={props.secondary || '#4b5563'} stroke-width=\"4\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" d=\"M16,6c3,0,5.7,1.3,7.5,3.4c0.6,0.7,1.1,1.4,1.5,2.2\">\n      <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 16 16\" to=\"360 16 16\" dur=\"0.75s\" repeatCount=\"indefinite\"/>\n    </path>\n  </svg>);\n","import { toast } from './core';\nexport * from './types';\nimport { Toaster } from './components';\nexport { toast, Toaster };\nexport default toast;\n","import { createContext, useContext } from \"solid-js\";\r\nimport { SetStoreFunction } from \"solid-js/store\";\r\nconst CMSContext = createContext();\r\n\r\nexport type CMSBlock = {\r\n  found: boolean;\r\n  item: any;\r\n}\r\nexport type CMSGetter = Record<string,CMSBlock>;\r\nexport type CMSSetter = SetStoreFunction<Record<string,CMSBlock>>;\r\ntype Props = {\r\n  cms: CMSGetter;\r\n  setCms: CMSSetter;\r\n  children: any;\r\n};\r\nexport type CMSProviderType = {\r\n  cms: CMSGetter;\r\n  setCms: CMSSetter;\r\n}\r\nexport function CMSProvider(props: Props) {\r\n   return (\r\n    <CMSContext.Provider value={{ cms: props.cms, setCms: props.setCms }}>\r\n      {props.children}\r\n    </CMSContext.Provider>\r\n  );\r\n}\r\n\r\nexport function useCMS() { return useContext(CMSContext); }","import {Component, Show, createSignal } from 'solid-js';\r\nimport { CMSBlock, CMSProviderType, useCMS } from './provider';\r\nimport { formatText } from '../../library/common';\r\n\r\nexport interface cmsProps {\r\n    id: string;\r\n    text?: boolean;\r\n    data?: Record<string,string|number>;\r\n    children?: any;\r\n};\r\nexport const plainText = (html: string) => {\r\n    const div = document.createElement(\"DIV\");\r\n    div.innerHTML = html;\r\n    return div.textContent || div.innerText || \"\";\r\n};\r\n\r\n\r\nexport const CMS : Component<cmsProps> = (props) => {\r\n    const provider = useCMS() as CMSProviderType;\r\n    let cmsValue = provider?.cms[props.id];\r\n    if (!cmsValue) {\r\n        if (provider.setCms) {\r\n            cmsValue = { found: false, item: props.children } as CMSBlock;\r\n            provider.setCms(props.id, cmsValue);\r\n        }\r\n    }\r\n    const bindData = (block: CMSBlock) => {\r\n        if (!block) return null;\r\n        if (!props.data) return block.item;\r\n        console.log(\"bindData:hasData\", { block, props });\r\n        let text = formatText(block.item, props.data);\r\n        return text;\r\n    };\r\n    const [value, setValue] = createSignal<string>(bindData(cmsValue) || \"\");\r\n    return (\r\n        <>\r\n            <Show when={cmsValue?.found}>\r\n                <Show when={props.text}>\r\n                    <span innerText={plainText(value())} />\r\n                </Show>\r\n                <Show when={!props.text}>\r\n                    <span innerHTML={value()} />\r\n                </Show>\r\n            </Show>\r\n            <Show when={!cmsValue?.found}>\r\n                <Show when={props.data}>\r\n                    {value()}\r\n                </Show>\r\n                <Show when={!props.data}>\r\n                    {props.children}    \r\n                </Show>\r\n            </Show>\r\n        </>\r\n    )\r\n}","// src/types.ts\nvar SpinnerType = /* @__PURE__ */ ((SpinnerType2) => {\n  SpinnerType2[\"audio\"] = \"audio\";\n  SpinnerType2[\"ballTriangle\"] = \"ballTriangle\";\n  SpinnerType2[\"circles\"] = \"circles\";\n  SpinnerType2[\"bars\"] = \"bars\";\n  SpinnerType2[\"grid\"] = \"grid\";\n  SpinnerType2[\"hearts\"] = \"hearts\";\n  SpinnerType2[\"oval\"] = \"oval\";\n  SpinnerType2[\"puff\"] = \"puff\";\n  SpinnerType2[\"rings\"] = \"rings\";\n  SpinnerType2[\"tailSpin\"] = \"tailSpin\";\n  SpinnerType2[\"spinningCircles\"] = \"spinningCircles\";\n  SpinnerType2[\"threeDots\"] = \"threeDots\";\n  return SpinnerType2;\n})(SpinnerType || {});\n\n// src/components/Spinner.tsx\nimport { Match, mergeProps as mergeProps13, Switch } from \"solid-js\";\n\n// src/components/AudioSpinner.tsx\nimport { mergeProps } from \"solid-js\";\nvar AudioSpinner = (props) => {\n  const mergedProps = mergeProps(props);\n  return <svg\n    viewBox=\"0 0 55 80\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    fill=\"currentColor\"\n    data-test-name=\"audio\"\n    role=\"img\"\n    {...mergedProps}\n    width={mergedProps.width || 55}\n    height={mergedProps.height || 80}\n    class={mergedProps.class || \"\"}\n  ><g transform=\"matrix(1 0 0 -1 0 80)\">\n    <rect width=\"10\" height=\"20\" rx=\"3\"><animate\n      attributeName=\"height\"\n      begin=\"0s\"\n      dur=\"4.3s\"\n      values=\"20;45;57;80;64;32;66;45;64;23;66;13;64;56;34;34;2;23;76;79;20\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></rect>\n    <rect x=\"15\" width=\"10\" height=\"80\" rx=\"3\"><animate\n      attributeName=\"height\"\n      begin=\"0s\"\n      dur=\"2s\"\n      values=\"80;55;33;5;75;23;73;33;12;14;60;80\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></rect>\n    <rect x=\"30\" width=\"10\" height=\"50\" rx=\"3\"><animate\n      attributeName=\"height\"\n      begin=\"0s\"\n      dur=\"1.4s\"\n      values=\"50;34;78;23;56;23;34;76;80;54;21;50\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></rect>\n    <rect x=\"45\" width=\"10\" height=\"30\" rx=\"3\"><animate\n      attributeName=\"height\"\n      begin=\"0s\"\n      dur=\"2s\"\n      values=\"30;45;13;80;56;72;45;76;34;23;67;30\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></rect>\n  </g></svg>;\n};\n\n// src/components/BallTriangle.tsx\nimport { mergeProps as mergeProps2 } from \"solid-js\";\nvar BallTriangle = (props) => {\n  const mergedProps = mergeProps2(props);\n  return <svg\n    viewBox=\"0 0 57 57\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    stroke=\"currentColor\"\n    data-test-name=\"ball-triangle\"\n    role=\"img\"\n    {...mergedProps}\n    width={mergedProps.width || 57}\n    height={mergedProps.height || 57}\n    class={mergedProps.class || \"\"}\n  ><g fill=\"none\" fill-rule=\"evenodd\"><g transform=\"translate(1 1)\" stroke-width=\"2\">\n    <circle cx=\"5\" cy=\"50\" r=\"5\">\n      <animate\n        attributeName=\"cy\"\n        begin=\"0s\"\n        dur=\"2.2s\"\n        values=\"50;5;50;50\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"cx\"\n        begin=\"0s\"\n        dur=\"2.2s\"\n        values=\"5;27;49;5\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </circle>\n    <circle cx=\"27\" cy=\"5\" r=\"5\">\n      <animate\n        attributeName=\"cy\"\n        begin=\"0s\"\n        dur=\"2.2s\"\n        from=\"5\"\n        to=\"5\"\n        values=\"5;50;50;5\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"cx\"\n        begin=\"0s\"\n        dur=\"2.2s\"\n        from=\"27\"\n        to=\"27\"\n        values=\"27;49;5;27\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </circle>\n    <circle cx=\"49\" cy=\"50\" r=\"5\">\n      <animate\n        attributeName=\"cy\"\n        begin=\"0s\"\n        dur=\"2.2s\"\n        values=\"50;50;5;50\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"cx\"\n        from=\"49\"\n        to=\"49\"\n        begin=\"0s\"\n        dur=\"2.2s\"\n        values=\"49;5;27;49\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </circle>\n  </g></g></svg>;\n};\n\n// src/components/Bars.tsx\nimport { mergeProps as mergeProps3 } from \"solid-js\";\nvar Bars = (props) => {\n  const mergedProps = mergeProps3(props);\n  return <svg\n    viewBox=\"0 0 135 140\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    fill=\"currentColor\"\n    data-test-name=\"bars\"\n    role=\"img\"\n    {...mergedProps}\n    width={mergedProps.width || 135}\n    height={mergedProps.height || 140}\n    class={mergedProps.class || \"\"}\n  >\n    <rect y=\"10\" width=\"15\" height=\"120\" rx=\"6\">\n      <animate\n        attributeName=\"height\"\n        begin=\"0.5s\"\n        dur=\"1s\"\n        values=\"120;110;100;90;80;70;60;50;40;140;120\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"y\"\n        begin=\"0.5s\"\n        dur=\"1s\"\n        values=\"10;15;20;25;30;35;40;45;50;0;10\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </rect>\n    <rect x=\"30\" y=\"10\" width=\"15\" height=\"120\" rx=\"6\">\n      <animate\n        attributeName=\"height\"\n        begin=\"0.25s\"\n        dur=\"1s\"\n        values=\"120;110;100;90;80;70;60;50;40;140;120\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"y\"\n        begin=\"0.25s\"\n        dur=\"1s\"\n        values=\"10;15;20;25;30;35;40;45;50;0;10\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </rect>\n    <rect x=\"60\" width=\"15\" height=\"140\" rx=\"6\">\n      <animate\n        attributeName=\"height\"\n        begin=\"0s\"\n        dur=\"1s\"\n        values=\"120;110;100;90;80;70;60;50;40;140;120\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"y\"\n        begin=\"0s\"\n        dur=\"1s\"\n        values=\"10;15;20;25;30;35;40;45;50;0;10\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </rect>\n    <rect x=\"90\" y=\"10\" width=\"15\" height=\"120\" rx=\"6\">\n      <animate\n        attributeName=\"height\"\n        begin=\"0.25s\"\n        dur=\"1s\"\n        values=\"120;110;100;90;80;70;60;50;40;140;120\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"y\"\n        begin=\"0.25s\"\n        dur=\"1s\"\n        values=\"10;15;20;25;30;35;40;45;50;0;10\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </rect>\n    <rect x=\"120\" y=\"10\" width=\"15\" height=\"120\" rx=\"6\">\n      <animate\n        attributeName=\"height\"\n        begin=\"0.5s\"\n        dur=\"1s\"\n        values=\"120;110;100;90;80;70;60;50;40;140;120\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"y\"\n        begin=\"0.5s\"\n        dur=\"1s\"\n        values=\"10;15;20;25;30;35;40;45;50;0;10\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </rect>\n  </svg>;\n};\n\n// src/components/Circles.tsx\nimport { mergeProps as mergeProps4 } from \"solid-js\";\nvar Circles = (props) => {\n  const mergedProps = mergeProps4(props);\n  return <svg\n    viewBox=\"0 0 135 135\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    fill=\"currentColor\"\n    data-test-name=\"circles\"\n    role=\"img\"\n    {...mergedProps}\n    width={mergedProps.width || 135}\n    height={mergedProps.height || 135}\n    class={mergedProps.class || \"\"}\n  >\n    <path d=\"M67.447 58c5.523 0 10-4.477 10-10s-4.477-10-10-10-10 4.477-10 10 4.477 10 10 10zm9.448 9.447c0 5.523 4.477 10 10 10 5.522 0 10-4.477 10-10s-4.478-10-10-10c-5.523 0-10 4.477-10 10zm-9.448 9.448c-5.523 0-10 4.477-10 10 0 5.522 4.477 10 10 10s10-4.478 10-10c0-5.523-4.477-10-10-10zM58 67.447c0-5.523-4.477-10-10-10s-10 4.477-10 10 4.477 10 10 10 10-4.477 10-10z\"><animateTransform\n      attributeName=\"transform\"\n      type=\"rotate\"\n      from=\"0 67 67\"\n      to=\"-360 67 67\"\n      dur=\"2.5s\"\n      repeatCount=\"indefinite\"\n    /></path>\n    <path d=\"M28.19 40.31c6.627 0 12-5.374 12-12 0-6.628-5.373-12-12-12-6.628 0-12 5.372-12 12 0 6.626 5.372 12 12 12zm30.72-19.825c4.686 4.687 12.284 4.687 16.97 0 4.686-4.686 4.686-12.284 0-16.97-4.686-4.687-12.284-4.687-16.97 0-4.687 4.686-4.687 12.284 0 16.97zm35.74 7.705c0 6.627 5.37 12 12 12 6.626 0 12-5.373 12-12 0-6.628-5.374-12-12-12-6.63 0-12 5.372-12 12zm19.822 30.72c-4.686 4.686-4.686 12.284 0 16.97 4.687 4.686 12.285 4.686 16.97 0 4.687-4.686 4.687-12.284 0-16.97-4.685-4.687-12.283-4.687-16.97 0zm-7.704 35.74c-6.627 0-12 5.37-12 12 0 6.626 5.373 12 12 12s12-5.374 12-12c0-6.63-5.373-12-12-12zm-30.72 19.822c-4.686-4.686-12.284-4.686-16.97 0-4.686 4.687-4.686 12.285 0 16.97 4.686 4.687 12.284 4.687 16.97 0 4.687-4.685 4.687-12.283 0-16.97zm-35.74-7.704c0-6.627-5.372-12-12-12-6.626 0-12 5.373-12 12s5.374 12 12 12c6.628 0 12-5.373 12-12zm-19.823-30.72c4.687-4.686 4.687-12.284 0-16.97-4.686-4.686-12.284-4.686-16.97 0-4.687 4.686-4.687 12.284 0 16.97 4.686 4.687 12.284 4.687 16.97 0z\"><animateTransform\n      attributeName=\"transform\"\n      type=\"rotate\"\n      from=\"0 67 67\"\n      to=\"360 67 67\"\n      dur=\"8s\"\n      repeatCount=\"indefinite\"\n    /></path>\n  </svg>;\n};\n\n// src/components/Grid.tsx\nimport { mergeProps as mergeProps5 } from \"solid-js\";\nvar Grid = (props) => {\n  const mergedProps = mergeProps5(props);\n  return <svg\n    viewBox=\"0 0 105 105\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    fill=\"currentColor\"\n    data-test-name=\"grid\"\n    role=\"img\"\n    {...mergedProps}\n    width={mergedProps.width || 105}\n    height={mergedProps.height || 105}\n    class={mergedProps.class || \"\"}\n  >\n    <circle cx=\"12.5\" cy=\"12.5\" r=\"12.5\"><animate\n      attributeName=\"fill-opacity\"\n      begin=\"0s\"\n      dur=\"1s\"\n      values=\"1;.2;1\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle cx=\"12.5\" cy=\"52.5\" r=\"12.5\" fill-opacity=\".5\"><animate\n      attributeName=\"fill-opacity\"\n      begin=\"100ms\"\n      dur=\"1s\"\n      values=\"1;.2;1\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle cx=\"52.5\" cy=\"12.5\" r=\"12.5\"><animate\n      attributeName=\"fill-opacity\"\n      begin=\"300ms\"\n      dur=\"1s\"\n      values=\"1;.2;1\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle cx=\"52.5\" cy=\"52.5\" r=\"12.5\"><animate\n      attributeName=\"fill-opacity\"\n      begin=\"600ms\"\n      dur=\"1s\"\n      values=\"1;.2;1\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle cx=\"92.5\" cy=\"12.5\" r=\"12.5\"><animate\n      attributeName=\"fill-opacity\"\n      begin=\"800ms\"\n      dur=\"1s\"\n      values=\"1;.2;1\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle cx=\"92.5\" cy=\"52.5\" r=\"12.5\"><animate\n      attributeName=\"fill-opacity\"\n      begin=\"400ms\"\n      dur=\"1s\"\n      values=\"1;.2;1\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle cx=\"12.5\" cy=\"92.5\" r=\"12.5\"><animate\n      attributeName=\"fill-opacity\"\n      begin=\"700ms\"\n      dur=\"1s\"\n      values=\"1;.2;1\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle cx=\"52.5\" cy=\"92.5\" r=\"12.5\"><animate\n      attributeName=\"fill-opacity\"\n      begin=\"500ms\"\n      dur=\"1s\"\n      values=\"1;.2;1\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle cx=\"92.5\" cy=\"92.5\" r=\"12.5\"><animate\n      attributeName=\"fill-opacity\"\n      begin=\"200ms\"\n      dur=\"1s\"\n      values=\"1;.2;1\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n  </svg>;\n};\n\n// src/components/Hearts.tsx\nimport { mergeProps as mergeProps6 } from \"solid-js\";\nvar Hearts = (props) => {\n  const mergedProps = mergeProps6(props);\n  return <svg\n    viewBox=\"0 0 140 64\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    fill=\"currentColor\"\n    data-test-name=\"hearts\"\n    role=\"img\"\n    {...mergedProps}\n    width={mergedProps.width || 140}\n    height={mergedProps.height || 64}\n    class={mergedProps.class || \"\"}\n  >\n    <path\n      d=\"M30.262 57.02L7.195 40.723c-5.84-3.976-7.56-12.06-3.842-18.063 3.715-6 11.467-7.65 17.306-3.68l4.52 3.76 2.6-5.274c3.717-6.002 11.47-7.65 17.305-3.68 5.84 3.97 7.56 12.054 3.842 18.062L34.49 56.118c-.897 1.512-2.793 1.915-4.228.9z\"\n      fill-opacity=\".5\"\n    ><animate\n      attributeName=\"fill-opacity\"\n      begin=\"0s\"\n      dur=\"1.4s\"\n      values=\"0.5;1;0.5\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></path>\n    <path\n      d=\"M105.512 56.12l-14.44-24.272c-3.716-6.008-1.996-14.093 3.843-18.062 5.835-3.97 13.588-2.322 17.306 3.68l2.6 5.274 4.52-3.76c5.84-3.97 13.592-2.32 17.307 3.68 3.718 6.003 1.998 14.088-3.842 18.064L109.74 57.02c-1.434 1.014-3.33.61-4.228-.9z\"\n      fill-opacity=\".5\"\n    ><animate\n      attributeName=\"fill-opacity\"\n      begin=\"0.7s\"\n      dur=\"1.4s\"\n      values=\"0.5;1;0.5\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></path>\n    <path d=\"M67.408 57.834l-23.01-24.98c-5.864-6.15-5.864-16.108 0-22.248 5.86-6.14 15.37-6.14 21.234 0L70 16.168l4.368-5.562c5.863-6.14 15.375-6.14 21.235 0 5.863 6.14 5.863 16.098 0 22.247l-23.007 24.98c-1.43 1.556-3.757 1.556-5.188 0z\" />\n  </svg>;\n};\n\n// src/components/Oval.tsx\nimport { mergeProps as mergeProps7 } from \"solid-js\";\nvar Oval = (props) => {\n  const mergedProps = mergeProps7(props);\n  return <svg\n    viewBox=\"0 0 38 38\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    fill=\"currentColor\"\n    data-test-name=\"oval\"\n    role=\"img\"\n    stroke=\"currentColor\"\n    {...mergedProps}\n    width={mergedProps.width || 38}\n    height={mergedProps.height || 38}\n    class={mergedProps.class || \"\"}\n  ><g fill=\"none\" fill-rule=\"evenodd\"><g transform=\"translate(1 1)\" stroke-width=\"2\">\n    <circle stroke-opacity=\".5\" cx=\"18\" cy=\"18\" r=\"18\" />\n    <path d=\"M36 18c0-9.94-8.06-18-18-18\"><animateTransform\n      attributeName=\"transform\"\n      type=\"rotate\"\n      from=\"0 18 18\"\n      to=\"360 18 18\"\n      dur=\"1s\"\n      repeatCount=\"indefinite\"\n    /></path>\n  </g></g></svg>;\n};\n\n// src/components/Puff.tsx\nimport { mergeProps as mergeProps8 } from \"solid-js\";\nvar Puff = (props) => {\n  const mergedProps = mergeProps8(props);\n  return <svg\n    viewBox=\"0 0 44 44\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    fill=\"currentColor\"\n    data-test-name=\"puff\"\n    role=\"img\"\n    stroke=\"currentColor\"\n    {...mergedProps}\n    width={mergedProps.width || 44}\n    height={mergedProps.height || 44}\n    class={mergedProps.class || \"\"}\n  ><g fill=\"none\" fill-rule=\"evenodd\" stroke-width=\"2\">\n    <circle cx=\"22\" cy=\"22\" r=\"1\">\n      <animate\n        attributeName=\"r\"\n        begin=\"0s\"\n        dur=\"1.8s\"\n        values=\"1; 20\"\n        calcMode=\"spline\"\n        keyTimes=\"0; 1\"\n        keySplines=\"0.165, 0.84, 0.44, 1\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"stroke-opacity\"\n        begin=\"0s\"\n        dur=\"1.8s\"\n        values=\"1; 0\"\n        calcMode=\"spline\"\n        keyTimes=\"0; 1\"\n        keySplines=\"0.3, 0.61, 0.355, 1\"\n        repeatCount=\"indefinite\"\n      />\n    </circle>\n    <circle cx=\"22\" cy=\"22\" r=\"1\">\n      <animate\n        attributeName=\"r\"\n        begin=\"-0.9s\"\n        dur=\"1.8s\"\n        values=\"1; 20\"\n        calcMode=\"spline\"\n        keyTimes=\"0; 1\"\n        keySplines=\"0.165, 0.84, 0.44, 1\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"stroke-opacity\"\n        begin=\"-0.9s\"\n        dur=\"1.8s\"\n        values=\"1; 0\"\n        calcMode=\"spline\"\n        keyTimes=\"0; 1\"\n        keySplines=\"0.3, 0.61, 0.355, 1\"\n        repeatCount=\"indefinite\"\n      />\n    </circle>\n  </g></svg>;\n};\n\n// src/components/Rings.tsx\nimport { mergeProps as mergeProps9 } from \"solid-js\";\nvar Rings = (props) => {\n  const mergedProps = mergeProps9(props);\n  return <svg\n    viewBox=\"0 0 45 45\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    fill=\"currentColor\"\n    data-test-name=\"rings\"\n    role=\"img\"\n    stroke=\"currentColor\"\n    {...mergedProps}\n    width={mergedProps.width || 45}\n    height={mergedProps.height || 45}\n    class={mergedProps.class || \"\"}\n  ><g\n    fill=\"none\"\n    fill-rule=\"evenodd\"\n    transform=\"translate(1 1)\"\n    stroke-width=\"2\"\n  >\n    <circle cx=\"22\" cy=\"22\" r=\"6\" stroke-opacity=\"0\">\n      <animate\n        attributeName=\"r\"\n        begin=\"1.5s\"\n        dur=\"3s\"\n        values=\"6;22\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"stroke-opacity\"\n        begin=\"1.5s\"\n        dur=\"3s\"\n        values=\"1;0\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"stroke-width\"\n        begin=\"1.5s\"\n        dur=\"3s\"\n        values=\"2;0\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </circle>\n    <circle cx=\"22\" cy=\"22\" r=\"6\" stroke-opacity=\"0\">\n      <animate\n        attributeName=\"r\"\n        begin=\"3s\"\n        dur=\"3s\"\n        values=\"6;22\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"stroke-opacity\"\n        begin=\"3s\"\n        dur=\"3s\"\n        values=\"1;0\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"stroke-width\"\n        begin=\"3s\"\n        dur=\"3s\"\n        values=\"2;0\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </circle>\n    <circle cx=\"22\" cy=\"22\" r=\"8\"><animate\n      attributeName=\"r\"\n      begin=\"0s\"\n      dur=\"1.5s\"\n      values=\"6;1;2;3;4;5;6\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n  </g></svg>;\n};\n\n// src/components/SpinningCircles.tsx\nimport { mergeProps as mergeProps10 } from \"solid-js\";\nvar SpinningCircles = (props) => {\n  const mergedProps = mergeProps10(props);\n  return <svg\n    viewBox=\"0 0 58 58\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    fill=\"currentColor\"\n    data-test-name=\"spinning-circles\"\n    role=\"img\"\n    {...mergedProps}\n    width={mergedProps.width || 58}\n    height={mergedProps.height || 58}\n    class={mergedProps.class || \"\"}\n  ><g fill=\"none\" fill-rule=\"evenodd\"><g transform=\"translate(2 1)\" stroke=\"currentColor\" stroke-width=\"1.5\">\n    <circle\n      cx=\"42.601\"\n      cy=\"11.462\"\n      r=\"5\"\n      fill-opacity=\"1\"\n      fill=\"currentColor\"\n    ><animate\n      attributeName=\"fill-opacity\"\n      begin=\"0s\"\n      dur=\"1.3s\"\n      values=\"1;0;0;0;0;0;0;0\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle\n      cx=\"49.063\"\n      cy=\"27.063\"\n      r=\"5\"\n      fill-opacity=\"0\"\n      fill=\"currentColor\"\n    ><animate\n      attributeName=\"fill-opacity\"\n      begin=\"0s\"\n      dur=\"1.3s\"\n      values=\"0;1;0;0;0;0;0;0\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle\n      cx=\"42.601\"\n      cy=\"42.663\"\n      r=\"5\"\n      fill-opacity=\"0\"\n      fill=\"currentColor\"\n    ><animate\n      attributeName=\"fill-opacity\"\n      begin=\"0s\"\n      dur=\"1.3s\"\n      values=\"0;0;1;0;0;0;0;0\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle\n      cx=\"27\"\n      cy=\"49.125\"\n      r=\"5\"\n      fill-opacity=\"0\"\n      fill=\"currentColor\"\n    ><animate\n      attributeName=\"fill-opacity\"\n      begin=\"0s\"\n      dur=\"1.3s\"\n      values=\"0;0;0;1;0;0;0;0\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle\n      cx=\"11.399\"\n      cy=\"42.663\"\n      r=\"5\"\n      fill-opacity=\"0\"\n      fill=\"currentColor\"\n    ><animate\n      attributeName=\"fill-opacity\"\n      begin=\"0s\"\n      dur=\"1.3s\"\n      values=\"0;0;0;0;1;0;0;0\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle\n      cx=\"4.938\"\n      cy=\"27.063\"\n      r=\"5\"\n      fill-opacity=\"0\"\n      fill=\"currentColor\"\n    ><animate\n      attributeName=\"fill-opacity\"\n      begin=\"0s\"\n      dur=\"1.3s\"\n      values=\"0;0;0;0;0;1;0;0\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle\n      cx=\"11.399\"\n      cy=\"11.462\"\n      r=\"5\"\n      fill-opacity=\"0\"\n      fill=\"currentColor\"\n    ><animate\n      attributeName=\"fill-opacity\"\n      begin=\"0s\"\n      dur=\"1.3s\"\n      values=\"0;0;0;0;0;0;1;0\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n    <circle cx=\"27\" cy=\"5\" r=\"5\" fill-opacity=\"0\" fill=\"currentColor\"><animate\n      attributeName=\"fill-opacity\"\n      begin=\"0s\"\n      dur=\"1.3s\"\n      values=\"0;0;0;0;0;0;0;1\"\n      calcMode=\"linear\"\n      repeatCount=\"indefinite\"\n    /></circle>\n  </g></g></svg>;\n};\n\n// src/components/TailSpin.tsx\nimport { mergeProps as mergeProps11 } from \"solid-js\";\nvar TailSpin = (props) => {\n  const mergedProps = mergeProps11(props);\n  return <svg\n    viewBox=\"0 0 38 38\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    data-test-name=\"tail-spin\"\n    role=\"img\"\n    {...mergedProps}\n    width={mergedProps.width || 38}\n    height={mergedProps.height || 38}\n    class={mergedProps.class || \"\"}\n  >\n    <defs><linearGradient x1=\"8.042%\" y1=\"0%\" x2=\"65.682%\" y2=\"23.865%\" id=\"a\">\n      <stop stop-color=\"currentColor\" stop-opacity=\"0\" offset=\"0%\" />\n      <stop\n        stop-color=\"currentColor\"\n        stop-opacity=\".631\"\n        offset=\"63.146%\"\n      />\n      <stop stop-color=\"currentColor\" offset=\"100%\" />\n    </linearGradient></defs>\n    <g fill=\"none\" fill-rule=\"evenodd\"><g transform=\"translate(1 1)\">\n      <path\n        d=\"M36 18c0-9.94-8.06-18-18-18\"\n        id=\"Oval-2\"\n        stroke=\"url(#a)\"\n        stroke-width=\"2\"\n      ><animateTransform\n        attributeName=\"transform\"\n        type=\"rotate\"\n        from=\"0 18 18\"\n        to=\"360 18 18\"\n        dur=\"0.9s\"\n        repeatCount=\"indefinite\"\n      /></path>\n      <circle fill=\"currentColor\" cx=\"36\" cy=\"18\" r=\"1\"><animateTransform\n        attributeName=\"transform\"\n        type=\"rotate\"\n        from=\"0 18 18\"\n        to=\"360 18 18\"\n        dur=\"0.9s\"\n        repeatCount=\"indefinite\"\n      /></circle>\n    </g></g>\n  </svg>;\n};\n\n// src/components/ThreeDots.tsx\nimport { mergeProps as mergeProps12 } from \"solid-js\";\nvar ThreeDots = (props) => {\n  const mergedProps = mergeProps12(props);\n  return <svg\n    viewBox=\"0 0 120 30\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    fill=\"currentColor\"\n    data-test-name=\"three-dots\"\n    role=\"img\"\n    {...mergedProps}\n    width={mergedProps.width || 120}\n    height={mergedProps.height || 30}\n    class={mergedProps.class || \"\"}\n  >\n    <circle cx=\"15\" cy=\"15\" r=\"15\">\n      <animate\n        attributeName=\"r\"\n        from=\"15\"\n        to=\"15\"\n        begin=\"0s\"\n        dur=\"0.8s\"\n        values=\"15;9;15\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"fill-opacity\"\n        from=\"1\"\n        to=\"1\"\n        begin=\"0s\"\n        dur=\"0.8s\"\n        values=\"1;.5;1\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </circle>\n    <circle cx=\"60\" cy=\"15\" r=\"9\" fill-opacity=\"0.3\">\n      <animate\n        attributeName=\"r\"\n        from=\"9\"\n        to=\"9\"\n        begin=\"0s\"\n        dur=\"0.8s\"\n        values=\"9;15;9\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"fill-opacity\"\n        from=\"0.5\"\n        to=\"0.5\"\n        begin=\"0s\"\n        dur=\"0.8s\"\n        values=\".5;1;.5\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </circle>\n    <circle cx=\"105\" cy=\"15\" r=\"15\">\n      <animate\n        attributeName=\"r\"\n        from=\"15\"\n        to=\"15\"\n        begin=\"0s\"\n        dur=\"0.8s\"\n        values=\"15;9;15\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"fill-opacity\"\n        from=\"1\"\n        to=\"1\"\n        begin=\"0s\"\n        dur=\"0.8s\"\n        values=\"1;.5;1\"\n        calcMode=\"linear\"\n        repeatCount=\"indefinite\"\n      />\n    </circle>\n  </svg>;\n};\n\n// src/components/Spinner.tsx\nvar Spinner = (props) => {\n  const mergedProps = mergeProps13(props);\n  return <Switch fallback={<Circles {...mergedProps} />}>\n    <Match when={mergedProps.type === \"audio\" /* audio */}><AudioSpinner {...mergedProps} /></Match>\n    <Match when={mergedProps.type === \"ballTriangle\" /* ballTriangle */}><BallTriangle {...mergedProps} /></Match>\n    <Match when={mergedProps.type === \"grid\" /* grid */}><Grid {...mergedProps} /></Match>\n    <Match when={mergedProps.type === \"hearts\" /* hearts */}><Hearts {...mergedProps} /></Match>\n    <Match when={mergedProps.type === \"oval\" /* oval */}><Oval {...mergedProps} /></Match>\n    <Match when={mergedProps.type === \"bars\" /* bars */}><Bars {...mergedProps} /></Match>\n    <Match when={mergedProps.type === \"puff\" /* puff */}><Puff {...mergedProps} /></Match>\n    <Match when={mergedProps.type === \"rings\" /* rings */}><Rings {...mergedProps} /></Match>\n    <Match when={mergedProps.type === \"spinningCircles\" /* spinningCircles */}><SpinningCircles {...mergedProps} /></Match>\n    <Match when={mergedProps.type === \"tailSpin\" /* tailSpin */}><TailSpin {...mergedProps} /></Match>\n    <Match when={mergedProps.type === \"threeDots\" /* threeDots */}><ThreeDots {...mergedProps} /></Match>\n  </Switch>;\n};\nexport {\n  AudioSpinner,\n  BallTriangle,\n  Bars,\n  Circles,\n  Grid,\n  Hearts,\n  Oval,\n  Puff,\n  Rings,\n  Spinner,\n  SpinnerType,\n  SpinningCircles,\n  TailSpin,\n  ThreeDots\n};\n","import { Component } from \"solid-js\"\r\nimport { Spinner, SpinnerType } from \"solid-spinner\"\r\n\r\nexport const PageLoading : Component = () => {\r\n    return (\r\n        <>\r\n            <div class=\"loading-container\">\r\n                <Spinner type={SpinnerType.bars} color=\"#696969\" width={\"6rem\"} height={\"6rem\"} />\r\n            </div>\r\n        </>\r\n    )\r\n}","import QuillEditor, { IQuillEditorWrapper } from \"../components/universal/quill-editor\"\r\nimport { Component, For, Match, Show,  Switch, createSignal, onMount } from \"solid-js\"\r\nimport { createStore } from \"solid-js/store\"\r\nimport { Progress } from \"../components/progress\"\r\nimport { A } from \"../components/universal/a-href\"\r\nimport { Required } from \"../components/universal/required-icon\";\r\nimport { Img } from \"../components/universal/image\";\r\nimport ImageCropper, { ImageFileData } from \"../components/universal/image-cropper\";\r\nimport { EntrantProfile, KeyOfType,  Step1RouteData } from \"../types\";\r\nimport { useNavigate, useRouteData } from \"@solidjs/router\";\r\nimport { commitChange, fetchPost, scrollToTop } from \"../library/common\";\r\nimport { ErrorMessage, useForm } from \"../components/universal/validation\";\r\nimport { Button, Form } from \"solid-bootstrap\"\r\nimport toast from \"solid-toast\"\r\nimport { getApplicationStatusJson, getText, loadStep1Cms } from \"../app\"\r\nimport { CMS } from \"../components/cms/cms\"\r\nimport { PageLoading } from \"../components/page-loading\"\r\n\r\ntype State = {\r\n    isSubmitting: boolean;\r\n    isContentReady: boolean;\r\n    showImageCropper: boolean;\r\n}\r\n\r\nexport function Step1Page () {\r\n    const [state, setState] = createStore<State>({ isSubmitting: false, isContentReady: false, showImageCropper: false } as State);\r\n    const navigate = useNavigate();\r\n    const required = ({ value }: any) => !value && getText(\"error::please-enter-a-value\", \"Please enter a value\");\r\n    const maxLength = (el: HTMLInputElement, max: number) => {\r\n        const len = el.value?.length;\r\n        return len > max && `The field must be no longer than ${max} characters long. Please remove ${len - max} characters.`\r\n    };\r\n    const requiredListItem = ({ value }: any) => {\r\n        return (!value || value == \"null\") && getText(\"error::please-select-from-the-list\", \"Please select from the list\");\r\n    }\r\n    const conditionallyRequired = (condition: boolean, value: string) => condition && !value && getText(\"error::please-enter-a-value\", \"Please enter a value\");\r\n    const mustAgreeToTermsAndConditions = ({ value }: any) => !value && getText(\"18th-salon-application/step-1::must-accept-terms-and-conditions-error\", \"You must accept the Terms and Conditions before you can proceed.\");\r\n    const { formSubmit, validate, errors } = useForm({\r\n        errorClass: \"error-input\"\r\n    });\r\n    const [quillInstance, setQuillInstance] = createSignal<EntrantProfile>();    \r\n    const [profileImageUrl, setProfileImageUrl] = createSignal<string>(\"\");\r\n    const [cropper, setCropper] = createSignal<any>();\r\n    const [biography, setBiography] = createSignal<string>(\"\");\r\n    const [countries, setCountries] = createSignal<any[]>([]);\r\n    const [salon, setSalon] = createSignal<any>();\r\n    const [model, setModel] = createStore({\r\n        biography: \"\",\r\n        personal: {\r\n            firstName: \"\",\r\n            lastName: \"\"\r\n        },\r\n        profile: {\r\n            imageUrl: \"\"\r\n        },\r\n        address: {\r\n            streetAddress1: \"\",\r\n            streetAddress2: \"\",\r\n            city: \"\",\r\n            state: \"\",\r\n            countryId: \"\",\r\n            postalCode: \"\"\r\n        },\r\n        contact: {\r\n            email: \"\",\r\n            phoneNumber: \"\"\r\n        },\r\n        socials: {\r\n            twitter: \"\",\r\n            facebook: \"\",\r\n            instagram: \"\"\r\n        },\r\n        isStudent: false,\r\n        student: {\r\n            school: {\r\n                name: \"\",\r\n                instructors: \"\",\r\n                isTitle1: false,\r\n                claimsIsTitle1: false\r\n            },\r\n            parentOrLegalGuardian: {\r\n                name: \"\",\r\n                email: \"\",\r\n                phoneNumber: \"\"\r\n            }\r\n        },\r\n        acceptedTermsAndConditions: false,\r\n        catalogue: {\r\n            wantsAdditional: false,\r\n            additionalOrdered: 0,\r\n            wantsFree: true\r\n        }\r\n    } as EntrantProfile);\r\n    const sessionGuid = (new Date()).getTime();\r\n    // @ts-expect-error: Not assignable…\r\n    const setModelWithEffect: SetStoreFunction<EntrantProfile> = (...params: [any]) => {\r\n        /**\r\n         * https://stackoverflow.com/questions/78209469/how-to-create-a-wrapper-for-solidjss-setstore-in-typescript\r\n         */\r\n        setModel(...params);\r\n        commitChange(\"17th-arc-salon-application/step-1/model-change\", {\r\n            Session: sessionGuid, Id: model.id, Values: params\r\n        }).then();\r\n    };\r\n    const ModelEditor : Component<{ field: keyof KeyOfType<EntrantProfile, string>; editor: keyof KeyOfType<EntrantProfile, IQuillEditorWrapper>; label?: string; }> = (props) =>\r\n    <>\r\n        <label>{props.label || props.field}</label>\r\n        <QuillEditor content={model[props.field] as string} setInstance={(editor) => setModel(props.editor, editor) } />\r\n    </>;\r\n    const showWantsAdditionalCataloguesPanel = () => model.catalogue.wantsFree && model.catalogue.wantsAdditional;\r\n    const isValid = async () => {\r\n        if (!model.acceptedTermsAndConditions) {\r\n            await commitError(getText(\"18th-salon-application/step-1::must-accept-terms-and-conditions-error\", \"You must accept the Terms and Conditions before you can proceed.\"));\r\n            return false;\r\n        }\r\n        if (model.biographyEditor?.isEmpty()) {\r\n            await commitError(getText(\"18th-salon-application/step-1::biography-required-error\", \"You must provide a short biography.\"));\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    const onChangeImageClicked = (e: Event) => {\r\n        e.preventDefault();\r\n        setState(\"showImageCropper\", true);\r\n    }\r\n    const onKeepImageClicked = (e: Event) => {\r\n        e.preventDefault();\r\n        setState(\"showImageCropper\", false);\r\n    }\r\n    const getModel = () => {\r\n        return {\r\n            Id: model.id,\r\n\r\n            FirstName: model.personal.firstName,\r\n            LastName: model.personal.lastName,\r\n\r\n            Email: model.contact.email,\r\n            PhoneNumber: model.contact.phoneNumber,\r\n\r\n            StreetAddress1: model.address.streetAddress1,\r\n            StreetAddress2: model.address.streetAddress2,\r\n            City: model.address.city,\r\n            State: model.address.state,\r\n            CountryId: model.address.countryId,\r\n            PostalCode: model.address.postalCode,\r\n\r\n            Twitter: model.socials.twitter,\r\n            Facebook: model.socials.facebook,\r\n            Instagram: model.socials.instagram,\r\n\r\n            Biography: model.biographyEditor?.getHtml(),\r\n\r\n            WantsFreeCatalogue: model.catalogue.wantsFree,\r\n            AdditionalCataloguesOrdered: model.catalogue.additionalOrdered || \"\",\r\n            WantsAdditionalCatalogues: model.catalogue.wantsAdditional,\r\n\r\n            IsHighSchoolStudent: model.isStudent,\r\n            HighSchool: model.student.school.name,\r\n            HighSchoolInstructors: model.student.school.instructors,\r\n            Age: model.student.age,\r\n            ClaimsToAttendTitle1HighSchool: model.student.school.claimsIsTitle1,\r\n\r\n            ParentOrLegalGuardianName: model.student.parentOrLegalGuardian.name,\r\n            ParentOrLegalGuardianEmail: model.student.parentOrLegalGuardian.email,\r\n            ParentOrLegalGuardianPhoneNumber: model.student.parentOrLegalGuardian.phoneNumber,\r\n\r\n            AcceptedTermsAndConditions: model.acceptedTermsAndConditions,\r\n        };\r\n    };\r\n    const getErrors = (obj: any) => Object.keys(obj).filter(key => obj[key].length);\r\n    const saveProfile = async () => {\r\n        try {\r\n            const model = getModel();\r\n            const response = await fetchPost(\"/SalonApplication/Salon/Step1\", model);\r\n            const json = await response.json();\r\n            if (!json.Success) {\r\n                setState({ isSubmitting: false });\r\n                return {\r\n                    success: false,\r\n                    errors: json.Errors\r\n                };\r\n            }\r\n            return {\r\n                success: true,\r\n                salonEntrantId: json.Data.SalonEntrantId\r\n            };\r\n        } catch (ex: any) {\r\n            setState({ isSubmitting: false });\r\n            return {\r\n                 success: false,\r\n                 errors: [ex.Message]\r\n            }\r\n        }\r\n    };\r\n    const commitError = async (error: string) => {\r\n        await commitChange(\"17th-arc-salon-application/step-1/error\", {\r\n            Error: error\r\n        });\r\n        toast.error(error);\r\n    }\r\n    const validateProfileImage = async () => {\r\n        \r\n        const imageFile = (await cropper().getImageFile()) as ImageFileData;\r\n        if (!imageFile) {\r\n            await commitError(\"[000] \" + getText(\"18th-salon-application/step-1::please-attach-profile-image-error\", \"Please attach a profile image.\"));\r\n            return false;\r\n        }\r\n        if (!imageFile.isValid) {\r\n            await commitError(\"[001] \" + getText(\"18th-salon-application/step-1::issue-with-profile-image-file-format-error\", \"There is an issue with the profile image or its file format. Please ensure it is a JPG or PNG file within the required dimensions.\"));\r\n            return false;\r\n        }\r\n        \r\n        if (!imageFile) {\r\n            await commitError(\"[002] \" + getText(\"18th-salon-application/step-1::attach-profile-image-error\", \"Please attach a profile image.\"));\r\n            return false;\r\n        }\r\n        if (!imageFile.isValid) {\r\n            await commitError(\"[003] \" + getText(\"18th-salon-application/step-1::profile-image-invalid-error\", \"The profile image file is not valid. Please check the format and try again.\"));\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    const saveProfileImage = async () => {\r\n        try {\r\n            const imageFile = (await cropper().getImageFile()) as ImageFileData;\r\n            await commitChange(\"17th-arc-salon-application/step-1/profile-image\", {\r\n                OriginalFilename: imageFile.filename,\r\n                FileSize: imageFile?.image?.size,\r\n                Errors: imageFile?.errors,\r\n                IsValid: imageFile?.isValid,\r\n                IsDirty: imageFile?.isDirty\r\n            });\r\n            if (imageFile.isDirty){\r\n                const attachingId = toast(\"Attaching the profile image to your application ...\")\r\n                const data = {\r\n                    SalonEntrantId: model.id,\r\n                    SalonEntrantImageId: model.profile.salonEntrantImageId,\r\n                    ImageFile: imageFile.image,\r\n                    OriginalFilename: imageFile.filename\r\n                };\r\n                const response = await fetchPost(\"/SalonApplication/Salon/UploadArtistPhotoStreamingJson\", data);\r\n                const json = await response.json();\r\n                if (!json.Success) {\r\n                    return await commitError(\"[004] \" + getText(\"18th-salon-application/step-1::profile-image-upload-error\", \"There was an error uploading the profile image. Please try again.\"))\r\n                }\r\n                toast.remove(attachingId);\r\n            }\r\n        } catch (ex: any) {\r\n            setState({ isSubmitting: false });\r\n            await commitError(\"[004.1] \" + getText(\"18th-salon-application/step-1::profile-image-upload-error\", \"There was an error uploading the profile image. Please try again.\"))\r\n        }\r\n    };\r\n    const goToStep2 = () => {\r\n        toast.success(getText(\"18th-salon-application/step-1::profile-saved\", \"Your application profile has been saved.\"));\r\n        navigate(\"/step-2\");\r\n    };\r\n    const save = async () => {\r\n        setState({ isSubmitting: true });\r\n        await commitChange(\"17th-arc-salon-application/step-1/form\", getModel());\r\n        const checkingFormId = toast(\"Checking the form for errors ...\");\r\n        const isFormValid = await isValid();\r\n        toast.remove(checkingFormId);\r\n        if (!isFormValid) {\r\n            setState({ isSubmitting: false });\r\n            return;\r\n        }\r\n        const result = await saveProfile();\r\n        if (!result.success) {\r\n            setState({ isSubmitting: false });\r\n            return await commitError(\"[005] \" + getText(\"18th-salon-application/step-1::check-form-for-errors\", \"Please check the form for errors\") + \": \" + getErrors(result.errors).join(\"; \"));\r\n        }\r\n        setModelWithEffect(\"id\", result.salonEntrantId);\r\n        if (state.showImageCropper) {\r\n            const checkingImageId = toast(\"Checking the profile image for errors ...\");\r\n            const isValidImage = await validateProfileImage();\r\n            if (!isValidImage) {\r\n                setState({ isSubmitting: false });\r\n                toast.remove(checkingImageId);\r\n                return;\r\n            }\r\n            toast.remove(checkingImageId);\r\n            await saveProfileImage();\r\n        }\r\n        await getApplicationStatusJson({ forceRefresh: true });\r\n        setState({ isSubmitting: false });\r\n        goToStep2();\r\n    };\r\n    const handleSubmit = async () => {\r\n        await save();\r\n    };\r\n    onMount(async () => {\r\n        const routeData = await useRouteData() as Step1RouteData;\r\n        await loadStep1Cms();\r\n        setCountries(routeData.resources.countries);\r\n        setSalon(routeData.resources.salon);\r\n        setModel(routeData.step1);\r\n        if (!model.catalogue.wantsFree) {\r\n            setModel(\"catalogue\", \"wantsAdditional\", false);\r\n            setModel(\"catalogue\", \"additionalOrdered\", 1);\r\n        }\r\n        const hasProfileImage = !!routeData.step1.profile?.imageUrl;\r\n        if (hasProfileImage) {\r\n            setProfileImageUrl(routeData.step1.profile.imageUrl);            \r\n        }\r\n        setState(\"showImageCropper\", !hasProfileImage);\r\n        setState({ isContentReady: true });\r\n        scrollToTop();\r\n    });\r\n    return (\r\n        <Show when={state.isContentReady} fallback={<PageLoading />}>\r\n            <div style=\"font-family: 'Bariol-Regular'; font-size: 1.25em;\">\r\n                <Progress step={1} />\r\n                <h4 class=\"salon-heading-md\" style=\"text-align: center;\">\r\n                    {salon()?.name} Application\r\n                </h4>\r\n                <form use:formSubmit={handleSubmit}>\r\n                    <h4 class=\"salon-heading-md m-b-lg\" style=\"margin-top: 20px;\">\r\n                        <CMS id=\"18th-salon-application/step-1::your-details/heading\" text>Your Details</CMS>\r\n                    </h4>\r\n                    <CMS id=\"18th-salon-application/step-1::your-details/description\">\r\n                        <p style=\"font-size: 1.2em;\">\r\n                            You only need to register for the ARC Salon once; to manage your artworks on future visits, just go straight to the <b>LOG IN</b> page.\r\n                        </p>\r\n                        <p style=\"padding-top: 20px;\">\r\n                            If you experience any difficulties, please contact our webmaster for assistance at <A class=\"tape\" href=\"mailto:iian.d.neill@gmail.com\">iian.d.neill@gmail.com</A> with a description of the problem you encountered.\r\n                        </p>\r\n                        <p>\r\n                            Fields that are marked with a <span class=\"fa fa-star\" style=\"color: red;\"></span> are required.\r\n                        </p>\r\n                    </CMS>\r\n                    <hr />\r\n                    <div class=\"row m-t-lg\">\r\n                        <div class=\"col-md-12\">\r\n                            <CMS id=\"18th-salon-application/step-1::section/name\">\r\n                                <h3 class=\"m-t-lg\">\r\n                                    Name\r\n                                </h3>\r\n                                <p>\r\n                                    This is the name by which you'd like to be known in the ARC Salon competition.\r\n                                </p>\r\n                            </CMS>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-3\">\r\n                                    <label>\r\n                                        <Required /> <CMS id=\"label::first-name\" text>First name</CMS>\r\n                                    </label>\r\n                                    <input type=\"text\"\r\n                                        value={model.personal.firstName}\r\n                                        name=\"personal_firstName\"\r\n                                        onInput={(e) => setModel(\"personal\", \"firstName\", e.currentTarget?.value)}\r\n                                        onChange={(e) => setModelWithEffect(\"personal\", \"firstName\", e.currentTarget?.value)}\r\n                                        use:validate={[required, (el: any) => maxLength(el, 30)]}\r\n                                        class=\"form-control\"\r\n                                    />\r\n                                    <ErrorMessage error={errors.personal_firstName} />\r\n                                </div>\r\n                                <div class=\"col-md-3\">\r\n                                    <label>\r\n                                        <Required /> <CMS id=\"label::last-name\" text>Last name</CMS>\r\n                                    </label>\r\n                                    <input type=\"text\"\r\n                                        value={model.personal.lastName}\r\n                                        onInput={(e) => setModel(\"personal\", \"lastName\", e.currentTarget?.value)}\r\n                                        onChange={(e) => setModelWithEffect(\"personal\", \"lastName\", e.currentTarget?.value)}\r\n                                        name=\"personal_lastName\"\r\n                                        use:validate={[required, (el: any) => maxLength(el, 30)]}\r\n                                        class=\"form-control\"\r\n                                    />\r\n                                    <ErrorMessage error={errors.personal_lastName} />\r\n                                </div>\r\n                            </div>\r\n                            <hr/>\r\n                            <CMS id=\"18th-salon-application/step-1::section/contact-details\">\r\n                                <h3 class=\"m-t-lg\">\r\n                                    Contact details\r\n                                </h3>\r\n                                <p>\r\n                                    ARC will not share your contact details without your permission.\r\n                                </p>\r\n                            </CMS>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-6\">\r\n                                    <label>\r\n                                        <Required /> <CMS id=\"label::email\" text>Email</CMS>\r\n                                    </label>\r\n                                    <input\r\n                                        type=\"email\"\r\n                                        value={model.contact.email}\r\n                                        onChange={(e) => setModelWithEffect(\"contact\",\"email\", e.currentTarget?.value)}\r\n                                        use:validate={[required, (el: any) => maxLength(el, 255)]}\r\n                                        name=\"contact_email\"\r\n                                        class=\"form-control\" />\r\n                                    <ErrorMessage error={errors.contact_email} />\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-6\">\r\n                                    <label>\r\n                                        <Required /> <CMS id=\"label::street-line-1\" text>Street (line 1)</CMS>\r\n                                    </label>\r\n                                    <input type=\"text\"\r\n                                        value={model.address.streetAddress1}\r\n                                        name=\"address_streetAddress1\"\r\n                                        onChange={(e) => setModelWithEffect(\"address\",\"streetAddress1\", e.currentTarget?.value)}\r\n                                        use:validate={[required, (el: any) => maxLength(el, 100)]}\r\n                                        class=\"form-control\" />\r\n                                    <ErrorMessage error={errors.address_streetAddress1} />\r\n                                </div>\r\n                                <div class=\"col-md-6\">\r\n                                    <label>\r\n                                        <CMS id=\"label::street-line-2\" text>Street (line 2)</CMS>\r\n                                    </label>\r\n                                    <input\r\n                                        value={model.address.streetAddress2}\r\n                                        onChange={(e) => setModelWithEffect(\"address\",\"streetAddress2\", e.currentTarget?.value)}\r\n                                        name=\"address_streetAddress2\"\r\n                                        class=\"form-control\"\r\n                                        use:validate={[(el: any) => maxLength(el, 100)]}\r\n                                    />\r\n                                    <ErrorMessage error={errors.address_streetAddress2} />\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-6\">\r\n                                    <label>\r\n                                        <Required /> <CMS id=\"label::city\" text>City</CMS>\r\n                                    </label>\r\n                                    <input\r\n                                        value={model.address.city}\r\n                                        onChange={(e) => setModelWithEffect(\"address\", \"city\", e.currentTarget?.value)}\r\n                                        name=\"address_city\"\r\n                                        use:validate={[required, (el: any) => maxLength(el, 30)]}\r\n                                        class=\"form-control\" />\r\n                                    <ErrorMessage error={errors.address_city} />\r\n                                </div>\r\n                                <div class=\"col-md-6\">\r\n                                    <label>\r\n                                        <Required /> <CMS id=\"label::state-province\" text>State/Province</CMS>\r\n                                    </label>\r\n                                    <input\r\n                                        name=\"address_state\"\r\n                                        value={model.address.state}\r\n                                        onChange={(e) => setModelWithEffect(\"address\",\"state\", e.currentTarget?.value)}\r\n                                        use:validate={[required, (el: any) => maxLength(el, 30)]}\r\n                                        class=\"form-control\" />\r\n                                    <ErrorMessage error={errors.address_state} />\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-6\">\r\n                                    <label>\r\n                                        <Required /> <CMS id=\"label::post-code-zip\" text>Post code/ZIP</CMS>\r\n                                    </label>\r\n                                    <input \r\n                                        value={model.address.postalCode}\r\n                                        onChange={(e) => setModelWithEffect(\"address\", \"postalCode\", e.currentTarget?.value)}\r\n                                        use:validate={[required, (el: any) => maxLength(el, 20)]}\r\n                                        name=\"address_postalCode\"\r\n                                        class=\"form-control\" />\r\n                                    <ErrorMessage error={errors.address_postalCode} />\r\n                                </div>\r\n                                <div class=\"col-md-6\">\r\n                                    <label>\r\n                                        <Required /> <CMS id=\"label::country\" text>Country</CMS>\r\n                                    </label>\r\n                                    <select \r\n                                        value={model.address.countryId}\r\n                                        onChange={(e) => setModelWithEffect(\"address\", \"countryId\", e.currentTarget.value)}\r\n                                        name=\"address_countryId\"\r\n                                        use:validate={[requiredListItem]}\r\n                                        required\r\n                                        class=\"form-control\">\r\n                                        <For each={countries()}>{(opt) => <option value={opt.Value}>{opt.Text}</option>}</For>\r\n                                    </select>\r\n                                    <ErrorMessage error={errors.address_countryId} />\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-6\">\r\n                                    <label>\r\n                                        <Required /> <CMS id=\"18th-salon-application/step-1::label/phone-number\" text>Phone number (Please include country code where appropriate)</CMS>\r\n                                    </label>\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-md-6 col-xs-12\">\r\n                                            <input\r\n                                                type=\"tel\"\r\n                                                value={model.contact.phoneNumber}\r\n                                                onChange={(e) => setModelWithEffect(\"contact\", \"phoneNumber\", e.currentTarget?.value)}\r\n                                                use:validate={[required, (el: any) => maxLength(el, 50)]} \r\n                                                name=\"contact_phoneNumber\"\r\n                                                class=\"form-control\"\r\n                                            />\r\n                                            <ErrorMessage error={errors.contact_phoneNumber} />\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <hr/>\r\n                            <CMS id=\"18th-salon-application/step-1::section/social-media\">\r\n                                <h3 class=\"m-t-lg\">\r\n                                    Social media accounts\r\n                                </h3>\r\n                                <p>\r\n                                    We will use this information to find you on social media so that if we post about your work, we can tag you appropriately. This will assist us in our promotion of you and your work.\r\n                                </p>\r\n                            </CMS>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-4\">\r\n                                    <label>\r\n                                        <CMS id=\"label::facebook\" text>Facebook</CMS>\r\n                                    </label>\r\n                                    <input\r\n                                        value={model.socials.facebook}\r\n                                        onChange={(e) => setModelWithEffect(\"socials\",\"facebook\", e.currentTarget?.value)}\r\n                                        class=\"form-control\" />\r\n                                </div>\r\n                                <div class=\"col-md-4\">\r\n                                    <label>\r\n                                        <CMS id=\"label::instagram\" text>Instagram</CMS>\r\n                                    </label>\r\n                                    <input \r\n                                        value={model.socials.instagram}\r\n                                        onChange={(e) => setModelWithEffect(\"socials\",\"instagram\", e.currentTarget?.value)}\r\n                                        class=\"form-control\" />\r\n                                </div>\r\n                                <div class=\"col-md-4\">\r\n                                    <label>\r\n                                        <CMS id=\"label::twitter\" text>Twitter</CMS>\r\n                                    </label>\r\n                                    <input\r\n                                        value={model.socials.twitter}\r\n                                        onChange={(e) => setModelWithEffect(\"socials\",\"twitter\", e.currentTarget?.value)}\r\n                                        class=\"form-control\" />\r\n                                </div>\r\n                            </div>\r\n                            <hr/>\r\n                            <CMS id=\"18th-salon-application/step-1::section/biography\">\r\n                                <h3 class=\"m-t-lg\">\r\n                                    <Required /> Biography and profile picture\r\n                                </h3>\r\n                                <p>\r\n                                    These may be published in ARC Salon-related material if you become a finalist.\r\n                                </p>\r\n                            </CMS>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-6\">\r\n                                    <ModelEditor\r\n                                        field=\"biography\" editor=\"biographyEditor\"\r\n                                        label={getText(\"18th-salon-application/step-1::section/biography/criteria\", \"Biography (maximum: 500 words)\")} />\r\n                                    <Show when={model.biographyEditor?.isEmpty()}>\r\n                                        <div class=\"error-message\">\r\n                                            Please provide a short biography.\r\n                                        </div>\r\n                                    </Show>\r\n                                </div>\r\n                                <div class=\"col-md-6\">\r\n                                    <CMS id=\"18th-salon-application/step-1::section/profile-picture\">\r\n                                        <label>\r\n                                            Profile picture\r\n                                        </label>\r\n                                        <p>\r\n                                            Images should be in JPEG format and less than 5MBs in size.\r\n                                        </p>\r\n                                        <p>\r\n                                            An image can be uploaded by either clicking the <span class=\"fa fa-upload\" style=\"font-size: 1.5em; margin: 0 10px;\"></span> icon or by dragging an image from your computer into the space below.\r\n                                        </p>\r\n                                    </CMS>\r\n                                    <Show when={state.showImageCropper}>\r\n                                        <div>\r\n                                            <ImageCropper\r\n                                                src={profileImageUrl()} maxHeight={4000} maxWidth={4000}\r\n                                                setInstance={setCropper}\r\n                                            />\r\n                                            <Show when={!!profileImageUrl()}>\r\n                                                <button class=\"btn btn-primary\" style=\"width: 100%;\" onClick={onKeepImageClicked}>Keep Original Image</button>\r\n                                            </Show>\r\n                                        </div>\r\n                                    </Show>\r\n                                    <Show when={!state.showImageCropper}>\r\n                                        <div style=\"text-align: center;\">\r\n                                            <Img src={profileImageUrl()} mode=\"crop\" width=\"400\" />\r\n                                            <button class=\"btn btn-success\" style=\"width: 100%;\" onClick={onChangeImageClicked}>Upload Another Image</button>\r\n                                        </div>\r\n                                    </Show>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row m-t-xxl\">\r\n                                <div class=\"col-md-6\">\r\n                                    <CMS id=\"18th-salon-application/step-1::section/catalogues\">\r\n                                        <h3>\r\n                                            ARC Salon&trade; Catalogues\r\n                                        </h3>\r\n                                        <p>\r\n                                            As the cost of one catalogue is already included in the basic entry fee, you only need to pay the shipping to get this copy.\r\n                                        </p>\r\n                                        <p>\r\n                                            You can also pre-order additional ARC Salon&trade; Catalogues for $45.00 each plus shipping.\r\n                                        </p>\r\n                                    </CMS>\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <div class=\"checkbox\">\r\n                                                <Form.Group class=\"mb-3\" controlId=\"want-free-catalogue\">\r\n                                                    <Form.Check\r\n                                                        type=\"checkbox\"\r\n                                                        checked={model.catalogue.wantsFree}\r\n                                                        onChange={() => {\r\n                                                            setModelWithEffect(\"catalogue\", \"wantsFree\", !model.catalogue.wantsFree);\r\n                                                            if (!model.catalogue.wantsFree) {\r\n                                                                setModelWithEffect(\"catalogue\", \"wantsAdditional\", false);\r\n                                                                setModelWithEffect(\"catalogue\", \"additionalOrdered\", 0);\r\n                                                            }\r\n                                                        }}\r\n                                                        label={<CMS id=\"18th-salon-application/step-1::label/want-free-catalogue\">I want my free copy of the ARC Salon Catalogue, and will pay for postage</CMS>}\r\n                                                    />\r\n                                                </Form.Group>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div>\r\n                                        <div class=\"row m-t-sm\">\r\n                                            <div class=\"col-md-12\">\r\n                                                <Show when={model.catalogue.wantsFree}>\r\n                                                    <div class=\"checkbox\">\r\n                                                        <Form.Group class=\"mb-3\" controlId=\"pre-order-additional-copies\">\r\n                                                            <Form.Check\r\n                                                                type=\"checkbox\"\r\n                                                                checked={model.catalogue.wantsAdditional}\r\n                                                                onChange={() => {\r\n                                                                    setModelWithEffect(\"catalogue\", \"additionalOrdered\", 1);\r\n                                                                    setModelWithEffect(\"catalogue\", \"wantsAdditional\", !model.catalogue.wantsAdditional);\r\n                                                                }}\r\n                                                                label={\r\n                                                                    <CMS id=\"18th-salon-application/step-1::label/pre-order-additional-copies\">\r\n                                                                        I would like to pre-order additional copies at $45.00 each plus shipping.\r\n                                                                    </CMS>\r\n                                                                }\r\n                                                            />\r\n                                                        </Form.Group>\r\n                                                    </div>\r\n                                                </Show>\r\n                                                <Show when={showWantsAdditionalCataloguesPanel()}>\r\n                                                    <div>\r\n                                                        <p style=\"margin-top: 20px;\">\r\n                                                            <input\r\n                                                                type=\"number\"\r\n                                                                max={2}\r\n                                                                class=\"form-control\"\r\n                                                                style=\"width: 100px;\"\r\n                                                                name=\"catalogue_additionalOrdered\"\r\n                                                                use:validate={[({value}:any) => conditionallyRequired(model.catalogue.wantsAdditional, value)]}\r\n                                                                value={model.catalogue.additionalOrdered}\r\n                                                                onChange={(e) => setModelWithEffect(\"catalogue\", \"additionalOrdered\", parseInt(e.currentTarget?.value))}\r\n                                                            />\r\n                                                            <CMS id=\"18th-salon-application/step-1::label/maximum-catalogues\">(up to a maximum of 2 additional catalogues)</CMS>\r\n                                                        </p>\r\n                                                        <ErrorMessage error={errors.catalogue_additionalOrdered} />\r\n                                                    </div>\r\n                                                </Show>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-md-6\">\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-md-6\" style=\"padding-left: 50px;\">\r\n                                            <div class=\"books\">\r\n                                                <div class=\"book\">\r\n                                                    <a target=\"_blank\" href=\"http://www.arc-store.com/16inarcsabo.html\">\r\n                                                        <Img\r\n                                                            src={\"/ContentSection/12/Images/aa2d8580-745b-4378-8028-912abfc3ccc0.jpg\"}\r\n                                                            width={300}\r\n                                                            alt=\"Example catalogue from the 16th Annual Salon\"\r\n                                                        />\r\n                                                    </a>\r\n                                                </div>\r\n                                            </div>\r\n                                            <p style=\"margin-top: 20px;\">\r\n                                                <CMS id=\"18th-salon-application/step-1::label/example-catalogue\">\r\n                                                    Example catalogue from the 16th Annual Salon.\r\n                                                </CMS>\r\n                                            </p>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <CMS id=\"18th-salon-application/step-1::section/rules\">\r\n                                <h4 class=\"salon-heading-md m-t-xxl m-b-lg\">\r\n                                    Salon Competition Rules\r\n                                </h4>\r\n                                <div class=\"row\">\r\n                                    <div class=\"col-md-12\">\r\n                                        <p>\r\n                                            All entries must be submitted by <strong>June 13th, 2024 11:59 PM (Pacific Standard Time)</strong>. Artists may enter and win in one or multiple categories. The competition is open to all those who wish to apply worldwide. There is no limit to the number of artworks you may enter. Works do NOT need to be available for sale. Works do NOT need to be available for the live exhibition to compete and win. One copy of the International ARC Salon Book is included with your first entry (shipping for the catalog must be paid at checkout to receive your free copy). The exception to this is student works being submitted in the Teens Category. These entries do not come with a free copy of the ARC Salon Catalog. Copies may be pre-purchased now at a special pre-order price.</p>\r\n                                        <p>\r\n                                            Artists may enter and win in multiple categories; there is no limit to the number of works you may enter. Artists must submit digital files in JPEG format via our online submission system. Glass slides, images on CDs and large format transparencies will not be accepted. All digital images must be at least 1 MB in size. If you have a technical problem submitting your entry, please contact our Webmaster, Iian Neill, for assistance at <a class=\"tape\" href=\"mailto:iian.d.neill@gmail.com\">iian.d.neill@gmail.com</a>.</p>\r\n                                        <p>\r\n                                            The competition is open to all those who wish to apply worldwide. All entries must be original artwork, conceived and created by the entrant within the past 3 years. Representational work in all styles spanning from highly realistic to imaginative qualify. Acceptable media include: oil, watercolor, acrylic, pastel, sculpture, and all traditional mediums. A fuller description of mediums can be found on the <a class=\"tape\" href=\"https://www.artrenewal.org/SalonApplication/Salon/Home#/rules\" target=\"_blank\">Rules</a> page of the prospectus. At this time, we do not accept etchings, photography, or other forms of prints whatsoever, nor do we accept digital art. Painted over prints are strictly prohibited. ARC reserves the right to eliminate works if it feels the method of creation is in question. If the work is in question, we will always do our best to contact and discuss the technique used with the artist before any disqualifications are made.</p>\r\n                                        <p>\r\n                                            By submitting your entry, you grant irrevocable permission (limited-copyrights) to the Art Renewal Center&trade; to reproduce your artwork entered into the ARC Salon on the ARC website and in promotional materials, including but not limited to the ARC Salon Book, DVDs, articles and advertisements promoting ARC and/or the ARC Salon. This is necessary for us to be able to include your work on our website, in our ARC Salon Book and for the general promotion of your work through your participation in the competition. Images will not be used for other commercial purposes and artists retain general copyrights for all other purposes. By submitting your entry, you warrant that your entries are original work; conceived and created entirely by you, that you have read and understand the rules set forth in the competition prospectus, that you are 18 years of age or older, or if under 18, have the permission of a parent or guardian to submit your works and that the parent or guardian is agreeing to the rules set forth in this competition prospectus on minor's behalf. The ARC's <a class=\"tape\" href=\"https://www.artrenewal.org/Home/TermsAndConditions\" target=\"_blank\">Terms and Conditions</a> also apply. Please review our <a class=\"tape\" href=\"https://www.artrenewal.org/Home/PrivacyPolicy\" target=\"_blank\">Privacy Policy</a>.</p>\r\n                                        <p>\r\n                                            To learn more about the jurors of the competition and for more detailed information about entries, <a class=\"tape\" href=\"https://www.artrenewal.org/SalonApplication/Salon/Home#/awards\" target=\"_blank\">awards</a> and <a class=\"tape\" href=\"https://www.artrenewal.org/SalonApplication/Salon/Home#/rules\" target=\"_blank\">rules</a> please return to the pages of the prospectus.\r\n                                        </p>\r\n                                    </div>\r\n                                </div>\r\n                            </CMS>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-12\">\r\n                                    <CMS id=\"18th-salon-application/step-1::section/for-students\">\r\n                                        <h3 class=\"m-t-lg\">\r\n                                            For Students\r\n                                        </h3>\r\n                                        <p>\r\n                                            This category is devoted to young aspiring artists between 13 &ndash; 19 years of age. Works created during this age range are also acceptable, so long as the artist is no older then 20 years of age at the time of entry. The Teens Category is intended as a separate competition for students in this age range. These works competing in the Teens Category do not compete in the other ARC Salon categories or for the other awards associated to the rest of the competition. We do however invite the top winners of the Teens Category to participate in the ARC Salon Exhibition and award 1st, 2nd, and 3rd place cash award prizes as well as eight honorable mentions. Please note that in the Teens Category, we do also publish the name of the entrant&rsquo;s school and the name of their primary art instructor. If you have questions or concerns about this please contact <a class=\"tape\" href=\"mailto:kara.ross@artrenewal.org\">kara.ross@artrenewal.org</a>. If an individual within this age range wishes to compete in the other categories of the ARC Salon, they may do so, but should enter as a regular artist and not as a student.\r\n                                        </p>\r\n                                    </CMS>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-12\">\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <div class=\"checkbox\">\r\n                                                <Form.Group class=\"mb-3\" controlId=\"checkbox-minimum-age\">\r\n                                                    <Form.Check\r\n                                                        type=\"checkbox\"\r\n                                                        checked={model.isStudent}\r\n                                                        onChange={(e) => setModelWithEffect(\"isStudent\", !model.isStudent)}\r\n                                                        label={\r\n                                                            <CMS id=\"18th-salon-application/step-1::label/checkbox-minimum-age\">\r\n                                                                I am submitting artwork that was created at 13-19 years of age and has been created in the last three years.\r\n                                                            </CMS>\r\n                                                        }\r\n                                                    />\r\n                                                </Form.Group>\r\n                                                <CMS id=\"18th-salon-application/step-1::section/high-school-student\">\r\n                                                    <p style=\"margin-top: 10px;\">\r\n                                                        Entry fee for high school students is <b>$28</b>.<br />\r\n                                                        Students at <A class=\"tape\" target=\"_blank\" href=\"http://www2.ed.gov/programs/titleiparta/index.html\">Title 1</A> schools, if this fee would be a barrier to entry, please write to <a class=\"tape\" href=\"mailto:yvette.lytle@artrenewal.org\">yvette.lytle@artrenewal.org</a>.\r\n                                                    </p>\r\n                                                </CMS>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <Show when={model.isStudent}>\r\n                                        <div>\r\n                                            <hr/ >\r\n                                            <h3>\r\n                                                <CMS text id=\"18th-salon-application/step-1::heading/student-details\">Student details</CMS>\r\n                                            </h3>\r\n                                            <div class=\"row m-t-sm\">\r\n                                                <div class=\"col-md-6\">\r\n                                                    <label>\r\n                                                        <Required /> <CMS id=\"label::age\" text>Age</CMS>\r\n                                                    </label>\r\n                                                    <input\r\n                                                        type=\"number\"\r\n                                                        class=\"form-control\"\r\n                                                        value={model.student?.age} min={13} max={19}\r\n                                                        use:validate={[({value}:any) => conditionallyRequired(model.isStudent, value)]}\r\n                                                        name=\"student_age\"\r\n                                                        style=\"width: 100px;\"\r\n                                                        onChange={(e) => setModelWithEffect(\"student\", \"age\", parseInt(e.currentTarget?.value))} />\r\n                                                    <ErrorMessage error={errors.student_age} />\r\n                                                </div>\r\n                                            </div>\r\n                                            <h3>\r\n                                                <CMS id=\"18th-salon-application/step-1::parent-or-legal-guardian/heading\" text>Parent or Legal Guardian Contact Details</CMS>\r\n                                            </h3>\r\n                                            <div class=\"row m-t-sm\">\r\n                                                <div class=\"col-md-6\">\r\n                                                    <label>\r\n                                                        <Required /> <CMS id=\"label::name\">Name</CMS>\r\n                                                    </label>\r\n                                                    <input\r\n                                                        type=\"text\"\r\n                                                        class=\"form-control\"\r\n                                                        value={model.student?.parentOrLegalGuardian?.name}\r\n                                                        use:validate={[({value}:any) => conditionallyRequired(model.isStudent, value)]}\r\n                                                        name=\"student_parentOrLegalGuardian_name\"\r\n                                                        onChange={(e) => setModelWithEffect(\"student\", \"parentOrLegalGuardian\", \"name\", e.currentTarget?.value)} />\r\n                                                    <ErrorMessage error={errors.student_parentOrLegalGuardian_name} />\r\n                                                </div>\r\n                                            </div>\r\n                                            <div class=\"row m-t-sm\">\r\n                                                <div class=\"col-md-6\">\r\n                                                    <label>\r\n                                                        <Required /> <CMS id=\"label::email\" text>Email</CMS>\r\n                                                    </label>\r\n                                                    <input\r\n                                                        type=\"email\"\r\n                                                        class=\"form-control\"\r\n                                                        value={model.student?.parentOrLegalGuardian?.email}\r\n                                                        onChange={(e) => setModelWithEffect(\"student\", \"parentOrLegalGuardian\", \"email\", e.currentTarget?.value)}\r\n                                                        use:validate={[({value}:any) => conditionallyRequired(model.isStudent, value)]}\r\n                                                        name=\"student_parentOrLegalGuardian_email\"\r\n                                                        />\r\n                                                    <ErrorMessage error={errors.student_parentOrLegalGuardian_email} />\r\n                                                </div>\r\n                                                <div class=\"col-md-6\">\r\n                                                    <label>\r\n                                                        <CMS id=\"label::phone-number\" text>Phone number</CMS>\r\n                                                    </label>\r\n                                                    <input\r\n                                                        type=\"text\"\r\n                                                        class=\"form-control\"\r\n                                                        value={model.student?.parentOrLegalGuardian?.phoneNumber}\r\n                                                        onChange={(e) => setModelWithEffect(\"student\", \"parentOrLegalGuardian\", \"phoneNumber\", e.currentTarget?.value)}\r\n                                                        use:validate={[({value}:any) => conditionallyRequired(model.isStudent, value)]}\r\n                                                        name=\"student_parentOrLegalGuardian_phoneNumber\"\r\n                                                    />\r\n                                                    <ErrorMessage error={errors.student_parentOrLegalGuardian_phoneNumber} />\r\n                                                </div>\r\n                                            </div>\r\n                                            \r\n                                            <div class=\"row m-t-sm\">\r\n                                                <div class=\"col-md-6\">\r\n                                                    <label>\r\n                                                        <CMS id=\"label::high-school\" text>High school</CMS>\r\n                                                    </label>\r\n                                                    <input\r\n                                                        type=\"text\"\r\n                                                        class=\"form-control\"\r\n                                                        value={model.student?.school?.name}\r\n                                                        name=\"student_school_name\"\r\n                                                        use:validate={[({value}:any) => conditionallyRequired(model.isStudent, value), (el: any) => maxLength(el, 100)]}\r\n                                                        onChange={(e) => setModelWithEffect(\"student\", \"school\", \"name\", e.currentTarget?.value)}\r\n                                                    />\r\n                                                    <ErrorMessage error={errors.student_school_name} />\r\n                                                </div>\r\n                                            </div>\r\n                                            <div class=\"row m-t-sm\">\r\n                                                <div class=\"col-md-6\">\r\n                                                    <label>\r\n                                                        <CMS id=\"label::high-school-art-instructor\" text>High school art instructor</CMS>\r\n                                                    </label>\r\n                                                    <input\r\n                                                        type=\"text\"\r\n                                                        class=\"form-control\"\r\n                                                        name=\"student_school_instructors\"\r\n                                                        value={model.student?.school?.instructors}\r\n                                                        use:validate={[({value}:any) => conditionallyRequired(model.isStudent, value), (el: any) => maxLength(el, 200)]}\r\n                                                        onChange={(e) => setModelWithEffect(\"student\", \"school\", \"instructors\", e.currentTarget?.value)} />\r\n                                                    <ErrorMessage error={errors.student_school_instructors} />\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </Show>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <hr />\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-12\">\r\n                            <div class=\"checkbox\">\r\n                                <Form.Group class=\"mb-3\" controlId=\"agreed-to-terms-and-conditions\">\r\n                                    <Form.Check\r\n                                        type=\"checkbox\"\r\n                                        checked={model.acceptedTermsAndConditions}\r\n                                        use:validate={[mustAgreeToTermsAndConditions]}\r\n                                        name=\"acceptedTermsAndConditions\"\r\n                                        onChange={(e) => setModelWithEffect(\"acceptedTermsAndConditions\", !model.acceptedTermsAndConditions)}\r\n                                        label={\r\n                                            <CMS id=\"18th-salon-application/step-1::label/agreed-to-terms-and-conditions\">\r\n                                                I have read and agree to the ARC Salon Rules and ARC's <A class=\"tape\" target=\"_blank\" href=\"https://www.artrenewal.org/SalonApplication/Home/TermsAndConditions\">Terms and Conditions</A>.\r\n                                            </CMS>\r\n                                        }\r\n                                    />\r\n                                </Form.Group>\r\n                                {/* <label>\r\n                                    <input\r\n                                        type=\"checkbox\"\r\n                                        class=\"checks\"\r\n                                        checked={model.acceptedTermsAndConditions}\r\n                                        use:validate={[mustAgreeToTermsAndConditions]}\r\n                                        name=\"acceptedTermsAndConditions\"\r\n                                        onChange={(e) => setModel(\"acceptedTermsAndConditions\", !model.acceptedTermsAndConditions)} />\r\n                                    <CMS id=\"18th-salon-application/step-1::label/agreed-to-terms-and-conditions\">\r\n                                        I have read and agree to the ARC Salon Rules and ARC's <A class=\"tape\" target=\"_blank\" href=\"https://www.artrenewal.org/SalonApplication/Home/TermsAndConditions\">Terms and Conditions</A>.\r\n                                    </CMS>\r\n                                </label> */}\r\n                            </div>\r\n                            <ErrorMessage error={errors.acceptedTermsAndConditions} />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row m-t-xxl m-b-lg\">\r\n                        <div class=\"col-md-12\">\r\n                            <div id=\"submit-row\">\r\n                                <Button variant=\"primary\" classList={{ [\"disabled\"]: state.isSubmitting }} size=\"lg\" type=\"submit\">\r\n                                    <Switch>\r\n                                        <Match when={!!model.id}>\r\n                                            <CMS id=\"button::continue\" text>Continue</CMS>\r\n                                        </Match>\r\n                                        <Match when={!model.id}>\r\n                                            <CMS id=\"button::yes-sign-me-up\" text>Yes, sign me up!</CMS>\r\n                                        </Match>\r\n                                    </Switch>\r\n                                </Button>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </form>\r\n            </div>\r\n        </Show>\r\n    );\r\n};","import { Component, Show } from \"solid-js\";\r\n\r\ntype RawHtmlProps = { value: string }\r\nexport const RawHtml : Component<RawHtmlProps> = ({ value }) => <Show when={value}><div innerHTML={value}></div></Show>;","import { Link } from \"@solidjs/router\";\r\nimport { Show, For, Component, createSignal, Accessor, createEffect, onMount } from \"solid-js\";\r\nimport { Img } from \"./universal/image\";\r\nimport { ListItem, SalonSubmission, SalonSubmissionBase, SalonSubmissionImage, UserSession } from \"../types\";\r\nimport { createStore } from \"solid-js/store\";\r\nimport { commitChange, fetchGet } from \"../library/common\";\r\nimport { Button, Form, InputGroup } from \"solid-bootstrap\";\r\nimport { RawHtml } from \"./raw-html\";\r\nimport toast from \"solid-toast\";\r\nimport { CMS } from \"./cms/cms\";\r\nimport { getText, loadCms } from \"../app\";\r\n\r\nexport type ArtworkProps = {\r\n    session: UserSession;\r\n    artwork: SalonSubmissionBase;\r\n    resources: {\r\n        canApply: boolean;\r\n        categories: Accessor<ListItem[]>;\r\n    };\r\n    deleteClicked: (id: number) => void;\r\n};\r\n\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\nexport const Artwork : Component<ArtworkProps> = (props) => {\r\n    const canApply: boolean = props.resources.canApply;\r\n    const isAdmin = props.session.isAdmin;\r\n    const [state, setState] = createStore<State>({ isContentReady: false });\r\n    const [artwork, setArtwork] = createStore<SalonSubmissionBase>(props.artwork);\r\n    const [selectedCategoryId, setSelectedCategoryId] = createSignal<string>(\"\");\r\n    const [availableCategories, setAvailableCategories] = createSignal<ListItem[]>([]);\r\n    const updateAvailableCategories = () => {\r\n        const available = props.resources.categories()\r\n            .filter((item) => !!item.Value)\r\n            .filter((item) => !artwork.salonSubmissions.some(x => x.category.id == parseInt(item.Value)))\r\n            ;\r\n        setAvailableCategories([{ Text: \"\", Value: \"\" }, ...available]);\r\n    };\r\n    const deleteArtworkClicked = (artwork: SalonSubmissionBase) =>{\r\n        console.log(\"deleteArtworkClicked\", { artwork });\r\n        if (confirm(getText(\"dialog::sure-you-wish-to-delete-this-entry\", \"Are you sure you wish to delete this entry?\"))) {\r\n            props.deleteClicked(artwork.id);\r\n        }\r\n    };\r\n    const addCategoryClicked = async () => {\r\n        if (!selectedCategoryId()) {\r\n            return await commitError(\r\n                getText(\"error::category/select-from-list\", \"You must first select a category from the list.\"),\r\n                { SalonSubmissionBaseId: artwork.id }\r\n            );\r\n        }\r\n        const model = {\r\n            salonSubmissionBaseId: artwork.id,\r\n            salonCategoryId: selectedCategoryId()\r\n        };\r\n        const response = await fetchGet(\"/SalonApplication/SalonSubmission/AddCategoryJson\", model);\r\n        const json = await response.json();\r\n        if (!json.Success) {\r\n            return await commitError(\r\n                getText(\"error::category/unable-to-enter\", \"Unable to enter the work in the chosen category at this time.\"),\r\n                model\r\n            );\r\n        }\r\n        const newSubmission = json.Data;\r\n        setArtwork(\"salonSubmissions\", [...artwork.salonSubmissions, newSubmission]);\r\n        updateAvailableCategories();\r\n        const category = props.resources.categories().find(item => item.Value == selectedCategoryId());        \r\n        toast.success(`Added \"${props.artwork.title}\" to the ${category?.Text} category`);\r\n    }\r\n    const commitError = async (error: string, data?: {}) => {\r\n        await commitChange(\"17th-arc-salon-application/step-2/artwork/error\", {\r\n            Error: error,\r\n            Data: data\r\n        });\r\n        toast.error(error);\r\n    }\r\n    const removeCategoryClicked = async (artworkCategory: SalonSubmission) => {\r\n        const params = { salonSubmissionId: artworkCategory.id };\r\n        const response = await fetchGet(\"/SalonApplication/SalonSubmission/DeleteCategoryJson\", params);\r\n        const json = await response.json();\r\n        if (!json.Success) {\r\n            return commitError(\r\n                getText(\"error::category/unable-to-remove-artwork\", \"Unable to take the artwork out of the category at this time.\"),\r\n                params\r\n            );\r\n        }\r\n        const remaining = artwork.salonSubmissions.filter(x => x.id != artworkCategory.id);\r\n        setArtwork(\"salonSubmissions\", remaining);\r\n        toast.success(`Removed \"${props.artwork.title}\" from the ${artworkCategory.category.name} category`);\r\n    };\r\n    const deleteImageClicked = async (artworkImage: SalonSubmissionImage) => {\r\n        if (!confirm(getText(\"dialog::are-you-sure-you-wish-to-delete-image\", \"Are you sure you wish to delete this image?\"))) {\r\n            return;\r\n        }\r\n        const model = {\r\n            salonSubmissionBaseId: artwork.id,\r\n            newImageId: artworkImage.newImage.id\r\n        };\r\n        const response = await fetchGet(\"/SalonApplication/SalonSubmission/DeleteImageJson\", model);\r\n        const json = await response.json();\r\n        console.log(\"deleteImageClicked\", { json });\r\n        if (!json.Success) return;\r\n        const remaining = artwork.images.filter(img => img.id != artworkImage.id);\r\n        setArtwork(\"images\", remaining);\r\n        toast.success(`Image \"${artworkImage.newImage.url}\" has been deleted.`);\r\n    };\r\n    const toKBs = (value: number) => Math.ceil(value / 1000);\r\n    createEffect(() => props.resources.categories() && updateAvailableCategories());\r\n    onMount(async () => {\r\n        const ids=[\r\n            \"label::medium\",\"label::purchase-award-nominated-price\",\"label::size\",\"label::completed-in\",\"label::location\",\"label::about-this-artwork\",\r\n            \"label::categories\",\"label::images\",\r\n            \"salon-application/step-2::salon-artwork/file-details\",\r\n            \"button::view\",\"button::edit\",\"button::delete\",\"button::add\",\r\n            \"button::remove\", \"label::added-on-date\",\r\n            \"error::category/unable-to-enter\",\"error::category/select-from-list\",\r\n            \"dialog::sure-you-wish-to-delete-this-image\",\"dialog::sure-you-wish-to-delete-this-entry\",\r\n            \"error::category/unable-to-remove-artwork\",\"error::category/unable-to-enter\"\r\n        ];\r\n        await loadCms(ids);\r\n        setState(\"isContentReady\", true);\r\n    });\r\n    return (\r\n        <Show when={state.isContentReady}>\r\n            <div class=\"artwork-container\">\r\n                <div style=\"padding: 10px 20px; padding-bottom: 0; position: relative;\">\r\n                    <p style=\"font-size: 0.8em;\">\r\n                        <b>\r\n                            <CMS data={{ date: artwork.createdDate }} id=\"label::added-on-date\">{\"Added on {date} PST\"}</CMS>\r\n                        </b>\r\n                    </p>\r\n                </div>\r\n                <div style=\"padding: 0 20px;\">\r\n                    <h3>\r\n                        {artwork.title}\r\n                        <div style=\"float: right;\">\r\n                            <Button variant=\"primary\" style=\"margin-right: 5px;\" href={ \"#/edit-artwork/\" + artwork.id }><CMS id=\"button::edit\">Edit</CMS></Button>\r\n                            <Show when={isAdmin || canApply}>\r\n                                <Button variant=\"outline-danger\" onClick={(e) => { e.preventDefault(); deleteArtworkClicked(artwork); }}><CMS id=\"button::delete\">Delete</CMS></Button>\r\n                            </Show>\r\n                        </div>\r\n                    </h3>\r\n                    <table class=\"artwork-details-table\">\r\n                        <thead>\r\n                            <tr>\r\n                                <td style=\"width: 150px;\"></td>\r\n                                <td></td>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody>\r\n                            <tr style={{ \"border-top\": \"1px dotted #ccc\"}}>\r\n                                <td>\r\n                                    <CMS id=\"label::medium\" text>Medium</CMS>\r\n                                </td>\r\n                                <td>\r\n                                    {artwork.medium}\r\n                                </td>\r\n                            </tr>\r\n                            <tr style={{ \"border-top\": \"1px dotted #ccc\"}}>\r\n                                <td>\r\n                                    <CMS id=\"label::purchase-award-nominated-price\" text>Purchase award nominated price</CMS>\r\n                                </td>\r\n                                <td>\r\n                                    <Show when={artwork.purchaseAwardNominatedPrice != null}>\r\n                                        <span>USD {artwork.purchaseAwardNominatedPrice}</span>\r\n                                    </Show>\r\n                                </td>\r\n                            </tr>\r\n                            <tr style={{ \"border-top\": \"1px dotted #ccc\"}}>\r\n                                <td>\r\n                                    <CMS id=\"label::size\" text>Size</CMS>\r\n                                </td>\r\n                                <td>\r\n                                    <div innerHTML={artwork.measurements || \"\"}></div>\r\n                                </td>\r\n                            </tr>\r\n                            <tr style={{ \"border-top\": \"1px dotted #ccc\"}}>\r\n                                <td>\r\n                                    <CMS id=\"label::completed-in\" text>Completed in</CMS>\r\n                                </td>\r\n                                <td>\r\n                                    {artwork.year}\r\n                                </td>\r\n                            </tr>\r\n                            <tr style={{ \"border-top\": \"1px dotted #ccc\"}}>\r\n                                <td>\r\n                                    <CMS id=\"label::location\" text>Location</CMS>\r\n                                </td>\r\n                                <td>\r\n                                    {artwork.location}\r\n                                </td>\r\n                            </tr>\r\n                            <tr style={{ \"border-top\": \"1px dotted #ccc\"}}>\r\n                                <td>\r\n                                    <CMS id=\"label::about-this-artwork\" text>About this artwork</CMS>\r\n                                </td>\r\n                                <td>\r\n                                    <RawHtml value={artwork.comment} />\r\n                                </td>\r\n                            </tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\r\n                <div style=\"padding: 10px 20px; border-top: 1px solid #ccc;\">\r\n                    <h4>\r\n                        <CMS id=\"label::categories\" text>\r\n                            Categories\r\n                        </CMS>\r\n                        <Show when={isAdmin || (canApply && !props.session?.isHighSchoolStudent)}>\r\n                            <InputGroup class=\"mb-3\">\r\n                                <Form.Select value={selectedCategoryId()} onChange={(e) => setSelectedCategoryId(e.currentTarget.value)}>\r\n                                    <For each={availableCategories()}>{(item) =><option value={item.Value}>{item.Text}</option>}</For>\r\n                                </Form.Select>\r\n                                <Button variant=\"primary\" onClick={(e) => { e.preventDefault(); addCategoryClicked(); }}>Add</Button>\r\n                            </InputGroup>                    \r\n                        </Show>\r\n                    </h4>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-12\">\r\n                            <For each={artwork.salonSubmissions}>{(submission, index) => \r\n                                <p>\r\n                                    <span style=\"border-radius: 3px; margin-right: 3px; padding: 3px 6px; background-color: #ccc; color: #333;\">\r\n                                        {submission.category.name}\r\n                                    </span>\r\n                                    <Show when={isAdmin || canApply}>\r\n                                        <Show when={index() > 0}>\r\n                                            <Button variant=\"outline-danger\" size=\"sm\" onClick={(e) => { e.preventDefault(); removeCategoryClicked(submission); }}>\r\n                                                <CMS id=\"button::remove\" text>Remove</CMS>\r\n                                            </Button>\r\n                                        </Show>\r\n                                    </Show>\r\n                                </p>\r\n                            }</For>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div style=\"padding: 10px 20px; border-top: 1px solid #ccc;\">\r\n                    <h4>\r\n                        <CMS id=\"label::images\" text>Images</CMS>\r\n                        <label style=\"float:right;\">\r\n                            <Button variant=\"primary\" href={ \"#/add-image-to-artwork/\" + artwork.id }><CMS id=\"button::add\" text>Add</CMS></Button>\r\n                        </label>\r\n                    </h4>\r\n                </div>\r\n                <div style=\"background-color: #000; color: #fff; padding: 10px;\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-12\">\r\n                            <For each={artwork.images}>{(artworkImage, index) =>\r\n                                <div style=\"display: inline-block; width: 49%; margin-right: 3px; vertical-align: top;\">\r\n                                    <div onClick={(e) => { e.preventDefault(); alert((index()+1) + \" clicked\")}} style={{ \"background-color\": \"goldenrod\", \"padding\": \"3px\" }}>\r\n                                        #{index()+1}\r\n                                    </div>\r\n                                    <div>\r\n                                        <Link href={ \"/edit-image/\" + artworkImage.id }>\r\n                                            <Img src={ artworkImage.newImage.url } mode=\"crop\" width={300} format=\"jpg\" style=\"width: 100%;\" />\r\n                                        </Link>\r\n                                    </div>\r\n                                    <div style=\"padding: 10px;\">\r\n                                        <div>\r\n                                            <CMS id=\"salon-application/step-2::file-details\"\r\n                                                data={\r\n                                                {\r\n                                                    height: artworkImage.newImage.height,\r\n                                                    width: artworkImage.newImage.width,\r\n                                                    fileSize: toKBs(artworkImage.newImage.fileSizeBytes)\r\n                                                }}>\r\n                                                {\"{height} x {width} pixels ({fileSize} KBs)\"}\r\n                                            </CMS>\r\n                                        </div>\r\n                                        <div style=\"margin-top: 10px;\">\r\n                                            <Link class=\"btn btn-sm btn-default\" style=\"margin-right: 10px;\" href={ \"/view-image/\" + artworkImage.newImage.id }>\r\n                                                <CMS id=\"button::view\" text>View</CMS>\r\n                                            </Link>\r\n                                            <Link class=\"btn btn-sm btn-primary\" style=\"margin-right: 10px;\" href={ \"/edit-image/\" + artworkImage.id }>\r\n                                                <CMS id=\"button::edit\" text>Edit</CMS>\r\n                                            </Link>\r\n                                            <a class=\"btn btn-sm btn-danger\" onClick={(e) => { e.preventDefault(); deleteImageClicked(artworkImage); }} style=\"margin-right: 10px;\">\r\n                                                <CMS id=\"button::delete\" text>Delete</CMS>\r\n                                            </a>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            }</For>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n    </Show>\r\n    );\r\n}","import { For, Match, Show, Switch, createSignal, onMount } from \"solid-js\";\r\nimport { Progress } from \"../components/progress\";\r\nimport { BeforeLeaveEventArgs, Link, useBeforeLeave, useRouteData } from \"@solidjs/router\";\r\nimport { A } from \"../components/universal/a-href\";\r\nimport { ListItem, SalonSubmissionBase, Step2, UserSession } from \"../types\";\r\nimport { Artwork } from \"../components/artwork\";\r\nimport { commitChange, fetchGet } from \"../library/common\";\r\nimport { Button } from \"solid-bootstrap\";\r\nimport toast from \"solid-toast\";\r\nimport { loadStep2Cms } from \"../app\";\r\nimport { createStore } from \"solid-js/store\";\r\nimport { CMS } from \"../components/cms/cms\";\r\nimport { PageLoading } from \"../components/page-loading\";\r\n\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\nexport function Step2Page() {\r\n    const min = 1;\r\n    const max = 10;\r\n    const [session, setSession] = createStore<UserSession>({ } as UserSession);\r\n    const [state, setState] = createStore<State>({ isContentReady: false } as State);\r\n    const [artworks, setArtworks] = createStore<SalonSubmissionBase[]>([]);\r\n    const [categories, setCategories] = createSignal<ListItem[]>([]);\r\n    const count = () => artworks.length;\r\n    const commitError = async (error: string, data?: {}) => {\r\n        await commitChange(\"17th-arc-salon-application/step-2/error\", {\r\n            Error: error,\r\n            Data: data\r\n        });\r\n        toast.error(error);\r\n    }\r\n    const onDeleteClicked = async (id: number) => {\r\n        const params = { id };\r\n        const response = await fetchGet(\"/SalonApplication/SalonSubmission/DeleteJson\", params);\r\n        const json = await response.json();\r\n        if (!json.Success) {\r\n            return await commitError(\"Unable to remove the artwork from your application at this time.\", params);\r\n        }\r\n        const remaining = artworks.filter(x => x.id != id);\r\n        setArtworks(remaining);\r\n        toast.success(\"The artwork has been removed from your application.\")\r\n    };\r\n    useBeforeLeave(async (e: BeforeLeaveEventArgs) => {\r\n        const fail = [\"/step-3\", \"/checkout\"];\r\n        if (!fail.some(x => x == e.to)) {\r\n            return;\r\n        }\r\n        const len = artworks.length;\r\n        if (len) {\r\n            return;\r\n        }\r\n        e.preventDefault();\r\n        await commitError(\"You must add at least one artwork before proceeding.\");\r\n    });\r\n    onMount(async() =>{\r\n        const routeData = await useRouteData() as Step2;\r\n        await loadStep2Cms();\r\n        setSession(routeData.session);\r\n        setArtworks(routeData.artworks);\r\n        const _categories = routeData.resources.categories;\r\n        setCategories(_categories);\r\n        setState({ isContentReady: true });\r\n    })\r\n    return (\r\n        <>\r\n            <Show when={state.isContentReady} fallback={<PageLoading />}>\r\n                <div>\r\n                    <Progress step={2}></Progress>\r\n                    <div class=\"row \">\r\n                        <div class=\"col-md-8\">\r\n                            <Show when={session.isAdmin || session.canApply}>\r\n                                <CMS id=\"18th-salon-application/step-2::instructions\">\r\n                                    <p style=\"font-size: 1.5em;\">\r\n                                        Each box below represents one entry. Click on a box to start your first submission. Once complete, you will be brought back to this page where you can submit additional entries or continue to checkout. Images should be submitted in the form of high-resolution digital images, between 1 and 15 MBs in size. Files should be in a JPG or PNG format.\r\n                                    </p>\r\n                                    <p>\r\n                                        Image preparation: Multiple images of the work can be uploaded to each entry if desired, but please be sure if you are uploading images of different works of art, that you are creating a separate entry for each unique work. Only one image is required for entry for all non-sculpture works. If you are entering a sculpture, a minimum of two images are required at two different view angles. Please do not submit more then 5 images of any given work. Please submit good quality images of your work. Make sure they are not blurry. Jurors need to be able to view the details of the work. If you do not feel you have a good enough high resolution image of the work as a whole where details can be seen when magnified, please supply a detail as well as the full image. If jurors are having difficulty properly viewing the submission, additional images or details may be requested. Please crop out anything that is not part of the artwork from the primary image submitted. Additional views of the work that are submitted to show the size of the work or include an image of the artist standing with the work and/or how the work is framed are fine as supplemental images, but for the primary image, there should be no easels or frames showing. Do not make digital alterations to your photos. Basic color adjustment to try and match color and contrast to the original work is acceptable, but the image you submit needs to be as close as possible to the original work of art as viewed in person. Do not digitally remove damage that has occurred to the original work of art, do not adjust contours, erase lines or alter the composition, do not add logos or digital signatures to the images of the work. These are violations to the competition rules. In the case of sculptures, do not digitally replace the background with photos of landscapes or other settings. The photo should either have a solid black, white or gray background, a solid color cloth backdrop or be a photo of the actual installation where the work is being displayed. Images of the sculpture in the artist’s studio are also acceptable. If you have a technical problem submitting your entry, please contact our Webmaster, Iian Neill, for assistance at <A href=\"mailto:webmaster@artrenewal.org\" class=\"tape\">webmaster@artrenewal.org</A>. or Yvette Lytle at <A href=\"mailto:yvette.lytle@artrenewal.org\" class=\"tape\">yvette.lytle@artrenewal.org</A>.\r\n                                    </p>\r\n                                    <p>\r\n                                        Sculptors must submit 2 images of each sculpture from different views.\r\n                                    </p>\r\n                                </CMS>\r\n                            </Show>\r\n                        </div>\r\n                        <div class=\"col-md-4\">\r\n                            <div class=\"pull-right\">\r\n                                <div style=\"font-size: 1.25em;\">\r\n                                    <b style=\"color: goldenrod;\">{count()}</b>&nbsp;\r\n                                    <Switch>\r\n                                        <Match when={count() == 1}>\r\n                                            <CMS text id=\"label::artwork-added\">artwork added</CMS>\r\n                                        </Match>\r\n                                        <Match when={count() != 1}>\r\n                                            <CMS text id=\"label::artworks-added\">artworks added</CMS>\r\n                                        </Match>\r\n                                    </Switch>\r\n                                </div>\r\n                                <div style=\"margin-top: 40px;\">\r\n                                    <Link class=\"btn btn-chunky-lg btn-chunky-dark-grey\" href={\"/\"} style={{ \"margin-right\": \"10px\"}}>\r\n                                        <CMS id=\"button::back\" text>Back</CMS>\r\n                                    </Link>\r\n                                    <Show when={count() >= min}>\r\n                                        <Link class=\"btn btn-chunky-lg btn-chunky-goldenrod\" href={\"/checkout\"}><CMS id=\"button::next\" text>Next</CMS></Link>\r\n                                    </Show>\r\n                                    <Show when={count() < min}>\r\n                                        <Link class=\"btn btn-chunky-lg btn-chunky-dark-grey\" href={\"/checkout\"}><CMS id=\"button::next\" text>Next</CMS></Link>\r\n                                    </Show>\r\n                                </div>\r\n                                <Show when={session.isAdmin || session.canApply}>\r\n                                    <div style=\"margin-top: 20px;\">\r\n                                        <Button variant=\"primary\" size=\"lg\" href={\"#/add-artwork\"}><span style=\"margin-right: 10px;\" class=\"fa fa-plus-circle\"></span>\r\n                                        <CMS id=\"button::add-artwork\" text>Add Artwork</CMS></Button>\r\n                                    </div>\r\n                                </Show>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\">\r\n                        <For each={artworks}>{(artwork) =>\r\n                            <Artwork\r\n                                resources={{ categories: categories, canApply: session.canApply }}\r\n                                session={session}\r\n                                deleteClicked={onDeleteClicked}\r\n                                artwork={artwork}></Artwork>\r\n                        }</For>\r\n                        <Show when={session.isAdmin || session.canApply}>\r\n                            <div class=\"artwork-container add-artwork-container\">\r\n                                <div style=\"display: table; margin: 0 auto;\">\r\n                                    <div style=\"display: table-row;\">\r\n                                        <div style=\"display: table-cell; height: 300px; vertical-align: middle;\">\r\n                                            <Link class=\"btn btn-success\" style=\"font-size: 2em;\" href={ \"/add-artwork\" }>\r\n                                                <span style=\"margin-right: 10px;\" class=\"fa fa-plus-circle\"></span><CMS id=\"button::add-artwork\" text>Add Artwork</CMS>\r\n                                            </Link>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </Show>\r\n                    </div>\r\n                </div>\r\n            </Show>\r\n        </>\r\n    )\r\n}","// Current version.\nexport var VERSION = '1.13.7';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = (typeof self == 'object' && self.self === self && self) ||\n          (typeof global == 'object' && global.global === global && global) ||\n          Function('return this')() ||\n          {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n    slice = ArrayProto.slice,\n    toString = ObjProto.toString,\n    hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n    supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n    nativeKeys = Object.keys,\n    nativeCreate = Object.create,\n    nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n    _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n  'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n  startIndex = startIndex == null ? func.length - 1 : +startIndex;\n  return function() {\n    var length = Math.max(arguments.length - startIndex, 0),\n        rest = Array(length),\n        index = 0;\n    for (; index < length; index++) {\n      rest[index] = arguments[index + startIndex];\n    }\n    switch (startIndex) {\n      case 0: return func.call(this, rest);\n      case 1: return func.call(this, arguments[0], rest);\n      case 2: return func.call(this, arguments[0], arguments[1], rest);\n    }\n    var args = Array(startIndex + 1);\n    for (index = 0; index < startIndex; index++) {\n      args[index] = arguments[index];\n    }\n    args[startIndex] = rest;\n    return func.apply(this, args);\n  };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n  var type = typeof obj;\n  return type === 'function' || (type === 'object' && !!obj);\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n  return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n  return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n  return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n  return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n  var tag = '[object ' + name + ']';\n  return function(obj) {\n    return toString.call(obj) === tag;\n  };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n  isFunction = function(obj) {\n    return typeof obj == 'function' || false;\n  };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\n// Also, there are cases where an application can override the native\n// `DataView` object, in cases like that we can't use the constructor\n// safely and should just rely on alternate `DataView` checks\nexport var hasDataViewBug = (\n      supportsDataView && (!/\\[native code\\]/.test(String(DataView)) || hasObjectTag(new DataView(new ArrayBuffer(8))))\n    ),\n    isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\n// Also, in cases where the native `DataView` is\n// overridden we can't rely on the tag itself.\nfunction alternateIsDataView(obj) {\n  return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasDataViewBug ? alternateIsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n  return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n  if (!isArguments(arguments)) {\n    isArguments = function(obj) {\n      return has(obj, 'callee');\n    };\n  }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n  return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n  return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n  return function() {\n    return value;\n  };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n  return function(collection) {\n    var sizeProperty = getSizeProperty(collection);\n    return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n  }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n  return function(obj) {\n    return obj == null ? void 0 : obj[key];\n  };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n  // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n  // Otherwise, fall back on the above regular expression.\n  return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n                isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n  var hash = {};\n  for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n  return {\n    contains: function(key) { return hash[key] === true; },\n    push: function(key) {\n      hash[key] = true;\n      return keys.push(key);\n    }\n  };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n  keys = emulatedSet(keys);\n  var nonEnumIdx = nonEnumerableProps.length;\n  var constructor = obj.constructor;\n  var proto = (isFunction(constructor) && constructor.prototype) || ObjProto;\n\n  // Constructor is a special case.\n  var prop = 'constructor';\n  if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n  while (nonEnumIdx--) {\n    prop = nonEnumerableProps[nonEnumIdx];\n    if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n      keys.push(prop);\n    }\n  }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n  if (!isObject(obj)) return [];\n  if (nativeKeys) return nativeKeys(obj);\n  var keys = [];\n  for (var key in obj) if (has(obj, key)) keys.push(key);\n  // Ahem, IE < 9.\n  if (hasEnumBug) collectNonEnumProps(obj, keys);\n  return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n  if (obj == null) return true;\n  // Skip the more expensive `toString`-based type checks if `obj` has no\n  // `.length`.\n  var length = getLength(obj);\n  if (typeof length == 'number' && (\n    isArray(obj) || isString(obj) || isArguments(obj)\n  )) return length === 0;\n  return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n  var _keys = keys(attrs), length = _keys.length;\n  if (object == null) return !length;\n  var obj = Object(object);\n  for (var i = 0; i < length; i++) {\n    var key = _keys[i];\n    if (attrs[key] !== obj[key] || !(key in obj)) return false;\n  }\n  return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n  if (obj instanceof _) return obj;\n  if (!(this instanceof _)) return new _(obj);\n  this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n  return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n  return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n  return new Uint8Array(\n    bufferSource.buffer || bufferSource,\n    bufferSource.byteOffset || 0,\n    getByteLength(bufferSource)\n  );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasDataViewBug }  from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n  // Identical objects are equal. `0 === -0`, but they aren't identical.\n  // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n  if (a === b) return a !== 0 || 1 / a === 1 / b;\n  // `null` or `undefined` only equal to itself (strict comparison).\n  if (a == null || b == null) return false;\n  // `NaN`s are equivalent, but non-reflexive.\n  if (a !== a) return b !== b;\n  // Exhaust primitive checks\n  var type = typeof a;\n  if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n  return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n  // Unwrap any wrapped objects.\n  if (a instanceof _) a = a._wrapped;\n  if (b instanceof _) b = b._wrapped;\n  // Compare `[[Class]]` names.\n  var className = toString.call(a);\n  if (className !== toString.call(b)) return false;\n  // Work around a bug in IE 10 - Edge 13.\n  if (hasDataViewBug && className == '[object Object]' && isDataView(a)) {\n    if (!isDataView(b)) return false;\n    className = tagDataView;\n  }\n  switch (className) {\n    // These types are compared by value.\n    case '[object RegExp]':\n      // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n    case '[object String]':\n      // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n      // equivalent to `new String(\"5\")`.\n      return '' + a === '' + b;\n    case '[object Number]':\n      // `NaN`s are equivalent, but non-reflexive.\n      // Object(NaN) is equivalent to NaN.\n      if (+a !== +a) return +b !== +b;\n      // An `egal` comparison is performed for other numeric values.\n      return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n    case '[object Date]':\n    case '[object Boolean]':\n      // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n      // millisecond representations. Note that invalid dates with millisecond representations\n      // of `NaN` are not equivalent.\n      return +a === +b;\n    case '[object Symbol]':\n      return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n    case '[object ArrayBuffer]':\n    case tagDataView:\n      // Coerce to typed array so we can fall through.\n      return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n  }\n\n  var areArrays = className === '[object Array]';\n  if (!areArrays && isTypedArray(a)) {\n      var byteLength = getByteLength(a);\n      if (byteLength !== getByteLength(b)) return false;\n      if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n      areArrays = true;\n  }\n  if (!areArrays) {\n    if (typeof a != 'object' || typeof b != 'object') return false;\n\n    // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n    // from different frames are.\n    var aCtor = a.constructor, bCtor = b.constructor;\n    if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n                             isFunction(bCtor) && bCtor instanceof bCtor)\n                        && ('constructor' in a && 'constructor' in b)) {\n      return false;\n    }\n  }\n  // Assume equality for cyclic structures. The algorithm for detecting cyclic\n  // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n  // Initializing stack of traversed objects.\n  // It's done here since we only need them for objects and arrays comparison.\n  aStack = aStack || [];\n  bStack = bStack || [];\n  var length = aStack.length;\n  while (length--) {\n    // Linear search. Performance is inversely proportional to the number of\n    // unique nested structures.\n    if (aStack[length] === a) return bStack[length] === b;\n  }\n\n  // Add the first object to the stack of traversed objects.\n  aStack.push(a);\n  bStack.push(b);\n\n  // Recursively compare objects and arrays.\n  if (areArrays) {\n    // Compare array lengths to determine if a deep comparison is necessary.\n    length = a.length;\n    if (length !== b.length) return false;\n    // Deep compare the contents, ignoring non-numeric properties.\n    while (length--) {\n      if (!eq(a[length], b[length], aStack, bStack)) return false;\n    }\n  } else {\n    // Deep compare objects.\n    var _keys = keys(a), key;\n    length = _keys.length;\n    // Ensure that both objects contain the same number of properties before comparing deep equality.\n    if (keys(b).length !== length) return false;\n    while (length--) {\n      // Deep compare each member\n      key = _keys[length];\n      if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n    }\n  }\n  // Remove the first object from the stack of traversed objects.\n  aStack.pop();\n  bStack.pop();\n  return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n  return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n  if (!isObject(obj)) return [];\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  // Ahem, IE < 9.\n  if (hasEnumBug) collectNonEnumProps(obj, keys);\n  return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n  var length = getLength(methods);\n  return function(obj) {\n    if (obj == null) return false;\n    // `Map`, `WeakMap` and `Set` have no enumerable keys.\n    var keys = allKeys(obj);\n    if (getLength(keys)) return false;\n    for (var i = 0; i < length; i++) {\n      if (!isFunction(obj[methods[i]])) return false;\n    }\n    // If we are testing against `WeakMap`, we need to ensure that\n    // `obj` doesn't have a `forEach` method in order to distinguish\n    // it from a regular `Map`.\n    return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n  };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n    hasName = 'has',\n    commonInit = ['clear', 'delete'],\n    mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n    weakMapMethods = commonInit.concat(mapTail),\n    setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods }  from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods }  from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods }  from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n  var _keys = keys(obj);\n  var length = _keys.length;\n  var values = Array(length);\n  for (var i = 0; i < length; i++) {\n    values[i] = obj[_keys[i]];\n  }\n  return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n  var _keys = keys(obj);\n  var length = _keys.length;\n  var pairs = Array(length);\n  for (var i = 0; i < length; i++) {\n    pairs[i] = [_keys[i], obj[_keys[i]]];\n  }\n  return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n  var result = {};\n  var _keys = keys(obj);\n  for (var i = 0, length = _keys.length; i < length; i++) {\n    result[obj[_keys[i]]] = _keys[i];\n  }\n  return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n  var names = [];\n  for (var key in obj) {\n    if (isFunction(obj[key])) names.push(key);\n  }\n  return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n  return function(obj) {\n    var length = arguments.length;\n    if (defaults) obj = Object(obj);\n    if (length < 2 || obj == null) return obj;\n    for (var index = 1; index < length; index++) {\n      var source = arguments[index],\n          keys = keysFunc(source),\n          l = keys.length;\n      for (var i = 0; i < l; i++) {\n        var key = keys[i];\n        if (!defaults || obj[key] === void 0) obj[key] = source[key];\n      }\n    }\n    return obj;\n  };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n  return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n  if (!isObject(prototype)) return {};\n  if (nativeCreate) return nativeCreate(prototype);\n  var Ctor = ctor();\n  Ctor.prototype = prototype;\n  var result = new Ctor;\n  Ctor.prototype = null;\n  return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n  var result = baseCreate(prototype);\n  if (props) extendOwn(result, props);\n  return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n  if (!isObject(obj)) return obj;\n  return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n  interceptor(obj);\n  return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n  return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n  return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n  var length = path.length;\n  for (var i = 0; i < length; i++) {\n    if (obj == null) return void 0;\n    obj = obj[path[i]];\n  }\n  return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n  var value = deepGet(object, toPath(path));\n  return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n  path = toPath(path);\n  var length = path.length;\n  for (var i = 0; i < length; i++) {\n    var key = path[i];\n    if (!_has(obj, key)) return false;\n    obj = obj[key];\n  }\n  return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n  return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n  attrs = extendOwn({}, attrs);\n  return function(obj) {\n    return isMatch(obj, attrs);\n  };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n  path = toPath(path);\n  return function(obj) {\n    return deepGet(obj, path);\n  };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n  if (context === void 0) return func;\n  switch (argCount == null ? 3 : argCount) {\n    case 1: return function(value) {\n      return func.call(context, value);\n    };\n    // The 2-argument case is omitted because we’re not using it.\n    case 3: return function(value, index, collection) {\n      return func.call(context, value, index, collection);\n    };\n    case 4: return function(accumulator, value, index, collection) {\n      return func.call(context, accumulator, value, index, collection);\n    };\n  }\n  return function() {\n    return func.apply(context, arguments);\n  };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n  if (value == null) return identity;\n  if (isFunction(value)) return optimizeCb(value, context, argCount);\n  if (isObject(value) && !isArray(value)) return matcher(value);\n  return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n  return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n  if (_.iteratee !== iteratee) return _.iteratee(value, context);\n  return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n  iteratee = cb(iteratee, context);\n  var _keys = keys(obj),\n      length = _keys.length,\n      results = {};\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys[index];\n    results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n  }\n  return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n  if (obj == null) return noop;\n  return function(path) {\n    return get(obj, path);\n  };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n  var accum = Array(Math.max(0, n));\n  iteratee = optimizeCb(iteratee, context, 1);\n  for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n  return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n  if (max == null) {\n    max = min;\n    min = 0;\n  }\n  return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n  return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n  var escaper = function(match) {\n    return map[match];\n  };\n  // Regexes for identifying a key that needs to be escaped.\n  var source = '(?:' + keys(map).join('|') + ')';\n  var testRegexp = RegExp(source);\n  var replaceRegexp = RegExp(source, 'g');\n  return function(string) {\n    string = string == null ? '' : '' + string;\n    return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n  };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#x27;',\n  '`': '&#x60;'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n  evaluate: /<%([\\s\\S]+?)%>/g,\n  interpolate: /<%=([\\s\\S]+?)%>/g,\n  escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n  \"'\": \"'\",\n  '\\\\': '\\\\',\n  '\\r': 'r',\n  '\\n': 'n',\n  '\\u2028': 'u2028',\n  '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n  return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n  if (!settings && oldSettings) settings = oldSettings;\n  settings = defaults({}, settings, _.templateSettings);\n\n  // Combine delimiters into one regular expression via alternation.\n  var matcher = RegExp([\n    (settings.escape || noMatch).source,\n    (settings.interpolate || noMatch).source,\n    (settings.evaluate || noMatch).source\n  ].join('|') + '|$', 'g');\n\n  // Compile the template source, escaping string literals appropriately.\n  var index = 0;\n  var source = \"__p+='\";\n  text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n    source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n    index = offset + match.length;\n\n    if (escape) {\n      source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n    } else if (interpolate) {\n      source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n    } else if (evaluate) {\n      source += \"';\\n\" + evaluate + \"\\n__p+='\";\n    }\n\n    // Adobe VMs need the match returned to produce the correct offset.\n    return match;\n  });\n  source += \"';\\n\";\n\n  var argument = settings.variable;\n  if (argument) {\n    // Insure against third-party code injection. (CVE-2021-23358)\n    if (!bareIdentifier.test(argument)) throw new Error(\n      'variable is not a bare identifier: ' + argument\n    );\n  } else {\n    // If a variable is not specified, place data values in local scope.\n    source = 'with(obj||{}){\\n' + source + '}\\n';\n    argument = 'obj';\n  }\n\n  source = \"var __t,__p='',__j=Array.prototype.join,\" +\n    \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n    source + 'return __p;\\n';\n\n  var render;\n  try {\n    render = new Function(argument, '_', source);\n  } catch (e) {\n    e.source = source;\n    throw e;\n  }\n\n  var template = function(data) {\n    return render.call(this, data, _);\n  };\n\n  // Provide the compiled source as a convenience for precompilation.\n  template.source = 'function(' + argument + '){\\n' + source + '}';\n\n  return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n  path = toPath(path);\n  var length = path.length;\n  if (!length) {\n    return isFunction(fallback) ? fallback.call(obj) : fallback;\n  }\n  for (var i = 0; i < length; i++) {\n    var prop = obj == null ? void 0 : obj[path[i]];\n    if (prop === void 0) {\n      prop = fallback;\n      i = length; // Ensure we don't continue iterating.\n    }\n    obj = isFunction(prop) ? prop.call(obj) : prop;\n  }\n  return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n  var id = ++idCounter + '';\n  return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n  var instance = _(obj);\n  instance._chain = true;\n  return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n  if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n  var self = baseCreate(sourceFunc.prototype);\n  var result = sourceFunc.apply(self, args);\n  if (isObject(result)) return result;\n  return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n  var placeholder = partial.placeholder;\n  var bound = function() {\n    var position = 0, length = boundArgs.length;\n    var args = Array(length);\n    for (var i = 0; i < length; i++) {\n      args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n    }\n    while (position < arguments.length) args.push(arguments[position++]);\n    return executeBound(func, bound, this, this, args);\n  };\n  return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n  if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n  var bound = restArguments(function(callArgs) {\n    return executeBound(func, bound, context, this, args.concat(callArgs));\n  });\n  return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n  output = output || [];\n  if (!depth && depth !== 0) {\n    depth = Infinity;\n  } else if (depth <= 0) {\n    return output.concat(input);\n  }\n  var idx = output.length;\n  for (var i = 0, length = getLength(input); i < length; i++) {\n    var value = input[i];\n    if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n      // Flatten current level of array or arguments object.\n      if (depth > 1) {\n        flatten(value, depth - 1, strict, output);\n        idx = output.length;\n      } else {\n        var j = 0, len = value.length;\n        while (j < len) output[idx++] = value[j++];\n      }\n    } else if (!strict) {\n      output[idx++] = value;\n    }\n  }\n  return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n  keys = flatten(keys, false, false);\n  var index = keys.length;\n  if (index < 1) throw new Error('bindAll must be passed function names');\n  while (index--) {\n    var key = keys[index];\n    obj[key] = bind(obj[key], obj);\n  }\n  return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n  var memoize = function(key) {\n    var cache = memoize.cache;\n    var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n    if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n    return cache[address];\n  };\n  memoize.cache = {};\n  return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n  return setTimeout(function() {\n    return func.apply(null, args);\n  }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n  var timeout, context, args, result;\n  var previous = 0;\n  if (!options) options = {};\n\n  var later = function() {\n    previous = options.leading === false ? 0 : now();\n    timeout = null;\n    result = func.apply(context, args);\n    if (!timeout) context = args = null;\n  };\n\n  var throttled = function() {\n    var _now = now();\n    if (!previous && options.leading === false) previous = _now;\n    var remaining = wait - (_now - previous);\n    context = this;\n    args = arguments;\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      previous = _now;\n      result = func.apply(context, args);\n      if (!timeout) context = args = null;\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(later, remaining);\n    }\n    return result;\n  };\n\n  throttled.cancel = function() {\n    clearTimeout(timeout);\n    previous = 0;\n    timeout = context = args = null;\n  };\n\n  return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n  var timeout, previous, args, result, context;\n\n  var later = function() {\n    var passed = now() - previous;\n    if (wait > passed) {\n      timeout = setTimeout(later, wait - passed);\n    } else {\n      timeout = null;\n      if (!immediate) result = func.apply(context, args);\n      // This check is needed because `func` can recursively invoke `debounced`.\n      if (!timeout) args = context = null;\n    }\n  };\n\n  var debounced = restArguments(function(_args) {\n    context = this;\n    args = _args;\n    previous = now();\n    if (!timeout) {\n      timeout = setTimeout(later, wait);\n      if (immediate) result = func.apply(context, args);\n    }\n    return result;\n  });\n\n  debounced.cancel = function() {\n    clearTimeout(timeout);\n    timeout = args = context = null;\n  };\n\n  return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n  return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n  return function() {\n    return !predicate.apply(this, arguments);\n  };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n  var args = arguments;\n  var start = args.length - 1;\n  return function() {\n    var i = start;\n    var result = args[start].apply(this, arguments);\n    while (i--) result = args[i].call(this, result);\n    return result;\n  };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n  return function() {\n    if (--times < 1) {\n      return func.apply(this, arguments);\n    }\n  };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n  var memo;\n  return function() {\n    if (--times > 0) {\n      memo = func.apply(this, arguments);\n    }\n    if (times <= 1) func = null;\n    return memo;\n  };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = keys(obj), key;\n  for (var i = 0, length = _keys.length; i < length; i++) {\n    key = _keys[i];\n    if (predicate(obj[key], key, obj)) return key;\n  }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n  return function(array, predicate, context) {\n    predicate = cb(predicate, context);\n    var length = getLength(array);\n    var index = dir > 0 ? 0 : length - 1;\n    for (; index >= 0 && index < length; index += dir) {\n      if (predicate(array[index], index, array)) return index;\n    }\n    return -1;\n  };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n  iteratee = cb(iteratee, context, 1);\n  var value = iteratee(obj);\n  var low = 0, high = getLength(array);\n  while (low < high) {\n    var mid = Math.floor((low + high) / 2);\n    if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n  }\n  return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n  return function(array, item, idx) {\n    var i = 0, length = getLength(array);\n    if (typeof idx == 'number') {\n      if (dir > 0) {\n        i = idx >= 0 ? idx : Math.max(idx + length, i);\n      } else {\n        length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n      }\n    } else if (sortedIndex && idx && length) {\n      idx = sortedIndex(array, item);\n      return array[idx] === item ? idx : -1;\n    }\n    if (item !== item) {\n      idx = predicateFind(slice.call(array, i, length), isNaN);\n      return idx >= 0 ? idx + i : -1;\n    }\n    for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n      if (array[idx] === item) return idx;\n    }\n    return -1;\n  };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n  var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n  var key = keyFinder(obj, predicate, context);\n  if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n  return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n  iteratee = optimizeCb(iteratee, context);\n  var i, length;\n  if (isArrayLike(obj)) {\n    for (i = 0, length = obj.length; i < length; i++) {\n      iteratee(obj[i], i, obj);\n    }\n  } else {\n    var _keys = keys(obj);\n    for (i = 0, length = _keys.length; i < length; i++) {\n      iteratee(obj[_keys[i]], _keys[i], obj);\n    }\n  }\n  return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n  iteratee = cb(iteratee, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length,\n      results = Array(length);\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    results[index] = iteratee(obj[currentKey], currentKey, obj);\n  }\n  return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n  // Wrap code that reassigns argument variables in a separate function than\n  // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n  var reducer = function(obj, iteratee, memo, initial) {\n    var _keys = !isArrayLike(obj) && keys(obj),\n        length = (_keys || obj).length,\n        index = dir > 0 ? 0 : length - 1;\n    if (!initial) {\n      memo = obj[_keys ? _keys[index] : index];\n      index += dir;\n    }\n    for (; index >= 0 && index < length; index += dir) {\n      var currentKey = _keys ? _keys[index] : index;\n      memo = iteratee(memo, obj[currentKey], currentKey, obj);\n    }\n    return memo;\n  };\n\n  return function(obj, iteratee, memo, context) {\n    var initial = arguments.length >= 3;\n    return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n  };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n  var results = [];\n  predicate = cb(predicate, context);\n  each(obj, function(value, index, list) {\n    if (predicate(value, index, list)) results.push(value);\n  });\n  return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n  return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length;\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    if (!predicate(obj[currentKey], currentKey, obj)) return false;\n  }\n  return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length;\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    if (predicate(obj[currentKey], currentKey, obj)) return true;\n  }\n  return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n  if (!isArrayLike(obj)) obj = values(obj);\n  if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n  return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n  var contextPath, func;\n  if (isFunction(path)) {\n    func = path;\n  } else {\n    path = toPath(path);\n    contextPath = path.slice(0, -1);\n    path = path[path.length - 1];\n  }\n  return map(obj, function(context) {\n    var method = func;\n    if (!method) {\n      if (contextPath && contextPath.length) {\n        context = deepGet(context, contextPath);\n      }\n      if (context == null) return void 0;\n      method = context[path];\n    }\n    return method == null ? method : method.apply(context, args);\n  });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n  return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n  return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n  var result = -Infinity, lastComputed = -Infinity,\n      value, computed;\n  if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n    obj = isArrayLike(obj) ? obj : values(obj);\n    for (var i = 0, length = obj.length; i < length; i++) {\n      value = obj[i];\n      if (value != null && value > result) {\n        result = value;\n      }\n    }\n  } else {\n    iteratee = cb(iteratee, context);\n    each(obj, function(v, index, list) {\n      computed = iteratee(v, index, list);\n      if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n        result = v;\n        lastComputed = computed;\n      }\n    });\n  }\n  return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n  var result = Infinity, lastComputed = Infinity,\n      value, computed;\n  if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n    obj = isArrayLike(obj) ? obj : values(obj);\n    for (var i = 0, length = obj.length; i < length; i++) {\n      value = obj[i];\n      if (value != null && value < result) {\n        result = value;\n      }\n    }\n  } else {\n    iteratee = cb(iteratee, context);\n    each(obj, function(v, index, list) {\n      computed = iteratee(v, index, list);\n      if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n        result = v;\n        lastComputed = computed;\n      }\n    });\n  }\n  return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n  if (!obj) return [];\n  if (isArray(obj)) return slice.call(obj);\n  if (isString(obj)) {\n    // Keep surrogate pair characters together.\n    return obj.match(reStrSymbol);\n  }\n  if (isArrayLike(obj)) return map(obj, identity);\n  return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n  if (n == null || guard) {\n    if (!isArrayLike(obj)) obj = values(obj);\n    return obj[random(obj.length - 1)];\n  }\n  var sample = toArray(obj);\n  var length = getLength(sample);\n  n = Math.max(Math.min(n, length), 0);\n  var last = length - 1;\n  for (var index = 0; index < n; index++) {\n    var rand = random(index, last);\n    var temp = sample[index];\n    sample[index] = sample[rand];\n    sample[rand] = temp;\n  }\n  return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n  return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n  var index = 0;\n  iteratee = cb(iteratee, context);\n  return pluck(map(obj, function(value, key, list) {\n    return {\n      value: value,\n      index: index++,\n      criteria: iteratee(value, key, list)\n    };\n  }).sort(function(left, right) {\n    var a = left.criteria;\n    var b = right.criteria;\n    if (a !== b) {\n      if (a > b || a === void 0) return 1;\n      if (a < b || b === void 0) return -1;\n    }\n    return left.index - right.index;\n  }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n  return function(obj, iteratee, context) {\n    var result = partition ? [[], []] : {};\n    iteratee = cb(iteratee, context);\n    each(obj, function(value, index) {\n      var key = iteratee(value, index, obj);\n      behavior(result, value, key);\n    });\n    return result;\n  };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n  if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n  result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n  if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n  result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n  if (obj == null) return 0;\n  return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n  return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n  var result = {}, iteratee = keys[0];\n  if (obj == null) return result;\n  if (isFunction(iteratee)) {\n    if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n    keys = allKeys(obj);\n  } else {\n    iteratee = keyInObj;\n    keys = flatten(keys, false, false);\n    obj = Object(obj);\n  }\n  for (var i = 0, length = keys.length; i < length; i++) {\n    var key = keys[i];\n    var value = obj[key];\n    if (iteratee(value, key, obj)) result[key] = value;\n  }\n  return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n  var iteratee = keys[0], context;\n  if (isFunction(iteratee)) {\n    iteratee = negate(iteratee);\n    if (keys.length > 1) context = keys[1];\n  } else {\n    keys = map(flatten(keys, false, false), String);\n    iteratee = function(value, key) {\n      return !contains(keys, key);\n    };\n  }\n  return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n  return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n  if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n  if (n == null || guard) return array[0];\n  return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n  return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n  if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n  if (n == null || guard) return array[array.length - 1];\n  return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n  return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n  return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n  rest = flatten(rest, true, true);\n  return filter(array, function(value){\n    return !contains(rest, value);\n  });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n  return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n  if (!isBoolean(isSorted)) {\n    context = iteratee;\n    iteratee = isSorted;\n    isSorted = false;\n  }\n  if (iteratee != null) iteratee = cb(iteratee, context);\n  var result = [];\n  var seen = [];\n  for (var i = 0, length = getLength(array); i < length; i++) {\n    var value = array[i],\n        computed = iteratee ? iteratee(value, i, array) : value;\n    if (isSorted && !iteratee) {\n      if (!i || seen !== computed) result.push(value);\n      seen = computed;\n    } else if (iteratee) {\n      if (!contains(seen, computed)) {\n        seen.push(computed);\n        result.push(value);\n      }\n    } else if (!contains(result, value)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n  return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n  var result = [];\n  var argsLength = arguments.length;\n  for (var i = 0, length = getLength(array); i < length; i++) {\n    var item = array[i];\n    if (contains(result, item)) continue;\n    var j;\n    for (j = 1; j < argsLength; j++) {\n      if (!contains(arguments[j], item)) break;\n    }\n    if (j === argsLength) result.push(item);\n  }\n  return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n  var length = (array && max(array, getLength).length) || 0;\n  var result = Array(length);\n\n  for (var index = 0; index < length; index++) {\n    result[index] = pluck(array, index);\n  }\n  return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength  from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n  var result = {};\n  for (var i = 0, length = getLength(list); i < length; i++) {\n    if (values) {\n      result[list[i]] = values[i];\n    } else {\n      result[list[i][0]] = list[i][1];\n    }\n  }\n  return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n  if (stop == null) {\n    stop = start || 0;\n    start = 0;\n  }\n  if (!step) {\n    step = stop < start ? -1 : 1;\n  }\n\n  var length = Math.max(Math.ceil((stop - start) / step), 0);\n  var range = Array(length);\n\n  for (var idx = 0; idx < length; idx++, start += step) {\n    range[idx] = start;\n  }\n\n  return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n  if (count == null || count < 1) return [];\n  var result = [];\n  var i = 0, length = array.length;\n  while (i < length) {\n    result.push(slice.call(array, i, i += count));\n  }\n  return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n  return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n  each(functions(obj), function(name) {\n    var func = _[name] = obj[name];\n    _.prototype[name] = function() {\n      var args = [this._wrapped];\n      push.apply(args, arguments);\n      return chainResult(this, func.apply(_, args));\n    };\n  });\n  return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n  var method = ArrayProto[name];\n  _.prototype[name] = function() {\n    var obj = this._wrapped;\n    if (obj != null) {\n      method.apply(obj, arguments);\n      if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n        delete obj[0];\n      }\n    }\n    return chainResult(this, obj);\n  };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n  var method = ArrayProto[name];\n  _.prototype[name] = function() {\n    var obj = this._wrapped;\n    if (obj != null) obj = method.apply(obj, arguments);\n    return chainResult(this, obj);\n  };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","import { Component, Show, onMount } from \"solid-js\";\r\nimport { createStore } from \"solid-js/store\";\r\nimport { loadCms } from \"../app\";\r\nimport { CMS } from \"./cms/cms\";\r\n\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\nexport const PrepareImageText : Component = () => {\r\n    const [state, setState] = createStore<State>({ isContentReady: false });\r\n    onMount(async () => {\r\n        await loadCms([\r\n            \"salon-application::how-to-prepare-images\"\r\n        ]);\r\n        setState({ isContentReady: true });\r\n    });\r\n    return (\r\n        <div>\r\n            <Show when={state.isContentReady}>\r\n                <div class=\"row\">\r\n                    <div class=\"col-md-12\">\r\n                        <CMS id=\"salon-application::how-to-prepare-images\">\r\n                            <p>\r\n                                Images should be in JPEG or PNG format and between 1MB and 15MBs each in size.\r\n                            </p>\r\n                            <h3>\r\n                                How to Prepare Images\r\n                            </h3>\r\n                            <p>\r\n                                File Format: Images must be in JPEG or PNG file format (with a .jpg or .png extension). Save the images at maximum quality with as little compression as possible. The file name does not matter as long as it ends in either \".jpg\", \".jpeg\" or \".png\".\r\n                            </p>\r\n                            <h3>\r\n                                Resolution and Orientation\r\n                            </h3>\r\n                            <p>\r\n                                Your images should be around 2400 pixels in width (at least 2000 pixels) (for landscape oriented works) or around 2400 pixels (at least 2000 pixels) in height (for portrait oriented works) and they should be \"right side up\" and without any borders or titles included. Example: A digital image measuring 8 x 10 inches at 300 DPI would be 2400 pixels by 3000 pixels. This will allow us to print your artwork at the best level of quality in the ARC Salon Publication and be a sufficient size for our jurors to properly adjudicate. Please make sure your photos are not blurry and keep the total size of your files less than 15 megabytes and a minimum of 1 megabyte.\r\n                            </p>\r\n                        </CMS>\r\n                    </div>\r\n                </div>\r\n            </Show>\r\n        </div>\r\n    );\r\n}","import { Component, createSignal, createEffect } from \"solid-js\";\r\nimport styles from './index.module.css';\r\n\r\ntype Props = { value: string; max: number }\r\n\r\nexport const CharacterCount : Component<Props> = (props) => {\r\n    const [value, setValue] = createSignal<string>(\"\");\r\n    createEffect(() => (props.value)? setValue(props.value) : setValue(\"\"));\r\n    return (<span classList={{ [styles.error]: value().length > props.max }}>{value().length}/{props.max}</span>)\r\n};","import { createStore } from \"solid-js/store\";\r\nimport { Accessor, Component, For, JSXElement, Match, Show, Switch, createSignal, onMount } from \"solid-js\";\r\nimport _ from \"underscore\";\r\nimport { useNavigate, useRouteData } from \"@solidjs/router\";\r\nimport { commitChange, fetchPost, scrollToTop } from \"../library/common\";\r\nimport QuillEditor, { IQuillEditorWrapper } from \"../components/universal/quill-editor\";\r\nimport ImageCropper, { IImageCropperWrapper, ImageFileData } from \"../components/universal/image-cropper\";\r\nimport { EditArtworkData, EditArtworkModel, KeyOfType, ListItem, TranslatedListItem, UserSession } from \"../types\";\r\nimport { ErrorMessage, useForm } from \"../components/universal/validation\";\r\nimport { Progress } from \"../components/progress\";\r\nimport { Button, Form } from \"solid-bootstrap\";\r\nimport { PrepareImageText } from \"../components/prepare-image-text\";\r\nimport { Required } from \"../components/universal/required-icon\";\r\nimport toast from \"solid-toast\";\r\nimport { getText, loadCms } from \"../app\";\r\nimport { CMS } from \"../components/cms/cms\";\r\nimport { CharacterCount } from \"../components/character-count\";\r\nimport { Img } from \"../components/universal/image\";\r\nimport { PageLoading } from \"../components/page-loading\";\r\n\r\ntype SalonEntrantImageData = {\r\n    isPrimary: boolean;\r\n    salonSubmissionBaseId: number;\r\n    image: Blob;\r\n};\r\ntype ImageFileDataListItem = {\r\n    file: ImageFileData;\r\n    order: number;\r\n    id: number|null;\r\n};\r\nconst Error = (props: any) => <Show when={!!props.field}><p><span class=\"error-message\">{props.field}</span></p></Show>;\r\ntype State = {\r\n    isContentReady: boolean;\r\n    showFirstImageCropper: boolean;\r\n    showSecondImageCropper: boolean;\r\n    showThirdImageCropper: boolean;\r\n}\r\ntype ButtonActiveState = {\r\n    submit: boolean;\r\n    cancel: boolean;\r\n}\r\n\r\nexport function EditArtwork() {\r\n    const [state, setState] = createStore<State>({\r\n        isContentReady: false,\r\n        showFirstImageCropper: false,\r\n        showSecondImageCropper: false,\r\n        showThirdImageCropper: false\r\n    } as State);\r\n    const [buttonActive, setButtonActive] = createStore<ButtonActiveState>({ submit: true, cancel: true } as ButtonActiveState);\r\n    const [session, setSession] = createStore<UserSession>({ } as UserSession);\r\n    const onlyNumbers = ({ value }: any) => /\\D/.test(value) && \"Please only enter digits or leave blank\";\r\n    const required = ({ value }: any) => !value && \"Please enter a value\";\r\n    const maxLength = (el: HTMLInputElement, max: number) => {\r\n        const len = el.value?.length;\r\n        return len > max && `The field must be no longer than ${max} characters long. Please remove ${len - max} characters.`\r\n    };\r\n    const { formSubmit, validate, errors, setErrors } = useForm({\r\n        errorClass: \"error-input\"\r\n    });  \r\n    const navigate = useNavigate();\r\n    const [pageError, setPageError] = createSignal<string>(\"\");\r\n    const [artwork, setArtwork] = createStore<EditArtworkModel>({\r\n        title:\"\",\r\n        unitOfMeasurement: \"\",\r\n        year: \"\",\r\n        location: \"\",\r\n        medium:\"\",\r\n        height:\"\",\r\n        width:\"\",\r\n        depth:\"\",\r\n        purchaseAwardNominatedPrice: \"\",\r\n        framed: {}\r\n    } as EditArtworkModel);\r\n    const sessionGuid = (new Date()).getTime();\r\n    // @ts-expect-error: Not assignable…\r\n    const setArtworkWithEffect: SetStoreFunction<EditArtworkModel> = (...params: [any]) => {\r\n        /**\r\n         * https://stackoverflow.com/questions/78209469/how-to-create-a-wrapper-for-solidjss-setstore-in-typescript\r\n         */\r\n        setArtwork(...params);\r\n        commitChange(\"18th-arc-salon-application/edit-artwork/model-change\", {\r\n            Session: sessionGuid, Id: artwork.id, Values: params\r\n        }).then();\r\n    };\r\n    const [categories, setCategories] = createSignal<TranslatedListItem[]>([]);\r\n    const [comment, setComment] = createSignal<string>(\"\");\r\n    const [unitOfMeasurements, setUnitOfMeasurements] = createSignal<ListItem[]>([{ Text: \"inches\", Value: \"ins\" },{ Text: \"cms\", Value: \"cms\" }]);\r\n    const isAdding = () => !!artwork.id;\r\n    const endYear = (new Date()).getFullYear();\r\n    const startYear = endYear - 3;\r\n    const [years, setYears] = createSignal<number[]>(_.range(startYear, endYear + 1));\r\n    const isSculptureSelected = () => {\r\n        const sculpture = categories().find(x => x.OriginalText == \"Sculpture\");\r\n        if (!sculpture) {\r\n            return false;\r\n        }\r\n        return artwork.categoryIds.some(cid => cid == sculpture.Value);\r\n    };\r\n    const onKeepFirstImageClicked = (e: Event) => {\r\n        e.preventDefault();\r\n        setState(\"showFirstImageCropper\", false);\r\n    };\r\n    const onKeepSecondImageClicked = (e: Event) => {\r\n        e.preventDefault();\r\n        setState(\"showSecondImageCropper\", false);\r\n    };\r\n    const onKeepThirdClicked = (e: Event) => {\r\n        e.preventDefault();\r\n        setState(\"showThirdImageCropper\", false);\r\n    }\r\n    const uploadAnotherFirstImageClicked = (e: Event) =>{ \r\n        e.preventDefault();\r\n        setState(\"showFirstImageCropper\", true);\r\n    }\r\n    const uploadAnotherSecondImageClicked = (e: Event) =>{ \r\n        e.preventDefault();\r\n        setState(\"showSecondImageCropper\", true);\r\n    }\r\n    const uploadAnotherThirdImageClicked = (e: Event) =>{ \r\n        e.preventDefault();\r\n        setState(\"showThirdImageCropper\", true);\r\n    }\r\n    const getModel = () => {\r\n        const comment = artwork.commentEditor?.getHtml();\r\n        const categoryIds = artwork.categoryIds.filter(id => !!id)?.join(\",\") || \"\";\r\n        return {\r\n            id: artwork.id || \"\",\r\n            title: artwork.title || \"\",\r\n            medium: artwork.medium || \"\",\r\n            width: artwork.width || \"\",\r\n            height: artwork.height || \"\",\r\n            depth: artwork.depth || \"\",\r\n            isHighSchoolStudent: session.isHighSchoolStudent || false,\r\n            categoryIds: categoryIds,\r\n            studentAge: artwork.student?.age || \"\",\r\n            firstName: artwork.student?.firstName || \"\",\r\n            lastName: artwork.student?.lastName || \"\",\r\n            unitOfMeasurement: artwork.unitOfMeasurement || \"\",\r\n            purchaseAwardNominatedPrice: artwork.purchaseAwardNominatedPrice || \"\",\r\n            location: artwork.location || \"\",\r\n            year: artwork.year || \"\",\r\n            comment: comment || \"\"\r\n        };\r\n    };\r\n    const ModelImageCropper : Component<{ imageUrl: keyof KeyOfType<EditArtworkModel, string>; required?: boolean |(() => boolean); editor: keyof KeyOfType<EditArtworkModel, IImageCropperWrapper>; label?: string; }> = (props) =>\r\n    <>\r\n        <ImageCropper src={artwork[props.imageUrl]} required={props.required} maxHeight={6000} maxWidth={6000} setInstance={(wrapper) => setArtwork(props.editor, wrapper)} />\r\n    </>;\r\n    const ModelEditor : Component<{ field: keyof KeyOfType<EditArtworkModel, string>; editor: keyof KeyOfType<EditArtworkModel, IQuillEditorWrapper>; label?: string|(()=>JSXElement); }> = (props) =>\r\n    <>\r\n        <Show when={props.label}>\r\n            <Show when={props.label instanceof String}>\r\n                <label>\r\n                    {props.label as string}\r\n                </label>\r\n            </Show>\r\n            <Show when={!(props.label instanceof String)}>\r\n                <label>\r\n                    {(props.label as () => JSXElement)()}\r\n                </label>\r\n            </Show>\r\n        </Show>\r\n        <QuillEditor content={artwork[props.field] as string} setInstance={(editor) => setArtwork(props.editor, editor) } />\r\n    </>;\r\n    const getImageFiles = async () => {\r\n        let images: ImageFileDataListItem[] = [];\r\n        const first = state.showFirstImageCropper && await artwork.image1?.getImageFile();\r\n        const second = state.showSecondImageCropper && await artwork.image2?.getImageFile();\r\n        const third = state.showThirdImageCropper && await artwork.image3?.getImageFile();\r\n        if (first) images.push({ file: first, order: 1, id: artwork.firstImage?.id || null });\r\n        if (second) images.push({ file: second, order: 2, id: artwork.secondImage?.id || null });\r\n        if (third) images.push({ file: third, order: 3, id: artwork.thirdImage?.id || null });\r\n        return images;  \r\n    };\r\n    const updateSelectedCategoryIds = (id: string) => {\r\n        const _selectedIds = artwork.categoryIds || [];\r\n        const selectedIds = _selectedIds.some(cid => cid == id) ? _selectedIds.filter(cid => cid != id) : [..._selectedIds, id];\r\n        setArtworkWithEffect({ categoryIds: selectedIds });\r\n    };\r\n    const requiresComment = () => artwork.commentEditor?.isEmpty();\r\n    const requiresCategoryId = () => !session.isHighSchoolStudent && artwork.categoryIds?.length == 0;\r\n    const requiresUnitOfMeasurement = () => !artwork.unitOfMeasurement;\r\n    const countWords = (text: string) => {\r\n        const re = new RegExp(/\\b[^\\s]+\\b/, \"g\");\r\n        let match;\r\n        let count = 0;\r\n        while ((match = re.exec(text)) != null) {\r\n            count++;\r\n        }\r\n        return count;\r\n    }\r\n    const requiresFewerWords = () => {\r\n        const html = artwork.commentEditor?.getHtml();\r\n        const span = document.createElement(\"SPAN\");\r\n        span.innerHTML = html;\r\n        const text = span.innerText;\r\n        const count = countWords(text);\r\n        return count <= 150;\r\n    };\r\n    const validateOtherFields = async () => {\r\n        var isValid = true;\r\n        setErrors(\"CategoryIds\", \"\");\r\n        setErrors(\"UnitOfMeasurement\", \"\");\r\n        if (requiresComment()) {\r\n            await commitError(getText(\"18th-salon-application/edit-artwork::comment-required-error\", \"You must provide a comment on the artwork.\"));\r\n            isValid = false;\r\n        }\r\n        if (requiresCategoryId()) {\r\n            await commitError(getText(\"18th-salon-application/edit-artwork::must-select-category-error\", \"You must select at least one category.\"));\r\n            isValid = false;\r\n        }\r\n        if (requiresUnitOfMeasurement()) {\r\n            await commitError(getText(\"error::unit-of-measurement/please-select-a-unit\", \"Please select a unit of measurement.\"));\r\n            isValid = false;\r\n        }\r\n        // if (requiresFewerWords()) {\r\n        //     await commitError(\"You must enter no more than 150 words.\");\r\n        //     isValid = false;\r\n        // }\r\n        return isValid;\r\n    };\r\n    const validateImageCroppers = async () => {\r\n        let isValid = true;\r\n        const first = await artwork.image1?.getImageFile();\r\n        if (first) {\r\n            if (!first.isValid) {\r\n                await commitError(\"There was one or more errors with the first image: \" + first.errors.join('; '));\r\n                isValid = false;\r\n            }\r\n        }\r\n        const second = await artwork.image2?.getImageFile();\r\n        if (second) {\r\n            if (!second.isValid) {\r\n                await commitError(\"There was one or more errors with the second image: \" + second.errors.join('; '));\r\n                isValid = false;\r\n            }\r\n        }\r\n        const third = await artwork.image3?.getImageFile();\r\n        if (third) {\r\n            if (!third.isValid) {\r\n                await commitError(\"There was one or more errors with the third image: \" + third.errors.join('; '));\r\n                isValid = false;\r\n            }\r\n        }\r\n        return isValid;\r\n    }\r\n    const diagnose = async () => {\r\n        console.log(\"diagnose\", {\r\n            artwork: artwork,\r\n            model: getModel(),\r\n            requiresCategoryId: requiresCategoryId(),\r\n            requiresComment: requiresComment(),\r\n            requiresUnitOfMeasurement: requiresUnitOfMeasurement(),\r\n            isSculptureSelected: isSculptureSelected(),\r\n            validateOtherFields: await validateOtherFields(),\r\n            imageFiles: await getImageFiles()\r\n        });\r\n    };\r\n    const diagnoseClicked = async () => await diagnose();\r\n    const submitIfValid = async () => {\r\n        setButtonActive(\"submit\", false);\r\n        const id = toast(\"Checking to see that the form is valid ...\");\r\n        await commitChange(\"18th-arc-salon-application/edit-artwork/form\", getModel());\r\n        const isValid = await validateOtherFields();\r\n        toast.remove(id);\r\n        if (!isValid) {\r\n            return;\r\n        }\r\n        await save();\r\n        setButtonActive(\"submit\", true);\r\n    };\r\n    const commitError = async (error: string) => {\r\n        enableButtons();\r\n        const _model = getModel();\r\n        await commitChange(\"18th-arc-salon-application/edit-artwork/error\", {\r\n            SalonSubmissionBaseId: _model.id,\r\n            Error: error\r\n        });\r\n        toast.error(error);\r\n    }\r\n    const save = async () => {\r\n        try {\r\n            disableButtons();\r\n            const model = getModel();\r\n            if (requiresCategoryId()) {\r\n                return await commitError(\"[006] \" + getText(\"18th-salon-application/edit-artwork::must-select-category-error\", \"You must select at least one category.\"));\r\n            }\r\n            if (requiresComment()) {\r\n                return await commitError(\"[007] \" + getText(\"18th-salon-application/edit-artwork::comment-required-error\", \"You must provide a comment on the artwork.\"));\r\n            }            \r\n            const saveMessageId = toast(`Saving \"${artwork.title}\" details ...`);\r\n            const res = await fetchPost(\"/SalonApplication/SalonSubmission/SaveJson\", model);\r\n            const json = await res.json();\r\n            if (!json.Success) {\r\n                toast.remove(saveMessageId);\r\n                return await commitError(\"[002] \" + getText(\"18th-salon-application/edit-artwork::unable-to-save-artwork-details-error\", \"Unable to save the artwork details at this time.\"));\r\n            }\r\n            const id = json.Data.id;\r\n            setArtworkWithEffect({ id });\r\n            toast.success(\r\n                getText(\"18th-salon-application/edit-artwork::message/saved-artwork\", `The artwork, \"{title}\", has been saved.`, { title: artwork.title }),\r\n                { id: saveMessageId }\r\n            );\r\n            if (!state.showFirstImageCropper && !state.showSecondImageCropper && !state.showThirdImageCropper) {\r\n                navigate(\"/step-2\");\r\n                return;\r\n            }\r\n            await saveImages(id, saveMessageId);\r\n        } catch (ex) {\r\n            await commitError(\"[008] There was an error saving the artwork. Please contact the Webmaster, Iian Neill, at: iian.d.neill@gmail.com\");\r\n        } finally {\r\n            enableButtons();\r\n        }\r\n    };\r\n    const toSalonEntrantImageData = (salonSubmissionBaseId: number, imageFile: ImageFileDataListItem) => {\r\n        var extension = imageFile.file.filename?.split(\".\")?.at(-1);\r\n        let model = {\r\n            IsPrimary: imageFile.order == 1,\r\n            SalonSubmissionBaseId: salonSubmissionBaseId,\r\n            NewImageId: imageFile.id || \"\",\r\n            Image: imageFile.file.image,\r\n            OriginalFilename: imageFile.file.filename,\r\n            FilenameExtension: extension || \"jpg\"\r\n        } as any;\r\n        return model;\r\n    };\r\n    const enableButtons = () => setButtonActive({ submit: true, cancel: true });\r\n    const disableButtons = () => setButtonActive({ submit: false, cancel: false });\r\n    const getTotalExistingImages = () => {\r\n        let totalArtworkImages = 0;\r\n        artwork.image1_url && totalArtworkImages++;\r\n        artwork.image2_url && totalArtworkImages++;\r\n        artwork.image3_url && totalArtworkImages++;\r\n        return totalArtworkImages;\r\n    }\r\n    const saveImages = async (salonSubmissionBaseId: number, msgId: string) => {\r\n        try {\r\n            var isValid = await validateImageCroppers();\r\n            if (!isValid) {\r\n                return;\r\n            }\r\n            const allImageFiles = await getImageFiles();\r\n            await commitChange(\"18th-arc-salon-application/edit-artwork/images\", allImageFiles.map(img => ({\r\n                NewImageId: img.id,\r\n                Order: img.order,\r\n                OriginalFileName: img.file?.filename,\r\n                Errors: img.file?.errors,\r\n                IsDirty: img.file?.isDirty,\r\n                IsValid: img.file?.isValid\r\n            })));\r\n            const totalExistingImages = getTotalExistingImages();\r\n            const newImages = allImageFiles.filter(f => f.file.isDirty);\r\n            const totalNewImages = newImages.length;\r\n            const totalImages = totalExistingImages + totalNewImages;\r\n            if (totalImages < 2) {\r\n                return await commitError(\"[004] \" + getText(\"18th-salon-application/edit-artwork::please-attach-at-least-two-images-error\", \"Please attach at least two images.\"));\r\n            }\r\n            if (isSculptureSelected()) {\r\n                if (totalImages < 3) {\r\n                    return await commitError(\"[005] \" + getText(\"18th-salon-application/edit-artwork::sculptures-require-at-least-three-images-error\", \"Sculptures require three images.\"));\r\n                }\r\n            }\r\n            if (newImages.some(f => !f.file.isValid)) {\r\n                return await commitError(\"[001] \" + getText(\"18th-salon-application/edit-artwork::an-image-is-invalid-format-error\", \"One of the image files is invalid; please check that the image format is either JPG or PNG.\"));\r\n            }\r\n            if (!newImages.length) {\r\n                toast.remove(msgId);\r\n                return navigate(\"/step-2\");\r\n            }\r\n            const [uploadIndex, setUploadIndex] = createSignal<number>(0);\r\n            toast.loading(() => <>Uploading image {uploadIndex()} of {newImages.length} ...</>, { id: msgId });\r\n            for await (let imageFile of newImages) {\r\n                setUploadIndex(uploadIndex() + 1);\r\n                let model = toSalonEntrantImageData(salonSubmissionBaseId, imageFile);\r\n                let response = await fetchPost(\"/SalonApplication/SalonSubmission/SaveImageStreamingJson\", model);\r\n                let json = await response.json();\r\n                if (!json.Success) {\r\n                    return toast.error(\r\n                        \"[003] \" + getText(\"18th-salon-application/edit-artwork::unable-to-attach-image-error\", \"There was an error attaching an image to the application. The image file is: \") + imageFile.file.filename,\r\n                        { id: msgId }\r\n                    );\r\n                }\r\n            }\r\n            const single = getText(\"18th-salon-application/edit-artwork::message/one-image-uploaded\", \"One image was added to '{title}'.\", {\r\n                title: artwork.title\r\n            });\r\n            const plural = getText(\"18th-salon-application/edit-artwork::message/multiple-images-uploaded\", `{imageTotal} images were added to \"{title}\".`, {\r\n                title: artwork.title, imageTotal: allImageFiles.length\r\n            });\r\n            toast.success(allImageFiles.length == 1 ? single : plural, { id: msgId });\r\n            navigate(\"/step-2\");\r\n        } catch (ex) {\r\n            toast.remove(msgId);\r\n            toast.error(\"[009] There was an error uploading one or more of the images.\", { id: msgId });\r\n        } finally {\r\n            enableButtons();\r\n        }\r\n    };\r\n    \r\n    \r\n    onMount(async () => {\r\n        const routeData = await useRouteData() as EditArtworkData;\r\n        const ids = [\r\n            \"label::artwork-details\",\"message::required-fields\",\r\n            \"18th-salon-application/edit-submission::id/students-name\",\r\n            \"label::first-name\",\"label::last-name\",\"label::title\",\r\n            \"18th-salon-application/edit-submission::medium/description\",\r\n            \"label::category\", \"error::category/nominate-at-least-one\",\r\n            \"18th-salon-application/edit-submission::only-students-can-enter-student-category\",\r\n            \"18th-salon-application/edit-submission::purchase-award-nominated-price\",\r\n            \"label::unit-of-measurement\", \"error::unit-of-measurement/please-select-a-unit\",\r\n            \"label::height\",\"label::width\",\"label::depth\",\r\n            \"18th-salon-application::provide-frame-measurements\",\r\n            \"form::height-framed\",\"form::width-framed\",\"label::student/age-at-completion\",\r\n            \"label::completed-in\",\"label::location\",\r\n            \"18th-salon-application::heading/upload-artwork-images\",\r\n            \"label::image\",\"label::second-image\",\"label::third-image\",\"label::(optional)\",\r\n            \"18th-salon-application/edit-artwork::artwork-costs\",\r\n            \"18th-salon-application/edit-submission::about-this-artwork\",\r\n            \"18th-salon-application/edit-artwork::must-enter-at-least-150-words-error\",\r\n            \"18th-salon-application/edit-artwork::message/please-be-patient\",\r\n            \"button::submit-this-artwork\",\"button::save-changes\",\"button::cancel\",\r\n\r\n            \"18th-salon-application/edit-artwork::comment-required-error\",\r\n            \"18th-salon-application/edit-artwork::must-select-category-error\",\r\n            \"18th-salon-application/edit-artwork::please-attach-at-least-two-images-error\",\r\n            \"18th-salon-application/edit-artwork::sculptures-require-at-least-three-images-error\",\r\n            \"error::unit-of-measurement/please-select-a-unit\",\r\n            \"18th-salon-application/edit-artwork::an-image-is-invalid-format-error\",\r\n            \"18th-salon-application/edit-artwork::unable-to-save-artwork-details-error\",\r\n            \"18th-salon-application/edit-artwork::unable-to-attach-image-error\",\r\n\r\n            \"18th-salon-application/edit-submission::student-category-reminder\",\r\n            \"18th-salon-application/edit-submission::location/label\"\r\n        ];\r\n        await loadCms(ids);\r\n        setSession(routeData.session);\r\n        \r\n        setArtworkWithEffect(routeData.artwork);\r\n        setCategories(routeData.categories);\r\n        setComment(routeData.artwork.comment || \"\");\r\n        if (routeData.artwork.firstImage?.url) {\r\n            setArtworkWithEffect(\"image1_url\", routeData.artwork.firstImage.url);\r\n        } else {\r\n            setState(\"showFirstImageCropper\", true);\r\n        }\r\n        if (routeData.artwork.secondImage?.url) {\r\n            setArtworkWithEffect(\"image2_url\", routeData.artwork.secondImage.url);\r\n        } else {\r\n            setState(\"showSecondImageCropper\", true);\r\n        }\r\n        if (routeData.artwork.thirdImage?.url) {\r\n            setArtworkWithEffect(\"image3_url\", routeData.artwork.thirdImage.url);\r\n        } else {\r\n            setState(\"showThirdImageCropper\", true);\r\n        }\r\n        setState({ isContentReady: true });\r\n        scrollToTop();\r\n    });\r\n    const firstArtworkPrice = 55;\r\n    const successiveArtworkPrice = 30;\r\n    const extraCategoryPrice = 20;\r\n    return (\r\n        <>\r\n            <Show when={state.isContentReady} fallback={<PageLoading />}>\r\n                <div>\r\n                    <Progress step={2} />\r\n                    <form use:formSubmit={submitIfValid}>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-md-6\" style=\"padding-right: 20px;\">\r\n                                <div class=\"form-group\">\r\n                                    <h4 class=\"m-t-xxl m-b-lg\" style=\"font-family: 'Oswald'; font-size: 3em;\">\r\n                                        <CMS id=\"label::artwork-details\">Artwork details</CMS>\r\n                                        <Show when={!!artwork.id}>\r\n                                            <small># {artwork.id}</small>\r\n                                        </Show>\r\n                                    </h4>\r\n                                    <p>\r\n                                        <CMS id=\"message::required-fields\">\r\n                                            Fields that are marked with a <span class=\"fa fa-star\" style=\"color: red;\"></span> are required.\r\n                                        </CMS>\r\n                                    </p>\r\n                                    <Show when={session.isHighSchoolStudent}>\r\n                                        <div>\r\n                                            <hr/>\r\n                                            <div style=\"margin-bottom: 40px;\">\r\n                                                <CMS id=\"18th-salon-application/edit-submission::description/students-name\">\r\n                                                    <label>\r\n                                                        Student's name\r\n                                                    </label>\r\n                                                    <p>\r\n                                                        If you are a teacher entering a student on their behalf you can provide their name here.\r\n                                                    </p>\r\n                                                </CMS>\r\n                                                <div class=\"row\">\r\n                                                    <div class=\"col-md-6\">\r\n                                                        <label>\r\n                                                            <CMS id=\"label::first-name\" text>First name</CMS>\r\n                                                        </label>\r\n                                                        <input type=\"text\"\r\n                                                            value={artwork.student?.firstName}\r\n                                                            name=\"student.firstName\"\r\n                                                            class=\"form-control\"\r\n                                                            onChange={(e) => setArtworkWithEffect(\"student\", \"firstName\", e.currentTarget.value)}\r\n                                                            ></input>\r\n                                                    </div>\r\n                                                    <div class=\"col-md-6\">\r\n                                                        <label>\r\n                                                            <CMS id=\"label::last-name\" text>Last name</CMS>\r\n                                                        </label>\r\n                                                        <input type=\"text\"\r\n                                                            value={artwork.student?.lastName}\r\n                                                            name=\"lastName\"\r\n                                                            class=\"form-control\"\r\n                                                            onChange={(e) => setArtworkWithEffect(\"student\", \"lastName\", e.currentTarget.value)}\r\n                                                            ></input>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </Show>\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <label>\r\n                                                <Required /> <CMS id=\"label::title\" text>Title</CMS>\r\n                                            </label>\r\n                                            <input\r\n                                                type=\"text\"\r\n                                                value={artwork.title}\r\n                                                name=\"title\"\r\n                                                class=\"form-control\"\r\n                                                onInput={(e) => setArtwork(\"title\", e.currentTarget.value)}\r\n                                                onChange={(e) => setArtworkWithEffect(\"title\", e.currentTarget.value)}\r\n                                                use:validate={[\r\n                                                    required,\r\n                                                    ({ value }: any) => maxLength(value, 100)\r\n                                                ]}\r\n                                            ></input>\r\n                                            <p>\r\n                                                <CharacterCount value={artwork.title} max={100} />\r\n                                            </p>\r\n                                            <ErrorMessage error={errors.title}></ErrorMessage>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <label>\r\n                                                <Required /> <CMS id=\"label::medium\" text>Medium</CMS>\r\n                                            </label>\r\n                                            <CMS id=\"18th-salon-application/edit-submission::medium/description\">\r\n                                                <p>\r\n                                                    * If this is not a sculpture, please make sure to include what the medium is on. Examples: write \"Oil on canvas\", \"Oil on panel\", \"Graphite on paper\", etc. Do not just write \"Oil\" or \"Graphite\".\r\n                                                </p>\r\n                                            </CMS>\r\n                                            <input type=\"text\"\r\n                                                value={artwork.medium}\r\n                                                name=\"medium\"\r\n                                                class=\"form-control\"\r\n                                                placeholder=\"E.g., Oil on canvas\"\r\n                                                onInput={(e) => setArtwork(\"medium\", e.currentTarget.value)}\r\n                                                onChange={(e) => setArtworkWithEffect(\"medium\", e.currentTarget.value)}\r\n                                                use:validate={[\r\n                                                    required,\r\n                                                    (el: any) => maxLength(el, 50)\r\n                                                ]}\r\n                                            ></input>\r\n                                            <p>\r\n                                                <CharacterCount value={artwork.medium} max={50} />\r\n                                            </p>\r\n                                            <ErrorMessage error={errors.medium}></ErrorMessage>\r\n                                        </div>\r\n                                    </div>\r\n                                    <hr/>\r\n                                    <div class=\"row\" style=\"margin-top: 20px;\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <label>\r\n                                                <Required /> <CMS id=\"label::category\" text>Category</CMS>\r\n                                            </label>\r\n                                            <Show when={!session.isHighSchoolStudent}>\r\n                                                <Show when={session.isAdmin || session.canApply}>\r\n                                                    <CMS id=\"18th-salon-application/edit-submission::student-category-reminder\">\r\n                                                        <p>\r\n                                                            * If you are a student trying to enter in the Teens Category, please go back to <a href=\"#/step-1\">Step 1</a> and click the box to indicate that you are submitting artwork that was created at 13-19 years of age.\r\n                                                        </p>\r\n                                                    </CMS>\r\n                                                    <div style=\"margin-top: 20px;\">\r\n                                                        <For each={categories()}>{(category: ListItem) =>\r\n                                                            <Form.Check\r\n                                                                label={category.Text}\r\n                                                                name=\"categoryIds\"\r\n                                                                id={\"categoryId-\"+category.Value}\r\n                                                                value={category.Value}\r\n                                                                checked={(artwork?.categoryIds || []).some(item => item == category.Value)}\r\n                                                                onChange={(e) => updateSelectedCategoryIds(e.currentTarget.value)}\r\n                                                            />                                                \r\n                                                        }</For>\r\n                                                    </div>\r\n                                                    <Show when={requiresCategoryId()}>\r\n                                                        <div style=\"color: red;\">\r\n                                                            <CMS id=\"error::category/nominate-at-least-one\">\r\n                                                                You must nominate at least one category\r\n                                                            </CMS>\r\n                                                        </div>\r\n                                                    </Show>\r\n                                                </Show>\r\n                                                <Show when={!session.isAdmin && !session.canApply}>\r\n                                                    <ul>\r\n                                                        <For each={artwork.categoryIds}>{(id) =>\r\n                                                            <li>\r\n                                                                {categories().find(x => x.Value == id)?.Text || \"Unknown category\"}\r\n                                                            </li>\r\n                                                        }</For>\r\n                                                    </ul>\r\n                                                </Show>\r\n                                            </Show>\r\n                                            <Show when={session.isHighSchoolStudent}>\r\n                                                <p>\r\n                                                    <small>\r\n                                                        <CMS id=\"18th-salon-application/edit-submission::only-students-can-enter-student-category\">\r\n                                                            Because you've entered as a high school student your works can only be entered in the Teens Category.\r\n                                                        </CMS>\r\n                                                    </small>\r\n                                                </p>\r\n                                            </Show>\r\n                                        </div>\r\n                                    </div>\r\n                                    <hr/>\r\n                                    <div class=\"row\" style=\"margin-top: 40px;\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <CMS id=\"18th-salon-application/edit-submission::purchase-award-nominated-price\">\r\n                                                <label>\r\n                                                    Purchase award nominated price\r\n                                                </label>\r\n                                                <p>\r\n                                                    If you would like to be eligible for a purchase award, enter the price of this artwork in US dollars. This is the price you would charge ARC if they are interested in purchasing the work. This price is not publicly listed anywhere on the website, no commissions are taken out of this price, and if the work is purchased by ARC, we will check with you for appropriate public retail pricing prior to our awards announcement. By entering a price you are NOT committing to sell the artwork to ARC. We do not mandate works be reserved for ARC to purchase during the entry process. If ARC is interested in purchasing the artwork, we will reach out to you to confirm price and availability. If the work is not available for sale or you would not like the work to be considered for a purchase award, just leave the field empty.\r\n                                                </p>\r\n                                                <p>\r\n                                                    Artworks need not be for sale for all other awards.\r\n                                                </p>\r\n                                                <p>\r\n                                                    <strong><em>Please just enter a number figure, without any other characters.</em></strong>\r\n                                                </p>\r\n                                            </CMS>\r\n                                            <div class=\"row\">\r\n                                                <div class=\"col-md-3\">\r\n                                                    <input\r\n                                                        type=\"number\"\r\n                                                        class=\"form-control\"\r\n                                                        name=\"purchaseAwardNominatedPrice\"\r\n                                                        value={artwork.purchaseAwardNominatedPrice}\r\n                                                        onInput={(e) => setArtwork(\"purchaseAwardNominatedPrice\", e.currentTarget.value)}\r\n                                                        onChange={(e) => setArtworkWithEffect(\"purchaseAwardNominatedPrice\", e.currentTarget.value)}\r\n                                                    />\r\n                                                </div>\r\n                                            </div>\r\n                                            <div>\r\n                                                <ErrorMessage error={errors.purchaseAwardNominatedPrice} />\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <hr/>\r\n                                    <div class=\"row\" style=\"margin-top: 40px;\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <label>\r\n                                                <span class=\"fa fa-star\" style=\"color: red;\"></span>\r\n                                                <CMS id=\"label::unit-of-measurement\" text>Unit of measurement</CMS>\r\n                                            </label>\r\n                                            <div>\r\n                                                <div class=\"btn-group\" data-toggle=\"buttons\">\r\n                                                    <For each={unitOfMeasurements()}>{(unit: ListItem, index) =>\r\n                                                        <Form.Check\r\n                                                            inline\r\n                                                            label={unit.Text}\r\n                                                            value={unit.Value}\r\n                                                            name=\"unitOfMeasurement\"\r\n                                                            checked={artwork.unitOfMeasurement === unit.Value}\r\n                                                            onChange={(e) => setArtworkWithEffect(\"unitOfMeasurement\", e.currentTarget.value)}\r\n                                                            type=\"radio\"\r\n                                                            id={`unit-of-measurement-` + index()}\r\n                                                        />\r\n                                                    }</For>\r\n                                                </div>\r\n                                                <div>\r\n                                                    <Show when={requiresUnitOfMeasurement()}>\r\n                                                        <div style=\"color: red;\">\r\n                                                            <CMS id=\"error::unit-of-measurement/please-select-a-unit\">Please select a unit of measurement</CMS>\r\n                                                        </div>\r\n                                                    </Show>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"row\" style=\"margin-top: 20px;\">\r\n                                        <div class=\"col-md-4\">\r\n                                            <label>\r\n                                                <Required /> <CMS id=\"label::height\" text>Height</CMS>\r\n                                            </label>\r\n                                            <input\r\n                                                type=\"number\"\r\n                                                min={0}\r\n                                                class=\"form-control\"\r\n                                                value={artwork.height}\r\n                                                name=\"height\"\r\n                                                onChange={(e) => setArtworkWithEffect(\"height\", e.currentTarget.value)}\r\n                                                required\r\n                                                use:validate={[ required, onlyNumbers ]}\r\n                                            ></input>\r\n                                            <ErrorMessage error={errors.height} />\r\n                                        </div>\r\n                                        <div class=\"col-md-4\">\r\n                                            <label>\r\n                                                <Required /> <CMS id=\"label::width\" text>Width</CMS>\r\n                                            </label>\r\n                                            <input\r\n                                                type=\"number\"\r\n                                                class=\"form-control\"\r\n                                                min={0}\r\n                                                value={artwork.width}\r\n                                                onChange={(e) => setArtworkWithEffect(\"width\", e.currentTarget.value)}\r\n                                                name=\"width\"\r\n                                                use:validate={[ required, onlyNumbers ]}\r\n                                            ></input>\r\n                                            <ErrorMessage error={errors.width} />\r\n                                        </div>\r\n                                        <Show when={isSculptureSelected()}>\r\n                                            <div class=\"col-md-4\">\r\n                                                <label>\r\n                                                    <Required /> <CMS id=\"label::depth\" text>Depth</CMS>\r\n                                                </label>\r\n                                                <input\r\n                                                    type=\"number\"\r\n                                                    class=\"form-control\"\r\n                                                    min={0}\r\n                                                    value={artwork.depth}\r\n                                                    onChange={(e) => setArtworkWithEffect(\"depth\", e.currentTarget.value)}\r\n                                                    name=\"depth\"\r\n                                                    use:validate={[onlyNumbers, () => isSculptureSelected() && !artwork.depth && \"Please enter a value\"]}\r\n                                                ></input>\r\n                                                <ErrorMessage error={errors.depth} />\r\n                                            </div>\r\n                                        </Show>\r\n                                    </div>\r\n                                    <p style=\"margin-top: 30px;\">\r\n                                        <b>\r\n                                            <CMS id=\"18th-salon-application::provide-frame-measurements\">If the work is framed please provide the frame measurements</CMS>\r\n                                        </b>\r\n                                    </p>\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-md-4\">\r\n                                            <label>\r\n                                                <CMS id=\"form::height-framed\" text>Height (framed)</CMS>\r\n                                            </label>\r\n                                            <input\r\n                                                type=\"number\"\r\n                                                class=\"form-control\"\r\n                                                value={artwork.framed.height}\r\n                                                onChange={(e) => setArtworkWithEffect(\"framed\", \"height\", e.currentTarget.value)} />\r\n                                        </div>\r\n                                        <div class=\"col-md-4\">\r\n                                            <label>\r\n                                                <CMS id=\"form::width-framed\" text>Width (framed)</CMS>\r\n                                            </label>\r\n                                            <input\r\n                                                type=\"number\"\r\n                                                class=\"form-control\"\r\n                                                value={artwork.framed.width}\r\n                                                onChange={(e) => setArtworkWithEffect(\"framed\", \"width\", e.currentTarget.value)} />\r\n                                        </div>\r\n                                    </div>\r\n                                    <hr/>\r\n                                    <Show when={session.isHighSchoolStudent}>\r\n                                        <div class=\"row\">\r\n                                            <div class=\"col-md-6\">\r\n                                                <label>\r\n                                                    <span class=\"fa fa-star\" style=\"color: red;\"></span>\r\n                                                    <CMS id=\"label::student/age-at-completion\" text>Your age at the time of completing this work</CMS>\r\n                                                </label>\r\n                                                <input\r\n                                                    type=\"number\"\r\n                                                    class=\"form-control\"\r\n                                                    value={artwork.student?.age}\r\n                                                    onChange={(e) => setArtworkWithEffect(\"student\", \"age\", e.currentTarget.value)} />\r\n                                            </div>\r\n                                        </div>\r\n                                    </Show>\r\n                                    <div class=\"row\" style=\"margin-top: 40px;\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <label>\r\n                                                <span class=\"fa fa-star\" style=\"color: red;\"></span> <CMS id=\"label::completed-in\" text>Completed in</CMS>\r\n                                            </label>\r\n                                            <div class=\"row\">\r\n                                                <div class=\"col-md-3\">\r\n                                                    <select value={artwork.year}\r\n                                                        class=\"form-control\"                                                        \r\n                                                        onInput={(e) => setArtworkWithEffect(\"year\", e.currentTarget.value)}>\r\n                                                        <For each={years()}>{(year: any) => <option value={year}>{year}</option>}</For>\r\n                                                    </select>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"row\" style=\"margin-top: 20px;\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <label>\r\n                                                <CMS id=\"18th-salon-application/edit-submission::location/label\" text>\r\n                                                    Location (intended for use if the work is in a public collection or on public view)\r\n                                                </CMS>\r\n                                            </label>\r\n                                            <input\r\n                                                type=\"text\"\r\n                                                name=\"location\"\r\n                                                class=\"form-control\"\r\n                                                value={artwork.location}\r\n                                                onInput={(e) => setArtwork(\"location\", e.currentTarget.value)}\r\n                                                onChange={(e) => setArtworkWithEffect(\"location\", e.currentTarget.value)}\r\n                                                use:validate={[ (el: any) => maxLength(el, 50)]}\r\n                                            />\r\n                                            <p>\r\n                                                <CharacterCount value={artwork.location} max={50} />\r\n                                            </p>\r\n                                            <ErrorMessage error={errors.location}></ErrorMessage>\r\n                                        </div>\r\n                                    </div>\r\n                                    <hr />\r\n                                    <div class=\"row\" style=\"margin-top: 40px;\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <ModelEditor\r\n                                                field=\"comment\" editor=\"commentEditor\"\r\n                                                label={() =>\r\n                                                <CMS id=\"18th-salon-application/edit-submission::about-this-artwork\">\r\n                                                    <label>\r\n                                                        <span class=\"fa fa-star\" style=\"color: red;\"></span> About this artwork\r\n                                                    </label>\r\n                                                    <p>\r\n                                                        Please provide up to 150 words about this work of art. We may use this description on the ARC website if this artwork wins an award or honorable mention in the 17th ARC Salon Competition. We also may use this for other promotional materials as well. ARC reserves the right to edit your description for grammar and consistency.\r\n                                                    </p>\r\n                                                </CMS>\r\n                                                }\r\n                                            />\r\n                                            <Show when={requiresComment()}>\r\n                                                <div style=\"color: red;\">\r\n                                                    <CMS id=\"18th-salon-application/edit-artwork::must-enter-at-least-150-words-error\" text>Please provide up to 150 words about this work of art.</CMS>\r\n                                                </div>\r\n                                            </Show>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-md-6\" style=\"padding-left: 20px;\">\r\n                                <h4 class=\"salon-heading-md m-t-xxl m-b-lg\">\r\n                                    <CMS id=\"18th-salon-application::heading/upload-artwork-images\" text>Upload Artwork Images</CMS>\r\n                                </h4>\r\n                                <div class=\"row \">\r\n                                    <div class=\"col-md-12\">\r\n                                        <PrepareImageText />\r\n                                    </div>\r\n                                    <div class=\"col-md-12\">\r\n                                        <div class=\"row\" style=\"border: 1px solid #ccc; padding: 30px; margin: 0px; margin-top: 25px; border-radius: 10px;\">\r\n                                            <div class=\"col-md-12\">\r\n                                                <div>\r\n                                                    <label style=\"font-size: 1.5em;\">\r\n                                                        <Required /> <CMS id=\"label::image\" text>First Image</CMS>\r\n                                                    </label>\r\n                                                    <Show when={state.showFirstImageCropper}>\r\n                                                        <ModelImageCropper imageUrl=\"image1_url\" editor=\"image1\" required />\r\n                                                        <Show when={!!artwork.image1_url}>\r\n                                                            <button class=\"btn btn-primary\" style=\"width: 100%;\" onClick={onKeepFirstImageClicked}>Keep Original Image</button>\r\n                                                        </Show>\r\n                                                    </Show>\r\n                                                    <Show when={!state.showFirstImageCropper}>\r\n                                                        <div style=\"text-align: center;\">\r\n                                                            <Img src={artwork.image1_url} width=\"400\" mode=\"crop\" />\r\n                                                            <button class=\"btn btn-success\" style=\"width: 100%;\" onClick={uploadAnotherFirstImageClicked}>Choose Another Image</button>\r\n                                                        </div>\r\n                                                    </Show>\r\n                                                </div>\r\n                                                <div id=\"additional-images\">\r\n                                                    <div style=\"margin-top: 40px;\">\r\n                                                        <label style=\"font-size: 1.5em;\">\r\n                                                            <Required /> <CMS id=\"label::second-image\" text>Second image</CMS>\r\n                                                        </label>\r\n                                                        <div class=\"row\">\r\n                                                            <div class=\"col-md-12\">\r\n                                                                <Show when={state.showSecondImageCropper}>\r\n                                                                    <ModelImageCropper imageUrl=\"image2_url\" editor=\"image2\" required />\r\n                                                                    <Show when={!!artwork.image2_url}>\r\n                                                                        <button class=\"btn btn-primary\" style=\"width: 100%;\" onClick={onKeepSecondImageClicked}>Keep Original Image</button>\r\n                                                                    </Show>\r\n                                                                </Show>\r\n                                                                <Show when={!state.showSecondImageCropper}>\r\n                                                                    <div style=\"text-align: center;\">\r\n                                                                        <Img src={artwork.image2_url} width=\"400\" mode=\"crop\" />\r\n                                                                        <button class=\"btn btn-success\" style=\"width: 100%;\" onClick={uploadAnotherSecondImageClicked}>Choose Another Image</button>\r\n                                                                    </div>\r\n                                                                </Show>\r\n                                                            </div>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                    <div style=\"margin-top: 40px;\">\r\n                                                        <label style=\"font-size: 1.5em;\">\r\n                                                            <Required when={() => isSculptureSelected()} /> <CMS id=\"label::third-image\" text>Third image</CMS> <Show when={!isSculptureSelected()}><CMS text id=\"label::(optional)\">(Optional)</CMS></Show>\r\n                                                        </label>\r\n                                                        <div class=\"row\">\r\n                                                            <div class=\"col-md-12\">\r\n                                                                <Show when={state.showThirdImageCropper}>\r\n                                                                    <ModelImageCropper imageUrl=\"image3_url\" editor=\"image3\" required={() => isSculptureSelected() } />\r\n                                                                    <Show when={!!artwork.image3_url}>\r\n                                                                        <button class=\"btn btn-primary\" style=\"width: 100%;\" onClick={onKeepThirdClicked}>Keep Original Image</button>\r\n                                                                    </Show>\r\n                                                                </Show>\r\n                                                                <Show when={!state.showThirdImageCropper}>\r\n                                                                    <div style=\"text-align: center;\">\r\n                                                                        <Img src={artwork.image3_url} width=\"400\" mode=\"crop\" />\r\n                                                                        <button class=\"btn btn-success\" style=\"width: 100%;\" onClick={uploadAnotherThirdImageClicked}>Choose Another Image</button>\r\n                                                                    </div>\r\n                                                                </Show>\r\n                                                            </div>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <Show when={artwork.id == undefined}>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-6\">\r\n                                    <p>\r\n                                        <CMS id=\"18th-salon-application/edit-artwork::message/please-be-patient\">\r\n                                            <strong>Note:</strong> After you press the button to submit it may take quite a while for your files to upload, please be patient!\r\n                                        </CMS>\r\n                                    </p>\r\n                                </div>\r\n                            </div>\r\n                        </Show>\r\n                        <div class=\"row m-t-xxl\">\r\n                            <div class=\"col-md-12\">\r\n                                <div id=\"submit-row\">\r\n                                    <Button type=\"submit\" variant=\"success\" classList={{ [\"disabled\"] : !buttonActive.submit }} style=\"margin-right: 20px;\">\r\n                                        <Switch>\r\n                                            <Match when={!!artwork.id}><CMS id=\"button::save-changes\">Save Changes</CMS></Match>\r\n                                            <Match when={!artwork.id}><CMS id=\"button::submit-this-artwork\">Submit this Artwork</CMS></Match>\r\n                                        </Switch>\r\n                                    </Button>\r\n                                    <Button type=\"button\" variant=\"secondary\" classList={{ [\"disabled\"] : !buttonActive.cancel }} href={\"#/step-2\"}>\r\n                                        <CMS id=\"button::cancel\">Cancel</CMS>\r\n                                    </Button>\r\n                                    {/* <Button type=\"button\" variant=\"secondary\" onClick={diagnoseClicked}>Diagnose</Button> */}\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </form>\r\n                </div>\r\n            </Show>\r\n        </>\r\n    );\r\n}","import { Show, onMount } from \"solid-js\";\r\nimport { loadIntroductionCms } from \"../app\";\r\nimport { CMS } from \"../components/cms/cms\";\r\nimport { Progress } from \"../components/progress\";\r\nimport { Img } from \"../components/universal/image\";\r\nimport { createStore } from \"solid-js/store\";\r\nimport { A, useRouteData } from \"@solidjs/router\";\r\nimport { UserSession } from \"../types\";\r\n\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\nexport function Introduction() {\r\n    const [state, setState] = createStore<State>({ isContentReady: false } as State);\r\n    const [session, setSession] = createStore<UserSession>({ } as UserSession);\r\n    onMount(async () => {\r\n        const routeData = await useRouteData() as any;\r\n        setSession(routeData.session);\r\n        await loadIntroductionCms();\r\n        setState(\"isContentReady\", true);\r\n    });\r\n    return (\r\n        <Show when={state.isContentReady}>\r\n            <section class=\"landing-page\">\r\n                <div class=\"marketing\">\r\n                    <Progress step={0} />\r\n                    <CMS id=\"18th-salon-application/home::introduction\">\r\n                        <div style=\"text-align: center; font-size: 1.5em; margin-top: 40px;\">\r\n                            <p>\r\n                                Winners For This Competition Have Now Posted\r\n                            </p>\r\n                        </div>\r\n                        <div>\r\n                            <p>\r\n                                The list of semi-finalist artists and works for the 16th International ARC Salon Competition can be found <A href=\"/Salon/SemiFinalists\">here</A>.\r\n                            </p>\r\n                            <p>\r\n                                The list of the finalists for the 16th International ARC Salon Competition can be found <A href=\"/Salon/Finalists\">here</A>.\r\n                            </p>\r\n                            <p>\r\n                                The competition final results posting can be found <A href=\"/16thARCSalon/Home/Index\">here</A>.\r\n                            </p>\r\n                            <p>\r\n                                <b>Please come back to view the new updated prospectus and enter the 17th ARC Salon Competition, March 1 - June 13, 2024.</b>\r\n                            </p>\r\n                        </div>\r\n                        <div>\r\n                            When talking about competitions and exhibitions dedicated to 21st Century Realism, the International ARC Salon is the largest in the world in terms of entries, and the most diverse in terms of categories and international participation. This makes the International ARC Salon Competition the most influential and far-reaching competition for Contemporary Realism in the world, with over $130,000 in cash awards and international recognition through partnerships with prestigious magazines, galleries, and museums, with live exhibitions and a strong online presence. Categories include: Figurative, Portraiture, Imaginative Realism, Drawing, Landscape, Still Life, Plein Air Painting, Fully From Life, Sculpture, Animals, and a special category for teens.\r\n                        </div>\r\n                    </CMS>\r\n                    <div class=\"row m-t-xxl\" style=\"text-align: center;\">\r\n                        <div class=\"col-md-4\">\r\n                            <CMS id=\"18th-salon-application/home::rules/image\">\r\n                                <p>\r\n                                    <A href=\"/rules\">\r\n                                        <Img class=\"img-circle\" src=\"/Media/Salon/1/Entrant/11026/Submission/11202/22aa4514-0f55-404d-8055-bf11babdd42c.jpg\" mode=\"crop\" w={300} h={300} alt=\"Rules\" />\r\n                                    </A>\r\n                                </p>\r\n                            </CMS>\r\n                            <h2>\r\n                                <CMS text id=\"18th-salon-application/home::rules/heading\">Rules</CMS>\r\n                            </h2>\r\n                            <p class=\"m-t-md m-b-md\">\r\n                                <A class=\"btn btn-chunky-sm btn-chunky-grey\" href=\"/rules\" role=\"button\">\r\n                                    <CMS text id=\"button::learn-more\">Learn More</CMS>\r\n                                </A>\r\n                            </p>\r\n                            <CMS id=\"18th-salon-application/home::rules/blurb\">\r\n                                <p>\r\n                                    Read about the rules for entering the ARC Salon and other important information.\r\n                                </p>\r\n                            </CMS>\r\n                        </div>\r\n                        <div class=\"col-md-4\">\r\n                            <CMS id=\"18th-salon-application/home::categories/image\">\r\n                                <p>\r\n                                    <A href=\"/categories\">\r\n                                        <Img class=\"img-circle\" src=\"/Media/SalonApplication/categories-fleeting-dream-cropped.jpg\" mode=\"crop\" height={300} width={300} alt=\"Categories\" />\r\n                                    </A>\r\n                                </p>\r\n                            </CMS>\r\n                            <h2>\r\n                                <CMS text id=\"18th-salon-application/home::categories/heading\">Categories</CMS>\r\n                            </h2>\r\n                            <p class=\"m-t-md m-b-md\">\r\n                                <A class=\"btn btn-chunky-sm btn-chunky-grey\" href=\"/categories\" role=\"button\">\r\n                                    <CMS text id=\"button::learn-more\">Learn More</CMS>\r\n                                </A>\r\n                            </p>\r\n                            <CMS id=\"18th-salon-application/home::categories/blurb\">\r\n                                <p>\r\n                                    Artists may enter and win in one or all eleven categories; there is no limit to the number of entries you may submit.\r\n                                </p>\r\n                            </CMS>\r\n                        </div>\r\n                        <div class=\"col-md-4\">\r\n                            <p style=\"text-align: center;\">\r\n                            </p>\r\n                            <CMS id=\"18th-salon-application/home::awards/image\">\r\n                                <p>\r\n                                    <A href=\"/awards\">\r\n                                        <Img class=\"img-circle\" src=\"/ContentSection/23/Images/edf0c9f9-6b4d-4c3d-a321-7d098b20f6fe.jpg\" mode=\"crop\" w={300} h={300} alt=\"Awards\"/>\r\n                                    </A>\r\n                                </p>\r\n                            </CMS>\r\n                            <p></p>\r\n                            <h2>\r\n                                <CMS text id=\"18th-salon-application/home::awards/heading\">Awards</CMS>\r\n                            </h2>\r\n                            <p class=\"m-t-md m-b-md\">\r\n                                <A class=\"btn btn-chunky-sm btn-chunky-grey\" href=\"/awards\" role=\"button\">\r\n                                    <CMS text id=\"button::learn-more\">Learn More</CMS>\r\n                                </A>\r\n                            </p>\r\n                            <CMS id=\"18th-salon-application/home::awards/blurb\">\r\n                                <p>\r\n                                    Over $130,000 in cash awards and International recognition through partnerships with prestigious magazines, galleries and museums, with live exhibitions and a strong online presence.\r\n                                </p>\r\n                            </CMS>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row m-t-xxl m-b-xxl\" style=\"text-align: center;\">\r\n                        <div class=\"col-md-offset-2 col-md-4\">\r\n                            <CMS id=\"18th-salon-application/home::jurors/image\">\r\n                                <p>\r\n                                    <A href=\"/jurors\">\r\n                                        <Img class=\"img-circle\" src=\"/Media/Salon/Jurors/fred-ross-3.jpg\" mode=\"crop\" w={300} h={300} alt=\"Jurors\"/>\r\n                                    </A>\r\n                                </p>\r\n                            </CMS>\r\n                            <h2>\r\n                                <CMS text id=\"18th-salon-application/home::jurors/heading\">Jurors</CMS>\r\n                            </h2>\r\n                            <p class=\"m-t-md m-b-md\">\r\n                                <A class=\"btn btn-chunky-sm btn-chunky-grey\" href=\"/jurors\" role=\"button\">\r\n                                    <CMS text id=\"button::learn-more\">Learn More</CMS>\r\n                                </A>\r\n                            </p>\r\n                            <CMS id=\"18th-salon-application/home::jurors/blurb\">\r\n                                <p>\r\n                                    This year the Salon will be juried by several members of our prestigious ARC Board of Judges and perhaps some special guest judges as well (four per category). Specific judges for categories still to be announced.\r\n                                </p>\r\n                            </CMS>\r\n                        </div>\r\n                        <div class=\"col-md-4\">\r\n                            <CMS id=\"18th-salon-application/home::sponsors/image\">\r\n                                <p>\r\n                                    <A href=\"/sponsors\">\r\n                                        <Img class=\"img-circle\" src=\"/Media/SalonApplication/sponsors.jpg\" mode=\"crop\" w={300} h={300} alt=\"Sponsors\"/>\r\n                                    </A>\r\n                                </p>\r\n                            </CMS>\r\n                            <h2>\r\n                                <CMS text id=\"18th-salon-application/home::sponsors/heading\">Sponsors</CMS>\r\n                            </h2>\r\n                            <p class=\"m-t-md m-b-md\">\r\n                                <A class=\"btn btn-chunky-sm btn-chunky-grey\" href=\"/sponsors\" role=\"button\">\r\n                                    <CMS text id=\"button::learn-more\">Learn More</CMS>\r\n                                </A>\r\n                            </p>\r\n                            <CMS id=\"18th-salon-application/home::sponsors/blurb\">\r\n                                <p>\r\n                                    Thank you to our sponsors for their dedication to fine art, their generous donations to help the vision of an international traveling exhibition and our multi-genre competition to inspire, promote, and defend the advancement of academically inspired visual art in the 21st century.\r\n                                </p>\r\n                            </CMS>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <Show when={session.canApply || session.isAdmin}>\r\n                    <div style=\"padding: 60px; margin-bottom: -40px;\">\r\n                        <h2 style=\"text-align: center; font-family: 'Impact';\">\r\n                            <A class=\"btn btn-primary\" href=\"/step-1\" style=\"font-size: 2rem;\">\r\n                                <CMS text id=\"button::update/start-application\">Update/Start Application</CMS> <span class=\"fa fa-arrow-circle-right pulse\" style=\"margin-left: 20px;\"></span>\r\n                            </A>\r\n                        </h2>\r\n                    </div>\r\n                </Show>\r\n            </section>\r\n        </Show>\r\n    );\r\n}","import { Component, Show, onMount } from \"solid-js\";\r\nimport _ from \"underscore\";\r\nimport { A, useNavigate, useRouteData } from \"@solidjs/router\";\r\nimport { commitChange, fetchPost, scrollToTop } from \"../library/common\";\r\nimport ImageCropper, { IImageCropperWrapper,  ImageFileData } from \"../components/universal/image-cropper\";\r\nimport { ArtworkImageData, KeyOfType } from \"../types\";\r\nimport { Progress } from \"../components/progress\";\r\nimport { createStore } from \"solid-js/store\";\r\nimport { PrepareImageText } from \"../components/prepare-image-text\";\r\nimport toast from \"solid-toast\";\r\nimport { CMS } from \"../components/cms/cms\";\r\nimport { loadCms } from \"../app\";\r\nimport { PageLoading } from \"../components/page-loading\";\r\nimport { Button } from \"solid-bootstrap\";\r\n\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\ntype ButtonActiveState = {\r\n    submit: boolean;\r\n    cancel: boolean;\r\n}\r\n\r\nexport function EditImage() {  \r\n    const navigate = useNavigate();\r\n    const [state, setState] = createStore<State>({ isContentReady: false });\r\n    const [data, setData] = createStore<ArtworkImageData>({} as any);\r\n    const [buttonActive, setButtonActive] = createStore<ButtonActiveState>({ submit: true, cancel: true } as ButtonActiveState);\r\n    const enableButtons = () => setButtonActive({ submit: true, cancel: true });\r\n    const disableButtons = () => setButtonActive({ submit: false, cancel: false });\r\n    const toSalonEntrantImageData = (salonSubmissionBaseId: string, imageFile: ImageFileData) => {\r\n        var extension = imageFile.filename?.split(\".\")?.at(-1);\r\n        let model = {\r\n            IsPrimary: data.isPrimary,\r\n            SalonSubmissionBaseId: salonSubmissionBaseId || \"\",\r\n            NewImageId: data.newImage.id || \"\",\r\n            Image: imageFile.image,\r\n            OriginalFilename: imageFile.filename,\r\n            FilenameExtension: extension || \"jpg\"\r\n        };\r\n        return model;\r\n    };\r\n    const ModelImageCropper : Component<{ imageUrl: keyof KeyOfType<ArtworkImageData, string>; required?: boolean |(() => boolean); editor: keyof KeyOfType<ArtworkImageData, IImageCropperWrapper>; label?: string; }> = (props) =>\r\n    <>\r\n        <ImageCropper src={data[props.imageUrl]} required={props.required} maxHeight={6000} maxWidth={6000} setInstance={(wrapper) => setData(props.editor, wrapper)} />\r\n    </>;\r\n    const saveImage = async (imageFile: ImageFileData) => {\r\n        const msgId = toast.loading(`Saving image ...`);\r\n        try {\r\n            const model = toSalonEntrantImageData(data.artwork.id, imageFile);\r\n            const response = await fetchPost(\"/SalonApplication/SalonSubmission/SaveImageStreamingJson\", model);\r\n            const json = await response.json();\r\n            if (!json.Success) {\r\n                await commitError(\"There was an error uploading the image.\");\r\n                return toast.error(\"There was an error uploading the image.\", { id: msgId });\r\n            }\r\n            toast.success(`The image has been saved.`, { id: msgId });\r\n            navigate(\"/step-2\");\r\n        } catch (ex) {\r\n            await commitError(\"There was an exception uploading the image.\");\r\n            toast.error(\"There was an error uploading the image.\", { id: msgId });\r\n            return;\r\n        } finally {\r\n            enableButtons();\r\n        }\r\n    }\r\n    const commitError = async (error: string) => {\r\n        await commitChange(\"18th-arc-salon-application/edit-image/error\", {\r\n            SalonSubmissionBaseImageId: data.id,\r\n            SalonSubmissionBaseId: data.artwork?.id,\r\n            Error: error\r\n        });\r\n        toast.error(error);\r\n    }\r\n    const onSaveClicked = async (e: Event) => {\r\n        e.preventDefault();\r\n        disableButtons();\r\n        if (data.artwork.id === undefined) {\r\n            return await commitError(\"Artwork data was not retrieved. Please refresh the page.\");\r\n        }\r\n        const imageFile = await data.imageEditor?.getImageFile();\r\n        if (imageFile == null) {\r\n            return await commitError(\"There is no image selected to upload.\");\r\n        }\r\n        await commitChange(\"18th-salon-application/edit-image\", {\r\n            SalonSubmissionBaseImageId: data.id,\r\n            SalonSubmissionBaseId: data.artwork?.id,\r\n            OriginalFilename: imageFile.filename,\r\n            FileSize: imageFile?.image?.size,\r\n            Errors: imageFile?.errors,\r\n            IsValid: imageFile?.isValid,\r\n            IsDirty: imageFile?.isDirty\r\n        });\r\n        await saveImage(imageFile);\r\n    }\r\n    onMount(async () => {\r\n        const routeData = await useRouteData() as ArtworkImageData;\r\n        console.log(\"onMount\", { routeData });\r\n        setData(routeData);\r\n        if (!!routeData.newImage?.url) {\r\n            setData(\"imageUrl\", routeData.newImage.url);\r\n        }\r\n        await loadCms([\r\n            \"button::cancel\", \"button::save\"\r\n        ]);\r\n        setState({ isContentReady: true });\r\n        scrollToTop();\r\n    });\r\n    return (\r\n        <>\r\n            <div>\r\n                <Progress step={2}></Progress>\r\n                <div class=\"row \">\r\n                    <div class=\"col-md-12\">\r\n                        <PrepareImageText />\r\n                    </div>\r\n                </div>\r\n                <Show when={state.isContentReady} fallback={<PageLoading />}>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-12\">\r\n                            <div class=\"row\" style=\"border: 1px solid #ccc; padding: 30px; margin: 0px; margin-top: 25px; border-radius: 10px;\">\r\n                                <div class=\"col-md-12\">\r\n                                    <div>\r\n                                        <label style=\"font-size: 1.5em;\">\r\n                                            <CMS id=\"label::image\">Image</CMS>\r\n                                        </label>\r\n                                        <ModelImageCropper imageUrl=\"imageUrl\" editor=\"imageEditor\" required />\r\n                                    </div>                                \r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div>\r\n                        <div>\r\n                            <Button  href={\"#/step-2\"} variant=\"secondary\" classList={{ [\"disabled\"] : !buttonActive.cancel }} style=\"margin-right: 20px;\">\r\n                                <CMS text id=\"button::cancel\">Cancel</CMS>\r\n                            </Button>\r\n                            <Button variant=\"success\" onClick={onSaveClicked} classList={{ [\"disabled\"] : !buttonActive.submit }}>\r\n                                <CMS text id=\"button::save\">Save</CMS>\r\n                            </Button>\r\n                        </div>\r\n                    </div>\r\n                </Show>\r\n            </div>\r\n        </>\r\n    );\r\n}","import { Component, For, JSXElement, Show, createSignal } from \"solid-js\";\r\nimport { fetchGet } from \"../../../library/common\";\r\nimport styles from \"./index.module.css\";\r\n\r\ntype Props = {\r\n    cultureCode?: string;\r\n}\r\ntype FlagProps = {\r\n    code: string;\r\n}\r\nconst Flag : Component<FlagProps> = (props) => <img class={styles[\"flag\"]} src={\"/solid/common/assets/images/flags/4x3/\" + props.code + \".svg\"} />;\r\n\r\ntype LanguageListItem = { CultureCode: string, Language: string; FlagCode?: string;  };\r\nexport const LanguageSelector : Component<Props> = (props) => {\r\n    const [cultureCode, setCultureCode] = createSignal<string>(props.cultureCode || \"en\");\r\n    const message: any = {\r\n        \"en\": \"This translation was provided by translation software and is for your convenience only. Please excuse any errors in translation. If you have any questions please contact Iian Neill at iian.d.neill@gmail.org\",\r\n        \"ja\": \"この翻訳は翻訳ソフトウェアによって提供されており、便宜のみを目的としています。 翻訳の誤りはご容赦ください。 ご質問がございましたら、Iian Neill(iian.d.neill@gmail.org)までご連絡ください。\",\r\n        \"zh\": \"此翻译是由翻译软件提供的,仅为您提供方便。 请原谅翻译中的任何错误。 如有任何疑问,请通过iian.d.neill@gmail.org与Iian Neill联系。\",\r\n        \"es\": \"Esta traducción fue proporcionada por un software de traducción y es solo para su conveniencia. Por favor, disculpe cualquier error en la traducción. Si tiene alguna pregunta, comuníquese con Iian Neill en iian.d.neill@gmail.org\",\r\n        \"de\": \"Diese Übersetzung wurde von einer Übersetzungssoftware bereitgestellt und dient nur Ihrer Bequemlichkeit. Bitte entschuldigen Sie eventuelle Fehler in der Übersetzung. Bei Fragen wenden Sie sich bitte an Iian Neill unter iian.d.neill@gmail.org\",\r\n        \"id\": \"Terjemahan ini disediakan oleh perangkat lunak terjemahan dan hanya untuk kenyamanan Anda. Mohon maaf jika ada kesalahan dalam terjemahan. Jika Anda memiliki pertanyaan, silakan hubungi Iian Neill di iian.d.neill@gmail.org\",\r\n        \"it\": \"Questa traduzione è stata fornita dal software di traduzione ed è solo per tua comodità. Si prega di scusare eventuali errori di traduzione. In caso di domande, contattare Iian Neill all'indirizzo iian.d.neill@gmail.org\",\r\n        \"ru\": \"Этот перевод предоставлен программным обеспечением для перевода и предназначен только для вашего удобства. Прошу прощения за любые ошибки в переводе. Если у вас есть какие-либо вопросы, пожалуйста, свяжитесь с Iian Neill по адресу iian.d.neill@gmail.org\",\r\n        \"fr\": \"Cette traduction a été fournie par un logiciel de traduction et est uniquement pour votre commodité. Veuillez excuser toute erreur de traduction. Si vous avez des questions, veuillez contacter Iian Neill à iian.d.neill@gmail.org\"\r\n    };\r\n    const updateCulture = async (lang: string) => {\r\n        const response = await fetchGet(\"/Home/SetCulture\", { lang });\r\n        const json = await response.json();\r\n        window.location.reload();\r\n    };\r\n    const languageChanged = async (e: Event) => {\r\n        setCultureCode((e.currentTarget as HTMLSelectElement).value);\r\n        const lang = cultureCode();\r\n        const text = message[lang] ? message[lang] + \"\\r\\r\" + message.en : message.en;\r\n        if (lang == \"en\" || confirm(text)) {\r\n            await updateCulture(lang);\r\n        }\r\n    };\r\n    const languages: LanguageListItem[] = [\r\n        { Language: \"English\", CultureCode: \"en\", FlagCode: \"us\" },\r\n        { Language: \"中国人\", CultureCode: \"zh\", FlagCode: \"cn\" },\r\n        { Language: \"Indonesia\", CultureCode: \"id\" },\r\n        { Language: \"русский\", CultureCode: \"ru\" },\r\n        { Language: \"Italiano\", CultureCode: \"it\" },\r\n        { Language: \"Français\", CultureCode: \"fr\" },\r\n        { Language: \"Deutsch\", CultureCode: \"de\" },\r\n        { Language: \"Español\", CultureCode: \"es\" },\r\n        { Language: \"日本語\", CultureCode: \"ja\", FlagCode: \"jp\" }\r\n    ];\r\n    const selected = () => languages.find(x => x.CultureCode == cultureCode()) as LanguageListItem;\r\n    return (\r\n        <>\r\n            <div class={styles[\"image-dropdown\"]}>\r\n                <Show when={cultureCode()}>\r\n                    <div class={styles[\"selected-list-item\"]}>\r\n                        <Flag code={selected()?.FlagCode || selected()?.CultureCode} /> {selected().Language}\r\n                    </div>\r\n                </Show>\r\n                <div class={styles[\"list-items-container\"]}>\r\n                    <For each={languages}>{(opt, i) =>\r\n                        <div class={styles[\"list-item\"]}>\r\n                            <input\r\n                                checked={cultureCode() == opt.CultureCode}\r\n                                onInput={(e) => languageChanged(e)}\r\n                                type=\"radio\"\r\n                                id={\"line\" + i()}\r\n                                name=\"CultureCode\"\r\n                                value={opt.CultureCode}\r\n                            /><label for={\"line\" + i()}><Flag code={opt.FlagCode || opt.CultureCode} /> {opt.Language}</label>    \r\n                        </div>\r\n                    }</For>\r\n                </div>\r\n            </div>\r\n        </>\r\n    );\r\n};","import { Button, InputGroup, Pagination } from 'solid-bootstrap';\r\nimport {Accessor, Component, createEffect, createSignal, For, onMount, Setter, Show} from 'solid-js';\r\nimport { SetStoreFunction, Store } from 'solid-js/store';\r\nimport { getOrSetAsync } from '../API';\r\n\r\ntype RadioButtonProps = {\r\n    name: string;\r\n    value: string;\r\n    text?: string;\r\n    field: [Accessor<string>, Setter<string>];\r\n};\r\nexport const RadioButton: Component<RadioButtonProps> = (props) =>\r\n<label class=\"radio-inline\">\r\n    <input type=\"radio\" name={props.name} checked={props.field[0]() == props.value} onChange={() => props.field[1](props.value)} /> <i></i> <span style=\"position: relative; top: 6px;\">{(props.text || props.value)}</span>\r\n</label>;\r\n\r\nexport const makeAccessor = (list: any) => createSignal<any[]>(list)[0];\r\n\r\ntype PageListProps = {\r\n    maxPage: Accessor<number>;\r\n    blockSize: Accessor<number>;\r\n    page: Accessor<number>;\r\n    onClick: (page: number) => void;\r\n};\r\nexport const PageList: Component<PageListProps> = (props) => {\r\n    const [pageBlock, setPageBlock] = createSignal<number[]>([]);\r\n    const getPageBlockStart = (pageIndex: number, pageBlockSize: number) => {\r\n        var pageBlock = Math.floor((pageIndex / pageBlockSize) + 1);\r\n        var pageBlockStart = ((pageBlock - 1) * pageBlockSize) + 1;\r\n        return pageBlockStart;\r\n    };\r\n    const getPageRange = (page: number, rangeSize: number, maxPage: number) => {\r\n        var start = getPageBlockStart(page, rangeSize);\r\n        var end = start + rangeSize - 1;\r\n        if (end > maxPage) {\r\n            end = maxPage;\r\n        }\r\n        var pages = [];\r\n        for (var i = start; i <= end; i++) {\r\n            pages.push(i);\r\n        }\r\n        return pages;\r\n    };\r\n    const skipToPreviousBlock = async () =>{\r\n        const pageBlockStart = getPageBlockStart(props.page(), props.blockSize());\r\n        if (pageBlockStart - props.blockSize() >= 1) {\r\n            const previousPageBlockStart = pageBlockStart - props.blockSize();\r\n            props.onClick(previousPageBlockStart);\r\n        }\r\n    };\r\n    const skipToNextBlock = async () =>{\r\n        const pageBlockStart = getPageBlockStart(props.page(), props.blockSize());\r\n        if (pageBlockStart + props.blockSize() <= props.maxPage()) {\r\n            const nextPageBlockStart = pageBlockStart + props.blockSize();\r\n            props.onClick(nextPageBlockStart);\r\n        }\r\n    };\r\n    const skipToFirst = () => props.onClick(1);\r\n    const skipToLast = () => props.onClick(props.maxPage());\r\n    createEffect(() => {\r\n        const _pageBlock = getPageRange(props.page(), props.blockSize(), props.maxPage());\r\n        setPageBlock(_pageBlock);\r\n    });\r\n    return (\r\n        <>\r\n            <Pagination>\r\n                <Pagination.First onClick={skipToFirst} />\r\n                <Pagination.Prev onClick={skipToPreviousBlock} />\r\n                <For each={pageBlock()}>{(p) =>\r\n                    <Pagination.Item active={p == props.page()} onClick={() => props.onClick(p)}>{p}</Pagination.Item>\r\n                }</For>\r\n                <Pagination.Next onClick={skipToNextBlock} />\r\n                <Pagination.Last onClick={skipToLast} />\r\n            </Pagination>\r\n        </>\r\n    );\r\n};\r\n\r\ntype AlphabeticalListProps = {\r\n    letter: Accessor<string>;\r\n    existingLetters?: Accessor<string[]>;\r\n    onClick: (letter: string) => void;\r\n};\r\nexport const AlphabeticalList: Component<AlphabeticalListProps> = (props) => {\r\n    const createAlphabet = () => {\r\n        const alpha = Array.from(Array(26)).map((e, i) => i + 65);\r\n        const alphabet = alpha.map((x) => String.fromCharCode(x));\r\n        return alphabet;\r\n    };\r\n    const letters = createAlphabet();\r\n    const [existing, setExisting ] = createSignal<string[]>(letters);\r\n    createEffect(() => {\r\n        if (props.existingLetters()) setExisting(props.existingLetters());\r\n    });\r\n    console.log({ existing: existing(), letters: letters });\r\n    return (\r\n        <For each={letters}>{(l: string) =>\r\n            <>\r\n                <Show when={existing().indexOf(l) >= 0}>\r\n                    <span class=\"alphabet-index\" onClick={() => props.onClick(l)} classList={{ [\"active-letter\"]: l == props.letter() }}>{l}</span>\r\n                </Show>\r\n                <Show when={existing().indexOf(l) < 0}>\r\n                    <span style=\"padding: 5px; color: #ccc;\">{l}</span>\r\n                </Show>\r\n            </> \r\n        }</For>\r\n    );\r\n}\r\n\r\ntype SelectListFieldProps = {\r\n    class?: string;\r\n    list: Accessor<any[]>;\r\n    field: [string, Store<{[key: string]: string}>, SetStoreFunction<string>];\r\n};\r\nexport const SelectListField: Component<SelectListFieldProps> = (props) => \r\n<select class=\"form-control\" value={props.field[1][props.field[0]]} onChange={(e) => props.field[2](props.field[0], e.currentTarget.value)}>\r\n    <For each={props.list()}>{(item: any) =><option value={item.Value}>{item.Text}</option>}</For>\r\n</select>;\r\n\r\n\r\ntype SelectListProps = {\r\n    class?: string;\r\n    size?: number;\r\n    list: Accessor<any[]>;\r\n    field: [Accessor<string>, Setter<string>];\r\n};\r\nexport const SelectList: Component<SelectListProps> = (props) => {    \r\n    const value = props.field[0];\r\n    const setValue = props.field[1];\r\n    const size = props.size || 1;\r\n    createEffect(() => {\r\n        if (props.list().length > 0) {\r\n            if (value() === \"\" || value() === null || value() === undefined) {\r\n                setValue(props.list()[0]?.Value || \"\");\r\n            }\r\n        }\r\n    });\r\n    return (\r\n    <select class=\"form-control\" value={value()} size={size} onChange={(e) => setValue(e.currentTarget.value)}>\r\n        <For each={props.list()}>{(item: any) =><option value={item.Value?.toString()}>{item.Text}</option>}</For>\r\n    </select>\r\n    );\r\n};\r\n\r\ntype TextInputProps = {\r\n    field: [Accessor<string>, Setter<string>];\r\n};\r\nexport const TextInput : Component<TextInputProps> = (props) => <input type=\"text\" class=\"form-control\" value={props.field[0]()} onInput={(e) => props.field[1](e.currentTarget.value)} />;\r\n\r\ntype NumericalSelectListProps = {\r\n    class?: string;\r\n    list: Accessor<number[]>;\r\n    field: [Accessor<number>, Setter<number>];\r\n};\r\nexport const NumericalSelectList : Component<NumericalSelectListProps> = (props) => \r\n<select class=\"form-control\" value={props.field[0]()} onChange={(e) => props.field[1](parseInt(e.currentTarget?.value))}>\r\n    <For each={props.list()}>{(item: number) =><option value={item}>{item}</option>}</For>\r\n</select>;\r\n\r\ntype ListItem = {\r\n    Id: string;\r\n    Name: string;\r\n    IsDeleted: boolean;\r\n};\r\n\r\ntype PageSelectListProps = {\r\n    maxPage: Accessor<number>;\r\n    field: [Accessor<number>, Setter<number>];\r\n};\r\nexport const PageSelectList: Component<PageSelectListProps> = (props) => {\r\n    const [pages, setPages] = createSignal<number[]>([]);\r\n    createEffect(() => {\r\n        const list = [];\r\n        for (let p = 1; p < props.maxPage(); p++) {\r\n            list.push(p);\r\n        }\r\n        setPages(list);\r\n    });\r\n    return (\r\n        <NumericalSelectList field={props.field} list={pages}></NumericalSelectList>\r\n    );\r\n};\r\n\r\n\r\ntype SelectArtistProps = {\r\n    onSelected: (id: string, name: string) => void;\r\n    defaultValue?: Accessor<string>;\r\n};\r\nexport const SelectArtist : Component<SelectArtistProps> = (props: SelectArtistProps) => {\r\n    const [artistId, setArtistId] = createSignal<string>(\"\");\r\n    const [artists, setArtists] = createSignal<any[]>([]);\r\n    const getData = async () => {\r\n        const response = await fetch(\"/Admin/Artist/GetListItemsJson\");\r\n        const json = await response.json();\r\n        return json;\r\n    };\r\n    const updateArtists = async () => {\r\n        const json = await getOrSetAsync(\"artists/select-list\", () => getData());\r\n        setArtists(json.Data.map((x: ListItem) => {\r\n            let text = x.Name;\r\n            if (!!x.IsDeleted) {\r\n                text += \" [DELETED]\";\r\n            }\r\n            return {\r\n                Text: text,\r\n                Value: x.Id\r\n            };\r\n        }));\r\n        if (props.defaultValue) {\r\n            setArtistId(props.defaultValue());\r\n        }\r\n    };\r\n    const artistSelected = (e: Event) => {\r\n        e.preventDefault();\r\n        const id = parseInt(artistId());\r\n        const text = artists().find(x => x.Value == id)?.Text;\r\n        props.onSelected(artistId(), text || \"<unknown>\");\r\n    };\r\n    onMount(async () => {\r\n        await updateArtists();\r\n    });\r\n    return (\r\n    <div>\r\n        <InputGroup class=\"mb-3\">\r\n            <SelectList field={[artistId, setArtistId]} list={artists}></SelectList>\r\n            <Button variant=\"primary\" onClick={artistSelected}>Select</Button>\r\n        </InputGroup>\r\n    </div>\r\n    );\r\n}\r\n\r\ntype SelectInstitutionProps = {\r\n    onSelected: (id: string, name: string) => void;\r\n    defaultValue?: Accessor<string>;\r\n};\r\nexport const SelectInstitution : Component<SelectInstitutionProps> = (props: SelectInstitutionProps) => {\r\n    const [institutionId, setInstitutionId] = createSignal<string>(\"\");\r\n    const [institutions, setInstitutions] = createSignal<any[]>([]);\r\n    const getData = async () => {\r\n        const response = await fetch(\"/Admin/Institution/GetListItemsJson\");\r\n        const json = await response.json();\r\n        return json;\r\n    };\r\n    const updateInstitutions = async () => {\r\n        const json = await getOrSetAsync(\"institutions/select-list\", () => getData());\r\n        setInstitutions(json.Data.map((x: ListItem) => {\r\n            let text = x.Name;\r\n            if (!!x.IsDeleted) {\r\n                text += \" [DELETED]\";\r\n            }\r\n            return {\r\n                Text: text,\r\n                Value: x.Id\r\n            };\r\n        }));\r\n        if (props.defaultValue) {\r\n            setInstitutionId(props.defaultValue());\r\n        }\r\n    };\r\n    const institutionSelected = (e: Event) => {\r\n        e.preventDefault();\r\n        const id = parseInt(institutionId());\r\n        const text = institutions().find(x => x.Value == id)?.Text;\r\n        props.onSelected(institutionId(), text || \"<unknown>\");\r\n    };\r\n    onMount(async () => {\r\n        await updateInstitutions();\r\n    });\r\n    return (\r\n    <div>\r\n        <InputGroup class=\"mb-3\">\r\n            <SelectList field={[institutionId, setInstitutionId]} list={institutions}></SelectList>\r\n            <Button variant=\"primary\" onClick={institutionSelected}>Select</Button>\r\n        </InputGroup>\r\n    </div>\r\n    );\r\n}","import { Component, createSignal, Match, Switch } from \"solid-js\";\r\nimport { TextInput } from \"../components/form-controls\";\r\nimport { fetchGet } from \"../library/common\";\r\n\r\nexport type ForgotPasswordProps = {\r\n    onCancel: () => void;\r\n    onCompleted: () => void;\r\n};\r\n\r\ntype Screen = \"form\" | \"completed\" | \"error\";\r\n\r\nexport const ForgotPassword : Component<ForgotPasswordProps> = (props) => {\r\n    const [screen, setScreen] = createSignal<Screen>(\"form\");\r\n    const [username, setUsername] = createSignal<string>(\"\");\r\n    const cancelClicked = (e: Event) => {\r\n        e.preventDefault();\r\n        props.onCancel();\r\n    }\r\n    const onSubmit = async (e: Event) => {\r\n        e.preventDefault();\r\n        const response = await fetchGet(\"/Home/ForgotPasswordJson\", { UsernameOrEmail: username() });\r\n        const json = await response.json();\r\n        if (!json.Success) {\r\n            setScreen(\"error\");\r\n            return;\r\n        };\r\n        setScreen(\"completed\");\r\n    };\r\n    const retryClicked = (e: Event) => {\r\n        e.preventDefault();\r\n        setScreen(\"form\");\r\n    };\r\n    const closeClicked = (e: Event) => {\r\n        e.preventDefault();\r\n        props.onCompleted();\r\n    };\r\n    return (\r\n    <div>\r\n        <Switch>\r\n            <Match when={screen()== \"form\"}>\r\n                <form onSubmit={onSubmit}>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-6\">\r\n                            <h2>\r\n                                Forgot Password?\r\n                            </h2>\r\n                            <p>\r\n                                Enter your username or email below to be sent an email that will enable you to reset your password.\r\n                            </p>\r\n                            <div>\r\n                                <label>\r\n                                    Username or Email\r\n                                </label>\r\n                                <TextInput field={[username, setUsername]}></TextInput>\r\n                            </div>\r\n                            <button class=\"btn btn-default\" type=\"button\" onClick={cancelClicked}>Cancel</button>\r\n                            <button class=\"btn btn-primary\" type=\"submit\">Reset Password</button>\r\n                        </div>\r\n                    </div>\r\n                </form>\r\n            </Match>\r\n            <Match when={screen() == \"completed\"}>\r\n                <div>\r\n                    <h2>\r\n                        Next steps ...\r\n                    </h2>\r\n                    <p>\r\n                        We have sent a password reset email to the address associated with your account.\r\n                    </p>\r\n                    <p>\r\n                        Please follow the instructions in the email to complete the password reset process.\r\n                    </p>\r\n                    <button type=\"button\" class=\"btn btn-default\" onClick={closeClicked}>Close</button>\r\n                </div>\r\n            </Match>\r\n            <Match when={screen() == \"error\"}>\r\n                <div>\r\n                    <h2>\r\n                        Error\r\n                    </h2>\r\n                    <p>\r\n                        Unfortunately we were not able to complete that action at this time.\r\n                    </p>\r\n                    <p>\r\n                        Please try again or contact Iian Neill, the <a href=\"mailto:webmaster@artrenewal.org\">ARC Webmaster</a>.\r\n                    </p>\r\n                    <p>\r\n                        <button class=\"btn btn-primary\" type=\"button\" onClick={retryClicked}>OK</button>\r\n                    </p>\r\n                </div>\r\n            </Match>\r\n        </Switch>\r\n    </div>\r\n    );\r\n}","import { Component, createSignal, Show } from \"solid-js\";\r\nimport { UserSession } from \"../types\";\r\nimport { TextInput } from \"../components/form-controls\";\r\nimport { FormCheck, Offcanvas } from \"solid-bootstrap\";\r\nimport { ForgotPassword } from \"./forgot-password\";\r\nimport { fetchGet } from \"../library/common\";\r\n\r\nexport type LoginProps = {\r\n    onCancel: () => void;\r\n    onSuccess: (session: UserSession) => void;\r\n    onRegistrationRequired: () => void;\r\n};\r\n\r\nexport const Login : Component<LoginProps> = (props) => {\r\n    const [showForgotPasswordModal, setShowForgotPasswordModal] = createSignal<boolean>(false);\r\n    const [error, setError] = createSignal<string>(\"\");\r\n    const [username, setUsername] = createSignal<string>(\"\");\r\n    const [password, setPassword] = createSignal<string>(\"\");\r\n    const [attempts, setAttempts] = createSignal<number>(0);\r\n    const [remember, setRemember] = createSignal<boolean>(false);\r\n    const maxAttempts = 5;\r\n    const getModel = () => {\r\n        return {\r\n            username: username(),\r\n            password: password(),\r\n            remember: remember(),\r\n            returnUrl: \"\"\r\n        };\r\n    };\r\n    const canceClicked = (e: Event) => {\r\n        e.preventDefault();\r\n        props.onCancel();\r\n    }\r\n    const login = async () => {\r\n        const model = getModel();\r\n        const response = await fetchGet(\"/Forums/User/LoginJson\", model);\r\n        const json = await response.json();\r\n        if (!json.Success) {\r\n            setError(\"Username or password did not match. Please try again.\");\r\n            return;\r\n        }\r\n        const data = json.Data;\r\n        if (data.registrationRequired) {\r\n            props.onRegistrationRequired();\r\n            return;\r\n        }\r\n        props.onSuccess({\r\n            isLoggedIn: true,\r\n            isRegistered: true,\r\n            member: data.member,\r\n            communityMember: data.communityMember\r\n        });\r\n    };\r\n    \r\n    const forgotPasswordClicked = (e: Event) => {\r\n        openForgotPassword();\r\n    };\r\n    const openForgotPassword = () => {\r\n        setShowForgotPasswordModal(true);\r\n    };\r\n    const closeForgotPassword = () => {\r\n        setShowForgotPasswordModal(false);\r\n    };\r\n    const forgotPasswordCompleted = () => {\r\n        closeForgotPassword();\r\n        props.onCancel();\r\n    };\r\n    const onSubmit = async (e: Event) => {\r\n        e.preventDefault();\r\n        await login();\r\n    };\r\n    return (\r\n        <>\r\n            <Show when={error()}>\r\n                <div style=\"color: red;\">\r\n                    {error()}\r\n                </div>    \r\n            </Show>\r\n            <Show when={attempts() > 0}>\r\n                <div>\r\n                    You have <b>{maxAttempts - attempts()} more attempts</b> to log in before your account is locked for 24 hours.\r\n                </div>\r\n            </Show>\r\n            <form onSubmit={onSubmit}>\r\n                <div>\r\n                    <label>\r\n                        Username\r\n                    </label>\r\n                    <TextInput field={[username, setUsername]}></TextInput>\r\n                </div>\r\n                <div>\r\n                    <label>\r\n                        Password\r\n                    </label>\r\n                    <input\r\n                        type=\"password\"\r\n                        class=\"form-control\"\r\n                        value={password()}\r\n                        onChange={(e) => setPassword(e.currentTarget.value)} />\r\n                </div>\r\n                <div>\r\n                    <FormCheck checked={remember()} onChange={() => setRemember(!remember()) }></FormCheck> Stay logged in?\r\n                </div>\r\n                <div>\r\n                    <a onClick={forgotPasswordClicked}>Forgot password?</a>\r\n                </div>\r\n                <div>\r\n                    <button type=\"button\" class=\"btn btn-default mr-20\" onClick={canceClicked}>Cancel</button>\r\n                    <button type=\"submit\" class=\"btn btn-primary\">Login</button>\r\n                </div>\r\n            </form>\r\n            <Offcanvas show={showForgotPasswordModal()} placement=\"end\" onHide={closeForgotPassword}>\r\n                <Offcanvas.Header closeButton>\r\n                    <Offcanvas.Title>Forgot Password</Offcanvas.Title>\r\n                </Offcanvas.Header>\r\n                <Offcanvas.Body>\r\n                    <ForgotPassword onCancel={closeForgotPassword} onCompleted={forgotPasswordCompleted}></ForgotPassword>\r\n                </Offcanvas.Body>\r\n            </Offcanvas>\r\n        </>\r\n    );\r\n};","import { Component, createSignal, onMount, Show } from \"solid-js\";\r\nimport { LanguageSelector } from \"../components/universal/language-selector/index\";\r\nimport { A, useNavigate } from \"@solidjs/router\";\r\nimport { Offcanvas } from \"solid-bootstrap\";\r\nimport { Login } from \"./login\";\r\nimport { UserSession } from \"../types\";\r\nimport { CMS } from \"../components/cms/cms\";\r\nimport { createStore } from \"solid-js/store\";\r\nimport { loadCms } from \"../app\";\r\n\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\nexport const JetMenu : Component<any> = () => {\r\n    const navigate = useNavigate();\r\n    const [state, setState] = createStore<State>({ isContentReady: false });\r\n    const [session, setSession] = createStore<UserSession>({\r\n        isAdmin: false,\r\n        canApply: false,\r\n        itemCount: 0,\r\n        cultureCode: \"\",\r\n        isLoggedIn: false,\r\n        isRegistered: false,\r\n        isHighSchoolStudent: false,\r\n        member: {\r\n            id: 0, firstName: \"\", lastName: \"\", permissions: [],\r\n            memberType: \"\", username: \"\"\r\n        }    \r\n    } as UserSession);\r\n    const hasPermission = (permission: string) => {\r\n        if (!session.isLoggedIn) return false;\r\n        return session.member?.permissions?.some(p => p == \"Everything\" || permission == p);\r\n    };\r\n    const logoutClicked = async (e: Event) => {\r\n        e.preventDefault();\r\n        const response = await fetch(\"/SalonApplication/Salon/LogoutJson\");\r\n        const json = await response.json();\r\n        if (!json.Success) return;\r\n        setSession({ isLoggedIn: false });\r\n    };\r\n    const loginClicked = (e: Event) => {\r\n        e.preventDefault();\r\n        handleOpenLogin();\r\n    };\r\n    const [showLogin, setShowLogin] = createSignal(false);\r\n    const handleOpenLogin = () => setShowLogin(true);\r\n    const handleCloseLogin = () => setShowLogin(false);\r\n    const onLoginCancel = () => handleCloseLogin();\r\n    const onLoginSuccess = (session: UserSession) => {\r\n        handleCloseLogin();\r\n        setSession(session);\r\n    };\r\n    const loadApplicationStatus = async () => {\r\n        const res = await fetch(\"/SalonApplication/Salon/GetApplicationStatusJson\");\r\n        const json = await res.json();\r\n        if (!json.Success) {\r\n            setSession({\r\n                isAdmin: false,\r\n                cultureCode: \"\",\r\n                isRegistered: false,\r\n                isLoggedIn: false,\r\n                canApply: false\r\n            });\r\n            return;\r\n        }\r\n        setSession(json.Data);\r\n    };\r\n    const onLoginRegistrationRequired = () => {\r\n        handleCloseLogin();\r\n        setSession({\r\n            isLoggedIn: true,\r\n            isRegistered: false\r\n        });\r\n        navigate(\"/step-1\");\r\n    };\r\n    onMount(async () => {\r\n        await loadCms([\r\n            \"nav::apply\",\r\n            \"nav::introduction\",\"nav::my-profile\",\"nav::my-artworks\",\r\n            \"nav::my-artworks\",\"nav::rules\",\"nav::categories\",\r\n            \"nav::awards\",\"nav::jurors\",\"nav::sponsors\",\r\n            \"nav::about-us\",\"nav::log-out\",\"nav::log-in\",\"nav::welcome-username\"\r\n        ]);\r\n        await loadApplicationStatus();\r\n        setState({ isContentReady: true });\r\n    })\r\n    return (\r\n    <> \r\n        <div class=\"navbar-fixed-top salon-navbar\">\r\n            <Show when={state.isContentReady}>\r\n                <ul class=\"jetmenu blue\">\r\n                    <li class=\"left\">\r\n                        <a href=\"/\"><span class=\"fa fa-home\"></span></a>\r\n                    </li>\r\n                    <Show when={session.isLoggedIn}>\r\n                        <Show when={session.isRegistered}>\r\n                            <li>\r\n                                <A href={\"/introduction\"}><CMS text id=\"nav::introduction\">Introduction</CMS></A>\r\n                            </li>\r\n                            <Show when={session.canApply}>\r\n                                <li>\r\n                                    <A href={\"/step-1\"}><CMS text id=\"nav::my-profile\">My Profile</CMS></A>\r\n                                </li>\r\n                            </Show>\r\n                            <li>\r\n                                <A href={\"/step-2\"}><CMS text id=\"nav::my-artworks\">My Artworks</CMS></A>\r\n                            </li>\r\n                        </Show>\r\n                    </Show>\r\n                    <Show when={session.canApply}>\r\n                        <li>\r\n                            <A href={\"/\"}><CMS text id=\"nav::apply\">Apply</CMS></A>\r\n                        </li>\r\n                    </Show>\r\n                    <li>\r\n                        <A href={\"/rules\"}><CMS text id=\"nav::rules\">Rules</CMS></A>\r\n                    </li>\r\n                    <li>\r\n                        <A href={\"/categories\"}><CMS text id=\"nav::categories\">Categories</CMS></A>\r\n                    </li>\r\n                    <li>\r\n                        <A href={\"/awards\"}><CMS text id=\"nav::awards\">Awards</CMS></A>\r\n                    </li>\r\n                    <li>\r\n                        <A href={\"/jurors\"}><CMS text id=\"nav::jurors\">Jurors</CMS></A>\r\n                    </li>\r\n                    <li>\r\n                        <A href={\"/sponsors\"}><CMS text id=\"nav::sponsors\">Sponsors</CMS></A>\r\n                    </li>\r\n                    <li>\r\n                        <a href={\"/AboutUs/Staff\"}><CMS text id=\"nav::about-us\">About Us</CMS></a>\r\n                    </li>\r\n                    <li class=\"right\" style=\"padding: 8px;\">\r\n                        <LanguageSelector cultureCode={session.cultureCode?.substring(0,2)} />\r\n                    </li>\r\n                    <Show when={session.isLoggedIn}>\r\n                        <li>\r\n                            <span onClick={logoutClicked}><CMS text id=\"nav::log-out\">Log Out</CMS></span>\r\n                        </li>\r\n                        <Show when={session.isRegistered}>\r\n                            <li>\r\n                                <A href={\"/step-3\"}>\r\n                                    <span class=\"glyphicon glyphicon-shopping-cart\">\r\n                                        <Show when={session.itemCount}>\r\n                                            <span class=\"badge\" style=\"background-color: red; font-size: 0.75em;\">{session.itemCount}</span>\r\n                                        </Show>\r\n                                    </span>\r\n                                </A>\r\n                            </li>\r\n                        </Show>\r\n                    </Show>\r\n                    <Show when={!session.isLoggedIn}>\r\n                        <li>\r\n                            <span onClick={loginClicked}><CMS text id=\"nav::log-in\">Log In</CMS></span>\r\n                        </li>\r\n                    </Show>\r\n                    <Show when={session.isLoggedIn}>\r\n                        <li>\r\n                            <p class=\"nav-account hidden-md hidden-sm hidden-xs\">\r\n                                <CMS text id=\"nav::welcome-username\" data={{ username: session.member.username }}>Welcome, {session.member.username}</CMS>\r\n                            </p>\r\n                        </li>\r\n                    </Show>\r\n                    <li>\r\n                    </li>\r\n                </ul>\r\n                <Offcanvas show={showLogin()} placement=\"end\" onHide={handleCloseLogin}>\r\n                    <Offcanvas.Header closeButton>\r\n                        <Offcanvas.Title><CMS id=\"nav::log-in\">Log In</CMS></Offcanvas.Title>\r\n                    </Offcanvas.Header>\r\n                    <Offcanvas.Body>\r\n                        <Login\r\n                            onCancel={onLoginCancel}\r\n                            onSuccess={onLoginSuccess}\r\n                            onRegistrationRequired={onLoginRegistrationRequired}\r\n                        />\r\n                    </Offcanvas.Body>\r\n                </Offcanvas>\r\n            </Show>\r\n        </div>\r\n    </>\r\n    );\r\n};","import { A } from \"@solidjs/router\";\r\nimport { MainSlider } from \"../components/main-slider\";\r\nimport { Img } from \"../components/universal/image\";\r\n\r\nexport const LogoSlider = () =>\r\n    {\r\n        return (\r\n            <>\r\n                <div class=\"logo-container\">\r\n                    <div class=\"logo-cell\">\r\n                        <a href=\"/\">\r\n                            <img\r\n                                class=\"img-responsive\"\r\n                                src=\"https://www.artrenewal.org/secureimages/ContentSection/3/Images/859f2268-1cef-43d6-bec9-35d3c3a68038.jpg?w=951&h=303&mode=crop\"\r\n                            />\r\n                        </a>\r\n                    </div>\r\n                    <div class=\"slider-cell\">\r\n                        <div style=\"background-color: #333; color: darkgoldenrod; \">\r\n                            <div class=\"slick\" style=\"height: 100%;\">\r\n                                <div class=\"slide\">\r\n                                    <figure>\r\n                                        <A href=\"/\">\r\n                                            <Img\r\n                                                src=\"/Content/232/58f0c3f5-fd19-4135-b465-a62c5320c26e.jpg\"\r\n                                                width={951} height={303} mode=\"crop\"\r\n                                                style=\"width: 951px; height: 303px;\"\r\n                                                class=\"img-responsive\"\r\n                                            />\r\n                                        </A>\r\n                                        <figcaption>\r\n                                            \r\n                                        </figcaption>\r\n                                    </figure>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                {/* <div class=\"logo-container\">\r\n                    <div class=\"logo-cell\">\r\n                        <a href=\"/\">\r\n                            <Img class=\"img-responsive\" src={\"/Media/Elements/arc-logo4.jpg\"} w={951} h={303} mode=\"crop\" />\r\n                        </a>\r\n                    </div>\r\n                    <div class=\"slider-cell\">\r\n                        <MainSlider />\r\n                    </div>\r\n                </div> */}\r\n            </>\r\n        );\r\n    };","import { Component } from \"solid-js\";\r\n\r\nexport const Header: Component = () =>\r\n{\r\n    return (\r\n        <div></div>\r\n    );\r\n}","import { Component, createSignal, For, onMount, Show } from \"solid-js\";\r\nimport { Blog } from \"../Types\";\r\n\r\nexport const LatestBlogs: Component = () => {\r\n    const [blogs, setBlogs] = createSignal<Blog[]>([]);\r\n    const [firstBlog, setFirstBlog] = createSignal<Blog>();\r\n    const getLatestBlogs = async () => {\r\n        const response = await fetch(\"/Footer/GetLatestBlogsJson\");\r\n        const json = await response.json();\r\n        return json;\r\n    };\r\n    const toDate = (jsonDate: string) => new Date(parseInt(jsonDate.substr(6)));\r\n    const loadBlogs = async () => {\r\n        const response = await getLatestBlogs();\r\n        console.log(\"LatestBlogs\", { response });\r\n        if (!response.Success) return;\r\n        const blogs = response.Data.map((x: any) => ({ ...x, dateAddedUTC: toDate(x.dateAddedUTC) }));\r\n        setBlogs(blogs);\r\n        setFirstBlog(blogs[0]);\r\n    };\r\n    onMount(async () => {\r\n        await loadBlogs();\r\n    });\r\n    return (\r\n        <Show when={firstBlog()}>\r\n            <div>\r\n                Show all posts for <a href={ \"/Blog/Month/\" + firstBlog()!.dateAddedUTC?.getFullYear() + (firstBlog()!.dateAddedUTC.getMonth() + 1) }>\r\n                    {firstBlog()!.dateAddedUTC.toLocaleDateString(\"en-US\", { year: 'numeric', month: 'long' })}\r\n                </a>\r\n                <For each={blogs()}>{(blog) => \r\n                <>\r\n                    <div>\r\n                        <h4>\r\n                            <a href={\"/Blog/Index/\" + blog.id}>\r\n                                {blog.title}\r\n                            </a>\r\n                        </h4>\r\n                        <p>\r\n                            on {blog.dateAddedFormatted}\r\n                        </p>\r\n                    </div>\r\n                </>\r\n                }</For>\r\n            </div>\r\n        </Show>\r\n    );\r\n};","import { Component, createSignal, onMount, Show } from \"solid-js\";\r\nimport { Img } from \"../components/universal/image\";\r\nimport { LatestBlogs } from  \"./latest-blogs\";\r\n\r\ntype Image = {\r\n    URL: string;\r\n};\r\ntype Ad = {\r\n    URL: string;\r\n    Image: Image;\r\n};\r\n\r\nexport const Footer : Component = () => {\r\n    const [ad, setAd] = createSignal<Ad>();\r\n    const getAd = async () => {\r\n        const response = await fetch(\"/Home/GetFooterAdsJson\")\r\n        const json = await response.json();\r\n        return json;\r\n    };\r\n    const loadAd = async () => {\r\n        const response = await getAd();\r\n        if (!response.Success) return;\r\n        setAd(response.Data[0]);\r\n    };\r\n    onMount(async() => {\r\n        await loadAd();\r\n    });\r\n    return (\r\n        <div style=\"margin:0; background-color: #928f7d;\">\r\n            <footer style=\"padding-top: 20px; color: #efefef; padding-bottom: 10px; font-size: 0.85em;\">\r\n                <div class=\"container\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-12\">\r\n                            <h2 style=\"font-size: 5em; font-weight: 600; margin-bottom: -10px; letter-spacing: -0.1em;\">\r\n                                ARC\r\n                            </h2>\r\n                            <p style=\"font-size: 1.5em;\">\r\n                                Leading the revival of realism\r\n                            </p>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-3\">\r\n                            <div style=\"width: 250px; height: 250px;\">\r\n                                <a href=\"/Calendar/Search\">\r\n                                    <Img src={\"/Content/211/60e0bf88-14c5-4f18-b1fb-1e1281ea6794.jpg\"} width={250} height={250} mode=\"crop\" style=\"width: 100%;\" />\r\n                                </a>\r\n                                {/* <Show when={ad()}>\r\n                                    <a href={ad()?.URL}>\r\n                                        <Img src={ad()?.Image.URL + \"?w=250&h=250&mode=crop\"} style=\"width: 100%;\" />\r\n                                    </a>\r\n                                </Show>\r\n                                <Show when={!ad()}>\r\n                                    <a href=\"/Salon2016/Home/Exhibition\">\r\n                                        <Img src={\"/Ad/27/c78ea09d-78be-45f4-851b-28ed6d9f1474.jpg\"} width={250} height={250} mode=\"crop\" style=\"width: 100%;\" />\r\n                                    </a>\r\n                                </Show> */}\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"col-md-9\">\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-4\">\r\n                                    <h3 style=\"font-family: 'Oswald'; padding-bottom: 20px; margin: 0;\">\r\n                                        Latest News\r\n                                    </h3>\r\n                                    <LatestBlogs></LatestBlogs>\r\n                                    <p style=\"margin-top: 10px;\">\r\n                                        <a href=\"/Calendar/Search\">\r\n                                            View our Events Calendar\r\n                                        </a>\r\n                                    </p>\r\n                                    <p>\r\n                                    Blog: <span style=\"margin-right: 10px;\"><span style=\"color: #f26522;\" class=\"fa fa-rss\"></span> <a href=\"/Feed/Blog?format=rss\">RSS</a></span> <span><span style=\"color: #f26522;\" class=\"fa fa-rss\"></span> <a href=\"/Feed/Blog?format=atom\">Atom</a></span>\r\n                                    </p>\r\n                                    <p>\r\n                                        Recent Additions: <span style=\"margin-right: 10px;\"><span style=\"color: #f26522;\" class=\"fa fa-rss\"></span> <a href=\"/Feed/RecentAdditions?format=rss\">RSS</a></span> <span><span style=\"color: #f26522;\" class=\"fa fa-rss\"></span> <a href=\"/Feed/RecentAdditions?format=atom\">Atom</a></span>\r\n                                    </p>\r\n                                </div>\r\n                                <div class=\"col-md-4\">\r\n                                    <h3 style=\"font-family: 'Oswald'; padding-bottom: 20px; margin: 0;\">\r\n                                    Sitemap\r\n                                    </h3>\r\n                                    <h4>\r\n                                        <a href=\"/AboutUs/Home\">About Us</a>\r\n                                    </h4>\r\n                                    <h4>\r\n                                        <a href=\"/News/Home\">News</a>\r\n                                    </h4>\r\n                                    <h4>\r\n                                        <a href=\"/News/RecentAdditions\">Recent Additions</a>\r\n                                    </h4>\r\n                                    <h4>\r\n                                        <a href=\"/Museum/Home\">Museum</a>\r\n                                    </h4>\r\n                                    <h4>\r\n                                        <a href=\"/Education/Home\">Education</a>\r\n                                    </h4>\r\n                                    <h4>\r\n                                        <a href=\"/Competition/Home\">Competitions</a>\r\n                                    </h4>\r\n                                    <h4>\r\n                                        <a href=\"/Store/Home\">Store</a>\r\n                                    </h4>\r\n                                    <h4>\r\n                                        <a href=\"/MyARC/Home/Index\">My ARC</a>\r\n                                    </h4>\r\n                                </div>\r\n                                <div class=\"col-md-4\">\r\n                                    <h3 style=\"font-family: 'Oswald'; padding-bottom: 20px; margin: 0;\">Contact Us</h3>\r\n                                    <address>\r\n                                        Art Renewal Center<br />\r\n                                        100 Markley Street<br />\r\n                                        Port Reading, NJ 07064<br /><br />\r\n                                        <a href=\"mailto:feedback@artrenewal.org\">feedback@artrenewal.org</a><br /><br />\r\n                                        (+1) 732-636-2060 ext 619\r\n                                    </address>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\" style=\"margin-top: 20px;\">\r\n                        <div class=\"col-md-6\">\r\n                            <p>\r\n                                &copy; 1999-{new Date().getFullYear()} Art Renewal Center. All rights reserved.\r\n                            </p>\r\n                        </div>\r\n                        <div class=\"col-md-6\" style=\"font-size: 2em; text-align: right;\">\r\n                            <a class=\"hvr-float\" href=\"https://www.facebook.com/Art-Renewal-Center-247051022002707\"><img style=\"height: 1.25em;\" src=\"/Images/icons/facebook.svg\" /></a> <a class=\"hvr-float\" href=\"https://twitter.com/ArtRenewalCtr\"><img style=\"height: 1.25em;\" src=\"/Images/icons/twitter.svg\" /></a> <a class=\"hvr-float\" href=\"https://www.instagram.com/artrenewalcenter/?hl=en\"><img style=\"height: 1.25em;\" src=\"/Images/icons/instagram.svg\" /></a> <a class=\"hvr-float\" href=\"https://plus.google.com/103209837780530093850\"><img style=\"height: 1.25em;\" src=\"/Images/icons/google-plus.svg\" /></a>\r\n                        </div>\r\n                    </div>\r\n                    <Img src=\"positivessl_trust_seal_md_167x42.png\" />\r\n                </div>\r\n            </footer>\r\n        </div>\r\n    );\r\n};","import { Accessor, Component, Show, onMount } from \"solid-js\"\r\nimport { createStore } from \"solid-js/store\";\r\nimport { CMS } from \"./cms/cms\";\r\nimport { loadCms } from \"../app\";\r\n\r\ntype Model = {\r\n    cataloguesOrdered: string;\r\n}\r\ntype Props = {\r\n    catalogues: Accessor<string>;\r\n    onChange: (ordered: string) => Promise<string|undefined>;\r\n}\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\nexport const CatalogueOrders: Component<Props> = (props) => {\r\n    const [state, setState] = createStore<State>({ isContentReady: false });\r\n    const [model, setModel] = createStore<Model>({\r\n        cataloguesOrdered: props.catalogues()\r\n    } as Model);\r\n    const onSubmit = (e: Event) => {\r\n        e.preventDefault();\r\n        props.onChange(model.cataloguesOrdered);\r\n    }\r\n    onMount(async () => {\r\n        await loadCms([\r\n            \"salon-application/checkout::cost-of-first-catalogue-included\",\r\n            \"salon-application/checkout::preorder-copies\",\r\n            \"button::update\"\r\n        ]);\r\n        setState({ isContentReady: true });\r\n    })\r\n    return (\r\n        <div>\r\n            <Show when={state.isContentReady}>\r\n                <form onSubmit={onSubmit}>\r\n                    <p style=\"clear:both;\">\r\n                        <CMS id=\"salon-application/checkout::cost-of-first-catalogue-included\">\r\n                            <b>Note:</b> the first publication ordered is included in the cost of the entry fee (for non-student entrants), not including the shipping. If you would prefer not to receive any publications, set the amount to zero.                        \r\n                        </CMS>\r\n                    </p>\r\n                    <div style=\"float: left;\">\r\n                        <CMS text id=\"salon-application/checkout::preorder-copies\">Pre-order copy/copies of the ARC Salon publication</CMS>\r\n                        <input\r\n                            type=\"number\"\r\n                            class=\"form-control additional-catalogues-ordered\"\r\n                            style=\"margin-top: -0.25em; width: 65px;\"\r\n                            min={0} max={2}\r\n                            value={model.cataloguesOrdered}\r\n                            onInput={(e) => setModel(\"cataloguesOrdered\", e.currentTarget.value)}\r\n                        /> \r\n                    </div>\r\n                    <button style=\"margin-left: 20px; margin-top: -15px;\" class=\"btn btn-primary\" type=\"submit\">\r\n                        <CMS id=\"button::update\">Update</CMS>\r\n                    </button>\r\n                </form>\r\n            </Show>\r\n        </div>\r\n    )\r\n}","\r\nimport { Component, splitProps } from \"solid-js\";\r\n\r\ninterface TextBoxProps extends Record<any,any> {\r\n    value: string;\r\n    onInput: (value: string) => void;\r\n}\r\n\r\nexport const TextBox : Component<TextBoxProps>=(props) => {\r\n    const [local, others] = splitProps(props, [\"value\", \"onInput\"]);\r\n    return (<input \r\n        type=\"text\"\r\n        class=\"form-control\"\r\n        value={local.value}\r\n        onInput={(e) => local.onInput(e.currentTarget.value)}\r\n        {...others}\r\n    />)\r\n}","import { Component, For } from \"solid-js\";\r\nimport { ListItem } from \"../types\";\r\n\r\ntype OptionsProps = { list: ListItem[]; }\r\nexport const Options : Component<OptionsProps> = (props) => <For each={props.list}>{(item) => <option value={item.Value}>{item.Text}</option>}</For>;","import { Component, createEffect, splitProps } from \"solid-js\";\r\nimport { createStore } from \"solid-js/store\";\r\nimport { ListItem } from \"../types\";\r\nimport { Options } from \"./options\";\r\n\r\ninterface SelectProps extends Record<any, any> {\r\n    value: string;\r\n    onInput: (value: string) => void;\r\n    list: ListItem[];\r\n}\r\ntype Model = {\r\n    value: string;\r\n    list: ListItem[];\r\n}\r\nexport const Select : Component<SelectProps> = (props) => {\r\n    const [local, others] = splitProps(props, [\"style\"]);\r\n    const [model, setModel] = createStore<Model>({\r\n        value: \"\",\r\n        list: []\r\n    });\r\n    createEffect(() => {\r\n        if (props.list) {\r\n            setModel({ list: props.list});\r\n            setModel({ value: props.value });\r\n        } else {\r\n            setModel({ list: [] });\r\n        }\r\n    });\r\n    createEffect(() => {\r\n        if (props.value) {\r\n            setModel({ value: props.value });\r\n        } else {\r\n            setModel({ value: \"\" });\r\n        }\r\n    });\r\n    return (<select class=\"form-control\"\r\n        style={local.style}\r\n        value={model.value}\r\n        {...others}\r\n        onInput={(e) => props.onInput(e.currentTarget.value)}><Options list={model.list} /></select>)\r\n}","import { Accessor, Component, JSXElement, Match, Show, Switch, createEffect, onMount } from \"solid-js\"\r\nimport { Address, ListItem } from \"../types\"\r\nimport { Required } from \"./universal/required-icon\"\r\nimport { ErrorMessage, useForm } from \"./universal/validation\"\r\nimport { createStore } from \"solid-js/store\"\r\nimport { TextBox } from \"./text-box\"\r\nimport { Select } from \"./select\"\r\nimport { Options } from \"./options\"\r\nimport { CMS, plainText } from \"./cms/cms\"\r\nimport { getText, loadCms } from \"../app\"\r\n\r\ntype Props = {\r\n    model: Address;\r\n    onChange: (address: any) => Promise<string|undefined>;\r\n    countries: Accessor<ListItem[]>;\r\n}\r\ntype Resources = {\r\n    countries: ListItem[];\r\n}\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\nexport const AddressForm : Component<Props> = (props) => {\r\n    const { formSubmit, validate, errors } = useForm({\r\n        errorClass: \"error-input\"\r\n    });\r\n    const [state, setState] = createStore<State>({\r\n        isContentReady: false\r\n    });\r\n    const [resources, setResources] = createStore<Resources>({\r\n        countries: props.countries()\r\n    });\r\n    const requiredListItem = ({ value }: any) => {\r\n        console.log(\"requiredListItem\", { value });\r\n        return (!value || value == \"null\") && \"Please select from the list\";\r\n    }\r\n    const [model, setModel] = createStore<Address>({\r\n        streetLine1: props.model.streetLine1,\r\n        streetLine2: props.model.streetLine2,\r\n        city: props.model.city,\r\n        stateName: props.model.stateName,\r\n        countryId: props.model.countryId,\r\n        postalCode: props.model.postalCode\r\n    });\r\n    const ModelSelect : Component<{ field: keyof Address, list: ListItem[]; label?: string; id?: string;  required?: boolean; }> = (props) =>\r\n    <>\r\n        <Show when={props.id}>\r\n            <label>\r\n                <Show when={props.required}><Required /></Show>\r\n                {getText(props.id as string, props.label as string)}\r\n            </label>\r\n        </Show>\r\n        <Show when={!props.id}>\r\n            <label>\r\n                <Show when={props.required}><Required /></Show>\r\n                {props.label || props.field}\r\n            </label>\r\n        </Show>\r\n        <Switch>\r\n            <Match when={props.required}>\r\n                <select\r\n                    value={model[props.field]}\r\n                    onInput={(e) => setModel(props.field, e.currentTarget.value)}\r\n                    name={props.field}\r\n                    required\r\n                    use:validate={[requiredListItem]}\r\n                    class=\"form-control\">\r\n                    <Options list={props.list} />\r\n                </select>\r\n                <ErrorMessage error={errors[props.field]} />\r\n            </Match>\r\n            <Match when={!props.required}>\r\n                <Select value={model[props.field] as string} list={props.list} onInput={(value) => setModel(props.field, value)} />        \r\n            </Match>\r\n        </Switch>\r\n    </>;\r\n    type ModelTextBoxProps = { field: keyof Address; label?: string|(() => JSXElement); id?: string; format?: string; required?: boolean; placeholder?: string; };\r\n    const ModelTextBox : Component<ModelTextBoxProps> = (props) => {\r\n        return ( \r\n        <>\r\n            <Show when={props.id}>\r\n                <label>\r\n                    <Show when={props.required}><Required /></Show>\r\n                    {getText(props.id as string, props.label as string)}\r\n                </label>\r\n            </Show>\r\n            <Show when={!props.id}>\r\n                <Show when={props.label}>\r\n                    <Show when={props.label instanceof String}>\r\n                        <label>\r\n                            <Show when={props.required}><Required /></Show>\r\n                            {props.label as string}\r\n                        </label>\r\n                    </Show>\r\n                    <Show when={!(props.label instanceof String)}>\r\n                        <label>\r\n                            <Show when={props.required}><Required /></Show>\r\n                            {(props.label as () => JSXElement)()}\r\n                        </label>\r\n                    </Show>\r\n                </Show>\r\n                <Show when={!props.label}>\r\n                    <label>\r\n                        <Show when={props.required}><Required /></Show>\r\n                        {props.field}\r\n                    </label>\r\n                </Show>\r\n            </Show>\r\n            <Switch>\r\n                <Match when={props.required}>\r\n                    <input\r\n                        value={model[props.field] as string}\r\n                        class=\"form-control\"\r\n                        name={props.field}\r\n                        placeholder={props.placeholder}\r\n                        required\r\n                        use:validate={[]}\r\n                        onInput={(e) => setModel(props.field, e.currentTarget.value)}\r\n                    />\r\n                    <ErrorMessage error={errors[props.field]} />\r\n                </Match>\r\n                <Match when={!props.required}>\r\n                    <TextBox value={model[props.field] as string} onInput={(value) => setModel(props.field, value)} />    \r\n                </Match>    \r\n            </Switch>\r\n        </>\r\n        )\r\n    };\r\n    const onSubmit = () => {\r\n        props.onChange(model);\r\n    }\r\n    onMount(async () => {\r\n        const ids = [\r\n            \"button::save-changes\",\"form::shipping-address/heading\",\r\n            \"label::street-line-1\",\"label::street-line-2\",\r\n            \"label::state-province\",\"label::city\",\"label::postal-code-zip\",\r\n            \"label::country\"\r\n        ];\r\n        await loadCms(ids);\r\n        setState({ isContentReady: true });\r\n        setModel(props.model);\r\n    });\r\n    return (\r\n        <Show when={state.isContentReady}>\r\n            <div>\r\n                <div>\r\n                    <CMS id=\"form::shipping-address/heading\" text>Shipping Address</CMS>\r\n                </div>\r\n                <form use:formSubmit={onSubmit}>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-6\">\r\n                            <ModelTextBox field=\"streetLine1\" label=\"Street (line 1)\" id=\"label::street-line-1\" required />\r\n                        </div>\r\n                        <div class=\"col-md-6\">\r\n                            <ModelTextBox field=\"streetLine2\" label=\"Street (line 2)\" id=\"label::street-line-2\" />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-6\">\r\n                            <ModelTextBox field=\"city\" label=\"City\" required id=\"label::city\" />\r\n                        </div>\r\n                        <div class=\"col-md-6\">\r\n                            <ModelTextBox field=\"stateName\" label=\"State/Province\" id=\"label::state-province\" required />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-6\">\r\n                            <ModelTextBox field=\"postalCode\" label=\"Post code (ZIP)\" id=\"label::postal-code-zip\" required />\r\n                        </div>\r\n                        <div class=\"col-md-6\">\r\n                            <ModelSelect field=\"countryId\" list={resources.countries} label=\"Country\" id=\"label::country\" required />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-6\">\r\n                            <button class=\"btn btn-primary\" type=\"submit\">\r\n                                <CMS id=\"button::save-changes\" text>Save Changes</CMS>\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                </form>\r\n            </div>\r\n        </Show>\r\n    )\r\n}","import { Button } from \"solid-bootstrap\";\r\nimport { For, Show, createSignal, onMount } from \"solid-js\";\r\nimport { createStore } from \"solid-js/store\";\r\nimport { Progress } from \"../components/progress\";\r\nimport { useRouteData } from \"@solidjs/router\";\r\nimport { Address, ListItem, Step3Data } from \"../types\";\r\nimport { CatalogueOrders } from \"../components/catalogue-orders\";\r\nimport { commitChange, fetchGet, fetchPost } from \"../library/common\";\r\nimport { AddressForm } from \"../components/address-form\";\r\nimport toast from \"solid-toast\";\r\nimport { CMS } from \"../components/cms/cms\";\r\nimport { getText, loadStep3Cms } from \"../app\";\r\nimport { PageLoading } from \"../components/page-loading\";\r\n\r\ntype AddressDto = {\r\n    StreetAddress1: string;\r\n    StreetAddress2: string;\r\n    City: string;\r\n    StateName: string;\r\n    StateId: string;\r\n    PostalCode: string;\r\n    CountryId: string;\r\n}\r\ntype State = {\r\n    isReady: boolean;\r\n    isContentReady: boolean;\r\n}\r\n\r\nexport function Step3Page() {\r\n    const [state, setState] = createStore<State>({ isReady: false, isContentReady: false });\r\n    const [catalogues, setCatalogues] = createSignal<string>(\"\");\r\n    const [address, setAddress] = createStore<Address>({\r\n        streetLine1: \"\",\r\n        streetLine2: \"\",\r\n        city: \"\",\r\n        stateName: \"\",\r\n        postalCode: \"\",\r\n        countryId: \"\"\r\n    });\r\n    const [data, setData] = createStore<Step3Data>({} as Step3Data);\r\n    const [total, setTotal] = createSignal<number>(0);\r\n    const [owing, setOwing] = createSignal<number>(0);\r\n    const [countries, setCountries] = createSignal<ListItem[]>([]);\r\n    const updateTotal = () => {\r\n        const _total: number = data\r\n            .invoice\r\n            .map((x: any) => x.value as number)\r\n            .reduce((sum: number, a: number) => sum + a, 0);\r\n            ;\r\n        setTotal(_total);\r\n        const _owing = _total - (data.salonEntrant.amountPaid || 0);\r\n        setOwing(_owing);\r\n    };\r\n    const onCatalogueOrdersChanged = async (c: string) => {\r\n        const res = await fetchGet(\"/SalonApplication/Salon/UpdateCatalogueOrdersJson\", { catalogues: c });\r\n        const json = await res.json();\r\n        if (!json.Success) {\r\n            const error = getText(\"18th-salon-application/checkout::unable-to-update-number-of-catalogues-error\", \"Unable to update the number of catalogues order at this time.\");\r\n            return await commitError(\"[000] \" + error);\r\n        }\r\n        toast.success(\"The number of catalogues orderered was updated.\");\r\n        setCatalogues(c);\r\n        await updateInvoice();\r\n    };\r\n    const updateAddress = async (address: Address) => {\r\n        const data = {\r\n            StreetAddress1: address.streetLine1,\r\n            StreetAddress2: address.streetLine2,\r\n            City: address.city,\r\n            StateName: address.stateName,\r\n            PostalCode: address.postalCode,\r\n            CountryId: address.countryId\r\n        } as AddressDto;\r\n        console.log(\"updateAddress\", { address, data });\r\n        const res = await fetchPost(\"/SalonApplication/Salon/UpdateAddressJson\", data);\r\n        const json = await res.json();\r\n        if (!json.Success) {\r\n            const error = getText(\"18th-salon-application/checkout::unable-to-update-shipping-address-error\", \"Unable to update the shipping address at this time.\");\r\n            return await commitError(\"[001] \" + error);\r\n        }\r\n        toast.success(\"Your shipping address details have been updated.\");\r\n        await updateInvoice();\r\n    };\r\n    const updateInvoice = async () => {\r\n        const res = await fetch(\"/SalonApplication/Salon/GetInvoiceJson\");\r\n        const json = await res.json();\r\n        if (!json.Success) {\r\n            const error = getText(\"18th-salon-application/checkout::retrieving-latest-invoice-error\", \"There was an error retrieving the latest invoice data.\");\r\n            return await commitError(\"[002] \" + error);\r\n        }\r\n        setData(\"invoice\", json.Data);\r\n        updateTotal();\r\n    };\r\n    const commitError = async (error: string) => {\r\n        await commitChange(\"17th-arc-salon-application/step-3/error\", {\r\n            Error: error\r\n        });\r\n        toast.error(error);\r\n    };\r\n    const paypalClicked = async (e: Event)  => {\r\n        e.preventDefault();\r\n        const res = await fetch(\"/SalonApplication/Salon/InitiatePaypalJson\");\r\n        const json = await res.json();\r\n        if (!json.Success) {\r\n            const error = getText(\"18th-salon-application/checkout::paypal-transaction-error\", \"There was an error on the Paypal site:\");\r\n            return await commitError(\"[003] \" + error +\": \" + json.ErrorMessage);\r\n        }\r\n        window.location.href = json.Data.ApproveUrl;\r\n    };\r\n    const hasOrderedCatalogue = () => !!catalogues() && catalogues() != \"0\";\r\n    onMount(async () => {\r\n        const routeData = await useRouteData() as any;\r\n        await loadStep3Cms();\r\n        setState({ isContentReady: true });\r\n        setData(routeData.data);\r\n        setCatalogues(data.salonEntrant.cataloguesOrdered?.toString());\r\n        const _address = routeData.address as AddressDto;\r\n        setAddress({\r\n            streetLine1: _address.StreetAddress1,\r\n            streetLine2: _address.StreetAddress2,\r\n            stateName: _address.StateName,\r\n            city: _address.City,\r\n            postalCode: _address.PostalCode,\r\n            countryId: _address.CountryId\r\n        });\r\n        setCountries(routeData.resources.countries);\r\n        updateTotal();\r\n        setState({ isReady: true });\r\n    });\r\n    return (\r\n    <>\r\n        <Show when={state.isContentReady} fallback={<PageLoading />}>\r\n            <div>\r\n                <Progress step={3} />\r\n                <Show when={data.invoice?.length}>\r\n                    <div class=\"salon-heading-xxl\" style=\"text-align: center;\">\r\n                        <CMS id=\"18th-salon-application/checkout::invoice\" text>Invoice</CMS>\r\n                    </div>\r\n                    <div class=\"table-responsive\">\r\n                        <table class=\"table table-striped invoice\">\r\n                            <thead>\r\n                                <tr>\r\n                                    <th>\r\n                                        <CMS id=\"18th-salon-application/checkout::description\" text>Description</CMS>\r\n                                    </th>\r\n                                    <th>\r\n                                        <CMS id=\"18th-salon-application/checkout::price\" text>Price</CMS>\r\n                                    </th>\r\n                                </tr>\r\n                            </thead>\r\n                            <tbody>\r\n                                <For each={data.invoice}>{(item: any) =>\r\n                                    <tr>\r\n                                        <td>\r\n                                            {item.description}\r\n                                        </td>\r\n                                        <td>\r\n                                            ${item.value}\r\n                                        </td>\r\n                                    </tr>\r\n                                }</For>\r\n                                <tr>\r\n                                    <td>\r\n                                        <Show when={state.isReady}>\r\n                                            <CatalogueOrders catalogues={catalogues} onChange={onCatalogueOrdersChanged} />\r\n                                        </Show>\r\n                                    </td>\r\n                                    <td>\r\n                                    </td>\r\n                                </tr>\r\n                                <tr>\r\n                                    <td>\r\n                                        <div>\r\n                                            <Show when={state.isReady && hasOrderedCatalogue()}>\r\n                                                <AddressForm model={address} onChange={updateAddress} countries={countries} />\r\n                                            </Show>\r\n                                        </div>\r\n                                    </td>\r\n                                    <td>\r\n                                        \r\n                                    </td>\r\n                                </tr>\r\n                                <Show when={!data.canApply}>\r\n                                    <tr>\r\n                                        <td colspan=\"2\">\r\n                                            <p class=\"m-t-xxl\" style=\"text-align: center; font-size: 2em;\">\r\n                                                <CMS id=\"18th-salon-application/checkout::nothing-in-cart\" text>You have nothing in your cart at this time.</CMS>\r\n                                            </p>\r\n                                        </td>\r\n                                    </tr>\r\n                                </Show>\r\n                            </tbody>\r\n                            <tfoot>\r\n                                <tr>\r\n                                    <th>\r\n                                        <h4 style=\"font-weight: 600;text-align: left;\">\r\n                                            <CMS id=\"18th-salon-application/checkout::total\" text>Total</CMS>\r\n                                        </h4>\r\n                                    </th>\r\n                                    <th>\r\n                                        <h4 style=\"font-weight: 600; text-align: left;\">\r\n                                            ${total()}\r\n                                        </h4>\r\n                                    </th>\r\n                                </tr>\r\n                                <tr>\r\n                                    <th>\r\n                                        <h4 style=\"font-weight: 600;text-align: left;\">\r\n                                            <CMS id=\"18th-salon-application/checkout::amount-already-paid\" text>Amount already paid</CMS>\r\n                                        </h4>\r\n                                    </th>\r\n                                    <th>\r\n                                        <h4 style=\"font-weight: 600; text-align: left;\">\r\n                                            ${data.salonEntrant.amountPaid || 0}\r\n                                        </h4>\r\n                                    </th>\r\n                                </tr>\r\n                                <Show when={owing()}>\r\n                                    <tr>\r\n                                        <th>\r\n                                            <h4 style=\"font-weight: 600; text-align: left;\">\r\n                                                <CMS id=\"18th-salon-application/checkout::amount-owing\" text>Amount owing</CMS>\r\n                                            </h4>\r\n                                            <p style=\"text-align: left;\">\r\n                                                <CMS id=\"18th-salon-application/checkout::amount-due-to-complete-entry\" text>This is the amount due to complete your entry</CMS>\r\n                                            </p>\r\n                                        </th>\r\n                                        <th>\r\n                                            <h4 style=\"color: red; font-weight: 600; text-align: left;\">\r\n                                                ${owing()}\r\n                                            </h4>\r\n                                        </th>\r\n                                    </tr>\r\n                                    <Show when={owing() > 0}>\r\n                                        <tr>\r\n                                            <th></th>\r\n                                            <th style=\"vertical-align: middle;\">\r\n                                                <p>\r\n                                                    <CMS id=\"18th-salon-application/checkout::payment-method\" text>Payment Method</CMS>\r\n                                                </p>\r\n                                                <p>\r\n                                                    <Button variant=\"primary\" style=\"font-size: 1.25em;\" href={\"#/credit-card\"}>\r\n                                                        <CMS text id=\"18th-salon-application/checkout::credit-card\">Credit Card</CMS>\r\n                                                    </Button>\r\n                                                </p>\r\n                                                <p>\r\n                                                    <Button class=\"btn btn-primary\" style=\"font-size: 1.25em;\" onClick={paypalClicked}>\r\n                                                        <CMS text id=\"18th-salon-application/checkout::paypal\">Paypal</CMS>\r\n                                                    </Button>\r\n                                                </p>\r\n                                            </th>\r\n                                        </tr>\r\n                                    </Show>\r\n                                </Show>\r\n                                <Show when={!owing()}>\r\n                                    <tr>\r\n                                        <th>\r\n\r\n                                        </th>\r\n                                        <th>\r\n                                            <h4 style=\"font-weight: 600; text-align: left;\">\r\n                                                <span class=\"glyphicon glyphicon-ok\" style=\"color: green;\"></span>\r\n                                                <CMS id=\"18th-salon-application/checkout::fully-paid\" text>Fully Paid</CMS>\r\n                                            </h4>\r\n                                        </th>\r\n                                    </tr>\r\n                                </Show>\r\n                            </tfoot>\r\n                        </table>\r\n                    </div>\r\n                </Show>\r\n            </div>\r\n        </Show>\r\n    </>);\r\n}","import { createStore } from \"solid-js/store\";\r\nimport { ErrorMessage, useForm } from \"../components/universal/validation\";\r\nimport { For, Show, onMount } from \"solid-js\";\r\nimport { ListItem } from \"../types\";\r\nimport { Button } from \"solid-bootstrap\";\r\nimport { useNavigate, useRouteData } from \"@solidjs/router\";\r\nimport { Progress } from \"../components/progress\";\r\nimport { commitChange, fetchPost, scrollToTop } from \"../library/common\";\r\nimport { Required } from \"../components/universal/required-icon\";\r\nimport toast from \"solid-toast\";\r\nimport { CMS } from \"../components/cms/cms\";\r\nimport { getText, loadCreditCardCms } from \"../app\";\r\nimport { PageLoading } from \"../components/page-loading\";\r\n\r\nexport type CreditCardModel = {\r\n    entrant: {\r\n        amountOwing: number;\r\n        firstName: string;\r\n        lastName: string;\r\n    }\r\n    address: {\r\n        streetLine1: string;\r\n        state: string;\r\n        city: string;\r\n        postalCode: string;\r\n        countryId: string;\r\n    }\r\n    number: string;\r\n    expiry: {\r\n        month: string;\r\n        year: string;\r\n    };\r\n    cvv: string;\r\n}\r\nexport type CreditCardData = {\r\n    resources: {\r\n        countries: ListItem[];\r\n    }\r\n}\r\ntype State = {\r\n    isSaving: boolean;\r\n    isContentReady: boolean;\r\n}\r\nexport function CreditCardPage() {\r\n    const navigate = useNavigate();\r\n    const months = [\r\n        {Text:\"01\",Value:\"1\"},{Text:\"02\",Value:\"2\"},{Text:\"03\",Value:\"3\"},{Text:\"04\",Value:\"4\"},{Text:\"05\",Value:\"5\"},{Text:\"06\",Value:\"6\"},\r\n        {Text:\"07\",Value:\"7\"},{Text:\"08\",Value:\"8\"},{Text:\"09\",Value:\"9\"},{Text:\"10\",Value:\"10\"},{Text:\"11\",Value:\"11\"},{Text:\"12\",Value:\"12\"}\r\n    ];\r\n    const years = [2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035];\r\n    const [data, setData] = createStore<CreditCardData>({\r\n        resources: {\r\n            countries: []\r\n        }\r\n    });\r\n    const [state, setState] = createStore<State>({ isSaving: false, isContentReady: false });\r\n    const [model, setModel] = createStore<CreditCardModel>({\r\n        number: \"\",\r\n        expiry: {\r\n            month: \"\", year: \"\"\r\n        },\r\n        entrant: {\r\n            amountOwing: 0, firstName: \"\", lastName: \"\"\r\n        },\r\n        address: {\r\n            streetLine1: \"\",\r\n            state: \"\",\r\n            city: \"\",\r\n            postalCode: \"\",\r\n            countryId: \"\"\r\n        },\r\n        cvv: \"\"\r\n    });\r\n    const { formSubmit, validate, errors } = useForm({ errorClass: \"error-message\" });\r\n    const commitError = async (error: string) => {\r\n        await commitChange(\"18th-arc-salon-application/credit-card/error\", {\r\n            Error: error\r\n        });\r\n        toast.error(error);\r\n    }\r\n    const stripSpaces = (value: string) => value?.replace(/\\s/g,'');\r\n    const handleSubmit = async () => {\r\n        try {\r\n            if (state.isSaving) {\r\n                toast.error(\"Payment is being submitted ... please wait.\")\r\n                return;\r\n            }\r\n            setState({ isSaving: true });\r\n            const country = data.resources.countries.find(item => item.Value == model.address.countryId);\r\n            const expirationDate = model.expiry.month + \"/\" + model.expiry.year;\r\n            const _model  = {\r\n                Number: stripSpaces(model.number),\r\n                CCV: model.cvv,\r\n                ExpiryYear: model.expiry.year,\r\n                ExpiryMonth: model.expiry.month,\r\n                ExpirationDate: expirationDate,\r\n\r\n                FirstName: model.entrant.firstName,\r\n                LastName: model.entrant.lastName,\r\n\r\n                Address: model.address.streetLine1 || \"\",\r\n                State: model.address.state || \"\",\r\n                City: model.address.city || \"\",\r\n                PostalCode: model.address.postalCode || \"\",\r\n                Country: country?.Text || \"\"\r\n            };\r\n            const post = await fetchPost(\"/SalonApplication/Salon/PayCreditCardJson\", _model);\r\n            const json = await post.json();\r\n            if (!json.Success) {\r\n                return await commitError(\r\n                    getText(\r\n                        \"18th-salon-application/checkout::error/credit-card-payment-issue\",\r\n                        \"There was an issue processing the credit card payment. Please contact the Webmaster, Iian Neill, at: iian.d.neill@gmail.com\"\r\n                    )\r\n                );\r\n            }\r\n            toast.success(\"Your application fees have now been paid!\");\r\n            navigate(\"/payment/processed\");\r\n        } catch(ex) {\r\n            console.log(\"handleSubmit\", { ex });\r\n            await commitError(getText(\r\n                \"18th-salon-application/checkout::error/credit-card-payment-issue\",\r\n                \"There was an issue processing the credit card payment. Please contact the Webmaster, Iian Neill, at: iian.d.neill@gmail.com\"\r\n            ));\r\n        } finally {\r\n            setState({ isSaving: false });\r\n        }\r\n    };\r\n    const cancelClicked = (e: Event) => {\r\n        e.preventDefault();\r\n        toast.success(getText(\"18th-salon-application/checkout::message/credit-card-payment-cancelled\", \"The credit card payment was cancelled at your request.\"));\r\n        navigate(\"/step-3\");\r\n    }\r\n    onMount(async () => {\r\n        const routeData = await useRouteData() as any;\r\n        setData({\r\n            resources: {\r\n                countries: routeData.resources.countries\r\n            }\r\n        });\r\n        setModel({\r\n            entrant: {\r\n                amountOwing: routeData.entrant.amountOwing,\r\n                firstName: routeData.entrant.firstName,\r\n                lastName: routeData.entrant.lastName,\r\n            },\r\n            address: {\r\n                streetLine1: routeData.address.streetLine1,\r\n                state: routeData.address.state,\r\n                city: routeData.address.city,\r\n                postalCode: routeData.address.postalCode,\r\n                countryId: routeData.address.countryId\r\n            }            \r\n        });\r\n        await loadCreditCardCms();\r\n        setState({ isContentReady: true });\r\n        scrollToTop();\r\n    });\r\n    return (\r\n        <div>\r\n            <Progress step={3}></Progress>\r\n            <Show when={state.isContentReady} fallback={<PageLoading />}>\r\n                <h2>\r\n                    <CMS id=\"label::pay-with-credit-card\">Pay with credit card</CMS>\r\n                </h2>\r\n                <form use:formSubmit={handleSubmit}>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-12\">\r\n                            <h4>\r\n                                Total owing: <span style=\"color: red;\"><b>${model.entrant.amountOwing}</b></span>\r\n                            </h4>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-4\">\r\n                            <label>\r\n                                <Required /> <CMS id=\"label::credit-card-number\">Credit Card Number</CMS>\r\n                            </label>\r\n                            <input \r\n                                type=\"text\"\r\n                                value={model.number}\r\n                                name=\"number\"\r\n                                onInput={(e) => setModel(\"number\", e.currentTarget.value)}\r\n                                data-lpignore=\"true\"\r\n                                required\r\n                                use:validate={[]}\r\n                                class=\"form-control\"\r\n                            />\r\n                            <ErrorMessage error={errors.number} />\r\n                        </div>\r\n                        <div class=\"col-md-2\">\r\n                            <label>\r\n                                <Required /> <CMS id=\"label::expiry-mm-yy\">Expiry (MM/YY)</CMS>\r\n                            </label>\r\n                            <div>\r\n                                <span style=\"float: left;\">\r\n                                    <select style=\"width: 75px;\"\r\n                                        class=\"form-control\"\r\n                                        value={model.expiry.month}\r\n                                        name=\"expiryMonth\"\r\n                                        data-lpignore=\"true\"\r\n                                        use:validate={[() => !model.expiry.month && !model.expiry.year ? \"Please enter the month\" : undefined]}\r\n                                        onInput={(e) => setModel(\"expiry\", \"month\", e.currentTarget.value)}>\r\n                                        <For each={months}>{(month: ListItem) => <option value={month.Value}>{month.Text}</option>}</For>\r\n                                    </select>\r\n                                </span>\r\n                                <span style=\"float:right;\">\r\n                                    <select style=\"width: 75px;\"\r\n                                        class=\"form-control\"\r\n                                        value={model.expiry.year}\r\n                                        name=\"expiryYear\"\r\n                                        data-lpignore=\"true\"\r\n                                        use:validate={[() => !model.expiry.month && !model.expiry.year ? \"Please enter the year\" : undefined]}\r\n                                        onInput={(e) => setModel(\"expiry\", \"year\", e.currentTarget.value)}>\r\n                                        <For each={years}>{(year) => <option value={year}>{year}</option>}</For>\r\n                                    </select>\r\n                                </span>\r\n                            </div>\r\n                            <div>\r\n                                <ErrorMessage error={errors.expiryMonth} />\r\n                                <ErrorMessage error={errors.expiryYear} />\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"col-md-2\">\r\n                            <label>\r\n                                <Required /> <CMS id=\"label::ccv\">CVV</CMS>\r\n                            </label>\r\n                            <input type=\"number\"\r\n                                style=\"width: 75px;\"\r\n                                class=\"form-control\"\r\n                                value={model.cvv}\r\n                                data-lpignore=\"true\"\r\n                                required\r\n                                min={1}\r\n                                maxlength={4}\r\n                                name=\"cvv\"\r\n                                use:validate={[]}\r\n                                onInput={(e) => setModel(\"cvv\", e.currentTarget.value)} />\r\n                            <ErrorMessage error={errors.cvv} />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-2\">\r\n                            <label>\r\n                                <CMS id=\"label::first-name\">First name</CMS>\r\n                            </label>\r\n                            <input type=\"text\"\r\n                                maxLength={50}\r\n                                name=\"firstName\"\r\n                                data-lpignore=\"true\"\r\n                                use:validate={[]}\r\n                                class=\"form-control\"\r\n                                value={model.entrant.firstName}\r\n                                onInput={(e) => setModel(\"entrant\", \"firstName\", e.currentTarget.value)}\r\n                            />\r\n                            <ErrorMessage error={errors.firstName} />\r\n                        </div>\r\n                        <div class=\"col-md-2\">\r\n                            <label>\r\n                                <CMS id=\"label::last-name\">Last name</CMS>\r\n                            </label>\r\n                            <input type=\"text\"\r\n                                maxLength={50}\r\n                                name=\"lastName\"\r\n                                data-lpignore=\"true\"\r\n                                use:validate={[]}\r\n                                class=\"form-control\"\r\n                                value={model.entrant.lastName}\r\n                                onInput={(e) => setModel(\"entrant\", \"lastName\", e.currentTarget.value)}\r\n                            />\r\n                            <ErrorMessage error={errors.lastName} />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-4\">\r\n                            <label>\r\n                                <CMS id=\"label::street\">Street</CMS>\r\n                            </label>\r\n                            <input type=\"text\"\r\n                                class=\"form-control\"\r\n                                data-lpignore=\"true\"\r\n                                value={model.address.streetLine1}\r\n                                onInput={(e) => setModel(\"address\", \"streetLine1\", e.currentTarget.value)}\r\n                            />\r\n                        </div>\r\n                        <div class=\"col-md-2\">\r\n                            <label>\r\n                                <CMS id=\"label::city\">City</CMS>\r\n                            </label>\r\n                            <input type=\"text\"\r\n                                class=\"form-control\"\r\n                                data-lpignore=\"true\"\r\n                                value={model.address.city}\r\n                                onInput={(e) => setModel(\"address\", \"city\", e.currentTarget.value)}\r\n                            />\r\n                        </div>\r\n                        <div class=\"col-md-2\">\r\n                            <label>\r\n                                <CMS id=\"label::state-province\">State/Province</CMS>\r\n                            </label>\r\n                            <input type=\"text\"\r\n                                class=\"form-control\"\r\n                                data-lpignore=\"true\"\r\n                                value={model.address.state}\r\n                                onInput={(e) => setModel(\"address\", \"state\", e.currentTarget.value)}\r\n                            />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-2\">\r\n                            <label>\r\n                                <CMS id=\"label::postal-code-zip\">Post code (ZIP)</CMS>\r\n                            </label>\r\n                            <input type=\"text\"\r\n                                class=\"form-control\"\r\n                                data-lpignore=\"true\"\r\n                                value={model.address.postalCode}\r\n                                onInput={(e) => setModel(\"address\", \"postalCode\", e.currentTarget.value)}\r\n                            />\r\n                        </div>\r\n                        <div class=\"col-md-4 col-md-offset-2\">\r\n                            <label>\r\n                                <CMS id=\"label::country\">Country</CMS>\r\n                            </label>\r\n                            <select class=\"form-control\"\r\n                                value={model.address.countryId} name=\"countryId\" use:validate={[]} required data-lpignore=\"true\"\r\n                                onInput={(e) => setModel(\"address\", \"countryId\", e.currentTarget.value)}>\r\n                                <For each={data.resources.countries}>{(item: ListItem) => <option value={item.Value}>{item.Text}</option>}</For>\r\n                            </select>\r\n                            <ErrorMessage error={errors.countryId} />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\" style=\"margin-top: 20px;\">\r\n                        <div class=\"col-md-12\">\r\n                            <Button type=\"submit\" classList={{ [\"disabled\"] : state.isSaving }} variant=\"primary\" style=\"margin-right: 10px;\">\r\n                                <CMS id=\"button::pay-now\">Pay Now</CMS>\r\n                            </Button>\r\n                            <button onClick={cancelClicked} class=\"btn btn-default\">\r\n                                <CMS id=\"button::cancel\">Cancel</CMS>\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                </form>\r\n            </Show>\r\n        </div>\r\n    );\r\n}","import { useNavigate, useRouteData } from \"@solidjs/router\"\r\nimport { onMount, Show } from \"solid-js\";\r\nimport { fetchGet } from \"../library/common\";\r\nimport toast from \"solid-toast\";\r\nimport { PageLoading } from \"../components/page-loading\";\r\nimport { createStore } from \"solid-js/store\";\r\n\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\n\r\nexport function PaypalConfirmedPage() {\r\n    const navigate = useNavigate();\r\n    const [state, setState] = createStore<State>({ isContentReady: false });\r\n    const concludePayment = async (paymentId: string) => {\r\n        const res = await fetchGet(\"/SalonApplication/Salon/PaypalConfirmJson\", { paymentId });\r\n        const json = await res.json();\r\n        if (!json.Success) {\r\n            return toast.error(json.ErrorMessage);\r\n        }\r\n        navigate(\"/payment/processed\");\r\n    }\r\n    onMount(async () => {\r\n        const routeData = await useRouteData() as any;\r\n        await concludePayment(routeData.paymentId);\r\n        setState(\"isContentReady\", true);\r\n    });\r\n    return (\r\n        <>\r\n            <Show when={state.isContentReady} fallback={<PageLoading />}>\r\n                <div class=\"blank-page\">\r\n                    <h2>\r\n                        Finalising the Paypal payment now ...\r\n                    </h2>\r\n                </div>\r\n            </Show>\r\n        </>\r\n    );\r\n}","import { Show, onMount } from \"solid-js\";\r\nimport { CMS } from \"../components/cms/cms\";\r\nimport { Progress } from \"../components/progress\";\r\nimport { loadCategoriesCms, loadCms } from \"../app\";\r\nimport { createStore } from \"solid-js/store\";\r\n\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\nexport function CategoriesPage() {\r\n    const [state, setState] = createStore<State>({ isContentReady: false });\r\n    onMount(async() => {\r\n        await loadCategoriesCms();\r\n        setState({ isContentReady: true });\r\n    })\r\n    return (\r\n        <>\r\n            <Show when={state.isContentReady}>\r\n                <div class=\"article\">\r\n                    <div class=\"container\">\r\n                        <Progress step={0} />\r\n                        <CMS id=\"18th-salon-application/categories::page-body\"></CMS>\r\n                    </div>\r\n                </div>\r\n            </Show>\r\n        </>\r\n    )\r\n}","import { Show, onMount } from \"solid-js\";\r\nimport { CMS } from \"../components/cms/cms\";\r\nimport { Progress } from \"../components/progress\";\r\nimport { loadRulesCms } from \"../app\";\r\nimport { createStore } from \"solid-js/store\";\r\nimport { A, useRouteData } from \"@solidjs/router\";\r\nimport { UserSession } from \"../types\";\r\n\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\nexport function RulesPage() {\r\n    const [state, setState] = createStore<State>({ isContentReady: false });\r\n    const [session, setSession] = createStore<UserSession>({\r\n        canApply: false,\r\n        isAdmin: false,\r\n        cultureCode: \"\",\r\n        itemCount: 0,\r\n        isLoggedIn: false,\r\n        isHighSchoolStudent: false,\r\n        isRegistered: false,\r\n        member: {\r\n            id: 0, firstName: \"\", lastName: \"\", permissions: [],\r\n            memberType: \"\", username: \"\"\r\n        }    \r\n    } as UserSession);\r\n    onMount(async() => {\r\n        const routeData = await useRouteData() as any;\r\n        await loadRulesCms();\r\n        setSession(routeData.session);\r\n        setState({ isContentReady: true });\r\n    });\r\n    return (\r\n        <>\r\n            <Show when={state.isContentReady}>\r\n                <div class=\"article\">\r\n                    <div class=\"container\">\r\n                        <Progress step={0} />\r\n                        <CMS id=\"18th-salon-application/rules::page-body\"></CMS>\r\n                        <Show when={session.canApply || session.isAdmin}>\r\n                            <div style=\"padding: 60px; margin-bottom: -40px;\">\r\n                                <h2 style=\"text-align: center; font-family: 'Impact';\">\r\n                                    <A class=\"btn btn-primary\" href=\"/step-1\" style=\"font-size: 2rem;\">\r\n                                        <CMS text id=\"button::update/start-application\">Update/Start Application</CMS> <span class=\"fa fa-arrow-circle-right pulse\" style=\"margin-left: 20px;\"></span>\r\n                                    </A>\r\n                                </h2>\r\n                            </div>\r\n                        </Show>\r\n                    </div>\r\n                </div>\r\n            </Show>\r\n        </>\r\n    )\r\n}","import { Show, onMount } from \"solid-js\";\r\nimport { CMS } from \"../components/cms/cms\";\r\nimport { Progress } from \"../components/progress\";\r\nimport { loadAwardsCms, loadCms } from \"../app\";\r\nimport { createStore } from \"solid-js/store\";\r\n\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\nexport function AwardsPage() {\r\n    const [state, setState] = createStore<State>({ isContentReady: false });\r\n    onMount(async() => {\r\n        await loadAwardsCms();\r\n        setState({ isContentReady: true });\r\n    });\r\n    return (\r\n        <>\r\n            <Show when={state.isContentReady}>\r\n                <div class=\"article\">\r\n                    <div class=\"container\">\r\n                        <Progress step={0} />\r\n                        <CMS id=\"18th-salon-application/awards::page-body\"></CMS>\r\n                    </div>\r\n                </div>\r\n            </Show>\r\n        </>\r\n    )\r\n}","import { Show, onMount } from \"solid-js\";\r\nimport { CMS } from \"../components/cms/cms\";\r\nimport { Progress } from \"../components/progress\";\r\nimport { loadSponsorsCms } from \"../app\";\r\nimport { createStore } from \"solid-js/store\";\r\n\r\ntype State = {\r\n    isContentReady: boolean;\r\n}\r\nexport function SponsorsPage() {\r\n    const [state, setState] = createStore<State>({ isContentReady: false });\r\n    onMount(async() => {\r\n        await loadSponsorsCms();\r\n        setState({ isContentReady: true });\r\n    });\r\n    return (\r\n        <>\r\n            <Show when={state.isContentReady}>\r\n                <div class=\"article\">\r\n                    <div class=\"container\">\r\n                        <Progress step={0} />\r\n                        <CMS id=\"18th-salon-application/sponsors::page-body\"></CMS>\r\n                    </div>\r\n                </div>\r\n            </Show>\r\n        </>\r\n    )\r\n}","import { Component, JSXElement, onCleanup, onMount } from \"solid-js\"\r\n\r\ntype Props = {\r\n    selector: string;\r\n    nextElementSiblingOffset?: number;\r\n    children: JSXElement;\r\n}\r\nexport const ScrollToTarget : Component<Props> = (props) => {\r\n    let links: NodeListOf<HTMLElement>;\r\n    const getLinks = () => document.querySelectorAll(props.selector) as NodeListOf<HTMLElement>;\r\n    const scrollToTarget = (e: MouseEvent) => {\r\n        if (!e) return;\r\n        const aName = ((e.target as HTMLElement).getAttribute(\"data-target\") as string)?.replace(\"#\", \"\");\r\n        if (!aName) {\r\n            console.log(\"e.target doesn't have an attribute named 'data-target'; or it contains no value.\", { e });\r\n            return;\r\n        }\r\n        const link = document.querySelector(`a[name='${aName}']`);\r\n        if (!link) {\r\n            console.log(`Couldn't find an <a/> element with a 'name' matching \"${aName}\".`, { aName });\r\n            return;\r\n        }\r\n        const parent = link?.parentElement;\r\n        if (!parent) {\r\n            console.log(`<a/> element doesn't have a parent.`, { link });\r\n            return;\r\n        }\r\n        const offset = props.nextElementSiblingOffset || 2;\r\n        let target = parent;        \r\n        for (let i = 1; i <= offset; i++) target = target?.nextElementSibling as HTMLElement;\r\n        const destination = target || parent;\r\n        destination.scrollIntoView({ behavior: \"smooth\", block: \"end\", inline: \"nearest\" });\r\n    };\r\n    const setup = () => { links = getLinks(); links.forEach(el => el.addEventListener('click', scrollToTarget)) };\r\n    onMount(() => setup());\r\n    onCleanup(() => links.forEach(el => el.removeEventListener('click', scrollToTarget)));\r\n    return (\r\n        <>\r\n            {props.children}\r\n        </>\r\n    )\r\n}","import { Show, onMount } from \"solid-js\";\r\nimport { CMS } from \"../components/cms/cms\";\r\nimport { Progress } from \"../components/progress\";\r\nimport { loadJurorsCms } from \"../app\";\r\nimport { createStore } from \"solid-js/store\";\r\nimport { ScrollToTarget } from \"../components/scroll-to-target\";\r\n\r\ntype State = {\r\n    isCMSReady: boolean;\r\n}\r\nexport function JurorsPage() {\r\n    const [state, setState] = createStore<State>({ isCMSReady: false });\r\n    onMount(async() => {\r\n        await loadJurorsCms();\r\n        setState({ isCMSReady: true });\r\n    });\r\n    return (\r\n        <>\r\n            <Show when={state.isCMSReady}>\r\n                <ScrollToTarget selector=\".juror-link\">\r\n                    <div class=\"article\">\r\n                        <div class=\"container\">\r\n                            <Progress step={0} />\r\n                            <h4 class=\"salon-heading-xxl m-t-xxl\" style=\"text-align: center;\">\r\n                                <CMS text id=\"label::jurors\">Jurors</CMS>\r\n                            </h4>\r\n                            <p>\r\n                                We are still working on our jury line up for the 18th ARC Salon. Please check back here in a few weeks to view our jurors by category.\r\n                            </p>\r\n                            {/* <CMS id=\"18th-salon-application/jurors::description\">\r\n                                In addition to our category jurors listed below, there are numerous additional jurors participating with our partnering awards. To view these additional jurors, please read the award descriptions on the awards page.\r\n                            </CMS>\r\n                            <div class=\"juror-grid\">\r\n                                <CMS id=\"18th-salon-application/jurors::juror-listing\"></CMS>\r\n                            </div>\r\n                            <h4 class=\"salon-heading-xxl m-t-xxl\" style=\"text-align: center;\">\r\n                                <CMS text id=\"label::arc-jurors\">ARC Jurors</CMS>\r\n                            </h4>\r\n                            <CMS id=\"jurors::fred-ross\"></CMS>\r\n                            <CMS id=\"jurors::kara-lysandra-ross\"></CMS>\r\n                            <CMS id=\"jurors::vern-swanson\"></CMS>\r\n                            <CMS id=\"jurors::michael-john-angel\"></CMS>\r\n                            <CMS id=\"jurors::juliette-aristides\"></CMS>\r\n                            <CMS id=\"jurors::daniel-graves\"></CMS>\r\n                            <CMS id=\"jurors::anthony-waichulis\"></CMS>\r\n                            <CMS id=\"jurors::patrick-wilshire\"></CMS>\r\n                            <CMS id=\"jurors::eric-rhoads\"></CMS>\r\n                            <h4 class=\"salon-heading-xxl m-t-xxl\" style=\"text-align: center;\">\r\n                                <CMS text id=\"label::guest-jurors\">Guest Jurors</CMS>\r\n                            </h4>\r\n                            <CMS id=\"jurors::maudie-brady\"></CMS>\r\n                            <CMS id=\"jurors::renee-bemis\"></CMS>\r\n                            <CMS id=\"jurors::arantzazu-martinez\"></CMS>\r\n                            <CMS id=\"jurors::xu-mangyao\"></CMS>\r\n                            <CMS id=\"jurors::leng-jun\"></CMS>\r\n                            <CMS id=\"jurors::qin-ming\"></CMS>\r\n                            <CMS id=\"jurors::bridget-macavoy\"></CMS>\r\n                            <CMS id=\"jurors::bai-yuping\"></CMS>\r\n                            <CMS id=\"jurors::thomas-kegler\"></CMS>\r\n                            <CMS id=\"jurors::richard-macdonald\"></CMS>\r\n                            <CMS id=\"jurors::julie-bell\"></CMS>\r\n                            <CMS id=\"jurors::mario-andres-robinson\"></CMS>\r\n                            <CMS id=\"jurors::jim-mcvicker\"></CMS>\r\n                            <CMS id=\"jurors::mary-pettis\"></CMS>\r\n                            <CMS id=\"jurors::annie-murphy-robinson\"></CMS> */}\r\n                        </div>\r\n                    </div>\r\n                </ScrollToTarget>\r\n            </Show>\r\n        </>\r\n    )\r\n}","/* \r\n * JSNLog 2.30.0\r\n * Open source under the MIT License.\r\n * Copyright 2012-2017 Mattijs Perdeck All rights reserved.\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nfunction JL(loggerName) {\r\n    // If name is empty, return the root logger\r\n    if (!loggerName) {\r\n        return JL.__;\r\n    }\r\n    // Implements Array.reduce. JSNLog supports IE8+ and reduce is not supported in that browser.\r\n    // Same interface as the standard reduce, except that \r\n    if (!Array.prototype.reduce) {\r\n        Array.prototype.reduce = function (callback, initialValue) {\r\n            var previousValue = initialValue;\r\n            for (var i = 0; i < this.length; i++) {\r\n                previousValue = callback(previousValue, this[i], i, this);\r\n            }\r\n            return previousValue;\r\n        };\r\n    }\r\n    var accumulatedLoggerName = '';\r\n    var logger = ('.' + loggerName).split('.').reduce(function (prev, curr, idx, arr) {\r\n        // if loggername is a.b.c, than currentLogger will be set to the loggers\r\n        // root   (prev: JL, curr: '')\r\n        // a      (prev: JL.__, curr: 'a')\r\n        // a.b    (prev: JL.__.__a, curr: 'b')\r\n        // a.b.c  (prev: JL.__.__a.__a.b, curr: 'c')\r\n        // Note that when a new logger name is encountered (such as 'a.b.c'),\r\n        // a new logger object is created and added as a property to the parent ('a.b').\r\n        // The root logger is added as a property of the JL object itself.\r\n        // It is essential that the name of the property containing the child logger\r\n        // contains the full 'path' name of the child logger ('a.b.c') instead of\r\n        // just the bit after the last period ('c').\r\n        // This is because the parent inherits properties from its ancestors.\r\n        // So if the root has a child logger 'c' (stored in a property 'c' of the root logger),\r\n        // then logger 'a.b' has that same property 'c' through inheritance.\r\n        // The names of the logger properties start with __, so the root logger \r\n        // (which has name ''), has a nice property name '__'.              \r\n        // accumulatedLoggerName evaluates false ('' is falsy) in first iteration when prev is the root logger.\r\n        // accumulatedLoggerName will be the logger name corresponding with the logger in currentLogger.\r\n        // Keep in mind that the currentLogger may not be defined yet, so can't get the name from\r\n        // the currentLogger object itself. \r\n        if (accumulatedLoggerName) {\r\n            accumulatedLoggerName += '.' + curr;\r\n        }\r\n        else {\r\n            accumulatedLoggerName = curr;\r\n        }\r\n        var currentLogger = prev['__' + accumulatedLoggerName];\r\n        // If the currentLogger (or the actual logger being sought) does not yet exist, \r\n        // create it now.\r\n        if (currentLogger === undefined) {\r\n            // Set the prototype of the Logger constructor function to the parent of the logger\r\n            // to be created. This way, __proto of the new logger object will point at the parent.\r\n            // When logger.level is evaluated and is not present, the JavaScript runtime will \r\n            // walk down the prototype chain to find the first ancestor with a level property.\r\n            //\r\n            // Note that prev at this point refers to the parent logger.\r\n            JL.Logger.prototype = prev;\r\n            currentLogger = new JL.Logger(accumulatedLoggerName);\r\n            prev['__' + accumulatedLoggerName] = currentLogger;\r\n        }\r\n        return currentLogger;\r\n    }, JL.__);\r\n    return logger;\r\n}\r\n(function (JL) {\r\n    // Initialise requestId to empty string. If you don't do this and the user\r\n    // does not set it via setOptions, then the JSNLog-RequestId header will\r\n    // have value \"undefined\", which doesn't look good in a log.\r\n    //\r\n    // Note that you always want to send a requestId as part of log requests,\r\n    // otherwise the server side component doesn't know this is a log request\r\n    // and may create a new request id for the log request, causing confusion\r\n    // in the log.\r\n    JL.requestId = '';\r\n    // Number uniquely identifying every log entry within the request.\r\n    JL.entryId = 0;\r\n    // Allow property injection of these classes, to enable unit testing\r\n    JL._createXMLHttpRequest = function () { return new XMLHttpRequest(); };\r\n    JL._getTime = function () { return (new Date).getTime(); };\r\n    JL._console = console;\r\n    // ----- private variables\r\n    JL._appenderNames = [];\r\n    /**\r\n    Copies the value of a property from one object to the other.\r\n    This is used to copy property values as part of setOption for loggers and appenders.\r\n\r\n    Because loggers inherit property values from their parents, it is important never to\r\n    create a property on a logger if the intent is to inherit from the parent.\r\n\r\n    Copying rules:\r\n    1) if the from property is undefined (for example, not mentioned in a JSON object), the\r\n       to property is not affected at all.\r\n    2) if the from property is null, the to property is deleted (so the logger will inherit from\r\n       its parent).\r\n    3) Otherwise, the from property is copied to the to property.\r\n    */\r\n    function copyProperty(propertyName, from, to) {\r\n        if (from[propertyName] === undefined) {\r\n            return;\r\n        }\r\n        if (from[propertyName] === null) {\r\n            delete to[propertyName];\r\n            return;\r\n        }\r\n        to[propertyName] = from[propertyName];\r\n    }\r\n    /**\r\n    Returns true if a log should go ahead.\r\n    Does not check level.\r\n\r\n    @param filters\r\n        Filters that determine whether a log can go ahead.\r\n    */\r\n    function allow(filters) {\r\n        // If enabled is not null or undefined, then if it is false, then return false\r\n        // Note that undefined==null (!)\r\n        if (!(JL.enabled == null)) {\r\n            if (!JL.enabled) {\r\n                return false;\r\n            }\r\n        }\r\n        // If the regex contains a bug, that will throw an exception.\r\n        // Ignore this, and pass the log item (better too much than too little).\r\n        try {\r\n            if (filters.userAgentRegex) {\r\n                if (!new RegExp(filters.userAgentRegex).test(navigator.userAgent)) {\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n        catch (e) { }\r\n        try {\r\n            if (filters.ipRegex && JL.clientIP) {\r\n                if (!new RegExp(filters.ipRegex).test(JL.clientIP)) {\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n        catch (e) { }\r\n        return true;\r\n    }\r\n    /**\r\n    Returns true if a log should go ahead, based on the message.\r\n\r\n    @param filters\r\n        Filters that determine whether a log can go ahead.\r\n\r\n    @param message\r\n        Message to be logged.\r\n    */\r\n    function allowMessage(filters, message) {\r\n        // If the regex contains a bug, that will throw an exception.\r\n        // Ignore this, and pass the log item (better too much than too little).\r\n        try {\r\n            if (filters.disallow) {\r\n                if (new RegExp(filters.disallow).test(message)) {\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n        catch (e) { }\r\n        return true;\r\n    }\r\n    // If logObject is a function, the function is evaluated (without parameters)\r\n    // and the result returned.\r\n    // Otherwise, logObject itself is returned.\r\n    function stringifyLogObjectFunction(logObject) {\r\n        if (typeof logObject == \"function\") {\r\n            if (logObject instanceof RegExp) {\r\n                return logObject.toString();\r\n            }\r\n            else {\r\n                return logObject();\r\n            }\r\n        }\r\n        return logObject;\r\n    }\r\n    var StringifiedLogObject = /** @class */ (function () {\r\n        // * msg - \r\n        //      if the logObject is a scalar (after possible function evaluation), this is set to\r\n        //      string representing the scalar. Otherwise it is left undefined.\r\n        // * meta -\r\n        //      if the logObject is an object (after possible function evaluation), this is set to\r\n        //      that object. Otherwise it is left undefined.\r\n        // * finalString -\r\n        //      This is set to the string representation of logObject (after possible function evaluation),\r\n        //      regardless of whether it is an scalar or an object. An object is stringified to a JSON string.\r\n        //      Note that you can't call this field \"final\", because as some point this was a reserved\r\n        //      JavaScript keyword and using final trips up some minifiers.\r\n        function StringifiedLogObject(msg, meta, finalString) {\r\n            this.msg = msg;\r\n            this.meta = meta;\r\n            this.finalString = finalString;\r\n        }\r\n        return StringifiedLogObject;\r\n    }());\r\n    // Takes a logObject, which can be \r\n    // * a scalar\r\n    // * an object\r\n    // * a parameterless function, which returns the scalar or object to log.\r\n    // Returns a stringifiedLogObject\r\n    function stringifyLogObject(logObject) {\r\n        // Note that this works if logObject is null.\r\n        // typeof null is object.\r\n        // JSON.stringify(null) returns \"null\".\r\n        var actualLogObject = stringifyLogObjectFunction(logObject);\r\n        var finalString;\r\n        // Note that typeof actualLogObject should not be \"function\", because that has \r\n        // been resolved with stringifyLogObjectFunction.\r\n        switch (typeof actualLogObject) {\r\n            case \"string\":\r\n                return new StringifiedLogObject(actualLogObject, null, actualLogObject);\r\n            case \"number\":\r\n                finalString = actualLogObject.toString();\r\n                return new StringifiedLogObject(finalString, null, finalString);\r\n            case \"boolean\":\r\n                finalString = actualLogObject.toString();\r\n                return new StringifiedLogObject(finalString, null, finalString);\r\n            case \"undefined\":\r\n                return new StringifiedLogObject(\"undefined\", null, \"undefined\");\r\n            case \"object\":\r\n                if ((actualLogObject instanceof RegExp) ||\r\n                    (actualLogObject instanceof String) ||\r\n                    (actualLogObject instanceof Number) ||\r\n                    (actualLogObject instanceof Boolean)) {\r\n                    finalString = actualLogObject.toString();\r\n                    return new StringifiedLogObject(finalString, null, finalString);\r\n                }\r\n                else {\r\n                    if (typeof JL.serialize === 'function') {\r\n                        finalString = JL.serialize.call(this, actualLogObject);\r\n                    }\r\n                    else {\r\n                        finalString = JSON.stringify(actualLogObject);\r\n                    }\r\n                    // Set the msg field to \"\" instead of null. Some Winston transports\r\n                    // assume that the msg field is not null.\r\n                    return new StringifiedLogObject(\"\", actualLogObject, finalString);\r\n                }\r\n            default:\r\n                return new StringifiedLogObject(\"unknown\", null, \"unknown\");\r\n        }\r\n    }\r\n    function setOptions(options) {\r\n        copyProperty(\"enabled\", options, this);\r\n        copyProperty(\"maxMessages\", options, this);\r\n        copyProperty(\"defaultAjaxUrl\", options, this);\r\n        copyProperty(\"clientIP\", options, this);\r\n        copyProperty(\"requestId\", options, this);\r\n        copyProperty(\"defaultBeforeSend\", options, this);\r\n        copyProperty(\"serialize\", options, this);\r\n        return this;\r\n    }\r\n    JL.setOptions = setOptions;\r\n    function getAllLevel() { return -2147483648; }\r\n    JL.getAllLevel = getAllLevel;\r\n    function getTraceLevel() { return 1000; }\r\n    JL.getTraceLevel = getTraceLevel;\r\n    function getDebugLevel() { return 2000; }\r\n    JL.getDebugLevel = getDebugLevel;\r\n    function getInfoLevel() { return 3000; }\r\n    JL.getInfoLevel = getInfoLevel;\r\n    function getWarnLevel() { return 4000; }\r\n    JL.getWarnLevel = getWarnLevel;\r\n    function getErrorLevel() { return 5000; }\r\n    JL.getErrorLevel = getErrorLevel;\r\n    function getFatalLevel() { return 6000; }\r\n    JL.getFatalLevel = getFatalLevel;\r\n    function getOffLevel() { return 2147483647; }\r\n    JL.getOffLevel = getOffLevel;\r\n    function levelToString(level) {\r\n        if (level <= 1000) {\r\n            return \"trace\";\r\n        }\r\n        if (level <= 2000) {\r\n            return \"debug\";\r\n        }\r\n        if (level <= 3000) {\r\n            return \"info\";\r\n        }\r\n        if (level <= 4000) {\r\n            return \"warn\";\r\n        }\r\n        if (level <= 5000) {\r\n            return \"error\";\r\n        }\r\n        return \"fatal\";\r\n    }\r\n    // ---------------------\r\n    var Exception = /** @class */ (function () {\r\n        // data replaces message. It takes not just strings, but also objects and functions, just like the log function.\r\n        // internally, the string representation is stored in the message property (inherited from Error)\r\n        //\r\n        // inner: inner exception. Can be null or undefined. \r\n        function Exception(data, inner) {\r\n            this.inner = inner;\r\n            this.name = \"JL.Exception\";\r\n            this.message = stringifyLogObject(data).finalString;\r\n        }\r\n        return Exception;\r\n    }());\r\n    JL.Exception = Exception;\r\n    // Derive Exception from Error (a Host object), so browsers\r\n    // are more likely to produce a stack trace for it in their console.\r\n    //\r\n    // Note that instanceof against an object created with this constructor\r\n    // will return true in these cases:\r\n    // <object> instanceof JL.Exception);\r\n    // <object> instanceof Error);\r\n    Exception.prototype = new Error();\r\n    // ---------------------\r\n    var LogItem = /** @class */ (function () {\r\n        // l: level\r\n        // m: message\r\n        // n: logger name\r\n        // t (timeStamp) is number of milliseconds since 1 January 1970 00:00:00 UTC\r\n        // u: number uniquely identifying this entry for this request.\r\n        //\r\n        // Keeping the property names really short, because they will be sent in the\r\n        // JSON payload to the server.\r\n        function LogItem(l, m, n, t, u) {\r\n            this.l = l;\r\n            this.m = m;\r\n            this.n = n;\r\n            this.t = t;\r\n            this.u = u;\r\n        }\r\n        return LogItem;\r\n    }());\r\n    JL.LogItem = LogItem;\r\n    function newLogItem(levelNbr, message, loggerName) {\r\n        JL.entryId++;\r\n        return new LogItem(levelNbr, message, loggerName, JL._getTime(), JL.entryId);\r\n    }\r\n    function clearTimer(timer) {\r\n        if (timer.id) {\r\n            clearTimeout(timer.id);\r\n            timer.id = null;\r\n        }\r\n    }\r\n    function setTimer(timer, timeoutMs, callback) {\r\n        var that = this;\r\n        if (!timer.id) {\r\n            timer.id = setTimeout(function () {\r\n                // use call to ensure that the this as used inside sendBatch when it runs is the\r\n                // same this at this point.\r\n                callback.call(that);\r\n            }, timeoutMs);\r\n        }\r\n    }\r\n    var Appender = /** @class */ (function () {\r\n        // sendLogItems takes an array of log items. It will be called when\r\n        // the appender has items to process (such as, send to the server).\r\n        // sendLogItems will call successCallback after the items have been successfully sent.\r\n        //\r\n        // Note that after sendLogItems returns, the appender may truncate\r\n        // the LogItem array, so the function has to copy the content of the array\r\n        // in some fashion (eg. serialize) before returning.\r\n        function Appender(appenderName, sendLogItems) {\r\n            this.appenderName = appenderName;\r\n            this.sendLogItems = sendLogItems;\r\n            this.level = JL.getTraceLevel();\r\n            // set to super high level, so if user increases level, level is unlikely to get \r\n            // above sendWithBufferLevel\r\n            this.sendWithBufferLevel = 2147483647;\r\n            this.storeInBufferLevel = -2147483648;\r\n            this.bufferSize = 0; // buffering switch off by default\r\n            this.batchSize = 1;\r\n            this.maxBatchSize = 20;\r\n            this.batchTimeout = 2147483647;\r\n            this.sendTimeout = 5000;\r\n            // Holds all log items with levels higher than storeInBufferLevel \r\n            // but lower than level. These items may never be sent.\r\n            this.buffer = [];\r\n            // Holds all items that we do want to send, until we have a full\r\n            // batch (as determined by batchSize).\r\n            this.batchBuffer = [];\r\n            // Holds the id of the timer implementing the batch timeout.\r\n            // Can be null.\r\n            // This is an object, so it can be passed to a method that updated the timer variable.\r\n            this.batchTimeoutTimer = { id: null };\r\n            // Holds the id of the timer implementing the send timeout.\r\n            // Can be null.\r\n            this.sendTimeoutTimer = { id: null };\r\n            // Number of log items that has been skipped due to batch buffer at max size,\r\n            // since appender creation or since creation of the last \"skipped\" warning log entry.\r\n            this.nbrLogItemsSkipped = 0;\r\n            // Will be 0 if no log request is outstanding at the moment.\r\n            // Otherwise the number of log items in the outstanding request.\r\n            this.nbrLogItemsBeingSent = 0;\r\n            var emptyNameErrorMessage = \"Trying to create an appender without a name or with an empty name\";\r\n            // This evaluates to true if appenderName is either null or undefined!\r\n            // Do not check here if the name is \"\", because that would stop you creating the \r\n            // default appender.\r\n            if (appenderName == undefined) {\r\n                throw emptyNameErrorMessage;\r\n            }\r\n            if (JL._appenderNames.indexOf(appenderName) != -1) {\r\n                // If user passed in \"\", that will now have been picked up as a duplicate\r\n                // because default appender also uses \"\".\r\n                if (!appenderName) {\r\n                    throw emptyNameErrorMessage;\r\n                }\r\n                throw \"Multiple appenders use the same name \" + appenderName;\r\n            }\r\n            JL._appenderNames.push(appenderName);\r\n        }\r\n        Appender.prototype.addLogItemsToBuffer = function (logItems) {\r\n            // If the batch buffer has reached its maximum limit, \r\n            // skip the log item and increase the \"skipped items\" counter.\r\n            if (this.batchBuffer.length >= this.maxBatchSize) {\r\n                this.nbrLogItemsSkipped += logItems.length;\r\n                return;\r\n            }\r\n            // If maxMessages is not null or undefined, then decrease it by the batch size.\r\n            // This can result in a negative maxMessages.\r\n            // Note that undefined==null (!)\r\n            //\r\n            // Note that we may be sending more messages than the maxMessages limit allows,\r\n            // if we stored trace messages. Rationale is the buffer for trace messages is limited,\r\n            // and if we cut off at exactly maxMessages, we'd also loose the high severity message\r\n            // that caused the trace messages to be sent (unless we cater for this specifically, which\r\n            // is more complexity).\r\n            //\r\n            // If there are multiple appenders sending the same message, maxMessage will be decreased\r\n            // by each appender for the same message. This is:\r\n            // 1) only appenders know whether a message will actually be sent (based on storeInBufferLevel),\r\n            //    so the loggers couldn't do this update;\r\n            // 2) if you have multiple appenders hitting the same server, this may be what you want.\r\n            //\r\n            // In most cases there is only 1 appender, so this then doesn't matter.\r\n            if (!(JL.maxMessages == null)) {\r\n                if (JL.maxMessages < 1) {\r\n                    return;\r\n                }\r\n                JL.maxMessages -= logItems.length;\r\n            }\r\n            this.batchBuffer = this.batchBuffer.concat(logItems);\r\n            // If this is the first item in the buffer, set the timer\r\n            // to ensure it will be sent within the timeout period.\r\n            // If it is not the first item, leave the timer alone so to not to \r\n            // increase the timeout for the first item.\r\n            //\r\n            // To determine if this is the first item, look at the timer variable.\r\n            // Do not look at the buffer length, because we also put items in the buffer\r\n            // via a concat (bypassing this function).\r\n            //\r\n            // The setTimer method only sets the timer if it is not already running.\r\n            var that = this;\r\n            setTimer(this.batchTimeoutTimer, this.batchTimeout, function () {\r\n                that.sendBatch.call(that);\r\n            });\r\n        };\r\n        ;\r\n        Appender.prototype.batchBufferHasOverdueMessages = function () {\r\n            for (var i = 0; i < this.batchBuffer.length; i++) {\r\n                var messageAgeMs = JL._getTime() - this.batchBuffer[i].t;\r\n                if (messageAgeMs > this.batchTimeout) {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        // Returns true if no more message will ever be added to the batch buffer,\r\n        // but the batch buffer has messages now - so if there are not enough to make up a batch,\r\n        // and there is no batch timeout, then they will never be sent. This is especially important if \r\n        // maxMessages was reached while jsnlog.js was retrying sending messages to the server.\r\n        Appender.prototype.batchBufferHasStrandedMessage = function () {\r\n            return (!(JL.maxMessages == null)) && (JL.maxMessages < 1) && (this.batchBuffer.length > 0);\r\n        };\r\n        Appender.prototype.sendBatchIfComplete = function () {\r\n            if ((this.batchBuffer.length >= this.batchSize) ||\r\n                this.batchBufferHasOverdueMessages() ||\r\n                this.batchBufferHasStrandedMessage()) {\r\n                this.sendBatch();\r\n            }\r\n        };\r\n        Appender.prototype.onSendingEnded = function () {\r\n            clearTimer(this.sendTimeoutTimer);\r\n            this.nbrLogItemsBeingSent = 0;\r\n            this.sendBatchIfComplete();\r\n        };\r\n        Appender.prototype.setOptions = function (options) {\r\n            copyProperty(\"level\", options, this);\r\n            copyProperty(\"ipRegex\", options, this);\r\n            copyProperty(\"userAgentRegex\", options, this);\r\n            copyProperty(\"disallow\", options, this);\r\n            copyProperty(\"sendWithBufferLevel\", options, this);\r\n            copyProperty(\"storeInBufferLevel\", options, this);\r\n            copyProperty(\"bufferSize\", options, this);\r\n            copyProperty(\"batchSize\", options, this);\r\n            copyProperty(\"maxBatchSize\", options, this);\r\n            copyProperty(\"batchTimeout\", options, this);\r\n            copyProperty(\"sendTimeout\", options, this);\r\n            if (this.bufferSize < this.buffer.length) {\r\n                this.buffer.length = this.bufferSize;\r\n            }\r\n            if (this.maxBatchSize < this.batchSize) {\r\n                throw new JL.Exception({\r\n                    \"message\": \"maxBatchSize cannot be smaller than batchSize\",\r\n                    \"maxBatchSize\": this.maxBatchSize,\r\n                    \"batchSize\": this.batchSize\r\n                });\r\n            }\r\n            return this;\r\n        };\r\n        /**\r\n        Called by a logger to log a log item.\r\n        If in response to this call one or more log items need to be processed\r\n        (eg., sent to the server), this method calls this.sendLogItems\r\n        with an array with all items to be processed.\r\n\r\n        Note that the name and parameters of this function must match those of the log function of\r\n        a Winston transport object, so that users can use these transports as appenders.\r\n        That is why there are many parameters that are not actually used by this function.\r\n\r\n        level - string with the level (\"trace\", \"debug\", etc.) Only used by Winston transports.\r\n        msg - human readable message. Undefined if the log item is an object. Only used by Winston transports.\r\n        meta - log object. Always defined, because at least it contains the logger name. Only used by Winston transports.\r\n        callback - function that is called when the log item has been logged. Only used by Winston transports.\r\n        levelNbr - level as a number. Not used by Winston transports.\r\n        message - log item. If the user logged an object, this is the JSON string.  Not used by Winston transports.\r\n        loggerName: name of the logger.  Not used by Winston transports.\r\n        */\r\n        Appender.prototype.log = function (level, msg, meta, callback, levelNbr, message, loggerName) {\r\n            var logItem;\r\n            if (!allow(this)) {\r\n                return;\r\n            }\r\n            if (!allowMessage(this, message)) {\r\n                return;\r\n            }\r\n            if (levelNbr < this.storeInBufferLevel) {\r\n                // Ignore the log item completely\r\n                return;\r\n            }\r\n            logItem = newLogItem(levelNbr, message, loggerName);\r\n            if (levelNbr < this.level) {\r\n                // Store in the hold buffer. Do not send.\r\n                if (this.bufferSize > 0) {\r\n                    this.buffer.push(logItem);\r\n                    // If we exceeded max buffer size, remove oldest item\r\n                    if (this.buffer.length > this.bufferSize) {\r\n                        this.buffer.shift();\r\n                    }\r\n                }\r\n                return;\r\n            }\r\n            // Want to send the item\r\n            this.addLogItemsToBuffer([logItem]);\r\n            if (levelNbr >= this.sendWithBufferLevel) {\r\n                // Want to send the contents of the buffer.\r\n                //\r\n                // Send the buffer AFTER sending the high priority item.\r\n                // If you were to send the high priority item after the buffer,\r\n                // if we're close to maxMessages or maxBatchSize,\r\n                // then the trace messages in the buffer could crowd out the actual high priority item.\r\n                if (this.buffer.length) {\r\n                    this.addLogItemsToBuffer(this.buffer);\r\n                    this.buffer.length = 0;\r\n                }\r\n            }\r\n            this.sendBatchIfComplete();\r\n        };\r\n        ;\r\n        // Processes the batch buffer\r\n        //\r\n        // Make this public, so it can be called from outside the library,\r\n        // when the page is unloaded.\r\n        Appender.prototype.sendBatch = function () {\r\n            // Do not clear the batch timer if you don't go ahead here because\r\n            // a send is already in progress. Otherwise the messages that were stopped from going out\r\n            // may get ignored because the batch timer never went off.\r\n            if (this.nbrLogItemsBeingSent > 0) {\r\n                return;\r\n            }\r\n            clearTimer(this.batchTimeoutTimer);\r\n            if (this.batchBuffer.length == 0) {\r\n                return;\r\n            }\r\n            // Decided at this point to send contents of the buffer\r\n            this.nbrLogItemsBeingSent = this.batchBuffer.length;\r\n            var that = this;\r\n            setTimer(this.sendTimeoutTimer, this.sendTimeout, function () {\r\n                that.onSendingEnded.call(that);\r\n            });\r\n            this.sendLogItems(this.batchBuffer, function () {\r\n                // Log entries have been successfully sent to server\r\n                // Remove the first (nbrLogItemsBeingSent) items in the batch buffer, because they are the ones\r\n                // that were sent.\r\n                that.batchBuffer.splice(0, that.nbrLogItemsBeingSent);\r\n                // If items had to be skipped, add a WARN message\r\n                if (that.nbrLogItemsSkipped > 0) {\r\n                    that.batchBuffer.push(newLogItem(getWarnLevel(), \"Lost \" + that.nbrLogItemsSkipped + \" messages. Either connection with the server was down or logging was disabled via the enabled option. Reduce lost messages by increasing the ajaxAppender option maxBatchSize.\", that.appenderName));\r\n                    that.nbrLogItemsSkipped = 0;\r\n                }\r\n                that.onSendingEnded.call(that);\r\n            });\r\n        };\r\n        return Appender;\r\n    }());\r\n    JL.Appender = Appender;\r\n    // ---------------------\r\n    var AjaxAppender = /** @class */ (function (_super) {\r\n        __extends(AjaxAppender, _super);\r\n        function AjaxAppender(appenderName) {\r\n            return _super.call(this, appenderName, AjaxAppender.prototype.sendLogItemsAjax) || this;\r\n        }\r\n        AjaxAppender.prototype.setOptions = function (options) {\r\n            copyProperty(\"url\", options, this);\r\n            copyProperty(\"beforeSend\", options, this);\r\n            _super.prototype.setOptions.call(this, options);\r\n            return this;\r\n        };\r\n        AjaxAppender.prototype.sendLogItemsAjax = function (logItems, successCallback) {\r\n            // JSON.stringify is only supported on IE8+\r\n            // Use try-catch in case we get an exception here.\r\n            //\r\n            // The \"r\" field is now obsolete. When writing a server side component, \r\n            // read the HTTP header \"JSNLog-RequestId\"\r\n            // to get the request id.\r\n            //\r\n            // The .Net server side component\r\n            // now uses the JSNLog-RequestId HTTP Header, because this allows it to\r\n            // detect whether the incoming request has a request id.\r\n            // If the request id were in the json payload, it would have to read the json\r\n            // from the stream, interfering with normal non-logging requests.\r\n            //\r\n            // To see what characters you can use in the HTTP header, visit:\r\n            // http://stackoverflow.com/questions/3561381/custom-http-headers-naming-conventions/3561399#3561399\r\n            //\r\n            // It needs this ability, so users of NLog can set a requestId variable in NLog\r\n            // before the server side component tries to log the client side log message\r\n            // through an NLog logger.\r\n            // Unlike Log4Net, NLog doesn't allow you to register an object whose ToString()\r\n            // is only called when it tries to log something, so the requestId has to be \r\n            // determined right at the start of request processing.\r\n            try {\r\n                // Do not send logs, if JL.enabled is set to false.\r\n                //\r\n                // Do not call successCallback here. After each timeout, jsnlog will retry sending the message.\r\n                // If jsnlog gets re-enabled, it will then log the number of messages logged.\r\n                // If it doesn't get re-enabled, amount of cpu cycles wasted is minimal.\r\n                if (!allow(this)) {\r\n                    return;\r\n                }\r\n                // If a request is in progress, abort it.\r\n                // Otherwise, it may call the success callback, which will be very confusing.\r\n                // It may also stop the inflight request from resulting in a log at the server.\r\n                if (this.xhr && (this.xhr.readyState != 0) && (this.xhr.readyState != 4)) {\r\n                    this.xhr.abort();\r\n                }\r\n                // Because a react-native XMLHttpRequest cannot be reused it needs to be recreated with each request\r\n                this.xhr = JL._createXMLHttpRequest();\r\n                // Only determine the url right before you send a log request.\r\n                // Do not set the url when constructing the appender.\r\n                //\r\n                // This is because the server side component sets defaultAjaxUrl\r\n                // in a call to setOptions, AFTER the JL object and the default appender\r\n                // have been created. \r\n                var ajaxUrl = \"/jsnlog.logger\";\r\n                // This evaluates to true if defaultAjaxUrl is null or undefined\r\n                if (!(JL.defaultAjaxUrl == null)) {\r\n                    ajaxUrl = JL.defaultAjaxUrl;\r\n                }\r\n                if (this.url) {\r\n                    ajaxUrl = this.url;\r\n                }\r\n                this.xhr.open('POST', ajaxUrl);\r\n                this.xhr.setRequestHeader('Content-Type', 'application/json');\r\n                this.xhr.setRequestHeader('JSNLog-RequestId', JL.requestId);\r\n                var that = this;\r\n                this.xhr.onreadystatechange = function () {\r\n                    // On most browsers, if the request fails (eg. internet is gone),\r\n                    // it will set xhr.readyState == 4 and xhr.status != 200 (0 if request could not be sent) immediately.\r\n                    // However, Edge and IE will not change the readyState at all if the internet goes away while waiting\r\n                    // for a response.\r\n                    // Some servers will return a 204 (success, no content) when the JSNLog endpoint\r\n                    // returns the empty response. So check on any code in the 2.. range, not just 200.\r\n                    if ((that.xhr.readyState == 4) && (that.xhr.status >= 200 && that.xhr.status < 300)) {\r\n                        successCallback();\r\n                    }\r\n                };\r\n                var json = {\r\n                    r: JL.requestId,\r\n                    lg: logItems\r\n                };\r\n                // call beforeSend callback\r\n                // first try the callback on the appender\r\n                // then the global defaultBeforeSend callback\r\n                if (typeof this.beforeSend === 'function') {\r\n                    this.beforeSend.call(this, this.xhr, json);\r\n                }\r\n                else if (typeof JL.defaultBeforeSend === 'function') {\r\n                    JL.defaultBeforeSend.call(this, this.xhr, json);\r\n                }\r\n                var finalmsg = JSON.stringify(json);\r\n                this.xhr.send(finalmsg);\r\n            }\r\n            catch (e) { }\r\n        };\r\n        return AjaxAppender;\r\n    }(Appender));\r\n    JL.AjaxAppender = AjaxAppender;\r\n    // ---------------------\r\n    var ConsoleAppender = /** @class */ (function (_super) {\r\n        __extends(ConsoleAppender, _super);\r\n        function ConsoleAppender(appenderName) {\r\n            return _super.call(this, appenderName, ConsoleAppender.prototype.sendLogItemsConsole) || this;\r\n        }\r\n        ConsoleAppender.prototype.clog = function (logEntry) {\r\n            JL._console.log(logEntry);\r\n        };\r\n        ConsoleAppender.prototype.cerror = function (logEntry) {\r\n            if (JL._console.error) {\r\n                JL._console.error(logEntry);\r\n            }\r\n            else {\r\n                this.clog(logEntry);\r\n            }\r\n        };\r\n        ConsoleAppender.prototype.cwarn = function (logEntry) {\r\n            if (JL._console.warn) {\r\n                JL._console.warn(logEntry);\r\n            }\r\n            else {\r\n                this.clog(logEntry);\r\n            }\r\n        };\r\n        ConsoleAppender.prototype.cinfo = function (logEntry) {\r\n            if (JL._console.info) {\r\n                JL._console.info(logEntry);\r\n            }\r\n            else {\r\n                this.clog(logEntry);\r\n            }\r\n        };\r\n        // IE11 has a console.debug function. But its console doesn't have \r\n        // the option to show/hide debug messages (the same way Chrome and FF do),\r\n        // even though it does have such buttons for Error, Warn, Info.\r\n        //\r\n        // For now, this means that debug messages can not be hidden on IE.\r\n        // Live with this, seeing that it works fine on FF and Chrome, which\r\n        // will be much more popular with developers.\r\n        ConsoleAppender.prototype.cdebug = function (logEntry) {\r\n            if (JL._console.debug) {\r\n                JL._console.debug(logEntry);\r\n            }\r\n            else {\r\n                this.cinfo(logEntry);\r\n            }\r\n        };\r\n        ConsoleAppender.prototype.sendLogItemsConsole = function (logItems, successCallback) {\r\n            try {\r\n                // Do not send logs, if JL.enabled is set to false\r\n                //\r\n                // Do not call successCallback here. After each timeout, jsnlog will retry sending the message.\r\n                // If jsnlog gets re-enabled, it will then log the number of messages logged.\r\n                // If it doesn't get re-enabled, amount of cpu cycles wasted is minimal.\r\n                if (!allow(this)) {\r\n                    return;\r\n                }\r\n                if (!JL._console) {\r\n                    return;\r\n                }\r\n                var i;\r\n                for (i = 0; i < logItems.length; ++i) {\r\n                    var li = logItems[i];\r\n                    var msg = li.n + \": \" + li.m;\r\n                    // Only log the timestamp if we're on the server\r\n                    // (window is undefined). On the browser, the user\r\n                    // sees the log entry probably immediately, so in that case\r\n                    // the timestamp is clutter.\r\n                    if (typeof window === 'undefined') {\r\n                        msg = new Date(li.t) + \" | \" + msg;\r\n                    }\r\n                    if (li.l <= JL.getDebugLevel()) {\r\n                        this.cdebug(msg);\r\n                    }\r\n                    else if (li.l <= JL.getInfoLevel()) {\r\n                        this.cinfo(msg);\r\n                    }\r\n                    else if (li.l <= JL.getWarnLevel()) {\r\n                        this.cwarn(msg);\r\n                    }\r\n                    else {\r\n                        this.cerror(msg);\r\n                    }\r\n                }\r\n            }\r\n            catch (e) {\r\n            }\r\n            successCallback();\r\n        };\r\n        return ConsoleAppender;\r\n    }(Appender));\r\n    JL.ConsoleAppender = ConsoleAppender;\r\n    // --------------------\r\n    var Logger = /** @class */ (function () {\r\n        function Logger(loggerName) {\r\n            this.loggerName = loggerName;\r\n            // Create seenRexes, otherwise this logger will use the seenRexes\r\n            // of its parent via the prototype chain.\r\n            this.seenRegexes = [];\r\n        }\r\n        Logger.prototype.setOptions = function (options) {\r\n            copyProperty(\"level\", options, this);\r\n            copyProperty(\"userAgentRegex\", options, this);\r\n            copyProperty(\"disallow\", options, this);\r\n            copyProperty(\"ipRegex\", options, this);\r\n            copyProperty(\"appenders\", options, this);\r\n            copyProperty(\"onceOnly\", options, this);\r\n            // Reset seenRegexes, in case onceOnly has been changed.\r\n            this.seenRegexes = [];\r\n            return this;\r\n        };\r\n        // Turns an exception into an object that can be sent to the server.\r\n        Logger.prototype.buildExceptionObject = function (e) {\r\n            var excObject = {};\r\n            if (e.stack) {\r\n                excObject.stack = e.stack;\r\n            }\r\n            else {\r\n                excObject.e = e;\r\n            }\r\n            if (e.message) {\r\n                excObject.message = e.message;\r\n            }\r\n            if (e.name) {\r\n                excObject.name = e.name;\r\n            }\r\n            if (e.data) {\r\n                excObject.data = e.data;\r\n            }\r\n            if (e.inner) {\r\n                excObject.inner = this.buildExceptionObject(e.inner);\r\n            }\r\n            return excObject;\r\n        };\r\n        // Logs a log item.\r\n        // Parameter e contains an exception (or null or undefined).\r\n        //\r\n        // Reason that processing exceptions is done at this low level is that\r\n        // 1) no need to spend the cpu cycles if the logger is switched off\r\n        // 2) fatalException takes both a logObject and an exception, and the logObject\r\n        //    may be a function that should only be executed if the logger is switched on.\r\n        //\r\n        // If an exception is passed in, the contents of logObject is attached to the exception\r\n        // object in a new property logData.\r\n        // The resulting exception object is than worked into a message to the server.\r\n        //\r\n        // If there is no exception, logObject itself is worked into the message to the server.\r\n        Logger.prototype.log = function (level, logObject, e) {\r\n            var i = 0;\r\n            var compositeMessage;\r\n            var excObject;\r\n            // If we can't find any appenders, do nothing\r\n            if (!this.appenders) {\r\n                return this;\r\n            }\r\n            if (((level >= this.level)) && allow(this)) {\r\n                if (e) {\r\n                    excObject = this.buildExceptionObject(e);\r\n                    excObject.logData = stringifyLogObjectFunction(logObject);\r\n                }\r\n                else {\r\n                    excObject = logObject;\r\n                }\r\n                compositeMessage = stringifyLogObject(excObject);\r\n                if (allowMessage(this, compositeMessage.finalString)) {\r\n                    // See whether message is a duplicate\r\n                    if (this.onceOnly) {\r\n                        i = this.onceOnly.length - 1;\r\n                        while (i >= 0) {\r\n                            if (new RegExp(this.onceOnly[i]).test(compositeMessage.finalString)) {\r\n                                if (this.seenRegexes[i]) {\r\n                                    return this;\r\n                                }\r\n                                this.seenRegexes[i] = true;\r\n                            }\r\n                            i--;\r\n                        }\r\n                    }\r\n                    // Pass message to all appenders\r\n                    // Note that these appenders could be Winston transports\r\n                    // https://github.com/flatiron/winston\r\n                    compositeMessage.meta = compositeMessage.meta || {};\r\n                    // Note that if the user is logging an object, compositeMessage.meta will hold a reference to that object.\r\n                    // Do not add fields to compositeMessage.meta, otherwise the user's object will get that field out of the blue.\r\n                    i = this.appenders.length - 1;\r\n                    while (i >= 0) {\r\n                        this.appenders[i].log(levelToString(level), compositeMessage.msg, compositeMessage.meta, function () { }, level, compositeMessage.finalString, this.loggerName);\r\n                        i--;\r\n                    }\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Logger.prototype.trace = function (logObject) { return this.log(getTraceLevel(), logObject); };\r\n        Logger.prototype.debug = function (logObject) { return this.log(getDebugLevel(), logObject); };\r\n        Logger.prototype.info = function (logObject) { return this.log(getInfoLevel(), logObject); };\r\n        Logger.prototype.warn = function (logObject) { return this.log(getWarnLevel(), logObject); };\r\n        Logger.prototype.error = function (logObject) { return this.log(getErrorLevel(), logObject); };\r\n        Logger.prototype.fatal = function (logObject) { return this.log(getFatalLevel(), logObject); };\r\n        Logger.prototype.fatalException = function (logObject, e) { return this.log(getFatalLevel(), logObject, e); };\r\n        return Logger;\r\n    }());\r\n    JL.Logger = Logger;\r\n    function createAjaxAppender(appenderName) {\r\n        return new AjaxAppender(appenderName);\r\n    }\r\n    JL.createAjaxAppender = createAjaxAppender;\r\n    function createConsoleAppender(appenderName) {\r\n        return new ConsoleAppender(appenderName);\r\n    }\r\n    JL.createConsoleAppender = createConsoleAppender;\r\n    // -----------------------\r\n    // In the browser, the default appender is the AjaxAppender.\r\n    // Under nodejs (where there is no \"window\"), use the ConsoleAppender instead.\r\n    // \r\n    // Do NOT create an AjaxAppender object if you are not on a browser (that is, window is not defined).\r\n    // That would try to create an XmlHttpRequest object, which will crash outside a browser.\r\n    var defaultAppender;\r\n    if (typeof window !== 'undefined') {\r\n        defaultAppender = new AjaxAppender(\"\");\r\n    }\r\n    else {\r\n        defaultAppender = new ConsoleAppender(\"\");\r\n    }\r\n    // Create root logger\r\n    //\r\n    // Note that this is the parent of all other loggers.\r\n    // Logger \"x\" will be stored at\r\n    // JL.__.x\r\n    // Logger \"x.y\" at\r\n    // JL.__.x.y\r\n    JL.__ = new JL.Logger(\"\");\r\n    JL.__.setOptions({\r\n        level: JL.getDebugLevel(),\r\n        appenders: [defaultAppender]\r\n    });\r\n})(JL || (JL = {}));\r\nif (typeof exports !== 'undefined') {\r\n    // Allows SystemJs to import jsnlog.js. See\r\n    // https://github.com/mperdeck/jsnlog.js/issues/56\r\n    exports.__esModule = true;\r\n    exports.JL = JL;\r\n}\r\n// Support AMD module format\r\nvar define;\r\nif (typeof define == 'function' && define.amd) {\r\n    define('jsnlog', [], function () {\r\n        return JL;\r\n    });\r\n}\r\n// If the __jsnlog_configure global function has been\r\n// created, call it now. This allows you to create a global function\r\n// setting logger options etc. inline in the page before jsnlog.js\r\n// has been loaded.\r\nif (typeof __jsnlog_configure == 'function') {\r\n    __jsnlog_configure(JL);\r\n}\r\n// Create onerror handler to log uncaught exceptions to the server side log, but only if there \r\n// is no such handler already.\r\n// Must use \"typeof window\" here, because in NodeJs, window is not defined at all, so cannot refer to window in any way.\r\nif (typeof window !== 'undefined' && !window.onerror) {\r\n    window.onerror = function (errorMsg, url, lineNumber, column, errorObj) {\r\n        // Send object with all data to server side log, using severity fatal, \r\n        // from logger \"onerrorLogger\"\r\n        //\r\n        // Use errorMsg.message if available, so Angular 4 template errors will be logged.\r\n        // See https://github.com/mperdeck/jsnlog.js/pull/68\r\n        JL(\"onerrorLogger\").fatalException({\r\n            \"msg\": \"Uncaught Exception\",\r\n            \"errorMsg\": errorMsg ? (errorMsg.message || errorMsg) : '',\r\n            \"url\": url,\r\n            \"line number\": lineNumber, \"column\": column\r\n        }, errorObj);\r\n        // Tell browser to run its own error handler as well   \r\n        return false;\r\n    };\r\n}\r\n// Deal with unhandled exceptions thrown in promises\r\nif (typeof window !== 'undefined' && !window.onunhandledrejection) {\r\n    window.onunhandledrejection = function (event) {\r\n        // Send object with all data to server side log, using severity fatal, \r\n        // from logger \"onerrorLogger\".\r\n        // Need to check both event.reason.message and event.message,\r\n        // because SystemJs wraps exceptions and throws a new object which doesn't have a reason property.\r\n        // See https://github.com/systemjs/systemjs/issues/1309\r\n        JL(\"onerrorLogger\").fatalException({\r\n            \"msg\": \"unhandledrejection\",\r\n            \"errorMsg\": event.reason ? event.reason.message : event.message || null\r\n        }, event.reason);\r\n    };\r\n}\r\n","import { A } from \"@solidjs/router\"\r\n\r\nexport function PaymentProcessedPage() {\r\n    return (\r\n        <>\r\n            <div class=\"blank-page\">\r\n                <p>\r\n                    Your payment has been processed!\r\n                </p>\r\n                <p>\r\n                    You can now view your <A href=\"/step-3\">Invoice</A> or return to <A href=\"/step-2\">Your Artworks</A>.\r\n                </p>\r\n            </div>\r\n        </>\r\n    )\r\n}","import { Route, Router, Routes, hashIntegration, useParams } from \"@solidjs/router\";\r\nimport { Component, ErrorBoundary, createSignal, onMount } from \"solid-js\";\r\nimport { EntrantProfile, Step1RouteData, EditArtworkModel, EditArtworkData,  UserSession, ArtworkImageData, Ad } from \"./types\";\r\nimport { Step1Page } from \"./pages/step-1\";\r\nimport { Step2Page } from \"./pages/step-2\";\r\nimport { EditArtwork } from \"./pages/edit-artwork\";\r\nimport { Introduction } from \"./pages/introduction\";\r\nimport { fetchGet, formatText, getElementsFromHtml, preloadImages } from \"./library/common\";\r\nimport { EditImage } from \"./pages/edit-image\";\r\nimport { JetMenu } from \"./sections/jetmenu\";\r\nimport { LogoSlider } from \"./sections/logo-slider\";\r\nimport { Header } from \"./sections/header\";\r\nimport { Footer } from \"./sections/footer\";\r\nimport { BackToTop } from \"./components/universal/back-to-top\";\r\nimport { createStore } from \"solid-js/store\";\r\nimport { Step3Page } from \"./pages/step-3\";\r\nimport { CreditCardPage } from \"./pages/credit-card\";\r\nimport { PaypalConfirmedPage } from \"./pages/paypal-confirmed\";\r\nimport toast, { Toaster } from \"solid-toast\";\r\nimport { CMSBlock, CMSProvider } from \"./components/cms/provider\";\r\nimport { CMS, plainText } from \"./components/cms/cms\";\r\nimport _ from \"underscore\";\r\nimport { CategoriesPage } from \"./pages/categories\";\r\nimport { RulesPage } from \"./pages/rules\";\r\nimport { AwardsPage } from \"./pages/awards\";\r\nimport { SponsorsPage } from \"./pages/sponsors\";\r\nimport { JurorsPage } from \"./pages/jurors\";\r\nimport { JL } from \"jsnlog\";\r\nimport { getOrSetAsync } from \"./API\";\r\nimport { PaymentProcessedPage } from \"./pages/payment-processed\";\r\n\r\nexport const Payment : Component<any> = (props) => <div></div>;\r\nexport const Rules : Component<any> = (props) => <div></div>;\r\n\r\nexport const [ads, setAds] = createSignal<Ad[]>([]);\r\nconst loadAds = async (section: string) => {\r\n    const res = await fetchGet(\"/16thARCSalon/Home/GetAdsJson\", { section });\r\n    const json = await res.json();\r\n    if (!json.Success) return;\r\n    setAds(json.Data);\r\n};\r\nexport const [cms, setCms] = createStore<Record<string,CMSBlock>>({});\r\nexport const [cache, setCache] = createStore<Record<string,any>>({});\r\nexport const getOrSetCache = async (key: string, getter: () => Promise<any>) => {\r\n    const item = cache[key];\r\n    if (item != undefined) return item;\r\n    const value = await getter();\r\n    setCache(key, value);\r\n    return value;\r\n};\r\n\r\nexport const loadCms = async (ids: string[]) => {\r\n    const cachedIds = Object.keys(cms);\r\n    const uncachedIds = ids.filter(id => !cachedIds.some(key => key == id));\r\n    if (!uncachedIds.length) return;\r\n    let json: any;\r\n    try {\r\n        const res = await fetchGet(\"/Home/GetContentBlocksJson\", { ids: uncachedIds.join(\",\") });\r\n        json = await res.json();\r\n        if (!json.Success) return;\r\n    } catch (ex) {\r\n        console.log(\"loadCms\", { ex });\r\n        return;\r\n    }\r\n    let data: Record<string, CMSBlock> = {};\r\n    uncachedIds.forEach(id => {\r\n        let value = json.Data[id];\r\n        if (!value || value.length === 0) {\r\n            data[id] = { found: false, item: null };\r\n            return;\r\n        }\r\n        data[id] = { found: true, item: value };\r\n    });\r\n    setCms(data);\r\n};\r\nexport const loadIntroductionCms = async () => {\r\n    await loadCms([\r\n        \"18th-salon-application/home::introduction\",\r\n        \"18th-salon-application/home::rules/heading\", \"18th-salon-application/home::rules/image\", \"18th-salon-application/home::rules/blurb\",\r\n        \"18th-salon-application/home::categories/heading\", \"18th-salon-application/home::categories/image\", \"18th-salon-application/home::categories/blurb\",\r\n        \"18th-salon-application/home::awards/heading\", \"18th-salon-application/home::awards/image\", \"18th-salon-application/home::awards/blurb\",\r\n        \"18th-salon-application/home::jurors/heading\", \"18th-salon-application/home::jurors/image\", \"18th-salon-application/home::jurors/blurb\",\r\n        \"18th-salon-application/home::sponsors/heading\", \"18th-salon-application/home::sponsors/image\", \"18th-salon-application/home::sponsors/blurb\",\r\n        \"button::update/start-application\",\r\n        \"button::learn-more\"\r\n    ]);\r\n}\r\nexport const loadAwardsCms = async () => {\r\n    await loadCms([\r\n        \"18th-salon-application/awards::page-body\"\r\n    ]);\r\n}\r\nexport const loadCategoriesCms = async () => {\r\n    await loadCms([\"18th-salon-application/categories::page-body\"]);\r\n};\r\nexport const loadJurorsCms = async () => {\r\n    await loadCms([\r\n        \"18th-salon-application/jurors::juror-listing\",\r\n        \"18th-salon-application/jurors::description\",\r\n        \"label::jurors\",\r\n        \"jurors::fred-ross\",\r\n        \"jurors::kara-lysandra-ross\",\r\n        \"jurors::vern-swanson\",\r\n        \"jurors::michael-john-angel\",\r\n        \"jurors::juliette-aristides\",\r\n        \"jurors::daniel-graves\",\r\n        \"jurors::anthony-waichulis\",\r\n        \"jurors::patrick-wilshire\",\r\n        \"jurors::eric-rhoads\",\r\n        \"label::guest-jurors\",\r\n        \"jurors::mary-pettis\",\r\n        \"jurors::maudie-brady\",\r\n        \"jurors::renee-bemis\",\r\n        \"jurors::arantzazu-martinez\",\r\n        \"jurors::xu-mangyao\",\r\n        \"jurors::leng-jun\",\r\n        \"jurors::qin-ming\",\r\n        \"jurors::bridget-macavoy\",\r\n        \"jurors::bai-yuping\",\r\n        \"jurors::thomas-kegler\",\r\n        \"jurors::richard-macdonald\",\r\n        \"jurors::julie-bell\",\r\n        \"jurors::mario-andres-robinson\",\r\n        \"jurors::jim-mcvicker\",\r\n        \"jurors::annie-murphy-robinson\"\r\n    ]);\r\n}\r\nexport const loadStep1Cms = async () => {\r\n    const ids = [\r\n        \"18th-salon-application/step-1::your-details/heading\",\"18th-salon-application/step-1::your-details/description\",\r\n        \"18th-salon-application/step-1::section/name\",\r\n        \"label::first-name\",\"label::last-name\",\r\n        \"18th-salon-application/step-1::section/contact-details\",\r\n        \"label::email\",\"label::street-line-1\",\"label::street-line-2\",\"label::city\",\"label::state-province\",\"label::post-code-zip\",\"label::country\",\r\n        \"18th-salon-application/step-1::label/phone-number\",\r\n        \"18th-salon-application/step-1::section/social-media\",\r\n        \"label::facebook\",\"label::instagram\",\"label::twitter\",\r\n        \"18th-salon-application/step-1::section/biography\",\r\n        \"18th-salon-application/step-1::section/profile-picture\",\r\n        \"18th-salon-application/step-1::section/biography/criteria\",\r\n        \"18th-salon-application/step-1::section/catalogues\",\r\n        \"18th-salon-application/step-1::label/want-free-catalogue\",\r\n        \"18th-salon-application/step-1::label/pre-order-additional-copies\",\r\n        \"18th-salon-application/step-1::label/maximum-catalogues\",\r\n        \"18th-salon-application/step-1::label/example-catalogue\",\r\n        \"18th-salon-application/step-1::section/for-students\",\r\n        \"18th-salon-application/step-1::label/checkbox-minimum-age\",\r\n        \"label::age\", \"18th-salon-application/step-1::heading/student-details\",\r\n        \"18th-salon-application/step-1::section/high-school-student\",\r\n        \"18th-salon-application/step-1::parent-or-legal-guardian/heading\",\r\n        \"label::name\",\"label::email\",\"label::phone-number\",\"label::high-school\",\"label::high-school-art-instructor\",\r\n        \"18th-salon-application/step-1::label/claims-to-attend-title1\",\r\n        \"18th-salon-application/step-1::section/rules\",\r\n        \"18th-salon-application/step-1::label/agreed-to-terms-and-conditions\",\r\n        \"button::continue\",\"button::yes-sign-me-up\"\r\n    ];\r\n    await loadCms(ids);\r\n}\r\nexport const loadCreditCardCms = async () => {\r\n    const ids = [\r\n        \"label::postal-code-zip\",\r\n        \"label::credit-card-number\",\r\n        \"label::expiry-mm-yy\",\r\n        \"label::ccv\",\r\n        \"label::street\",\r\n        \"label::pay-with-credit-card\",\r\n        \"button::cancel\",\r\n        \"button::pay-now\",\r\n        \"18th-salon-application/credit-card::total-owing\"\r\n    ];\r\n    await loadCms(ids);\r\n}\r\nexport const loadStep3Cms = async () => {\r\n    const ids = [\r\n        \"18th-salon-application/checkout::invoice\",\r\n        \"18th-salon-application/checkout::description\",\r\n        \"18th-salon-application/checkout::price\",\r\n        \"18th-salon-application/checkout::nothing-in-cart\",\r\n        \"18th-salon-application/checkout::total\",\r\n        \"18th-salon-application/checkout::amount-already-paid\",\r\n        \"18th-salon-application/checkout::amount-owing\",\r\n        \"18th-salon-application/checkout::amount-due-to-complete-entry\",\r\n        \"18th-salon-application/checkout::payment-method\",\r\n        \"18th-salon-application/checkout::fully-paid\",\r\n        \"18th-salon-application/checkout::credit-card\",\r\n        \"18th-salon-application/checkout::paypal\",\r\n        \"18th-salon-application/checkout::unable-to-update-number-of-catalogues-error\",\r\n        \"18th-salon-application/checkout::unable-to-update-shipping-address-error\",\r\n        \"18th-salon-application/checkout::retrieving-latest-invoice-error\",\r\n        \"18th-salon-application/checkout::paypal-transaction-error\",\r\n        \"18th-salon-application/checkout::error/credit-card-payment-issue\"\r\n    ];\r\n    await loadCms(ids);\r\n}\r\nexport const loadStep2Cms = async () => {\r\n    const ids = [\r\n        \"label::artwork-added\", \"label::artworks-added\",\r\n        \"18th-salon-application/step-2::instructions\",\r\n        \"18th-salon-application/step-2::more-artworks-required\",\r\n        \"18th-salon-application/step-2::more-artworks-available\",\r\n        \"button::back\",\"button::next\",\"button::add-artwork\"\r\n    ];\r\n    await loadCms(ids);\r\n}\r\nexport const loadSponsorsCms = async () => {\r\n    await loadCms([\r\n        \"18th-salon-application/sponsors::page-body\"\r\n    ]);\r\n}\r\nexport const loadRulesCms = async () => {\r\n    await loadCms([\r\n        \"18th-salon-application/rules::page-body\",\r\n        \"button::start-application\",\"button::update-application\"\r\n    ]);\r\n}\r\nexport const getText = (id: string, backup?: string, data?: Record<string, any>) => {\r\n    const html = cms[id]?.item;\r\n    if (!html) {\r\n        return data && backup ? formatText(backup, data) : backup || \"\";\r\n    }\r\n    let text = plainText(html);\r\n    if (data) {\r\n        text = formatText(text, data);\r\n    }\r\n    return text;\r\n}\r\nenum Claim {\r\n    IsLoggedIn,\r\n    CanApply,\r\n    IsRegistered\r\n}\r\nexport const getApplicationStatusJson = async (options?: { forceRefresh: boolean }) => getOrSetAsync(\"application-status\", async () => {\r\n    const res = await fetch(\"/SalonApplication/Salon/GetApplicationStatusJson\");\r\n    const json = await res.json();\r\n    return json;\r\n}, options);\r\nexport const App : Component = () => {\r\n    const authorised = async (claims: Claim[]) => {\r\n        const json = await getApplicationStatusJson();\r\n        if (!json.Success) {\r\n            toast.error(\"Unable to contact the server just now. Please try reloading the page.\");\r\n            return false;\r\n        }\r\n        const data = json.Data;\r\n        if (claims.some(c => c == Claim.IsLoggedIn)) {\r\n            if (!data.isLoggedIn) {\r\n                toast.error(\"You must be logged in to access this page.\");\r\n                return false;\r\n            }\r\n        }\r\n        if (claims.some(c => c == Claim.CanApply)) {\r\n            if (!data.canApply) {\r\n                if (data.isAdmin) {\r\n                    toast.error(\"The ARC Salon Application has not yet opened: but Admin is granted access.\");\r\n                    return true;\r\n                }\r\n                toast.error(\"The ARC Salon Application has not yet opened.\");\r\n                return false;\r\n            }\r\n        }\r\n        if (claims.some(c => c == Claim.IsRegistered)) {\r\n            if (!data.isRegistered) {\r\n                toast.error(\"You must complete the profile form on Step 1 to continue.\");\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    const getStep1_Data = async () => {\r\n        const res = await fetch(\"/SalonApplication/Salon/GetStep1Json\");\r\n        const json = await res.json();\r\n        return json.Data;\r\n    }\r\n    const getStep1_Resources = async () => getOrSetCache(\"/SalonApplication/Salon/GetResourcesJson\", async () => {\r\n        const res = await fetch(\"/SalonApplication/Salon/GetResourcesJson\");\r\n        const json = await res.json();\r\n        return json.Data;\r\n    });\r\n    const fetchStep1Data = async ({ navigate }: any) => {\r\n        if (!await authorised([Claim.CanApply])) {\r\n            return navigate(\"/not-authorised\");\r\n        }\r\n        if (!await authorised([Claim.IsLoggedIn])) {\r\n            return navigate(\"/not-logged-in\");\r\n        }\r\n        const _step1 = await getStep1_Data();\r\n        const step1 = {\r\n            id: _step1.Id,\r\n            salonId: _step1.SalonId,\r\n            biography: _step1.Biography,\r\n            profile: {\r\n                salonEntrantImageId: _step1.ArtistProfileImageId,\r\n                imageUrl: _step1.ArtistProfileImageUrl\r\n            },\r\n            personal: {\r\n                firstName: _step1.FirstName,\r\n                lastName: _step1.LastName\r\n            },\r\n            address: {\r\n                streetAddress1: _step1.StreetAddress1,\r\n                streetAddress2: _step1.StreetAddress2,\r\n                city: _step1.City,\r\n                state: _step1.State,\r\n                countryId: _step1.CountryId,\r\n                postalCode: _step1.PostalCode\r\n            },\r\n            catalogue: {\r\n                wantsFree: _step1.WantsFreeCatalogue,\r\n                wantsAdditional: !!_step1.AdditionalCataloguesOrdered,\r\n                additionalOrdered: _step1.AdditionalCataloguesOrdered || 0\r\n            },\r\n            isStudent: _step1.IsHighSchoolStudent,\r\n            student: {\r\n                age: _step1.Age,\r\n                school: {\r\n                    name: _step1.HighSchool,\r\n                    instructors: _step1.HighSchoolInstructors,\r\n                    claimsIsTitle1: _step1.ClaimsToAttendTitle1HighSchool,\r\n                    isTitle1: _step1.AttendsTitle1HighSchool,\r\n                },\r\n                parentOrLegalGuardian: {\r\n                    name: _step1.ParentOrLegalGuardianName,\r\n                    email: _step1.ParentOrLegalGuardianEmail,\r\n                    phoneNumber: _step1.ParentOrLegalGuardianPhoneNumber\r\n                }\r\n            },\r\n            socials: {\r\n                facebook: _step1.Facebook,\r\n                twitter: _step1.Twitter,\r\n                instagram: _step1.Instagram,\r\n            },\r\n            contact: {\r\n                email: _step1.Email,\r\n                phoneNumber: _step1.PhoneNumber\r\n            },\r\n            acceptedTermsAndConditions: _step1.AcceptedTermsAndConditions\r\n        } as EntrantProfile;\r\n        const resources = await getStep1_Resources();\r\n        return {\r\n            step1,            \r\n            resources\r\n        } as Step1RouteData;\r\n    };\r\n    const getStep3_Data = async () => {\r\n        const res = await fetch(\"/SalonApplication/Salon/GetStep3DataJson\");\r\n        const json = await res.json();\r\n        return json.Data;\r\n    };\r\n    const getStep3_Resources = async () => getOrSetCache(\"/SalonApplication/Salon/GetStep3ResourcesJson\", async () => {\r\n        const res = await fetch(\"/SalonApplication/Salon/GetStep3ResourcesJson\");\r\n        const json = await res.json();\r\n        return json.Data;\r\n    });\r\n    const getAddress = async () => {\r\n        const res = await fetch(\"/SalonApplication/Salon/GetAddressJson\");\r\n        const json = await res.json();\r\n        return json.Data;\r\n    }\r\n    const fetchStep3Data = async ({ navigate }: any) => {\r\n        try {\r\n            if (!await authorised([Claim.IsLoggedIn])) {\r\n                return navigate(\"/not-logged-in\");\r\n            }\r\n            if (!await authorised([Claim.IsRegistered])) {\r\n                return navigate(\"/step-1\");\r\n            }\r\n            const data = await getStep3_Data();\r\n            const resources = await getStep3_Resources();\r\n            const address = await getAddress();\r\n            return {\r\n                address,\r\n                data,\r\n                resources\r\n            };\r\n        } catch (ex) {\r\n            log(\"fetchStep3\", { ex });\r\n            JL().error(\"\")\r\n            navigate(\"/error\", { state: { ex } });\r\n        }\r\n    };\r\n    const getStep2_Data = async () => {\r\n        const res = await fetch(\"/SalonApplication/Salon/GetStep2Json\");\r\n        const json = await res.json();\r\n        return json.Data;\r\n    };\r\n    const getStep2_Resources = async () => {\r\n        const res = await fetch(\"/SalonApplication/Salon/GetStep2ResourcesJson\");\r\n        const json = await res.json();\r\n        return json.Data;\r\n    }\r\n    const fetchStep2Data = async ({ navigate }: any) => {\r\n        try {\r\n            if (!await authorised([Claim.IsLoggedIn])) {\r\n                return navigate(\"/not-logged-in\");\r\n            }\r\n            if (!await authorised([Claim.IsRegistered])) {\r\n                return navigate(\"/step-1\");\r\n            }\r\n            const artworks = await getStep2_Data();\r\n            const resources = await getStep2_Resources();\r\n            const session = await getApplicationStatusJson();\r\n            return {\r\n                session: session?.Data,\r\n                artworks,\r\n                resources\r\n            };\r\n        } catch (ex) {\r\n            log(\"fetchStep2Data\", { ex });\r\n            navigate(\"/error\", { state: { ex }});\r\n        }\r\n    }\r\n    const fetchRulesData = async ({ navigate}:any) => {\r\n        try {\r\n            const sessionJson = await getApplicationStatusJson();\r\n            return {\r\n                session: sessionJson.Data\r\n            };\r\n        } catch (ex) {\r\n            log(\"fetchRulesData\", { ex });\r\n            navigate(\"/error\", { state: { ex }});\r\n        }\r\n    }\r\n    const fetchPaypalCancelledData = async({ navigate }: any) => {\r\n        try {\r\n            // const params = useParams();\r\n            // const token = params.token;\r\n            toast.error(\"The Paypal transaction was cancelled on the Paypal website.\");\r\n            return fetchStep3Data({ navigate });\r\n        }catch (ex) {\r\n            log(\"fetchPaypalCancelledData\", { ex });\r\n            navigate(\"/error\", { state: ex });\r\n        }\r\n    }\r\n    const getUrlSearchParams = () => new URLSearchParams(window.location?.hash?.split(\"?\")[1]);\r\n    const fetchPaypalConfirmedData = async({ navigate }: any) => {\r\n        try {\r\n            const params = getUrlSearchParams();\r\n            console.log(\"fetchPaypalConfirmedData\", { params });\r\n            return {\r\n                token: params.get(\"token\"),\r\n                paymentId: params.get(\"paymentId\"),\r\n                payerId: params.get(\"PayerID\")\r\n            };\r\n        } catch (ex) {  \r\n            log(\"fetchPaypalConfirmedData\", { ex });\r\n            navigate(\"/error\", { state: ex });\r\n        }\r\n    }\r\n    const getArtwork = async (id: number) => {\r\n        const response = await fetchGet(\"/SalonApplication/SalonSubmission/GetArtworkJson\", { id });\r\n        const json = await response.json();\r\n        return json.Data;\r\n    }\r\n    const getArtworkImage = async (model: any) => {\r\n        const response = await fetchGet(\"/SalonApplication/SalonSubmission/GetArtworkImageJson\", model);\r\n        const json = await response.json();\r\n        return json.Data as ArtworkImageData;\r\n    }\r\n    const fetchArtworkImageData = async ({ params, navigate }: any) => {\r\n        try {\r\n            if (!await authorised([Claim.IsLoggedIn, Claim.IsRegistered])) {\r\n                return navigate(\"/not-authorised\");\r\n            }\r\n            if (!!params.artworkId) {\r\n                const artwork = await getArtwork(params.artworkId);\r\n                return {\r\n                    id: \"\",\r\n                    isPrimary: false,\r\n                    isDeleted: false,\r\n                    artwork: {\r\n                        id: artwork.id,\r\n                        title: artwork.title\r\n                    },\r\n                    newImage: {}\r\n                } as ArtworkImageData;\r\n            }\r\n            if (params.artworkImageId === undefined) {                \r\n                navigate(\"/not-found\");\r\n            }\r\n            const artworkImageId = params.artworkImageId as number;\r\n            const model = {\r\n                artworkImageId\r\n            };\r\n            const artworkImage = await getArtworkImage(model);\r\n            return artworkImage;\r\n        }\r\n        catch (ex) {\r\n            log(\"fetchArtworkImageData\", { ex });\r\n            navigate(\"/error\", { state: { ex }});\r\n        }\r\n    };\r\n    const fetchIntroduction = async ({ navigate }: any) => {\r\n        try {\r\n            const session = await getApplicationStatusJson();\r\n            log(\"fetchIntroduction\",  { session});\r\n            return { session: session.Data };\r\n        } catch (ex) {\r\n            log(\"fetchIntroduction\", { ex });\r\n            navigate(\"/error\", { state: { ex }});\r\n        }\r\n    }\r\n    const getCreditCardInfo = async () => {\r\n        const response = await fetch(\"/SalonApplication/Salon/GetCreditCardJson\");\r\n        const json = await response.json();\r\n        return json.Data;\r\n    }\r\n    const fetchCreditCard = async ({ navigate }: any) => {\r\n        try {\r\n            if (!await authorised([Claim.IsLoggedIn, Claim.IsRegistered])) {\r\n                return navigate(\"/not-authorised\");\r\n            }\r\n            const info = await getCreditCardInfo();\r\n            return {\r\n                entrant: info.entrant,\r\n                address: info.address,\r\n                resources: {\r\n                    countries: info.resources.countries\r\n                }\r\n            };\r\n        } catch (ex) {\r\n            log(\"fetchCreditCard\", { ex });\r\n            navigate(\"/error\");\r\n        }\r\n    };\r\n    const log = (message: string, data: Record<string,any>) => {\r\n        console.log(message, data);\r\n    }\r\n    const getEditArtworkResources = async () => {\r\n        const res = await fetch(\"/SalonApplication/SalonSubmission/GetResourcesJson\");\r\n        const json = await res.json();\r\n        return json.Data;\r\n    }\r\n    const fetchArtworkData = async ({ params, navigate }: any) => {\r\n        try {\r\n            if (!await authorised([Claim.IsLoggedIn])) {\r\n                return navigate(\"/not-logged-in\");\r\n            }\r\n            if (!await authorised([Claim.IsRegistered])) {\r\n                return navigate(\"/step-1\");\r\n            }\r\n            const session = (await getApplicationStatusJson()).Data;\r\n            const resources = await getEditArtworkResources();\r\n            const categories = resources.categories;\r\n            if (params.id == undefined) {\r\n                const data = {\r\n                    session,\r\n                    categories,\r\n                    artwork: {\r\n                        title: \"\",\r\n                        medium: \"\",\r\n                        purchaseAwardNominatedPrice: \"\",\r\n                        width: \"\", height: \"\", depth: \"\", unitOfMeasurement: \"ins\",\r\n                        categoryIds: [],\r\n                        year: \"2024\",\r\n                        location: \"\",\r\n                        comment: \"\",\r\n                        student: {\r\n                            firstName: \"\",\r\n                            lastName: \"\",\r\n                            age: \"\"\r\n                        },\r\n                        framed: {}\r\n                    } as any\r\n                } as EditArtworkData;\r\n                console.log(\"/add-artwork:fetchArtworkData\", { data });\r\n                return data;\r\n            }\r\n            const id = params.id as number;\r\n            const response = await fetchGet(\"/SalonApplication/SalonSubmission/GetArtworkJson\", { id });\r\n            const json = await response.json();\r\n            if (!json.Success) {\r\n                navigate(\"/error\");\r\n                return;\r\n            }\r\n            return {\r\n                session,\r\n                categories,\r\n                artwork: json.Data as EditArtworkModel\r\n            } as EditArtworkData;\r\n        } catch (ex) {\r\n            log(\"fetchArtworkData\", { ex });\r\n            navigate(\"/error\");\r\n        }\r\n    };\r\n    const preload = async () => {\r\n        /**\r\n         * CMS\r\n         */\r\n        await loadCms([\r\n            \"17th-arc-salon-application/router::page/not-logged-in\",\r\n            \"17th-arc-salon-application/router::page/not-found\",\r\n            \"17th-arc-salon-application/router::page/not-authorised\",\r\n            \"17th-arc-salon-application/router::page/error\"\r\n        ]);\r\n        await loadStep1Cms();\r\n        await loadStep2Cms();\r\n        await loadStep3Cms();\r\n        await loadCreditCardCms();\r\n        await loadRulesCms();\r\n        await loadAwardsCms();\r\n        await loadCategoriesCms();\r\n        await loadJurorsCms();\r\n        await loadSponsorsCms();\r\n        /**\r\n         * Resources\r\n         */\r\n        await getStep1_Resources();\r\n        await getStep2_Resources();\r\n        await getStep3_Resources();\r\n        /**\r\n         * Images\r\n         */\r\n        preloadImagesFromCms([\r\n            \"18th-salon-application/awards::page-body\",\r\n            \"18th-salon-application/categories::page-body\",\r\n            \"18th-salon-application/sponsors::page-body\"\r\n        ]);\r\n        preloadImagesFromCms([\r\n            \"jurors::fred-ross\",\r\n            \"jurors::kara-lysandra-ross\",\r\n            \"jurors::vern-swanson\",\r\n            \"jurors::michael-john-angel\",\r\n            \"jurors::juliette-aristides\",\r\n            \"jurors::daniel-graves\",\r\n            \"jurors::anthony-waichulis\",\r\n            \"jurors::patrick-wilshire\",\r\n            \"jurors::eric-rhoads\",\r\n            \"jurors::mary-pettis\",\r\n            \"jurors::maudie-brady\",\r\n            \"jurors::renee-bemis\",\r\n            \"jurors::arantzazu-martinez\",\r\n            \"jurors::xu-mangyao\",\r\n            \"jurors::leng-jun\",\r\n            \"jurors::qin-ming\",\r\n            \"jurors::bridget-macavoy\",\r\n            \"jurors::bai-yuping\",\r\n            \"jurors::thomas-kegler\",\r\n            \"jurors::richard-macdonald\",\r\n            \"jurors::julie-bell\",\r\n            \"jurors::mario-andres-robinson\",\r\n            \"jurors::jim-mcvicker\",\r\n            \"jurors::annie-murphy-robinson\"\r\n        ]);\r\n    };\r\n    const preloadImagesFromCms = (ids: string[]) => {\r\n        const imgs =_.flatten(\r\n            ids.map(id => getElementsFromHtml(cms[id]?.item, \"img\") as HTMLImageElement[])\r\n        );\r\n        const urls = imgs.map(x => x.src);\r\n        preloadImages(urls);\r\n    }\r\n    onMount(async() => {\r\n        await preload();\r\n    });\r\n    return (\r\n    <Router source={hashIntegration()}>\r\n        <div class=\"page-container\">\r\n            <CMSProvider cms={cms} setCms={setCms}>\r\n                <Toaster />\r\n                <JetMenu></JetMenu>\r\n                <LogoSlider></LogoSlider>\r\n                <Header></Header>\r\n                <div class=\"container\" style=\"padding-bottom: 40px;\">\r\n                    <ErrorBoundary fallback={err => {\r\n                        JL().fatalException(\"[ SalonApplication ] Exception caught at the ErrorBoundary\", err);\r\n                        return (\r\n                            <div class=\"blank-page\">{err.toString()}</div>\r\n                        )\r\n                    }}>\r\n                        <Routes>\r\n                            <Route path={\"/categories\"} component={CategoriesPage}></Route>\r\n                            <Route path={\"/jurors\"} component={JurorsPage}></Route>\r\n                            <Route path={\"/rules\"} component={RulesPage} data={fetchRulesData}></Route>\r\n                            <Route path={\"/awards\"} component={AwardsPage}></Route>\r\n                            <Route path={\"/sponsors\"} component={SponsorsPage}></Route>\r\n                            <Route path={[\"/step-1\",\"/my-details\"]} component={Step1Page} data={fetchStep1Data}></Route>\r\n                            <Route path={[\"/step-2\", \"/my-artworks\"]} component={Step2Page} data={fetchStep2Data}></Route>\r\n                            <Route path={[\"/step-3\",\"/checkout\"]} component={Step3Page} data={fetchStep3Data}></Route>\r\n                            <Route path={[\"/add-artwork\",\"/edit-artwork/:id\"]} component={EditArtwork} data={fetchArtworkData}></Route>\r\n                            <Route path={[\"/edit-artwork/:id\"]} component={EditArtwork} data={fetchArtworkData}></Route>\r\n                            <Route path={[\"/add-image-to-artwork/:artworkId\",\"/edit-image/:artworkImageId\"]} component={EditImage} data={fetchArtworkImageData}></Route>\r\n                            <Route path={\"/credit-card\"} component={CreditCardPage} data={fetchCreditCard}></Route>\r\n                            <Route path={\"/payment/paypal-confirmed\"} component={PaypalConfirmedPage} data={fetchPaypalConfirmedData}></Route>\r\n                            <Route path={\"/payment/paypal-cancelled\"} component={Step3Page} data={fetchPaypalCancelledData}></Route>\r\n                            <Route path={\"/payment/processed\"} component={PaymentProcessedPage}></Route>\r\n                            <Route path={\"/not-logged-in\"} component={() => {\r\n                                return (\r\n                                    <div class=\"blank-page\">\r\n                                        <CMS id=\"17th-arc-salon-application/router::page/not-logged-in\">\r\n                                            <p>\r\n                                                You must be logged in to access this page.\r\n                                            </p>\r\n                                            <p>\r\n                                                Please <a class=\"tape\" href=\"/Home/Login\">log in</a> to your ARC account or <a class=\"tape\" href=\"/Home/Register\">register</a> one to proceed.\r\n                                            </p>\r\n                                        </CMS>\r\n                                    </div>\r\n                                )\r\n                            }}></Route>\r\n                            <Route path={\"/not-found\"} component={() => {\r\n                                return (\r\n                                    <div class=\"blank-page\">\r\n                                        <CMS id=\"17th-arc-salon-application/router::page/not-found\">\r\n                                            Sorry, that page was not found\r\n                                        </CMS>\r\n                                    </div>\r\n                                )\r\n                            }}></Route>\r\n                            <Route path={\"/not-authorised\"} component={() => {\r\n                                return (\r\n                                    <div class=\"blank-page\">\r\n                                        <CMS id=\"17th-arc-salon-application/router::page/not-authorised\">\r\n                                            You are not authorized to access the page at this time.\r\n                                        </CMS>\r\n                                    </div>\r\n                                );\r\n                            }}></Route>\r\n                            <Route path={\"/error\"} component={() => {\r\n                                const params = useParams();\r\n                                return (\r\n                                    <div class=\"blank-page\">\r\n                                        <h2>\r\n                                            Sorry, there has been an error ...\r\n                                        </h2>\r\n                                        <div>\r\n                                            \r\n                                        </div>\r\n                                    </div>\r\n                                )\r\n                            }}></Route>\r\n                            <Route path={[\"/introduction\",\"/\"]} component={Introduction} data={fetchIntroduction}></Route>\r\n                        </Routes> \r\n                    </ErrorBoundary>\r\n                </div>\r\n                <Footer></Footer>\r\n            </CMSProvider>\r\n        </div>\r\n    </Router>);\r\n}","/* @refresh reload */\r\nimport '/node_modules/cropperjs/dist/cropper.css'\r\nimport './assets/jetmenu.scss'\r\nimport './assets/arc/arc.less'\r\nimport \"./assets/back-to-top.scss\"\r\nimport './assets/styles.less'\r\nimport './assets/bootstrap-wizard.less'\r\nimport './assets/bootstrap-overrides.less'\r\n//import './assets/bootstrap.min.css'\r\nimport './assets/Edit.css'\r\nimport { MountableElement, render } from 'solid-js/web';\r\nimport './modules/type-extensions';\r\nimport { App } from './app';\r\nrender(() => <App />, document.getElementById('root') as MountableElement);"],"names":["relList","link","processPreload","mutations","mutation","node","getFetchOpts","script","fetchOpts","sharedConfig","getContextId","count","num","len","IS_DEV","equalFn","a","b","$PROXY","SUPPORTS_PROXY","$TRACK","signalOptions","ERROR","runEffects","runQueue","STALE","PENDING","UNOWNED","Owner","Transition","ExternalSourceConfig","Listener","Updates","Effects","ExecCount","createRoot","fn","detachedOwner","listener","owner","unowned","current","root","updateFn","untrack","cleanNode","runUpdates","createSignal","value","options","s","setter","writeSignal","readSignal","createComputed","c","createComputation","updateComputation","createRenderEffect","createEffect","runUserEffects","createMemo","batch","on","deps","isArray","prevInput","defer","prevValue","input","i","result","onMount","onCleanup","catchError","handler","err","handleError","getListener","getOwner","runWithOwner","o","prev","prevListener","startTransition","l","t","createContext","defaultValue","id","createProvider","useContext","context","children","memo","resolveChildren","updates","lookUpstream","sSlot","isComp","TransitionRunning","markDownstream","time","runComputation","nextValue","init","pure","state","runTop","ancestors","wait","res","completeUpdates","queue","userLength","e","ignore","source","index","obs","n","castError","runErrors","fns","f","error","results","props","FALLBACK","dispose","d","mapArray","list","mapFn","items","mapped","disposers","indexes","newItems","newLen","j","newIndices","newIndicesNext","temp","tempdisposers","tempIndexes","start","end","newEnd","item","disposer","mapper","set","createComponent","Comp","trueFn","propTraps","_","property","receiver","resolveSource","resolveSources","length","v","mergeProps","sources","proxy","keys","sourcesMap","defined","sourceKeys","key","desc","target","definedKeys","splitProps","blocked","k","otherObject","objects","propName","isDefaultDesc","objectIndex","narrowedError","name","For","fallback","Show","keyed","conditionValue","condition","child","Switch","chs","switchFunc","ch","mps","func","mp","prevFunc","sel","Match","Errors","resetErrorBoundaries","ErrorBoundary","errored","setErrored","booleans","Properties","ChildProperties","Aliases","PropAliases","getPropAlias","prop","tagName","DelegatedEvents","SVGElements","SVGNamespace","reconcileArrays","parentNode","bLength","aEnd","bEnd","aStart","bStart","after","map","sequence","$$EVENTS","render","code","element","insert","template","html","isImportNode","isSVG","isMathML","create","delegateEvents","eventNames","document","eventHandler","setAttribute","setAttributeNS","namespace","setBoolAttribute","className","addEventListener","delegate","handlerFn","classList","classKeys","prevKeys","toggleClassKey","classValue","style","nodeStyle","spread","skipChildren","prevProps","insertExpression","use","assign","arg","parent","accessor","marker","initial","skipRef","assignProp","toPropertyName","w","classNames","nameLen","isCE","isProp","isChildProp","propAlias","forceProp","h","ns","oriTarget","oriCurrentTarget","retarget","handleNode","data","walkUpTree","path","unwrapArray","multi","cleanChildren","array","currentArray","normalizeIncomingArray","appendNodes","normalized","unwrap","dynamic","replacement","inserted","el","isParent","isServer","SVG_NAMESPACE","createElement","Portal","useShadow","mount","content","hydrating","clean","setClean","cleanup","container","renderRoot","createDynamic","component","cached","isSvg","Dynamic","others","bindEvent","type","intercept","setValue","get","querySelector","selector","scrollToHash","hash","fallbackTop","createIntegration","utils","wrap","signal","next","normalizeIntegration","integration","pathIntegration","replace","scroll","notify","delta","hashIntegration","hashIndex","str","to","createBeforeLeave","listeners","subscribe","confirm","force","hasSchemeRegex","trimPathRegex","normalizePath","omitSlash","resolvePath","base","from","basePath","fromPath","invariant","message","joinPaths","extractSearchParams","url","params","createMatcher","partial","matchFilters","pattern","splat","segments","location","locSegments","lenDiff","match","matchFilter","segment","locSegment","matchSegment","remainder","filter","isEqual","scoreRoute","route","score","createMemoObject","expandOptionals","prefix","suffix","prefixes","expansion","p","MAX_REDIRECTS","RouterContextObj","RouteContextObj","useRouter","TempRoute","useRoute","useResolvedPath","useHref","router","to_","useNavigate","useLocation","useParams","useRouteData","useBeforeLeave","createRoutes","routeDef","isLeaf","shared","asArray","acc","originalPath","createBranch","routes","matches","createBranches","stack","branches","routeDefs","def","isEmptyArray","branch","getRouteMatches","createLocation","origin","path_","pathname","search","createRouterContext","out","setSource","parsePath","renderPath","beforeLeave","output","isRouting","setIsRouting","callback","reference","setReference","setState","referrers","baseRoute","navigatorFactory","navigateFromRoute","resolve","nextState","resolvedTo","navigateEnd","first","handleAnchorClick","evt","href","rel","createRouteContext","outlet","preload","Router","routerState","_$createComponent","Provider","Routes","parentRoute","Outlet","m","Object","push","routeStates","nextMatches","prevMatches","equal","prevMatch","nextMatch","splice","forEach","when","Route","childRoutes","A","inactiveClass","activeClass","rest","isActive","undefined","split","toLowerCase","loc","startsWith","_el$","_tmpl$","_$mergeProps","JSON","stringify","class","factory","module","this","modules","installedModules","__webpack_require__","moduleId","exports","getter","object","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Parchment","__extends","extendStatics","__","ParchmentError","_super","_this","attributes","classes","tags","types","Scope","query","BlotClass","find","bubble","scope","names","register","Definitions","_i","Definition","tagNames","tag","diff","extend","op","NULL_CHARACTER","Delta","ops","text","newOp","lastOp","predicate","passed","failed","elem","iter","nextOp","other","thisIter","otherIter","firstOther","firstLeft","thisOp","otherOp","strings","prep","diffResult","opLength","newline","line","priority","offset","nextType","hasOwn","toStr","defineProperty","gOPD","arr","isPlainObject","obj","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","src","copy","copyIsArray","clone","deep","_createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","_get","_extend","_extend2","_interopRequireDefault","_quillDelta","_quillDelta2","_parchment","_parchment2","_break","_break2","_inline","_inline2","_text","_text2","_classCallCheck","instance","_possibleConstructorReturn","self","call","_inherits","subClass","superClass","NEWLINE_LENGTH","BlockEmbed","_Parchment$Embed","attribute","block","Block","_Parchment$Block","domNode","_this2","leaf","bubbleFormats","lines","blot","ref","head","formats","_typeof","_slicedToArray","sliceIterator","_arr","_n","_d","_e","_s","_editor","_editor2","_emitter3","_emitter4","_module","_module2","_selection","_selection2","_logger","_logger2","_theme","_theme2","_defineProperty","debug","Quill","limit","overwrite","expandConfig","range","modify","contents","refNode","_this3","_overload","overload","_overload2","enabled","scrollTop","_this4","change","_this5","_overload3","_overload4","_this6","_overload5","_overload6","bounds","containerBounds","_overload7","_overload8","focus","_overload9","_overload10","embed","_this7","_this8","_overload11","_overload12","_this9","_overload13","_overload14","_this10","deleted","applied","ret","_overload15","_overload16","_this11","userConfig","themeConfig","config","moduleNames","moduleConfig","moduleClass","modifier","shift","oldDelta","shiftRange","_emitter","args","_emitter2","_map","pos","_map2","_map3","_map4","Inline","_Parchment$Inline","selfIndex","otherIndex","TextBlot","_Parchment$Text","_eventemitter","_eventemitter2","EVENTS","eventName","_len","_key","_node$__quill$emitter","Emitter","_EventEmitter","event","_len2","_key2","_ref","Module","quill","levels","level","method","_console","logger","newLevel","pSlice","objectKeys","isArguments","deepEqual","actual","expected","opts","objEquiv","isUndefinedOrNull","isBuffer","x","ka","kb","Attributor","attrName","keyName","attributeBit","_block","_block2","Code","_Inline","CodeBlock","_Block","frag","_descendant","_descendant2","nextNewline","prevNewline","isolateLength","_descendant3","_descendant4","searchIndex","reverse","_op","_op2","_code","_code2","_cursor","_cursor2","_clone","_clone2","_deepEqual","_deepEqual2","ASCII","Editor","consumeNextNewline","scrollLength","normalizeDelta","_scroll$line","_scroll$line2","_line$descendant","_line$descendant2","format","lengthRemaining","lineLength","codeIndex","codeLength","leaves","_path","formatsArr","blots","combineFormats","_scroll$line3","_scroll$line4","suffixLength","cursorIndex","textBlot","oldValue","oldText","newText","diffDelta","combined","merged","_toConsumableArray","arr2","Range","Selection","emitter","native","_context$range","startNode","startOffset","endNode","endOffset","_format","nativeRange","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","side","rect","selection","positions","position","_position","contains","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","scrollingContainer","last","scrollBounds","oldRange","_getRange","_getRange2","lastRange","descendant","Break","linked_list_1","shadow_1","ContainerBlot","makeBlot","criteria","_a","descendants","lengthLeft","childBlot","refBlot","targetParent","inclusive","addedNodes","removedNodes","FormatBlot","wrapper","LeafBlot","lib","keepNull","Iterator","retOp","_instanceof","nativeMap","nativeSet","nativePromise","circular","depth","prototype","includeNonEnumerable","allParents","allChildren","useBuffer","proto","reject","__getRegExpFlags","keyChild","valueChild","entryChild","attrs","symbols","symbol","allPropertyNames","propertyName","__objToStr","__isDate","__isArray","__isRegExp","re","flags","_container","_container2","isLine","Scroll","_Parchment$Scroll","whitelist","_line","_line2","_line3","_line4","newlineIndex","_newlineIndex","getLines","_quill","_quill2","SHORTKEY","Keyboard","_Module","binding","normalize","handleEnter","handleBackspace","handleDelete","handleDeleteRange","which","bindings","_quill$getLine","_quill$getLine2","_quill$getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","prevented","makeFormatHandler","makeCodeBlockHandler","_quill$getLine3","_quill$getLine4","_quill$getLine5","_quill$getLine6","_quill$getLine7","_quill$getLine8","_quill$getLine9","_quill$getLine10","makeEmbedArrowHandler","shiftKey","_ref3","where","_quill$getLeaf3","_quill$getLeaf4","_quill$getLine11","_quill$getLine12","_quill$getLine13","_quill$getLine14","curFormats","prevFormats","nextLength","_quill$getLine15","_quill$getLine16","_quill$getLine17","_quill$getLine18","nextFormats","firstFormats","lastFormats","lineFormats","indent","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","Cursor","textNode","restoreText","Container","_Parchment$Container","ColorAttributor","_Parchment$Attributor","ColorClass","ColorStyle","Link","_sanitize","protocols","anchor","protocol","_keyboard","_keyboard2","_dropdown","_dropdown2","optionsCounter","toggleAriaAttribute","Picker","select","option","label","trigger","selected","_embed","_embed2","_scroll","_scroll2","_clipboard","_clipboard2","_history","_history2","ShadowBlot","parentBlot","refDomNode","AttributorStore","styles","attr","ClassAttributor","camelize","parts","part","StyleAttributor","Theme","GUARD_TEXT","Embed","childNode","prevLength","AlignAttribute","AlignClass","AlignStyle","_color","BackgroundClass","BackgroundStyle","DirectionAttribute","DirectionClass","DirectionStyle","FontClass","FontStyleAttributor","FontStyle","SizeClass","SizeStyle","History","dest","getLastChangeIndex","changeDelta","undoDelta","timestamp","endsWithNewlineChange","deleteLength","changeIndex","_colorPicker","_colorPicker2","_iconPicker","_iconPicker2","_picker","_picker2","_tooltip","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","picker","buttons","icons","button","selects","fillSelect","update","fileInput","reader","BaseTooltip","_Tooltip","boundsContainer","mode","preview","extractVideoUrl","values","LinkedList","nodes","cur","curNode","curIndex","curLength","OBSERVER_CONFIG","MAX_OPTIMIZE_ITERATIONS","ScrollBlot","records","mark","markParent","optimize","remaining","grandChild","obj1","obj2","InlineBlot","BlockBlot","EmbedBlot","_toggle","token","searchString","subjectString","lastIndex","thisArg","DIFF_DELETE","DIFF_INSERT","DIFF_EQUAL","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","fix_cursor","fix_emoji","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","k1_offset","x1","y1","k2_offset","x2","diff_bisectSplit_","k2","y2","y","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_halfMatchI_","seed","best_common","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","prefixLength","hm1","hm2","pointer","count_delete","count_insert","text_delete","text_insert","changes","cursor_normalize_diff","current_pos","next_pos","split_pos","d_left","d_right","norm","ndiffs","cursor_pointer","d_next","merge_tuples","compact","starts_with_pair_end","ends_with_pair_start","fixed_diffs","left_d","right_d","shim","supportsArgumentsClass","supported","unsupported","has","Events","EE","once","EventEmitter","events","exists","available","ee","a1","a2","a3","a4","a5","_extend3","_align","_background","_direction","_font","_size","DOM_KEY","CLIPBOARD_CONFIG","matchText","matchNewline","matchBreak","matchBlot","matchSpacing","matchAttributor","matchStyles","matchIndent","matchAlias","matchIgnore","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","matcher","_prepareMatching","_prepareMatching2","elementMatchers","textMatchers","traverse","deltaEndsWith","paste","pair","_pair","applyFormat","computeStyle","endText","childrenDelta","nodeHeight","replacer","collapse","Bold","Toolbar","addControls","_ret","_this$quill$selection","_this$quill$selection2","_quill$selection$getR","_quill$selection$getR2","addButton","groups","controls","group","control","addSelect","align","ColorPicker","_Picker","colorLabel","IconPicker","Tooltip","left","top","rootBounds","height","verticalShift","_base","_base2","_link","_link2","_icons","_icons2","TOOLBAR_CONFIG","SnowTheme","_BaseTheme","toolbar","SnowTooltip","tooltip","_BaseTooltip","_core","_core2","_indent","_blockquote","_blockquote2","_header","_header2","_list","_list2","_bold","_bold2","_italic","_italic2","_script","_script2","_strike","_strike2","_underline","_underline2","_image","_image2","_video","_video2","_formula","_formula2","_syntax","_syntax2","_toolbar","_toolbar2","_bubble","_bubble2","_snow","_snow2","IdentAttributor","IndentClass","Blockquote","Header","ListItem","List","_Container","listEventHandler","Italic","_Bold","Script","Strike","Underline","ATTRIBUTES","Image","Video","_BlockEmbed","FormulaBlot","_Embed","Formula","SyntaxCodeBlock","_CodeBlock","_highlight","CodeToken","Syntax","timer","BubbleTheme","BubbleTooltip","lastLine","_bounds","arrow","kebabCase","defaultValues","theme","size","header","color","background","clipboard","matchVisual","SolidQuill","editorRef","mergedProps","as","internal","otherProps","quillProps","externalProps","eventParts","join","onReady","readOnly","r$","_ref$","QuillEditor","isEmpty","setIsEmpty","checkIsEmpty","innerHTML","console","log","dangerouslyPasteHTML","setInstance","editor","setHtml","getHtml","remove","onTextChange","placeholder","active","$RAW","$NODE","$HAS","$SELF","wrap$1","proxyTraps$1","isWrappable","unwrapped","getNodes","getNode","proxyDescriptor$1","trackSelf","ownKeys","tracked","deleting","mergeStoreNode","updateArray","updatePath","traversed","partType","by","createStore","store","unwrappedStore","wrappedStore","setStore","producers","setterTraps","produce","Progress","navigate","isContentReady","steps","onStepClicked","onBeforeNavigatingToAnotherStep","stepState","step","currentStep","loadCms","getText","_el$2","firstChild","each","_el$3","_tmpl$3","_el$4","_el$6","nextSibling","_el$7","_el$5","_tmpl$2","$$click","preventDefault","disabled","_$effect","_$className","_$delegateEvents","cache","getOrSetAsync","forceRefresh","toQueryString","_data","URLSearchParams","toString","local","parameters","onClick","window","Required","visible","setVisible","formatText","RegExp","commitChange","typeCode","TypeCode","Value","Format","json","fetchPost","ex","getElementsFromHtml","df","createDocumentFragment","div","appendChild","Array","querySelectorAll","preloadImages","urls","toFormData","formData","FormData","append","cleanImagePath","filepath","encodeURI","nullSafe","model","nullSafety","Blob","File","fetchGet","fetch","settings","includeNullFields","body","useJson","headers","response","scrollToTop","scrollTo","getHeight","maxWidth","width","ratio","Math","floor","getWidth","maxHeight","Img","imageflow","naturalWidth","naturalHeight","_$spread","_$style","_$p","r","_objectSpread2","_toPrimitive","_toPropertyKey","_defineProperties","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","minLen","IS_BROWSER","WINDOW","IS_TOUCH_DEVICE","HAS_POINTER_EVENT","NAMESPACE","ACTION_ALL","ACTION_CROP","ACTION_MOVE","ACTION_ZOOM","ACTION_EAST","ACTION_WEST","ACTION_SOUTH","ACTION_NORTH","ACTION_NORTH_EAST","ACTION_NORTH_WEST","ACTION_SOUTH_EAST","ACTION_SOUTH_WEST","CLASS_CROP","CLASS_DISABLED","CLASS_HIDDEN","CLASS_HIDE","CLASS_INVISIBLE","CLASS_MODAL","CLASS_MOVE","DATA_ACTION","DATA_PREVIEW","DRAG_MODE_CROP","DRAG_MODE_MOVE","DRAG_MODE_NONE","EVENT_CROP","EVENT_CROP_END","EVENT_CROP_MOVE","EVENT_CROP_START","EVENT_DBLCLICK","EVENT_TOUCH_START","EVENT_TOUCH_MOVE","EVENT_TOUCH_END","EVENT_POINTER_DOWN","EVENT_POINTER_MOVE","EVENT_POINTER_UP","EVENT_READY","EVENT_RESIZE","EVENT_WHEEL","EVENT_ZOOM","MIME_TYPE_JPEG","REGEXP_ACTIONS","REGEXP_DATA_URL","REGEXP_DATA_URL_JPEG","REGEXP_TAG_NAME","MIN_CONTAINER_WIDTH","MIN_CONTAINER_HEIGHT","DEFAULTS","TEMPLATE","isNaN","isNumber","isPositiveNumber","isUndefined","isObject","hasOwnProperty","_constructor","isFunction","slice","toArray","REGEXP_DECIMALS","normalizeDecimalNumber","times","REGEXP_SUFFIX","setStyle","hasClass","addClass","removeClass","toggleClass","added","REGEXP_CAMEL_CASE","toParamCase","getData","setData","removeData","REGEXP_SPACES","onceSupported","removeListener","addListener","_handler","_element$listeners","dispatchEvent","getOffset","box","REGEXP_ORIGINS","isCrossOriginURL","addTimestamp","getTransforms","rotate","scaleX","scaleY","translateX","translateY","transform","getMaxZoomRatio","pointers","pointers2","maxRatio","pointerId","pointer2","z1","z2","getPointer","endOnly","pageX","pageY","getPointersCenter","startX","startY","getAdjustedSizes","_ref4","aspectRatio","isValidWidth","isValidHeight","adjustedWidth","getRotatedSizes","_ref5","degree","arc","sinArc","cosArc","newWidth","newHeight","getSourceCanvas","image","_ref6","_ref7","_ref8","imageAspectRatio","imageNaturalWidth","imageNaturalHeight","_ref6$rotate","_ref6$scaleX","_ref6$scaleY","_ref8$fillColor","fillColor","_ref8$imageSmoothingE","imageSmoothingEnabled","_ref8$imageSmoothingQ","imageSmoothingQuality","_ref8$maxWidth","_ref8$maxHeight","_ref8$minWidth","minWidth","_ref8$minHeight","minHeight","canvas","maxSizes","minSizes","destMaxSizes","destMinSizes","destWidth","destHeight","param","fromCharCode","getStringFromCharCode","dataView","REGEXP_DATA_URL_HEAD","dataURLToArrayBuffer","dataURL","base64","binary","arrayBuffer","uint8","arrayBufferToDataURL","mimeType","chunks","chunkSize","resetAndGetOrientation","orientation","littleEndian","app1Start","ifdStart","exifIDCode","tiffOffset","endianness","firstIFDOffset","_length","_offset","parseOrientation","cropper","containerData","imageData","viewMode","rotated","canvasWidth","canvasHeight","canvasData","sizeLimited","positionLimited","cropBoxData","cropped","minCanvasWidth","minCanvasHeight","_getAdjustedSizes","newCanvasLeft","newCanvasTop","changed","transformed","_getRotatedSizes","autoCropArea","limited","minCropBoxWidth","minCropBoxHeight","maxCropBoxWidth","maxCropBoxHeight","crossOrigin","alt","previews","img","cropBoxWidth","cropBoxHeight","originalWidth","originalHeight","handlers","ratioX","ratioY","action","touch","right","bottom","minLeft","minTop","renderable","check","methods","hasSameSize","offsetX","offsetY","_this$canvasData","_originalEvent","pivot","center","_scaleX","_scaleY","rounded","widthChanged","heightChanged","_this$getData","initialX","initialY","initialWidth","initialHeight","_options$imageSmoothi","sourceWidth","sourceHeight","srcX","srcY","srcWidth","srcHeight","dstX","dstY","dstWidth","dstHeight","scale","dragBox","face","croppable","movable","AnotherCropper","Cropper","xhr","_parseOrientation","crossOriginUrl","isIOSWebKit","done","sizingImage","cropBox","transformFiles","files","parsedFiles","fileIndex","file","parsedFile","createDropzone","setFiles","isDragging","setIsDragging","setRef","onDragStart","onDragEnd","onDragEnter","onDragLeave","onDragOver","onDrag","onDrop","fileName","_getBlob","Promise","toBlob","blob","isImageFile","test","ImageCropper","isDirty","setSrc","dropzoneColour","setDropzoneColour","filename","setFilename","setWidth","setHeight","errors","setErrors","dimensions","filetype","dropzoneRef","droppedFiles","setError","clearErrors","required","getTruthy","Boolean","Function","getFileExtension","validate","isValid","extension","validFileTypes","some","setDimensions","getImageData","loadImageFromFileInput","blobURL","URL","createObjectURL","reset","loadImageFromUrl","imageUrl","getFilename","fileinput","setupFileInputElement","onUploadClicked","click","pop","dragMode","autoCrop","zoomable","scalable","cropBoxMovable","cropBoxResizable","ready","imageLoaded","setupImageCropperElement","getImageFile","getCroppedCanvas","errs","_el$8","_el$9","_$use","_el$10","_$memo","_el$12","_el$13","_el$14","_el$15","_el$17","_el$18","_tmpl$4","_p$","_v$","_v$2","removeProperty","_$setAttribute","ErrorMessage","checkValid","validators","errorClass","setCustomValidity","checkValidity","validationMessage","validator","toggle","useForm","fields","onblur","oninput","formSubmit","form","userSubmitHandler","onsubmit","hasErrors","field","toVal","mix","tmp","callEventHandler","isPropagationStopped","defaultFn","resolveClasses","now","isTrivialHref","trim","defaultOptions","tabIndex","useButtonProps","meta","getClickHandler","stopPropagation","getKeyDownHandler","getHref","role","onKeyDown","qsa","canUseDOM","optionsSupported","capture","wrappedHandler","onceHandler","removeEventListener","listen","ownerDocument","ATTRIBUTE_PREFIX","dataAttr","Context","useWindow","activeElement","doc","ownerWindow","getComputedStyle","psuedoElement","rUpper","hyphenate","string","msPattern","hyphenateStyleName","supportedTransforms","isTransform","css","transforms","getBodyScrollbarWidth","OPEN_DATA_ATTRIBUTE","ModalManager","handleContainerOverflow","isRTL","_modal","containerState","paddingProp","modal","modalIdx","ModalManager$1","resolveContainerRef","useWaitForDOMRef","resolvedRef","nextRef","manager","getManager","useModalManager","provided","modalManager","dialog","backdrop","add","isTopModal","setDialogRef","setBackdropRef","defaultProps","show","keyboard","autoFocus","enforceFocus","restoreFocus","renderBackdrop","onHide","Modal","isMounted","setIsMounted","exited","setExited","lastFocusRef","prevShow","transition","handleShow","handleDocumentKeyDown","setTimeout","handleEnforceFocus","onShow","currentActiveElement","handleHide","removeKeydownListenerRef","removeFocusListenerRef","restoreFocusOptions","handleBackdropClick","currentTarget","onBackdropClick","keyCode","onEscapeKeyDown","defaultPrevented","handleHidden","onExited","dialogVisible","dialogProps","getChildAsDocument","innerDialog","renderDialog","_$insert","Dialog","appear","unmountOnExit","onExit","onExiting","onEnter","onEntering","onEntered","Backdrop","backdropElement","BackdropTransition","backdropTransition","BaseModal","Manager","TransitionGroupContext","TransitionGroupContext$1","nextFrame","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","noop","in","mountOnEnter","enter","exit","childProps","childRef","isMounting","initialStatus","appearStatus","status","setStatus","nextCallback","mounted","setMounted","notUnmounted","updateStatus","inMemo","prevStatus","nextStatus","cancelNextCallback","getTimeouts","timeout","mounting","performEnter","performExit","appearing","maybeNode","maybeAppearing","nodeRef","timeouts","enterTimeout","safeSetState","onTransitionEnd","cancel","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","resolvedChildren","renderChild","DEFAULT_BREAKPOINTS","ThemeContext","breakpoints","useBootstrapPrefix","defaultPrefix","themeContext","useBootstrapBreakpoints","ctx","triggerBrowserReflow","offsetHeight","triggerEvent","bubbles","cancelable","parseDuration","mult","emulateTransitionEnd","duration","padding","called","handle","transitionEnd","removeEmulate","transitionEndListener","delay","TransitionWrapper","setNodeRef","mergedRef","innerProps","TransitionWrapper$1","fadeStyles","Fade","isAppearing","prevClasses","newClasses","transitionClasses","Fade$1","CloseButton","variant","CloseButton$1","divWithClass","createWithBsPrefix","Component","BsComponent","resolvedPrefix","bsPrefix","replaceClassName","origClass","classToRemove","Selector","FIXED_CONTENT","STICKY_CONTENT","NAVBAR_TOGGLER","BootstrapModalManager","adjustAndStore","adjust","dataset","parseFloat","restore","setContainerStyle","getElement","scrollBarWidth","marginProp","removeContainerStyle","sharedManager","getSharedManager","Button","buttonProps","Button$1","DEVICE_SIZES","useCol","spans","brkPoint","propValue","span","order","infix","cleanedProps","Col","useProps","colProps","Col$1","InputGroupContext","NavbarContext","Feedback","Feedback$1","FormContext","FormContext$1","FormGroup","controlId","FormGroup$1","FloatingLabel","FloatingLabel$1","isInvalid","FormCheckInput","formContext","FormCheckInput$1","FormCheckContext","FormCheckContext$1","FormCheckLabel","formCheckContext","setHasFormCheckLabel","for","FormCheckLabel$1","title","inline","feedbackTooltip","FormCheck","bsSwitchPrefix","hasFormCheckLabel","innerFormContext","hasLabel","feedback","feedbackType","FormCheck$1","Input","Label","FormControl","plaintext","htmlSize","FormControl$1","column","visuallyHidden","FormLabel","columnClass","htmlFor","FormLabel$1","FormRange","FormRange$1","FormSelect","FormSelect$1","FormText","muted","FormText$1","Switch$1","Form","validated","Form$1","Group","Control","Floating","FormFloating","Check","Text","Select","InputGroupText","InputGroupCheckbox","InputGroupRadio","InputGroup","contextValue","hasValidation","InputGroup$1","Radio","Checkbox","ModalContext","ModalContext$1","closeLabel","closeButton","AbstractModalHeader","handleClick","_c$","closeVariant","AbstractModalHeader$1","transitionStyles","OffcanvasToggling","OffcanvasToggling$1","OffcanvasHeader","OffcanvasHeader$1","DivStyledAsH5","placement","DialogTransition","Offcanvas","navbarContext","onToggle","modalContext","getModalManager","visibility","handleExited","backdropProps","backdropClass","Offcanvas$1","Body","OffcanvasBody","Title","OffcanvasTitle","valOrFunction","resolveValue","ActionType","createTimers","pausedAt","toasts","toast","durationLeft","dispatch","removalQueue","scheduleRemoval","toastId","unmountDelay","unscheduleRemoval","toastToRemove","pauseInterval","defaultTimeouts","defaultToastOptions","defaultToasterOptions","defaultContainerPadding","defaultContainerStyle","generateID","mergeContainerOptions","setDefaultOpts","getToastWrapperStyles","verticalStyle","horizontalStyle","updateToastHeight","boundingRect","getWrapperYAxisOffset","gutter","defaultOpts","relevantToasts","toastIndex","toastsBefore","getToastYDirection","defaultPos","toastBarBase","messageContainer","iconContainer","genSVGCubicBezier","keySplines","createToast","createToastCreator","existingToast","promise","msgs","Toaster","timers","clearTimeout","ToastContainer","containerStyle","containerClassName","ToastBar","direction","animate","opacity","fill","easing","icon","Loader","iconTheme","Success","Error","ariaProps","_v$3","calculatePosition","positionStyle","END_PAUSE","Date","START_PAUSE","MainCircle","publicProps","dur","begin","calcMode","keyTimes","SecondaryCircle","primary","secondary","CMSContext","CMSProvider","cms","setCms","useCMS","plainText","textContent","innerText","CMS","provider","cmsValue","found","bindData","SpinnerType","SpinnerType2","AudioSpinner","BallTriangle","mergeProps2","Bars","mergeProps3","Circles","mergeProps4","Grid","mergeProps5","_tmpl$5","Hearts","mergeProps6","_tmpl$6","Oval","mergeProps7","_tmpl$7","Puff","mergeProps8","_tmpl$8","Rings","mergeProps9","_tmpl$9","SpinningCircles","mergeProps10","_tmpl$10","TailSpin","mergeProps11","_el$11","_tmpl$11","ThreeDots","mergeProps12","_tmpl$12","Spinner","mergeProps13","PageLoading","bars","Step1Page","isSubmitting","showImageCropper","maxLength","max","requiredListItem","conditionallyRequired","mustAgreeToTermsAndConditions","profileImageUrl","setProfileImageUrl","setCropper","countries","setCountries","salon","setSalon","setModel","biography","personal","firstName","lastName","profile","address","streetAddress1","streetAddress2","city","countryId","postalCode","contact","email","phoneNumber","socials","twitter","facebook","instagram","isStudent","student","school","instructors","isTitle1","claimsIsTitle1","parentOrLegalGuardian","acceptedTermsAndConditions","catalogue","wantsAdditional","additionalOrdered","wantsFree","sessionGuid","getTime","setModelWithEffect","Session","Id","Values","then","ModelEditor","showWantsAdditionalCataloguesPanel","biographyEditor","commitError","onChangeImageClicked","onKeepImageClicked","getModel","FirstName","LastName","Email","PhoneNumber","StreetAddress1","StreetAddress2","City","State","CountryId","PostalCode","Twitter","Facebook","Instagram","Biography","WantsFreeCatalogue","AdditionalCataloguesOrdered","WantsAdditionalCatalogues","IsHighSchoolStudent","HighSchool","HighSchoolInstructors","Age","age","ClaimsToAttendTitle1HighSchool","ParentOrLegalGuardianName","ParentOrLegalGuardianEmail","ParentOrLegalGuardianPhoneNumber","AcceptedTermsAndConditions","getErrors","saveProfile","success","salonEntrantId","Data","SalonEntrantId","Message","validateProfileImage","imageFile","saveProfileImage","OriginalFilename","FileSize","IsValid","IsDirty","attachingId","SalonEntrantImageId","salonEntrantImageId","ImageFile","goToStep2","save","checkingFormId","isFormValid","checkingImageId","getApplicationStatusJson","handleSubmit","routeData","loadStep1Cms","resources","step1","hasProfileImage","_tmpl$31","_el$19","_el$20","_el$21","_el$22","_el$23","_el$24","_el$25","_el$26","_el$27","_el$30","_el$31","_el$32","_el$33","_el$34","_el$35","_el$36","_el$37","_el$38","_el$39","_el$40","_el$41","_el$42","_el$43","_el$44","_el$45","_el$46","_el$47","_el$48","_el$49","_el$50","_el$51","_el$52","_el$53","_el$54","_el$55","_el$56","_el$57","_el$58","_el$59","_el$60","_el$61","_el$62","_el$63","_el$64","_el$65","_el$66","_el$67","_el$68","_el$71","_el$72","_el$73","_el$74","_el$75","_el$76","_el$77","_el$78","_el$79","_el$80","_el$81","_el$85","_el$86","_el$88","_el$96","_el$97","_el$101","_el$102","_el$103","_el$104","_el$105","_el$106","_el$111","_el$112","_el$113","_el$114","_el$115","_el$116","_el$117","_el$120","_el$121","_el$124","_el$125","_el$126","_el$127","_el$128","_el$167","_el$168","_el$169","_el$170","_el$171","_el$172","_el$173","$$input","personal_firstName","personal_lastName","contact_email","address_streetAddress1","address_streetAddress2","address_city","address_state","address_postalCode","_el$174","_tmpl$32","opt","address_countryId","contact_phoneNumber","_el$82","_el$83","_tmpl$13","_tmpl$14","_tmpl$15","_tmpl$16","_el$92","_tmpl$18","_el$93","_tmpl$17","_el$94","_tmpl$19","_el$95","_tmpl$20","_tmpl$21","_tmpl$22","checked","onChange","_el$107","_tmpl$23","_el$108","_tmpl$24","_el$109","_el$110","parseInt","catalogue_additionalOrdered","_tmpl$25","_tmpl$26","_tmpl$27","_tmpl$28","_el$129","_tmpl$29","_el$130","_el$131","_el$132","_el$133","_el$134","_el$136","_el$137","_tmpl$30","_el$138","_el$139","_el$140","_el$141","_el$142","_el$143","_el$144","_el$145","_el$146","_el$147","_el$148","_el$149","_el$150","_el$151","_el$152","_el$153","_el$154","_el$155","_el$156","_el$157","_el$158","_el$159","_el$160","_el$161","_el$162","_el$163","_el$164","_el$165","_el$166","student_age","student_parentOrLegalGuardian_name","student_parentOrLegalGuardian_email","student_parentOrLegalGuardian_phoneNumber","student_school_name","student_school_instructors","RawHtml","Artwork","canApply","isAdmin","session","artwork","setArtwork","selectedCategoryId","setSelectedCategoryId","availableCategories","setAvailableCategories","updateAvailableCategories","categories","salonSubmissions","category","deleteArtworkClicked","deleteClicked","addCategoryClicked","SalonSubmissionBaseId","salonSubmissionBaseId","salonCategoryId","newSubmission","removeCategoryClicked","artworkCategory","salonSubmissionId","deleteImageClicked","artworkImage","newImageId","newImage","images","toKBs","ceil","_el$16","_el$28","_el$29","date","createdDate","medium","purchaseAwardNominatedPrice","year","comment","isHighSchoolStudent","submission","fileSize","fileSizeBytes","measurements","Step2Page","setSession","artworks","setArtworks","setCategories","onDeleteClicked","loadStep2Cms","_categories","min","VERSION","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","supportsDataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","_isNaN","_isFinite","hasEnumBug","nonEnumerableProps","MAX_ARRAY_INDEX","restArguments","startIndex","isNull","isBoolean","isElement","tagTester","isString","isDate","isRegExp","isError","isSymbol","isArrayBuffer","nodelist","isFunction$1","hasObjectTag","hasDataViewBug","isIE11","isDataView","alternateIsDataView","isDataView$1","isArguments$1","isFinite","constant","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","shallowProperty","getByteLength","isBufferLike","typedArrayPattern","isTypedArray","isTypedArray$1","getLength","emulatedSet","collectNonEnumProps","nonEnumIdx","constructor","isMatch","_keys","toBufferView","bufferSource","tagDataView","eq","aStack","bStack","deepEq","areArrays","byteLength","aCtor","bCtor","allKeys","ie11fingerprint","weakMapMethods","forEachName","hasName","commonInit","mapTail","mapMethods","setMethods","isMap","isWeakMap","isSet","isWeakSet","pairs","invert","functions","createAssigner","keysFunc","defaults","extendOwn","ctor","baseCreate","Ctor","tap","interceptor","toPath","deepGet","_has","identity","optimizeCb","argCount","accumulator","baseIteratee","iteratee","cb","mapObject","currentKey","propertyOf","accum","random","createEscaper","escaper","testRegexp","replaceRegexp","escapeMap","escape","unescapeMap","unescape","noMatch","escapes","escapeRegExp","escapeChar","bareIdentifier","oldSettings","interpolate","evaluate","argument","idCounter","uniqueId","chain","executeBound","sourceFunc","boundFunc","callingContext","boundArgs","bound","bind","callArgs","isArrayLike","flatten","strict","idx","bindAll","memoize","hasher","throttle","previous","later","throttled","_now","debounce","immediate","debounced","_args","negate","compose","before","findKey","createPredicateIndexFinder","dir","findIndex","findLastIndex","sortedIndex","low","high","mid","createIndexFinder","predicateFind","indexOf","lastIndexOf","keyFinder","findWhere","createReduce","reducer","reduce","reduceRight","every","fromIndex","guard","invoke","contextPath","pluck","lastComputed","computed","reStrSymbol","sample","rand","shuffle","sortBy","behavior","partition","groupBy","indexBy","countBy","pass","keyInObj","pick","omit","_flatten","difference","without","otherArrays","uniq","isSorted","seen","union","arrays","intersection","argsLength","unzip","zip","stop","chunk","chainResult","mixin","allExports","PrepareImageText","CharacterCount","_$classList","EditArtwork","showFirstImageCropper","showSecondImageCropper","showThirdImageCropper","buttonActive","setButtonActive","submit","onlyNumbers","unitOfMeasurement","framed","setArtworkWithEffect","setComment","unitOfMeasurements","setUnitOfMeasurements","endYear","getFullYear","startYear","years","setYears","isSculptureSelected","sculpture","OriginalText","categoryIds","cid","onKeepFirstImageClicked","onKeepSecondImageClicked","onKeepThirdClicked","uploadAnotherFirstImageClicked","uploadAnotherSecondImageClicked","uploadAnotherThirdImageClicked","commentEditor","studentAge","ModelImageCropper","String","getImageFiles","image1","second","image2","third","image3","firstImage","secondImage","thirdImage","updateSelectedCategoryIds","_selectedIds","selectedIds","requiresComment","requiresCategoryId","requiresUnitOfMeasurement","validateOtherFields","validateImageCroppers","submitIfValid","enableButtons","_model","disableButtons","saveMessageId","saveImages","toSalonEntrantImageData","at","IsPrimary","NewImageId","FilenameExtension","getTotalExistingImages","totalArtworkImages","image1_url","image2_url","image3_url","msgId","allImageFiles","Order","OriginalFileName","totalExistingImages","newImages","totalNewImages","totalImages","uploadIndex","setUploadIndex","loading","single","plural","imageTotal","_el$69","_el$84","_el$87","_el$89","_el$90","_el$91","_el$99","_el$100","_el$118","_el$119","_el$122","_el$123","unit","_el$70","_el$98","_el$135","Introduction","loadIntroductionCms","EditImage","isPrimary","saveImage","SalonSubmissionBaseImageId","onSaveClicked","imageEditor","Flag","LanguageSelector","cultureCode","setCultureCode","updateCulture","lang","reload","languageChanged","en","languages","Language","CultureCode","FlagCode","_v$5","_v$6","_v$7","_v$4","TextInput","ForgotPassword","screen","setScreen","username","setUsername","cancelClicked","onCancel","onSubmit","UsernameOrEmail","retryClicked","closeClicked","onCompleted","Login","showForgotPasswordModal","setShowForgotPasswordModal","password","setPassword","attempts","setAttempts","remember","setRemember","maxAttempts","returnUrl","canceClicked","login","registrationRequired","onRegistrationRequired","onSuccess","isLoggedIn","isRegistered","member","communityMember","forgotPasswordClicked","openForgotPassword","closeForgotPassword","forgotPasswordCompleted","JetMenu","itemCount","permissions","memberType","logoutClicked","loginClicked","handleOpenLogin","showLogin","setShowLogin","handleCloseLogin","onLoginCancel","onLoginSuccess","loadApplicationStatus","onLoginRegistrationRequired","substring","LogoSlider","LatestBlogs","blogs","setBlogs","firstBlog","setFirstBlog","getLatestBlogs","toDate","jsonDate","substr","loadBlogs","dateAddedUTC","toLocaleDateString","month","blog","dateAddedFormatted","getMonth","Footer","ad","setAd","getAd","loadAd","CatalogueOrders","cataloguesOrdered","catalogues","TextBox","onInput","Options","AddressForm","setResources","streetLine1","streetLine2","stateName","ModelSelect","ModelTextBox","Step3Page","isReady","setCatalogues","setAddress","total","setTotal","owing","setOwing","updateTotal","_total","invoice","sum","_owing","salonEntrant","amountPaid","onCatalogueOrdersChanged","updateInvoice","updateAddress","StateName","paypalClicked","ApproveUrl","hasOrderedCatalogue","loadStep3Cms","_address","description","CreditCardPage","months","isSaving","number","expiry","entrant","amountOwing","cvv","stripSpaces","country","expirationDate","Number","CCV","ExpiryYear","ExpiryMonth","ExpirationDate","Address","Country","loadCreditCardCms","expiryMonth","expiryYear","PaypalConfirmedPage","concludePayment","paymentId","CategoriesPage","loadCategoriesCms","RulesPage","loadRulesCms","AwardsPage","loadAwardsCms","SponsorsPage","loadSponsorsCms","ScrollToTarget","links","getLinks","scrollToTarget","aName","getAttribute","parentElement","nextElementSiblingOffset","nextElementSibling","scrollIntoView","setup","JurorsPage","isCMSReady","loadJurorsCms","JL","loggerName","initialValue","previousValue","accumulatedLoggerName","curr","currentLogger","copyProperty","allow","filters","allowMessage","stringifyLogObjectFunction","logObject","StringifiedLogObject","msg","finalString","stringifyLogObject","actualLogObject","setOptions","getAllLevel","getTraceLevel","getDebugLevel","getInfoLevel","getWarnLevel","getErrorLevel","getFatalLevel","getOffLevel","levelToString","Exception","inner","LogItem","u","newLogItem","levelNbr","clearTimer","setTimer","timeoutMs","that","Appender","appenderName","sendLogItems","emptyNameErrorMessage","logItems","messageAgeMs","logItem","AjaxAppender","successCallback","ajaxUrl","finalmsg","ConsoleAppender","logEntry","li","Logger","excObject","compositeMessage","createAjaxAppender","createConsoleAppender","defaultAppender","errorMsg","lineNumber","errorObj","PaymentProcessedPage","setCache","getOrSetCache","ids","cachedIds","uncachedIds","backup","App","authorised","claims","Claim","getStep1_Data","getStep1_Resources","fetchStep1Data","_step1","salonId","SalonId","ArtistProfileImageId","ArtistProfileImageUrl","AttendsTitle1HighSchool","getStep3_Data","getStep3_Resources","getAddress","fetchStep3Data","getStep2_Data","getStep2_Resources","fetchStep2Data","fetchRulesData","fetchPaypalCancelledData","getUrlSearchParams","fetchPaypalConfirmedData","payerId","getArtwork","getArtworkImage","fetchArtworkImageData","artworkId","isDeleted","artworkImageId","fetchIntroduction","getCreditCardInfo","fetchCreditCard","info","getEditArtworkResources","fetchArtworkData","preloadImagesFromCms","fatalException","getElementById"],"mappings":"CAAqB,UAAoB,CACrC,MAAMA,EAAU,SAAS,cAAc,MAAM,EAAE,QAC/C,GAAIA,GAAWA,EAAQ,UAAYA,EAAQ,SAAS,eAAe,EAC/D,OAEJ,UAAWC,KAAQ,SAAS,iBAAiB,2BAA2B,EACpEC,EAAeD,CAAI,EAEvB,IAAI,iBAAkBE,GAAc,CAChC,UAAWC,KAAYD,EACnB,GAAIC,EAAS,OAAS,YAGtB,UAAWC,KAAQD,EAAS,WACpBC,EAAK,UAAY,QAAUA,EAAK,MAAQ,iBACxCH,EAAeG,CAAI,CAGvC,CAAK,EAAE,QAAQ,SAAU,CAAE,UAAW,GAAM,QAAS,EAAI,CAAE,EACvD,SAASC,EAAaC,EAAQ,CAC1B,MAAMC,EAAY,CAAA,EAClB,OAAID,EAAO,YACPC,EAAU,UAAYD,EAAO,WAC7BA,EAAO,iBACPC,EAAU,eAAiBD,EAAO,gBAClCA,EAAO,cAAgB,kBACvBC,EAAU,YAAc,UACnBD,EAAO,cAAgB,YAC5BC,EAAU,YAAc,OAExBA,EAAU,YAAc,cACrBA,CACV,CACD,SAASN,EAAeD,EAAM,CAC1B,GAAIA,EAAK,GAEL,OACJA,EAAK,GAAK,GAEV,MAAMO,EAAYF,EAAaL,CAAI,EACnC,MAAMA,EAAK,KAAMO,CAAS,CAC7B,CACL,KC4EA,MAAMC,GAAe,CACnB,QAAS,OACT,SAAU,OACV,QAAS,OACT,KAAM,GACN,cAAe,CACb,OAAOC,GAAa,KAAK,QAAQ,KAAK,CACvC,EACD,kBAAmB,CACjB,OAAOA,GAAa,KAAK,QAAQ,OAAO,CACzC,CACH,EACA,SAASA,GAAaC,EAAO,CAC3B,MAAMC,EAAM,OAAOD,CAAK,EACtBE,EAAMD,EAAI,OAAS,EACrB,OAAOH,GAAa,QAAQ,IAAMI,EAAM,OAAO,aAAa,GAAKA,CAAG,EAAI,IAAMD,CAChF,CAYA,MAAME,GAAS,GACTC,GAAU,CAACC,EAAGC,IAAMD,IAAMC,EAC1BC,GAAS,OAAO,aAAa,EAC7BC,GAAiB,OAAO,OAAU,WAClCC,GAAS,OAAO,aAAa,EAE7BC,GAAgB,CACpB,OAAQN,EACV,EACA,IAAIO,GAAQ,KACRC,GAAaC,GACjB,MAAMC,GAAQ,EACRC,GAAU,EACVC,GAAU,CACd,MAAO,KACP,SAAU,KACV,QAAS,KACT,MAAO,IACT,EAEA,IAAIC,GAAQ,KACZ,IAAIC,GAAa,KAEbC,GAAuB,KACvBC,GAAW,KACXC,GAAU,KACVC,GAAU,KACVC,GAAY,EAChB,SAASC,GAAWC,EAAIC,EAAe,CACrC,MAAMC,EAAWP,GACfQ,EAAQX,GACRY,EAAUJ,EAAG,SAAW,EACxBK,EAAUJ,IAAkB,OAAYE,EAAQF,EAChDK,EAAOF,EACHb,GACA,CACE,MAAO,KACP,SAAU,KACV,QAASc,EAAUA,EAAQ,QAAU,KACrC,MAAOA,CACR,EACLE,EAAWH,EAAUJ,EAAK,IAAMA,EAAG,IAAMQ,GAAQ,IAAMC,GAAUH,CAAI,CAAC,CAAC,EACzEd,GAAQc,EACRX,GAAW,KACX,GAAI,CACF,OAAOe,GAAWH,EAAU,EAAI,CACpC,QAAY,CACRZ,GAAWO,EACXV,GAAQW,CACT,CACH,CACA,SAASQ,GAAaC,EAAOC,EAAS,CACpCA,EAAUA,EAAU,OAAO,OAAO,CAAE,EAAE5B,GAAe4B,CAAO,EAAI5B,GAChE,MAAM6B,EAAI,CACR,MAAAF,EACA,UAAW,KACX,cAAe,KACf,WAAYC,EAAQ,QAAU,MAClC,EACQE,EAASH,IACT,OAAOA,GAAU,aAEdA,EAAQA,EAAME,EAAE,KAAK,GAErBE,GAAYF,EAAGF,CAAK,GAE7B,MAAO,CAACK,GAAW,KAAKH,CAAC,EAAGC,CAAM,CACpC,CACA,SAASG,GAAelB,EAAIY,EAAOC,EAAS,CAC1C,MAAMM,EAAIC,GAAkBpB,EAAIY,EAAO,GAAMvB,EAAK,EAE7CgC,GAAkBF,CAAC,CAC1B,CACA,SAASG,GAAmBtB,EAAIY,EAAOC,EAAS,CAC9C,MAAMM,EAAIC,GAAkBpB,EAAIY,EAAO,GAAOvB,EAAK,EAE9CgC,GAAkBF,CAAC,CAC1B,CACA,SAASI,GAAavB,EAAIY,EAAOC,EAAS,CACxC1B,GAAaqC,GACR,MAACL,EAAIC,GAAkBpB,EAAIY,EAAO,GAAOvB,EAAK,GAG/C,CAACwB,GAAW,CAACA,EAAQ,UAAQM,EAAE,KAAO,IAC1CtB,GAAUA,GAAQ,KAAKsB,CAAC,EAAIE,GAAkBF,CAAC,CACjD,CAoBA,SAASM,GAAWzB,EAAIY,EAAOC,EAAS,CACtCA,EAAUA,EAAU,OAAO,OAAO,CAAE,EAAE5B,GAAe4B,CAAO,EAAI5B,GAChE,MAAMkC,EAAIC,GAAkBpB,EAAIY,EAAO,GAAM,CAAC,EAC9C,OAAAO,EAAE,UAAY,KACdA,EAAE,cAAgB,KAClBA,EAAE,WAAaN,EAAQ,QAAU,OAI1BQ,GAAkBF,CAAC,EACnBF,GAAW,KAAKE,CAAC,CAC1B,CAgOA,SAASO,GAAM1B,EAAI,CACjB,OAAOU,GAAWV,EAAI,EAAK,CAC7B,CACA,SAASQ,GAAQR,EAAI,CACnB,GAA6BL,KAAa,KAAM,OAAOK,IACvD,MAAME,EAAWP,GACjBA,GAAW,KACX,GAAI,CAEF,OAAOK,EAAE,CACb,QAAY,CACRL,GAAWO,CACZ,CACH,CACA,SAASyB,GAAGC,EAAM5B,EAAIa,EAAS,CAC7B,MAAMgB,EAAU,MAAM,QAAQD,CAAI,EAClC,IAAIE,EACAC,EAAQlB,GAAWA,EAAQ,MAC/B,OAAOmB,GAAa,CAClB,IAAIC,EACJ,GAAIJ,EAAS,CACXI,EAAQ,MAAML,EAAK,MAAM,EACzB,QAASM,EAAI,EAAGA,EAAIN,EAAK,OAAQM,IAAKD,EAAMC,GAAKN,EAAKM,GAAE,CAC9D,MAAWD,EAAQL,IACf,GAAIG,EACF,OAAAA,EAAQ,GACDC,EAET,MAAMG,EAAS3B,GAAQ,IAAMR,EAAGiC,EAAOH,EAAWE,CAAS,CAAC,EAC5D,OAAAF,EAAYG,EACLE,CACX,CACA,CACA,SAASC,GAAQpC,EAAI,CACnBuB,GAAa,IAAMf,GAAQR,CAAE,CAAC,CAChC,CACA,SAASqC,GAAUrC,EAAI,CACrB,OAAIR,KAAU,OACLA,GAAM,WAAa,KAAMA,GAAM,SAAW,CAACQ,CAAE,EACjDR,GAAM,SAAS,KAAKQ,CAAE,GACpBA,CACT,CACA,SAASsC,GAAWtC,EAAIuC,EAAS,CAC/BrD,KAAUA,GAAQ,OAAO,OAAO,GAChCM,GAAQ4B,GAAkB,OAAW,OAAW,EAAI,EACpD5B,GAAM,QAAU,CACd,GAAGA,GAAM,QACT,CAACN,IAAQ,CAACqD,CAAO,CACrB,EAEE,GAAI,CACF,OAAOvC,EAAE,CACV,OAAQwC,EAAP,CACAC,GAAYD,CAAG,CACnB,QAAY,CACRhD,GAAQA,GAAM,KACf,CACH,CACA,SAASkD,IAAc,CACrB,OAAO/C,EACT,CACA,SAASgD,IAAW,CAClB,OAAOnD,EACT,CACA,SAASoD,GAAaC,EAAG7C,EAAI,CAC3B,MAAM8C,EAAOtD,GACPuD,EAAepD,GACrBH,GAAQqD,EACRlD,GAAW,KACX,GAAI,CACF,OAAOe,GAAWV,EAAI,EAAI,CAC3B,OAAQwC,EAAP,CACAC,GAAYD,CAAG,CACnB,QAAY,CACRhD,GAAQsD,EACRnD,GAAWoD,CACZ,CACH,CAIA,SAASC,GAAgBhD,EAAI,CAK3B,MAAMiD,EAAItD,GACJkD,EAAIrD,GACV,OAAO,QAAQ,UAAU,KAAK,IAAM,CAClCG,GAAWsD,EACXzD,GAAQqD,EACR,IAAIK,EAeJ,OAAAxC,GAAWV,EAAI,EAAK,EACpBL,GAAWH,GAAQ,KACZ0D,EAAIA,EAAE,KAAO,MACxB,CAAG,CACH,CASA,SAASC,GAAcC,EAAcvC,EAAS,CAC5C,MAAMwC,EAAK,OAAO,SAAS,EAC3B,MAAO,CACL,GAAAA,EACA,SAAUC,GAAeD,CAAE,EAC3B,aAAAD,CACJ,CACA,CACA,SAASG,GAAWC,EAAS,CAC3B,IAAI5C,EACJ,OAAOpB,IAASA,GAAM,UAAYoB,EAAQpB,GAAM,QAAQgE,EAAQ,OAAS,OACrE5C,EACA4C,EAAQ,YACd,CACA,SAASC,GAASzD,EAAI,CACpB,MAAMyD,EAAWhC,GAAWzB,CAAE,EACxB0D,EAAOjC,GAAW,IAAMkC,GAAgBF,EAAQ,CAAE,CAAC,EACzD,OAAAC,EAAK,QAAU,IAAM,CACnB,MAAMvC,EAAIuC,IACV,OAAO,MAAM,QAAQvC,CAAC,EAAIA,EAAIA,GAAK,KAAO,CAACA,CAAC,EAAI,EACpD,EACSuC,CACT,CA6BA,SAASzC,IAAa,CAEpB,GAAI,KAAK,SAA8C,KAAK,MAC1D,GAAuC,KAAK,QAAW5B,GAAOgC,GAAkB,IAAI,MAC/E,CACH,MAAMuC,EAAUhE,GAChBA,GAAU,KACVc,GAAW,IAAMmD,GAAa,IAAI,EAAG,EAAK,EAC1CjE,GAAUgE,CACX,CAEH,GAAIjE,GAAU,CACZ,MAAMmE,EAAQ,KAAK,UAAY,KAAK,UAAU,OAAS,EAClDnE,GAAS,SAIZA,GAAS,QAAQ,KAAK,IAAI,EAC1BA,GAAS,YAAY,KAAKmE,CAAK,IAJ/BnE,GAAS,QAAU,CAAC,IAAI,EACxBA,GAAS,YAAc,CAACmE,CAAK,GAK1B,KAAK,WAIR,KAAK,UAAU,KAAKnE,EAAQ,EAC5B,KAAK,cAAc,KAAKA,GAAS,QAAQ,OAAS,CAAC,IAJnD,KAAK,UAAY,CAACA,EAAQ,EAC1B,KAAK,cAAgB,CAACA,GAAS,QAAQ,OAAS,CAAC,EAKpD,CAED,OAAO,KAAK,KACd,CACA,SAASqB,GAAY/C,EAAM2C,EAAOmD,EAAQ,CACxC,IAAI1D,EAC+EpC,EAAK,MACxF,OAAI,CAACA,EAAK,YAAc,CAACA,EAAK,WAAWoC,EAASO,CAAK,KAQ9C3C,EAAK,MAAQ2C,EAChB3C,EAAK,WAAaA,EAAK,UAAU,QACnCyC,GAAW,IAAM,CACf,QAAS,EAAI,EAAG,EAAIzC,EAAK,UAAU,OAAQ,GAAK,EAAG,CACjD,MAAM4E,EAAI5E,EAAK,UAAU,GACnB+F,EAAoBvE,IAAcA,GAAW,QAC/CuE,GAAqBvE,GAAW,SAAS,IAAIoD,CAAC,GAC9CmB,EAAoB,CAACnB,EAAE,OAAS,CAACA,EAAE,SACjCA,EAAE,KAAMjD,GAAQ,KAAKiD,CAAC,EACrBhD,GAAQ,KAAKgD,CAAC,EACfA,EAAE,WAAWoB,GAAepB,CAAC,GAE9BmB,IAAmBnB,EAAE,MAAQxD,GAEnC,CACD,GAAIO,GAAQ,OAAS,IACnB,MAAAA,GAAU,CAAA,EAEJ,IAAI,KAEb,EAAE,EAAK,GAGLgB,CACT,CACA,SAASS,GAAkBpD,EAAM,CAC/B,GAAI,CAACA,EAAK,GAAI,OACdwC,GAAUxC,CAAI,EACd,MAAMiG,EAAOpE,GACbqE,GACElG,EACiFA,EAAK,MACtFiG,CACJ,CAWA,CACA,SAASC,GAAelG,EAAM2C,EAAOsD,EAAM,CACzC,IAAIE,EACJ,MAAMjE,EAAQX,GACZU,EAAWP,GACbA,GAAWH,GAAQvB,EACnB,GAAI,CACFmG,EAAYnG,EAAK,GAAG2C,CAAK,CAC1B,OAAQ4B,EAAP,CACA,OAAIvE,EAAK,OAMLA,EAAK,MAAQoB,GACbpB,EAAK,OAASA,EAAK,MAAM,QAAQwC,EAAS,EAC1CxC,EAAK,MAAQ,MAGjBA,EAAK,UAAYiG,EAAO,EACjBzB,GAAYD,CAAG,CAC1B,QAAY,CACR7C,GAAWO,EACXV,GAAQW,CACT,EACG,CAAClC,EAAK,WAAaA,EAAK,WAAaiG,KACnCjG,EAAK,WAAa,MAAQ,cAAeA,EAC3C+C,GAAY/C,EAAMmG,CAAe,EAI5BnG,EAAK,MAAQmG,EACpBnG,EAAK,UAAYiG,EAErB,CACA,SAAS9C,GAAkBpB,EAAIqE,EAAMC,EAAMC,EAAQlF,GAAOwB,EAAS,CACjE,MAAMM,EAAI,CACR,GAAAnB,EACA,MAAOuE,EACP,UAAW,KACX,MAAO,KACP,QAAS,KACT,YAAa,KACb,SAAU,KACV,MAAOF,EACP,MAAO7E,GACP,QAASA,GAAQA,GAAM,QAAU,KACjC,KAAA8E,CACJ,EAKE,OAAI9E,KAAU,MACLA,KAAUD,KAKVC,GAAM,MACNA,GAAM,MAAM,KAAK2B,CAAC,EADL3B,GAAM,MAAQ,CAAC2B,CAAC,GAiB/BA,CACT,CACA,SAASqD,GAAOvG,EAAM,CAEpB,GAAuCA,EAAK,QAAW,EAAG,OAC1D,GAAuCA,EAAK,QAAWqB,GAAS,OAAOuE,GAAa5F,CAAI,EACxF,GAAIA,EAAK,UAAYuC,GAAQvC,EAAK,SAAS,UAAU,EAAG,OAAOA,EAAK,SAAS,QAAQ,KAAKA,CAAI,EAC9F,MAAMwG,EAAY,CAACxG,CAAI,EACvB,MAAQA,EAAOA,EAAK,SAAW,CAACA,EAAK,WAAaA,EAAK,UAAY6B,KAE3B7B,EAAK,OAAOwG,EAAU,KAAKxG,CAAI,EAEvE,QAASiE,EAAIuC,EAAU,OAAS,EAAGvC,GAAK,EAAGA,IASzC,GARAjE,EAAOwG,EAAUvC,GAQsBjE,EAAK,QAAWoB,GACrDgC,GAAkBpD,CAAI,UACsBA,EAAK,QAAWqB,GAAS,CACrE,MAAMsE,EAAUhE,GAChBA,GAAU,KACVc,GAAW,IAAMmD,GAAa5F,EAAMwG,EAAU,EAAE,EAAG,EAAK,EACxD7E,GAAUgE,CACX,CAEL,CACA,SAASlD,GAAWV,EAAIqE,EAAM,CAC5B,GAAIzE,GAAS,OAAOI,IACpB,IAAI0E,EAAO,GACNL,IAAMzE,GAAU,IACjBC,GAAS6E,EAAO,GACf7E,GAAU,CAAA,EACfC,KACA,GAAI,CACF,MAAM6E,EAAM3E,IACZ,OAAA4E,GAAgBF,CAAI,EACbC,CACR,OAAQnC,EAAP,CACKkC,IAAM7E,GAAU,MACrBD,GAAU,KACV6C,GAAYD,CAAG,CAChB,CACH,CACA,SAASoC,GAAgBF,EAAM,CAM7B,GALI9E,KAEGR,GAASQ,EAAO,EACrBA,GAAU,MAER8E,EAAM,OAmCV,MAAM,EAAI7E,GACVA,GAAU,KACN,EAAE,QAAQa,GAAW,IAAMvB,GAAW,CAAC,EAAG,EAAK,CAErD,CACA,SAASC,GAASyF,EAAO,CACvB,QAAS3C,EAAI,EAAGA,EAAI2C,EAAM,OAAQ3C,IAAKsC,GAAOK,EAAM3C,EAAE,CACxD,CAkBA,SAASV,GAAeqD,EAAO,CAC7B,IAAI3C,EACF4C,EAAa,EACf,IAAK5C,EAAI,EAAGA,EAAI2C,EAAM,OAAQ3C,IAAK,CACjC,MAAM6C,EAAIF,EAAM3C,GACX6C,EAAE,KACFF,EAAMC,KAAgBC,EADdP,GAAOO,CAAC,CAEtB,CAcD,IAAK7C,EAAI,EAAGA,EAAI4C,EAAY5C,IAAKsC,GAAOK,EAAM3C,EAAE,CAClD,CACA,SAAS2B,GAAa5F,EAAM+G,EAAQ,CAG7B/G,EAAK,MAAQ,EAClB,QAASiE,EAAI,EAAGA,EAAIjE,EAAK,QAAQ,OAAQiE,GAAK,EAAG,CAC/C,MAAM+C,EAAShH,EAAK,QAAQiE,GAC5B,GAAI+C,EAAO,QAAS,CAClB,MAAMV,EAA4CU,EAAO,MACrDV,IAAUlF,GACR4F,IAAWD,IAAW,CAACC,EAAO,WAAaA,EAAO,UAAYnF,KAChE0E,GAAOS,CAAM,EACNV,IAAUjF,IAASuE,GAAaoB,EAAQD,CAAM,CAC1D,CACF,CACH,CACA,SAASf,GAAehG,EAAM,CAE5B,QAASiE,EAAI,EAAGA,EAAIjE,EAAK,UAAU,OAAQiE,GAAK,EAAG,CACjD,MAAMW,EAAI5E,EAAK,UAAUiE,GACYW,EAAE,QAEhCA,EAAE,MAAQvD,GACXuD,EAAE,KAAMjD,GAAQ,KAAKiD,CAAC,EACrBhD,GAAQ,KAAKgD,CAAC,EACnBA,EAAE,WAAaoB,GAAepB,CAAC,EAElC,CACH,CACA,SAASpC,GAAUxC,EAAM,CACvB,IAAIiE,EACJ,GAAIjE,EAAK,QACP,KAAOA,EAAK,QAAQ,QAAQ,CAC1B,MAAMgH,EAAShH,EAAK,QAAQ,IAAK,EAC/BiH,EAAQjH,EAAK,YAAY,IAAK,EAC9BkH,EAAMF,EAAO,UACf,GAAIE,GAAOA,EAAI,OAAQ,CACrB,MAAMC,EAAID,EAAI,IAAK,EACjBrE,EAAImE,EAAO,cAAc,MACvBC,EAAQC,EAAI,SACdC,EAAE,YAAYtE,GAAKoE,EACnBC,EAAID,GAASE,EACbH,EAAO,cAAcC,GAASpE,EAEjC,CACF,CAEH,GAAI7C,EAAK,OAAQ,CACf,IAAKiE,EAAIjE,EAAK,OAAO,OAAS,EAAGiE,GAAK,EAAGA,IAAKzB,GAAUxC,EAAK,OAAOiE,EAAE,EACtE,OAAOjE,EAAK,MACb,CAGM,GAAIA,EAAK,MAAO,CACrB,IAAKiE,EAAIjE,EAAK,MAAM,OAAS,EAAGiE,GAAK,EAAGA,IAAKzB,GAAUxC,EAAK,MAAMiE,EAAE,EACpEjE,EAAK,MAAQ,IACd,CACD,GAAIA,EAAK,SAAU,CACjB,IAAKiE,EAAIjE,EAAK,SAAS,OAAS,EAAGiE,GAAK,EAAGA,IAAKjE,EAAK,SAASiE,GAAE,EAChEjE,EAAK,SAAW,IACjB,CAEIA,EAAK,MAAQ,CACpB,CAUA,SAASoH,GAAU7C,EAAK,CACtB,OAAIA,aAAe,MAAcA,EAC1B,IAAI,MAAM,OAAOA,GAAQ,SAAWA,EAAM,gBAAiB,CAChE,MAAOA,CACX,CAAG,CACH,CACA,SAAS8C,GAAU9C,EAAK+C,EAAKpF,EAAO,CAClC,GAAI,CACF,UAAWqF,KAAKD,EAAKC,EAAEhD,CAAG,CAC3B,OAAQuC,EAAP,CACAtC,GAAYsC,EAAI5E,GAASA,EAAM,OAAU,IAAI,CAC9C,CACH,CACA,SAASsC,GAAYD,EAAKrC,EAAQX,GAAO,CACvC,MAAM+F,EAAMrG,IAASiB,GAASA,EAAM,SAAWA,EAAM,QAAQjB,IACvDuG,EAAQJ,GAAU7C,CAAG,EAC3B,GAAI,CAAC+C,EAAK,MAAME,EACZ5F,GACFA,GAAQ,KAAK,CACX,IAAK,CACHyF,GAAUG,EAAOF,EAAKpF,CAAK,CAC5B,EACD,MAAOd,EACb,CAAK,EACEiG,GAAUG,EAAOF,EAAKpF,CAAK,CAClC,CACA,SAASwD,GAAgBF,EAAU,CACjC,GAAI,OAAOA,GAAa,YAAc,CAACA,EAAS,OAAQ,OAAOE,GAAgBF,EAAQ,CAAE,EACzF,GAAI,MAAM,QAAQA,CAAQ,EAAG,CAC3B,MAAMiC,EAAU,CAAA,EAChB,QAASxD,EAAI,EAAGA,EAAIuB,EAAS,OAAQvB,IAAK,CACxC,MAAMC,EAASwB,GAAgBF,EAASvB,EAAE,EAC1C,MAAM,QAAQC,CAAM,EAAIuD,EAAQ,KAAK,MAAMA,EAASvD,CAAM,EAAIuD,EAAQ,KAAKvD,CAAM,CAClF,CACD,OAAOuD,CACR,CACD,OAAOjC,CACT,CACA,SAASH,GAAeD,EAAIxC,EAAS,CACnC,OAAO,SAAkB8E,EAAO,CAC9B,IAAIhB,EACJ,OAAArD,GACE,IACGqD,EAAMnE,GAAQ,KACbhB,GAAM,QAAU,CACd,GAAGA,GAAM,QACT,CAAC6D,GAAKsC,EAAM,KACxB,EACiBlC,GAAS,IAAMkC,EAAM,QAAQ,EACrC,EACH,MACN,EACWhB,CACX,CACA,CAyEA,MAAMiB,GAAW,OAAO,UAAU,EAClC,SAASC,GAAQC,EAAG,CAClB,QAAS5D,EAAI,EAAGA,EAAI4D,EAAE,OAAQ5D,IAAK4D,EAAE5D,IACvC,CACA,SAAS6D,GAASC,EAAMC,EAAOpF,EAAU,CAAA,EAAI,CAC3C,IAAIqF,EAAQ,CAAE,EACZC,EAAS,CAAE,EACXC,EAAY,CAAE,EACd3H,EAAM,EACN4H,EAAUJ,EAAM,OAAS,EAAI,CAAA,EAAK,KACpC,OAAA5D,GAAU,IAAMwD,GAAQO,CAAS,CAAC,EAC3B,IAAM,CACX,IAAIE,EAAWN,EAAI,GAAM,CAAE,EACzBO,EAASD,EAAS,OAClBpE,EACAsE,EACF,OAAAF,EAAStH,IACFwB,GAAQ,IAAM,CACnB,IAAIiG,EAAYC,EAAgBC,EAAMC,EAAeC,EAAaC,EAAOC,EAAKC,EAAQC,EACtF,GAAIV,IAAW,EACT9H,IAAQ,IACVoH,GAAQO,CAAS,EACjBA,EAAY,CAAA,EACZF,EAAQ,CAAA,EACRC,EAAS,CAAA,EACT1H,EAAM,EACN4H,IAAYA,EAAU,CAAA,IAEpBxF,EAAQ,WACVqF,EAAQ,CAACN,EAAQ,EACjBO,EAAO,GAAKpG,GAAWmH,IACrBd,EAAU,GAAKc,EACRrG,EAAQ,WAChB,EACDpC,EAAM,WAECA,IAAQ,EAAG,CAEpB,IADA0H,EAAS,IAAI,MAAMI,CAAM,EACpBC,EAAI,EAAGA,EAAID,EAAQC,IACtBN,EAAMM,GAAKF,EAASE,GACpBL,EAAOK,GAAKzG,GAAWoH,CAAM,EAE/B1I,EAAM8H,CACd,KAAa,CAIL,IAHAI,EAAO,IAAI,MAAMJ,CAAM,EACvBK,EAAgB,IAAI,MAAML,CAAM,EAChCF,IAAYQ,EAAc,IAAI,MAAMN,CAAM,GAExCO,EAAQ,EAAGC,EAAM,KAAK,IAAItI,EAAK8H,CAAM,EACrCO,EAAQC,GAAOb,EAAMY,KAAWR,EAASQ,GACzCA,IACD,CACD,IACEC,EAAMtI,EAAM,EAAGuI,EAAST,EAAS,EACjCQ,GAAOD,GAASE,GAAUF,GAASZ,EAAMa,KAAST,EAASU,GAC3DD,IAAOC,IAEPL,EAAKK,GAAUb,EAAOY,GACtBH,EAAcI,GAAUZ,EAAUW,GAClCV,IAAYQ,EAAYG,GAAUX,EAAQU,IAI5C,IAFAN,EAAa,IAAI,IACjBC,EAAiB,IAAI,MAAMM,EAAS,CAAC,EAChCR,EAAIQ,EAAQR,GAAKM,EAAON,IAC3BS,EAAOX,EAASE,GAChBtE,EAAIuE,EAAW,IAAIQ,CAAI,EACvBP,EAAeF,GAAKtE,IAAM,OAAY,GAAKA,EAC3CuE,EAAW,IAAIQ,EAAMT,CAAC,EAExB,IAAKtE,EAAI4E,EAAO5E,GAAK6E,EAAK7E,IACxB+E,EAAOf,EAAMhE,GACbsE,EAAIC,EAAW,IAAIQ,CAAI,EACnBT,IAAM,QAAaA,IAAM,IAC3BG,EAAKH,GAAKL,EAAOjE,GACjB0E,EAAcJ,GAAKJ,EAAUlE,GAC7BmE,IAAYQ,EAAYL,GAAKH,EAAQnE,IACrCsE,EAAIE,EAAeF,GACnBC,EAAW,IAAIQ,EAAMT,CAAC,GACjBJ,EAAUlE,KAEnB,IAAKsE,EAAIM,EAAON,EAAID,EAAQC,IACtBA,KAAKG,GACPR,EAAOK,GAAKG,EAAKH,GACjBJ,EAAUI,GAAKI,EAAcJ,GACzBH,IACFA,EAAQG,GAAKK,EAAYL,GACzBH,EAAQG,GAAGA,CAAC,IAETL,EAAOK,GAAKzG,GAAWoH,CAAM,EAEtChB,EAASA,EAAO,MAAM,EAAI1H,EAAM8H,CAAM,EACtCL,EAAQI,EAAS,MAAM,CAAC,CACzB,CACD,OAAOH,CACb,CAAK,EACD,SAASgB,EAAOD,EAAU,CAExB,GADAd,EAAUI,GAAKU,EACXb,EAAS,CACX,KAAM,CAACvF,EAAGsG,CAAG,EAAIzG,GAAa6F,CAAC,EAC/B,OAAAH,EAAQG,GAAKY,EACNnB,EAAMK,EAASE,GAAI1F,CAAC,CAC5B,CACD,OAAOmF,EAAMK,EAASE,EAAE,CACzB,CACL,CACA,CAmEA,SAASa,EAAgBC,EAAM3B,EAAO,CAUpC,OAAOnF,GAAQ,IAAM8G,EAAK3B,GAAS,CAAA,CAAE,CAAC,CACxC,CACA,SAAS4B,IAAS,CAChB,MAAO,EACT,CACA,MAAMC,GAAY,CAChB,IAAIC,EAAGC,EAAUC,EAAU,CACzB,OAAID,IAAa5I,GAAe6I,EACzBF,EAAE,IAAIC,CAAQ,CACtB,EACD,IAAID,EAAGC,EAAU,CACf,OAAIA,IAAa5I,GAAe,GACzB2I,EAAE,IAAIC,CAAQ,CACtB,EACD,IAAKH,GACL,eAAgBA,GAChB,yBAAyBE,EAAGC,EAAU,CACpC,MAAO,CACL,aAAc,GACd,WAAY,GACZ,KAAM,CACJ,OAAOD,EAAE,IAAIC,CAAQ,CACtB,EACD,IAAKH,GACL,eAAgBA,EACtB,CACG,EACD,QAAQE,EAAG,CACT,OAAOA,EAAE,MACV,CACH,EACA,SAASG,GAAc9G,EAAG,CACxB,OAASA,EAAI,OAAOA,GAAM,WAAaA,EAAC,EAAKA,GAAUA,EAAL,CAAE,CACtD,CACA,SAAS+G,IAAiB,CACxB,QAAS3F,EAAI,EAAG4F,EAAS,KAAK,OAAQ5F,EAAI4F,EAAQ,EAAE5F,EAAG,CACrD,MAAM6F,EAAI,KAAK7F,KACf,GAAI6F,IAAM,OAAW,OAAOA,CAC7B,CACH,CACA,SAASC,MAAcC,EAAS,CAC9B,IAAIC,EAAQ,GACZ,QAAShG,EAAI,EAAGA,EAAI+F,EAAQ,OAAQ/F,IAAK,CACvC,MAAMpB,EAAImH,EAAQ/F,GAClBgG,EAAQA,GAAU,CAAC,CAACpH,GAAKhC,MAAUgC,EACnCmH,EAAQ/F,GAAK,OAAOpB,GAAM,YAAeoH,EAAQ,GAAOzG,GAAWX,CAAC,GAAKA,CAC1E,CACD,GAAI/B,IAAkBmJ,EACpB,OAAO,IAAI,MACT,CACE,IAAIR,EAAU,CACZ,QAASxF,EAAI+F,EAAQ,OAAS,EAAG/F,GAAK,EAAGA,IAAK,CAC5C,MAAM6F,EAAIH,GAAcK,EAAQ/F,EAAE,EAAEwF,GACpC,GAAIK,IAAM,OAAW,OAAOA,CAC7B,CACF,EACD,IAAIL,EAAU,CACZ,QAASxF,EAAI+F,EAAQ,OAAS,EAAG/F,GAAK,EAAGA,IACvC,GAAIwF,KAAYE,GAAcK,EAAQ/F,EAAE,EAAG,MAAO,GAEpD,MAAO,EACR,EACD,MAAO,CACL,MAAMiG,EAAO,CAAA,EACb,QAASjG,EAAI,EAAGA,EAAI+F,EAAQ,OAAQ/F,IAClCiG,EAAK,KAAK,GAAG,OAAO,KAAKP,GAAcK,EAAQ/F,EAAE,CAAC,CAAC,EACrD,MAAO,CAAC,GAAG,IAAI,IAAIiG,CAAI,CAAC,CACzB,CACF,EACDX,EACN,EAEE,MAAMY,EAAa,CAAA,EACbC,EAAU,OAAO,OAAO,IAAI,EAClC,QAASnG,EAAI+F,EAAQ,OAAS,EAAG/F,GAAK,EAAGA,IAAK,CAC5C,MAAM+C,EAASgD,EAAQ/F,GACvB,GAAI,CAAC+C,EAAQ,SACb,MAAMqD,EAAa,OAAO,oBAAoBrD,CAAM,EACpD,QAAS/C,EAAIoG,EAAW,OAAS,EAAGpG,GAAK,EAAGA,IAAK,CAC/C,MAAMqG,EAAMD,EAAWpG,GACvB,GAAIqG,IAAQ,aAAeA,IAAQ,cAAe,SAClD,MAAMC,EAAO,OAAO,yBAAyBvD,EAAQsD,CAAG,EACxD,GAAI,CAACF,EAAQE,GACXF,EAAQE,GAAOC,EAAK,IAChB,CACE,WAAY,GACZ,aAAc,GACd,IAAKX,GAAe,KAAMO,EAAWG,GAAO,CAACC,EAAK,IAAI,KAAKvD,CAAM,CAAC,CAAG,CACtE,EACDuD,EAAK,QAAU,OACfA,EACA,WACC,CACL,MAAMP,EAAUG,EAAWG,GACvBN,IACEO,EAAK,IAAKP,EAAQ,KAAKO,EAAK,IAAI,KAAKvD,CAAM,CAAC,EACvCuD,EAAK,QAAU,QAAWP,EAAQ,KAAK,IAAMO,EAAK,KAAK,EAEnE,CACF,CACF,CACD,MAAMC,EAAS,CAAA,EACTC,EAAc,OAAO,KAAKL,CAAO,EACvC,QAASnG,EAAIwG,EAAY,OAAS,EAAGxG,GAAK,EAAGA,IAAK,CAChD,MAAMqG,EAAMG,EAAYxG,GACtBsG,EAAOH,EAAQE,GACbC,GAAQA,EAAK,IAAK,OAAO,eAAeC,EAAQF,EAAKC,CAAI,EACxDC,EAAOF,GAAOC,EAAOA,EAAK,MAAQ,MACxC,CACD,OAAOC,CACT,CACA,SAASE,GAAWhD,KAAUwC,EAAM,CAClC,GAAIpJ,IAAkBD,MAAU6G,EAAO,CACrC,MAAMiD,EAAU,IAAI,IAAIT,EAAK,OAAS,EAAIA,EAAK,KAAM,EAAGA,EAAK,EAAE,EACzDxD,EAAMwD,EAAK,IAAIU,GACZ,IAAI,MACT,CACE,IAAInB,EAAU,CACZ,OAAOmB,EAAE,SAASnB,CAAQ,EAAI/B,EAAM+B,GAAY,MACjD,EACD,IAAIA,EAAU,CACZ,OAAOmB,EAAE,SAASnB,CAAQ,GAAKA,KAAY/B,CAC5C,EACD,MAAO,CACL,OAAOkD,EAAE,OAAOnB,GAAYA,KAAY/B,CAAK,CAC9C,CACF,EACD6B,EACR,CACK,EACD,OAAA7C,EAAI,KACF,IAAI,MACF,CACE,IAAI+C,EAAU,CACZ,OAAOkB,EAAQ,IAAIlB,CAAQ,EAAI,OAAY/B,EAAM+B,EAClD,EACD,IAAIA,EAAU,CACZ,OAAOkB,EAAQ,IAAIlB,CAAQ,EAAI,GAAQA,KAAY/B,CACpD,EACD,MAAO,CACL,OAAO,OAAO,KAAKA,CAAK,EAAE,OAAOkD,GAAK,CAACD,EAAQ,IAAIC,CAAC,CAAC,CACtD,CACF,EACDrB,EACD,CACP,EACW7C,CACR,CACD,MAAMmE,EAAc,CAAA,EACdC,EAAUZ,EAAK,IAAI,KAAO,CAAA,EAAG,EACnC,UAAWa,KAAY,OAAO,oBAAoBrD,CAAK,EAAG,CACxD,MAAM6C,EAAO,OAAO,yBAAyB7C,EAAOqD,CAAQ,EACtDC,EACJ,CAACT,EAAK,KAAO,CAACA,EAAK,KAAOA,EAAK,YAAcA,EAAK,UAAYA,EAAK,aACrE,IAAII,EAAU,GACVM,EAAc,EAClB,UAAWL,KAAKV,EACVU,EAAE,SAASG,CAAQ,IACrBJ,EAAU,GACVK,EACKF,EAAQG,GAAaF,GAAYR,EAAK,MACvC,OAAO,eAAeO,EAAQG,GAAcF,EAAUR,CAAI,GAEhE,EAAEU,EAECN,IACHK,EACKH,EAAYE,GAAYR,EAAK,MAC9B,OAAO,eAAeM,EAAaE,EAAUR,CAAI,EAExD,CACD,MAAO,CAAC,GAAGO,EAASD,CAAW,CACjC,CA6CA,MAAMK,GAAgBC,GAAQ,oBAAoBA,MAClD,SAASC,GAAI1D,EAAO,CAClB,MAAM2D,EAAW,aAAc3D,GAAS,CACtC,SAAU,IAAMA,EAAM,QAC1B,EACE,OAAOlE,GAAWsE,GAAS,IAAMJ,EAAM,KAAMA,EAAM,SAAU2D,GAAY,MAAS,CAAC,CACrF,CAOA,SAASC,GAAK5D,EAAO,CACnB,MAAM6D,EAAQ7D,EAAM,MACd8D,EAAiBhI,GAAW,IAAMkE,EAAM,KAAM,OAAW,MAAS,EAClE+D,EAAYF,EACdC,EACAhI,GAAWgI,EAAgB,OAAW,CACpC,OAAQ,CAAC7K,EAAGC,IAAM,CAACD,GAAM,CAACC,CAClC,CAAO,EACL,OAAO4C,GACL,IAAM,CACJ,MAAMN,EAAIuI,IACV,GAAIvI,EAAG,CACL,MAAMwI,EAAQhE,EAAM,SAEpB,OADW,OAAOgE,GAAU,YAAcA,EAAM,OAAS,EAErDnJ,GAAQ,IACNmJ,EACEH,EACIrI,EACA,IAAM,CACJ,GAAI,CAACX,GAAQkJ,CAAS,EAAG,MAAMP,GAAc,MAAM,EACnD,OAAOM,EAAc,CACtB,CACN,CACF,EACDE,CACL,CACD,OAAOhE,EAAM,QACd,EACD,OACA,MACJ,CACA,CACA,SAASiE,GAAOjE,EAAO,CACrB,MAAMkE,EAAMpG,GAAS,IAAMkC,EAAM,QAAQ,EACnCmE,EAAarI,GAAW,IAAM,CAClC,MAAMsI,EAAKF,IACLG,EAAM,MAAM,QAAQD,CAAE,EAAIA,EAAK,CAACA,CAAE,EACxC,IAAIE,EAAO,IAAA,GACX,QAAS/H,EAAI,EAAGA,EAAI8H,EAAI,OAAQ9H,IAAK,CACnC,MAAMgD,EAAQhD,EACRgI,EAAKF,EAAI9H,GACTiI,EAAWF,EACXR,EAAiBhI,GACrB,IAAO0I,EAAU,EAAG,OAAYD,EAAG,KACnC,OACA,MACR,EACYR,EAAYQ,EAAG,MACjBT,EACAhI,GAAWgI,EAAgB,OAAW,CACpC,OAAQ,CAAC7K,EAAGC,IAAM,CAACD,GAAM,CAACC,CACtC,CAAW,EACLoL,EAAO,IAAME,EAAU,IAAKT,EAAW,EAAG,CAACxE,EAAOuE,EAAgBS,CAAE,EAAI,OACzE,CACD,OAAOD,CACX,CAAG,EACD,OAAOxI,GACL,IAAM,CACJ,MAAM2I,EAAMN,EAAU,IACtB,GAAI,CAACM,EAAK,OAAOzE,EAAM,SACvB,KAAM,CAACT,EAAOuE,EAAgBS,CAAE,EAAIE,EAC9BT,EAAQO,EAAG,SAEjB,OADW,OAAOP,GAAU,YAAcA,EAAM,OAAS,EAErDnJ,GAAQ,IACNmJ,EACEO,EAAG,MACCT,EAAgB,EAChB,IAAM,CACJ,GAAIjJ,GAAQsJ,CAAU,MAAM,KAAO5E,EAAO,MAAMiE,GAAc,OAAO,EACrE,OAAOM,EAAc,CACtB,CACN,CACF,EACDE,CACL,EACD,OACA,MACJ,CACA,CACA,SAASU,GAAM1E,EAAO,CACpB,OAAOA,CACT,CACA,IAAI2E,GACJ,SAASC,IAAuB,CAC9BD,IAAU,CAAC,GAAGA,EAAM,EAAE,QAAQtK,GAAMA,EAAE,CAAE,CAC1C,CACA,SAASwK,GAAc7E,EAAO,CAC5B,IAAInD,EAGJ,KAAM,CAACiI,EAASC,CAAU,EAAI/J,GAAa6B,EAAK,MAAS,EACzD,OAAA8H,KAAWA,GAAS,IAAI,KACxBA,GAAO,IAAII,CAAU,EACrBrI,GAAU,IAAMiI,GAAO,OAAOI,CAAU,CAAC,EAClCjJ,GACL,IAAM,CACJ,IAAIsD,EACJ,GAAKA,EAAI0F,IAAY,CACnB,MAAMjF,EAAIG,EAAM,SAChB,OAAO,OAAOH,GAAM,YAAcA,EAAE,OAAShF,GAAQ,IAAMgF,EAAET,EAAG,IAAM2F,GAAY,CAAC,EAAIlF,CACxF,CACD,OAAOlD,GAAW,IAAMqD,EAAM,SAAU+E,CAAU,CACnD,EACD,OACA,MACJ,CACA,CC5mDA,MAAMC,GAAW,CACf,kBACA,QACA,YACA,WACA,UACA,WACA,UACA,WACA,iBACA,SACA,gBACA,QACA,QACA,OACA,WACA,QACA,WACA,aACA,OACA,cACA,WACA,WACA,WACA,WACA,UACF,EACMC,GAA2B,IAAI,IAAI,CACvC,YACA,QACA,WACA,iBACA,QACA,WACA,cACA,GAAGD,EACL,CAAC,EACKE,GAAgC,IAAI,IAAI,CAC5C,YACA,cACA,YACA,UACF,CAAC,EACKC,GAAwB,OAAO,OAAO,OAAO,OAAO,IAAI,EAAG,CAC/D,UAAW,QACX,QAAS,KACX,CAAC,EACKC,GAA4B,OAAO,OAAO,OAAO,OAAO,IAAI,EAAG,CACnE,MAAO,YACP,eAAgB,CACd,EAAG,iBACH,OAAQ,EACR,MAAO,CACR,EACD,MAAO,CACL,EAAG,QACH,IAAK,CACN,EACD,SAAU,CACR,EAAG,WACH,OAAQ,CACT,EACD,YAAa,CACX,EAAG,cACH,MAAO,CACR,EACD,SAAU,CACR,EAAG,WACH,MAAO,EACP,SAAU,CACX,CACH,CAAC,EACD,SAASC,GAAaC,EAAMC,EAAS,CACnC,MAAMtM,EAAImM,GAAYE,GACtB,OAAO,OAAOrM,GAAM,SAAYA,EAAEsM,GAAWtM,EAAE,EAAO,OAAaA,CACrE,CACA,MAAMuM,GAAgC,IAAI,IAAI,CAC5C,cACA,QACA,WACA,cACA,UACA,WACA,QACA,UACA,QACA,YACA,YACA,WACA,YACA,UACA,cACA,cACA,aACA,cACA,YACA,WACA,YACA,YACF,CAAC,EACKC,GAA4B,IAAI,IAAI,CACxC,WACA,cACA,eACA,UACA,eACA,gBACA,mBACA,SACA,WACA,gBACA,SACA,OACA,OACA,UACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,SACA,OACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,gBACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,MACA,OACA,MACA,SACA,SACA,OACA,WACA,OACA,QACA,MACA,OACA,OACF,CAAC,EACKC,GAAe,CACnB,MAAO,+BACP,IAAK,sCACP,EA2RA,SAASC,GAAgBC,EAAY3M,EAAGC,EAAG,CACzC,IAAI2M,EAAU3M,EAAE,OACd4M,EAAO7M,EAAE,OACT8M,EAAOF,EACPG,EAAS,EACTC,EAAS,EACTC,EAAQjN,EAAE6M,EAAO,GAAG,YACpBK,EAAM,KACR,KAAOH,EAASF,GAAQG,EAASF,GAAM,CACrC,GAAI9M,EAAE+M,KAAY9M,EAAE+M,GAAS,CAC3BD,IACAC,IACA,QACD,CACD,KAAOhN,EAAE6M,EAAO,KAAO5M,EAAE6M,EAAO,IAC9BD,IACAC,IAEF,GAAID,IAASE,EAAQ,CACnB,MAAM1N,EAAOyN,EAAOF,EAAWI,EAAS/M,EAAE+M,EAAS,GAAG,YAAc/M,EAAE6M,EAAOE,GAAWC,EACxF,KAAOD,EAASF,GAAMH,EAAW,aAAa1M,EAAE+M,KAAW3N,CAAI,CACrE,SAAeyN,IAASE,EAClB,KAAOD,EAASF,IACV,CAACK,GAAO,CAACA,EAAI,IAAIlN,EAAE+M,EAAO,IAAG/M,EAAE+M,GAAQ,OAAM,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"}